Перейти к контенту

Рекомендуемые сообщения

Доброго всем времени суток.

В описании, встретил схему mob-eluder.

Там же сказано, что схема работает не устойчиво, поэтому ее не рекомендуют применять.

Попробовал, действительно игра крашиться.

Не в курсе всезнающий ALL, кто-нибудь довел эту схему до ума или только мне она и надо?

 

Удачи!

Ссылка на комментарий

Artos, А лог там вообще ужасный

....

 

[error]Expression : fatal error

[error]Function : CScriptEngine::lua_error

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

[error]Line : 73

[error]Description : <no expression>

[error]Arguments : LUA error: d:\games\s.t.a.l.k.e.r\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)

 

 

stack trace:

 

Scheduler tried to update object esc_dog_weak_0010

 

FATAL ERROR

 

[error]Expression : fatal error

[error]Function : CScriptEngine::lua_error

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

[error]Line : 73

[error]Description : <no expression>

[error]Arguments : LUA error: d:\games\s.t.a.l.k.e.r\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)

 

 

stack trace:

 

Scheduler tried to update object esc_dog_weak_0009

 

FATAL ERROR

 

[error]Expression : fatal error

[error]Function : CScriptEngine::lua_error

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

[error]Line : 73

[error]Description : <no expression>

[error]Arguments : LUA error: d:\games\s.t.a.l.k.e.r\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)

 

 

stack trace:

 

Scheduler tried to update object esc_boar_weak_0001

 

FATAL ERROR

 

[error]Expression : fatal error

[error]Function : CScriptEngine::lua_error

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

[error]Line : 73

[error]Description : <no expression>

[error]Arguments : LUA error: d:\games\s.t.a.l.k.e.r\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)

 

 

stack trace:

 

 

 

 

и так со всем зверьем с кордона. Выписывает всех 500 зверушек и крашит игру через пять-шесть секунд после новой игры. До фаталл эррора как обычно жалется на корявые огг-файлы

В чем ошибка непонятно. При удалении Bind_stalker вылет исчезает, со всеми вышеуказанными наработками по превращению хлеба в колбасу. :D Возможно мутантов душит жаба :DDD

Сам факт того, что существует сталкер, способный превратить булку хлеба в палку колбасы и водку - опаснее самого Чернобыльского взрыва.

Изменено пользователем ferrari314

Истина где-то рядом...

Ссылка на комментарий

ferrari314, есть неплохая пословица (уместная к случаю): "Нечего на зеркало пенять коль ... крива" :crazy:

То, что ты пытаешься сделать не опаснее любой иной правки скриптов и многие "незнайки скриптов" подобное применяют по готовым кодам.

Иной вопрос, что ты ни в логах не шаришь, ни нужный вывод в лог не организовал и сразу "кучку правок" вероятно вносишь . не указывая их в топике полностью.

Явно, что твои правки биндера актора имеют ошибку(и) и вероятно "подвешивают" весь Lua-поток биндера ... аукается это на остальных биндерах, в апдейтах которых и происходит уже фатальная ошибка.

Или приводи полную информацию по своим правкам (а не кусочно-по-строчную) или гадай самостоятельно и локально, а не в топике.

 

Добавлено через 5 мин.:

AK74, копался с данной схемой (mob-eluder) и даже привел ее к варианту для использования, но ... применения в игре пока не нашел.

Подправленную схемку можно посмотреть в моде "SIMBION:SHoC" последней текущей версии (см. в мастерской на оффсайте).

 

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Строгое предупреждение от модератора ColR_iT
Как раз таки всё, что тебе нужно Artos и сказал, причем ничего такого зазорного, что могло бы тебя так возмутить. Ну раз ты такой нервный, то читай форум, а когда успокоишься - рады будем видеть.

Трое суток чтения.

Изменено пользователем ColR_iT

Истина где-то рядом...

Ссылка на комментарий

