ProjectsWhat's NewDownloadsCommunitySupportCompany
Forum Index » S.T.A.L.K.E.R.: Shadow of Chernobyl Forum » Mod discussion
How to mod Stalker (most questions answered)

« Previous 10 events | 1 ... 11 12 13 14 15 16 17 18 19 ... 67 | Next 10 events »
Posted by/on
Question/AnswerMake Oldest Up Sort by Ascending
  19:45:12  3 May 2010
profilee-mailreply Message URLTo the Top
Robberbaron
Bangalore
(Resident)

 

 
On forum: 08/06/2009
Messages: 614

---QUOTATION---
It doesn't open AI maps version 10 (CoP and CS) Only generated from level source (LevelEditor) and compiled with xrAI and SoC.
---END QUOTATION---



It's a program from July 2008... You posted on COP forum section, that it can load and show COP game.graph (section4.bin).
It's a decent tool, it can open graphs made with different xrAI!

I thought ai map didn't changed in the 3 stalkers, it's more surprising.
  18:40:16  3 May 2010
profilee-mailreply Message URLTo the Top
mnn
Senior Resident
 

 
On forum: 06/12/2009
 

Message edited by:
mnn
05/03/2010 18:41:55
Messages: 2694
It doesn't open AI maps version 10 (CoP and CS) Only generated from level source (LevelEditor) and compiled with xrAI and SoC.
  15:53:28  3 May 2010
profilee-mailreply Message URLTo the Top
Robberbaron
Bangalore
(Resident)

 

 
On forum: 08/06/2009
 

Message edited by:
Robberbaron
05/03/2010 16:38:00
Messages: 614
Since there is no new thread about tools, I post it here:

English translation of GraphViewer for SOC (tested on SOC graphs and ai maps only):

Credit for IG-2007, translated by me.
Some lines are not translated, I couldn't find opportunity to change them, maybe later.

Features:
- can load and graphically display level.graph, game.graph, and *.ai files (ai maps)
- can load and graphically draw way_*.ltx files, and displays waypoints and ways directly on graph maps and on ai maps (can load ltx which was decompiled with acdc from all.spawn)
- it can display tons of useful info of a specific point if you click on map with right mouse button (lvid, gvid, distance, coordinates, see the rest)

http://www.sendspace.com/file/a6vnk3
  00:55:30  2 May 2010
profilee-mailreply Message URLTo the Top
Nuor
Senior Resident
 

 
On forum: 03/10/2009
 

Message edited by:
Nuor
05/02/2010 0:56:35
Messages: 735

---QUOTATION---
hit() can be used to define the type of damage meted out, but is there a way to determine the specific damage type that a player is being hit by? I would think so as armor is able to distinguish between them when absorbing damage but I haven't stumbled across it.
Nuor, I would first try xr_motivator.script's motivator_binder:hit_callback() function, specifically the section that says if self.st.hit then [...] end. The hit member should be a normal hit() object, so you can probably access self.st.hit.type for self.object:id() == db.actor:id() (or ... == 0).

That is, I think the actor is also updated this way. It's worth a try.

Edit: Maybe not. I shouldn't post when I'm mostly asleep -- xr_motivator is for the other NPCs but I keep forgetting they are not like the actor. Instead, try adding a callback for callback.hit in bind_stalker.script, similar to the other callbacks used for the actor. Clone one of the other callbacks and emulate its support. Also see lua_help.script's callback class.

---END QUOTATION---


Natvac. I've little experience with callbacks but I think I can manage one. What isn't clear to me is how to retrieve the information contained in table "h" of hit(h). The callback in xr.motivator seems to have the damage amount but I don't see a reference to the other damage data.

I could use the callback to trigger an examination of the "h" table if I knew how to access that table. Might it be in db.storage ?
thanks again for the information
Nuor
  01:24:38  29 April 2010
profilee-mailreply Message URLTo the Top
NatVac
Senior Resident
 

 
On forum: 06/15/2007
Messages: 4281
Um, I don't recommend using [l01_escape_killers], stooe. That is a custom preset, assigned for a particular purpose; the devs want only experienced mercs attacking Fanatic's rookies at that point in the game.

Also, since it is a custom preset, it is not used unless explicitly referenced by your smart terrain. You should add your killer entry to the [l01_escape] section as I mentioned.

Hopefully, your version of config\misc\smart_terrain_presets.ltx is the same as the vanilla one except for your additions. Just add the killer line after the stalker, military, and bandit ones.

You can include "veteran" if you wish.
  00:28:17  29 April 2010
profilee-mailreply Message URLTo the Top
stooe
Who?
(Resident)

 

 
On forum: 06/02/2009
 

Message edited by:
stooe
04/29/2010 0:31:32
Messages: 655
heya Natvac,

I corrected the errors which you had pointed out, and also created a smart_terrains_presets.ltx after peeking around in the Vanilla file (I copy pasted the code which you had mentioned, and adjusted it for use on all ranks except for one which I cant remember):

[l01_escape_killers]
killer = experienced, novice, master



I then moved the npc to spawn inside of the smart_terrain, and decreased the size of the smart_terrain, but he inevitably wanders off into an anomaly field nearby, which leads me to believe that something in the way_l01_escape file needs to be changed as well (or I need to make a new one from scratch), after looking around in the file I spotted a section for mercs:

[pri_b306_merc_1_look]
points = p0
p0:name = wp00
p0:flags = 0x1
p0 osition = -82.1869735717773,0.402189999818802,97.3943328857422
p0:game_vertex_id = 15
p0:level_vertex_id = 108181


[pri_b306_merc_1_walk]
points = p0
p0:name = wp00
p0:flags = 0x1
p0 osition = -82.0290374755859,0.402188986539841,107.848297119141
p0:game_vertex_id = 15
p0:level_vertex_id = 108249


I see that they take coordinates, game vertex, and level vertex id's but I cant seem to make any other sense of it then that :\ so im sort of stumped until a tut. is written on Mod wiki haha.
  12:19:12  27 April 2010
profilee-mailreply Message URLTo the Top
NatVac
Senior Resident
 

 
On forum: 06/15/2007
 

Message edited by:
NatVac
04/28/2010 9:20:26
Messages: 4281

---QUOTATION---
hit() can be used to define the type of damage meted out, but is there a way to determine the specific damage type that a player is being hit by? I would think so as armor is able to distinguish between them when absorbing damage but I haven't stumbled across it.
---END QUOTATION---


Nuor, I would first try xr_motivator.script's motivator_binder:hit_callback() function, specifically the section that says if self.st.hit then [...] end. The hit member should be a normal hit() object, so you can probably access self.st.hit.type for self.object:id() == db.actor:id() (or ... == 0).

That is, I think the actor is also updated this way. It's worth a try.

Edit: Maybe not. I shouldn't post when I'm mostly asleep -- xr_motivator is for the other NPCs but I keep forgetting they are not like the actor. Instead, try adding a callback for callback.hit in bind_stalker.script, similar to the other callbacks used for the actor. Clone one of the other callbacks and emulate its support. Also see lua_help.script's callback class.

¯¯¯¯¯¯¯¯¯¯
stooe, a couple of things to look at, although by this time you've probably figured them out:

>> t.section = "logic@esc_bandits_smart_terrain_bandit1_walker"

Shouldn't that be "logic@pri_merc_smart_terrain_merc1_walker"?

And check to make sure mercs are added to [l01_escape] in smart_terrain_presets.ltx. I know there's a section for [l01_escape_killers], but that's a custom preset used for the esc_killers smart terrain in alife_l01_escape.ltx in the all.spawn -- and it is limited to experienced mercs.
  10:23:00  27 April 2010
profilee-mailreply Message URLTo the Top
Meltac
messing with code
(Resident)

 

 
On forum: 01/21/2010
Messages: 1519

---QUOTATION---
Thanks for the link. At a glance that appears to have a workaround. Seems to take advantage of the order that data is read and introduces a temporary placeholder to mark the end location of the main inventory bag and is then able to filter all successive entries as belt items. Veeeery sneaky .
---END QUOTATION---



I see you did understand more than I did Anyway, thanks for the clarification.
  21:45:04  25 April 2010
profilee-mailreply Message URLTo the Top
stooe
Who?
(Resident)

 

 
On forum: 06/02/2009
 

Message edited by:
stooe
04/25/2010 21:57:32
Messages: 655
Smart Terrain help

Hello,


This is the NPC spawned that is supposed to walk to his Smart Terrain.
(all.spawn)

[1]
; cse_abstract properties
section_name = stalker
name = merc1
position = -100.842300415039,-0.506888926029205,-393.515502929688
direction = 0,-0,0

; cse_alife_trader_abstract properties
money = 5000
character_profile = bar_Killer_regular

; cse_alife_object properties
game_vertex_id = 16
distance = 7
level_vertex_id = 90664
object_flags = 0xffffffff
custom_data = <<END
[smart_terrains]
pri_merc_smart_terrain = true
END

; cse_visual properties
visual_name = actors\killer\stalker_ki_mask

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 5
g_group = 7
health = 1
dynamic_out_restrictions =
dynamic_in_restrictions =

upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0
upd osition = -100.842300415039,-0.506888926029205,-393.515502929688
upd _model = 0
upd _torso = -0,0,0
upd:g_team = 0
upd:g_squad = 5
upd:g_group = 7

; cse_alife_monster_abstract properties

upd:next_game_vertex_id = 16
upd rev_game_vertex_id = 16
upd:distance_from_point = 0
upd:distance_to_point = 0

; cse_alife_human_abstract properties
predicate5 = 0,2,2,2,0
predicate4 = 2,1,1,0

; cse_ph_skeleton properties

upd:start_dialog =

