LOL, scusa, hai ragione -.-' Sto uscendo di testa.
SoC. E ti chiedo qualche informazione in più riguardo un problema che non riesco a risolvere. Sto cercando di rendere compatibile il mod Faction Wars (quello che rende liberi i png di spostarsi un po' ovunque a caso) e il Complete 2009. In realtà tutto sembra funzionare benissimo anche sovrascrivendo il FW sul Complete 2009.
L'unico problema è che se becco un nemico al Bar (es.: un bandito o un Monolith) e lo uccido, immediatamente scatta l'allarme e tutti gli stalker presenti nell'area mi diventano ostili.
Ti viene in mente su quali files dovrei lavorare per eliminare questo fastidioso inconveniente?
lo ho notato anche io è veramnete fastidioso..praticamente mi son ritrovato al bar mentre c'era un attacco di banditi erano veramente tanti e sono stato costretto a passare dal bar correndo come un pazzoLOL, scusa, hai ragione -.-' Sto uscendo di testa.
SoC. E ti chiedo qualche informazione in più riguardo un problema che non riesco a risolvere. Sto cercando di rendere compatibile il mod Faction Wars (quello che rende liberi i png di spostarsi un po' ovunque a caso) e il Complete 2009. In realtà tutto sembra funzionare benissimo anche sovrascrivendo il FW sul Complete 2009.
L'unico problema è che se becco un nemico al Bar (es.: un bandito o un Monolith) e lo uccido, immediatamente scatta l'allarme e tutti gli stalker presenti nell'area mi diventano ostili.
Ti viene in mente su quali files dovrei lavorare per eliminare questo fastidioso inconveniente?
premetto che di modding non conosco niente ma se serve un aiuto qualsiasi..tipo testare se funziona la modifica o roba del genere posso essere di aiuto. tanto ormai ho disinstallato e installato Soc talmente tante volte che ci ho fatto l'abitudine
Allora procedendo con ordine, il programma per aprire l'all.spawn lo trovi quà http://sdk.stalker-game.com/en/index...ting_all.spawn con tanto di guida scritta da me (in inglese).
Per il problema del bar è un fatto di logica degli npc, in pratica quando si spara a qualcuno nel territorio del bar dovrebbe scattare un allarme che ti rende tutti nemici, se ricordo bene. Devi dare un'occhiata alla logica degli npcs lì presenti
Si ma con pure con soc liscio è capitato che ho trovato 3 mercenari che mi sapracchiavano, io ho risposto al fuoco, e tutti al bar sono diventati ostili.
Aspetta, mi sopravvaluti!
"Dare un'occhiata alla logica degli npc" è un concetto privo di significato per me: devi avere pazienza, io so poco o nulla di modding. Il fatto è che ho visto rilasciate alcune versioni del Faction Wars "rese compatibili", ad esempio, col megamod Oblivion Lost 2.2. Quindi mi chiedevo se fosse possibile - in modi e metodi relativamente facili - realizzare qualcosa di simile per il Complete 2009.
Il fatto che i png del Bar se la prendano se io killo qualcuno nel Bar - sia anche un Bandito - posso capirlo; capisco già meno come io possa intervenire sui files del gioco (parliamo solo del all.spawn o potrebbero essere coinvolti anche altri files?); ancora meno capisco come sia possibile che il Faction Wars "liscio" non causi questo problema mentre se sovrascritto sul Complete 2009, sì :p
Grazie per qualsiasi ulteriore aiuto o chiarimento.
@spetsnaz: Lieto di essere in gradita compagnia! Per lo meno non si tratta di un problema mio personale. Speriamo di risolvere la cosa al più presto, in un modo o nell'altro!
Ah, ora che mi viene in mente (magari può essere utile): io ho provato a sovrascrivere il FW 1.0 originale cambiando poi il file all.spawn e mettendo rispettivamente:
1- Quello del Complete 2009 originale.
2- Quello compatibile col ZRP.
3- Quello "liscio" del FW.
In tutti e tre i casi mi è saltato fuori il problema descritto sopra.
Edito:
Ah. *panico*
Ultima modifica di Darimar; 06-07-10 alle 23:47:03 Motivo: panico
La funzione che principalmente governa la logica degli NPC al bar è presente nel file xr_effect.script e si chiama:
function bar_territory_logic(actor,npc)
da li gestisci in base alle infoportion ciò che deve accadere.
Poi ci srebbero i file dei gulag ma li non dirti niente purtroppo
Ultima modifica di Boris47; 07-07-10 alle 20:15:35
Si ma se l'all.spawn del FW non è compatibile con quelli del complete 2009+zrp, non concludi nulla perché sovrascrivendolo con quello del FW annulli le modifiche del complete... non sò se mi spiego.Aspetta, mi sopravvaluti!
"Dare un'occhiata alla logica degli npc" è un concetto privo di significato per me: devi avere pazienza, io so poco o nulla di modding. Il fatto è che ho visto rilasciate alcune versioni del Faction Wars "rese compatibili", ad esempio, col megamod Oblivion Lost 2.2. Quindi mi chiedevo se fosse possibile - in modi e metodi relativamente facili - realizzare qualcosa di simile per il Complete 2009.
Il fatto che i png del Bar se la prendano se io killo qualcuno nel Bar - sia anche un Bandito - posso capirlo; capisco già meno come io possa intervenire sui files del gioco (parliamo solo del all.spawn o potrebbero essere coinvolti anche altri files?); ancora meno capisco come sia possibile che il Faction Wars "liscio" non causi questo problema mentre se sovrascritto sul Complete 2009, sì :p
Grazie per qualsiasi ulteriore aiuto o chiarimento.
@spetsnaz: Lieto di essere in gradita compagnia! Per lo meno non si tratta di un problema mio personale. Speriamo di risolvere la cosa al più presto, in un modo o nell'altro!
Ah, ora che mi viene in mente (magari può essere utile): io ho provato a sovrascrivere il FW 1.0 originale cambiando poi il file all.spawn e mettendo rispettivamente:
1- Quello del Complete 2009 originale.
2- Quello compatibile col ZRP.
3- Quello "liscio" del FW.
In tutti e tre i casi mi è saltato fuori il problema descritto sopra.
Edito:
Ah. *panico*
Soluzione alternativa: chiedete una versione compatibile all'autore del FW jamie1992, anzi se lo becco in chat glielo chiedo di persona
Grazie mille per i chiarimenti. Effettivamente è stata rilasciata una versione del all.spawn mergeata col ZRP e la sto provando proprio in questi giorni (sfortunatamente non ho ancora beccato nemici al Bar, quindi non so bene come andrà). Proverò anche a dare un'occhiata al file segnalato da Boris. Grazie ancora per l'interessamento.
Darimar potresti dirmi dove scaricare questo file cosi faccio qualche test pure io?
Forse ho trovato il metodo per il tuo problema Darimar, ed ancher il modo di cominciare a metter mani al codice qualora tu volessi.
In primis ti serve il Notepad C++ o il semplice blocco note.
Generalmente se tu uccidi un PNG al bar, pur essendo tuo nemico, allerti tutti gli stalker la prima volta.
La seconda volta che tu uccidi qualcuno già alcuni stalker ti diventano ostili.
La terza volta praticamente tutti gli stalker nell'area ti sono ostili.
Quindi dobbiamo fare in modo che se tu uccidi o un bandito, o un mercenario o un monolith o un militare questo meccanismo non si debba attivare.
Ora passiamo ai fatti.
Nella cartella script c'è un file chiamato bind_monster.script;
Al suo interno trovi questa funzione "function generic_object_binder:death_callback(victim, who)"
e diciamo che qualunque cosa animata strelok uccida passa da qui.
Ora prova ad inserire questa riga all' interno della funzione:
e salva il file.Codice:xr_effects.get_community(self.object)
Adesso vai al file nella stessa cartella chiamato xr_effects.script e all'inizio del file prima di qualunque altra cosa questa funzione:
Adesso siamo alla fine del lavoro, nello stesso xr_effects.script trova questa funzione:Codice:function get_community(obj) local rel = obj:relation(db.actor) if rel == game_object.enemy and not obj:character_community() == "dolg" or obj:character_community() == "bandit" or obj:character_community() == "killer" or obj:character_community() == "monolith" or obj:character_community() == "military" then return true else return false end end
Questa è solo una parte di quella funzione che ti dicevo,Codice:function bar_territory_logic(actor, npc) local level = level.name() if level == "l05_bar" then if dialogs.actor_in_dolg(actor,npc) then if has_alife_info("bar_dolg_territory_kill") then news_manager.send_tip(actor, "bar_territory_dolg_kill", nil, "dolg", nil, 507) xr_gulag.setGulagEnemy("bar_dolg_general", db.actor) xr_gulag.setGulagEnemy("bar_dolg_veterans", db.actor) xr_gulag.setGulagEnemy("bar_dolg_bunker", db.actor) xr_gulag.setGulagEnemy("bar_dolg_zastava", db.actor) xr_gulag.setGulagEnemy("bar_dolg_zastava_2", db.actor) xr_gulag.setGulagEnemy("bar_visitors", db.actor) return end
sostituiscila completamente con questa:
In buona sostanza ogni cosa che ti è ostile al bar la puoi uccidere senza far scattare gli allarmi, ma deve esser nemico di suo nei tuoi confronti.Codice:function bar_territory_logic(actor, npc) local level = level.name() if level == "l05_bar" then if dialogs.actor_in_dolg(actor,npc) then if has_alife_info("bar_dolg_territory_kill") and not get_community() then news_manager.send_tip(actor, "bar_territory_dolg_kill", nil, "dolg", nil, 507) xr_gulag.setGulagEnemy("bar_dolg_general", db.actor) xr_gulag.setGulagEnemy("bar_dolg_veterans", db.actor) xr_gulag.setGulagEnemy("bar_dolg_bunker", db.actor) xr_gulag.setGulagEnemy("bar_dolg_zastava", db.actor) xr_gulag.setGulagEnemy("bar_dolg_zastava_2", db.actor) xr_gulag.setGulagEnemy("bar_visitors", db.actor) return end if has_alife_info("bar_dolg_territory_3_hit") and not get_community() then news_manager.send_tip(actor, "bar_territory_dolg_3_hit", nil, "dolg", nil, 507) xr_gulag.setGulagEnemy("bar_dolg_general", db.actor) xr_gulag.setGulagEnemy("bar_dolg_veterans", db.actor) xr_gulag.setGulagEnemy("bar_dolg_bunker", db.actor) xr_gulag.setGulagEnemy("bar_dolg_zastava", db.actor) xr_gulag.setGulagEnemy("bar_dolg_zastava_2", db.actor) return end if has_alife_info("bar_dolg_territory_2_hit") and not get_community() then news_manager.send_tip(actor, "bar_territory_dolg_2_hit", nil, "dolg", nil, 507) return end if has_alife_info("bar_dolg_territory_1_hit") and not get_community() then news_manager.send_tip(actor, "bar_territory_dolg_1_hit", nil, "dolg", nil, 507) return end else if has_alife_info("bar_dolg_territory_kill") and not get_community() then db.actor:give_info_portion("bar_territory_nodolg_kill") news_manager.send_tip(actor, "bar_territory_nodolg_kill", nil, "dolg", nil, 507) xr_gulag.setGulagEnemy("bar_dolg_general", db.actor) xr_gulag.setGulagEnemy("bar_dolg_veterans", db.actor) xr_gulag.setGulagEnemy("bar_dolg_bunker", db.actor) xr_gulag.setGulagEnemy("bar_dolg_zastava", db.actor) xr_gulag.setGulagEnemy("bar_dolg_zastava_2", db.actor) xr_gulag.setGulagEnemy("bar_visitors", db.actor) return end if has_alife_info("bar_dolg_territory_2_hit") and not get_community() then db.actor:give_info_portion("bar_territory_nodolg_2_hit") news_manager.send_tip(actor, "bar_territory_nodolg_2_hit", nil, "dolg", nil, 507) xr_gulag.setGulagEnemy("bar_dolg_general", db.actor) xr_gulag.setGulagEnemy("bar_dolg_veterans", db.actor) xr_gulag.setGulagEnemy("bar_dolg_bunker", db.actor) xr_gulag.setGulagEnemy("bar_dolg_zastava", db.actor) xr_gulag.setGulagEnemy("bar_dolg_zastava_2", db.actor) xr_gulag.setGulagEnemy("bar_visitors", db.actor) return end if has_alife_info("bar_dolg_territory_1_hit") and not get_community() then db.actor:give_info_portion("bar_territory_nodolg_1_hit") news_manager.send_tip(actor, "bar_territory_nodolg_1_hit", nil, "dolg", nil, 507) return end end end return end
Prova e fammi sapere, sono sicuro che funonzia
Ultima modifica di Boris47; 08-07-10 alle 11:26:13
Fantastico, Boris, sei stato gentilissimo! Farò una prova al più presto seguendo i tuoi suggerimenti, grazie mille.
@spetsnaz:
Ecco il thread:
http://gsc-game.com/main.php?t=commu...&page=1#304992
ciao boris grazie mille
senti ma settando quello che hai fatto tu per esempio se io aggiungo anche la freedom
qui
la freedom sarà nemica verso i miei confronti o nei confronti del bar? perchè se x esempio mi unisco alla duty e la freedom attacca al bar e io li freddo i duty si fanno nemici e preferirei che ciò non succeda.Codice:function get_community(obj) local rel = obj:relation(db.actor) if rel == game_object.enemy and not obj:character_community() == "dolg" or obj:character_community() == "bandit" or obj:character_community() == "killer" or obj:character_community() == "monolith" or obj:character_community() == "military" then return true else return false end end
@Darimar grazie del link
Ultima modifica di spetsnaz; 08-07-10 alle 12:25:17
Si, se li killerai non verrai penalizzato al bar:ciao boris grazie mille
senti ma settando quello che hai fatto tu per esempio se io aggiungo anche la freedom
qui
la freedom sarà nemica verso i miei confronti o nei confronti del bar? perchè se x esempio mi unisco alla duty e la freedom attacca al bar e io li freddo i duty si fanno nemici e preferirei che ciò non succeda.Codice:function get_community(obj) local rel = obj:relation(db.actor) if rel == game_object.enemy and not obj:character_community() == "dolg" or obj:character_community() == "bandit" or obj:character_community() == "killer" or obj:character_community() == "monolith" or obj:character_community() == "military" then return true else return false end end
@Darimar grazie del link
e il gioco è fatto.Codice:function get_community(obj) local rel = obj:relation(db.actor) if rel == game_object.enemy and not obj:character_community() == "dolg" or obj:character_community() == "bandit" or obj:character_community() == "killer" or obj:character_community() == "freedom" or obj:character_community() == "monolith" or obj:character_community() == "military" then return true else return false end end
Ma l'hai provato il codice?
Funziona bene???
sinceramente sto giocando e giocando ma non la stanno attaccando la base spero oggi di avere + fortuna
cmq grazie ancora
EDIT:
quando arrivo al bar e fuori c'è qualcuno che spara ma non sono riuscito a identificarlo mi crasha il gioco probabilmente ho sbagliato a inserire qualche stringa penso questa
xr_effects.get_community(self.object)
comunque la inserisco va bene ? o va inserito all'interno della funzione in un modo particolare? scusami per tutte ste domande ma nel settore non sono molto ferrato
Ultima modifica di spetsnaz; 09-07-10 alle 10:30:41
Questa è l'intera funzione che trovo:Nella cartella script c'è un file chiamato bind_monster.script;
Al suo interno trovi questa funzione "function generic_object_binder:death_callback(victim, who)"
e diciamo che qualunque cosa animata strelok uccida passa da qui.
Ora prova ad inserire questa riga all' interno della funzione:
e salva il file.Codice:xr_effects.get_community(self.object)
A che livello devo copia/incollare la nuova riga che mi hai proposto?Codice:function generic_object_binder:death_callback(victim, who) if who:id() == db.actor:id() then xr_statistic.addKillCount(self.object) end if self.st.mob_death then xr_logic.issue_event(self.object, self.st.mob_death, "death_callback", victim, who) end if self.st.active_section then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "death_callback", victim, who) end smart_terrain.on_death( self.object:id() ) --' Íàíîñèì íåáîëüøîé èìïóëüñ âïåðåä. local h = hit() h.draftsman = self.object h.type = hit.fire_wound h.direction = db.actor:position():sub(self.object:position()) h:bone("pelvis") h.power = 1 h.impulse = 10 self.object:hit(h) if table.getn(self.particles) > 0 then for kk,vv in pairs(self.particles) do vv:on_death() end end end
Mi sapresti dire meglio cosa intendi con "Al bar e fuori c'è qualcuno che spara"?? "Identificarlo" vuoi dire che non sai a che fazione appartiene??
quando arrivo al bar e fuori c'è qualcuno che spara ma non sono riuscito a identificarlo mi crasha il gioco probabilmente ho sbagliato a inserire qualche stringa penso questa
xr_effects.get_community(self.object)
comunque la inserisco va bene ? o va inserito all'interno della funzione in un modo particolare? scusami per tutte ste domande ma nel settore non sono molto ferrato
In teoria prima di un if e dopo un end quindi già traQuesta è l'intera funzione che trovo:
A che livello devo copia/incollare la nuova riga che mi hai proposto?Codice:function generic_object_binder:death_callback(victim, who) if who:id() == db.actor:id() then xr_statistic.addKillCount(self.object) end if self.st.mob_death then xr_logic.issue_event(self.object, self.st.mob_death, "death_callback", victim, who) end if self.st.active_section then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "death_callback", victim, who) end smart_terrain.on_death( self.object:id() ) --' Íàíîñèì íåáîëüøîé èìïóëüñ âïåðåä. local h = hit() h.draftsman = self.object h.type = hit.fire_wound h.direction = db.actor:position():sub(self.object:position()) h:bone("pelvis") h.power = 1 h.impulse = 10 self.object:hit(h) if table.getn(self.particles) > 0 then for kk,vv in pairs(self.particles) do vv:on_death() end end end
va beneCodice:end if self.st.mob_death then
così:
Codice:function generic_object_binder:death_callback(victim, who) if who:id() == db.actor:id() then xr_statistic.addKillCount(self.object) end xr_effects.get_community(self.object) -- LA NOSTRA RIGA if self.st.mob_death then xr_logic.issue_event(self.object, self.st.mob_death, "death_callback", victim, who) end if self.st.active_section then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "death_callback", victim, who) end smart_terrain.on_death( self.object:id() ) --' Íàíîñèì íåáîëüøîé èìïóëüñ âïåðåä. local h = hit() h.draftsman = self.object h.type = hit.fire_wound h.direction = db.actor:position():sub(self.object:position()) h:bone("pelvis") h.power = 1 h.impulse = 10 self.object:hit(h) if table.getn(self.particles) > 0 then for kk,vv in pairs(self.particles) do vv:on_death() end end end
Ultima modifica di Boris47; 09-07-10 alle 12:14:45
esatto non riesco a identificare chi sta sparando mi avvicino un po verso il primo avamposto duty cioè quello che incontri venendo dalla discarica e subito il gioco crasha penso perchè ho incollato male qualche cosa mo riprovo e vediamo
Quindi il gioco ha un CTD quando sei nel Garbage( Discarica)??
Mi faresti vedere cosa esce scritto nel log?
no nella discarica al bar al primo avamposto duty quello vicino alla tana dei cani, dove ci sono gli zombi impiccati x intenderci cmq questo è il log
Codice:FATAL ERROR [error]Expression : fatal error [error]Function : CIni_IdToIndex<1,struct COMMUNITY_DATA,class shared_str,int,class CHARACTER_COMMUNITY>::GetByIndex [error]File : e:\stalker\patch_1_0004\xr_3da\xrgame\ini_id_loader.h [error]Line : 147 [error]Description : <no expression> [error]Arguments : item by index not found in section game_relations, line communities stack trace:
Allora modifichiamo questa riga in bind_monster.script:
Codice:xr_effects.get_community(self.object:id) -- LA NOSTRA RIGA
Mentre in xr_effects.script Proviamo a modificare questa parte così:
Ora dovrebbe funzionare bene, se crasha di nuovo riposta il log come prima per favore.Codice:function get_community(npc_id) local obj=level.object_by_id(npc_id) if not obj then return false elseif obj and IsStalker(obj) then if (obj:relation(db.actor) == game_object.enemy and not obj:character_community() == "dolg") or obj:character_community() == "bandit" or obj:character_community() == "killer" or obj:character_community() == "freedom" or obj:character_community() == "monolith" or obj:character_community() == "zombied" or obj:character_community() == "military" then return true else return false end end end
Io non sono molto esperto in questo genere di cose e spero riusciate a capirmi
idem :(
domani provo a reinstallare la mod
Codice:FATAL ERROR [error]Expression : fatal error [error]Function : CIni_IdToIndex<1,struct COMMUNITY_DATA,class shared_str,int,class CHARACTER_COMMUNITY>::GetByIndex [error]File : e:\stalker\patch_1_0004\xr_3da\xrgame\ini_id_loader.h [error]Line : 147 [error]Description : <no expression> [error]Arguments : item by index not found in section game_relations, line communities
@Darimar
Ho chiesto a jamie, mi ha detto che lui non ho fatto niente in merito, può essere che qualcuno l'abbia fatto al posto suo ma non ne è sicuro...
Hai messo mano a qualche file ltx? tipo il file game_relations.ltx?idem :(
domani provo a reinstallare la mod
Codice:FATAL ERROR [error]Expression : fatal error [error]Function : CIni_IdToIndex<1,struct COMMUNITY_DATA,class shared_str,int,class CHARACTER_COMMUNITY>::GetByIndex [error]File : e:\stalker\patch_1_0004\xr_3da\xrgame\ini_id_loader.h [error]Line : 147 [error]Description : <no expression> [error]Arguments : item by index not found in section game_relations, line communities
Yeah. L'autore è un certo ExoStalker sul forum GSC:
http://gsc-game.com/index.php?t=comm...c_id=16&page=1
Lui sostiene di aver mergeato l'all.spawn del Faction Wars con l'all.spawn del ZRP R11 RC3.
Ora, premetto che non so quale versione del ZRP sia presente nel Complete 2009 1.4.4 e che, apparentemente, anche l'all.spawn del Faction Wars 1.0 "liscio" SEMBRA funzionare bene se sovrascritto brutalmente sopra al gamedata del Complete 2009.
Rimane comunque il fatto che sovrascrivendo l'all.spawn originale del FW 1.0 ho notato un certo "dinamismo" in più (es.: appena arrivo al Bar mi sono trovato un gruppo di Monolith che lo stavano attraversando. Ovviamente, appena ho aperto il fuoco e ne ho ucciso uno, l'intero Bar mi si è rivoltato contro!). Con l'all.spawn mergeato col ZRP di cui sopra, questo "dinamismo" non sembra comparire: ho trascorso giorni - in game - senza che alcuna Fazione passasse per il Bar.
Queste le mie impressioni e i miei dati "certi" raccolti a oggi.
Ringrazio ancora Boris per la pazienza e il supporto: fra me e spetsnaz spero riusciremo a collaudare adeguatamente gli smanettamenti che ci proponete!
Spero di potermi sdebitare, in qualche modo, in futuro.
idem :(
domani provo a reinstallare la mod
Codice:FATAL ERROR [error]Expression : fatal error [error]Function : CIni_IdToIndex<1,struct COMMUNITY_DATA,class shared_str,int,class CHARACTER_COMMUNITY>::GetByIndex [error]File : e:\stalker\patch_1_0004\xr_3da\xrgame\ini_id_loader.h [error]Line : 147 [error]Description : <no expression> [error]Arguments : item by index not found in section game_relations, line communitiesCredo che non riesca a trovare l'ID per risalire alla comunità d'appartenenza
[error]Function : CIni_IdToIndex<1,struct COMMUNITY_DATA,class shared_str,int,class CHARACTER_COMMUNITY>::GetByIndex
[error]Arguments : item by index not found
dovrei aver risolto avendo aggiunto questa riga alla funzione:Codice:function get_community(npc_id) local obj=level.object_by_id(npc_id) if not obj then return false
Ultima modifica di Boris47; 10-07-10 alle 07:29:04