[AI Tuning mod] - więcej umiejętności NPC

Regulamin forum
Dział "Modyfikacje Gotowe" służy do dyskusji o modyfikacjach, które już są stworzone lub do zadawania pytań na ich temat. Znajdziemy tutaj również linki do ściągnięcia modyfikacji (które powinny, a raczej muszą być w pierwszym poście tematu danej modyfikacji).

Przy zadawaniu pytania związanego z problemem dotyczącym modyfikacji, prosimy o podawanie treści całego loga błędu - koniecznie w tagu [CODE].

Przy cytowaniu plików *.LTX stosować tag [SYNTAX="ini"], przy cytowaniu plików *.script [SYNTAX="lua"] a przy cytowaniu plików *.xml - [SYNTAX="xml"].

Lokalizacja logów:
Windows XP - C:\Documents and Settings\All Users\Moje dokumenty\STALKER-SHOC\logs\xray_nazwaużytkownika.log
Windows Vista/7 - C:\Users\Public\Documents\STALKER-SHOC\logs\xray_nazwaużytkownika.log
Steam - X:\Program Files (x86)\Steam\SteamApps\common\Stalker Shadow of Chernobyl\_appdata_\logs

Pytania na temat modyfikacji zadajemy w wątku dla niej stworzonym lub tworzymy nowy, jeśli takowego nie ma.

Gdy chcemy założyć nowy wątek, obowiązkowe jest przeczytanie tego tematu.

Re: [AI Tuning mod] - więcej umiejętności NPC

Postprzez Crew w 16 Maj 2010, 20:27

Jak biorę nową gre to od razu :
FATAL ERROR

[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description : <no expression>
[error]Arguments : LUA error: ...alker shadow of chernobyl\gamedata\scripts\_g.script:1235: attempt to index global 'dialog_manager' (a nil value)


stack trace:
ASUS ROG Strix G17 R7-6800H/32GB/1TB + 4TB/Win11 RTX3070Ti 240Hz
Awatar użytkownika
Crew
Łowca

Posty: 415
Dołączenie: 22 Lut 2008, 19:11
Ostatnio był: 05 Mar 2024, 21:08
Miejscowość: Wałcz
Frakcja: Najemnicy
Ulubiona broń: GP 37
Kozaki: 19

Reklamy Google

Re: [AI Tuning mod] - więcej umiejętności NPC

Postprzez Freeman w 16 Maj 2010, 21:07

Poprzedni fix został usunięty z powodu w/w błędu, ta mała poprawka Fix 2 - powinna pomóc. Zastępujemy plik z folderu scripts.
Nie łączymy Fix'a 2 z poprzednim!
Mam nadzieję że będzie dobrze, bo kończą mi się pomysły...
Brak hasła do archiwum.
Ostatnio edytowany przez Freeman, 19 Maj 2010, 12:25, edytowano w sumie 1 raz
Awatar użytkownika
Freeman
Stalker

Posty: 140
Dołączenie: 23 Lip 2009, 19:17
Ostatnio był: 26 Maj 2010, 20:34
Miejscowość: Terra
Frakcja: Samotnicy
Ulubiona broń: VLA Special Assault Rifle
Kozaki: 3

Re: [AI Tuning mod] - więcej umiejętności NPC

Postprzez Crew w 18 Maj 2010, 18:54

Chyba z fixem 2 działa

----------------------

Z Fixem 2 działa na wersji 1.0005 :)

Z ciekawości możesz napisać co takiego zmieniłeś ??

Uwagi moderatora:

Double post - ati
ASUS ROG Strix G17 R7-6800H/32GB/1TB + 4TB/Win11 RTX3070Ti 240Hz
Awatar użytkownika
Crew
Łowca

Posty: 415
Dołączenie: 22 Lut 2008, 19:11
Ostatnio był: 05 Mar 2024, 21:08
Miejscowość: Wałcz
Frakcja: Najemnicy
Ulubiona broń: GP 37
Kozaki: 19

