Jump to content

[Release] Custom Kill Messages


0verHeaT

Recommended Posts

EDIT: This only happens if the player dies from falling.  If the player is killed by AI or Zed, no message comes up.  Not sure why!

 

When a player dies "Nil PlayerName [0]" comes up in top left..

See image below, I've also included the "nil picture" error ..

al6gbo.jpg

 

i have the same error. idk know where to look for that image file.

Link to comment
Share on other sites

I've used everything you instruct on the first post to cut and paste . Everything! 

 

<shakes head> :P

 

This is what i'm using (from your first post, as instructed):

private ["_victim", "_attacker","_weapon","_weapon_dmg","_distance","_damage","_weapon_img"];
_victim = _this select 0;
_attacker = _this select 1;
_damage = _this select 2;

if (!isPlayer _victim || !isPlayer _attacker) exitWith {};
if ((owner _victim) == (owner _attacker)) exitWith {
	_victim setVariable["AttackedBy", _victim, true];
};

_weapon = (weaponState _attacker);

_vehicle = typeOf (vehicle _attacker); 

if ((getText (configFile >> "CfgVehicles" >> _vehicle >> "vehicleClass")) in ["CarW","Car","CarD","Armored","Ship","Support","Air","ArmouredW","ArmouredD","SupportWoodland_ACR"]) then {
	_weapon_dmg = getText (configFile >> 'CfgVehicles' >> _vehicle >> 'displayName');
	_weapon_img = gettext(configFile >> 'CfgVehicles' >> _vehicle >> 'picture');
} else {
	_weapon_dmg = gettext (configFile >> 'cfgWeapons' >> (currentWeapon _attacker) >> 'displayName');
	_weapon_img = gettext(configFile >> 'cfgWeapons' >> (currentWeapon _attacker) >> 'picture');
};

_distance = _victim distance _attacker;

diag_log format["PLAYERHIT: %1 was hit by %2 with %3 from %4m with %5 dmg", _victim, _attacker, _weapon_dmg, _distance, _damage];

_victim setVariable["AttackedBy", _attacker, true];
_victim setVariable["AttackedByName", (name _attacker), true];
_victim setVariable["AttackedByWeapon", _weapon_dmg, true];
_victim setVariable["AttackedFromDistance", _distance, true];
_victim setVariable["AttackedByWeaponImg", _weapon_img, true]; 
Link to comment
Share on other sites

i didnt apply anything just using the original script but no GUN Image showing up, just the like picture above.

Try this dood, the changes i've made get rid of the errors and it works fine so far. Other than the killboard at traders now says "Players was killed with (blank) by player.." or something to that effect. But anyway, the custom kill message comes up and you don't get the Nil image error....

my server_playerDied.sqf:

 

Marked my changes with:   <<<<<<< --- MY CHANGE

 

private ["_characterID","_minutes","_newObject","_playerID","_infected","_victim","_victimName","_killer","_killerName","_weapon","_distance","_message","_loc_message","_key","_death_record"];
//[unit, weapon, muzzle, mode, ammo, magazine, projectile]
_characterID = 	_this select 0;
_minutes =		_this select 1;
_newObject = 	_this select 2;
_playerID = 	_this select 3;
_infected =		_this select 4;
if (((count _this) >= 6) && {(typeName (_this select 5)) == "STRING"} && {(_this select 5) != ""}) then {
	_victimName =	_this select 5;
} else {
	_victimName =  if (alive _newObject) then {name _newObject;} else {"";};
};
_victim = _newObject;
_newObject setVariable ["bodyName", _victimName, true];

_killer = _victim getVariable["AttackedBy", "nil"];
_killerName = _victim getVariable["AttackedByName", "nil"];

