(problemi risolti, lol)
(problemi risolti, lol)
Ultima modifica di xdiesp; 16-08-09 alle 11:58:52
Nuovo quesito: andò sta il codice che stabilisce la memoria della posizione del giocatore nella testa dei nemici?
in qualche dll... comunque scherzi a parte, i nemici di ogni npc sono registrati in una specie di pila che puoi accedere con il metodo enable_memory_object
Ho provato a modificare xr_danger.script, ma quando gli npc passano alla logica "interna" (cioè monolith e camper) se ne fregano dei miei cambiamenti.
Quindi opzione 2: come faccio a cambiare i valori di m_stalker.ltx in diretta dal gioco? Questo tutorial del tuo amico spiega come leggere una fetta di ltx da dentro uno script... e per scriverla? In breve, vorrei che m_stalker.ltx passasse ai valori di m_stalker2.ltx quando uso uno script.
Non ci sono funzioni esportate al lua per scrivere un file sul disco , dovresti modificare gli schemi uno ad uno con i tuoi valoriHo provato a modificare xr_danger.script, ma quando gli npc passano alla logica "interna" (cioè monolith e camper) se ne fregano dei miei cambiamenti.
Quindi opzione 2: come faccio a cambiare i valori di m_stalker.ltx in diretta dal gioco? Questo tutorial del tuo amico spiega come leggere una fetta di ltx da dentro uno script... e per scriverla? In breve, vorrei che m_stalker.ltx passasse ai valori di m_stalker2.ltx quando uso uno script.
Griph0n mi sapresti spiegare per favore la funzione di questi parametri dell' m_stalker??
Codice:[stalker_vision_free] min_view_distance = 0.4 max_view_distance = 0.8 visibility_threshold = 150.0 always_visible_distance = 0.1 time_quant = 0.005 decrease_value = 0.1 velocity_factor = 0.5 luminocity_factor = 0.5 transparency_threshold = 0.4
Ultima modifica di Boris47; 18-08-09 alle 08:20:09 Motivo: la gentilezza non è mai troppa
Ma no, non voglio scrivere un file... mi serve applicare i nuovi settaggi di un m_stalker2.ltx (già scritto) su chi di norma usa m_stalker.ltx. In alternativa, mettere una condizione dentro m_stalker.ltx del tipo "usa questo se X, usa questo se Y".
Certo,Griph0n mi sapresti spiegare la funzione di questi parametri dell' m_stalker??
Codice:[stalker_vision_free] min_view_distance = 0.4 max_view_distance = 0.8 visibility_threshold = 150.0 always_visible_distance = 0.1 time_quant = 0.005 decrease_value = 0.1 velocity_factor = 0.5 luminocity_factor = 0.5 transparency_threshold = 0.4
questi sono i valori relativi alla "vista" degli npc quando non hanno rilevato nessun pericolo.
min_view_distance -> distanza minima necessaria ad un npc per identificare il player se si trova nel suo stesso campo visivo
max_view_distance -> come sopra ma è la distanza massima
luminocity_factor -> indica quanto chiaramente gli npcs possono individuarti di notte, + alto il valore + gli npcs saranno cechi.
transparency_threshold -> indica quanto chiaramente gli npcs possono individuarti tra la vegetazione, + alto il valore + gli npcs saranno cechi.
Gli altri valori ora non me li ricordo precisamente, ma always_visible_distance sarà la distanza minima entro la quale l'npc riescie ad individuarne un altro.
Cmq appena ne trovo cosa significano gli altri te lo posto
Quel file è gestito dalle funzioni c++ delle dll, non si può *bua, come ti ho detto ti conviene modificare i vari schemi uno ad uno, magari potresti creare un evaluator ed aggiungerlo in tutti gli schemi per poter eseguire il tuo codice su tutti gli npcs online.
Eppure è strano, come è possibile che con tutti i parametri che abbiamo a disposizione inerenti all'individuazione del player da parte degli altri stalker non si riesca a rendere maggiormente stalth questo gioco??
Semplicemente perchè non è un problema di ltx ma è un problema interno del codice del gioco
mannaggia
P.S.: Griph, ho un piccolo prob. [SoC]
Tu hai presente il ferito vicino al vagone nel cordone, li c'è anche un cadavere di un novellino ma non appartiene a nessuna comunity, atttraverso l' all.spawn posso renderlo appartenente ad una comunity??
se si che codice dovrei scrivere??
Ultima modifica di Boris47; 18-08-09 alle 09:53:12
Basta che lo cerchi nell'all.spawn, cercalo controllando il parametro health, poi individua il suo character profile, ed editalo nei file xml in modo da cambiargli community, è una cosa abbastanza semplicemannaggia
P.S.: Griph, ho un piccolo prob. [SoC]
Tu hai presente il ferito vicino al vagone nel cordone, li c'è anche un cadavere di un novellino ma non appartiene a nessuna comunity, atttraverso l' all.spawn posso renderlo appartenente ad una comunity??
se si che codice dovrei scrivere??
ci sono due stalker nello spawn presso quelle coordinate:
uno ha
l'altroCodice:[spawner] cond = {+tutorial_wounded_start} [smart_terrains] none = true [known_info] esc_tutorial_secret [dont_spawn_character_supplies] [dont_spawn_loot]
il secondo è Tolik il primo è il cadavere ma non ha valori healthCodice:[smart_terrains] esc_corps = {-esc_wounded_arrive} esc_lager = {+esc_wounded_arrive}
Ok, quindi per creare l'invisibilità i problemi finora sono stati:
1) Fare entrare il giocatore in una fazione amica di tutti -> gli npc ti vedono sul radar non appena ritorni a quella ostila, vanificando di essersi nascosti (diciamo che l'effetto funziona, ma male);
2) Fare diventare i nemici ciechi tramite *.ltx -> non si possono alternare 2 ltx m_stalker tramite script.
Mi restano:
3) Fare attivare il comportamento "monolith" solo quando lo dice il mio script (sperando che peschi dall'ltx dei monolith, ora "cieco")
4) Fare attivare la visione "danger" solo quando lo dice il mio script (anzichè all'entrata del combattimento).
Però senza un aiuto, questi 3 e 4 da solo dubito che riuscirò a farli.
prova ad usare la funzione xr_logic.activate_by_sectionOk, quindi per creare l'invisibilità i problemi finora sono stati:
1) Fare entrare il giocatore in una fazione amica di tutti -> gli npc ti vedono sul radar non appena ritorni a quella ostila, vanificando di essersi nascosti (diciamo che l'effetto funziona, ma male);
2) Fare diventare i nemici ciechi tramite *.ltx -> non si possono alternare 2 ltx m_stalker tramite script.
Mi restano:
3) Fare attivare il comportamento "monolith" solo quando lo dice il mio script (sperando che peschi dall'ltx dei monolith, ora "cieco")
4) Fare attivare la visione "danger" solo quando lo dice il mio script (anzichè all'entrata del combattimento).
Però senza un aiuto, questi 3 e 4 da solo dubito che riuscirò a farli.
Ma non c'è traccia di una chiamata a uno schema per la visione danger\free (e la logica monolith non includeva il m_stalker_monolith.ltx). Se hai del codice da consigliarmi, scrivimelo tu perchè io non capisco che intendi...
Io intendevo fare così:
[code]
if (condizione necessaria per far sì che venga attivato le schema monolith) then
xr_logic.activate_by_section(parametri richiestri)
elseif (condizione necessaria per far sì che venga attivato le schema danger) then
xr_logic.activate_by_section(parametri richiestri)
edit: se non ci riesci, appena sono libero ti scrivo un pò di codice io
Purtroppo "vision_danger" non viene citato da nessuna parte fuori m_stalker.ltx: ci sono solo tante chiamate a un evaluator "danger" in xr_danger. Se si potesse provocare\inibire solo il danger (personaggi allertati) anzichè la vision_danger (personaggi ciechi), non so quali sarebbero gli effetti.
Per il combat_type monolith, si può cambiare perchè provochi personaggi che mollano la ricerca molto presto. Meglio di niente... Ti faccio vedere il codice che di solito uso per provocare un effetto: si basa sull'utilizzo di un oggetto, "sleeping_bag", che rende "invisibili" per 5 secondi. Basta sapere quali condizioni chiamare...
Codice:local ui_sleep_init = false; local sleepingbag_id = nil; local spawn_timer = time_global(); local spawn_active = false; local temporale = 2; local morto = 0; function prnt(msg) end function on_game_load() end function on_actor_destroy() morto = 1; end function on_item_drop(obj) if morto == 0 then if obj:section() == "sleepingbag" then sleepingbag_id = obj:id(); ui_sleep_init = true; if temporale > 1 then spawn_active = true; temporale = 0; end end end end function update() if morto == 0 then atmsleep.update() if ui_sleep_init then if sleepingbag_id and alife():object(sleepingbag_id)==nil then ui_sleep_init = false; sleepingbag_id = nil; local act = db.actor; alife():create("sleepingbag", act:position(), act:level_vertex_id(), act:game_vertex_id(), act:id()); else ui_sleep_init = false; sleepingbag_id = nil; end end if spawn_active and (spawn_timer == nil or spawn_timer <= time_global()) then if temporale == 1 then if spawn_timer ~= nil then spawn_active = false; temporale = 2; spawn_timer = time_global(); db.actor:restore_weapon() level.remove_pp_effector(2008) db.actor:set_character_community("actor", 0, 0) end end if temporale == 0 then if spawn_timer ~= nil then local snd_obj = sound_object("anomaly\\teleport_work_2") snd_obj:play_no_feedback(db.actor, sound_object.s3d, 0, db.actor:position(), 1.0) db.actor:set_character_community("ecolog", 0, 0) spawn_timer = time_global() + 5000; temporale = 1; db.actor:hide_weapon() level.add_pp_effector("electra.ppe", 2008, true) end end end end end function save_val(varname, val) xr_logic.pstor_store(db.actor, varname, val); end function load_val(varname, defval) xr_logic.pstor_retrieve(db.actor, varname, defval); end
Ragazzi qualcuno sa a cosa si fiferisce questa dicitura:
mi compare nel log durante il caricamento delle tex ma il gioco parte e va fluido, cosa è? Da cosa potrebbe dipendere?Codice:Caricamento texture... * t-report - base: 888, 269498 K * t-report - lmap: 10, 10241 K ***FATAL***: Too many lmap-textures (limit: 8 textures or 32M). Reduce pixel density (worse) or use more vertex lighting (better).
Ciao a Tutti mi sono appena iscritto, vista la bontà e la completezza delle informazioni su questo gioco.
Mi sono da poco interessato al modding di questo gioco (per ora sono solo riuscito a fare in modo che il coltello seghi le persone da qualunque distanza lanciandole come se fossero colpite da un tram, poca roba ma spassosa da vedere :-D ), essendo un programmatore lo trovo anche utile per ampliare le mie conoscenze in modo meno pesante del solito.
Mi sto dotando di ciò che serve, l' ultima versione di 3d studio max utilizzabile per moddare è ancora la 8 ? Non so se arriverò a creare animazioni, ma nel caso vorrei usare gli strumenti giusti.
Altra Cosa: un elenco delle variabili a cui assegnare i valori nei file w_xxx.ltx esiste? (xxx = arma qualsiasi)
Cambiano in base alla classe che assegno all' arma?
Il comportamento dell' arma lo definisce la classe delle munizioni?
Ho provato a dare all' rpg7 le munizioni 5.45 , gli ho aumentato l' rpm , per un po' spara razzi a raffica, poi spara come un ak47 qualunque...
sta cosa non mi è chiara...
Ho in più provato a dare all' lr-300 l' effetto delle munizioni dell' rpg7 mantenedo le munizioni normali, ho fatto un taglia e incolla delle sezioni successive ma poi il gioco crasha all' avvio.
Non ho ancora fatto in tempo a fare molte prove ancora ma penso che non si possa fare giusto?
La sezione [rocketlauncher] è relativa all' arma o alle munizioni?
Grazie a tutti in anticipo ciao!
Mi sà che con quel codice non vai tanto lontano cmq ho controllato un pò, secondo me dovresti scriverti un tuo schema e farlo eseguire al posto di quelli vanilla, cosa abbastanza complessa se non hai abbastanza skills di programmazionePurtroppo "vision_danger" non viene citato da nessuna parte fuori m_stalker.ltx: ci sono solo tante chiamate a un evaluator "danger" in xr_danger. Se si potesse provocare\inibire solo il danger (personaggi allertati) anzichè la vision_danger (personaggi ciechi), non so quali sarebbero gli effetti.
Per il combat_type monolith, si può cambiare perchè provochi personaggi che mollano la ricerca molto presto. Meglio di niente... Ti faccio vedere il codice che di solito uso per provocare un effetto: si basa sull'utilizzo di un oggetto, "sleeping_bag", che rende "invisibili" per 5 secondi. Basta sapere quali condizioni chiamare...
Codice:local ui_sleep_init = false; local sleepingbag_id = nil; local spawn_timer = time_global(); local spawn_active = false; local temporale = 2; local morto = 0; function prnt(msg) end function on_game_load() end function on_actor_destroy() morto = 1; end function on_item_drop(obj) if morto == 0 then if obj:section() == "sleepingbag" then sleepingbag_id = obj:id(); ui_sleep_init = true; if temporale > 1 then spawn_active = true; temporale = 0; end end end end function update() if morto == 0 then atmsleep.update() if ui_sleep_init then if sleepingbag_id and alife():object(sleepingbag_id)==nil then ui_sleep_init = false; sleepingbag_id = nil; local act = db.actor; alife():create("sleepingbag", act:position(), act:level_vertex_id(), act:game_vertex_id(), act:id()); else ui_sleep_init = false; sleepingbag_id = nil; end end if spawn_active and (spawn_timer == nil or spawn_timer <= time_global()) then if temporale == 1 then if spawn_timer ~= nil then spawn_active = false; temporale = 2; spawn_timer = time_global(); db.actor:restore_weapon() level.remove_pp_effector(2008) db.actor:set_character_community("actor", 0, 0) end end if temporale == 0 then if spawn_timer ~= nil then local snd_obj = sound_object("anomaly\\teleport_work_2") snd_obj:play_no_feedback(db.actor, sound_object.s3d, 0, db.actor:position(), 1.0) db.actor:set_character_community("ecolog", 0, 0) spawn_timer = time_global() + 5000; temporale = 1; db.actor:hide_weapon() level.add_pp_effector("electra.ppe", 2008, true) end end end end end function save_val(varname, val) xr_logic.pstor_store(db.actor, varname, val); end function load_val(varname, defval) xr_logic.pstor_retrieve(db.actor, varname, defval); end
Questo non è un vero e proprio errore, in pratica hai messo delle textures + grandi di quanto dovevano essere, non te ne curare, tutti i mod creano qst erroreRagazzi qualcuno sa a cosa si fiferisce questa dicitura:
mi compare nel log durante il caricamento delle tex ma il gioco parte e va fluido, cosa è? Da cosa potrebbe dipendere?Codice:Caricamento texture... * t-report - base: 888, 269498 K * t-report - lmap: 10, 10241 K ***FATAL***: Too many lmap-textures (limit: 8 textures or 32M). Reduce pixel density (worse) or use more vertex lighting (better).
Ciao e benvenuto nella zonaCiao a Tutti mi sono appena iscritto, vista la bontà e la completezza delle informazioni su questo gioco.
Mi sono da poco interessato al modding di questo gioco (per ora sono solo riuscito a fare in modo che il coltello seghi le persone da qualunque distanza lanciandole come se fossero colpite da un tram, poca roba ma spassosa da vedere :-D ), essendo un programmatore lo trovo anche utile per ampliare le mie conoscenze in modo meno pesante del solito.
Mi sto dotando di ciò che serve, l' ultima versione di 3d studio max utilizzabile per moddare è ancora la 8 ? Non so se arriverò a creare animazioni, ma nel caso vorrei usare gli strumenti giusti.
Altra Cosa: un elenco delle variabili a cui assegnare i valori nei file w_xxx.ltx esiste? (xxx = arma qualsiasi)
Cambiano in base alla classe che assegno all' arma?
Il comportamento dell' arma lo definisce la classe delle munizioni?
Ho provato a dare all' rpg7 le munizioni 5.45 , gli ho aumentato l' rpm , per un po' spara razzi a raffica, poi spara come un ak47 qualunque...
sta cosa non mi è chiara...
Ho in più provato a dare all' lr-300 l' effetto delle munizioni dell' rpg7 mantenedo le munizioni normali, ho fatto un taglia e incolla delle sezioni successive ma poi il gioco crasha all' avvio.
Non ho ancora fatto in tempo a fare molte prove ancora ma penso che non si possa fare giusto?
La sezione [rocketlauncher] è relativa all' arma o alle munizioni?
Grazie a tutti in anticipo ciao!
Esistono plugins per tutte le versioni del 3dsmax e del maya e perfino di milkshape, dipende quella che vuoi usare tu.
Per quanto riguarda la lista delle variabili, beh quelle che vedi in quei files, sono tutte quelle disponibili e necessarie.
Per il discorso munizioni, invece, molto dipende dalle particles che vengono eseguite al momento dello sparo, se c'è l'animazione per il razzo, verrà prodotto + fuoco di quando si spara con una munizione qualsiasi.
Per quanto riguarda la [rocketlauncher] non sò se viene usata
Comunque se hai altre domande basta chiedere
Quel codice funziona: l'invisibilità si attiva col tasto delle bende, consuma stamina, ci sono FX e suono, i nemici non ti vedono per 5 secondi. Però quando riappari, i nemici ti vedono attraverso i muri (= percepiscono le fazioni nemiche senza usare la vista) e questa str***ata dell'x-ray engine mi tiene bloccato.
Io starò via qualche giorno: se vuoi farci qualcosa, qui c'è il download : è un backup di prima che mi si fondesse il pc, adesso non posso controllarla ma dovrebbe essere ok. Con le tue skills di programmazione potresti riuscire a trovare dove venga lanciato vision_danger, quello sarebbe ottimo.
Ultima modifica di xdiesp; 19-08-09 alle 13:24:35
No, scusa, forse mi hai frainteso, non intendevo dire che il tuo codice è fatto male, dicevo che per quello che intendi fare con gli npc non sarebbe la migliore scelta usare quel codice, cmq ho appena letto il post di natvac sul forum della gsc, in questi giorni se ho tempo proverò a fare qualche cosaQuel codice funziona: l'invisibilità si attiva col tasto delle bende, consuma stamina, ci sono FX e suono, i nemici non ti vedono per 5 secondi. Però quando riappari, i nemici ti vedono attraverso i muri (= percepiscono le fazioni nemiche senza usare la vista) e questa str***ata dell'x-ray engine mi tiene bloccato.
Io starò via qualche giorno: se vuoi farci qualcosa, qui c'è il download : è un backup di prima che mi si fondesse il pc, adesso non posso controllarla ma dovrebbe essere ok. Con le tue skills di programmazione potresti riuscire a trovare dove venga lanciato vision_danger, quello sarebbe ottimo.
Hud: http://i212.photobucket.com/albums/c...1-48_marsh.jpg
Snake: http://i212.photobucket.com/albums/c...1-53_marsh.jpg
L'ipotesi di Natvac mi sembra un filino irrealizzabile: per rendere ciechi i personaggi, li sostituiamo tutti con delle versioni cieche ma nella stessa posizione\attività\stats... ogni 5 secondi?
Dai, ci sono tante altre strade più semplici: un override di combat_ignore oppure capire veramente perchè se uno cambia fazione, i nemici lo vedono istantaneamente.
Heeeeeeeeelp!!
Mi he capitato al garbage di lanciare granate e non sentore le explosioni e vedere gli altri PNG sparare ma non sentire i suoni degli spari, suoni che invece sento quando sparo io( ma non sento le granate) di sicuro è qualche scipt a far questo brutto scherzo, avete idea da cosa possa dipendere???