Einzelnen Beitrag anzeigen
Alt 05.06.2014, 09:33   #1 (permalink)
Wiggum
50 Beiträge100 Beiträge
 
Registriert seit: 19.06.2009
Beiträge: 181
Icon4 MP (Dedicated) Scripting problem

Hi !

Gibt es einen Grund warum das folgende nicht funktioniert wenn ein Client zum ersten mal einem Dedicated Server beitritt ?

Unit Init:
PHP-Code:
nul=[thisexecVM "gear_leader.sqf"
gear_leader.sqf:
PHP-Code:
_unit _this select 0;

removeAllWeapons _unitremoveAllAssignedItems _unitremoveAllContainers _unitremoveHeadgear _unitremoveGoggles _unit_unit addUniform 'U_B_CombatUniform_mcam_vest'_unit addVest 'V_Chestrig_rgr'_unit addBackPack 'B_TacticalPack_rgr'_unit addweapon 'Rangefinder'_unit addmagazine '16Rnd_9x21_Mag'_unit addweapon 'hgun_P07_snds_F'_unit addmagazine '30Rnd_65x39_caseless_mag'_unit addweapon 'arifle_MX_Black_F'_unit addPrimaryWeaponItem 'acc_flashlight'_unit addPrimaryWeaponItem 'optic_Arco'_unit addHandgunItem 'muzzle_snds_L'_unit addItemToUniform 'FirstAidKit'_unit addItemToUniform '30Rnd_65x39_caseless_mag'_unit addItemToUniform '30Rnd_65x39_caseless_mag'_unit addItemToUniform 'MiniGrenade'_unit addItemToUniform 'Chemlight_green'_unit addItemToVest '30Rnd_65x39_caseless_mag'_unit addItemToVest '30Rnd_65x39_caseless_mag'_unit addItemToVest '30Rnd_65x39_caseless_mag'_unit addItemToVest '30Rnd_65x39_caseless_mag'_unit addItemToVest '30Rnd_65x39_caseless_mag'_unit addItemToVest '30Rnd_65x39_caseless_mag_Tracer'_unit addItemToVest '30Rnd_65x39_caseless_mag_Tracer'_unit addItemToVest '16Rnd_9x21_Mag'_unit addItemToVest '16Rnd_9x21_Mag'_unit addItemToVest 'MiniGrenade'_unit addItemToVest 'MiniGrenade'_unit addItemToVest 'SmokeShell'_unit addItemToVest 'SmokeShellGreen'_unit addItemToVest 'SmokeShellOrange'_unit addItemToVest 'Chemlight_green'_unit addItemToBackpack '30Rnd_65x39_caseless_mag'_unit addItemToBackpack '30Rnd_65x39_caseless_mag'_unit addItemToBackpack '30Rnd_65x39_caseless_mag'_unit addItemToBackpack '30Rnd_65x39_caseless_mag'_unit addItemToBackpack '30Rnd_65x39_caseless_mag'_unit addItemToBackpack '30Rnd_65x39_caseless_mag'_unit addItemToBackpack '30Rnd_65x39_caseless_mag'_unit addItemToBackpack '30Rnd_65x39_caseless_mag_Tracer'_unit addItemToBackpack '30Rnd_65x39_caseless_mag_Tracer'_unit addItemToBackpack 'SatchelCharge_Remote_Mag'_unit addItemToBackpack 'SmokeShell'_unit addItemToBackpack 'SmokeShell'_unit addItemToBackpack 'MiniGrenade'_unit addItemToBackpack 'MiniGrenade'_unit linkItem 'ItemMap'_unit linkItem 'ItemCompass'_unit linkItem 'ItemWatch'_unit linkItem 'ItemRadio'_unit linkItem 'ItemGPS'_unit linkItem 'NVGoggles'_unit linkItem 'Rangefinder'_unit linkItem 'G_Tactical_Clear'_unit linkItem 'H_Watchcap_blk';

/*Select weapon which should be active*/
_unit selectWeapon "arifle_MX_Black_F"
I trete dem Spiel bei und habe nicht die in gear_leader festgelegte Ausrüstung, dann disconnecte ich (zurück zur Unit selection) und trete erneut bei, dann habe ich die korreckte Ausrüstung, aber warum ?

Und warum funktiobiert das... (deletes vehicles korrekt)

On Act in trigger mit condition true:
PHP-Code:
nul=[car1,car2,car3execVM "scripts\random.sqf"
random.sqf:
PHP-Code:
if (!isServerexitwith {};

_targets1 _this select 0;
_targets2 _this select 1;
_targets3 _this select 2;

_targets = [_targets1,_targets2,_targets3];

_target _targets call BIS_fnc_selectRandom;
/*hint format["%1", _target];*/

_targets _targets - [_target];

_delete1 _targets select 0;
_delete2 _targets select 1;
deleteVehicle _delete1;
deleteVehicle _delete2

...baber das hier nicht ? (spawns no vehicle)

On Act in trigger mit condition true:
PHP-Code:
nul=[thistrigger,250,1execVm "scripts\spawnVeh.sqf"
spawnVeh.sqf:
PHP-Code:
if (!isServerexitwith {};

private [
"_pos","_dis","_nr","_locPos","_loc","_spawnPos","_patDis","_veh"];

_pos _this select 0;
_dis _this select 1;
_nr _this select 2;
_locPos = [];

_name = ["O_MRAP_02_hmg_F","O_MRAP_02_gmg_F","O_UGV_01_rcws_F"call BIS_fnc_selectRandom;

for 
"_i" from 1 to (_nr) do
{
_loc = [_pos,_dis,[0,360],0,[1,_dis],"O_MRAP_02_hmg_F"call SHK_pos;
_locPos _locPos + [_loc];
};

if (
count _locPos 0then {
    for 
"_i" from 1 to (count _locPos) do
    {
        
_spawnPos = (_locPos select (floor random count _locPos));
        
_veh = [_spawnPosrandom 360_nameeastcall bis_fnc_spawnvehicle;
        
//DEBUG
        
[_spawnPos,"ColorRed"call fnc_createMarker;
    }
}; 
Ich denke es gibt ein Problem bei Eineheiten spawnen mit call bis_fnc_spawnvehicle in einem Script mit if (!isServer) exitwith {}; !
wenn ich den isServer check entferne geht es, aber warum, es sollte die einheiten nur einmal auf dem server spawnen (dedi) und jeder client sollte sie sehen.
Und warum spawnt ein script mit call bis_fnc_spawnvehicle nicht zwei einheiten (eine server/dedi eine client) ohne den isserver check ?

EDIT: Ich nutze einen lokalen Dedi (ram selben pc und joine via lan) zum testen, reporting ip = 127.0.0.1 ? Ist das der fehler ?
Wiggum ist offline