Re: [AI Tuning mod] - więcej umiejętności NPC

Postprzez Freeman w 19 Maj 2010, 13:31

Sprawa #1 – wyjaśnienia
_________

Pierwotnie mod tworzony był na wersję 1.0004.

Plik z Fix’a_2 to xr_motivator.script – różni się on w zależności od patcha.

W/w plik na patchu 1.0004 – właściwy wpis ma postać:

Kod: Zaznacz wszystko
   dialog_manager.load(self.object, reader)
   trade_manager.load(self.object, reader)
end

_________________

Natomiast na wersji 1.0005 występuje różnica odnosząca się do dialog_manager
Właściwy wpis ma postać:

Kod: Zaznacz wszystko
   self.npc_script_version = alife():object(self.object:id()).script_version
   dialog_manager.load(self.object, reader, self.npc_script_version)
   trade_manager.load(self.object, reader)
end

_________________

Crew – do tego sprowadzają się różnice w/w wpisów – Fix_2 zawiera wpisy uwzględniające nowszy patch 1.0005.
Fix dodany również do downloadu w 1 poście.



Sprawa #2 – dla osób chcących dodać mod do własnych kompilacji: blowout’y
_________

AI tuning mod zawiera skrypt grabieży ciał [watcher_act.script] – z którego wyłączono sekcje blowout_scheme – odpowiadającą za określone zachowania NPC podczas blowout’ów.
Trzeba je uwzględnić podczas dodawania zwarć – inaczej może wystąpić CTD, wówczas gdy schemat zachowań będzie nakazywał np. schronić się, a skrypt grabieży – przeszukiwanie ciał.
Niemodowny stalker nie uwzględnia takich zachowań, ponieważ zwarcia mamy tylko 2 na całą grę i podczas nich NPC zachowuję się jak podczas deszczu... xD

Sprawa #3 – dodawanie broni.
_________

Odpowiedni skrypt zarządza wyborem broni dla NPC podczas walki, wszelkie bronie dodawać należy w gamedata/config/misc – w pliku rx_weapon_mgr.ltx
Dodając broń do moda, nie należy zapomnieć o wpisaniu swojej broni do w/w pliku i przyporządkowaniu jej określonej wartości liczbowej.
Co robimy?
Znajdujemy sekcję [priors_def]
Pod nią znajdziemy listę broni z określonymi wartościami np:

Kod: Zaznacz wszystko
wpn_svd            = 42
wpn_svu            = 41
wpn_toz34                 = 21
wpn_val            = 34


Wartości te definiują – jaka broń ma priorytet podczas walki z określonym przeciwnikiem –tzw. modyfikatory wroga

Kod: Zaznacz wszystko
enemy_5 = dog:20,tushkano:5,bloodsucker:-10,giant:-20
enemy_6 = fracture:10,psy_dog_phantom:20
enemy_7 = flesh:20,dog:30,pseudodog:25,zombie:20,bloodsucker:30,snork:40
enemy_8 = controller:5,dog:-30,pseudodog:-15,snork:-50,tushkano:-80,chimera:-30
enemy_9 = tushkano:20,giant:10,zombie:5,burer:5,actor:10


oraz w zależności od odległości od niego:

Kod: Zaznacz wszystko
rsec_5 = 50,45,30,30,30,25,20,20,20,15,10,5
rsec_6 = 2,20,30,30,30,30,25,25,25,25,20,4
rsec_7 = 2,50,60,65,60,55,45,40,30,15,5, -20
rsec_8 = -100, -40,20,30,45,55,60,60,70,80,90,100,120,140,160,180,200,220,250,200
rsec_9 = 0,10,30,50,50,50,50,50,50,30,20,0


Czyli jeśli np. wpn_val = 34 oznacza to, iż NPC będzie używał tej broni wówczas gdy jest ona przypisana do określonego mutanta i w określonej odległości. Nie oznacza to, iż będzie używał tylko tej broni – NPC używa tego co akurat ma. Ten config służy temu, by mając wiele broni (NPC zbierają broń – ja spotkałem gościa z 9 giwerami) stalker wybrał najlepszą z posiadanej.
Awatar użytkownika
Freeman
Stalker

