ProjectsWhat's NewDownloadsCommunitySupportCompany
Forum Index » S.T.A.L.K.E.R.: Shadow of Chernobyl Forum » Mod discussion
Calling Script Functions on Actor Firing Weapon

1 2 3 4
Posted by/on
Question/AnswerMake Newest Up Sort by Descending
  05:50:11  12 July 2013
profilee-mailreply Message URLTo the Top
TKGP
Senior Resident
 

 
On forum: 01/25/2013
Messages: 454
Calling Script Functions on Actor Firing Weapon

Pretty much as the title says, I'd like to know if it's possible to trigger functions when the player shoots their gun. And hopefully, to detect only when a specific type of gun is fired.
Thanks in advance for your help!
  17:23:45  12 July 2013
profilee-mailreply Message URLTo the Top
Jketiynu
Swartz
(Resident)

 

 
On forum: 04/05/2007
Messages: 867
The format might be a little wrong, but I'm pretty sure it's correct:

http://pastebin.com/eG9UgAGU

Only did the weapon firing part, didn't do specific weapons.

For this you will need packet_utils.script by Barin. It should be floating around this forum, just do a search.
  17:42:26  12 July 2013
profilee-mailreply Message URLTo the Top
Meltac
messing with code
(Resident)

 

 
On forum: 01/21/2010
Messages: 1519

---QUOTATION---
Only did the weapon firing part, didn't do specific weapons.
---END QUOTATION---



Where did you hook this in? As there is AFAIK no callback function that automatically triggers when the weapon is fired. When you hook that code into bind_stalker.script Update function you have a noticeable delay between the moment the weapon is fired and that when the function is called. And using packet_util.script even increases that delay. When I did something similar I didn't manage to get the function called "immediately" what caused a somewhat weird behavior feeling.
  19:03:35  12 July 2013
profilee-mailreply Message URLTo the Top
Jketiynu
Swartz
(Resident)

 

 
On forum: 04/05/2007
 

Message edited by:
Jketiynu
07/12/2013 19:10:12
Messages: 867

---QUOTATION---
Only did the weapon firing part, didn't do specific weapons.

Where did you hook this in? As there is AFAIK no callback function that automatically triggers when the weapon is fired. When you hook that code into bind_stalker.script Update function you have a noticeable delay between the moment the weapon is fired and that when the function is called. And using packet_util.script even increases that delay. When I did something similar I didn't manage to get the function called "immediately" what caused a somewhat weird behavior feeling.
---END QUOTATION---



I'm on COP of course, and for me it's hooked into a script which hooks it into _g.script function start_game_callback()

Not sure if this exists in SOC but I'll assume it does.

I'm no scripter so I don't understand why it would make a difference if you put it in bind_stalker update function but maybe it's because you're making the game call the update function every single time a weapon is fired, which I assume would cause performance issues.
Someone like NatVac would know for sure.

*Edit*
It also has this at the top of the example script I used this for (can't share the whole script as it's a Misery 2 script unfortunately, even though I don't think they're using it), but it also has the following at the top:


function on_game_start()
	callback_register("actor_on_update",update)
end



I have no idea what that does, but worth a try.

*Edit 2*
Also to clarify, I didn't actually test this script myself, I just copy/pasted from a script which does work and then modified it slightly to (hopefully) work in SOC.
  21:33:15  12 July 2013
profilee-mailreply Message URLTo the Top
TKGP
Senior Resident
 

 
On forum: 01/25/2013
 

Message edited by:
TKGP
07/12/2013 21:33:51
Messages: 454
I must confess I'm very new to scripting so please bear with me, I'm sure there are some obvious things I'm missing.
I tried placing your code block in function actor_binder:update, which I assume is what Meltac was referring to. However I just end up with

LUA error: ...ow of chernobyl\gamedata\scripts\bind_stalker.script:216: attempt to index global 'wpn' (a nil value)


where line 216 is

local se_wpn = alife():object(wpn:id())

  21:42:04  12 July 2013
profilee-mailreply Message URLTo the Top
Jketiynu
Swartz
(Resident)

 

 
On forum: 04/05/2007
 

Message edited by:
Jketiynu
07/12/2013 21:43:11
Messages: 867

---QUOTATION---
I must confess I'm very new to scripting so please bear with me, I'm sure there are some obvious things I'm missing.
I tried placing your code block in function actor_binder:update, which I assume is what Meltac was referring to. However I just end up with