; se_stalker properties




this is the smart terrain. (all.spawn)

[119]
; cse_abstract properties
section_name = smart_terrain
name = pri_merc_smart_terrain
position = 65.984367370605,0.34466609358788,370.92626953125
direction = 0,0,07

; cse_alife_object properties
game_vertex_id = 45
distance = 1.39999997615814
level_vertex_id = 284735
object_flags = 0xffffff3e
custom_data = <<END
[smart_terrain]
type = pri_merc_smart_terrain
capacity = 1
groups = 0,12
END

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0 ffset = 0,0,0
shape0:radius = 20.07892799377441

; cse_alife_space_restrictor properties
restrictor_type = 0

; se_smart_terrain properties




this is the code from (gulag_escape.ltx) to go with the NPC

;-- merc1 (guard -> state 0, i.e. during day)
[logic@pri_merc_smart_terrain_merc1_walker]
active = walker@pri_merc_smart_terrain_merc1

[walker@pri_merc_smart_terrain_merc1]
path_walk = merc1_walk
path_look = merc1_look
danger = danger_condition@pri_merc_smart_terrain_merc1

;-- merc1 (kamp -> state 1, i.e. during night)
[logic@pri_merc_smart_terrain_merc1_kamp]
active = kamp@pri_merc_smart_terrain_merc1

[kamp@pri_merc_smart_terrain_merc1]
center_point = merc_kamp
path_walk = merc_kamp_task

[danger_condition@pri_merc_smart_terrain]
ignore_distance_corpse = 0
ignore_distance = 0




this is the snippet from (gulag_escape.script) to go with the NPC


if type == "pri_merc_smart_terrain" then
t = {}
;-- section is a "link" to logic defined in ltx file
t.section = "logic@esc_bandits_smart_terrain_bandit1_walker"
;-- no idea, probably describes after what time
;-- npc will use this job again (?)
t.idle = 0
;-- no idea but i guess it's optional
t.timeout = 0
;-- priority
t.prior = 100
;-- npc will use this logic if ST switched to this state
;-- in this case - state 0 (day)
t.state = {0}
;-- no idea about squad and group
t.squad = squad
t.group = groups[1]
;-- no idea what means position_threshold
t.position_threshold = 100
;-- describes whether npc in this state is online or offline
;-- online = true by default
t.online = true
;-- describes restrictors (where npc can/can't go)
t.in_rest = ""
t.out_rest = ""
;-- because of the way how jobs are assigning by
;-- smart_terrain.script you never know which job
;-- will be used by which npc; if you want to ensure
;-- that certain job is used by certain npc then
;-- you have to use predicate function; in this case
;-- we want this job to be used by expert (master) bandit
t.predicate = function(obj_info) return obj_info.rank >= 900 end
table.insert(sj, t)

t = {section = "logic@pri_merc_smart_terrain_merc1_guard",
idle = 0, timeout = 0, prior = 100, state = {1},squad = squad,
group = groups[1], position_threshold = 100, online = true, in_rest = "",
out_rest = "", predicate = function(obj_info) return obj_info.rank >= 900 end}
table.insert(sj, t)

;-- merc1 -> state 0 (day)
t = {section = "logic@pri_merc_smart_terrain_merc1_guard",
idle = 0, prior = 100, state = {1}, squad = squad, group = groups[1],
in_rest = "", out_rest = ""}
table.insert(sj, t)

;-- merc1 -> state 1 (night)
t = {section = "logic@pri_merc_smart_terrain_merc1_kamp",
idle = 0, prior = 5, state = {0, 1}, squad = squad, group = groups[1],
in_rest = "", out_rest = ""}
table.insert(sj, t)
end


now when this NPC spawns, it does not walk to the smart terrain. Instead it aimlessely wanders as if the line pri_merc_smart_terrain = true actually says none = true

did I miss any sections or files which needed to be edited?

a side note, I started these files from scratch.

thank you
  00:52:49  24 April 2010
profilee-mailreply Message URLTo the Top
Nuor
Senior Resident
 

 
On forum: 03/10/2009
Messages: 735
Is there a test to determine "damage type" when Hit.

hit() can be used to define the type of damage meted out, but is there a way to determine the specific damage type that a player is being hit by? I would think so as armor is able to distinguish between them when absorbing damage but I haven't stumbled across it.

The questions are never ending.
Thanks again as usual,
Nuor
 
Each word should be at least 3 characters long.
Search:    
Search conditions:    - spaces as AND    - spaces as OR   
 
Forum Index » S.T.A.L.K.E.R.: Shadow of Chernobyl Forum » Mod discussion
 

All short dates are in Month-Day-Year format.


 

Copyright © 1995-2020 GSC Game World. All rights reserved.
This site is best viewed in Internet Explorer 4.xx and up and Javascript enabled. Webmaster.
Opera Software products are not supported.
If any problem concerning the site functioning under Opera Software appears apply
to Opera Software technical support service.