Renegade Public Forums
C&C: Renegade -- Dead since 2012!™
Home » Renegade Discussions » Mod Release Forum » [SSGM 4.0 Plugin] NoC4DefuseOnLeave
[SSGM 4.0 Plugin] NoC4DefuseOnLeave [message #467862] Thu, 24 May 2012 01:03 Go to next message
iRANian  is currently offline iRANian  
Messages: 4268
Registered: April 2011
General (4 Stars)
From: *cm-5-3b.dynamic.ziggo.nl
This plugin will change the way Proxy C4 work so they don't get defused after their owner/planter leaves the game. It does this by setting the PlayerDataClass member variable of C4GameObj to NULL after a Proxy C4 has been created and setting the owner to NULL after he left the server. Info about Proxy C4 and their owner is kept and when a player rejoins, their ownership of a Proxy C4 will be restored. Whitedragon and I did some research on changing ownership of mines and Whitedragon also give me crucial help and feedback to get this plugin working.

It's important to check if any server-side mods you're running checks for NULL C4 ownership and a NULL PlayerDataClass member viariable of C4GameObjs, if they access these member variables. I'm also not sure if there are any unusual side-effects caused by this plugin, during testing nothing weird was noticed. This plugin breaks C4GameObj::Restore_Owner() for Proxy C4 so it implements its own version of it. (The function will update the GameObject that owns the Proxy C4 by checking the PlayerDataClass member variable after the owner dies, but because this plugin sets that PlayerDataClass member variable to NULL that doesn't work.)

To install place 'NoC4DefuseOnLeave.dll' in your FDS' root folder and add an entry for it under the [Plugins] section of ssgm.ini.

Thanks to:
Whitedragon - figured out how to change C4 ownership together and gave me important help with writing this plugin.
jonwil - Helped me with a design issue that was bugging me a lot.


Long time and well respected Renegade community member, programmer, modder and tester.

Scripts 4.0 private beta tester since May 2011.