С запозданием дам некоторые комментарии к вопросу про (см. #3678):

ColR_iT: ...возник вопрос касательно функции load_job, что в файлах гулагов для локаций, а именно таблица t с описанием работы.
Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

ferrari314,

Мне показалось ты в ЗП работаешь...

Всё правильно заметил Артос, не правильный вызов.

Про скрипт удаление, мог сказать одно.. Мне причина вылета не известна... Может, дело в неправильном месте запуске.

Попробуй повесить вызов функции на кнопку в главном меню.

 

Просьба не искажать ник(и). Не думаю, что удобно будет читать/понимать обращение к "Унамед блек вулфу" ... --/Artos

Изменено пользователем Artos
Ссылка на комментарий

Мдааа... в принципе я ожидал, что и эта часть, скажем так, урезана.

Спасибо всем за пояснения.

Кстати я нашел ПЫСовское описание изначального назначения параметров team, squad и group, звучит оно следующим образом:

1. Команда (team).

Описывает принадлежность персонажа в определенному типу сталкеров. Таким образом все военные сталкеры имеют одинаковую команду, все сталкеры, находящиеся в одной группировке имеют одинаковую команду.

- 0: к этой команде принадлежат: Актер, Торговец, Бармен, Представитель ученных, другие сюжетные миролюбивые персонажи. К этой команде также относятся все сталкеры-одиночки, которые по умолчанию должны быть нейтральными к актеру.

- 1: к этой команде относятся все сталкеры-одиночки, которые по умолчанию должны быть врагами по отношению к актеру.

- 2: Военные сталкеры, армия.

- 3: Параноики, зомбированные и сумасшедшие сталкеры, которые уже с трудом могут принадлежать к какой то категории. Они сами по себе.

- 4: Reserved

- 5: Группировка «Долг»

- 6: Группировка «Грех»

- 7: Группировка «Монолит»

- 8: Сталкеры анархисты из группировки «Свобода»

- 9..31: Reserved

 

2. Отряд (squad)

Описывает принадлежность сталкеров из одной команды к разным группам внутри одного уровня. Это разделение существует внутри каждого уровня. Для каждой команды это разделение тоже особое. Значение отряда должно находится в пределах от 0 до 31.

 

3. Группа (group)

Описывает разбиение больших отрядов на более мелкие структурные единицы. Если такое разделение не нужно – дублирует отряд. Сталкерам одиночкам лучше давать уникальные группы. Значение группы должно находится в пределах от 0 до 31.

 

 

Распределение по сквадам и группам.

Сквад сталкера ставится в зависимости от уровня, на котором он спавнится.

Группа ставится каждому человеку своя отдельная. Получается что на одном уровне не может быть больше чем 32 сталкеров одиночек в каждой команде. Итого 32 нейтральных, 32 злых. Если, скажем, необходимо поставить группу из трех бандитов – то всем им нужно ставить одинаковую группу. Тогда общее число сталкеров увеличится. Вообщем думаю что хватит с головой 

0: Escape

1: Garbage

2: Agroprom

3: DarkDolina

4: RostokBar

5:

6:

7:

8:

9:

10:

11-31: Reserved

Но вот, к большому сожалению, применение этих параметров в практических целях, я не наблюдал.

Знаю только, что изначально group использовалась для синхронизации передвижения НПС по путям, синхронизация производилась при помощи флага n в точках движения walk, а так же при условии нахождения НПС в одной группе.

Кстати о флагах точек путей, как оказывается их намного больше тех, которые описаны на Wiki:

Флаги пути path_walk:

 

n = 0 .. 9999 – номер точки синхронизации. Рекомендуется первой точке задавать значение 0, остальным – числа по возрастанию с произвольным шагом. Прийдя в точку с большим n, сталкер будет ждать отстающих напарников. Примечание: сталкер дожидается опаздывающих напарников _только_ в точках остановки (т.е. только в тех местах, где точка path_walk имеет общие флаги с одной из точек path_look).

Внимание – для поддержки зацикленных маршрутов, сталкеры на точке с минимальным n дожидаются сталкеров на точке с максимальным n. Поэтому минимальное количество точек синхронизации для корректной работы схемы должно составлять 3 точки или больше!

 

s = имя_звуковой_схемы – пробегая через эту точку, сталкер включит указанную звуковую схему. Звук стартует ДО начала поворота и старта анимации. Для того, чтобы звук стартовал синхронно с анимацией – задавайте его в path_look соответствующей точки, а не в path_walk. Если нужно стартовать звук одновременно с ЛЮБОЙ из анимаций в этой точке, можно воспользоваться параметром sa.

 

sp = с какой вероятностью будет проигран звук (по умолчанию 100)

 

sa = true – ждать начала анимации в точке, прежде чем стартовать проигрывание звука (по умолчанию false).

 

sc = true – разрешить проигрывать звуки схемы неоднократно (по умолчанию false).

 

sf, st – временной интервал повторения фраз из выбранной звуковой схемы в секундах (по умолчанию от 5 до 10 сек).

 

p = 0 – 100 – при наличии в точке флажка, общего с одной из точек path_look, задает вероятность того, что персонаж остановится в точке (по умолчанию 100).

 

c = true – дальше перемещаться в присяде (по умолчанию false)

 

r = true – дальше перемещаться бегом (по умолчанию false)

 

d = true – перемещаться в состоянии danger (по умолчанию false)

 

ds = имена_диалогов – имена диалогов, которые разрешено стартовать начиная с этой точки (разрешение действует до следующей точки). Имена задаются в виде текстовой строки, разделенной запятыми: ds=bandits_talk,weather_talk и т.д.

 

ret = число – сразу же по прибытии в точку вызывает зарегистрированный при инициализации movement manager-а callback с этим числом в качестве второго аргумента.

 

rel = name,name,… - меняет отношение других персонажей к себе. Используется вместе с параметром ret. Вызывается менеджером перемещения подобно пользовательской callback-функции, при этом в rel перечисляются через запятую персонажи, у которых нужно сменить отношение к себе, а в ret задается, какое именно отношение нужно установить: 1 – хорошее, 0 – плохое. Пример: ”ret=0|rel=bandit1,bandit2” – установит у бандитов плохое отношение к персонажу, который пришел в данную точку пути.

 

w = имя_walk_пути – переводит схему на новый path_walk. Рекомендуется также задать новый path_look с помощью параметра ”l”, иначе текущий path_look будет сброшен. Персонаж идет на стартовую точку с режимом перемещения, заданным в точке с параметром ”w”. Настройки функции коллбека при переключении пути сохраняются.

 

l = имя_look_пути - сбросит схему на новый path_look. Задавать параметр ”l” нужно вместе с параметром ”w”, иначе ”l” будет проигнорирован. По умолчанию path_look при смене path_walk будет сброшен.

 

Флаги пути path_look:

 

p = 100 – вероятность, с которой персонаж посмотрит именно в эту точку. Значения p всех возможных точек суммируются, т.е. если у одной точки p = 100, а у другой 300, то персонаж посмотрит в первую с вероятностью 25%! (т.е. 100 из 400).

Рекомендуется задавать p так, чтобы их сумма составляла 100.

По умолчанию у всех точек p = 100.

 

a = анимация, которую проиграет персонаж, посмотрев в эту точку (по умолчанию idle). Для того, чтобы персонаж стоял в точке без анимации, задайте значение nil: ”a=nil”

 

nowpn = true – если персонаж должен спрятать оружие

 

c = true – смотреть в точку в присяде (по умолчанию используется значение одноименного поля из path_walk)

 

d = true – смотреть в точку в состоянии danger (по умолчанию используется значение одноименного поля из path_walk)

 

att = 1 или 2 – номер атаки (основная, вспомогательная). Можно использовать вместо анимации (например ”a=nil|att=1”), можно вместе с анимацией (”a=стреляем_в_потолок|att=1»).

 

t = время, которое персонаж будет ждать, играя анимацию или стреляя (по умолчанию 5000). Если требуется ждать бесконечно долго (например, это финальная точка пути), нужно задать t равным ”-1”.

Примечание: если персонаж ждет синхронизации в точке, то он будет играть анимацию столько времени, сколько нужно для того, чтобы дождаться напарников, но только по прибытию всех напарников на точки засечет заданное в ”t” время. Исключение составляет стрельба – персонаж не станет стрелять сразу по прибытию в точку, а сперва дождется напарников, а потом уже начнет стрелять в течение заданного времени.

 

s = имя - звук, который персонаж разово проиграет, посмотрев в эту точку.

 

sp = с какой вероятностью будет проигран звук (по умолчанию 100)

 

sl = имя_прожектора – если задано, то при повороте в указанную точку персонаж также повернет и прожектор в неё.

 

ret = число – после поворота в целевую точку вызывает зарегистрированный при инициализации movement manager-а callback с числом ret в качестве второго аргумента. При этом время ожидания (поле t) игнорируется, т.е. после того как callback вызовет update_movement_state – персонаж сразу же пойдет дальше.

Вот только опять таки - какие из них рабочие, я пока не выяснил.

 

Добавлено через 16 мин.:

Ах, да... еще есть флаги предназначенные для вертолета, БТР, мобов и еще всякие, назначение которых совершенно не ясно...

Изменено пользователем ColR_iT
Ссылка на комментарий

ColR_iT, понятие "урезано" в данном случае (т.е. применительно к чисто скриптовым параметрам) несовсем подходит.

Это все же не движковые классы/методы, которые будучи вырезанными добавить непросто иль невозможно.

И team, squad и group можно использовать, если доработать/восстановить имеюшееся. Та же схема компаньонов и следования за командиров вполне может сгодиться. Вероятно разрабы нерешились недоделки иль нестабильности оставить в релизах - вот и удалили иль закомментировани в скриптах.

По флагам также - все это можно прочитать и/или добавить в соотв.функции/схемы. Не задавался таким вопросом как перепроверка всех доступных флагов, но кому не жаль времени может это сделать ... а может кто уже проверял и поделится.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

прочитал на вики статью про рандрмный спавн мутантов, там был приведён код который я немного переделал...

получилось вот это

---------spawn mobs--------------------------------------------
---------РАНДОМныЙ ВПАВН МУТАНТОВ НА УРОВНЯХ-------------------
---------VER 1.0.3---------------------------------
local level_vertexes={
     marsh=528961
}

local game_vertexes={
    marsh={3337,3581}
}

local mutants = {
"zombie_ghost_hell",
"zombie_normal_hell",
"zombie_immortal_hell",
"bloodsucker_weak_hell",
"tushkano_normal_hell",
"snork_weak_hell",
"burer_weak_hell",
"cat_weak_hell",
"chimera_weak_hell",
"gigant_strong_hell"
}

function init()
local count = math.random(5,20) 
local section = mutants[math.random(table.getn(mutants))] 
local lv = math.random(level_vertexes[level.name()]["lvid"])
local gv = game_vertexes[level.name()]["gvid"]
local lv_1 = math.random(level_vertexes[level.name()]["lvid"])
local gv_e = game_vertexes[level.name()]["gvid"]
local lv_e = math.random(level_vertexes[level.name()]["lvid"])

      alife():create(mutants,vector():set(lv,lv_1,gv),lv_e,gv_e)
end

это вот пока коряво написанное чудо вылетает с таким логом

Клиент: Синхронизация...

* phase time: 40 ms

* phase cmem: 323655 K

* [win32]: free[925240 K], reserved[70832 K], committed[1101016 K]

* [ D3D ]: textures[322140 K]

* [x-ray]: crt heap[323655 K], process heap[7972 K], game lua[26940 K], engine lua[265 K], render[0 K]

* [x-ray]: economy: strings[4403 K], smem[28222 K]

! Unknown command: file____:_system.ltx

* Log file has been saved successfully!

! Unknown command: section_:_space_restrictor

* Log file has been saved successfully!

! Unknown command: lines___:_4

* Log file has been saved successfully!

! Unknown command: line_0_:_$spawn_=_"ai\space_restrictor"

* Log file has been saved successfully!

! Unknown command: line_1_:_GroupControlSection_=_spawn_group_restrictor

* Log file has been saved successfully!

! Unknown command: line_2_:_class_=_SPC_RS_S

* Log file has been saved successfully!

! Unknown command: line_3_:_script_binding_=_bind_restrictor.bind

* Log file has been saved successfully!

! Unknown command: actor_net_spawn

* Log file has been saved successfully!

! Unknown command: LEVEL_POSTPROCESS:_level:_[marsh],_postprocess:_[none]

* Log file has been saved successfully!

! Unknown command: WEATHER:_'boloto'_now_'true'

* Log file has been saved successfully!

 

FATAL ERROR

 

[error]Expression : fatal error

[error]Function : CScriptEngine::lua_error

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

[error]Line : 73

[error]Description : <no expression>

[error]Arguments : LUA error: ...н Зоны\gamedata\scripts\mob_random_spawn_list.script:42: attempt to index field '?' (a number value)

Прошу указать на мои ошибки и помочь мне организовать "рандомный спавн мутантов на незаселённых уровнях".

Ребят, не казните меня сильно за плагиат...."я ещё не волшебник, а только учусь"...)))))

Тем кто ответит заранее благодарен!!!

Изменено пользователем ColR_iT

Сталкер в душе - сталкер по жизни!

Ссылка на комментарий

temakonkin, ты не правильные параметры передаешь в функцию create. Так, например, переменная lv это допустимый левел вертекс выбранный из таблицы, lv_1 и lv_e это тоже самое, абсолютно ничем не отличается. А также gv и gv_e это тоже одно и тоже - допустимый гейм вертекс из таблицы.

В функцию create же нужно передавать следующие параметры:

create (
        string,                 -- "имя секции объекта"
        vector* position,       -- координаты из трех точек
        int level_vertex_id,    -- левел вертекc уровня
        int game_vertex_id      -- гейм вертекс
        )

а ты что передаешь?

Чем ты руководствовался? И еще лог который ты привел, указывает, что ошибка в 42 строке файла mob_random_spawn_list.script, а код ты привел из 35 строк, так что недостача. И ссылочку на оригинал статьи скинь.

Изменено пользователем ColR_iT
Ссылка на комментарий

Здравствуйте. Можит кто подсказать?

Игра ТЧ 1.0004

1. возможно ли вызвать выброс функцией? чтоб он случился в нужный по сюжету момент.

2. Возможно ли зоставит выстрелить НПС в другого конкретного НПС? (скажим по Сид номеру)

Ссылка на комментарий

ColR_iT

так что недостача.

так и есть я привел не весь код..... Весь он выглядит так(но думаю это ничего не меняет)...

---------spawn mobs--------------------------------------------
---------РАНДОМныЙ ВПАВН МУТАНТОВ НА УРОВНЯХ-------------------
---------VER 1.0.3---------------------------------
local level_vertexes={
     marsh=528961
}

local game_vertexes={
    marsh={3337,3581}
}

local mutants = {
"zombie_ghost_hell",
"zombie_normal_hell",
"zombie_immortal_hell",
"bloodsucker_weak_hell",
"tushkano_normal_hell",
"snork_weak_hell",
"burer_weak_hell",
"cat_weak_hell",
"chimera_weak_hell",
"gigant_strong_hell"
}


function init_old()
local count = math.random(5,20) --выбираем кол-во заспавненых мобов
local section = mutants[math.random(table.getn(mutants))] -- выбираем секцию моба
local lv = math.random(level_vertexes[level.name()]["lvid"]) --выбираем левел вертекс
local gv = level_vertexes[level.name()]["gvid"] --выбираем гэйм вертекс
for ind = 1, count do
alife():create(section, level.vertex_position(lv), lv, gv)--\\level.vertex_position(lv) - позиция левел вертекса
end
end

alife():create("marsh_bandit_novice_b_1",vector():set(521.22204589844,1.3338094949722,9.2732839584351),494720,3548)


function init()
local count = math.random(5,20) --выбираем кол-во заспавненых мобов
local section = mutants[math.random(table.getn(mutants))] -- выбираем секцию моба
local lv = math.random(level_vertexes[level.name()]["lvid"]) --выбираем левел вертекс
local gv = game_vertexes[level.name()]["gvid"] --выбираем гэйм вертекс
local lv_1 = math.random(level_vertexes[level.name()]["lvid"])
local gv_e = game_vertexes[level.name()]["gvid"]
local lv_e = math.random(level_vertexes[level.name()]["lvid"])

      alife():create(mutants,vector():set(lv,lv_1,gv),lv_e,gv_e)
end

 

вот этой темой я руководствовался http://www.stalkerin.gameru.net/wiki/index...ения_о_скриптах

 

На счет того, что я передаю..... в переменной содержатся L и G вертекс уровня, после чего вычисляется произольное его значение-которое передаётся в фун-ю спавна,

local lv_e = math.random(level_vertexes[level.name()]["lvid"])
................
alife():create(mutants,vector():set(lv,lv_1,gv),lv_e,gv_e)

 

также в случайном порядке вычисляется секция спавна

 