// when a zombie kills a player _killer, _killerName && _weapon will be "nil"
// we can use this to determine a zombie kill && send a customized message for that. right now no killmsg means it was a zombie.
if ((typeName _killer) != "STRING") then
{
	_weapon = _victim getVariable["AttackedByWeapon", "nil"];
	_distance = _victim getVariable["AttackedFromDistance", "nil"];
    if (isNil "_distance") then {_distance = 0}; //  <<<<<<< --- MY CHANGE
	if ((owner _victim) == (owner _killer)) then 
	{
		_message = format["%1 killed himself",_victimName];
		_loc_message = format["PKILL: %1 killed himself", _victimName];
	}
	else
	{
		_message = format["%1 was killed by %2 with weapon %3 from %4m",_victimName, _killerName, _weapon, _distance];
		_loc_message = format["PKILL: %1 was killed by %2 with weapon %3 from %4m", _victimName, _killerName, _weapon, _distance];
	};

	 _pic = _victim getVariable["AttackedByWeaponImg", "nil"];
	 if (_pic == "nil") then {   //   <<<<<<< --- MY CHANGE
		  } else {
                if ((gettext (configFile >> 'cfgWeapons' >> (currentWeapon _killer) >> 'displayName')) != "Throw") then {
				if (!isNil "_pic") then {
				_kill_txt = format ["<t align='left' size='0.8'>%1 </t>",_killerName,_pic,_victimName,(ceil _distance)];
				_kill_txt = _kill_txt + format ["<img size='0.9' align='left' image='%2'/>",_killerName,_pic,_victimName,(ceil _distance)];
				_kill_txt = _kill_txt + format ["<t align='left' size='0.8'> %3 </t>",_killerName,_pic,_victimName,(ceil _distance)];
				_kill_txt = _kill_txt + format ["<t align='left' size='0.8'>[%4m]</t>",_killerName,_pic,_victimName,(ceil _distance)];

				customkillMessage = [_kill_txt];
				publicVariable "customkillMessage";
			};
		}; 
	}; 


	diag_log _loc_message;

	if(DZE_DeathMsgGlobal) then {
		[nil, nil, rspawn, [_killer, _message], { (_this select 0) globalChat (_this select 1) }] call RE;
	};
	/* needs customRemoteMessage
	if(DZE_DeathMsgGlobal) then {
		customRemoteMessage = ['globalChat', _message, _killer];
		publicVariable "customRemoteMessage";
	};
	*/
	if(DZE_DeathMsgSide) then {
		[nil, nil, rspawn, [_killer, _message], { (_this select 0) sideChat (_this select 1) }] call RE;
	};
	if(DZE_DeathMsgTitleText) then {
		[nil,nil,"per",rTITLETEXT,_message,"PLAIN DOWN"] call RE;
	};

	// build array to store death messages to allow viewing at message board in trader citys.
	_death_record = [
		_victimName,
		_killerName,
		_weapon,
		_distance,
		ServerCurrentTime
	];
	PlayerDeaths set [count PlayerDeaths,_death_record];

	// Cleanup
	_victim setVariable["AttackedBy", "nil", true];
	_victim setVariable["AttackedByName", "nil", true];
	_victim setVariable["AttackedByWeapon", "nil", true];
	_victim setVariable["AttackedFromDistance", "nil", true];
};

// Might not be the best way...
/*
if (isnil "dayz_disco") then {
	dayz_disco = [];
};
*/

// dayz_disco = dayz_disco - [_playerID];
_newObject setVariable["processedDeath",diag_tickTime];

if (typeName _minutes == "STRING") then
{
	_minutes = parseNumber _minutes;
};

diag_log ("PDEATH: Player Died " + _playerID);

if (_characterID != "0") then
{
	_key = format["CHILD:202:%1:%2:%3:",_characterID,_minutes,_infected];
	#ifdef DZE_SERVER_DEBUG_HIVE
	diag_log ("HIVE: WRITE: "+ str(_key));
	#endif
	_key call server_hiveWrite;
}
else
{
	deleteVehicle _newObject;
};
Link to comment
Share on other sites

  • 3 weeks later...

Okay, after extensive testing and looking into this further, for those that were having issues with the kill message only showing up 50% of the time.  Add the following delay shown below to make up for server lag time.  Every server has different specifications and processing time, this will allow time for the Arma2 engine to register the PKILL thus the script will run 3 seconds later and pick up the PKILL more often.  I'm now seeing 90% more kill messages.

 

Unpack dayz_server.pbo and navigate to "dayz_server/compile/server_playerDied.sqf"

 

Add a 3 second delay sleep 3; above the following

_killer = _victim getVariable["AttackedBy", "nil"];
_killerName = _victim getVariable["AttackedByName", "nil"];

It should look like this when you're done...

