Viнt@rь 50 Опубликовано 7 Августа 2013 Поделиться Опубликовано 7 Августа 2013 (изменено) @*Shoker*, лично я пользуюсь скриптом actor_menu, с помощью него можно отловить открытие/закрытие всех окон помимо пда, с пда немного по другому, вешаешь свою функцию на коллбэк ГГ получения инфопоршня. В коллбэк вторым параметром передается полученный инфопоршень, а далее проверкой, на открытие пда выдается инфопоршень ui_pda, на закрытие ui_pda_hide. Изменено 7 Августа 2013 пользователем Viнt@rь 1 GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
DX11.2 91 Опубликовано 8 Августа 2013 Поделиться Опубликовано 8 Августа 2013 Есть вопрос по level.main_input_receiver() Получаю текущее открытое окно test_wnd = level.main_input_receiver(), скрываю его test_wnd:Show(false). Далее идёт старт таймера, по его окончанию пытаюсь показать обратно то окно test_wnd:Show(true), но ловлю вылет. В логе только это: stack trace:001B:03DA7261 xrGame.dll Ссылка на комментарий
Viнt@rь 50 Опубликовано 8 Августа 2013 Поделиться Опубликовано 8 Августа 2013 @DX11.2, ты ссылку на свое окошко нигде не потерял? GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
DX11.2 91 Опубликовано 8 Августа 2013 Поделиться Опубликовано 8 Августа 2013 Viнt@rь, проверял пару раз, не терял. Этот способ так и не заработал, сделал скрытие окна иначе.. Ссылка на комментарий
*Shoker* 322 Опубликовано 10 Августа 2013 Поделиться Опубликовано 10 Августа 2013 (изменено) @abramcumner,@Shredder, @Viнt@rь, Спасибо за советы, я просто искал универсальный метод, т.к если мои наработки будут использоваться в других модах, об этом могут тупо забыть. ----------------------------------------------------------------------- Такой вот вопросец по биндеру объектов, возможно это уже баян, но для меня было новостью.Может даже косяк из за правленых экзешников, но сейчас уже поздно проверять и это, надо игру переставлять, собстно такое дело:Платформа ЗП 1.6.02, экзешники из Мизери и там хз какие правки вносились но по идее стандартные на рендер, солнце и т.д, собственно сделал в скриптах свой биндер (object_binder) в него добавил методы save\load чтобы сохранять свои данные. И тут вылезла такая проблема. Если сохранять\загружать игру на одной и той же локации то оба метода прекрасно вызываются, однако если перейти на другую локацию а потом обратно то метод load у объекта не вызывается, соответственно сохранённые данные уже не грузятся и полезность данных методов падает до нуля. Я сперва думал что проблема тока с моим биндером, но потом сделал вывод в консоль из motivator_binder (который хранит инфу о онлайн-сталкерах) и оказалось что там та-же самая проблема, притом что ПЫС хранят там в save\load довольно много инфы, а функция load просто не вызывается при переходе из другой локации соответственно вся сохранённая инфа теряется, и это ведь только один из кучи биндеров!Я завтра ещё проверю но вообще интересно - это нормальная ситуация? Сбоев с игрой я пока не ловил, но я уже давно не делал в ней длинные сессии, да и то всегда на одной локации. Изменено 14 Августа 2013 пользователем ColR_iT Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
abramcumner 1 160 Опубликовано 11 Августа 2013 Поделиться Опубликовано 11 Августа 2013 @*Shoker*,да, для оригинального ЗП совершенно нормальная ситуация. 1 Ссылка на комментарий
*Shoker* 322 Опубликовано 11 Августа 2013 Поделиться Опубликовано 11 Августа 2013 (изменено) @abramcumner, "для оригинального", а что есть решение? На других частях сталкера всё нормально? Или ты просто имеешь ввиду что в ЗП так и должно быть, если да то странно. Просто на save\load же повешены пстор и прочие данные объектов, я вообще удивлён что игра после этого ещё работает. Вообщем разобрался, оказывается чтобы клиентские данные сохранялись при переходе на другой уровень нужно в серверном классе добавить метод keep_saved_data_anyway(), возвращающий true.Другой вопрос что у тех же сталкеров в ЗП этот метод в серверном классе не прописан, остаётся выяснить - это баг или фича. %) Изменено 11 Августа 2013 пользователем *Shoker* 1 Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 12 Августа 2013 Поделиться Опубликовано 12 Августа 2013 В bind_smart_terrain.script есть код: function smart_terrain_binder:net_spawn( server_object ) if not object_binder.net_spawn( self, server_object ) then return false end -- получить ссылку на настоящий серверный объект self.se_smart_terrain = alife():object( server_object.id )Вопрос: до этого самого server_object как-то можно добраться, чтобы хотя-бы просто тупо его прибить ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
abramcumner 1 160 Опубликовано 12 Августа 2013 Поделиться Опубликовано 12 Августа 2013 (изменено) @Dennis_Chikin, странный вопрос. Зачем до него "добираться", вот же он. Прибить вестимо как: alife():release(server_object.id), правда так лучше не делать - на следующем апдейте там удалить. Изменено 12 Августа 2013 пользователем abramcumner Ссылка на комментарий
AndrewMor 527 Опубликовано 12 Августа 2013 Поделиться Опубликовано 12 Августа 2013 (изменено) В следующий раз прочти шапку темы перед тем, как задать вопрос. ColR_iT Изменено 14 Августа 2013 пользователем ColR_iT Сталкер - наше всё! Ссылка на комментарий
Malandrinus 615 Опубликовано 12 Августа 2013 Поделиться Опубликовано 12 Августа 2013 Да, вопрос не до конца понятен. @abramcumner, удаление идёт не по id, а по ссылке на объект. Т.е. alife():release(server_object, true) 1 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 12 Августа 2013 Поделиться Опубликовано 12 Августа 2013 (изменено) alife():release(server_object.id) - это оригинально, да. И в любом случае желательно бы сделать это еще до netspawn() По тому как по имени находится то же, что и alife():object( server_object.id ), благополучно удаляется, а потом здесь получаем nil со всеми вытекающими... Изменено 12 Августа 2013 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
abramcumner 1 160 Опубликовано 12 Августа 2013 Поделиться Опубликовано 12 Августа 2013 @Dennis_Chikin, по-прежнему ничего не ясно. Что ты хочешь изменить/исправить? Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 12 Августа 2013 Поделиться Опубликовано 12 Августа 2013 Удалить я хочу smart_terrain. В данном случае. По имении что-то находится, и удаляется. Потом обнаруживается некий server_object, у которого id удаленного smart_terrain'а. Вот хочется, чтобы и он тоже удалился, вместе с binder'ом. Желательно, сразу. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Malandrinus 615 Опубликовано 12 Августа 2013 Поделиться Опубликовано 12 Августа 2013 @Dennis_Chikin, Ну если честно запутал вконец. Удаляешь по имени, затем ищешь по id. Откуда имя взялось, откуда id? В приведённом выше фрагменте ничего такого нет. Там присутствуют аж две ссылки на серверный объект: self.se_smart_terrain и server_object. Вторая - это ссылка на базовый, не все методы доступны, потому и получаем объект повторно по id, Для удаления однако годятся обе ссылки. Зачем ещё что-то по имени получать? Вместе с клиентским объектом удалить не получится, по-любому придётся ждать завершения жизненного цикла клиентского объекта. Сразу после удаления клиентский ещё можно будет найти с помощью level.object_by_id(). А вот если сразу после удаления можно найти серверный, то либо удалял не тот объект, либо удаление не сработало. Кстати, а зачем удалять смарт? Не лучше ли отключить? Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 13 Августа 2013 Поделиться Опубликовано 13 Августа 2013 Смарт не нужен. Совсем. Имя известно. Получаем, удаляем. Через 15 секунд - вылет. db.add_smart_terrain() получил из binder'а nil, и попытался извлечь из него id. Странный какой-то жизненный цикл... Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
*Shoker* 322 Опубликовано 13 Августа 2013 Поделиться Опубликовано 13 Августа 2013 (изменено) @Dennis_Chikin, ну дык игрой наверно не предусмотрено удаление смарта прямо во время игры, это всё таки довольно комплексная вещь на которую завязаны многие скрипты, и оригинальная игра не предусматривает внезапное удаление смарта соответственно в скриптах нет никаких проверок на его существование, а того гляди и в движке какая нибудь хрень вылезет. Вообще странно зачем удалять смарт во время игры а не сделать это через all.spawn? Но если это так критично, то попробуй в скрипте smart_terrain.script там в классе class "se_smart_terrain" (cse_alife_smart_zone) в функциях, которые регистрируют созданный смарт поставить проверку по имени на ненужный тебе смарт, чтобы он не регистрировался ни в какие скрипты. Аналогично в биндере проверку по имени делай и не позволяй смарту заносить себя в какие либо таблицы, или даже можешь попробовать в биндере в функции net_spawn() возвращать false для ненужного смарта, тогда по идее он не заспавнится или не перейдёт в онлайн. Изменено 13 Августа 2013 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Malandrinus 615 Опубликовано 13 Августа 2013 Поделиться Опубликовано 13 Августа 2013 Dennis_Chikin, Через 15 секунд - вылет. db.add_smart_terrain() получил из binder'а nilПоставь в bind_smart_terrain.script затычку. Если серверного объекта нет, то не биндить. Типа такого function bind( obj ) if not alife():object(obj:id()) then return end ... Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
riddik121 193 Опубликовано 19 Августа 2013 Поделиться Опубликовано 19 Августа 2013 Подскажите пожалуйста. Вот функция, делающая НПС другом к ГГ function glavny_vrag(first_speaker, second_speaker) second_speaker:set_relation(game_object.friend, first_speaker)end На что мне надо заменить слово friend, чтобы НПС стал врагом? Надо дело довести до конца! Ссылка на комментарий
FantomICW 678 Опубликовано 19 Августа 2013 Поделиться Опубликовано 19 Августа 2013 @riddik121, на слово enemy. То есть выходит: function glavny_vrag(first_speaker, second_speaker) second_speaker:set_relation(game_object.enemy, first_speaker) end Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти