Langer
17.02.2009, 20:31
Moin,
ich komm bei dem Versuch ein Array zu übergeben nicht so recht weiter,
wäre klasse wenn mir da jmd helfen könnte.
(testen tu ich aufn dedi-server)
Hab auf der Map:
1. Spiellogik namens server
2. Auslöser names serverinit
Bedingung: local server
Aktivierungszeile : sinit = [] execVM "scripts\serverinit.sqf";
3. Auslöser namens playerinit
Bedingung: local player
Aktivierungszeile : pinit = [] execVM "scripts\playerinit.sqf";punkte = [] execVM "scripts\punktefang.sqf";
einige Fahrzeuge (autos/panzer) mit initzeile: this addEventHandler ["killed", {handle = [(_this select 0),(_this select 1)] execVM "scripts\enemykilled.sqf"}];
inhalt sqf's
init.sqf : LANGER_punkte = compile (preprocessFileLineNumbers "scripts\punktefang.sqf");
playerinit.sqf : if !(local player) exitwith {};
_Langermenu1 = player addAction ["Status-Menu", "Dialogs\langer_1.sqf",0,1, false, true,"test2"];
infscore = 0;
infscoreB = format ["%1", infscore];
carscore = 0;
carscoreB = format ["%1", carscore];
tankscore = 0;
tankscoreB = format ["%1", tankscore];
airscore = 0;
airscoreB = format ["%1", airscore];
sonstscore = 0;
sonstscoreB = format ["%1", sonstscore];
gesamtscore = 0;
gesamtscoreB = format ["%1", gesamtscore];
scripts\enemykilled.sqf : if !(local server) exitwith {};
_toter = _this select 0;
_killer = _this select 1;
uebergabe = [_killer,_toter];
publicVariable = "uebergabe";
scripts\punktefang.sqf : if !(local player) exitwith {};
Player sidechat "punktefang initialisiert";
sleep 0.5;
LANGER_punkte =
{
sleep 0.5;
player groupchat "LANGER_punkte Start";
_killer = uebergabe select 0;
_toter = uebergabe select 1;
_typtoter = typeof _toter;
if (player == _killer) then {
switch (_typtoter) do {
case "Man": {
Player sidechat format["Mann umgelegt von %1",_killer];
infscore = infscore + 1;
infscoreB = format ["%1", infscore];
gesamtscore = gesamtscore + 1;
gesamtscoreB = format ["%1", gesamtscore];
_toter removeEventHandler ["Killed", 0];
};
case "Car": {
Player sidechat format["Auto zerstoert von %1",_killer];
carscore = carscore + 1;
carscoreB = format ["%1", carscore];
gesamtscore = gesamtscore + 1;
gesamtscoreB = format ["%1", gesamtscore];
_toter removeEventHandler ["Killed", 0];
};
default {hint"default"};
};
} else { player sidechat "bist nicht der Killer";
};
};
for [{_loop=0}, {_loop<1}, {_loop=_loop}] do
{
sleep 0.2;
[] call LANGER_punkte;
};
die switch-do-abfrage hab ich gekürzt...
die Funktion läuft, sehe ich an der groupchat-mitteilung
aber irgendwie scheint das mit der Array-übergabe nicht zu funzen..
ich frickel da jetzt seid fast 2Tagen rum und komme nicht weiter :(
sinn dieser ganzen aktion ist, jedem spieler für eliminierte/zerstörte Soldaten/Fahrzeuge Pkt zuzuweisen und danach Orden/Auszeichnungen zu verteilen..
wenn jmd eine Idee hat, was ich falsch mache oder einen anderen Lösungsweg weiss ...
einen ratlosen Gruss,
Langer
ich komm bei dem Versuch ein Array zu übergeben nicht so recht weiter,
wäre klasse wenn mir da jmd helfen könnte.
(testen tu ich aufn dedi-server)
Hab auf der Map:
1. Spiellogik namens server
2. Auslöser names serverinit
Bedingung: local server
Aktivierungszeile : sinit = [] execVM "scripts\serverinit.sqf";
3. Auslöser namens playerinit
Bedingung: local player
Aktivierungszeile : pinit = [] execVM "scripts\playerinit.sqf";punkte = [] execVM "scripts\punktefang.sqf";
einige Fahrzeuge (autos/panzer) mit initzeile: this addEventHandler ["killed", {handle = [(_this select 0),(_this select 1)] execVM "scripts\enemykilled.sqf"}];
inhalt sqf's
init.sqf : LANGER_punkte = compile (preprocessFileLineNumbers "scripts\punktefang.sqf");
playerinit.sqf : if !(local player) exitwith {};
_Langermenu1 = player addAction ["Status-Menu", "Dialogs\langer_1.sqf",0,1, false, true,"test2"];
infscore = 0;
infscoreB = format ["%1", infscore];
carscore = 0;
carscoreB = format ["%1", carscore];
tankscore = 0;
tankscoreB = format ["%1", tankscore];
airscore = 0;
airscoreB = format ["%1", airscore];
sonstscore = 0;
sonstscoreB = format ["%1", sonstscore];
gesamtscore = 0;
gesamtscoreB = format ["%1", gesamtscore];
scripts\enemykilled.sqf : if !(local server) exitwith {};
_toter = _this select 0;
_killer = _this select 1;
uebergabe = [_killer,_toter];
publicVariable = "uebergabe";
scripts\punktefang.sqf : if !(local player) exitwith {};
Player sidechat "punktefang initialisiert";
sleep 0.5;
LANGER_punkte =
{
sleep 0.5;
player groupchat "LANGER_punkte Start";
_killer = uebergabe select 0;
_toter = uebergabe select 1;
_typtoter = typeof _toter;
if (player == _killer) then {
switch (_typtoter) do {
case "Man": {
Player sidechat format["Mann umgelegt von %1",_killer];
infscore = infscore + 1;
infscoreB = format ["%1", infscore];
gesamtscore = gesamtscore + 1;
gesamtscoreB = format ["%1", gesamtscore];
_toter removeEventHandler ["Killed", 0];
};
case "Car": {
Player sidechat format["Auto zerstoert von %1",_killer];
carscore = carscore + 1;
carscoreB = format ["%1", carscore];
gesamtscore = gesamtscore + 1;
gesamtscoreB = format ["%1", gesamtscore];
_toter removeEventHandler ["Killed", 0];
};
default {hint"default"};
};
} else { player sidechat "bist nicht der Killer";
};
};
for [{_loop=0}, {_loop<1}, {_loop=_loop}] do
{
sleep 0.2;
[] call LANGER_punkte;
};
die switch-do-abfrage hab ich gekürzt...
die Funktion läuft, sehe ich an der groupchat-mitteilung
aber irgendwie scheint das mit der Array-übergabe nicht zu funzen..
ich frickel da jetzt seid fast 2Tagen rum und komme nicht weiter :(
sinn dieser ganzen aktion ist, jedem spieler für eliminierte/zerstörte Soldaten/Fahrzeuge Pkt zuzuweisen und danach Orden/Auszeichnungen zu verteilen..
wenn jmd eine Idee hat, was ich falsch mache oder einen anderen Lösungsweg weiss ...
einen ratlosen Gruss,
Langer