Painter 3 399 Опубликовано 5 Июля 2013 Поделиться Опубликовано 5 Июля 2013 (изменено) function название_функции() for i = 1,65535 do local obj = level.object_by_id(i) if (obj and IsStalker(obj) and character_community(obj) == "stalker") then -- проверка на то, что объект существует, объект человек и объект из группировки "сталкер". -- действие end end end Изменено 5 Июля 2013 пользователем Jurok 1 Портфолио Ссылка на комментарий
Exvilux 0 Опубликовано 7 Июля 2013 Поделиться Опубликовано 7 Июля 2013 La'Rento , а почему бы тебе не пользоваться get_time_hours()? пользуйся тем что в сутках 24 часа, а вернее от 0 до 23, к примеру так if level.get_time_hours()>=23 then --запустил смену работы, тем самым тебе не нужно будет проверять дни, как только стукнуло 11 часов вечера, нпс сменили вид --деятельности --//ну или так if level.get_time_hours<=1 then --и то же самое, только схема поменяется рано утром Ссылка на комментарий
karavan 36 Опубликовано 7 Июля 2013 Поделиться Опубликовано 7 Июля 2013 (изменено) Можно ли как-то отследить момент смены костюма у ГГ в слоте и выдать действие? Вот такой функцией проверяю какой костюм у ГГ в слоте, забиндив её в делюту. Но в этом случае получается перегруз памяти или что-то типо этого. Может конечно можно забиндить в какой-то другой функции в файле бинд_сталкер? function outfit_check_up() local costume local outfit = db.actor:item_in_slot(7) if outfit then costume = outfit:section()if string.find(costume, "название_костюма") then -- действие end end Естественно нужно что бы эта проверка проходила не один раз и не на одном костюме. Изменено 7 Июля 2013 пользователем karavan 1 Ссылка на комментарий
azrael1325 28 Опубликовано 7 Июля 2013 Поделиться Опубликовано 7 Июля 2013 @karavan, ты в ЗП работаешь? Попробуй в actor_binder:use_inventory_item(obj) делать проверку. if get_clsid(obj) == clsid.equ_stalker_s then вызов твоей функции Еще надо будет добавить проверку, надет ли костюм. Ссылка на комментарий
karavan 36 Опубликовано 7 Июля 2013 Поделиться Опубликовано 7 Июля 2013 azrael1325 Да в ЗП. А можешь помочь с проверкой "надет ли костюм"? И где её ставить нужно? Ссылка на комментарий
azrael1325 28 Опубликовано 7 Июля 2013 Поделиться Опубликовано 7 Июля 2013 local outfit = db.actor:item_in_slot(7)if outfit then Вот проверка. В твоей функции и ставь. Ссылка на комментарий
Akcok 164 Опубликовано 8 Июля 2013 Поделиться Опубликовано 8 Июля 2013 (изменено) Помогите пожалуйста полному барану в скриптах сталкера (то есть мне). Есть один хороший скрипт за авторством Shredder'a для ЗП где выводится пояс артефактов как в ТЧ (немного предыстории, сам скрипт еще был сделан командой OGSM для мода на ЧН, но сам код просто ужасен, в итоге Shredder его изменил). Он работает только на ЗП, при попытке адаптировать на ЧН словил вылет. А именно в ЧН нету метода SetTextureRect. Есть ли ему замена? И как примерно должно работать (если допустим нужно переделывать и так далее). Сам кусок кода -- Вывод артефактов function show_arts() if not icons_created then create_icons() end for i = 1,5 do art = belt[i] if art and (arts[i] ~= art) then icons[i]:SetTextureRect(pcfm.get_icon_rect(art)) arts[i] = art elseif not art then arts[i] = "" icons[i]:SetTextureRect(Frect():set(0, 0, 1, 1)) end end end Изменено 8 Июля 2013 пользователем power-cat Ссылка на комментарий
RayTwitty 506 Опубликовано 8 Июля 2013 Поделиться Опубликовано 8 Июля 2013 @power-cat, попробуй переименовать SetTextureRect в SetOriginalRect. Ссылка на комментарий
Akcok 164 Опубликовано 8 Июля 2013 Поделиться Опубликовано 8 Июля 2013 Shadows, спс заработало. Помню еще когда ковырялся в скриптах ЧН\ЗП приходилось иногда переименовывать одну и ту-же функцию. Правда не помню какую... мож даже и эту. P.S. Кстати где можно глянуть переименованные функции? Сравнение ТЧ\ЧН с ЗП. И еще есть такой вопрос, правда кода для примера нету. Как сделать скриптовое меню аля ТСС для ЧН\ЗП? Тама используется насколько помню метод Init. Есть аналог какой? Ссылка на комментарий
RayTwitty 506 Опубликовано 8 Июля 2013 Поделиться Опубликовано 8 Июля 2013 (изменено) И еще есть такой вопрос, правда кода для примера нету. Как сделать скриптовое меню аля ТСС для ЧН\ЗП? Тама используется насколько помню метод Init. Есть аналог какой? Оригинальное меню такое-же скриптовое как и билдовское. Просто в билдовском вместо "шняги" (CUIMMShniaga) используются обычные кнопки. Кстати где можно глянуть переименованные функции? Сравнение ТЧ\ЧН с ЗП. http://www.amk-team.ru/forum/index.php?showtopic=7450&p=515301 Изменено 8 Июля 2013 пользователем Shadows Ссылка на комментарий
Akcok 164 Опубликовано 11 Июля 2013 Поделиться Опубликовано 11 Июля 2013 Именно вот эти методы я и имел ввиду когда говорил о билдовском меню. CUIStatic void Init(float x, float y, float w, float h); void Init(string texture, float x, float y, float w, float h); Ни в ЧН, ни в ЗП этих методов вроде как и нету. А они как раз и юзаются в билдовском меню (хотя точнее сказать один из этих методов). Опять таки альтернатива есть? Ссылка на комментарий
dukekan 5 Опубликовано 19 Июля 2013 Поделиться Опубликовано 19 Июля 2013 Кто нибудь отправлял НПС на другую локацию? utils.send_to_nearest_accessible_vertex( npc, vertex_id ) npc:set_dest_level_vertex_id(vertex_id) действуют в пределах локации, т.к. требуется level_vertex текущей локации ГГ Приходит на ум прописать сталкеру smart_terrain на другой локации,c помощью amk.write_stalker_params(), но метод какой-то криминальный). Может, кто знает более легальный метод? Ссылка на комментарий
KD87 718 Опубликовано 19 Июля 2013 Поделиться Опубликовано 19 Июля 2013 @dukekan, сама игра в симуляции тасует неписей по локациям, а вот методов управления этим процессом нет. В оригинальной игре два Кругловых - один на ДТ, другой на Янтаре для симуляции одновременного с игроком перехода на Янтарь. Если уж разработчики так сделали, вряд ли есть способы. Ссылка на комментарий
Malandrinus 615 Опубликовано 19 Июля 2013 Поделиться Опубликовано 19 Июля 2013 KD87, В оригинальной игре два Кругловых - один на ДТ, другой на Янтаре для симуляции одновременного с игроком перехода на Янтарь Я думаю, что только для симуляции одновременности так и сделано, поскольку в целом неписи с уровня на уровень ходят. Однако, единственный штатный метод отправить непися на другую локацию через скрипты - это используя смарты. Когда непись прописывается в смарт, то ему выдаётся работа, работа в смарте (это не работа в гулаге) - это просто идти в точку пути, а точка эта может быть и на другом уровне, так что непись туда и топает при необходимости переходя в оффлайн и идя по геймнодам. Инициируется это всё скриптами, движок там только автоматически вызывает скриптовые функции. Однако, сам метод получается ограниченный. Требуется смарт, требуется прописать в него непися, требуется заранее подготовить пути. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
dukekan 5 Опубликовано 20 Июля 2013 Поделиться Опубликовано 20 Июля 2013 Требуется смарт, требуется прописать в него непися, требуется заранее подготовить пути. Жаль конечно, что для массовки такой метод не подходит. Может быть тогда поступать как разработчики в ЗП, т.е. гнать НПС на край локации, как дойдёт - удалять его, заспавнив его же уже на другой локации. Но так, как я понимаю, НПС через 1 локацию не отправить, только на соседнюю. Ссылка на комментарий
stalkerok007 9 Опубликовано 20 Июля 2013 Поделиться Опубликовано 20 Июля 2013 Всем привет, каким образом проверить, играет ли анимку физ. объект на данный момент? Занимаюсь написанием, точнее, доведением до ума новой секции логики, пытаюсь добавить поддержку сигнала anim_end. self.object:animation_count() == 0 не особо действует, хотя может, в другом месте ошибка. Заранее спасибо. Ссылка на комментарий
Капрал Хикс 534 Опубликовано 23 Июля 2013 Поделиться Опубликовано 23 Июля 2013 (изменено) Столкнулся со со следующей задачей: добавить в однотипные квесты возможность поиска предметов на классах, отличных от классов оружия и брони. Благодаря совету Dennis_Chikin http://www.amk-team.ru/forum/index.php?showtopic=5525&page=533#entry787682 попробовал выполнить отрегистрацию предметов в se_item.script по аналогии с: function se_weapon_magazined_w_gl:on_register() cse_alife_item_weapon_magazined_w_gl.on_register( self ) -- Регистрация в таскменеджере task_manager.get_random_task():register_target(self) -- Собираем статистику по предметам. if registred_items[self:section_name()] == nil then registred_items[self:section_name()] = 1 else registred_items[self:section_name()] = registred_items[self:section_name()] + 1 end end function se_weapon_magazined_w_gl:on_unregister() --' Отрегистрация в таскменеджере task_manager.get_random_task():unregister_target(self) end вот так: class "se_item_detector" (cse_alife_item_detector) function se_item_detector:__init (section) super (section) end function se_item_detector:on_register() cse_alife_item_detector.on_register( self ) -- Регистрация в таскменеджере task_manager.get_random_task():register_target(self) -- Собираем статистику по предметам. if registred_items[self:section_name()] == nil then registred_items[self:section_name()] = 1 else registred_items[self:section_name()] = registred_items[self:section_name()] + 1 end end function se_item_detector:on_unregister() --' Отрегистрация в таскменеджере task_manager.get_random_task():unregister_target(self) end Также добавил класс в class_rehistrator.script (насколько я понял, туда тоже нужно): cs_register (object_factory, "CDetector", "se_item.se_item_detector", "D_SIMDET", "detector_s") Поставил в поле таска target = detector_simple - и квест не появляется. Что не так? Изменено 23 Июля 2013 пользователем ColR_iT Неужели так сложно вставить теги? Ссылка на комментарий
panzyuza 41 Опубликовано 27 Июля 2013 Поделиться Опубликовано 27 Июля 2013 (изменено) Пытаюсь изменить скриптом логику нпс. После определённых событий перевожу нпс в офлайн, изменяю нет-пакет сталкера, устанавливаю ему новую кустом-дату, по истечении 5 секунд перевожу в онлайн. Вопрос. Проводить манипуляции с нет-пакетом лучше если нпс в офлайне или же можно в онлайне и только после переводить в оффлайн-онлайн? Изменено 27 Июля 2013 пользователем panzyuza AVS_LOCATION_MOD Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 27 Июля 2013 Поделиться Опубликовано 27 Июля 2013 (изменено) Капрал Хикс, а он регистрируется ? Лог вывести ? Возможно, это таки другой класс, и другой скрипт, а не se_item. Ну и task_manager.ltx еще раз проверить, тоже выводом в лог же. P.S. А вообще мне этот механизм не нравится принципиально. Ибо - жрет. Сюжетные квесты - еще куда не шло, а серийные - найти бы кого, разбирающегося в гуе, и переделать по типу торговли: заказ на предмет через новости (и протухание по времени, без каких-либо последствий), а сдача квеста - по типу торговли (покупка по повышенной цене в обмен на специальный ассортимент по сниженным ценам). Типа, вот, выбирай на полученную сумму. После закрытия окна остаток денег просто плюсуется к общим деньгам. Смысл - убрать поршни и регулярные проверки на "есть квест/выполнен/провален", и дурацкие диалоги с вопросами ("я буду, я не буду, я отказываюсь, да нет. не отказываюсь..."). Изменено 27 Июля 2013 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
StafGlawer 0 Опубликовано 30 Июля 2013 Поделиться Опубликовано 30 Июля 2013 (изменено) Народ, можете немного помочь ? сделал скрипт с анбиндом пда local console = get_console()function update() if not db.actor:object("device_pda") then console: execute("unbind active_jobs") else console: execute("bind active_jobs kP") end end Ни вылета ни работы, может поможете ? или подскажете как еще сделать ? А что по твоему должно произойти? ColR_iT По идее не должно открываться пда если его нету в инвентаре (сам скрипт в записал в апдейт) Изменено 30 Июля 2013 пользователем ColR_iT Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти