Grazie mille a entrambi per le spiegazioni, ora è tutto chiaro e non mi resta che applicare la teoria alla pratica!
Grazie mille a entrambi per le spiegazioni, ora è tutto chiaro e non mi resta che applicare la teoria alla pratica!
Griph, non va o meglio: appena parte la funzione da me indicata a modificare la direzione della camera, la telecamera si sposta rapidamente verso le cordinate del vettore inserite ma resta fissa e non c'è modo di muoverla.
Come si può aggirare questo problema??
Per farti capire meglio sto cercando di fare una funzione che permetta alla camera di muoversi in maniera casuale in ogni direzione.
la funzione è questa:
Spoiler:Codice:function change_dir() local act = db.actor if act and act:alive() then local var_x, var_y local new_x = 0 local new_y = 0 local v = act:head_orientation() -- act:direction() --device().cam_dir var_x = math.random(-200, 200) var_y = math.random(-200, 200) -- var_z = math.random(-200, 200) new_x = new_x + v.x + var_x new_y = new_y + v.y + var_y -- new_z = v.z + var_z local dir = vector():set(new_x, new_y, v.z) --:sub(db.actor:position()) -- act:set_actor_direction(dir) -- act:set_desired_direction(-dir:getH()) -- act:set_actor_direction(-dir:getH()) end end
Ultima modifica di Boris47; 20-01-10 alle 15:10:53
prova con questaGriph, non va o meglio: appena parte la funzione da me indicata a modificare la direzione della camera, la telecamera si sposta rapidamente verso le cordinate del vettore inserite ma resta fissa e non c'è modo di muoverla.
Come si può aggirare questo problema??
Per farti capire meglio sto cercando di fare una funzione che permetta alla camera di muoversi in maniera casuale in ogni direzione.
la funzione è questa:
Spoiler:Codice:function change_dir() local act = db.actor if act and act:alive() then local var_x, var_y local new_x = 0 local new_y = 0 local v = act:head_orientation() -- act:direction() --device().cam_dir var_x = math.random(-200, 200) var_y = math.random(-200, 200) -- var_z = math.random(-200, 200) new_x = new_x + v.x + var_x new_y = new_y + v.y + var_y -- new_z = v.z + var_z local dir = vector():set(new_x, new_y, v.z) --:sub(db.actor:position()) -- act:set_actor_direction(dir) -- act:set_desired_direction(-dir:getH()) -- act:set_actor_direction(-dir:getH()) end end
Codice:function change_dir() local new_dir = vector():set(math.random(), math.random(), math.random()) db.actor:set_actor_direction(-new_dir:getH()) end
Ragazzi chiedo a voi che siete più esperti di me...
Mi serve un mod che mi spawna un gruppo di stalker vicino la base dei Banditi e che ci vada dentro a conquistarla... Diciamo che è una sorta di fix a quel maledetto problema dei banditi... sono esasperato
Ciao, ma x soc o x cs ?
Ah scusa... per CS... praticamente il problema è questo:
Sono alleato stalker, ho la missione di conquistare il Deposito, ma nessun gruppo di stalker va lì dopo che l'ho ripulito, con la conseguenza del respawn dei banditi... e questo lo fa sempre, fino a che per mano di Dio non arriva qualche stalker e prende possesso della base, allora potrò dire addio ai banditi..
Messaggio rimosso dalla sezione "L'angolo del MOD":
Salve ragazzi avrei uno strano problema:
Sto cercando di fare in modo che quando mi avvicino ad un'anomalia al di sotto di una certa distanza mi consenta di visualizzare un messaggio sullo schermo: il corpo della funzione è questo:
in questo caso l'anomalia in questione è il fuoco dove si riuniscono gli stalker. (hud_message() è una funzione che ho preso e funziona benissimo).Codice:give_info_by_dist(sect) if sect then local name = sect:section() if name == "zone_flame_small" then hud_message("Prova", "Trovato il fuoco", nil, 7, nil) end end end
successivamente richiamo la funzione con il nome "give_info_by_dist(self.object)" nel file "sr_zones.script", nella voce di classe "se_zone_anom:update()".
Quindi come mai non funziona?
Spero di aver fatto capire almeno l'intento
Ciao, allora assumendo che tu voglia chiamare questa funzione nel metodo update della classe se_zone_anom presente nel file se_zones.script devi aggiungere un metodo come questo alla suddetta classe:Messaggio rimosso dalla sezione "L'angolo del MOD":
Salve ragazzi avrei uno strano problema:
Sto cercando di fare in modo che quando mi avvicino ad un'anomalia al di sotto di una certa distanza mi consenta di visualizzare un messaggio sullo schermo: il corpo della funzione è questo:
in questo caso l'anomalia in questione è il fuoco dove si riuniscono gli stalker. (hud_message() è una funzione che ho preso e funziona benissimo).Codice:give_info_by_dist(sect) if sect then local name = sect:section() if name == "zone_flame_small" then hud_message("Prova", "Trovato il fuoco", nil, 7, nil) end end end
successivamente richiamo la funzione con il nome "give_info_by_dist(self.object)" nel file "sr_zones.script", nella voce di classe "se_zone_anom:update()".
Quindi come mai non funziona?
Spero di aver fatto capire almeno l'intento
ed ovviamente all'interno del metodo update mettiCodice:local msg_by_anom = { zone_flame_small = "trovato il fuoco" } function se_zone_anom:message() if self.position:distance_to(db.actor:position()) < 10 then hud_message("Prova", msg_by_anom[self:section_name()], nil, 7, nil) end end
Ovviamente nn ho provato il codice ma dovrebbe funzionareCodice:self:message()
Ciao, allora assumendo che tu voglia chiamare questa funzione nel metodo update della classe se_zone_anom presente nel file se_zones.script devi aggiungere un metodo come questo alla suddetta classe:
ed ovviamente all'interno del metodo update mettiCodice:local msg_by_anom = { zone_flame_small = "trovato il fuoco" } function se_zone_anom:message() if self.position:distance_to(db.actor:position()) < 10 then hud_message("Prova", msg_by_anom[self:section_name()], nil, 7, nil) end end
Ovviamente nn ho provato il codice ma dovrebbe funzionareCodice:self:message()
Ok allora il codice funge, tanto che al disotto di 10 metri mi arrivano mille messaggi al secondo . Comunque ora se io volessi che al posto del messaggio "trovato il fuoco" ci sia una info_portion che voglio registrare all'attore, come posso fare??
Prendendo in considerazione in ideale info_portion come: ("enc_anom_flame_small"), come posso tramite il tuo metodo registrarla??
Il mio scopo:
Spoiler:In generale sto cercando di creare uno script, con nome enc_info.script, nel quale con questa funzione dovrei dalle delle info_portions all'attore, queste info_portion avrenno al loro interno articoli di enciclopedia sulle anomalie che quindi potranno essere visualizate nel PDA, ma solo dopo che l'attore si è avvicinato abbastanza dalle anomalie (in questo caso solo 10 metri).
Forse ora ti ho reso più facile ciò che volevo fare, ciò è possibile?
Con i mutanti sono riuscito a far funzionare una funzione simile inserendo la chiamata alla funzione nel metodo generic_object_binder:update(delta) del bind_monster.script tale che:
nel file bind_monste.script, al metodo suddetto, ho inserito questa chiamata:
---------------------------Codice:enc_info.add_enc_desc_mutants(self.object)
ora nel fine enc_info.script il corpo della funzione è il seguente:
Codice:function add_enc_desc_mutants(obj) if obj then if (IsMonster(obj)) and obj:position():distance_to(db.actor:position()) < 10 and (db.actor:see(obj)) then if obj:section()=="m_zombie_e" or obj:section()=="zombie_weak" or obj:section()=="zombie_normal" or obj:section()=="zombie_strong" then if not has_alife_info("enc_mut_zombie") then db.actor:give_info_portion("enc_mut_zombie") send_hud_message("Enciclopedia", "Aggiunta nuova specie", nil, 7, nil) end end end end
Allora devi modificare il metodo da message in questo modoOk allora il codice funge, tanto che al disotto di 10 metri mi arrivano mille messaggi al secondo . Comunque ora se io volessi che al posto del messaggio "trovato il fuoco" ci sia una info_portion che voglio registrare all'attore, come posso fare??
Prendendo in considerazione in ideale info_portion come: ("enc_anom_flame_small"), come posso tramite il tuo metodo registrarla??
Il mio scopo:
Spoiler:In generale sto cercando di creare uno script, con nome enc_info.script, nel quale con questa funzione dovrei dalle delle info_portions all'attore, queste info_portion avrenno al loro interno articoli di enciclopedia sulle anomalie che quindi potranno essere visualizate nel PDA, ma solo dopo che l'attore si è avvicinato abbastanza dalle anomalie (in questo caso solo 10 metri).
Forse ora ti ho reso più facile ciò che volevo fare, ciò è possibile?
Con i mutanti sono riuscito a far funzionare una funzione simile inserendo la chiamata alla funzione nel metodo generic_object_binder:update(delta) del bind_monster.script tale che:
nel file bind_monste.script, al metodo suddetto, ho inserito questa chiamata:
---------------------------Codice:enc_info.add_enc_desc_mutants(self.object)
ora nel fine enc_info.script il corpo della funzione è il seguente:
Codice:function add_enc_desc_mutants(obj) if obj then if (IsMonster(obj)) and obj:position():distance_to(db.actor:position()) < 10 and (db.actor:see(obj)) then if obj:section()=="m_zombie_e" or obj:section()=="zombie_weak" or obj:section()=="zombie_normal" or obj:section()=="zombie_strong" then if not has_alife_info("enc_mut_zombie") then db.actor:give_info_portion("enc_mut_zombie") send_hud_message("Enciclopedia", "Aggiunta nuova specie", nil, 7, nil) end end end end
e modificare il custruttore della classe se_anom_zone in questo modoCodice:local msg_info_by_anom = { zone_flame_small = { "trovato il fuoco", "my_info_portion" } } function se_zone_anom:message() if self.position:distance_to(db.actor:position()) < 10 and not self.message_sent then hud_message("Prova", msg_info_by_anom[self:section_name()][1], nil, 7, nil) if not has_alife_info(msg_info_by_anom[self:section_name()][2]) then db.actor:give_info_portion(msg_info_by_anom[self:section_name()][2]) end self.message_sent = true elseif self.position:distance_to(db.actor:position()) >= 10 and self.message_sent then self.message_sent = false end end
Codice:function se_zone_anom:__init (section) super (section) self.message_sent = false end
Gr1ph ho provato il nuovo codice che mi hai dato ma non succede più nulla, ora quando mi avvicino al focolaio mi freeza per 4 secondi e poi riparte ma non mi invia il messaggio, come se niente fosse. Mannaggia, si può provare in un altro modo?Allora devi modificare il metodo da message in questo modo
e modificare il custruttore della classe se_anom_zone in questo modoCodice:local msg_info_by_anom = { zone_flame_small = { "trovato il fuoco", "my_info_portion" } } function se_zone_anom:message() if self.position:distance_to(db.actor:position()) < 10 and not self.message_sent then hud_message("Prova", msg_info_by_anom[self:section_name()][1], nil, 7, nil) if not has_alife_info(msg_info_by_anom[self:section_name()][2]) then db.actor:give_info_portion(msg_info_by_anom[self:section_name()][2]) end self.message_sent = true elseif self.position:distance_to(db.actor:position()) >= 10 and self.message_sent then self.message_sent = false end end
Codice:function se_zone_anom:__init (section) super (section) self.message_sent = false end
E' possibile eliminare il respawn dei freedom alla valle oscura? Non riesco ad eliminarli.
Come si fa il respawn degli oggetti?
Gr1ph00n, Vince89 non si è spiegato bene... allora sta facendo le tabelle di Clear Sky di armi, armature (che ha completato ma vuole essere sicuro), vuole fare quelle dei reperti che sono diversi da SoC ecc.ecc. e vuole un MOD tipo ALL SPAWN (armi, armature, proiettili, reperti ecc.ecc. nel suo inventario... ovviamente con peso illimitato se no non si potrà muovere successivamente... per poi poter esaminarli e fare le tabelle per bene... lo aiuti gentilmente? Mi raccomando...
Io sono già pieno con Call of Pripyat con GUIDE e quant'altro se no l'avrei aiutato io a cercare qualcosa... grazie!
Griph00n ho un problema( la domenda comunque è aperta a chiunque possa aiutarmi):
supponiamo di avere un lr300 con sopra un laciagranate,
pur settando il parametro scope_zoom_factor a 90, lo zoom che effettuiamo con attivo il lancia granate ci zoomma ugualmente come se il novanta dello scope_zoom_factor non ci sia.
Spero di aver fatto capire il problema
praticamente sto cercando di fare una funzione che elimini lo zoom anche con il lanciagranate attivo.
Dopo diversi tentativi ho capito che qui ci vuole la mano dell'esperto.
Quindi mi sapresti fare una funzione che svolga quasto ruolo??
Di sicuro sai già cosa scrivere quindi ti ringrazio in anticipo
scusa non avevo visto il tuo post... cmq prova a cercare un mod chiamato "helios atlas menu" su filefront, dovrebbe fare a caso tuo
Mi sà che ciò è regolato dall'engine e non ci si può smanettareGriph00n ho un problema( la domenda comunque è aperta a chiunque possa aiutarmi):
supponiamo di avere un lr300 con sopra un laciagranate,
pur settando il parametro scope_zoom_factor a 90, lo zoom che effettuiamo con attivo il lancia granate ci zoomma ugualmente come se il novanta dello scope_zoom_factor non ci sia.
Spero di aver fatto capire il problema
praticamente sto cercando di fare una funzione che elimini lo zoom anche con il lanciagranate attivo.
Dopo diversi tentativi ho capito che qui ci vuole la mano dell'esperto.
Quindi mi sapresti fare una funzione che svolga quasto ruolo??
Di sicuro sai già cosa scrivere quindi ti ringrazio in anticipo
Gr1ph oggi ho avuto un altra idea sia per il mio mod ma vorrei proporla anche per Lost Alpha:
In stalker vanilla nello zaino si poteva mettere roba fino a 50 kg poi si passava nel peso critico fino a 60kg oltre i quali l'attore non poteva muoversi, quindi:
1) Si può fare uno script che renda meno drastico questo cambiamento??
Ossia che già da 50.1kg la velocità di movimento diminuisca e il consumo di stamina aumenti ma il tutto gradualmente fino al limite di 60 kg dove poi, ovviamente l'attore non riuscirà più a muoversi.
2) avendo presente i parametri "additional_inventory_weight" e "additional_inventory_weight2" usati nell'outfit.ltx io li ho praticamente aggiunti ad ogni armatura ma con valori diversi a seconda di quanto, secondo una visione realistica, lo zaino della tuta mi concedesse di aggiungere al peso trasportabile.
Al chè sorge spontane una domenda:
<Se il primo aggiunge il peso trasportabile, in teoria, il secondo cosa fa?>.
Sulla base di questo ho fatto vari esperimenti è sono giunto a risultati inspiegabili come ad esempio:
Io ho modificato la tuta da novizio inserendo questi due parametri con i seguenti valori:
quindi al mio peso trasportabile di 50kg dovrebbe aggiungere 3kg in più ed effettivamente riesco a portare 3kg in più di roba ma il problema sta nel consumo della stamina.Codice:additional_inventory_weight = 3 additional_inventory_weight2 = 3
Appena supero la soglia di 50kg e in teoria rientro nel peso trasportbile ed uso lo sprint la stamina cala rapidamente come se fossi in sovraccarico quando così non è.
I parametri della mia mod sono i seguenti:
in actor.ltx
in system.ltxCodice:max_item_mass = 30 max_walk_weight = 35
Come posso fare?Codice:max_weight = 30
Allora procedendo per ordine:Gr1ph oggi ho avuto un altra idea sia per il mio mod ma vorrei proporla anche per Lost Alpha:
In stalker vanilla nello zaino si poteva mettere roba fino a 50 kg poi si passava nel peso critico fino a 60kg oltre i quali l'attore non poteva muoversi, quindi:
1) Si può fare uno script che renda meno drastico questo cambiamento??
Ossia che già da 50.1kg la velocità di movimento diminuisca e il consumo di stamina aumenti ma il tutto gradualmente fino al limite di 60 kg dove poi, ovviamente l'attore non riuscirà più a muoversi.
2) avendo presente i parametri "additional_inventory_weight" e "additional_inventory_weight2" usati nell'outfit.ltx io li ho praticamente aggiunti ad ogni armatura ma con valori diversi a seconda di quanto, secondo una visione realistica, lo zaino della tuta mi concedesse di aggiungere al peso trasportabile.
Al chè sorge spontane una domenda:
<Se il primo aggiunge il peso trasportabile, in teoria, il secondo cosa fa?>.
Sulla base di questo ho fatto vari esperimenti è sono giunto a risultati inspiegabili come ad esempio:
Io ho modificato la tuta da novizio inserendo questi due parametri con i seguenti valori:
quindi al mio peso trasportabile di 50kg dovrebbe aggiungere 3kg in più ed effettivamente riesco a portare 3kg in più di roba ma il problema sta nel consumo della stamina.Codice:additional_inventory_weight = 3 additional_inventory_weight2 = 3
Appena supero la soglia di 50kg e in teoria rientro nel peso trasportbile ed uso lo sprint la stamina cala rapidamente come se fossi in sovraccarico quando così non è.
I parametri della mia mod sono i seguenti:
in actor.ltx
in system.ltxCodice:max_item_mass = 30 max_walk_weight = 35
Come posso fare?Codice:max_weight = 30
1) no ciò viene regolato dall'engine stesso e non è modificabile
2) se ricordo bene sono la stessa cosa e dovrebbero sempre essere settati uguali Cmq non mi sono mai messo a giocare con questi valori quindi dovresti fare un paio di prove tu, non sò che altro dirti
Sono giunto a delle conclusioni tramite varie prove(questo per rispondere alla domanda riguardo i due prametri):Allora procedendo per ordine:
1) no ciò viene regolato dall'engine stesso e non è modificabile
2) se ricordo bene sono la stessa cosa e dovrebbero sempre essere settati uguali Cmq non mi sono mai messo a giocare con questi valori quindi dovresti fare un paio di prove tu, non sò che altro dirti
L'unica tuta ad essere fornita di questi due parametri e l'esoscheletro, che nel vanilla aggiunge 20kg in più trasportabili ma, di questo ne sono certo, è come se l'attore fosse in sovraccarico.
Si potrebbe dire che se il limite massimo senza tuta è di 60 oltre il quale l'attore rimane fermo, indossndo la tuta il limite massimo viene incrementato ma comunque a 60kg sei in sovraccarico e consumi molta stamina.
Quindi questo spiega il paramtro sprint_allowed che nel caso dell'esoscheletro elimina lo sprint proprio per non rendere evidente questo "bug".
Comunque riguardo alla prima proposta... ....
Vabbè fa niente, grazie comunque Gr1ph00n.
EDIT:
Riguardo alla faccenda del peso, il problema precedentemente riscontrato può essere risolto tramite il paramtroil quale diminuisce il consumo della stamina.Codice:power_loss = x
La x può assumere valori da 0 a più inifnito ma naturalemente per rendere la cosa quantomeno reale è di buona logica farla variare tra 0 e 1, in base a come ognuno vuole che sia nella sua mod, TANTO PIU' PICCOLO E' IL VALORE TANTO MENO L'ATTORE SI STANCA.
Basterà inserirla in ogni sezione del'outfit.ltx perchè abbia effetto su tutte le tute.
In definitiva il problema è risolto, tramite un giro "forzato" ora si può fare.
Da quasti esperimenti spunta anche una "micromod", la corsa infinita.
Infatti semplicemente aggiungento questo parametro in ogni sezione dell'outfit.ltx e facendo assumere ad x il valore 0 l'attore potrà correre per sempre senza mai stancarsi.
Ultima modifica di Boris47; 21-02-10 alle 10:14:52
Il "Database Unpacker Utility" di CS funziona anche con CoP oppure serve/esiste un software analogo specifico per il terzo capitolo?
Si Darimar secondo quello che si dice sembra che funzioni anche per CoP.
Lo trovi qui.
Comunque per favore la prossima volta che devi chiedre qualcosa che riguarda in qualche modo Call of Pripyat postalo nelle sezioni del sotto-forum dedicato .
Ma e' cosi' difficile prendere un terreno 3d e ficcarci dentro gli npc di stalker?
da parecchio cerco tutorial italiani ma non trovo niente.
perfavore , ditemi come fare le seguenti cose:
far partire il gioco dalla mia mappa.
inserire i punti da dove si generano gli npc ogni tot di tempo.
inserire i punti che trasportano ad altre mappe.
come avevo gia scritto al moderatore ho intenzione di modellare un mondo totalmente nuovo ma non so compilare gli script (solo modificare i parametri)
e mi piacerebbe crare un team apposta.
a quanto pare griph00n e' indaffaratissimo con altri progetti vero?
ciao!
Ciao di tutorial in italiano non c'è ne sono, devi cercarli in inglese e li puoi trovare quà http://sdk.stalker-game.com/en/index...byl_MOD_portalMa e' cosi' difficile prendere un terreno 3d e ficcarci dentro gli npc di stalker?
da parecchio cerco tutorial italiani ma non trovo niente.
perfavore , ditemi come fare le seguenti cose:
far partire il gioco dalla mia mappa.
inserire i punti da dove si generano gli npc ogni tot di tempo.
inserire i punti che trasportano ad altre mappe.
come avevo gia scritto al moderatore ho intenzione di modellare un mondo totalmente nuovo ma non so compilare gli script (solo modificare i parametri)
e mi piacerebbe crare un team apposta.
a quanto pare griph00n e' indaffaratissimo con altri progetti vero?
ciao!
Però occhio che per creare una mappa nuova e metterci l'alife sopra non è una cosa semplice occorre tempo, passione e fortuna ed ovviamente una buona conoscenza dei programmi che andrai ad utilizzare