From 79152b9632d6291e496bbde61876e07e8e366bac Mon Sep 17 00:00:00 2001 From: legonzaur Date: Thu, 17 Aug 2023 23:33:10 +0200 Subject: [PATCH] callback working --- mod.json | 2 +- ...Callbacks.nut => weaponFireCallbacks.gnut} | 109 +++++++++++++++--- mod/scripts/weapons/mp_weapon_defender.txt | 3 +- 3 files changed, 95 insertions(+), 19 deletions(-) rename mod/scripts/vscripts/{weaponFireCallbacks.nut => weaponFireCallbacks.gnut} (57%) diff --git a/mod.json b/mod.json index 498b642..d8e3409 100644 --- a/mod.json +++ b/mod.json @@ -6,7 +6,7 @@ "RequiredOnClient": false, "Scripts": [ { - "Path": "weaponFireCallbacks.nut", + "Path": "weaponFireCallbacks.gnut", "RunOn": "SERVER" } ] diff --git a/mod/scripts/vscripts/weaponFireCallbacks.nut b/mod/scripts/vscripts/weaponFireCallbacks.gnut similarity index 57% rename from mod/scripts/vscripts/weaponFireCallbacks.nut rename to mod/scripts/vscripts/weaponFireCallbacks.gnut index 355d85e..0eebdda 100644 --- a/mod/scripts/vscripts/weaponFireCallbacks.nut +++ b/mod/scripts/vscripts/weaponFireCallbacks.gnut @@ -1,3 +1,5 @@ +untyped + globalize_all_functions struct { @@ -10,6 +12,14 @@ void function AddCallback_OnWeaponFired(entity weapon, void functionref(WeaponPr }else{ file.weaponCallbacks[weapon] <- [callback] } + AddEntityDestroyedCallback(weapon, HandleWeaponDestroyed) +} + +function HandleWeaponDestroyed(weapon){ + entity w = expect entity(weapon) + if(w in file.weaponCallbacks){ + delete file.weaponCallbacks[w] + } } void function OnWeaponFired(entity weapon, WeaponPrimaryAttackParams attackParams){ @@ -17,6 +27,7 @@ void function OnWeaponFired(entity weapon, WeaponPrimaryAttackParams attackParam array< void functionref(WeaponPrimaryAttackParams attackParams) > callbacks = file.weaponCallbacks[weapon] foreach(callback in callbacks){ callback(attackParams) + print("callback") } } } @@ -24,92 +35,152 @@ void function OnWeaponFired(entity weapon, WeaponPrimaryAttackParams attackParam var function WeaponFireCallbacks_OnWeaponPrimaryAttack_alternator_smg( entity weapon, WeaponPrimaryAttackParams attackParams ) { - OnWeaponPrimaryAttack_alternator_smg(weapon, attackParams) + var result = OnWeaponPrimaryAttack_alternator_smg(weapon, attackParams) + if(result == 0){ + return 0 + } OnWeaponFired(weapon, attackParams) + return result } -var function WeaponFireCallbacks_OnWeaponPrimaryAttack_defender( entity weapon, WeaponPrimaryAttackParams attackParams ) +var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_defender( entity weapon, WeaponPrimaryAttackParams attackParams ) { - OnWeaponPrimaryAttack_weapon_defender(weapon, attackParams) + var result = OnWeaponPrimaryAttack_weapon_defender(weapon, attackParams) + if(result == 0){ + return 0 + } OnWeaponFired(weapon, attackParams) + return result } var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_doubletake( entity weapon, WeaponPrimaryAttackParams attackParams ) { - OnWeaponPrimaryAttack_weapon_doubletake(weapon, attackParams) + var result = OnWeaponPrimaryAttack_weapon_doubletake(weapon, attackParams) + if(result == 0){ + return 0 + } OnWeaponFired(weapon, attackParams) + return result } var function WeaponFireCallbacks_OnWeaponPrimaryAttack_lmg( entity weapon, WeaponPrimaryAttackParams attackParams ) { - OnWeaponPrimaryAttack_lmg(weapon, attackParams) + var result = OnWeaponPrimaryAttack_lmg(weapon, attackParams) + if(result == 0){ + return 0 + } OnWeaponFired(weapon, attackParams) + return result } var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_lstar( entity weapon, WeaponPrimaryAttackParams attackParams ) { - OnWeaponPrimaryAttack_weapon_lstar(weapon, attackParams) + var result = OnWeaponPrimaryAttack_weapon_lstar(weapon, attackParams) + if(result == 0){ + return 0 + } OnWeaponFired(weapon, attackParams) + return result } var function WeaponFireCallbacks_OnWeaponPrimaryAttack_mastiff( entity weapon, WeaponPrimaryAttackParams attackParams ) { - OnWeaponPrimaryAttack_weapon_mastiff(weapon, attackParams) + var result = OnWeaponPrimaryAttack_weapon_mastiff(weapon, attackParams) + if(result == 0){ + return 0 + } OnWeaponFired(weapon, attackParams) + return result } var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_mgl( entity weapon, WeaponPrimaryAttackParams attackParams ) { - OnWeaponPrimaryAttack_weapon_mgl(weapon, attackParams) + var result = OnWeaponPrimaryAttack_weapon_mgl(weapon, attackParams) + if(result == 0){ + return 0 + } OnWeaponFired(weapon, attackParams) + return result } var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_rocket_launcher( entity weapon, WeaponPrimaryAttackParams attackParams ) { - OnWeaponPrimaryAttack_weapon_rocket_launcher(weapon, attackParams) + var result = OnWeaponPrimaryAttack_weapon_rocket_launcher(weapon, attackParams) + if(result == 0){ + return 0 + } OnWeaponFired(weapon, attackParams) + return result } var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_shotgun( entity weapon, WeaponPrimaryAttackParams attackParams ) { - OnWeaponPrimaryAttack_weapon_shotgun(weapon, attackParams) + var result = OnWeaponPrimaryAttack_weapon_shotgun(weapon, attackParams) + if(result == 0){ + return 0 + } OnWeaponFired(weapon, attackParams) + return result } var function WeaponFireCallbacks_OnWeaponPrimaryAttack_shotgun_doublebarrel( entity weapon, WeaponPrimaryAttackParams attackParams ) { - OnWeaponPrimaryAttack_shotgun_doublebarrel(weapon, attackParams) + var result = OnWeaponPrimaryAttack_shotgun_doublebarrel(weapon, attackParams) + if(result == 0){ + return 0 + } OnWeaponFired(weapon, attackParams) + return result } var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_shotgun_pistol( entity weapon, WeaponPrimaryAttackParams attackParams ) { - OnWeaponPrimaryAttack_weapon_shotgun_pistol(weapon, attackParams) + var result = OnWeaponPrimaryAttack_weapon_shotgun_pistol(weapon, attackParams) + if(result == 0){ + return 0 + } OnWeaponFired(weapon, attackParams) + return result } var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_smart_pistol( entity weapon, WeaponPrimaryAttackParams attackParams ) { - OnWeaponPrimaryAttack_weapon_smart_pistol(weapon, attackParams) + var result = OnWeaponPrimaryAttack_weapon_smart_pistol(weapon, attackParams) + if(result == 0){ + return 0 + } OnWeaponFired(weapon, attackParams) + return result } var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_smr( entity weapon, WeaponPrimaryAttackParams attackParams ) { - OnWeaponPrimaryAttack_weapon_smr(weapon, attackParams) + var result = OnWeaponPrimaryAttack_weapon_smr(weapon, attackParams) + if(result == 0){ + return 0 + } OnWeaponFired(weapon, attackParams) + return result } var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_sniper( entity weapon, WeaponPrimaryAttackParams attackParams ) { - OnWeaponPrimaryAttack_weapon_sniper(weapon, attackParams) + var result = OnWeaponPrimaryAttack_weapon_sniper(weapon, attackParams) + if(result == 0){ + return 0 + } OnWeaponFired(weapon, attackParams) + return result } var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_softball( entity weapon, WeaponPrimaryAttackParams attackParams ) { - OnWeaponPrimaryAttack_weapon_softball(weapon, attackParams) + var result = OnWeaponPrimaryAttack_weapon_softball(weapon, attackParams) + if(result == 0){ + return 0 + } OnWeaponFired(weapon, attackParams) + return result } var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_generic( entity weapon, WeaponPrimaryAttackParams attackParams ){ @@ -117,6 +188,10 @@ var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_generic( entity we } var function WeaponFireCallbacks_OnWeaponPrimaryAttack_GenericBoltWithDrop_Player( entity weapon, WeaponPrimaryAttackParams attackParams ){ - OnWeaponPrimaryAttack_GenericBoltWithDrop_Player(weapon, attackParams) + var result = OnWeaponPrimaryAttack_GenericBoltWithDrop_Player(weapon, attackParams) + if(result == 0){ + return 0 + } OnWeaponFired(weapon, attackParams) + return result } \ No newline at end of file diff --git a/mod/scripts/weapons/mp_weapon_defender.txt b/mod/scripts/weapons/mp_weapon_defender.txt index 6a39859..fdb04d7 100644 --- a/mod/scripts/weapons/mp_weapon_defender.txt +++ b/mod/scripts/weapons/mp_weapon_defender.txt @@ -18,7 +18,8 @@ WeaponData "leveled_pickup" "1" "weaponSubClass" "rocket" - "OnWeaponPrimaryAttack" "WeaponFireCallbacks_OnWeaponPrimaryAttack_defender" + "OnWeaponPrimaryAttack" "WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_defender" + // "OnWeaponPrimaryAttack" "OnWeaponPrimaryAttack_weapon_defender" "OnWeaponNpcPrimaryAttack" "OnWeaponNpcPrimaryAttack_weapon_defender" // Menu