Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
Artos 99 Опубликовано 17 Сентября 2012 Поделиться Опубликовано 17 Сентября 2012 (изменено) Struck, тебе был дан ответ на твой исходный вопрос. Теперь ты о "типе хита" начал говорить ... Вопросы нужно задавать не по шагам, которые тебе в голову приходят, а в начале сформулировать цель, которую хочешь получить в результате, а уже потом о своих предполагалках. Готового рецепта для тебя нет, а "рациональный" способ, который придется самому придумывать и писать, зависит от цели (и конечно от твоих навыков). Изменено 17 Сентября 2012 пользователем Artos Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729543
ColR_iT 171 Опубликовано 17 Сентября 2012 Поделиться Опубликовано 17 Сентября 2012 Такой вопрос: как работает класс profile_timer? Считает ли он время выполнения посторонней функции при вызове её из измеряемого участка кода? Например: local timer = profile_timer() timer:start() -- здесь код... -- здесь вызов функции -- здесь опять код... timer:stop() Будет ли учтено время работы вызываемой функции? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729557
Struck 61 Опубликовано 17 Сентября 2012 Поделиться Опубликовано 17 Сентября 2012 (изменено) Artos, я сформулировал цель - мне нужно получить точный(!) clsid оружия из которого было произведено убийство, внятного ответа/алгоритма я так и не увидел("...наличие активного предмета у него в руках. Если таковой предмет имеется - он (предмет) и имеет твой искомый клсид." - если это внятный алгоритм, то он абсолютно не годится для решения моей задачки). Изменено 17 Сентября 2012 пользователем Struck Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729558
Artos 99 Опубликовано 17 Сентября 2012 Поделиться Опубликовано 17 Сентября 2012 (изменено) ColR_iT, класс profile_timer создает объект который является счетчиком неких единиц времени, которые отслеживаются в самом движке. Он "считает" ровно то, что ему определено, т.е. прошедшее время с момента установкии до момента его опроса. Учитывая, что Lua - это потоковое выполнение всех действий (функций), то установив счетчик и выполнив стороннюю функцию в этом же потоке, ты можешь остановить счетчик и определить время, которое выполнялась функция. Однако(!) если твоя функция выполняется в другом потоке - то ... получишь только время между запуском счетчика и его опросом, а функция может уже десять раз выполнялась... Struck, к сожалению до тебя не дошел смысл моей реплики о том "как задавать вопрос" ... на этом тему можно считать исчерпаной, ищи подходящий тебе вариант. Маленькая реплика: Брошенную гранату, от которой может погиб твой НПС несколько натужно определять как "оружие из которого было произведено убийство"... но это уже "к слову" Если еще вспомнить, что бросив бочку и выстрелив в нее - тоже можно кого-то убить - у чего тогда клсид требуется определять? (о том, что на НПС можно наехать на БТРе иль, летая на вертушке, замочить ракеткой - вообще не поминаю). Изменено 17 Сентября 2012 пользователем Artos Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729563
Struck 61 Опубликовано 17 Сентября 2012 Поделиться Опубликовано 17 Сентября 2012 Artos, действительно... :ny_dry: мне нужно получить точный(!) clsid оружия А не бочки, БТР'а и иже с ним...(ибо поняв как определяется одно, поймешь и остальное) И по поводу "как задавать вопрос". Я смысл данного понимаю как код+указание на место "где не получается", я вроде все доступно указал, определяем victim и who, передаем в коллбек, копипастил я функции из _g.script, разве что переделал вид ЗП на ТЧ. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729587
Artos 99 Опубликовано 17 Сентября 2012 Поделиться Опубликовано 17 Сентября 2012 эх, тяжко же доходит и никак шоры снять не хочешь ... может все же прочтешь это: http://forum.sources.ru/howtoask.html и в частности Описывайте цель, а не отдельный шаг (на этом закончили) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729593
Malandrinus 615 Опубликовано 18 Сентября 2012 Поделиться Опубликовано 18 Сентября 2012 Struck, нужно получить точный(!) clsid оружия из которого было произведено убийство Вряд ли это реализуемо с той абсолютной точностью, как ты хочешь. Смерть в движке - это финал целой цепочки событий, по сути моделирование реальной ситуации. От события к событию передаётся не вся информация, а в скриптовую часть передаётся и того меньше. Даже в колбеке на хит движок не передаёт информации об оружии по той простой причине, что хит мог и не быть вызван оружием. А смерть в свою очередь вызывается не хитом, а его последствием, падением здоровья ниже нуля. Сам движок к моменту смерти уже точно не знает, от какого оружия погиб перс, только хранит виновника гибели. Так что ничего лучше описанного Artos-ом алгоритма с активным стволом пока нет, и скорее всего не будет. С гранатами можно попытаться приблизительно определить: вести учёт всех гранат, кидаемых всеми неписями и игроком (тоже непростая задача), по типу урона определять, что это была граната и для виновника гибели использовать в этом случае не активный ствол, который непись/актор мог уже сменить, а последнюю кинутую гранату. Уродливо, громоздко, всё равно неточно, но мне ничего другого в голову не приходит. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729648
Struck 61 Опубликовано 18 Сентября 2012 Поделиться Опубликовано 18 Сентября 2012 (изменено) malandrinus, я так и сделал, так как тоже ничего другого на ум не пришло; покопав коды simbion'a увидел портянки кодов того, что мне в данный момент нужно, вот и решил спросить о алгоритме, возможно(думал) есть другой путь, ну раз нет, так нет . ----------------------------------------------------------------------------------------------------- Как получить факт того, что объект был поднят с земли?(parent() мне всегда 'userdata' возвращает, возможно потому, что в момент поднятия объект оказывается уже в рюкзаке) Изменено 18 Сентября 2012 пользователем Struck Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729670
TYOPA 0 Опубликовано 18 Сентября 2012 Поделиться Опубликовано 18 Сентября 2012 (изменено) Всем привет. Подскажите. Создал оконный класс, в нём создал статик, всё работает. но когда добовляю объект класса CUIScrollView, ничего не происходит, т.е. окно просто скидывается. Вот код скролла: self.ggRukzakScroll = CUIScrollView() self.ggRukzakScroll:SetWindowName("ggRukzakScroll") self.ggRukzakScroll:AddWindow(self.ggRukzakScroll,true) self.ggRukzakScroll:Init(10,280,250,400) self.ggRukzakScroll:SetScrollPos(50) self.ggRukzakScroll:ScrollToBegin() self.ggRukzakScroll:ScrollToEnd() self.ggRukzakScroll:SetWndRect(10,280,250,400) self:AttachChild(self.ggRukzakScroll) Изменено 18 Сентября 2012 пользователем TYOPA Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729735
Shredder 49 Опубликовано 18 Сентября 2012 Поделиться Опубликовано 18 Сентября 2012 (изменено) Ты что вообще от CUIScrollView хочешь? Я промолчу про кучу непонятно зачем вызываемыз методов, но вот это: self.ggRukzakScroll:AddWindow(self.ggRukzakScroll,true) - убило. Самого себя добавить к себе? Изменено 18 Сентября 2012 пользователем Shredder Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729747
TYOPA 0 Опубликовано 18 Сентября 2012 Поделиться Опубликовано 18 Сентября 2012 Извените, просто не знал какие методы использовать надо. В интернете очень мало информаии по этому классу. Вы можете написать минимум методов, необходимых для работы скроллбара? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729749
Struck 61 Опубликовано 18 Сентября 2012 Поделиться Опубликовано 18 Сентября 2012 Предыдущий мой вопрос НЕ актуален. TYOPA, минимум? я делал через EnableScrollBar Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729758
Shredder 49 Опубликовано 18 Сентября 2012 Поделиться Опубликовано 18 Сентября 2012 TYOPA, CUIScrollView - это не скроллбар, это окно с вертикальной полосой прокрутки. Какие методы использовать - зависит от задачи. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729762
TYOPA 0 Опубликовано 18 Сентября 2012 Поделиться Опубликовано 18 Сентября 2012 Struck, Shredder, ясно спс. Задача такая. Есть два статика: первый - это фон, второй - это изображение, которое прокручивается скролл баром. На втором статике в свою очередь находятся кнопки. Сможете помочь? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729765
Shredder 49 Опубликовано 18 Сентября 2012 Поделиться Опубликовано 18 Сентября 2012 Тут всё просто. В ScrollView добавляешь статик с нужной текстурой (картинкой). Размеры этого статика должны быть такими, чтобы изображение полностью в нём уместилось. Размеры ScrollView - какие тебе нужно. Только есть одно "НО" - горизонтальной полосы прокрутки у ScrollView нет (хотя может у меня руки кривые). Т.е. размер ScrollView по ширине должен быть равен ширине картинки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729768
TYOPA 0 Опубликовано 18 Сентября 2012 Поделиться Опубликовано 18 Сентября 2012 Всё таки класс CUIScrollView использовать? и методом AddWindow() добавить статик, верно? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729772
Shredder 49 Опубликовано 18 Сентября 2012 Поделиться Опубликовано 18 Сентября 2012 (изменено) Да. CUIScrollView в xml описывается так: x="-5" y="0" width="450" height="320" right_ident="0" left_ident="0" top_indent="0" bottom_indent="0" vert_interval="0" always_show_scroll="0" Изменено 18 Сентября 2012 пользователем Shredder Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729775
Struck 61 Опубликовано 18 Сентября 2012 Поделиться Опубликовано 18 Сентября 2012 Shredder, горизонтальной полосы прокрутки действительно нет. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729783
Shredder 49 Опубликовано 18 Сентября 2012 Поделиться Опубликовано 18 Сентября 2012 В ЗП переделываю родные тайники на обычные, как в ТЧ, с целью внедрить рандомные тайники, как в АМК. Всё это дело происходит в скрипте. Пара вопросов к знатокам. 1) Как можно узнать direction у объекта, полученного как obj = alife():object(i). obj.position - позиция нормально, а obj.direction - nil 2) Где-то мне попадалась информация, что тайники хорошо бы всегда держать в online, т.к. при переходе тайников, содержащих в себе предметы наблюдаются фризы. Если это так, то что для этого нужно указать в object_flags тайника? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729789
Artos 99 Опубликовано 18 Сентября 2012 Поделиться Опубликовано 18 Сентября 2012 Напоминаю вопрошающим в топике цитату из шапки: Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком; Прекрашаем оффтопить и выбираем для своих вопросов соответствующий топик! Shredder, объект, полученный методом alife():object(id) - называется серверным объектом и имеет соответствующие свойства/методы. direction - для серверного объекта можно прочитать только из его нет-пакета ('abstract'-параметры) или имея расширенный движек... О флагах и в частности object_flags - читаем в топике "Справочник по классам и функциям", данный вопрос уже начинает набивать оскомину. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/233/#findComment-729796
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти