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

Внимание. На форуме проводятся технические работы с боковым меню.

_Val_ _Val_

Скриптование


Svoboда

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

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

con:execute(string.gsub(string.format(fmt,...), " ", "_"))

Такой вылет происходит:

Expression : fatal error

Function : CScriptEngine::lua_error

File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

Line : 73

Description : <no expression>

Arguments : LUA error: c:\my game$\s.t.a.l.k.e.r\gamedata\scripts\_g.script:21: bad argument #2 to 'format' (string expected, got no value)

 

Поделиться этим сообщением


Ссылка на сообщение
*Shoker*, лично я никуда такую строку не вставлял, но поискав такие строки, я их нашел почти во все скриптах, как у оригинальных, так и нет, а можно пример строки, как она должна выглядеть?

Поделиться этим сообщением


Ссылка на сообщение

И ещё, люди, вот у меня такой вылет:

[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: ...game$\s.t.a.l.k.e.r\gamedata\scripts\xr_logic.script:632: attempt to call local 'func' (a nil value)

 

Вот кусок скрипта:

if infop_conditions_met then

-- Условия выполнены. Независимо от того, задана ли секция, нужно проставить требуемые

-- infoportions:

for inum, infop in pairs(cond.infop_set) do

if db.actor == nil then

abort("TRYING TO SET INFOS THEN ACTOR IS NIL")

end

if infop.func then

local func=nil

local module,fname=string.match(infop.func,"(.+)[.](.+)")

if not fname then

func=xr_effects[infop.func]

else

if _G[module] and _G[module][fname] then

func=_G[module][fname]

end

end

if not func then

abort("object '%s': pick_section_from_condlist: function '%s' is " ..

"not defined in xr_effects.script", if_then_else(npc, npc:name(), "nil"), infop.func)

end

if infop.params then

func(actor, npc, infop.params)

else

func(actor, npc)--632 строка

end

 

Поделиться этим сообщением


Ссылка на сообщение

*Shoker*, немного гулаг подпралял, сейчас сделал другую правку и всё нормально. Я думаю это от него зависит?

 

Поделиться этим сообщением


Ссылка на сообщение

Люди, воспользовался вашим советом и решил искать вылет с помощью этих команд

con:execute(string.gsub(fmt, " ", "_"))
con:execute(string.gsub(string.format(fmt,...), " ", "_"))
con:execute("flush")

как и ожидалось получил вылет типа:

[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: c:\my game$\s.t.a.l.k.e.r\gamedata\scripts\_g.script:22: bad argument #3 to 'format' (string expected, got nil)

 

Но предыдущие строки были такие:

* Log file has been saved successfully!

! Unknown command: Selected_[%s]

! Unknown command: Selected_[story]

* Log file has been saved successfully!

! Unknown command: *SND*_play_SND_to_[%s]_for_[%s]

! Unknown command: *SND*_play_SND_to_[legend_01]_for_[bar_visitor_4]

* Log file has been saved successfully!

! Unknown command: LAST_INTO_ID_for_[%s]_=_[%s],_max_[%s]

 

Вот в каком скрипте есть строка, вызывающая такой вылет?

 

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

И ещё, вот у меня рандомный безлоговый вылет, один и тот же сейв могу загружать бывает загружается нормально а бывает загрузился и сразу вылет. И в игре так же бывает если игру оставить на длинное время, ничего не делая, по крайней мере на кордоне, то ничего не вылетит. То есть в основном вылет или сразу случается через минут 2-3 или вообще не вылетит. Есть ли у кого хоть какие-то предположения? Помогите, очень надо.

Поделиться этим сообщением


Ссылка на сообщение

RvP, спасибо, вроде помогло.

_Призрак_, а разве в скриптах такие троки бывают, может быть искать надо хотя бы так: LAST_INTO_ID_for?

И кстати ни у кого нет предположений на счёт вылета без лога?

P.S. А может ли быть причиной вылета высокая температура ГП, а то у меня сейчас старая видеокарта стоит, так как нормальная в ремонте. Так эта что сейчас стоит, греется где то до 80 градусов, когда максимально рабочая температура 75-80?(Извините что это не в тему.)

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

Поделиться этим сообщением


Ссылка на сообщение

Ребята, я задавал этот вопрос в другой теме, но мне кажется здесь это будет правильней. Как сделать чтобы уникального нпс не лечили и после смерти не обыскивали его?

 

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

И извиняюсь, забыл дописать, мой вопрос по ТЧ.

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

Поделиться этим сообщением


Ссылка на сообщение

=VENOM=, спасибо большое, а то как то мимо пропустил таблицу.

Disord, я тоже разбирался с этой переменной, туда вроде бы группировку вписывать надо?

Поделиться этим сообщением


Ссылка на сообщение

Как я понял в эти 2 файла надо писать имя, которое прописано в all.spawn то есть например name = esc_vagon_wounded, то в скрипт надо писать esc_vagon_wounded. Сделал так, но его продолжают лечить. Чего я ещё неправильно делаю?

Поделиться этим сообщением


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

Поделиться этим сообщением


Ссылка на сообщение

Ну вот я так и думал, только это не помогает, его весь бар сбегается лечить. Может в его "свойствах" что то не так?

Вот его секция спавна:

[13050]
; cse_abstract properties
section_name = stalker
name = bar_bar_psih
position = 115.516822814941,-5.1480016708374,11.9383907318115
direction = 0,0,0

; cse_alife_trader_abstract properties
money = 5000
character_profile = bar_psih

; cse_alife_object properties
game_vertex_id = 1239
distance = 4.19999980926514
level_vertex_id = 33756
object_flags = 0xfffffff7
custom_data = <<END
[smart_terrains]
none = true


[logic]
cfg = scripts\bar_psih.ltx
END
story_id = 517

; cse_visual properties
visual_name = actors\stalker_zombi\stalker_zombie4

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 5
g_group = 27
health = 1
dynamic_out_restrictions = 
dynamic_in_restrictions = 

upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0
upd:position = 115.516822814941,-5.1480016708374,11.9383907318115
upd:o_model = 0
upd:o_torso = 0,0,0
upd:g_team = 0
upd:g_squad = 5
upd:g_group = 27

; cse_alife_monster_abstract properties
base_out_restrictors = bar_restrictor

upd:next_game_vertex_id = 65535
upd:prev_game_vertex_id = 65535
upd:distance_from_point = 0
upd:distance_to_point = 0

; cse_alife_human_abstract properties
predicate5 = 2,1,1,0,2
predicate4 = 1,2,2,2

; cse_ph_skeleton properties

upd:start_dialog = 

; se_stalker properties

 

И вот его логика:

[logic]
active = walker@start

[walker@start]
path_walk = bar_bar_psih_walk
path_look = bar_bar_psih_look
wounded = wounded@pre_medkit
meet = meet@pre_medkit
on_info = {+bar_psih_nopain} walker@nopain

[meet@pre_medkit]
use = true
use_wpn = true

[wounded@pre_medkit]
hp_state = 100|psycho_pain@bar_psycho_pain
hp_state_see = 100|psycho_pain@bar_psycho_pain
psy_state = 0|psycho_pain@bar_psycho_pain
hp_victim = 100|nil
hp_cover = 100|false
hp_fight = 100|false
help_dialog = nil


[walker@nopain]
path_walk = bar_bar_psih_walk
path_look = bar_bar_psih_look
wounded = wounded@nopain
meet = meet@nopain
on_info = {+bar_psih_suicide} walker@suicide

[wounded@nopain]
hp_state = 100|psycho_pain@nil
hp_state_see = 100|psycho_pain@nil
psy_state = 0|psycho_pain@nil
hp_victim = 100|nil
hp_cover = 100|false
hp_fight = 100|false
help_dialog = nil

[meet@nopain]
use = true
use_wpn = true
meet_dialog = bar_bar_psih_start_gorbun


[walker@suicide]
path_walk = bar_bar_psih_walk
path_look = bar_bar_psih_look
wounded = wounded@suicide

[wounded@suicide]
hp_state = 100|psycho_shoot@bar_psycho_goodluck
hp_state_see = 100|psycho_shoot@bar_psycho_goodluck
psy_state = 0|psycho_shoot@bar_psycho_goodluck
hp_victim = 100|nil
hp_cover = 100|false
hp_fight = 100|false
synsound = psycho_shoot@bar_psycho_goodluck
help_dialog = nil

 

Может тут что то намудрил?

 

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

 

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

А на что тогда можно заменить, а то wounded можно допустим заменить на анимки, а вот что с суицидом делать?

 

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

Ребята, полный ахтунг, все мои предыдущие вопросы могут подождать, но этот нет, короче, поймал я безлоговый вылет, вот последние строки в логе:

! Unknown command:  *INFO:TRADE [bar_dolg_ivancov]: buy condition = generic_buy
* Log file has been saved successfully!
! Unknown command:  *INFO:TRADE [bar_dolg_ivancov]: sell condition = generic_sell
* Log file has been saved successfully!
! Unknown command:  *INFO:TRADE [bar_visitor_4]: buy condition = generic_buy
* Log file has been saved successfully!
! Unknown command:  *INFO:TRADE [bar_visitor_4]: sell condition = generic_sell
* Log file has been saved successfully!
! Unknown command:  *INFO:TRADE [bar_bar_psih]: buy condition = generic_buy
* Log file has been saved successfully!
! Unknown command:  *INFO:TRADE [bar_bar_psih]: sell condition = generic_sell

Помогите пожалуйста, заранее бесконечно-огромное спасибо.

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

Поделиться этим сообщением


Ссылка на сообщение

Что то я вообще ничего уже не пойму, теперь с теми строками всё нормально, последние теперь такие:

! Unknown command:  *INFO:TRADE [bar_bar_psih]: buy condition = generic_buy
* Log file has been saved successfully!
! Unknown command:  *INFO:TRADE [bar_bar_psih]: sell condition = generic_sell
* Log file has been saved successfully!
! Unknown command:  *INFO:TRADE [bar_visitor_3]: buy condition = generic_buy
* Log file has been saved successfully!
! Unknown command:  *INFO:TRADE [bar_visitor_3]: sell condition = generic_sell
* Log file has been saved successfully!
! Unknown command:  *INFO:_bp: enable_scripts: object 'inventory_box4458' has NO external configuration file, using '<customdata>'
* Log file has been saved successfully!
! Unknown command:  *INFO:HIT SECTION [nil]
* Log file has been saved successfully!
! Unknown command:  *INFO:DEBUG: object 'inventory_box4458': activate_by_section: looking for section 'nil'
* Log file has been saved successfully!
! Unknown command:  *INFO:_bp: reset_generic_schemes_on_scheme_switch: npc:name()='inventory_box4458'

И ещё, что то я этого тоже не пойму, это последние строки в логе, или ещё может какая то есть, просто во время вылета она не успела сохраниться?

Поделиться этим сообщением


Ссылка на сообщение

Лог был небольшой, когда файл лога весит ~7mb, тогда информация не выводится уже, и просто вылетает(проверено на себе). А у меня в данных случаях оно не превышает 1mb. И ещё, вылет очень рандомный и что я заметил либо при переходе на локацию вылетает в момент когда даже не загорелась надпись "старт сервера". Либо как в последнем случае я перехожу на локацию и где то через секунд 5 игры вылет. НО если такой сейв загрузить 2 раза(вроде так, может совпадение), то он абсолютно нормально загружается, но после нескольких загрузок этого же сейва может опять начать вылетать и тогда опять надо загружать его 2 раза. Я вот думаю, может есть надежда на то что вылет не из-за скриптов? И ещё, я вот сейчас, пока ходил на море, оставил игру включённой, где то часа 2 меня не было, вернулся, игра абсолютно нормально себя вела ничего не вылетело никаких "слётов" апдейта и т.д. И я так делал уже несколько раз, игра не вылетала. Я вот думаю,наверно если бы это были виноваты скрипты, то оно бы вылетело давным давно? Кстати, всё время я пользуюсь услугами проводника(New guiders mod), то есть только через него хожу может ли он в этом быть виновен?

Kirag, а на счёт апдейта, попробовать только в bind_stalker или вообще по всем пройтись? Просто во втором случае это очень трудно, так как я не уверен, что где то ещё, что то добавлял от себя, кроме как в bind_stalker.

 

P.S. Извините за такое количество вопросов в одном посте, но просто такое дело, что я один и не справлюсь.

Поделиться этим сообщением


Ссылка на сообщение
Kirag, да вроде всё обошлось, похоже всё таки виноват проводник, я оббегал весь бар, там где вылетало, потом на склады бегал, вернулся, ещё побегал по бару, посейвился позагружал его так что вроде всё в порядке, по крайней мере очень надеюсь. А вот что всё же делать с Психом моим не подскажете?

Поделиться этим сообщением


Ссылка на сообщение

И ещё вот такая неувязко-проблема появилась, у меня стоит AI additions - Rulix (Bak), когда НПС меняет винтовку на пистолет, то как я понял винтовка пропадает навсегда, потому что у них в продаже появляются магазины с патронами. Чего я так думаю, что это связанно, потому что когда у НПС есть оружие и патроны к нему, то патроны он не продаёт. Да и когда враг находится от НПС на большом расстоянии, он должен достать винтовку, но такое не происходит, он продолжает стрелять из пистолета. Чего с этим делать? И вопрос с Психом меня так же волнует. Заранее огромное спасибо :)

Поделиться этим сообщением


Ссылка на сообщение

Artos, да вот у меня как раз мысль, может имя я не то использую, так как в character_desc_bar у него имя bar_psih, но в секции спавна он bar_bar_psih. Хотя имена которые написаны в табличке, это имена из секций спавна.

И кстати, а какие ещё схемы лекарей есть, хотя бы известные, может у меня такова ещё стоит? Хотя на деле я знаю только xrs_medic.

Поделиться этим сообщением


Ссылка на сообщение
*Shoker*, да, написал то, что в all.spawn`е, но его пихают все аптечками, проверил, думал схема глючит, так нет, бедного Толика никто не вылечил.

Поделиться этим сообщением


Ссылка на сообщение

Вот ссылка на мой скрипт. Я вот думаю, а можно попробовать "обойти психа" таким способом, мне так =VENOM= советовал обойти обыск трупа:

if IsStalker(obj) and obj:name() == "stalker_name" then return false end

Так вот оно действительно помогло, только вот я не знаю где в xrs_medic это прописать.

Поделиться этим сообщением


Ссылка на сообщение
*Shoker*, можно подробнее про этот способ? Его что в _g.script в функцию printf прописать?

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...