local mutants = {
"zombie_ghost_hell",
"zombie_normal_hell",
"zombie_immortal_hell",
"bloodsucker_weak_hell",
"tushkano_normal_hell",
"snork_weak_hell",
"burer_weak_hell",
"cat_weak_hell",
"chimera_weak_hell",
"gigant_strong_hell"
}
....................................
local section = mutants[math.random(table.getn(mutants))]

вот собственно цели идеи...........

Изменено пользователем ColR_iT

Сталкер в душе - сталкер по жизни!

Ссылка на комментарий

temakonkin

Начнем с того, что у тебя переменных аж семь, а цели и идеи по всей видимости не совпали.

count - количество мобов, которые будут заспавнены;

section - секция моба которая будет заспавнена;

А дальше по сути бред (уж извини за откровенность)...

lv - левел вертекс уровня;

gv - гейм вертекс;

lv_1 - опять левел вертекс уровня;

gv_e - опять гейм вертекс;

lv_e - и всё тот же левел вертекс уровня.

Как я уже писал, функция create принимает определенные параметры, один из которых вектор, состоящий из трёх координат, т.е. здесь:

vector():set(lv,lv_1,gv)

в качестве lv,lv_1 и gv должны быть координаты присущие уровню, а не те значения, которые принимают эти переменные в твоём случае.

Но и при всём при этом, ошибка, т.е. непосредственно сам вылет, происходит у тебя из-за другого, а именно из-за вот этой строки:

local lv = math.random(level_vertexes[level.name()]["lvid"]) --выбираем левел вертекс

Догадаешься почему?

P.S. Чтобы найти ошибку, сравни твой код с оригиналом, причем не на странице сайта, а желательно с возможностью подсветки синтаксиса, будет легче.

P.P.S. Нагрубить/обидеть/оскорбить не пытался и намерений таковых не было.

Изменено пользователем ColR_iT
Ссылка на комментарий

qwqwqw,

ну... если выброс прикручен от АМК то там есть функция в amk_mod.script - function Run_Blowout_pp() - её можно вызвать в диалоге, например, работает.

Ссылка на комментарий