Posty: 140
Dołączenie: 23 Lip 2009, 19:17
Ostatnio był: 26 Maj 2010, 20:34
Miejscowość: Terra
Frakcja: Samotnicy
Ulubiona broń: VLA Special Assault Rifle
Kozaki: 3

Re: [AI Tuning mod] - więcej umiejętności NPC

Postprzez Brakiss w 19 Maj 2010, 13:55

A powiedzcie mi czy da się połączyć tego moda z modem "CutOut_Mutants_Returned" ? Przydał by się bo ledwo zacząłem a zombiaki wycięły połowę "Kordonu" innym razem wracam to samo...
Awatar użytkownika
Brakiss
Kot

Posty: 4
Dołączenie: 19 Maj 2010, 11:44
Ostatnio był: 11 Maj 2013, 10:55
Frakcja: Powinność
Ulubiona broń: Black Kite
Kozaki: 0

Re: [AI Tuning mod] - więcej umiejętności NPC

Postprzez Freeman w 19 Maj 2010, 14:11

Brakiss - CutOut Mutants Returned Mod jest na wersję 1.0003, a ten mod na 1.0004/1.0005 więc pliki trzeba przerabiać od nowa, za dużo roboty, poza tym pod patch 1.0003 jest niewiele modów. Moja rada: dorwij jakiś większy mod wprowadzający mutanty np. Oblivion Lost 2.2/ AMK 1.4/utAMK/ - w każdym razie na nowszą wersję gry. Ja osobiście nie mam czasu na przeróbkę, ale zapytaj modderów.
Awatar użytkownika
Freeman
Stalker

Posty: 140
Dołączenie: 23 Lip 2009, 19:17
Ostatnio był: 26 Maj 2010, 20:34
Miejscowość: Terra
Frakcja: Samotnicy
Ulubiona broń: VLA Special Assault Rifle
Kozaki: 3

Re: [AI Tuning mod] - więcej umiejętności NPC

Postprzez Szeks w 01 Lip 2010, 21:02

Ej a czy ten mod działa z oblivion lost ???

Uwagi moderatora:

Nie działa, chyba że sam go połączysz a to jest trudne zajęcie... - Matrix Strefa14
Awatar użytkownika
Szeks
Kot

Posty: 26
Dołączenie: 29 Cze 2010, 19:11
Ostatnio był: 30 Sty 2013, 13:13
Frakcja: Najemnicy
Ulubiona broń: FT 200M
Kozaki: 1

Re: [AI Tuning mod] - więcej umiejętności NPC

Postprzez scigacz1975 w 05 Lip 2010, 00:00

kurcze próbowałem to połączyć z abc sleep bag i ni gwizda. nie za mocny jestem w skryptach może mi coś podpowiesz.

:

FATAL ERROR

[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description : <no expression>
[error]Arguments : LUA error: ...e.r. - cień czarnobyla pl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)


stack trace:

Scheduler tried to update object escape_trader
cl setDestroy [90][11911]
cl setDestroy [91][11911]
cl setDestroy [93][11911]
cl setDestroy [94][11911]
cl setDestroy [95][11911]
cl setDestroy [96][11911]
! Invalid ogg-comment version, file: d:\s.t.a.l.k.e.r. - cień czarnobyla pl\gamedata\sounds\weapons\gauss_shoot.ogg
! Invalid ogg-comment version, file: d:\s.t.a.l.k.e.r. - cień czarnobyla pl\gamedata\sounds\weapons\n_l85_shot.ogg
! Invalid ogg-comment version, file: d:\s.t.a.l.k.e.r. - cień czarnobyla pl\gamedata\sounds\weapons\n_mp5_shot.ogg
! Missing ogg-comment, file: d:\s.t.a.l.k.e.r. - cień czarnobyla pl\gamedata\sounds\weapons\svu_silenced.ogg
! Invalid ogg-comment version, file: d:\s.t.a.l.k.e.r. - cień czarnobyla pl\gamedata\sounds\weapons\n_vintorez_shot.ogg
[16-9] get_xml_name for[game_tutorials.xml] returns [game_tutorials.xml]
[16-9] get_xml_name for[ui_credits.xml] returns [ui_credits.xml]
[16-9] get_xml_name for[ui_movies.xml] returns [ui_movies.xml]
Intro start 11934
* MEMORY USAGE: 280452 K

