Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 01.02.2010, 16:21   #1 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Rettich
 
Registriert seit: 06.04.2008
Ort: bei Kiel
Alter: 44
Beiträge: 313
Rettich eine Nachricht über Skype™ schicken
Standard Ausrüstung über Skript im MP zuweisen

Moin allerseits!

Ich würde gern die Waffen und Ausrüstung der Spieler nicht über die Initzeile sondern über ein Skript zuweisen, weil ich es so übersichtlicher finde.

Leider funktioniert dies nicht auf einem Deti. Wenn ich den Inhalt des Skriptes aber in die „init.sqf“ schreibe funktioniert es insofern, dass die Spieler zwar die ihnen zugedachte Ausrüstung haben, aber es treten Fehlermeldungen in der RPT durch nicht besetzte Slots auf.

Hat hierzu jemand eine Idee?
Rettich ist offline   Mit Zitat antworten
Alt 01.02.2010, 16:26   #2 (permalink)
Imperator fori nocturni - This sucks more than anything that has ever sucked before 10 Jahre hx3
20.000 Beiträge
 
Benutzerbild von burns
 
Registriert seit: 13.04.2003
Ort: Monerica
Alter: 35
Beiträge: 32.248
Standard

isplayer Abfrage einsetzen?

isPlayer - Bohemia Interactive Community
__________________

burns ist offline   Mit Zitat antworten
Alt 01.02.2010, 19:09   #3 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Rettich
 
Registriert seit: 06.04.2008
Ort: bei Kiel
Alter: 44
Beiträge: 313
Rettich eine Nachricht über Skype™ schicken
Standard

Ich habe schon einige if- Abfragen probiert.

if (Player == s1) then {
removeallweapons s1;
s1 addWeapon "G36_C_SD_eotech";
s1 addMagazine "30Rnd_556x45_G36SD";
s1…………
};

Oder

if (alive s1) then {
removeallweapons s1;
s1 addWeapon "G36_C_SD_eotech";
s1 addMagazine "30Rnd_556x45_G36SD";
s1…………
};

Oder

if (isPlayer s1) then {
execVM "sqf\s1.sqf";
};

Bei letzterer Variante sieht die Fehlermeldung in der RPT wie folgt aus.

