[SoC]
Oltre alle cartelle \textures, \levels e \shaders esiste qualche altro "luogo" in cui possono esserci files che gestiscono l'aspetto dell'ambiente (vegetazione, muri, strade, illuminazione del sole, eccetera)?
Visualizzazione Stampabile
[SoC]
Oltre alle cartelle \textures, \levels e \shaders esiste qualche altro "luogo" in cui possono esserci files che gestiscono l'aspetto dell'ambiente (vegetazione, muri, strade, illuminazione del sole, eccetera)?
Gr1ph00n: secondo uno del forum, nei 3 combat type (camper, monolith e "engine") si nasconde un settaggio di radius dentro il quale il nemico viene visto per forza. Ho la scheda fusa, altrimenti proverei subito a forzarli per vedere quale.
Boris47: hai mica assordato il giocatore attraverso qualche settaggio in config\creatures\actor.ltx?Citazione:
--- in xr_combat, xr_combat_camper, xr_combat_monolith, xr_combat_zombied, xr_logic
[combat]
combat_type = monolith
Darimar: qualcosa in weather sui colori di tutta la scena, ma mi sembra che certi mod con proprietà grafiche particolari usino una DLL in \Bin\...
Ciao a tutti di nuovo, questa volta vorrei proporvi un argomento serio... Come Gr1ph00n già saprà, tempo fa gli ho chiesto aiuto riguardo al modding dei videogiochi... Di per me io sono un tipo molto smanettone (anche se ancora 14enne) e alcune cose le so già, ma desidererei che qualcuno mi "istruisse" meglio, e magari dopo potrei darvi una mano per realizzare i vostri progetti di mod... Comunque sia, grazie mille in anticipo...
Ti consiglio di imparare a fare il modeler, ce n'è sempre richiesta e avresti il vantaggio di non dovere reimparare tutto da capo tra un gioco e l'altro. Non ti posso fare corsi, ma ci sono diverse guide su FPS Banana e Facepunch Studios che sono anche posti ottimi dove prendere esempi.
Potresti provare qualche settaggio nell'sdk :look:
Si in effetti basterebbe introdurre delle nuove variabile per il ricoscimento del player, quindi penso sia possibile fare un ovveride degli schemi, semmai ci possiamo sentire su msn o su icq quando torni ;)
Come xdiesp ti ha detto, incominciare ad usare programmi per la grafica 3d non sarebbe un cattivo inizio anzi, potresti incominciare leggendoti qualche tutorial sull'utilizzo del 3dsmax o del maya (anche se io ti consiglio il primo). Magari imparare ad usare un programma di grafica 2d come ad esempio photoshop o the gimp (il primo a pagamento, il secondo no) sarebbe un ulteriore punto a tuo favore. Invece ti sconsiglio di iniziare a voler lavorare con la programmazione perchè senza basi non si va molto lontano.Citazione:
Originariamente Scritto da Ferro_-'95'-_
:ciaociao:
Se il bug dell'invisibilità non fosse correggibile, lascerei perdere: sulla tabella di marcia ero già arrivato al punto di spostare gli npc importanti in giro e cambiare i dialoghi (finora della palude). Ma adesso sto fermo per il rischio di dover buttare via tutto.
Ci sarebbe ancora da decidere se chiamarlo Metal Gear Solid 4 Mod, oppure Metal Gear Stalker. E il robot nuovo... Artifact Gear.
Uno dice di poter cambiare i valori di un file LTX, quelli delle munizioni. I suoi esempi sono:
Citazione:
local ltx = ini_file("weapons\weapons.ltx")
if ltx then
if ltx:section_exist("ammo_12x70_buck") then
local disp_value = ltx:r_line("k_disp", "value")
Si tratta di esempi separati, ma il senso è che nel primo venga letto il file config\weapons\weapons.ltx, che ha al suo interno la sezione "ammo_12x70_buck" e il settaggio "k_disp". Questo settaggio viene poi aumentato tramite l'esempio di sotto (e quindi la munizione diventa più forte).Citazione:
if max_view_value:value == 0 then
max_view_value.max_view_distance = max_view_value.max_view_distance + 1
end
Io ho provato a ripeterlo, ma mi crasha.
Citazione:
function on_item_drop(obj)
if obj:section() == "bandage" then
local snd_obj = xr_sound.get_safe_sound_object([[anomaly\teleport_work2]])
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
local path = "creatures\\m_stalker.ltx"
local ltx = ini_file(path)
if ltx then
if ltx:section_exist(""stalker_vision_free") then
local disp_freemin = ltx:r_line("min_view_distance", "value")
if disp_freemin:value == 0.4 then
disp_freemin.min_view_distance = disp_freemin.min_view_distance - 0.4
end
end
end
end
end
Se è solo locale, niente. Tu non hai più tentato niente con gli override di combat_ignore? Io al massimo posso dire a un amico con SOC di fare un paio di prove al giorno.
edit
Che mi dici di questo come overrider in xr_combat, xr_monolith, xr_camper e xr_zombied?
Da notare una cosa: ho trovato molti segni di combat_type scriptati (cioè il tipo descritto nel tutorial di Dezowave), negli script di config\scripts\(area). Però non possono essere tutti quelli del gioco: nell'area Marsh non me ne segna nemmeno uno, di script così.Citazione:
function combat_overrider()
if mylittlepony == 1 then
return db.storage[self.object:id()].script_combat_type == "zombied"
end
end
edit
Và come l'è bela questa riga in xr_danger:
E se ci mettessi actor o db.actor al posto di m_car?Citazione:
local always_ignore_danger_from = { m_car = "true" }
Ma quanto sono belli questi tipi di video
Video
Comunque consiglio di vederlo in alta risoluzione:)
Cosa c'entra con il modding :look: ?
- In cs i gulags sono dinamici al contrario di soc
- si potresti fare qualche cosa del genere:
nel metodo evaluate della classe evaluator_danger
In questo modo quando my_flag è positiva, lo schema non verrà eseguito. Vabbè questo è solo un esempio, poi te l'ottimizzi stesso tu il codice ;)Codice:
if my_flag then
return false
end
Nessun effetto cambiando questo in xr_danger:
E lasciando sotto intoccato così nell'evaluator_danger:evaluate():Citazione:
local always_ignore_danger_from = { actor = "true" }
Non potresti suggerirmi del codice vero?Citazione:
if best_danger_section_name ~= nil then
if always_ignore_danger_from[best_danger_section_name] == "true" then
printf("DANGER [%s] [FALSE] forbidded", self.object:name())
return false
end
end
xdiesp posso chiederti a cosa stai lavorando??
Se non sbaglio stai cercando un modo per rendere più stealth stalker??
Ps: Se non trovo le munizioni sui cadaveri ma solo le armi o gli oggetti, che file ne è responsabile???
i file death_items... e death_generic non li ho modificati!!!
Boris47: sì, è un mod stealth che cambia la storia in quella di MGS4. Ma c'è il problema che l'invisibilità nella forma odierna ha un bug, serve un coder che mi dia una mano a farla.
:DSono solo un appassionato modder e se tutto va bene futuro scripter, ma non ho le competene per aiutarti purtroppo:sad:
fortuna ch c'e Griph:D
Edit: xdiesp comunque, io lavoro su SoC ma forse anche in Cs c'è, in xr_logic ho trovato questo
function see_actor(npc)
return npc:alive() and npc:see(db.actor)
end
se abbini questa funzione a qualche condizione????
se sbaglio qlkosa scusatemi non sono pratico
Grazie, oggi proverò con il tuo codice. Fondamentalmente vorrei provocare l'invisibilità: come Crysis...
Purtroppo posso fare giusto un paio di tentativi al giorno da un amico (scheda grafica fritta). Se vuoi fare qualche tentativo con SOC, ti metto pure al mio posto nei credits :lol:
Ok, proviamo a fare qualcosa, in sintesi ti serve del codice che faccia si che gli altri npc che renda gli npc cechi per alcuni secondi.
Prova un pò questo codice, io non ho avuto tempo per testarlo, perciò ti lascio a te la parte + divertente :DCodice:start_time = nil
duration = 10 * 1000 -- 10000 ms
disable_combat_schemes = {}
function update()
local obj = nil
if start_time == nil then
start_time = time_global()
end
if start_time + duration > time_global() then
for k, v in pairs(db.storage) do
obj = level.object_by_id(k)
if obj then
if not IsMonster(obj) then
if obj:relation(db.actor) == game_object.enemy then
disable_combat_schemes[obj:id()] = true
obj:enable_memory_object(db.actor, false)
end
end
end
end
else
for k, v in pairs(db.storage) do
obj = level.object_by_id(k)
if obj then
if not IsMonster(obj) then
if obj:relation(db.actor) == game_object.enemy then
disable_combat_schemes[obj:id()] = false
obj:enable_memory_object(db.actor, true)
end
end
end
end
start_time = nil
end
end
--[[
utilizzo:
nell'actor_binder, nel metodo update, p.e.:
if my_flag then
my_file.update()
end
xr_combat.script:
function evaluator_enemy:evaluate()
return self.object:best_enemy() ~= nil and
not my_file.disable_combat_schemes[self.object]
end
xr_combat_monolith.script:
function evaluator_see:evaluate()
local be = self.object:best_enemy()
if self.object:alive() and be and self.object:see( be ) and
not my_file.disable_combat_schemes[self.object]
then
self.st.last_seen_vert_id = be:level_vertex_id()
return true
else
return false
end
end
]]
Mi crasha all'avvio, ma magari è colpa mia: ho fatto un file my_file.script con dentro il grosso del codice, poi in binder_stalker.script (in on_item_drop) ho messo prima:
E poi (in update):Citazione:
local my_flag = 0;
if obj:section() == "bandage" then
my_flag = 1;
end
Infine il codice di xr_combat in "class evaluator_check_combat" e quello per xr_combat_monolith in "class "evaluator_combat_monolith".Citazione:
if my_flag then
my_file.update()
end
edit
Il log dice:
Citazione:
l'errore sta alla linea 73 di stalker\sources\trunk\xr_3da\xrGame\script_engine. cpp
LUA error: f:\stalker\gamedata\scripts\xr_logic.script:225: attempt to call field 'disable_scheme' (a nil value
Scusa Griph ma il file xr_combat_ignore.script cosa fa se non far si che i nemici non ti attacchino?
No xdiesp, in quel modo il codice verrà sempre eseguito perchè in lua solo false e nil sono valori falsi, e quindi 0 è considerato vero.
Invece per il fatto del log, dovresti avere un qualche errore di sintassi oppure hai cancellato una funzione :sisi:
Prova un pò se no proviamo un'altra via :sisi: :ciaociao:
Il codice mio sta tutto qua sopra, quello con my_scheme l'ho copiato e incollato... Anche a Boris47 sembra crashare, purtroppo non so dire se in my_scheme ci sia una virgola che manca o simili. Heeeeeelp!
edit
E se non funzionasse, ho un nuovo piano: rendere gli npc ciechi nella nebbia (in m_stalker) e provocare il tempo nebbioso con uno script. A seconda di quanta ne fosse necessaria per renderli belli cecati, potrei dover togliere la nebbia dai tempi restanti. Resta da vedere quanto si noti l'effetto su schermo: lo posso camuffare con uno shader, ma non so quanto.