LUA error: ...ow of chernobyl\gamedata\scripts\bind_stalker.script:216: attempt to index global 'wpn' (a nil value)


where line 216 is

local se_wpn = alife():object(wpn:id())


---END QUOTATION---



That's okay, my bad.


local wpn = db.actor:active_item()
wpn = packet_utils.item_is_fa(wpn) and wpn



at the top, but add this to packet_utils.script first:

http://pastebin.com/v8tke3Mj

Since I'm not actively modifying it in SOC I have no idea if it works correctly or not, I'm just making assumptions, and I'm no scripter either.
  22:03:41  12 July 2013
profilee-mailreply Message URLTo the Top
TKGP
Senior Resident
 

 
On forum: 01/25/2013
 

Message edited by:
TKGP
07/12/2013 22:04:07
Messages: 454
Hmm. First there was a crash in item_is_fa but that turned out to just be because there's no auto shotgun in SoC, commented that line out and it seems to be fine. Now we get

LUA error: ...ow of chernobyl\gamedata\scripts\bind_stalker.script:218: attempt to index local 'wpn' (a boolean value)



My block in bind_stalker reads like this

function actor_binder:update(delta)

	local wpn = db.actor:active_item()
	wpn = packet_utils.item_is_fa(wpn) and wpn
	local se_wpn = alife():object(wpn:id()) --this is line 218
	local data = packet_utils.state_read(se_wpn)
	if (data.weapon_state == 5) then
		spawn_at_actor.spawn_bolts()
	end

  01:56:50  13 July 2013
profilee-mailreply Message URLTo the Top
Jketiynu
Swartz
(Resident)

 

 
On forum: 04/05/2007
Messages: 867
I'm pretty sure you should be referring to an external script rather than putting it directly in bind_stalker, however I'll let someone who knows how to script take it from here.
  02:45:01  19 July 2013
profilee-mailreply Message URLTo the Top
gannebamm
has abondened XRay and uses Unity3D now
(Resident)

 

 
On forum: 05/02/2007
 

Message edited by:
gannebamm
07/19/2013 2:45:16
Messages: 1077
http://pastebin.com/2ubBcscg

never understood what this

myVar = myFunc() and myOtherVar


is actually doing exactly...
  02:53:27  19 July 2013
profilee-mailreply Message URLTo the Top
gannebamm
has abondened XRay and uses Unity3D now
(Resident)

 

 
On forum: 05/02/2007
Messages: 1077

---QUOTATION---
Only did the weapon firing part, didn't do specific weapons.

Where did you hook this in? As there is AFAIK no callback function that automatically triggers when the weapon is fired. When you hook that code into bind_stalker.script Update function you have a noticeable delay between the moment the weapon is fired and that when the function is called. And using packet_util.script even increases that delay. When I did something similar I didn't manage to get the function called "immediately" what caused a somewhat weird behavior feeling.
---END QUOTATION---


I´ve done this with various stuff in COP and never had a noticable delay. I hooked it into actors update function and used packet utils.
It worked very good for the horn feature from the gritty zone and the mutant loot (in which you actually have to slash the mutant with your knife weapon to get parts) mechanic I designed and tested with 3ncryptabl3. You have to be carefull to not fire expensive stuff with every update since this would slow down the game at a whole but other than that it is fine.
The very old "actor hit and has chance to get a camera shake / loose his weapon" feature is built with an fake callback through actor update, too.
  06:39:17  19 July 2013
profilee-mailreply Message URLTo the Top
TKGP
Senior Resident
 

 
On forum: 01/25/2013
Messages: 454

---QUOTATION---
http://pastebin.com/2ubBcscg
---END QUOTATION---


Thank you! But sadly, again there's a crash.
"attempt to call field 'state_read' (a nil value)"
I looked through packet_utils a bit and there are many state_read functions as members of different classes, though they all take two arguments rather than one. Really, I have no clue what's going on in packet_utils anyways so I'm not sure how to proceed.
  21:13:08  26 July 2013
profilee-mailreply Message URLTo the Top
Daemonion
All About Audio
(Resident)

 

 
On forum: 09/27/2011
Messages: 567

---QUOTATION---
http://pastebin.com/2ubBcscg
Thank you! But sadly, again there's a crash.
"attempt to call field 'state_read' (a nil value)"
I looked through packet_utils a bit and there are many state_read functions as members of different classes, though they all take two arguments rather than one. Really, I have no clue what's going on in packet_utils anyways so I'm not sure how to proceed.
---END QUOTATION---


