Jump to content
Cryonic.

How can I make this script work on a hosted server?

Recommended Posts

onPlayerRespawn.sqf:
_uniform = uniform player;

if ("rhsgref_uniform_woodland" isEqualTo _uniform) then {execVM "medic.sqf"};
if ("rhsgref_uniform_og107_erdl" isEqualTo _uniform) then {execVM "grenadier.sqf"};
if ("rhsgref_uniform_woodland_olive" isEqualTo _uniform) then {execVM "marksman.sqf"};
if ("rhsgref_uniform_olive" isEqualTo _uniform) then {execVM "autorifleman.sqf"};
if ("rhsgref_uniform_og107" isEqualTo _uniform) then {execVM "squadleader.sqf"};

medic.sqf:
player forceAddUniform "rhsgref_uniform_woodland";
player addVest "CUP_V_RUS_Smersh_1";
for "_i" from 1 to 8 do {player addItemToVest "CUP_30Rnd_556x45_Stanag";};
player addBackpack "CUP_B_AlicePack_Khaki";
for "_i" from 1 to 35 do {player addItemToBackpack "ACE_fieldDressing";};
for "_i" from 1 to 20 do {player addItemToBackpack "ACE_epinephrine";};
for "_i" from 1 to 20 do {player addItemToBackpack "ACE_tourniquet";};
for "_i" from 1 to 20 do {player addItemToBackpack "ACE_morphine";};
player addItemToBackpack "ACE_surgicalKit";
for "_i" from 1 to 4 do {player addItemToBackpack "ACE_salineIV_500";};
for "_i" from 1 to 4 do {player addItemToBackpack "ACE_salineIV_250";};
for "_i" from 1 to 4 do {player addItemToBackpack "ACE_salineIV";};
player addItemToBackpack "ACE_personalAidKit";
for "_i" from 1 to 35 do {player addItemToBackpack "ACE_packingBandage";};
for "_i" from 1 to 35 do {player addItemToBackpack "ACE_quikclot";};
for "_i" from 1 to 35 do {player addItemToBackpack "ACE_elasticBandage";};
player addItemToBackpack "ACE_EarPlugs";
player addHeadgear "CUP_H_USArmy_Helmet_M1_m81";

player addWeapon "CUP_arifle_M16A2";

player linkItem "ItemMap";
player linkItem "ItemCompass";
player linkItem "tf_microdagr";
player linkItem "tf_anprc152_1";

This script is only working locally and not for other players in the server.

It is used to restock a player's loadout when they respawn.

I'm pretty new to sqf so I really appreciate any help I receive.

Thanks!

Share this post


Link to post
Share on other sites

delete onPlayerRespawn.sqf

 

method 1:

create initPlayerLocal.sqf in mission root

paste this there:

 

player addEventHandler ["Respawn",{

	0 = [_this select 0, _this select 1] spawn {
	
		params [["_player",objNull,[objNull]], ["_body",objNull,[objNull]]];
				
		[_body] joinSilent grpNull;
		hideBody _body;
		waitUntil {sleep .2; alive _player};
		
		_uniform = uniform _player;

		switch _uniform do {
		
			case "rhsgref_uniform_woodland" : {0 = [_player] execVM "medic.sqf"};
			case "rhsgref_uniform_og107_erdl" : {0 = [_player] execVM "grenadier.sqf"};
			case "rhsgref_uniform_woodland_olive" : {0 = [_player] execVM "marksman.sqf"};
			case "rhsgref_uniform_olive" : {0 = [_player] execVM "autorifleman.sqf"};
			case "rhsgref_uniform_og107" : {0 = [_player] execVM "squadleader.sqf"};
			default {};
		};
	};
}];

method 2:

use init.sqf paste this there :

if(hasInterface) then {

player addEventHandler ["Respawn",{

	0 = [_this select 0, _this select 1] spawn {
	
		params [["_player",objNull,[objNull]], ["_body",objNull,[objNull]]];
				
		[_body] joinSilent grpNull;
		hideBody _body;
		waitUntil {sleep .2; alive _player};
		
		_uniform = uniform _player;

		switch _uniform do {
		
			case "rhsgref_uniform_woodland" : {0 = [_player] execVM "medic.sqf"};
			case "rhsgref_uniform_og107_erdl" : {0 = [_player] execVM "grenadier.sqf"};
			case "rhsgref_uniform_woodland_olive" : {0 = [_player] execVM "marksman.sqf"};
			case "rhsgref_uniform_olive" : {0 = [_player] execVM "autorifleman.sqf"};
			case "rhsgref_uniform_og107" : {0 = [_player] execVM "squadleader.sqf"};
			default {};
		};
	};
}];
};

 

example medic.sqf:

	params [["_player",objNull,[objNull]]];
	
	removeAllWeapons _player;
	removeAllItems _player;
	removeAllAssignedItems _player;
	removeUniform _player;
	removeVest _player;
	removeBackpack _player;
	removeHeadgear _player;
	
	_player forceAddUniform "rhsgref_uniform_woodland";
	_player addVest "CUP_V_RUS_Smersh_1";
	for "_i" from 1 to 8 do {_player addItemToVest "CUP_30Rnd_556x45_Stanag";};
	_player addBackpack "CUP_B_AlicePack_Khaki";
	for "_i" from 1 to 35 do {_player addItemToBackpack "ACE_fieldDressing";};
	for "_i" from 1 to 20 do {_player addItemToBackpack "ACE_epinephrine";};
	for "_i" from 1 to 20 do {_player addItemToBackpack "ACE_tourniquet";};
	for "_i" from 1 to 20 do {_player addItemToBackpack "ACE_morphine";};
	_player addItemToBackpack "ACE_surgicalKit";
	for "_i" from 1 to 4 do {_player addItemToBackpack "ACE_salineIV_500";};
	for "_i" from 1 to 4 do {_player addItemToBackpack "ACE_salineIV_250";};
	for "_i" from 1 to 4 do {_player addItemToBackpack "ACE_salineIV";};
	_player addItemToBackpack "ACE_personalAidKit";
	for "_i" from 1 to 35 do {_player addItemToBackpack "ACE_packingBandage";};
	for "_i" from 1 to 35 do {_player addItemToBackpack "ACE_quikclot";};
	for "_i" from 1 to 35 do {_player addItemToBackpack "ACE_elasticBandage";};
	_player addItemToBackpack "ACE_EarPlugs";
	_player addHeadgear "CUP_H_USArmy_Helmet_M1_m81";

	_player addWeapon "CUP_arifle_M16A2";

	_player linkItem "ItemMap";
	_player linkItem "ItemCompass";
	_player linkItem "tf_microdagr";
	_player linkItem "tf_anprc152_1";

You need also add some mags

Share this post


Link to post
Share on other sites
11 hours ago, davidoss said:

delete onPlayerRespawn.sqf

 

method 1:

create initPlayerLocal.sqf in mission root

paste this there:

 


player addEventHandler ["Respawn",{

	0 = [_this select 0, _this select 1] spawn {
	
		params [["_player",objNull,[objNull]], ["_body",objNull,[objNull]]];
				
		[_body] joinSilent grpNull;
		hideBody _body;
		waitUntil {sleep .2; alive _player};
		
		_uniform = uniform _player;

		switch _uniform do {
		
			case "rhsgref_uniform_woodland" : {0 = [_player] execVM "medic.sqf"};
			case "rhsgref_uniform_og107_erdl" : {0 = [_player] execVM "grenadier.sqf"};
			case "rhsgref_uniform_woodland_olive" : {0 = [_player] execVM "marksman.sqf"};
			case "rhsgref_uniform_olive" : {0 = [_player] execVM "autorifleman.sqf"};
			case "rhsgref_uniform_og107" : {0 = [_player] execVM "squadleader.sqf"};
			default {};
		};
	};
}];