private ["_characterID","_minutes","_newObject","_playerID","_infected","_victim","_victimName","_killer","_killerName","_weapon","_distance","_message","_loc_message","_key","_death_record"];
//[unit, weapon, muzzle, mode, ammo, magazine, projectile]
_characterID = 	_this select 0;
_minutes =		_this select 1;
_newObject = 	_this select 2;
_playerID = 	_this select 3;
_infected =		_this select 4;
if (((count _this) >= 6) && {(typeName (_this select 5)) == "STRING"} && {(_this select 5) != ""}) then {
	_victimName =	_this select 5;
} else {
	_victimName =  if (alive _newObject) then {name _newObject;} else {"";};
};
_victim = _newObject;
_newObject setVariable ["bodyName", _victimName, true];

sleep 3;

_killer = _victim getVariable["AttackedBy", "nil"];
_killerName = _victim getVariable["AttackedByName", "nil"];

// when a zombie kills a player _killer, _killerName && _weapon will be "nil"
// we can use this to determine a zombie kill && send a customized message for that. right now no killmsg means it was a zombie.
if ((typeName _killer) != "STRING") then
{
	_weapon = _victim getVariable["AttackedByWeapon", "nil"];
	_distance = _victim getVariable["AttackedFromDistance", "nil"];

	if ((owner _victim) == (owner _killer)) then 
	{
		_message = format["%1 killed himself",_victimName];
		_loc_message = format["PKILL: %1 killed himself", _victimName];
	}
	else
	{
		_message = format["%1 was killed by %2 with weapon %3 from %4m",_victimName, _killerName, _weapon, _distance];
		_loc_message = format["PKILL: %1 was killed by %2 with weapon %3 from %4m", _victimName, _killerName, _weapon, _distance];
	
	
		_pic = _victim getVariable["AttackedByWeaponImg", "nil"];
		
                if ((gettext (configFile >> 'cfgWeapons' >> (currentWeapon _killer) >> 'displayName')) != "Throw") then {
			if (!isNil "_pic") then {
				_kill_txt = format ["<t align='left' size='0.9'>%1 </t>",_killerName,_pic,_victimName,(ceil _distance)];
				_kill_txt = _kill_txt + format ["<img size='1.0' align='left' image='%2'/>",_killerName,_pic,_victimName,(ceil _distance)];
				_kill_txt = _kill_txt + format ["<t align='left' size='0.9'> %3 </t>",_killerName,_pic,_victimName,(ceil _distance)];
				_kill_txt = _kill_txt + format ["<t align='left' size='0.9'>[%4m]</t>",_killerName,_pic,_victimName,(ceil _distance)];

				customkillMessage = [_kill_txt];
				publicVariable "customkillMessage";
			};
		}; 
	
	
	};

	diag_log _loc_message;

	if(DZE_DeathMsgGlobal) then {
		[nil, nil, rspawn, [_killer, _message], { (_this select 0) globalChat (_this select 1) }] call RE;
	};
	/* needs customRemoteMessage
	if(DZE_DeathMsgGlobal) then {
		customRemoteMessage = ['globalChat', _message, _killer];
		publicVariable "customRemoteMessage";
	};
	*/
	if(DZE_DeathMsgSide) then {
		[nil, nil, rspawn, [_killer, _message], { (_this select 0) sideChat (_this select 1) }] call RE;
	};
	if(DZE_DeathMsgTitleText) then {
		[nil,nil,"per",rTITLETEXT,_message,"PLAIN DOWN"] call RE;
	};

	// build array to store death messages to allow viewing at message board in trader citys.
	_death_record = [
		_victimName,
		_killerName,
		_weapon,
		_distance,
		ServerCurrentTime
	];
	PlayerDeaths set [count PlayerDeaths,_death_record];

	// Cleanup
	_victim setVariable["AttackedBy", "nil", true];
	_victim setVariable["AttackedByName", "nil", true];
	_victim setVariable["AttackedByWeapon", "nil", true];
	_victim setVariable["AttackedFromDistance", "nil", true];
};

// Might not be the best way...
/*
if (isnil "dayz_disco") then {
	dayz_disco = [];
};
*/

// dayz_disco = dayz_disco - [_playerID];
_newObject setVariable["processedDeath",diag_tickTime];

if (typeName _minutes == "STRING") then
{
	_minutes = parseNumber _minutes;
};

diag_log ("PDEATH: Player Died " + _playerID);