Error in expression < {
execVM "sqf\s1.sqf";
};
if (isPlayer s2) then {
execVM "sqf\s2.sqf";
};
if (i>
Error position: <s2) then {
execVM "sqf\s2.sqf";
};
if (i>
Error Nicht definierte Variable in Ausdruck: s2
File mpmissions\__CUR_MP.Chernarus\init.sqf, line 29
Client: Nonnetwork object 9fb0400.
Client: Nonnetwork object a10d000.
Rettich ist offline   Mit Zitat antworten
Alt 01.03.2010, 10:44   #4 (permalink)
50 Beiträge100 Beiträge
 
Benutzerbild von SmartGun
 
Registriert seit: 04.06.2008
Beiträge: 197
Standard

Hallo,

gibt´s schon ne Lösung?

ich habe das auch schon so ähnlich probiert und hatte das Problem, dass die Ausrüstung unvollständig / bzw. mit der standart Ausrüstung des Soldaten vermischt war.

Ich vermute, das passiert, wenn das script losläuft obwohl der player nicht richtig syncronisiert ist.

Im F2- framework ist folgender code zu finden:

Code:
if (!isDedicated && (player != player)) then
{
    waitUntil {player == player};
    waitUntil {time > 10};
};
vllt. hilft das weiter?

Grüße!
SmartGun ist offline   Mit Zitat antworten
Alt 06.03.2010, 12:46   #5 (permalink)
Newbie
 
Benutzerbild von [TcB]-H5N1-
 
Registriert seit: 17.07.2008
Ort: Sachsen
Beiträge: 23
Standard

entweder du machst einen Auslöser auf die map mit

Axe: 0x0
act: brauchst keine wenns nur eine seite is
bed: alive player
ausl: guns=execVM "deinwaffenscript.sqf"

bsp des waffenscripts:
PHP-Code:
removeAllWeapons player;
player addMagazine "30Rnd_556x45_G36";
player addMagazine "30Rnd_556x45_G36";
player addWeapon "G36C";
player addMagazine "30Rnd_556x45_G36";
player addMagazine "30Rnd_556x45_G36";
player selectWeapon "G36C"
somit hat dein spieler zu beginn und nach dem respawn immer die selben waffen


Oder mit ner schleife:
PHP-Code:
     while {true} do {
       if (!
alive playerthen {
       
waitUntil {alive player};
         
removeAllWeapons player;
         
player addMagazine "30Rnd_556x45_G36";
         
player addMagazine "30Rnd_556x45_G36";
         
player addWeapon "G36C";
         
player addMagazine "30Rnd_556x45_G36";
         
player addMagazine "30Rnd_556x45_G36";
         
player selectWeapon "G36C";
      };
      
sleep 1;
   }; 
aufruf des scriptes kannst über die init machen.
hier hat er erst nach dem ersten respawn die ausgesuchten Waffen.

Nachtrag:
Was auch noch geht ist wenn du jeden spieler benennst zb w1, w2, w3 usw.
und bei jedem in die init schreibst "gun=execVM "deinscript.sqf"

das script:
PHP-Code:
if (alive w1then {
         
removeAllWeapons w1;
         
w1 addMagazine "30Rnd_556x45_G36";
         
w1 addMagazine "30Rnd_556x45_G36";
         
w1 addWeapon "G36C";
         
w1 addMagazine "30Rnd_556x45_G36";
         
w1 addMagazine "30Rnd_556x45_G36";
         
w1 selectWeapon "G36C";
         };
if (
alive elvisthen {
         
removeAllWeapons elvis;
         
elvis addMagazine "30Rnd_545x39_AK";
         
elvis addMagazine "30Rnd_545x39_AK";
         
elvis addWeapon "AKS_74_pso";
         
elvis addMagazine "30Rnd_545x39_AK";
         
elvis addMagazine "30Rnd_545x39_AK";
         
elvis selectWeapon "AKS_74_pso";
         };    
 
usw
Gruß
__________________

Geändert von [TcB]-H5N1- (06.03.2010 um 14:40 Uhr).
[TcB]-H5N1- ist offline   Mit Zitat antworten
Alt 06.03.2010, 15:28   #6 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 05.01.2008
Alter: 26
Beiträge: 1.702
Standard

Kurze Frage, ich hab ein ähnliches Problem, ich will den Soldaten nach dem Tod dieselbe Ausrüstung geben die sie hatten bevor sie gestorben sind.
Das Script sieht so aus:
Code:
if (!(local player)) exitWith {};

while {true} do {
	waitUntil {!alive player};
	_weapons = weapons player;
	_magazines = magazines player;
	waitUntil {alive player};
	_p = player;
	removeAllItems _p;
	removeAllWeapons _p;
	{_p addMagazine _x;} forEach _magazines;
	{_p addWeapon _x;} forEach _weapons;
};

if (true) exitWith {};
Nur funktioniert das nicht ganz. Wenn jemand helfen könnte wäre es super.
LG
JoeJoe87577 ist offline   Mit Zitat antworten
Alt 06.03.2010, 15:38   #7 (permalink)
Newbie
 
Benutzerbild von [TcB]-H5N1-
 
Registriert seit: 17.07.2008
Ort: Sachsen
Beiträge: 23
Standard

in wie fern fuktioniert das nicht richtig?
__________________
[TcB]-H5N1- ist offline   Mit Zitat antworten
Alt 06.03.2010, 18:46   #8 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 05.01.2008
Alter: 26
Beiträge: 1.702
Standard

das skript wird zwar lokal ausgeführt, aber auf dem Server läuft es dann nicht mehr.
JoeJoe87577 ist offline   Mit Zitat antworten
Alt 06.03.2010, 19:55   #9 (permalink)
Newbie
 
Benutzerbild von [TcB]-H5N1-
 
Registriert seit: 17.07.2008
Ort: Sachsen
Beiträge: 23
Standard

Kann ich nicht sagen benutze es auch in missionen und ist bisher immer gelaufen local sowie aufm server, wo führst du das ganze aus? Ich hänge es entweder mit ans intro ende oder jip script für den clienten.
__________________
[TcB]-H5N1- ist offline   Mit Zitat antworten
Alt 07.03.2010, 19:59   #10 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Rettich
 
Registriert seit: 06.04.2008
Ort: bei Kiel
Alter: 44
Beiträge: 313
Rettich eine Nachricht über Skype™ schicken
Standard

Weder die Variante von SmartGun noch die von [TcB]-H5N1- funktionieren fehlerfrei. Technisch funktionieren sie schon, aber durch die evtl. nicht besetzen Spieler werden immer Fehler in der RPT produziert…

z.B.

if (alive s2) then {
removeAllWeapons s2;
s2 addWe>
Error position: <s2) then {
removeAllWeapons s2;
s2 addWe>
Error Nicht definierte Variable in Ausdruck: s2
File mpmissions\__CUR_MP.Chernarus\sqf\waffen.sqf, line 16
Creating debriefing
Rettich ist offline   Mit Zitat antworten
Alt 07.03.2010, 20:36   #11 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Mach halt:
Code:
If (isPlayer s1 && alive s1) then {...};
Cyborg11 ist offline   Mit Zitat antworten
Alt 09.03.2010, 17:10   #12 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 05.01.2008
Alter: 26
Beiträge: 1.702
Standard

Mein Problem hat sich gelöst, es lag doch nur am Server...
Das Script läuft wunderbar und funktioniert.

LG
JoeJoe87577 ist offline   Mit Zitat antworten
Alt 09.03.2010, 21:31   #13 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Rettich
 
Registriert seit: 06.04.2008
Ort: bei Kiel
Alter: 44
Beiträge: 313
Rettich eine Nachricht über Skype™ schicken
Standard

@Cyborg11

Auch bei deiner Variante gibt es ne Fehlermeldung aufgrund der nicht vorhandenen Mitspieler.

if (isPlayer s2 && alive s2) then {
removeAllWeapons >
Error position: <s2 && alive s2) then {
removeAllWeapons >
Error Nicht definierte Variable in Ausdruck: s2
File mpmissions\__cur_mp.Chernarus\sqf\waffen.sqf, line 16

Warum sind eigentlich potentielle Spieler Variablen und warum kann man diese, wenn sie es sind, nicht vordefinieren?
Rettich ist offline   Mit Zitat antworten
Alt 09.03.2010, 23:42   #14 (permalink)
500 Beiträge
 
Registriert seit: 07.01.2008
Beiträge: 653
[GNC]Lord-MDB eine Nachricht über ICQ schicken
Standard

Das hier ist ne DM wo die Waffen zufällig zugewiesen werden

Für eine bestimmte Waffe muss man nur die Zufallsauswahl durch ne feste Zahl austauschen,das kann man sogar über MP Setup dann vorgeben

waffen.sqs

PHP-Code:
_rand1=0+random 32;
_rn = (_rand1 0.5) - ((_rand1 0.5Mod 1); 
zu z.b. 4. Waffenset

PHP-Code:
_rn=4
Angehängte Dateien
Dateityp: rar dm_10_Chernogrsk_v01.Chernarus.rar (5,9 KB, 28x aufgerufen)
__________________


--> -> Rechtschreibfehler sind Gratis <- <--
--> Wer welche findet kann sie behalten <--



German Nato Corps
[GNC]Lord-MDB ist offline   Mit Zitat antworten
Alt 10.03.2010, 13:17   #15 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Eine andere Möglichkeit wäre über die Editornamen zu arbeiten

Aufruf des Bewaffnungsskriptes über die Initzeile jeder Einheit:
Code:
nul = [this] execVM "bewaffnung.sqf"
bewaffnung.sqf:
Code:
_unit = _this select 0;

If (!(isPlayer _unit)) exitWith{};

removeAllWeapons _unit;
_varname = vehicleVarName _unit;        // Editorname der Einheit: http://community.bistudio.com/wiki/vehicleVarName

switch (_varname) do {
	case "S1" : { /* Bewaffnungscode */ };
	case "S2" : { /* Bewaffnungscode */ };
	case "S3" : { /* Bewaffnungscode */ };
	case "S4" : { /* Bewaffnungscode */ };
	default {hintSilent format ["Einheit %1 hat keinen Editornamen oder ist nicht im switch gelistet", _unit]};
};
Cyborg11 ist offline   Mit Zitat antworten
Alt 10.03.2010, 19:12   #16 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Rettich
 
Registriert seit: 06.04.2008
Ort: bei Kiel
Alter: 44
Beiträge: 313
Rettich eine Nachricht über Skype™ schicken
Standard

@Cyborg11

Nachdem ich deine Variante lokal getestet habe, hatte ich schon zu einen Freudensprung angesetzt, aber nach dem Test auf meinem Deti hat sich wieder Ernüchterung breit gemacht.

Es sieht so aus als würde der Spieler die gewünschte Waffe eine Millisekunde haben, dann aber wieder auf die Standartwaffe der Einheit wechseln…

Kann aber auch sein, dass hier…

removeAllWeapons _unit;
_varname = vehicleVarName _unit; // Editorname der Einheit

…der Hund begraben liegt. Habe da nichts geändert, weil du in deinem Beispielt ja schon die Editornamen s1, s2, s3 usw. eingebaut hattest.
Rettich ist offline   Mit Zitat antworten
Alt 10.03.2010, 19:39   #17 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Bekommt der Soldat dann die Standardausrüstung zurück?
Komisch, aber im BIS Forum hab ich diesbezüglich auch was gelesen.
Finde nur atm den Thread nicht mehr.
Cyborg11 ist offline   Mit Zitat antworten
Alt 10.03.2010, 19:56   #18 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 31
Beiträge: 1.725
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

das es im mp nicht funktioniert liegt ganz einfach daran das die unit nach einem respawn eine leere init hat, also das script nicht mehr öffnet.

dem ist im script mit einem einem loop entgegen zu wirken und solchen sachen wie waitUntil {alive player}

oder

du lässt das script nicht über die unitinit starten sondern über einen trigger. diesen setzt du auf auslösebedingung alive player und in die init des triggers kommt die zeile von cyborg. jedoch nicht mit [this] sondern mit [player].

fertsch!


edit:/ aso, und das mit dem variablennamen der unit funzt nach einem respawn auch nicht mehr. also lass das mal lieber weg.
__________________
Niemand hat die Absicht eine Tüte zu bauen!
Pfandgiraffe ist offline   Mit Zitat antworten
Alt 11.03.2010, 10:43   #19 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 05.01.2008
Alter: 26
Beiträge: 1.702
Standard

Kurze andere Frage, wenn ich z.B. einer Einheit einen addAction Syntax in die Init schreibe, verschwindet der leider nach dem Tod.
Wenn ich mir jetzt ein Script schreibe, in dem ich mit waituntil eine Loop einfüge, die dann einen Action Eintrag erzeugt, mit dem ich dann den RTE oder so starten kann.

Dann sollte dieses Script, wenn es funktioniert, mit einem Trigger laufen, der mit den Einheiten über F2 verbunden ist oder?

LG
Joe
JoeJoe87577 ist offline   Mit Zitat antworten
Alt 19.03.2010, 11:39   #20 (permalink)
50 Beiträge100 Beiträge
 
Benutzerbild von SmartGun
 
Registriert seit: 04.06.2008
Beiträge: 197
Standard

Mahlzeit! (bald )

@toppic:

Hab da was gebastelt.
Nach kurzem test auf´m Dedi scheint das soweit zu funzen.

ku_loadout_init.sqf:
Code:
// aufruf aus init.sqf: _nul=[] execVM "ku_loadout_init.sqf";

if (! isserver) exitwith {};

If (alive p1) then{
p1 setvehicleinit "nul=[this] execVM 'loadout_TL.sqf';";
};

If (alive p2) then{
p2 setvehicleinit "nul=[this] execVM 'loadout_RO.sqf';";
};

If (alive p3) then{
p3 setvehicleinit "nul=[this] execVM 'loadout_SN.sqf';";
};

If (alive p4) then{
p4 setvehicleinit "nul=[this] execVM 'loadout_CM.sqf';";
};

If (alive p5) then{
p5 setvehicleinit "nul=[this] execVM 'loadout_OP.sqf';";
};

If (alive p6) then{
p6 setvehicleinit "nul=[this] execVM 'loadout_OPM.sqf';";
};

If (alive p7) then{
p7 setvehicleinit "nul=[this] execVM 'loadout_AT.sqf';";
};

If (alive p8) then{
p8 setvehicleinit "nul=[this] execVM 'loadout_ATS.sqf';";
};

processinitCommands;

sleep 1;
beispiele für loadouts:

loadout_TL.sqf:
Code:
// TeamLeader EAST
_unit = _this select 0;

removeallweapons _unit;
removeallitems _unit;

// add Items
_unit addWeapon "ItemWatch";
_unit addWeapon "ItemMap";
_unit addWeapon "ItemCompass";
_unit addWeapon "ItemRadio";
_unit addWeapon "ItemGPS";

// add Gear
_unit addWeapon "Laserdesignator";
_unit addWeapon "NVGoggles";

// add Magazines
_unit addMagazine "64Rnd_9x19_SD_Bizon";
_unit addMagazine "64Rnd_9x19_SD_Bizon";
_unit addMagazine "64Rnd_9x19_SD_Bizon";
_unit addMagazine "64Rnd_9x19_SD_Bizon";
_unit addMagazine "64Rnd_9x19_SD_Bizon";
_unit addMagazine "64Rnd_9x19_SD_Bizon";
_unit addMagazine "HandGrenade_East";
_unit addMagazine "HandGrenade_East";
_unit addMagazine "Laserbatteries";
_unit addMagazine "SmokeShell";
_unit addMagazine "SmokeShellBlue";
_unit addMagazine "SmokeShellOrange";

_unit addMagazine "8Rnd_9x18_MakarovSD";
_unit addMagazine "8Rnd_9x18_MakarovSD";
_unit addMagazine "8Rnd_9x18_MakarovSD";
_unit addMagazine "8Rnd_9x18_MakarovSD";
_unit addMagazine "8Rnd_9x18_MakarovSD";
_unit addMagazine "8Rnd_9x18_MakarovSD";

// add Weapons
_unit addWeapon "MakarovSD";
_unit addWeapon "bizon_silenced";

_primw = primaryWeapon _unit;
if (_primw != "") then 
{
    _unit selectWeapon _primw;
    // Fix for weapons with grenade launcher
    _muzzles = getArray(configFile>>"cfgWeapons" >> _primw >> "muzzles");
    _unit selectWeapon (_muzzles select 0);
};
loadout_CM.sqf:
Code:
// CombatMedic EAST
_unit = _this select 0;

removeallweapons _unit;
removeallitems _unit;

// add Items
_unit addWeapon "ItemWatch";
_unit addWeapon "ItemMap";
_unit addWeapon "ItemCompass";
_unit addWeapon "ItemRadio";
_unit addWeapon "ItemGPS";

// add Gear
//_unit addWeapon "Binocular";
_unit addWeapon "NVGoggles";

// add Magazines
_unit addMagazine "64Rnd_9x19_SD_Bizon";
_unit addMagazine "64Rnd_9x19_SD_Bizon";
_unit addMagazine "64Rnd_9x19_SD_Bizon";
_unit addMagazine "64Rnd_9x19_SD_Bizon";
_unit addMagazine "64Rnd_9x19_SD_Bizon";
_unit addMagazine "SmokeShell";
_unit addMagazine "SmokeShell";
_unit addMagazine "SmokeShellOrange";

// add Weapons
_unit addWeapon "bizon_silenced";

_primw = primaryWeapon _unit;
if (_primw != "") then 
{
    _unit selectWeapon _primw;
    // Fix for weapons with grenade launcher
    _muzzles = getArray(configFile>>"cfgWeapons" >> _primw >> "muzzles");
    _unit selectWeapon (_muzzles select 0);
};
Ist wie gesagt nicht ausfühlich getestet und hat das problem, dass die Einheit mit vanilla-Bewaffnung respawnt.
Letzterem kann man aber gut mit einem respawnscript entgegenwirken.

@ Joe:

das würde ich über einen eventhandler 'killed' lösen.

Code:
if ( isNil {player getVariable "EH_KILLED"} ) then 
{
    player addEventHandler ["killed", 
    { 
        [] spawn {
            waitUntil { alive player }; 
            player addAction ["Hello", "hello.sqs"];  
        };    
    }];
    player setVariable ["EH_KILLED", true];
};
Greets!
SmartGun ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Skript läuft über Server nicht korrekt ab Rettich Editing 3 20.05.2009 18:34
Facetexturen im Editor zuweisen? gi.Zmol.ia Mods & Addons 5 20.11.2008 17:44
[ALLE] Eure Firefox Ausrüstung Snevsied Software & Hardware 26 28.09.2008 16:22
Ausrüstung nach respawn Bluebox Editing 8 04.04.2008 21:57


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116