FATAL ERROR

[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description : <no expression>
[error]Arguments : LUA error: ...e.r. - cień czarnobyla pl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)


stack trace:

Scheduler tried to update object esc_dog_swarm_0001

FATAL ERROR

[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description : <no expression>
[error]Arguments : LUA error: ...e.r. - cień czarnobyla pl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)


stack trace:

Scheduler tried to update object esc_dog_swarm_0004

FATAL ERROR

[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description : <no expression>
[error]Arguments : LUA error: ...e.r. - cień czarnobyla pl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)


stack trace:

Scheduler tried to update object esc_dog_swarm_0007

FATAL ERROR

[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description : <no expression>
[error]Arguments : LUA error: ...e.r. - cień czarnobyla pl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)


stack trace:

Scheduler tried to update object esc_dog_swarm_0002

FATAL ERROR

[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description : <no expression>
[error]Arguments : LUA error: ...e.r. - cień czarnobyla pl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)


stack trace:

może cos spitoliłem w bind_stalker.script
:

function init (obj)
xr_motivator.AddToMotivator(obj)
end

function actor_init (npc)
npc:bind_object(actor_binder(npc))
end

local game_difficulty_by_num = {
[0] = "gd_novice",
[1] = "gd_stalker",
[2] = "gd_veteran",
[3] = "gd_master"
}

lasthealth = 0
lasttime = 0
post_process = 0
local weapon_hide = false
----------------------------------------------------------------------------------------------------------------------
class "actor_binder" (object_binder)
----------------------------------------------------------------------------------------------------------------------
function actor_binder:__init (obj) super(obj)
self.bCheckStart = false
self.weather_manager = level_weathers.WeatherManager()
self.actor_detector = xr_detector.actor_detector()
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:net_spawn(data)
printf("actor net spawn")

level.show_indicators()

self.bCheckStart = true
self.weapon_hide = false -- ńďđ˙ňŕíî čëč íĺň îđóćčĺ ďđč đŕçăîâîđĺ.
weapon_hide = false -- óńňŕíŕâëčâŕĺě ăëîáŕëüíűé äĺôîëňîâűé ôëŕă.

if object_binder.net_spawn(self,data) == false then
return false
end

db.add_actor(self.object)

if self.st.disable_input_time == nil then
level.enable_input()
end

self.weather_manager:reset()
-- game_stats.initialize ()

if(actor_stats.add_to_ranking~=nil)then
actor_stats.add_to_ranking(self.object:id())
end

--' Çŕăđóćŕĺě íŕńňđîéęč äđîďŕ
death_manager.init_drop_settings()
if xrs_ai then xrs_ai.actor_net_spawn(self) end
if rx_ai then
rx_ai.actor_net_spawn()
abc_sleep.uptabc("load")
return true
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:net_destroy()
if(actor_stats.remove_from_ranking~=nil)then
actor_stats.remove_from_ranking(self.object:id())
end
-- game_stats.shutdown ()
db.del_actor(self.object)

sr_light.clean_up ()

self.object:set_callback(callback.inventory_info, nil)
self.object:set_callback(callback.article_info, nil)
self.object:set_callback(callback.on_item_take, nil)
self.object:set_callback(callback.on_item_drop, nil)
--self.object:set_callback(callback.actor_sleep, nil)
self.object:set_callback(callback.task_state, nil)
self.object:set_callback(callback.level_border_enter, nil)
self.object:set_callback(callback.level_border_exit, nil)
self.object:set_callback(callback.take_item_from_box, nil)