method 2:

use init.sqf paste this there :


if(hasInterface) then {

player addEventHandler ["Respawn",{

	0 = [_this select 0, _this select 1] spawn {
	
		params [["_player",objNull,[objNull]], ["_body",objNull,[objNull]]];
				
		[_body] joinSilent grpNull;
		hideBody _body;
		waitUntil {sleep .2; alive _player};
		
		_uniform = uniform _player;

		switch _uniform do {
		
			case "rhsgref_uniform_woodland" : {0 = [_player] execVM "medic.sqf"};
			case "rhsgref_uniform_og107_erdl" : {0 = [_player] execVM "grenadier.sqf"};
			case "rhsgref_uniform_woodland_olive" : {0 = [_player] execVM "marksman.sqf"};
			case "rhsgref_uniform_olive" : {0 = [_player] execVM "autorifleman.sqf"};
			case "rhsgref_uniform_og107" : {0 = [_player] execVM "squadleader.sqf"};
			default {};
		};
	};
}];
};

 

example medic.sqf:


	params [["_player",objNull,[objNull]]];
	
	removeAllWeapons _player;
	removeAllItems _player;
	removeAllAssignedItems _player;
	removeUniform _player;
	removeVest _player;
	removeBackpack _player;
	removeHeadgear _player;
	
	_player forceAddUniform "rhsgref_uniform_woodland";
	_player addVest "CUP_V_RUS_Smersh_1";
	for "_i" from 1 to 8 do {_player addItemToVest "CUP_30Rnd_556x45_Stanag";};
	_player addBackpack "CUP_B_AlicePack_Khaki";
	for "_i" from 1 to 35 do {_player addItemToBackpack "ACE_fieldDressing";};
	for "_i" from 1 to 20 do {_player addItemToBackpack "ACE_epinephrine";};
	for "_i" from 1 to 20 do {_player addItemToBackpack "ACE_tourniquet";};
	for "_i" from 1 to 20 do {_player addItemToBackpack "ACE_morphine";};
	_player addItemToBackpack "ACE_surgicalKit";
	for "_i" from 1 to 4 do {_player addItemToBackpack "ACE_salineIV_500";};
	for "_i" from 1 to 4 do {_player addItemToBackpack "ACE_salineIV_250";};
	for "_i" from 1 to 4 do {_player addItemToBackpack "ACE_salineIV";};
	_player addItemToBackpack "ACE_personalAidKit";
	for "_i" from 1 to 35 do {_player addItemToBackpack "ACE_packingBandage";};
	for "_i" from 1 to 35 do {_player addItemToBackpack "ACE_quikclot";};
	for "_i" from 1 to 35 do {_player addItemToBackpack "ACE_elasticBandage";};
	_player addItemToBackpack "ACE_EarPlugs";
	_player addHeadgear "CUP_H_USArmy_Helmet_M1_m81";

	_player addWeapon "CUP_arifle_M16A2";

	_player linkItem "ItemMap";
	_player linkItem "ItemCompass";
	_player linkItem "tf_microdagr";
	_player linkItem "tf_anprc152_1";

You need also add some mags

The script you provided still only works for the server host.

Share this post


Link to post
Share on other sites

Obviously that's not the script problem.Problem is somewhere else.

Init.sqf is executed by any client connected. initPlayerLocal is executed by any client.

The code is for sure called by any client of this mission.

Share this post


Link to post
Share on other sites

onPlayerRespawn.sqf or respawn EH is something similar, and working well.

You absolutely don't need to wait for player in any case here.

So, you don't need to pass <player> in a sub-sqf. Just use player in it. (player case)

 

Except if you respawn some AIs too! > In this case onPlayerRespawn.sqf doesn't work. And you need to pass the new unit (1st param of the EH)

 

Use always global command as addBackpackGlobal Check EG. If not, only the local player will see the item. (There is no so much things to check, but it's a good habit)

Make sure your client have these items (of course).

 

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×