if (_characterID != "0") then
{
	_key = format["CHILD:202:%1:%2:%3:",_characterID,_minutes,_infected];
	#ifdef DZE_SERVER_DEBUG_HIVE
	diag_log ("HIVE: WRITE: "+ str(_key));
	#endif
	_key call server_hiveWrite;
}
else
{
	deleteVehicle _newObject;
};
Link to comment
Share on other sites

To Fix the Killboard.

 

Create a file called player_murderMenu.sqf in your custom folder

// murder message boards by maca134
/*
_death_record = [
0_victimName,
1_killerName,
2_weapon,
3_distance,
4ServerCurrentTime
];
*/
EpochDeathBoardDialogList = 21000;
EpochDeathBoardDialogSText = 21001;
EpochDeathBoardDeaths = [];
EpochDeathBoardLoad = {
createdialog "EpochDeathBoardDialog";
/*PVDZE_plr_DeathBResult = [
["maca134","Bob","AK_107_Kobra",100,[8,30]],
["Fred","Jonny","FN_FAL",42,[8,32]],
["maca134","Bob","M9SD",100,[5,30]],
["Fred","Jonny","BAF_AS50_scoped",42,[8,34]]
];*/
{
lbAdd [EpochDeathBoardDialogList, (_x select 0)];
} forEach PVDZE_plr_DeathBResult;
};
EpochDeathBoardClick = {
disableSerialization;
private ["_i", "_record", "_output", "_record_stxt", "_name", "_image", "_h", "_m", "_format"];
_quotes = [
"Death is God's way of telling you not to be such a wise guy.",
"What happens if you get scared half to death, twice?",
"Don't upset me.. I'm running out of places to hide the bodies.",
"Don't run, you'll just die tired.",
"Give me immortality or give me death.",
"I can't live with death; he's always leaving the toilet seat up.",
"Why won't you die?!?!",
"Guns don't kill people; death kills people. It's a proven medical fact."
];
_i = _this select 0;
if (_i < 0) exitWith {};
_output = _this select 1;
_record = PVDZE_plr_DeathBResult select _i;
_record_stxt = call compile format["epoch_death_board_record_%1;",_i];
if(isNil "_record_stxt") then {
_record_stxt = format["<t size='1.6' align='left'>%1</t><br /><br />", (_record select 0)];
_format = {
private ["_codeCount", "_str"];
_str = format["%1", _this];
_codeCount = (count (toArray _str));
if (_codeCount == 1) then {
_str = format["0%1", _str];
};
_str;
};
_h = ((_record select 4) select 0)+timezoneswitch;
_m = (_record select 4) select 1;
_record_stxt = format["%1<t size='1' align='left'>Died at %2:%3</t><br /><br />", _record_stxt, (_h call _format), (_m call _format)];
if ((_record select 1) != 'unknown') then {
_record_stxt = format["%1<t size='1' align='left'>Was killed by %2</t><br /><br />", _record_stxt, (_record select 1)];
};
if ((_record select 2) != 'unknown') then {
_name = getText(configFile >> "cfgWeapons" >> (_record select 2) >> "displayName");
_image = getText(configFile >> "cfgWeapons" >> (_record select 2) >> "picture");
_record_stxt = format["%1<t size='1' align='left'>With a %2<br /><img size='3' image='%3' /></t><br /><br />", _record_stxt, _name, _image];
};
if (format["%1", (_record select 3)] != 'unknown') then {
_record_stxt = format["%1<t size='1' align='left'>At a distance of %2m</t><br /><br />", _record_stxt, (_record select 3)];
};
_record_stxt = format["%1<t font='Bitstream'>%2</t>", _record_stxt, (_quotes call BIS_fnc_selectRandom)];
call compile format["epoch_death_board_record_%1 = ""%2"";" ,_i , _record_stxt];
};
if (!isNil "_record_stxt") then {
_output ctrlSetStructuredText (parseText _record_stxt);
};
};

Then Go in your compiles and find this line

call compile preprocessFileLineNumbers "\z\dayz_code\compile\player_murderMenu.sqf";

and replace it with this

call compile preprocessFileLineNumbers "custom\player_murderMenu.sqf";
Link to comment
Share on other sites

n4meless,
 
For now, custom kill messages does NOT have AI implemented.  There is another thread shown below where another guy has created this but it's an entirely different script where the messages show in Global Chat but it displays Zombies, AI and PvP kill messages.  I haven't tested it though..