if sr_psy_antenna.psy_antenna then
sr_psy_antenna.psy_antenna:destroy()
sr_psy_antenna.psy_antenna = false
end

xr_sound.stop_all_sound_object()

object_binder.net_destroy(self)
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:reinit()
object_binder.reinit(self)

local npc_id = self.object:id()

db.storage[npc_id] = { }

self.st = db.storage[npc_id]
self.st.pstor = nil

self.next_restrictors_update_time = -10000

self.object:set_callback(callback.inventory_info, self.info_callback, self)
self.object:set_callback(callback.article_info, self.article_callback, self)
self.object:set_callback(callback.on_item_take, self.on_item_take, self)
self.object:set_callback(callback.on_item_drop, self.on_item_drop, self)
self.object:set_callback(callback.trade_sell_buy_item, self.on_trade, self) -- for game stats
--self.object:set_callback(callback.actor_sleep, self.sleep_callback, self)
self.object:set_callback(callback.task_state, self.task_callback, self)
--self.object:set_callback(callback.map_location_added, self.map_location_added_callback, self)
self.object:set_callback(callback.level_border_enter, self.level_border_enter, self)
self.object:set_callback(callback.level_border_exit, self.level_border_exit, self)
self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self)
end


----------------------------------------------------------------------------------------------------------------------
function actor_binder:take_item_from_box(box, item)
local story_id = box:story_id()
if story_id == nil then
return
end

treasure_manager.take_item_from_box(box, story_id)
--[[
local respawner = se_respawn.get_respawner_by_parent(story_id)
if respawner == nil then
return
end

--' Íĺîáőîäčěî óěĺíüřčňü ń÷ĺň÷čę â đĺńďŕâíĺđĺ
respawner:remove_spawned(item:id())

local smart_terrain = db.strn_by_respawn[respawner:name()]
if smart_terrain == nil then
return
end

local npc = smart_terrain.gulag:get_nearest_online_obj(db.actor:position())
if npc ~= nil then
xr_sound.set_sound_play(npc, "reac_box")
xr_gulag.setGulagEnemy(smart_terrain:name() , db.actor)
end
]]
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:level_border_enter(npc, info_id)
self.actor_detector:actor_enter()
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:level_border_exit(npc, info_id)
self.actor_detector:actor_exit()
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:info_callback(npc, info_id)
printf("*INFO*: npc='%s' id='%s'", npc:name(), info_id)
--' Ńţćĺň
level_tasks.proceed(self.object)
-- Îňěĺňęč íŕ ęŕđňĺ
level_tasks.process_info_portion(info_id)
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:on_trade (item, sell_bye, money)
if sell_bye == true then
game_stats.money_trade_update (money)
else
game_stats.money_trade_update (-money)
end
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:article_callback(npc, group, name)
--printf("article_callback [%s][%s]", group, name)
if device().precache_frame >1 then return end

if group == "Diary" then
news_manager.send_encyclopedy("diary", group)
else
news_manager.send_encyclopedy("encyclopedy", group)
end
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:on_item_take (obj)
level_tasks.proceed(self.object)
if xrs_ai then xrs_ai.actor_item_take(obj) end
--game_stats.update_take_item (obj, self.object)
if rx_ai then
rx_ai.actor_item_take(obj)
end
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:on_item_drop (obj)
level_tasks.proceed(self.object)
--game_stats.update_drop_item (obj, self.object)
abc_sleep.uptabc(obj)
end
----------------------------------------------------------------------------------------------------------------------

function actor_binder:task_callback(_task, _objective, _state)
task_manager.task_callback(_task:get_id(), _objective:get_idx(), _state)
if _objective:get_idx() == 0 then
if _state == task.fail then
news_manager.send_task(db.actor, "fail", _task, _objective)
elseif _state == task.completed then
task_manager.reward_by_task(_task)
news_manager.send_task(db.actor, "complete", _task, _objective)
else
news_manager.send_task(db.actor, "new", _task, _objective)
end
else
if _task:get_objective(0):get_state() == task.in_progress then
news_manager.send_task(db.actor, "update", _task, _objective)
end
end
end

