![]() Скрипты |
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
![]() Скрипты |
![]()
Сообщение
#61
|
|
Навий черны у ношьти *************** Группа: Забанен Сообщений: 2210 Регистрация: 11.03.2009 Из: Лиманск Пользователь №: 10251 ![]() |
FAQ Lua в X-Ray Список всех функций, переменных, классов и т.п. что используются в Сталкере находится по адресу: Код gamedata/scripts/lua_help.script Для получения файла надо распаковать игру. Можно скачать, в принципе (IMG:style_emoticons/default/smile.gif) Тут =>> Уроки Сообщение отредактировал RayTwitty - 09.06.2018, 20:23 |
|
|
There is 15 page(s) На первую страницу Предыдущая страница Page : 2 Page : 3 4 Page : 5 Page : 6 Следующая страница На последнюю страницу |
![]()
Сообщение
#62
|
|
Магистр Игры **************** Группа: Участник Сообщений: 2620 Регистрация: 26.03.2007 Из: Великий Новгород Пользователь №: 5660 ![]() |
Вэтой функции вы пытаетесь получить клиентский объект сразу после создания. Его еще нет в игре, так как в онлайн он еще не перешел. кстати, может кто скажет, почему цикл while с ожиданием наступления момента появления объекта в онлайне сразу после создания обычно вызывает краш? и есть ли какой-то аналог ф-ии wait(столько-то-секунд), которую можно использовать? просто была такая же заморочка. iterate_inventory(... -- перебираю инвентарь alife():release(... -- убираю некоторый объект iterate_inventory(... -- опять перебираю, а объект все еще есть. если добавить проверку вида while true do if not is_object_online(obj_id) then break end end то вываливаюсь, а по идее цикл должен был крутится пока этот obj_id не перестанет отзываться. Сообщение отредактировал HikeR - 21.07.2009, 23:58 |
|
|
![]()
Сообщение
#63
|
|
Опытный Игрок **** Группа: Участник Сообщений: 60 Регистрация: 24.06.2009 Пользователь №: 11166 ![]() |
HikeR, насчёт аналога - не подскажу, но может попробовать такую конструкцию?
В начале скрипта поставить что-то типа local flag = true Затем, после того как "alife():release(... -- убираю некоторый объект", в цикле ставить проверку, наподобие while flag == true do if "убитый_объект" ~= nil then flag = true else flag = false end end |
|
|
![]()
Сообщение
#64
|
|
Опытный Геймер ******* Группа: Участник Сообщений: 182 Регистрация: 08.09.2008 Пользователь №: 8878 ![]() |
просто была такая же заморочка. iterate_inventory(... -- перебираю инвентарь alife():release(... -- убираю некоторый объект iterate_inventory(... -- опять перебираю, а объект все еще есть. Думаю дело в этом: alife():release(...) убивает серверный объект iterate_inventory(...) итерирует по клиентским А синхронизация серверных и клиентских произойдет не раньше следующего actor_binder:update. |
|
|
![]()
Сообщение
#65
|
|
Продвинутый геймер ******** Группа: Участник Сообщений: 283 Регистрация: 25.01.2009 Из: село Яренск Пользователь №: 9755 ![]() |
А можно как-то, зная название обьекта, и не спавня его(так как он в игре уже есть как онлайн), ударить по нему хитом?
Вот например удаление долговца: Код function udar_nishtak() for a=10,65635,1 do local obj=alife():object(a) if obj and string.find(obj:name(),"dolg_regular") then alife():release(obj,true) end end end А вот кто-нибудь может переделать этот код, чтобы получилось что-то вроде: Код function udar_nishtak()
for a=10,65635,1 do local obj=alife():object(a) if obj and string.find(obj:name(),"dolg_regular") then Какой код нужно поставить сюда, для хита? end end end Сообщение отредактировал PATRON - 22.07.2009, 10:43 |
|
|
![]()
Сообщение
#66
|
|
Почти Игрок ** Группа: Участник Сообщений: 27 Регистрация: 05.07.2009 Пользователь №: 11244 ![]() |
А кто знает как удалить все миссии действия в скриптах.
И начать делать миссии и всякое с нуля? (IMG:http://www.gameru.net/forum/style_emoticons/default/rolleyes.gif) |
|
|
![]()
Сообщение
#67
|
|
Опытный Геймер ******* Группа: Участник Сообщений: 182 Регистрация: 08.09.2008 Пользователь №: 8878 ![]() |
|
|
|
![]()
Сообщение
#68
|
|
Опытный Игрок **** Группа: Участник Сообщений: 60 Регистрация: 24.06.2009 Пользователь №: 11166 ![]() |
А можно как-то, зная название обьекта, и не спавня его(так как он в игре уже есть как онлайн), ударить по нему хитом? выше был пример взрыва бочки. Её взрывали нанося хит. Разницы между бочкой и долговцем в этом случае никакой Можно дополнить? (IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif) В примере выше использовался тип повреждения hit.explosion... Надо-ли говорить, что тип не один? Есть несколько типов - можете найти примеры использования в оригинальных скриптах и наносить объекту хит, наиболее подходящий для ситуации. |
|
|
![]()
Сообщение
#69
|
|
Магистр Игры **************** Группа: Участник Сообщений: 2620 Регистрация: 26.03.2007 Из: Великий Новгород Пользователь №: 5660 ![]() |
но может попробовать такую конструкцию? она по сути повторяет тот же while true... А синхронизация серверных и клиентских произойдет не раньше следующего actor_binder:update. ахха, то есть минимальный момент времени, который нужно подождать - 1FPS. вопрос в том, как именно нужно ждать ;) просто есть подозрение, что любой цикл приостанавливает выполнение скрипта, и при определенной задержке, то есть при отсутсвии возврата, игра крешится, специально либо из-за рассинхронизации. а вешать на апдейт разовую ф-ию как-то не хочется. |
|
|
![]()
Сообщение
#70
|
|
Опытный Геймер ******* Группа: Участник Сообщений: 182 Регистрация: 08.09.2008 Пользователь №: 8878 ![]() |
Можно дополнить? (IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif) В примере выше использовался тип повреждения hit.explosion... Надо-ли говорить, что тип не один? Есть несколько типов - можете найти примеры использования в оригинальных скриптах и наносить объекту хит, наиболее подходящий для ситуации. есть еще hit.burn hit.chemical_burn hit.fire_wound hit.radiation hit.shock hit.strike hit.telepatic hit.wound Использовать так же как и hit.explosion. Эти значения взял из файла lua_help.script. Там же можно найти и много другой полезной информации. Ну а какой наиболее подходящий Вам виднее ахха, то есть минимальный момент времени, который нужно подождать - 1FPS. вопрос в том, как именно нужно ждать (IMG:http://www.gameru.net/forum/style_emoticons/default/wink.gif) просто есть подозрение, что любой цикл приостанавливает выполнение скрипта, и при определенной задержке, то есть при отсутсвии возврата, игра крешится, специально либо из-за рассинхронизации. а вешать на апдейт разовую ф-ию как-то не хочется. Как обойтись без влезания в апдейт я не знаю. Можно еще правда set_fastcall попытаться приспособить(по использованию в скриптах чем-то напоминает апдейт (IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif) ). Когда нужно - установить, а после срабатывания сбросить. Ну и кстати с циклом по идее вылета не должно быть. просто по идее биндер должен зависнуть и все (IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif) (то есть перестать срабатывать функции биндера). В АМК например, это зависание отлавливается и игра специально крешится. А можно лог вылета, если сохранился Сообщение отредактировал Kolmogor - 22.07.2009, 21:46 |
|
|
![]()
Сообщение
#71
|
|
Магистр Игры **************** Группа: Участник Сообщений: 2620 Регистрация: 26.03.2007 Из: Великий Новгород Пользователь №: 5660 ![]() |
Можноеще правда set_fastcall попытаться приспособить смотрел на это дело, но издалека, надо попробовать. А можно лог вылета, если сохранился у меня имеется некоторая трабла в виде установленной семерки, которая падает в синий экран при краше сталкера, а ребутить машину ночью никак нельзя. как-нить на днях выложу, если еще интересно будет. |
|
|
![]()
Сообщение
#72
|
|
Опытный Игрок **** Группа: Участник Сообщений: 60 Регистрация: 24.06.2009 Пользователь №: 11166 ![]() |
Вопрос - кто-нибудь знает, как прочитать последнюю строку консоли в запущенной игре?
|
|
|
![]()
Сообщение
#73
|
|
Почти Игрок ** Группа: Участник Сообщений: 20 Регистрация: 16.07.2009 Из: Мертвый город Пользователь №: 11317 ![]() |
В lua_help.script есть класс CConsole.
CODE C++ class CConsole { function execute_script(string); function get_string(string); function execute(string); function get_bool(CConsole*, string); function get_float(CConsole*, string); function get_integer(CConsole*, string); function get_token(string); function show(); function hide(); }; Может get_string() что-то даст, по названию как ни как(IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif) |
|
|
![]()
Сообщение
#74
|
|
Опытный Игрок **** Группа: Участник Сообщений: 60 Регистрация: 24.06.2009 Пользователь №: 11166 ![]() |
Да, это я видел, даже пробовал вытащить именно через get_console:get_string(), что-то пока не получается. Поэтому и спросил, может кто подтолкнёт.. (IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif)
|
|
|
![]()
Сообщение
#75
|
|
Почти Игрок ** Группа: Участник Сообщений: 20 Регистрация: 16.07.2009 Из: Мертвый город Пользователь №: 11317 ![]() |
get_string определенно не то, что нужно, потому что она возвращает значение в строке любой консольной команды, переданой в качестве параметра...
local str = get_console():get_string("rs_stats") в итоге в str будет "on" или "off" и разницы между get_string и get_token не нашел... (IMG:http://www.gameru.net/forum/style_emoticons/default/dry.gif) Сообщение отредактировал jboo7 - 23.07.2009, 12:51 |
|
|
![]()
Сообщение
#76
|
|
грандмастер бит ****************** Группа: Участник Сообщений: 3274 Регистрация: 18.02.2009 Из: Тверь Пользователь №: 9874 ![]() |
Здрасте. Мб не совсем в тему, но все таки. Подскажите плиз, где находится в сталкере скрипт, отвечающий за голод, а то я в скриптах не бум бум-хочу сделать аналогичный скрипт по примеру голода. И еще: где и что нужно написать, чтоб игра обращалась к этому скрипту?
|
|
|
![]()
Сообщение
#77
|
|
Почти Игрок ** Группа: Участник Сообщений: 20 Регистрация: 16.07.2009 Из: Мертвый город Пользователь №: 11317 ![]() |
Stalbar, может попробуешь сохранять лог-игры, когда нужно во время её работы, и просто читать от туда последнюю строку?(IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif)
|
|
|
![]()
Сообщение
#78
|
|
Опытный Игрок **** Группа: Участник Сообщений: 60 Регистрация: 24.06.2009 Пользователь №: 11166 ![]() |
jboo7, флушить лог можно, но как добиться, чтобы это происходило именно в момент появления там нужной мне строки???? (IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif) Хотя, если по этому условию можно флушить лог, то тогда мне и лог совсем не нужен (IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif) Мне нужно отловить именно появление определённой строки в логе, вернее в консоли.
Сообщение отредактировал Stalbar - 23.07.2009, 13:58 |
|
|
![]()
Сообщение
#79
|
|
Опытный Геймер ******* Группа: Участник Сообщений: 182 Регистрация: 08.09.2008 Пользователь №: 8878 ![]() |
|
|
|
![]()
Сообщение
#80
|
|
Опытный Игрок **** Группа: Участник Сообщений: 60 Регистрация: 24.06.2009 Пользователь №: 11166 ![]() |
А какая задача вообще стоит? Зачем пытаешься строку в консоли отловить? Может необязательно строку в консоли отлавливать, может по-другому можно? При активации артефакта под названием "мина" рождается аномалия "минное поле" (IMG:http://www.gameru.net/forum/style_emoticons/default/smile.gif) Движок на это непотребство реагирует выдачей в консоль 2 строк такого вида: artefact [af_mine31076] spawned a zone [zone_mine_field] at [92.799683] - !!!processing_enabled ->destroy_queue.push_back af_mine31076[31076] frame [18310] Вот хочу попытаться отловить не факт перемещения игроком в активный слот айтема (он его может покрутить в руках и назад в рюкзак сунуть), а именно момент активации мины, после которого движок выдаёт в консоль вышеприведённые строки. Также очень хочется отловить момент "сработки" минного поля, как вот это реализовать - я пока в глубоких раздумьях... Если по варианту активации мины есть решение, но очень "некрасивое", я бы сказал, хотелось бы более элегантного, то по вопросу срабатывания минного поля мыслей пока никаких нет. Совсем. (IMG:http://www.gameru.net/forum/style_emoticons/default/sad.gif) Сообщение отредактировал Stalbar - 23.07.2009, 17:48 |
|
|
![]()
Сообщение
#81
|
|
Опытный Геймер ******* Группа: Участник Сообщений: 182 Регистрация: 08.09.2008 Пользователь №: 8878 ![]() |
Вот хочу попытаться отловить не факт перемещения игроком в активный слот айтема (он его может покрутить в руках и назад в рюкзак сунуть), а именно момент активации мины, после которого движок выдаёт в консоль вышеприведённые строки. При активации мины артефакт пропадает? Тогда это отлавливается как и использование предмета: в on_item_drop запоминаем ид, и в апдейт проверяем наличие объекта с таким ид - если объекта нет - значит заюзали |
|
|
There is 15 page(s) На первую страницу Предыдущая страница Page : 2 Page : 3 4 Page : 5 Page : 6 Следующая страница На последнюю страницу |
Текстовая версия | Сейчас: 21.01.2021, 01:29 |