ProjectsWhat's NewDownloadsCommunitySupportCompany
Forum Index » S.T.A.L.K.E.R.: Shadow of Chernobyl Forum » Mod discussion
New Redux for SoC

« Previous 10 events | 1 ... 3 4 5 6 7 8 9 | Next 10 events »| All Messages
Posted by/on
Question/AnswerMake Newest Up Sort by Descending
  11:22:53  20 October 2012
profilee-mailreply Message URLTo the Top
Daemonion
All About Audio
(Resident)

 

 
On forum: 09/27/2011
Messages: 567

---QUOTATION---
spawn-taneity
---END QUOTATION---




Thanks, I'll read up on it.
  12:37:53  20 October 2012
profilee-mailreply Message URLTo the Top
Muad'Dib
Senior Resident
 

 
On forum: 01/24/2011
Messages: 421
@Natvac:

"Folks need to think in terms of systems. Yes, the feature is nifty and addresses a "problem" to make the Zone seem more alive. You should ask the folks who added rabbits to deal with the problem of a specific weed, and then had to add coyotes to control the rabbit overpopulation (they weren't just eating the weeds -- they liked the farm crops, too) and then tried something like bobcats to manage the coyotes."

Ok. I understand the problem.

"But you would have to do that for every critical storyline character."

I don't have the knowkledge to make it. So, i'll delete the offline mod and maybe the iwers mod too.
I don't want to use immortal npc. I don't like it.

This type of mods is good for freeplay, not for storyline.

Thanks you again.
  13:18:35  20 October 2012
profilee-mailreply Message URLTo the Top
NatVac
Senior Resident
 

 
On forum: 06/15/2007
Messages: 4286
I'm tired, Borovos91; I just realized I answered an email of yours where you went into some detail about the problem with Bes and the lookout if the lookout dies before the raid on the vehicle graveyard starts. That context was missing in my earlier reply.

STALKER has quite a few fragile scripted events, so some simple change from the expected can break them as you saw in your situation.

It's probably not the iwers stuff. I'm guessing the lookout did not die between the time you reached the Garbage and the time you talked with Bes. Mutants moving from one point to another could kill him, but they'd do that in vanilla if the timing was just right (which might make this a vanilla bug, although very rare). I'll give the logic a quick check later.

I do have several scripted events on the list for tweaking, but they are low priority. One thing that breaks some scripts is saving in the middle of a scripted event, and then loading that save. Example: Bullet's rescue of his buddy.

>> I don't want to use immortal npc. I don't like it.

Good. Immersion problems aside, it is just not fun for me to try to rescue Kruglov when he can't die. Defending the hangar with an immortal Seriy means I can't lose the battle, but I've already lost the motivation to continue.
  14:50:34  20 October 2012
profilee-mailreply Message URLTo the Top
Muad'Dib
Senior Resident
 

 
On forum: 01/24/2011
Messages: 421
>>I just realized I answered an email
No problem, i understand your answer.

I removed the Offline A-Life only (2 files and few lines in bind_stalker). Now, it's ok, the observer stalker didn't die. And i prefer that.

>>I'll give the logic a quick check later.
No thanks. It is not necessary. The problem is solved.

The game will be more difficult with ai pack+ai addition. I need to thanks you again. It's just that my mod needed.
  03:31:28  21 October 2012
profilee-mailreply Message URLTo the Top
Muad'Dib
Senior Resident
 

 
On forum: 01/24/2011
 

Message edited by:
Muad'Dib
10/21/2012 3:36:08
Messages: 421
The idea

I want to use winter features from the russian Nature Winter v2.3 Black Edition mod
[link]https://www.gsc-game.com/index.php?t=community&s=forums&s_game_type=xr&thm_page=189&thm_id=21730&page=2&sort=ASC&sec_id=16[/link]


---QUOTATION---
Winter features:
• Cold:
- Now the main character can freeze and die.
- The specific suit protects against certain zero temperatures. So watch out for the thermometer.
- If the weapon is not in the backpack, and behind your back or on your belt - it can also deteriorate / freeze.
• Heat:
- Now you can warm up by the fire.
- Marked with a warming zone 86.
---END QUOTATION---