----------------------------------------------------------------------------------------------------------------------
function actor_binder:map_location_added_callback(spot_type_str, object_id)
if (false==app_ready()) or (device().precache_frame>1) then return end
--'news_manager.send_task(db.actor, "new")
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:update(delta)
object_binder.update(self, delta)
-- DEBUG slowdown
-- slowdown.update()

local time = time_global()

game_stats.update (delta, self.object)

-- ŕďäĺéň ďîăîäű
self.weather_manager:update()

-- ŕďäĺéň ńőĺěű äĺňĺęňîđŕ
self.actor_detector:update()

-- ŕďäĺéň çâóęîâîé ńőĺěű ŕęňĺđŕ
xr_sound.update_actor()

--' Ďđîâĺđęŕ ďîňĺđč ćčçíč
--[[
if self.object.health - lasthealth > 0.001 or
self.object.health - lasthealth < -0.001 then
printf("%f | %f", self.object.health, self.object.health - lasthealth, game.time() - lasttime)
lasthealth = self.object.health
lasttime = game.time()
end
]]
-- Îáíîâëĺíčĺ îňęëţ÷ĺíč˙ ââîäŕ ń ęëŕâčŕňóđű.
if self.st.disable_input_time ~= nil and
game.get_game_time():diffSec(self.st.disable_input_time) >= self.st.disable_input_idle
then
level.enable_input()
self.st.disable_input_time = nil
end
-- Îáíîâëĺíčĺ ńíŕ ń ďĺđĺíîńîě ÷óâŕęŕ â óęŕçŕííóţ ďîçčöčţ
if self.st.sleep_relocate_time ~= nil and
game.get_game_time():diffSec(self.st.sleep_relocate_time) >= self.st.sleep_relocate_idle
then
self.object:set_actor_position(self.st.sleep_relocate_point)
local dir = self.st.sleep_relocate_point:sub(self.st.sleep_relocate_look)
self.object:set_actor_direction(dir:getH())
self.st.sleep_relocate_time = nil
end

-- Ŕďäĺéň ďđ˙ňŕíčĺ îđóćč˙ čăđîęŕ âî âđĺě˙ äčŕëîăŕ
if weapon_hide == true or self.object:is_talking() then
if self.weapon_hide == false then
self.object:hide_weapon()
self.weapon_hide = true
end
else
if self.weapon_hide == true then
self.object:restore_weapon()
self.weapon_hide = false
end
end

-- îáíîâëĺíčĺ đĺńňđčęňîđîâ, ęîňîđűĺ ďîä ëîăčęîé, ńđŕáŕňűâŕĺň ÷ĺđĺç číňĺđâŕëű âđĺěĺíč
if self.next_restrictors_update_time < time then
bind_restrictor.actor_update(delta)

self.next_restrictors_update_time = time + 200

task_manager.actor_update()
end

-- îáíîâëĺíčĺ ďîńňďđîöĺńńîâ
if post_process ~= 0 then
if post_process:update () == true then
post_process = 0
end
end

-- îáíîâëĺíčĺ ďńč-ŕíňĺííű
if sr_psy_antenna.psy_antenna then
sr_psy_antenna.psy_antenna:update(delta)
end

--' Âűâîä ńîîáůĺíč˙ î áîëüřîé đŕäčŕöčč
if self.object.radiation >= 0.7 then
local hud = get_hud()
local custom_static = hud:GetCustomStatic("cs_radiation_danger")
if custom_static == nil then
hud:AddCustomStatic("cs_radiation_danger", true)
hud:GetCustomStatic("cs_radiation_danger"):wnd():SetTextST("st_radiation_danger")
end
else
local hud = get_hud()
local custom_static = hud:GetCustomStatic("cs_radiation_danger")
if custom_static ~= nil then
hud:RemoveCustomStatic("cs_radiation_danger")
end
end