Link to comment
Share on other sites

 

To Fix the Killboard.

 

Create a file called player_murderMenu.sqf in your custom folder

// murder message boards by maca134
/*
_death_record = [
0_victimName,
1_killerName,
2_weapon,
3_distance,
4ServerCurrentTime
];
*/
EpochDeathBoardDialogList = 21000;
EpochDeathBoardDialogSText = 21001;
EpochDeathBoardDeaths = [];
EpochDeathBoardLoad = {
createdialog "EpochDeathBoardDialog";
/*PVDZE_plr_DeathBResult = [
["maca134","Bob","AK_107_Kobra",100,[8,30]],
["Fred","Jonny","FN_FAL",42,[8,32]],
["maca134","Bob","M9SD",100,[5,30]],
["Fred","Jonny","BAF_AS50_scoped",42,[8,34]]
];*/
{
lbAdd [EpochDeathBoardDialogList, (_x select 0)];
} forEach PVDZE_plr_DeathBResult;
};
EpochDeathBoardClick = {
disableSerialization;
private ["_i", "_record", "_output", "_record_stxt", "_name", "_image", "_h", "_m", "_format"];
_quotes = [
"Death is God's way of telling you not to be such a wise guy.",
"What happens if you get scared half to death, twice?",
"Don't upset me.. I'm running out of places to hide the bodies.",
"Don't run, you'll just die tired.",
"Give me immortality or give me death.",
"I can't live with death; he's always leaving the toilet seat up.",
"Why won't you die?!?!",
"Guns don't kill people; death kills people. It's a proven medical fact."
];
_i = _this select 0;
if (_i < 0) exitWith {};
_output = _this select 1;
_record = PVDZE_plr_DeathBResult select _i;
_record_stxt = call compile format["epoch_death_board_record_%1;",_i];
if(isNil "_record_stxt") then {
_record_stxt = format["<t size='1.6' align='left'>%1</t><br /><br />", (_record select 0)];
_format = {
private ["_codeCount", "_str"];
_str = format["%1", _this];
_codeCount = (count (toArray _str));
if (_codeCount == 1) then {
_str = format["0%1", _str];
};
_str;
};
_h = ((_record select 4) select 0)+timezoneswitch;
_m = (_record select 4) select 1;
_record_stxt = format["%1<t size='1' align='left'>Died at %2:%3</t><br /><br />", _record_stxt, (_h call _format), (_m call _format)];
if ((_record select 1) != 'unknown') then {
_record_stxt = format["%1<t size='1' align='left'>Was killed by %2</t><br /><br />", _record_stxt, (_record select 1)];
};
if ((_record select 2) != 'unknown') then {
_name = getText(configFile >> "cfgWeapons" >> (_record select 2) >> "displayName");
_image = getText(configFile >> "cfgWeapons" >> (_record select 2) >> "picture");
_record_stxt = format["%1<t size='1' align='left'>With a %2<br /><img size='3' image='%3' /></t><br /><br />", _record_stxt, _name, _image];
};
if (format["%1", (_record select 3)] != 'unknown') then {
_record_stxt = format["%1<t size='1' align='left'>At a distance of %2m</t><br /><br />", _record_stxt, (_record select 3)];
};
_record_stxt = format["%1<t font='Bitstream'>%2</t>", _record_stxt, (_quotes call BIS_fnc_selectRandom)];
call compile format["epoch_death_board_record_%1 = ""%2"";" ,_i , _record_stxt];
};
if (!isNil "_record_stxt") then {
_output ctrlSetStructuredText (parseText _record_stxt);
};
};

Then Go in your compiles and find this line

call compile preprocessFileLineNumbers "\z\dayz_code\compile\player_murderMenu.sqf";

and replace it with this

call compile preprocessFileLineNumbers "custom\player_murderMenu.sqf";

This doesn't actually fix the issue that these kill messages create with the murder menu. This is the fix for the vanilla files so they stop saying "Nil was killed by Nilm" or whatever. The problem now is , it doesn't pull the picture from the configs. So it'll say DangerRuss killed Gr8boi with ______________       <---- and there is no picture there.

 

A better mind than mine would need to know how to fix it.

 

EDIT =