I took all .script files that i need and I'll modify it to create this features:

By night, it decrease health/endurance and increase satiety.
Just a little, my mod isn't a winter mod, it's a "autumn" mod with few night/morning frost.

When it's raining, it decrease endurance and decrease the weapon condition. The rain damage the weapon and the wet clothes are heavier.
I know how modify script to create this features (actor health and weapon condition). It's fine.

The problem:

Nature Winter mod include a space restrictor for each campfires.
They are spawn by script like this:

--Escape
function esc_spawn1_zone()
local se_obj = alife():create("space_restrictor",vector():set(-206.853,-19.663,-140.029),45944,61)
local custom = "[logic]\n"..
"active = sr_idle\n"..
"[sr_idle]\n"..
"on_actor_inside = %+space_heat_zone%"
rewrite_restrictor(se_obj, custom, 2.0)
--/ ñòàâèì ìåòêó íà ðåñòðèêòîð
level.map_add_object_spot_ser(se_obj.id, "crlc_small", "Çîíà ñîãðåâà"
end


And they increase health (the heat is good for frozen stalkers):

function warmed_health()
db.actor.health = 0.005
db.actor:disable_info_portion("space_heat_zone"
end


It's a good thing. By night, the player could take comfort near a campire. I like this idea.

But i used dynamic campfire in my mod. So, there is space restrictor with health increase near dead fire
And it's stupid.

Other thing, i saw db.actor.health, but i didn't find thing like db.actor.satiety or db.actor.power.

The solution? Your help is welcome here

- First, do you know how decrease power by script? Do you know how increase hunger by script too?

- About space restrictor, i need to spawn all of them by all.spawn for mod stability.
I can make it.

- I need to control this spaces restrictors and turn on/off like zone_flame_small in dynamic campfire :
if npc are on the smarties, the zone_flame_small is enable. If population is 0, the particle change.

I know that a anomaly can be turn on/off by this way :
function enable_anomaly
function disable_anomaly

I didn't find the same function for space restrictor.
Could i use function can_switch_online / can_switch_offline to control them?

My space restrictor spawn
; cse_abstract properties
section_name = space_restrictor
name = my_space_restrictor_0001
position = same coordinate as the zone_flame_small_001 from escape
direction = 0,0,0

; cse_alife_object properties
game_vertex_id = 0
distance = 0
level_vertex_id = 594270
object_flags = 0xffffffbe
custom_data = <<END
[logic]
active = sr_idle
[sr_idle]
on_actor_inside = %+space_heat_zone%"
END

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

; cse_alife_space_restrictor properties
restrictor_type = 3


The health restore script (come from winter mod):
function warmed_health()
db.actor.health = 0.005
db.actor:disable_info_portion("space_heat_zone"
end


xr_kamp.script:

-->> Dynamic campfire mod
local camp_tbl = {
["esc2_st_fabric_kamp_1"] = {"zone_flame_small_0001", "lights_camp_fire_omni_r1_r2_0001","my_space_restrictor_0001"},
........all smarties with zone_flame_small, light and restrictor
}

lvl_objs = {}
local kamps_info = {}

function CKampManager:increasePops(npc)
self.population = self.population + 1
local camp_name = camp_tbl[self.kamp_name]
if self.population == 1 and camp_name then
local flame = camp_name[1]
local light = camp_name[2]
local restrictor = camp_name [3]

-- kamps_info[self.kamp_name] = nil
-- if not kamps_info[self.kamp_name] then
kamps_info[self.kamp_name] = {}
kamps_info[self.kamp_name].time = time_global()
kamps_info[self.kamp_name].prtcl = nil
kamps_info[self.kamp_name].state = nil
-- end

for i,o in pairs(lvl_objs) do
local obj = o
if obj and obj:name() == flame then
kamps_info[self.kamp_name].obj_fire = obj
obj:enable_anomaly()
end
if obj and obj:name() == light then
kamps_info[self.kamp_name].obj_light = obj
end
if obj and obj:name() == restrictor then
kamps_info[self.kamp_name].obj_restrictor = obj
end

end
end
end

function CKampManager:decreasePops(npc)
self.population = self.population - 1
local camp_name = camp_tbl[self.kamp_name]
if self.population < 1 and camp_name then
local flame = camp_name[1]
local light = camp_name[2]
local restrictor = camp_name [3]

-- if not kamps_info[self.kamp_name] then
kamps_info[self.kamp_name] = {}
kamps_info[self.kamp_name].time = time_global()
kamps_info[self.kamp_name].prtcl = particles_object("dyn_kfire\\dyingfire"
kamps_info[self.kamp_name].state = nil
-- end

for i,o in pairs(lvl_objs) do
local obj = o
if obj and obj:name() == flame then
kamps_info[self.kamp_name].obj_fire = obj
end
if obj and obj:name() == light then
kamps_info[self.kamp_name].obj_light = obj
end
if obj and obj:name() == restrictor then
kamps_info[self.kamp_name].obj_restrictor = obj
end

end
end
end

function update(time)
for i,v in pairs(kamps_info) do
local kamp_name = i
local kamp_fire = v.obj_fire
local kamp_light = v.obj_light
local kamp_time = v.time
local kamp_prtcl = v.prtcl
local kamp_state = v.state
local kamp_restrictor = v.restrictor

if kamp_fire and kamp_light then
if kamp_prtcl == nil and kamp_time + 5000 < time then
kamp_light:get_hanging_lamp():turn_on()
kamps_info[kamp_name] = nil
end

if kamp_prtcl then
if kamp_state == nil and kamp_time + 10000 < time then
kamps_info[kamp_name].state = 1
kamp_prtcl lay_at_pos(kamp_fire osition())
end

if kamp_time + 15000 < time then
kamp_fire:disable_anomaly()
end

if kamp_time + 20000 < time then
kamp_restrictor:can_switch_offline()
end


if kamp_time + 48000 < time then
kamp_light:get_hanging_lamp():turn_off()
end

if kamp_time + 120000 < time then
kamp_prtcl:stop()
kamps_info[kamp_name] = nil
end
end
end
end
end
--<< Dynamic campfire mod


Do you think that it could work? I don't have time to test it now. Maybe tomorow.
So, if you have comments, I'm listening.

Thanks.
  08:17:18  21 October 2012
profilee-mailreply Message URLTo the Top
Vintar
a bit of this and a lot of that
(Resident)

 

 
On forum: 08/08/2008
Messages: 6349
Eh seems your camp fires are getting a bit technical now
one thing you could do is to check actors health when entering the restrictor and only give the info if it is below a certain amount, No need to switch it offline, just make it do nothing if the right conditions arent met.
  16:51:58  21 October 2012
profilee-mailreply Message URLTo the Top
Muad'Dib
Senior Resident
 

 
On forum: 01/24/2011
 

Message edited by:
Muad'Dib
10/21/2012 16:53:33
Messages: 421

---QUOTATION---
Eh seems your camp fires are getting a bit technical now
one thing you could do is to check actors health when entering the restrictor and only give the info if it is below a certain amount
---END QUOTATION---



I only want to add one new parameter to Xiani campfire.

Okay, you said check actors health, like this:

function warmed_health()
if db.actor.health < 0.01 and db.actor:alive() then
db.actor:kill( db.actor )
end
if db.actor.health > 0.01 and db.actor:alive() then
db.actor.health = 0.005
db.actor:disable_info_portion("space_heat_zone"
end
end


Is it good?


---QUOTATION---
No need to switch it offline, just make it do nothing if the right conditions arent met.
---END QUOTATION---



I don't know how make it.
And i have a big problem.

"! Unknown command: dbg:_ABORT()_called:__object_'my_space_restrictor_0001':_activate_by_section:_section_'"'_does_not_exist"

So, the script isn't good.


local camp_tbl = {
["esc2_st_fabric_kamp_1"] = {"zone_flame_small_0001", "lights_camp_fire_omni_r1_r2_0001", "my_space_restrictor_0001"},
["esc_bridge_kamp_point"] = {"zone_flame_small_0002", "lights_camp_fire_omni_r1_r2_0002", "my_space_restrictor_0002"},
["esc_lager_camp_center"] = {"zone_flame_small_0004", "lights_camp_fire_omni_r1_r2_0004", "my_space_restrictor_0004"},
["esc_killers_kamp"] = {"zone_flame_small_0004", "lights_camp_fire_omni_r1_r2_0004", "my_space_restrictor_0004"},
["esc_blokpost_kamp"] = {"zone_flame_small_0005", "lights_camp_fire_omni_r1_r2_0005", "my_space_restrictor_0005"},
["esc2_most_kamp_1"] = {"zone_flame_small_0006", "lights_camp_fire_omni_r1_r2_0006", "my_space_restrictor_0006"},
["esc_assault_kamp_center1"] = {"zone_flame_small_0007", "lights_camp_fire_omni_r1_r2_0007", "my_space_restrictor_0007"},
["esc_fabrika_bandit_camp_center"] = {"zone_flame_small_0007", "lights_camp_fire_omni_r1_r2_0007", "my_space_restrictor_0007"},
["esc2_st_fabric_kamp_2"] = {"zone_flame_small_0007", "lights_camp_fire_omni_r1_r2_0007", "my_space_restrictor_0007"},
["esc2_bandit_les_kamp_1"] = {"zone_flame_small_0008", "lights_camp_fire_omni_r1_r2_0008", "my_space_restrictor_0008"},
["esc_stalker_camp_esc_fox_kamp"] = {"zone_flame_small_0009", "lights_camp_fire_omni_r1_r2_0009", "my_space_restrictor_0009"},
["esc2_st_fox_place_kamp_1"] = {"zone_flame_small_0009", "lights_camp_fire_omni_r1_r2_0009", "my_space_restrictor_0009"},
["esc_stalker_camp_camp_point"] = {"zone_flame_small_0009", "lights_camp_fire_omni_r1_r2_0009", "my_space_restrictor_0009"}
}

=>> in this table, the third value correspond to each space_restrictor in all.spawn


function CKampManager:increasePops(npc)
self.population = self.population + 1
local camp_name = camp_tbl[self.kamp_name]
if self.population == 1 and camp_name then
local flame = camp_name[1]
local light = camp_name[2]
local restrictor = camp_name[3] ==>> this line is good, it call the third value in the previous table

-- kamps_info[self.kamp_name] = nil
-- if not kamps_info[self.kamp_name] then
kamps_info[self.kamp_name] = {}
kamps_info[self.kamp_name].time = time_global()
kamps_info[self.kamp_name].prtcl = nil
kamps_info[self.kamp_name].state = nil
-- end

for i,o in pairs(lvl_objs) do
local obj = o
if obj and obj:name() == flame then
kamps_info[self.kamp_name].obj_fire = obj
obj:enable_anomaly()
end
if obj and obj:name() == light then
kamps_info[self.kamp_name].obj_light = obj
end
if obj and obj:name() == restrictor then ==>> my problem is here, maybe it isn't the good obj name.
kamps_info[self.kamp_name].obj_restrictor = obj
end
end
end
end


I replaced "restrictor" by "space_restrictor":

function CKampManager:increasePops(npc)
self.population = self.population + 1
local camp_name = camp_tbl[self.kamp_name]
if self.population == 1 and camp_name then
local flame = camp_name[1]
local light = camp_name[2]
local space_restrictor = camp_name [3]

-- kamps_info[self.kamp_name] = nil
-- if not kamps_info[self.kamp_name] then
kamps_info[self.kamp_name] = {}
kamps_info[self.kamp_name].time = time_global()
kamps_info[self.kamp_name].prtcl = nil
kamps_info[self.kamp_name].state = nil
-- end

for i,o in pairs(lvl_objs) do
local obj = o
if obj and obj:name() == flame then
kamps_info[self.kamp_name].obj_fire = obj
obj:enable_anomaly()
end
if obj and obj:name() == light then
kamps_info[self.kamp_name].obj_light = obj
end
if obj and obj:name() == space_restrictor then
kamps_info[self.kamp_name].obj_space_restrictor = obj
end
end
end
end


But nope, it isn't that. And i don't understand, the [space_restrictor] object exist in system.ltx. So, the object name is good in theory.
[space_restrictor]
GroupControlSection = spawn_group_restrictor
$spawn = "ai\space_restrictor"
;$prefetch = 64
class = SPC_RS_S
script_binding = bind_restrictor.bind


So, i think it's caused by this line:
for i,o in pairs(lvl_objs) do

As i added a new value in table, maybe it can not run it.

Please, i need help.
  20:48:47  21 October 2012
profilee-mailreply Message URLTo the Top
ddraig
Senior Resident
 

 
On forum: 06/19/2012
 

Message edited by:
ddraig
10/21/2012 20:49:56
Messages: 158
I'm not sure how helpful this is, but I remember checking out the medicines script in DMX for a few ideas and noticed how they do psy-protection.


function psy_blockade_protection(delta)
    local psy_health_speed = 0.0001
    if has_alife_info("psy_blockade_info") then
        db.actor.psy_health = psy_health_speed * delta
    end
end



I imagine you could use the same thing to have a slowly declining health/satiety system in cold weather.

Maybe once cold weather hits, you could give a persistent info portion that slowly increases health/hunger damage rates, and once you get into a fire space restrictor it removes that info portion?
  21:18:39  21 October 2012
profilee-mailreply Message URLTo the Top
Muad'Dib
Senior Resident
 

 
On forum: 01/24/2011
Messages: 421

---QUOTATION---
I'm not sure how helpful this is, but I remember checking out the medicines script in DMX for a few ideas and noticed how they do psy-protection.


function psy_blockade_protection(delta)
    local psy_health_speed = 0.0001
    if has_alife_info("psy_blockade_info") then
        db.actor.psy_health = psy_health_speed * delta
    end
end



I imagine you could use the same thing to have a slowly declining health/satiety system in cold weather.

Maybe once cold weather hits, you could give a persistent info portion that slowly increases health/hunger damage rates, and once you get into a fire space restrictor it removes that info portion?
---END QUOTATION---



Thanks. The mod that I used include script for decrease health and space restrictor to restore health. I found how change endurance.

It's as you said:
db.actor.health
db.actor.power
db.actor.psy_health
...

I'll test db.actor.satiety.

I'm refining values for health and power.
And my temperature system isn't perfect. I need to correct it.

But the turn on/off of space restrictor is always a problem for me.
  21:15:23  26 October 2012
profilee-mailreply Message URLTo the Top
Muad'Dib
Senior Resident
 

 
On forum: 01/24/2011
Messages: 421
Update:

Now, i added three factions Dark Stalker and Sin, with a ecolog standalone.
I'm testing the iwers mod method like in this Bamah post:

[link]https://www.gsc-game.com/index.php?t=community&s=forums&s_game_type=xr&thm_page=161&thm_id=20506&page=6&sort=ASC&sec_id=16[/link]

But i obtain bad things. And i don't like this.
At the same place in garbage, i saw bandits, duty and ecolog.
At the next place, i saw killer and bandits that killed neutral npc.

As i want to use the vanilla storyline, i could not use the amk offline alife mod.
Without it, the migrate of different faction isn't realistic and balance.

I think that i need to edit my all.spawn and smart_terrain_preset to reduce drastically the number of different factions at the same place.

I only change few smarties to permit the migrate of Sin, Dark stalker. I'll make the same thing for ecolog in Yantar.

To summarize, i could not add a good faction war.
 
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.