if self.bCheckStart then
printf("SET DEFAULT INFOS")

if not has_alife_info("storyline_actor_start") and
(level.name() == "l01_escape")
then
self.object:give_info_portion("storyline_actor_start")
_G.g_start_avi = true
printf("*AVI* RUN START AVI")
end

-- if not has_alife_info("encyclopedy") then
-- self.object:give_info_portion("encyclopedy")
-- end

if not has_alife_info("global_dialogs") then
self.object:give_info_portion("global_dialogs")
end

if not has_alife_info("level_changer_icons") then
self.object:give_info_portion("level_changer_icons")
end

level_tasks.add_lchanger_location()

self.bCheckStart = false
end
abc_sleep.uptabc("abc")
--if not self.particle then
-- self.particle = particles_object([[weather\water]])
-- self.particle:play_at_pos(self.object:position())
--else
--self.particle:move_to(self.object:position():add(vector():set(0,1,0)),vector():set(0,0,0))
--end
if rx_ai then rx_ai.actor_update() end
if xrs_ai then xrs_ai.actor_update(delta) end
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:save(packet)
printf("actor_binder:save(): self.object:name()='%s'", self.object:name())
object_binder.save(self, packet)

--' Ńîőđŕí˙ĺě óđîâĺíü ńëîćíîńňč
packet:w_u8(level.get_game_difficulty())


--' Ńîőđŕí˙ĺě äŕííűĺ îá îňęëţ÷ĺííîě ââîäĺ
if self.st.disable_input_time == nil then
packet:w_bool(false)
else
packer:w_bool(true)
utils.w_CTime(packet, self.st.disable_input_time)
end

xr_logic.pstor_save_all(self.object, packet)
self.weather_manager:save(packet)

sr_psy_antenna.save( packet )

if save_treasure_manager == true then
treasure_manager.save(packet)
end

task_manager.save(packet)
self.actor_detector:save(packet)
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:load(reader)
printf("actor_binder:load(): self.object:name()='%s'", self.object:name())
object_binder.load(self, reader)
printf("actor_binder:object_binder.load(): self.object:name()='%s'", self.object:name())

--' Çŕăđóćŕĺě óđîâĺíü ńëîćíîńňč
local game_difficulty = reader:r_u8()
get_console():execute("g_game_difficulty "..game_difficulty_by_num[game_difficulty])

if reader:r_eof() then
abort("SAVE FILE IS CORRUPT")
end

local stored_input_time = reader:r_u8()
if stored_input_time == true then
self.st.disable_input_time = utils.r_CTime(reader)
end

xr_logic.pstor_load_all(self.object, reader)
self.weather_manager:load(reader)

sr_psy_antenna.load(reader)
task_manager.load(reader)
self.actor_detector:load(reader)
end
----------------------------------------------------------------------------------------------------------------------

--ńňŕđň ďđĺôĺň÷ŕ çâóęîâ
--if string.find(command_line(), "-noprefetch") == nil then
-- sound_prefetch.prefetch_sounds()
--end


-- Weapon functions
function hide_weapon()
weapon_hide = true
end
function restore_weapon()
weapon_hide = false
end

// this is test for section iteration
/**
local function test_section_iteration(file_name, section_name)
printf ("file : %s",file_name)
printf ("section : %s",section_name)

local file = ini_file(file_name)
local n = file:line_count(section_name)
printf ("lines : %d",n)

local id, value = "", "", result
for i=0,n-1 do
result, id, value = file:r_line(section_name,i,"","")
printf ("line %d : %s = %s",i,id,value)
end
end

test_section_iteration("system.ltx","space_restrictor")
/**/



Jeżeli to poprawisz to wielka dziękuwa

-----------------------------------

zapomniałem dodać że mam 1.0006 może tu jest przyczyna???