Im gonna take a seriously newb crack at it and in player_muderMenu.sqf change all instances of _image to _weapon_img because thats what the fnc_plyrhit.sqf uses

Probably wont be able to test this until tomorrow so if anyone wants to give this a try let me know thanks!

 

EDIT EDIT = didnt work :(

Link to comment
Share on other sites

and which ones are the necessary ones? i'm looking to get this fixed asap. does anyone have a finished one to compare by any chance?

Follow original instructions but use the server_playerdied.sqf that is posted here

 

The only difference is he added a sleep to make the script work more often. I doubt you need a full 3 seconds though. A half second works on my overwatch server. My overpoch is still too new yet to have much pvp but I'll let you know.

Link to comment
Share on other sites

and which ones are the necessary ones? i'm looking to get this fixed asap. does anyone have a finished one to compare by any chance?

 

Basically you have this part

customkillMessage = [_text];
publicVariable "customkillMessage";

Whenever you 'call' this part a text (killmessage) will be broadcasted to all clients.

 

For example

_text = parseText "<t align='left' size='0.9'>Sample Text</t>";
customkillMessage = [_text];
publicVariable "customkillMessage"; 

Now you can decide on your own where you want a message to be broadcasted,

simply by placing the part where you want in your server_playerDied.sqf.

Link to comment
Share on other sites

Possible Deathboard Fix

 

player_murderMenu.sqf

EpochDeathBoardLoad = {
	createdialog "EpochDeathBoardDialog";
	{
		private ["_index"];
		_index = lbAdd [21000,_x select 0];
	} count PV_DeathBoard;
};

EpochDeathBoardClick = {
	disableSerialization;
	private ["_index","_record","_output","_record_stxt","_name","_image","_h","_m","_format","_victim","_attacker","_time","_distance"];
		_quotes = [
			"Death is God's way of telling you not to be such a wise guy.",
			"What happens if you get scared half to death, twice?",
			"Don't upset me.. I'm running out of places to hide the bodies.",
			"Don't run, you'll just die tired.",
			"Give me immortality || give me death.",
			"I can't live with death; he's always leaving the toilet seat up.",
			"Why won't you die?!?!",
			"Guns don't kill people; death kills people. It's a proven medical fact."
		];
	_index = _this select 0;
	if (_index < 0) exitWith {};
	_output = _this select 1;
	_record = PV_DeathBoard select _index;

	_victim = _record select 0;
	_attacker = _record select 1;
	_name = _record select 2;
	_image = _record select 3;
	_distance = _record select 4;
	_time = _record select 5;

	if (isNil "_victim" || isNil "_attacker" || isNil "_name" || isNil "_distance" || isNil "_time") exitWith {_output ctrlSetStructuredText parseText "<br/><br/><br/><br/><t size='1.6' align='center'>There are some information missing for this entry</t>";};

	_format = {
		private ["_codeCount","_str"];
		_str = format["%1", _this];
		_codeCount = (count (toArray _str));
		if (_codeCount == 1) then {_str = format["0%1", _str];	};
		_str;
	};
	_h = (_time select 0) + timezoneswitch;
	_m = _time select 1;

	_record_stxt = format["<t size='1.6' align='left'>%1</t><br/><br/>",_victim];
	_record_stxt = _record_stxt + format["<t size='1' align='left'>Died at %1:%2</t><br/><br/>",(_h call _format),(_m call _format)];
	_record_stxt = _record_stxt + format["<t size='1' align='left'>Was killed by %1</t><br/><br/>",_attacker];
	_record_stxt = _record_stxt + format["<t size='1' align='left'>With a %1<br/><img size='3' image='%2' /></t><br/><br/>",_name,_image];
	_record_stxt = _record_stxt + format["<t size='1' align='left'>At a distance of %1m</t><br/><br/>",_distance];
	_record_stxt = _record_stxt + format["<t font='Bitstream'>%1</t>",(_quotes call BIS_fnc_selectRandom)];

	_output ctrlSetStructuredText parseText _record_stxt;
}; 

server_playerDied.sqf

_death_record = [
	_victimName,
	_killerName,
	_weapon,
	_pic,
	_distance,
	ServerCurrentTime
];
PlayerDeaths set [count PlayerDeaths,_death_record];
PV_DeathBoard = PlayerDeaths;
publicVariable "PV_DeathBoard"; 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×
×
  • Create New...