My Renegade server plugins releases
Re: [SSGM 4.0 Plugin] NoC4DefuseOnLeave [message #491983] Fri, 10 February 2017 10:26 Go to previous messageGo to next message
Gen_Blacky  is currently offline Gen_Blacky  
Messages: 3227
Registered: September 2006
General (3 Stars)
From: *boid.qwest.net
Quick convert as dragonade gamefeture add EnableNoC4DefuseOnLeave=1 to any ini read by dragonade.


http://s18.postimage.org/jc6qbn4k9/bricks3.png
Re: [SSGM 4.0 Plugin] NoC4DefuseOnLeave [message #491984] Fri, 10 February 2017 13:44 Go to previous messageGo to next message
jonwil  is currently offline jonwil  
Messages: 3506
Registered: February 2003
General (3 Stars)

From: *tpgi.com.au
Nice plugin. One thing though, you dont need (and for various reasons shouldn't be using) that ASM block in there. Just do C4->Owner = obj; (or whatever) and the scripts code will do the rest thanks to our implementation of ReferencerClass::operator=


Jonathan Wilson aka Jonwil
Creator and Lead Coder of the Custom scripts.dll
Renegade Engine Guru
Creator and Lead Coder of TT.DLL
Official member of Tiberian Technologies
Re: [SSGM 4.0 Plugin] NoC4DefuseOnLeave [message #491985] Sat, 11 February 2017 00:57 Go to previous messageGo to next message
dblaney1  is currently offline dblaney1  
Messages: 334
Registered: March 2014
Location: United States
Recruit
From: *nwrknj.fios.verizon.net
I removed the cloned c4gameobj stuff and redid it without the asm code as well. To use this though you are gonna need to modify dac4beacon.cpp a tiny bit or it will crash when a proximity mine detonates. This occurs on both the asm and the redone version. Its because references a null pointer. Just replace this one function with this tweaked one that uses Get_Player_Name(get_owner()) to get the name of the player instead of playerdata. This needs to be fixed in a few different spots.

void DAC4BeaconManager::C4_Detonate_Event(C4GameObj *C4) {
	if (C4->Get_Owner()) {
		DALogManager::Write_Log("_C4","%ls %s has detonated (Attached to: %s)",Make_Possessive((StringClass)Get_Player_Name(C4->Get_Owner())),DATranslationManager::Translate(C4),C4->Get_Stuck_Object()?DATranslationManager::Translate(C4->Get_Stuck_Object()):"None");
	}
}


I also attached the fixed da_c4beacon.cpp. It fixes all the issues regarding beacons and c4 with no playerdata.

[Updated on: Sat, 11 February 2017 18:27]

Re: [SSGM 4.0 Plugin] NoC4DefuseOnLeave [message #491986] Sat, 11 February 2017 13:00 Go to previous messageGo to next message
dblaney1  is currently offline dblaney1  
Messages: 334
Registered: March 2014
Location: United States
Recruit
From: *nwrknj.fios.verizon.net
Theres a few other spots in that file (DAC4Beacon.cpp) that also need to be fixed. I uploaded the fixed file to the post above this one.

[Updated on: Sat, 11 February 2017 13:19]

Re: [SSGM 4.0 Plugin] NoC4DefuseOnLeave [message #491987] Sat, 11 February 2017 13:25 Go to previous messageGo to next message
iRANian  is currently offline iRANian  
Messages: 4268
Registered: April 2011
General (4 Stars)
From: *cm-8.dynamic.ziggo.nl
r u running it on your test server

And we did the ASM thing back then because the function wasn't exported in TT 4.0. so it was a quick hack, but as jonwil said it's the improper way to do it.


Long time and well respected Renegade community member, programmer, modder and tester.

Scripts 4.0 private beta tester since May 2011.

My Renegade server plugins releases
Re: [SSGM 4.0 Plugin] NoC4DefuseOnLeave [message #491988] Sat, 11 February 2017 15:59 Go to previous messageGo to next message
dblaney1  is currently offline dblaney1  
Messages: 334
Registered: March 2014
Location: United States
Recruit
From: *nwrknj.fios.verizon.net
iRANian wrote on Sat, 11 February 2017 13:25

r u running it on your test server

And we did the ASM thing back then because the function wasn't exported in TT 4.0. so it was a quick hack, but as jonwil said it's the improper way to do it.


Yup its on my test server. Its also on my other server ImperialAge AOW. The version I posted has all the hacky parts removed and replaced with the proper TT functions.

[Updated on: Sat, 11 February 2017 15:59]

Re: [SSGM 4.0 Plugin] NoC4DefuseOnLeave [message #491989] Sat, 11 February 2017 17:07 Go to previous messageGo to next message
Gen_Blacky  is currently offline Gen_Blacky  
Messages: 3227
Registered: September 2006
General (3 Stars)
From: *boid.qwest.net
Its on my test server as well. Soon to be on RC.


http://s18.postimage.org/jc6qbn4k9/bricks3.png
Re: [SSGM 4.0 Plugin] NoC4DefuseOnLeave [message #491990] Sat, 11 February 2017 17:47 Go to previous messageGo to next message
dblaney1  is currently offline dblaney1  
Messages: 334
Registered: March 2014
Location: United States
Recruit
From: *nwrknj.fios.verizon.net
Fixed a few more things in regarding restoring c4 to a player when the server reuses a previous players Player ID. Also fixed some of the logging stuff in dac4beacon.cpp that wasn't working correctly in the last one I posted. The names needed to be WideStringClass not StringClass.

You can download the updated ones here.

http://www.renegadeforums.com/index.php?t=msg&goto=491990&#msg_num_4

[Updated on: Sat, 11 February 2017 17:50]

Re: [SSGM 4.0 Plugin] NoC4DefuseOnLeave [message #492361] Mon, 08 May 2017 01:34 Go to previous message
Gen_Blacky  is currently offline Gen_Blacky  
Messages: 3227
Registered: September 2006
General (3 Stars)
From: *boid.qwest.net
added DisarmTime disarm unowned proxy's after 10 minutes if the c4 has not been claimed or the player returns.

added the ability for players to disarm unowned proxy's or obtain ownership of that proxy. As well as allowing players to disarm their own proxy.

Settings
; Enable No C4 Defuse on Leave
EnableNoC4DefuseOnLeave = 1
; Enable Disarm Time on Leave
Disarm = 1
; Time in seconds to disarm unowned proxys; Default 10 minutes
DisarmTime = 600.0
; Obtain Ownership when you press E on unowned proxy
PokeOwnership = 1
; Disarm when you press E on unowned proxy
PokeDisarm = 0
; Obtain Ownership when you repair an unowned proxy
AttackOwnership = 1
; Disarm when you repair an unowned proxy
AttackDisarm = 0
; Allow players to disarm their own proxy when pressing E or repairing
OwnerProxyDisarm = 1



http://s18.postimage.org/jc6qbn4k9/bricks3.png
Previous Topic:[CODE]Server frame time checker (Thanks to jonwil!)
Next Topic:Dragonade 1.92 for Scripts 4.5
Goto Forum:
  


Current Time: Sat Oct 21 07:00:37 MST 2017
.:: Contact :: Home ::.

Powered by: FUDforum 2.7.7RC2.
Copyright ©2001-2007 FUD Forum Bulletin Board Software