qwqwqw, Заставить выстрелить элементарно,или сделать врагом или заставить проиграть анимацию выстрела в направлении нпс с заданным сидом

target=6(к примеру)

anim= assault_fire

как то так

а функция выброса есть и в чистой игре - выброс на ЧАЭС как то запускается же,и помоему в логике круглова ,проводящего замеры

Изменено пользователем gruber
Ссылка на комментарий

Окончательный и полный вариант модуля для работы с нет-пакетами в игре (замена m_net_utils).

http://www.amk-team.ru/forum/index.php?sho...st&p=669271

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Подскажите что я сделал не так, пытаюсь адаптировать сон из Зова, все вроде вписал куда нужно, но при синхронизации выдает ошибку.

FATAL ERROR

 

[error]Expression : fatal error

[error]Function : CScriptEngine::lua_error

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

[error]Line : 73

[error]Description : <no expression>

[error]Arguments : LUA error: f:\stalker\gamedata\scripts\bind_stalker.script:441: attempt to compare nil with number

 

 

stack trace:

Типа попытка сравнить ноль с числом, что я пропустил.

В бинд_сталкер вставил вот это.

-- обновление сна
    if post_time < time then
        post_time = time + 250

        if sleep_manager.is_sleep_active() and xr_conditions.actor_dead() then
            xr_logic.issue_event(db.actor, db.storage[db.actor:id()]["ar_sleep"], "update")
        end

        sleep_manager.update(delta)
    end

 

Может ещё что нужно прописать, не могу понять объясните пожалуйста.

Да извиняюсь просто заспешил, 441стока именно эта if post_time < time then, если не трудно как правильно прописать local post_time = 0

Изменено пользователем ХЕМУЛЬ36RUS

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

Ссылка на комментарий

ХЕМУЛЬ36RUS, вставив строки кода, нужно все же их проанализировать ... тем более лога тебе указывает и место и причину ошибки.

Хотя ты не потрудился указать что же за строка под номером 441, но пердполагаю, что это именно:

if post_time < time then

- в которой появляется некая переменная 'post_time' (?), о которой ни мы, ни вероятно скрипт ничего не ведаем. Вот и ругается срипт, пытаясь сравнить неведомое с текущим временем ...

Как вариант исправления - пропиши: local post_time = 0 - где-то в корне скрипта выше твоей функции, в которую вставляешь строки.

 

Real Wolf, включаем думалку и начинаем рассуждать ...

Объекты бывают разные ... и оконные интерфейсы и звуковые и партиклы и прочие ... Какие же нас интересуют?

Вероятно обычные, т.е. те, с которыми возятся ковырялкины чаще всего - предметы, неписи и им аналогичные.

Чем же отличается серверный объект от клиентского? Вероятно наличием/отсутствием тех или иных свойств/методов или же различием названия для схожих свойств.

Свойстав типа 'name' иль 'clsid' не подходят, тк. они хотя и у всех имеются, но одинаковы.

Общее свойство для всех игровых объектов (предметы/неписи/...) - id , причем у клиентских это функция, а у серверных - число!

Вот имеем:

if type(obj.id) == 'function' then
  --/ это клиентский объект
elseif type(obj.id) == 'number' then
  --/ это серверный объект
else
  --/ это нечто нам непотребное ...
end

Ну а если еще поднапрячься, то можно найти и много других вариантов отличить серверный объект от иных.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

ХЕМУЛЬ36RUS

Гляннул bind_stalker от ЗП и не нашёл там такого кода.

Более того, sleep_manager там не существует. За сон отвечает совсем другой скрипт.

(разве что ты адаптируешь мод, который переносит сон из ЗП на ТЧ, тогда это другое дело)

 

Что касается твоей ошибки то Artos уже ответил.

Дополню только то, что лучше будет не просто где то выше ставить, а открыть скрипт, откуда ты это копировал и посмотреть где находится post_time и туда же его вставить у себя.

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
×
×
  • Создать...