spróbowałem trochę inaczej to połączyć i startuje nowa gra ale tylko do momentu kiedy sidorovych ma się odezwać wtedy wywala

tu log
FATAL ERROR

[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description : <no expression>
[error]Arguments : LUA error: ...e.r. - cień czarnobyla pl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)


stack trace:

Uwagi moderatora:

Długie logi lub fragmenty plików dajemy w spojler, po za tym nie dubluj postów - Matrix Strefa14
Awatar użytkownika
scigacz1975
Monolit

Posty: 3243
Dołączenie: 29 Sty 2010, 00:26
Ostatnio był: 28 Gru 2022, 19:35
Miejscowość: Stalowa Wola
Frakcja: Samotnicy
Ulubiona broń: --
Kozaki: 926

Re: [AI Tuning mod] - więcej umiejętności NPC

Postprzez utak3r w 09 Lip 2010, 00:22

Daj dłuższy fragment logu, bo akurat ten fatal error nic nie mówi.
A co do pytania wyżej: mutanty masz np. w utAMKu, którego i tak nie będziesz musiał łączyć z tą paczką, ponieważ tak na oko wszystko powinno już tam być :)
Image
Awatar użytkownika
utak3r
Modder

Posty: 2200
Dołączenie: 11 Lis 2009, 18:15
Ostatnio był: 31 Lip 2023, 16:01
Miejscowość: Szczecin
Frakcja: Powinność
Ulubiona broń: GP 37
Kozaki: 376

Re: [AI Tuning mod] - więcej umiejętności NPC

Postprzez scigacz1975 w 11 Lip 2010, 05:18

Ok już poradziłem. Nie ma wszystkich możliwości (albo jeszcze ich nie przyuważyłem) ale większość jest więc jest git.
Awatar użytkownika
scigacz1975
Monolit

Posty: 3243
Dołączenie: 29 Sty 2010, 00:26
Ostatnio był: 28 Gru 2022, 19:35
Miejscowość: Stalowa Wola
Frakcja: Samotnicy
Ulubiona broń: --
Kozaki: 926

Re: [AI Tuning mod] - więcej umiejętności NPC

Postprzez Platfus w 22 Sie 2010, 00:25

Mam pytanie czy będą jeszcze dodane jakieś umiejętności bo mam jedną, a konkretnie chodzi o , zbieranie artefaktów przez innych stalkerów? :D
Platfus
Kot

Posty: 11
Dołączenie: 31 Lip 2010, 15:17
Ostatnio był: 11 Maj 2019, 04:08
Miejscowość: Gdańsk
Frakcja: Samotnicy
Ulubiona broń: Striker
Kozaki: 0

Re: [AI Tuning mod] - więcej umiejętności NPC

Postprzez kolokolo98 w 17 Paź 2011, 19:41

Freeman napisał(a):7) Niektóre granaty mogą nie wybuchnąć.


No ciekawe, u mnie albo NPC używają granatów - szajsów, albo są tak zapominalscy, że nie odciągają zawleczki, bo każdy granat nie wybucha :D .
Po walce całą minimapkę mam osraną w symbolach granatów, które mogę se do woli pozbierać :P

Ogólnie mod robi różnicę, wrogowie nie stoją na środku mapy tylko się kryją i do tego kucają - i częsta próbują okrążać i zachodzić od tyłu przez co nieraz zginąłem :P . Kolbą potrafią prywalić i jeszcze broń wypada, co jest bardzo uciążliwe.
Image
"Today I didn't even have to use my AK
I gotta say it was a good day"
Awatar użytkownika
kolokolo98
Tropiciel

Posty: 267
Dołączenie: 08 Mar 2011, 18:34
Ostatnio był: 22 Kwi 2018, 18:14
Miejscowość: Warszawa
Frakcja: Samotnicy
Ulubiona broń: Sniper Rifle SVDm2
Kozaki: 22

PoprzedniaNastępna

Powróć do Cień Czarnobyla

Kto jest na forum

Użytkownicy przeglądający to forum: svt07 oraz 4 gości