This thread is very interesting, I might have some use for what is going on here.

I'll do some research and let you all know what happens when I get to it.
  22:46:25  27 July 2013
profilee-mailreply Message URLTo the Top
Jketiynu
Swartz
(Resident)

 

 
On forum: 04/05/2007
Messages: 867
The hell with it, Misery 2 is only a few days away and the script is more AI Tweaks related than Misery 2 related so I'm just going to release it: http://www.sendspace.com/file/ceqa2k
Besides that it's a utility script, not any direct script.

Anyways, here is a script that will definitely work with the above script: http://pastebin.com/YfjqRCyZ

Note that this script was made for CoP, but parts of it, especially the getting fire code part should work fine with SoC I would think.

You will also need the modified packet_utils.script (alun_utils.script in Misery 2 but I don't want to push it).

I see no reason why it shouldn't work unless you're doing something wrong as I've seen the same type of thing done in a mod on AMK forums (magazine mod in SOC forum).
  07:55:30  28 July 2013
profilee-mailreply Message URLTo the Top
Daemonion
All About Audio
(Resident)

 

 
On forum: 09/27/2011
 

Message edited by:
Daemonion
07/28/2013 9:20:10
Messages: 567
Is Alundaio human? Serious question. Anyway, here is what I have done so far:

- I added the above linked stpk_utils script into my scripts folder
- I added this code http://pastebin.com/v8tke3Mj to the bottom of my packet_utils script, and commented out the line with the auto_shotgun (SoC has no auto shotgun).
- I added this function http://pastebin.com/Zg9VH8Ew within my own script, daemonion_sound, in the scripts folder (but it can be added anywhere).
- I called my function, daemonion_sound.test_my_shit() in actor update in bind_stalker.


I tried adding my function to the callback section in _g.script, but it crashed. Anywho, the script works, but performance is awful as soon as I equip a weapon. I'm getting less than 1 FPS. But it works. I regain performance as soon as I holster any weapon.

Where do I go from here?
  17:13:30  28 July 2013
profilee-mailreply Message URLTo the Top
Jketiynu
Swartz
(Resident)

 

 
On forum: 04/05/2007
 

Message edited by:
Jketiynu
07/28/2013 17:14:24
Messages: 867

---QUOTATION---
Is Alundaio human? Serious question. Anyway, here is what I have done so far:

- I added the above linked stpk_utils script into my scripts folder
- I added this code http://pastebin.com/v8tke3Mj to the bottom of my packet_utils script, and commented out the line with the auto_shotgun (SoC has no auto shotgun).
- I added this function http://pastebin.com/Zg9VH8Ew within my own script, daemonion_sound, in the scripts folder (but it can be added anywhere).
- I called my function, daemonion_sound.test_my_shit() in actor update in bind_stalker.


I tried adding my function to the callback section in _g.script, but it crashed. Anywho, the script works, but performance is awful as soon as I equip a weapon. I'm getting less than 1 FPS. But it works. I regain performance as soon as I holster any weapon.

Where do I go from here?
---END QUOTATION---



I'm not sure if Alundaio is human. That's a good question.

I don't know why it's so slow. Even though Alundaio called it back in a special way in Misery 2 (if it got used, it's an unused script) I have a script that's similar that I just plop right in to bind_stalker:update() and I've never had issues.

Maybe there is some difference between how the scripts work between SOC and COP.

Anyways, Misery 2 is getting released really soon now so at this point I would just wait for that and look at the scripts (look specifically at axr_overheat and where it would get called). If they don't include that script, since it's unused, let me know and I'll send it over.

*Edit*
Maybe it requires using alun_utils?
  18:09:52  28 July 2013
profilee-mailreply Message URLTo the Top
Daemonion
All About Audio
(Resident)

 

 
On forum: 09/27/2011
 

Message edited by:
Daemonion
07/28/2013 18:11:19
Messages: 567
What does the "_s" in clsid.wpn_pm_s mean?

@Jketiynu: it might require alun_utils, but I think it would crash if it needed some variable defined or a function that wasn't found in stpk_utils.

I am curious as to why it crashes in _g.script. Mine looks like this: http://pastebin.com/FbtSi1aF

and I get this error:

Arguments     : LUA error: ...of chernobyl\gamedata\scripts\daemonion_sound.script:57: attempt to index field 'actor' (a nil value)



...line 57 is this
local actor = db.actor

in my function from here http://pastebin.com/Zg9VH8Ew
  19:00:30  28 July 2013
profilee-mailreply Message URLTo the Top
TKGP
Senior Resident
 

 
On forum: 01/25/2013
 

Message edited by:
TKGP
07/28/2013 19:01:13
Messages: 454

---QUOTATION---
attempt to index field 'actor' (a nil value)
---END QUOTATION---


I would guess the point at which you're calling it is before db.actor is initialized.

I've also put the new code into my scripts and while it doesn't crash any more, the innermost block ("do_some_shit" etc) never seems to get called. I've placed a few things throughout to check and it definitely gets to the point where it should be evaluating that conditional. Daemonion, was it successfully playing those sounds you inserted?
  19:11:46  28 July 2013
profilee-mailreply Message URLTo the Top
Daemonion
All About Audio
(Resident)

 

 
On forum: 09/27/2011
Messages: 567

---QUOTATION---
attempt to index field 'actor' (a nil value)
I would guess the point at which you're calling it is before db.actor is initialized.

I've also put the new code into my scripts and while it doesn't crash any more, the innermost block ("do_some_shit" etc) never seems to get called. I've placed a few things throughout to check and it definitely gets to the point where it should be evaluating that conditional. Daemonion, was it successfully playing those sounds you inserted?
---END QUOTATION---


Did you frame rate drop substantially when unholstering a weapon?

My frame rate drops considerably, and, in order to play those sounds, I have to fire the gun at least a few times, and it takes one minute or more for the sounds to play. I believe this is due to the drop in frame rate (like I mentioned, it is 1 FPS for me when unholstering a weapon).

If I holster the gun before the sound plays, it won't trigger. I have to keep the gun out. Once the sound starts playing, I can holster it and it will keep going.

So, in short, it works for me, but there is a minute or more delay, at least with the code I am using.
  19:28:17  28 July 2013
profilee-mailreply Message URLTo the Top
TKGP
Senior Resident
 

 
On forum: 01/25/2013
Messages: 454

---QUOTATION---
Did you frame rate drop substantially when unholstering a weapon?
---END QUOTATION---


Yeah, it's pretty abysmal. Presumably stpk_utils.get_weapon_data just has too much overhead to be calling once every update. There are some small optimizations to be made in terms of only checking if the item is a weapon once etc but I don't really know what to do about the main issue.
  19:45:10  28 July 2013
profilee-mailreply Message URLTo the Top
Daemonion
All About Audio
(Resident)

 

 
On forum: 09/27/2011
Messages: 567

---QUOTATION---
Did you frame rate drop substantially when unholstering a weapon?
Yeah, it's pretty abysmal. Presumably stpk_utils.get_weapon_data just has too much overhead to be calling once every update. There are some small optimizations to be made in terms of only checking if the item is a weapon once etc but I don't really know what to do about the main issue.
---END QUOTATION---


Perhaps those optimizations will help (in this case, the stereo audio) fire much more quickly.
  22:51:28  28 July 2013
profilee-mailreply Message URLTo the Top
Nuor
Senior Resident
 

 
On forum: 03/10/2009
Messages: 735
Not exactly the same. But I wrote a script that includes a check for if a weapon has been fired. It doesn't appear to be too demanding; though I haven't really tested in detail.

It serves a specific purpose that is more complicated than what you need. It checks for change in weapon condition as a proxy for weapon being fired. I'm not completely sure I could extract the part you need but the concept isn't complicated.

Check for active weapon. Save condition. Retest condition on actor update and compare. Return "True" if condition decreases.
  00:31:51  29 July 2013
profilee-mailreply Message URLTo the Top
Daemonion
All About Audio
(Resident)

 

 
On forum: 09/27/2011
Messages: 567
Do you think that method would work well for audio? ie, playing a specific stereo audio file alongside each shot? Or is the weapon status check best used for things that aren't so sensitive to timing?
  03:32:22  29 July 2013
profilee-mailreply Message URLTo the Top
Nuor
Senior Resident
 

 
On forum: 03/10/2009
Messages: 735

---QUOTATION---
Do you think that method would work well for audio? ie, playing a specific stereo audio file alongside each shot? Or is the weapon status check best used for things that aren't so sensitive to timing?
---END QUOTATION---



It seems very sensitive. An onscreen debug display shows each shot instantly decrements condition I'd guess only limited by the speed of actor update cycle. Whether it would work for your situation I can't say - you'd just have to try.

But I don't know why it would be any less laggy than the check above as it relies on a xrs_utils.get_weapon_data(s_obj) every update cycle. I just haven't noticed any lag when I use it.
  04:27:41  29 July 2013
profilee-mailreply Message URLTo the Top
Daemonion
All About Audio
(Resident)

 

 
On forum: 09/27/2011
Messages: 567
Would you mind posting your code you use to accomplish this task? Is it essentially the same? Do you use bind_stalker's update function, as well?
  04:52:35  29 July 2013
profilee-mailreply Message URLTo the Top
TKGP
Senior Resident
 

 
On forum: 01/25/2013
Messages: 454
Thanks for suggesting this solution, Nuor! I was able to get it working with relative ease; bonus points: doesn't have any non-vanilla dependencies. Here's my script:
http://pastebin.com/x2Sfmf8i
I've tested as many weird cases as I can think of and it seems to be stable. No noticeable performance loss, either. Of course, just call firing_function.update() (whatever yours is called) from bind_stalker's update().
  04:53:55  29 July 2013
profilee-mailreply Message URLTo the Top
Nuor
Senior Resident
 

 
On forum: 03/10/2009
Messages: 735

---QUOTATION---
Would you mind posting your code you use to accomplish this task? Is it essentially the same? Do you use bind_stalker's update function, as well?
---END QUOTATION---



What I have wouldn't help much - it monitors and updates weapon condition to simulate weapon overheating. What you need is simpler. But I'll see if there is any part that can be simply extracted.
  13:50:06  30 July 2013
profilee-mailreply Message URLTo the Top
NatVac
Senior Resident
 

 
On forum: 06/15/2007
Messages: 4303
Just covering some possible loose ends:

Meltac, Jketiynu is right about burdening the update() event loop. It's fast but a lot of processing on each pass will kill the framerate. Hoisting optimization helps; see my note to Daemonion below for an example.

¯¯¯¯¯¯¯¯¯¯
Hi, gannebamm! With myVar = myFunc() and myOtherVar, if myFunc() returns false, myVar is set false without looking at myOtherVar. In the case of

wpn = packet_utils.item_is_fa(wpn) and wpn

if wpn is a weapon (fa == firearm?) then return wpn otherwise return false.

So the code that follows should be testing for wpn before using it.

The code construct is confusing and probably not any more efficient that a direct if item_is_weapon(wpn) then handle_weapon() end because you still need to test for wpn after the assignment.

¯¯¯¯¯¯¯¯¯¯
Daemonion, some of the lag might be from the constant overhead of obtaining the sound objects in the called function each pass. I'd move the rain_fps_l and rain_fps_r assignments either out of the function (where they will be set once when the script is parsed) or inside the if (data.weapon_state == 5) then test just before they are used.

But that isn't enough, because you really only want to fire the sounds once, not sixty times a second or so. A check for playing would help.
  00:11:34  15 October 2013
profilee-mailreply Message URLTo the Top
gannebamm
has abondened XRay and uses Unity3D now
(Resident)

 

 
On forum: 05/02/2007
Messages: 1077

---QUOTATION---
Just covering some possible loose ends:
---END QUOTATION---


love you for doing this! srsly


---QUOTATION---

Hi, gannebamm! With myVar = myFunc() and myOtherVar, if myFunc() returns false, myVar is set false without looking at myOtherVar. In the case of

...snip...

The code construct is confusing and probably not any more efficient that a direct if item_is_weapon(wpn) then handle_weapon() end because you still need to test for wpn after the assignment.
---END QUOTATION---


Thank you for the insight. I totally agree that those "neat" coding styles make code harder to read and even though I could learn that stuff I just don`t see it making it more efficient - if you think about code readability against execution speed. But whatever this is nitpicky and off topic.

Daemonion: Have you tested the approach? I am quite shure you wont get a noticable delay. As said I have used this method to keep track of bullet consumption in the mod project "the gritty zone" for call of pripjat - the code if free to use.
  23:39:25  23 October 2013
profilee-mailreply Message URLTo the Top
ddraig
Senior Resident
 

 
On forum: 06/19/2012
Messages: 158
This is the "Weapon exploding" script from DMX that was adapted from OGSE, I believe.

http://pastebin.com/WuMLtadv

I've modified it slightly for my own ends (the "rigged" part, for sabotaged weapons) but the basic concept is there.

Rather than checking the weapon condition, it checks the total amount of ammo a given weapon has. If it decreases, it assumes that gun has "fired" and does actions accordingly.

This is put in an update callback, obviously.

It's rather similar to the weapon condition method, but each approach probably has different advantages/drawbacks.
  00:57:33  24 October 2013
profilee-mailreply Message URLTo the Top
TKGP
Senior Resident
 

 
On forum: 01/25/2013
Messages: 454

---QUOTATION---
Rather than checking the weapon condition, it checks the total amount of ammo a given weapon has.
---END QUOTATION---


Wouldn't that make it trigger on manually unloading the weapon?
  00:51:33  25 October 2013
profilee-mailreply Message URLTo the Top
gannebamm
has abondened XRay and uses Unity3D now
(Resident)

 

 
On forum: 05/02/2007
Messages: 1077

---QUOTATION---
Rather than checking the weapon condition, it checks the total amount of ammo a given weapon has.
Wouldn't that make it trigger on manually unloading the weapon?
---END QUOTATION---


guys, just look into the tgz files. I coded a CO2 spray feature which works with the same hack and doing it like a charm.
I have thought about these manual loading mechanisms and stuff, too. Even tough most features of TGZ where wip this one was finished in terms of functionality (but not balance).
You just have to head over the COP section and ask for the files, as for now i do not have them anymore. But the files where spread through the community so somebody will have them.
  17:25:25  25 October 2013
profilee-mailreply Message URLTo the Top
Meltac
messing with code
(Resident)

 

 
On forum: 01/21/2010
Messages: 1519
I would be good if, as soon as those files have reappeared, they would be re-uploaded and linked here as well - they might serve as a solid reference for many of us scripters !
  21:58:18  26 October 2013
profilee-mailreply Message URLTo the Top
gannebamm
has abondened XRay and uses Unity3D now
(Resident)

 

 
On forum: 05/02/2007
Messages: 1077

---QUOTATION---
I would be good if, as soon as those files have reappeared, they would be re-uploaded and linked here as well - they might serve as a solid reference for many of us scripters !
---END QUOTATION---


Here you go:
https://www.dropbox.com/sh/lw39q1ba6bzv1lt/xB4oiC31Ej

thanks to 2C.LiryC & david.m.e for the backup of TGZ files!


The interessting files for you are:
TGZ_update.script (function check_sprayed_wpn())
TGZ_wpn_spray.script

I save weapon infos into a table and check how those infos change over time. You are able to determine what action was done to the weapon in terms of current ammo capacity:

if TGZ_wpn_spray.weaponinfo[v].ammo_last == 0	-- not initialized/ reload
	then TGZ_wpn_spray.weaponinfo[v].ammo_last = old_wpn:get_ammo_in_magazine()
elseif TGZ_wpn_spray.weaponinfo[v].ammo_last < old_wpn:get_ammo_in_magazine()  -- had reloaded (activly)
	then TGZ_wpn_spray.weaponinfo[v].ammo_last = old_wpn:get_ammo_in_magazine()


For the weapon spray feature it was important to keep track of the sprayed weapon (ID wise) since you where able to do a certain amount of shots with the sprayed weapon before it through the spray boosted statistics get lowered again. Furthermore I had to keep track of every single bullet which left the magazine to precisly time the detoriation effect.

After reading my code is realize it is over complicated for your needs:
You could just keep track of the current weapon and if the ammo capacity is lowered since the last check - so a shot was made. If the weapon ID changed it isn`t the same weapon anymore and you don`t need to play the shot sound; if the ammo is higher than at your last check it was reloaded.
  22:07:50  26 October 2013
profilee-mailreply Message URLTo the Top
Meltac
messing with code
(Resident)

 

 
On forum: 01/21/2010
Messages: 1519
Thanks, man
  13:28:27  27 October 2013
profilee-mailreply Message URLTo the Top
ddraig
Senior Resident
 

 
On forum: 06/19/2012
Messages: 158

---QUOTATION---
Wouldn't that make it trigger on manually unloading the weapon?
---END QUOTATION---



When a weapon is unloaded it isn't counted as having a magazine so it doesn't call the function.
 
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-2022 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.