HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   Lokalen "setRank"-Befehl an ander Maschienen Broadcasten? (https://hx3.de/editing-scripting-187/lokalen-setrank-befehl-ander-maschienen-broadcasten-24425/)

Q_W_E_R 28.11.2014 17:21

Lokalen "setRank"-Befehl an ander Maschienen Broadcasten?
 
Hallo Leute,

hab mir hier ein Script mit Rängen durch PlayerIDs zusammengebastellt
doch mal wieder entäuscht mich ARMA :/ der Befehl setRank wird nur Lokal auf dem jeweiligen Rechner ausgeführt... findet jemand eine möglichkeit einer art umschreibung? hier mal das was ich selbst hinbekommen habe ^^:
Code:

////////////////////////////////////////////////////////////
//nul = player execVM "QWR_Ranksystem\QWR_Ranksystem.sqf";
////////////////////////////////////////////////////////////
hint format ["Starte QWR_Ranksystem.sqf"];
sleep 2;
waitUntil {!isNull player};
///////
//VAR//
///////
_uid = getPlayerUID player;
_ranks = ["PRIVATE","CORPORAL","SERGEANT","LIEUTENANT","CAPTAIN","MAJOR","COLONEL"]; // 0 , 1 , 2 , 3 , 4 , 5 , 6;
_multiArray = [["111",1,"QWER"],["222",4,"BOUNTY"],["333",2,"BREMSE"],["444",2,"SPEARS"]];

{
    if (_uid == _x select 0) then {

        _GetRankPlayer = (_x select 1);
        _PlayerRank = _ranks select _GetRankPlayer;
        Player setRank _PlayerRank;
        hint format ["Dein Rang ist %1", rank player];
       
    };
       
} forEach _multiArray;

Hab echt kein Plan wie ich jetzt den Rang an alle PCs sende :(

Danke für jede Hilfe ;)

Drunken Officer 28.11.2014 21:42

Aus der Hüfte:
PVRANK = rank (_this select 0);
publicVaribale "PVRANK";

Q_W_E_R 29.11.2014 18:33

Zitat:

Zitat von Drunken Officer (Beitrag 479059)
Aus der Hüfte:
PVRANK = rank (_this select 0);
publicVaribale "PVRANK";

Hat leider nicht ganz so leicht funktioniert ...
Hab aber (hoffe ich zumindest) eine Lösung gefunden wenn ich Zeit und ein "Opfer" gefunden habe werte ich es Testen und nochmal bescheidt geben:

Code:

_uid = getPlayerUID player;
_hatRang = 0;

_ranks = ["PRIVATE","CORPORAL","SERGEANT","LIEUTENANT","CAPTAIN","MAJOR","COLONEL"];
_multiArray = [["123",1,"QWER"],["456",4,"BOUNTY"],["789",2,"SPACKENBREMSE"]];

{
    if (_uid == _x select 0) then {

        _GetRankPlayer = (_x select 1);
        _PlayerRank = _ranks select _GetRankPlayer;
       
        if (isNil "QWR_PlayerRank") then {

                QWR_PlayerRank = [[vehicle player,_PlayerRank]];
                publicVariable "QWR_PlayerRank";
               
            } else {

                QWR_PlayerRank = QWR_PlayerRank + [[vehicle player,_PlayerRank]];
                publicVariable "QWR_PlayerRank";

            };
           
        _hatRang = 1;
           
        {
            (_x select 0) setRank (_x select 1);
        } forEach QWR_PlayerRank;

        hint format ["Dein Rang ist %1", rank player];
   
    };
} forEach _multiArray;

if (_hatRang == 0) then {

    {
        (_x select 0) setRank (_x select 1);
    } forEach QWR_PlayerRank;
   
    hint format ["Dein Rang und deine Player-ID ist noch nicht eingetragen! Deine Player-ID würde in deine Zwischenablage kopiert!"];
    copyToClipboard format ["%1", _uid];
    cutText ["Dein Rang und deine Player-ID ist noch nicht eingetragen! Deine Player-ID würde in deine Zwischenablage kopiert!","BLACK",5];
    sleep 5;
    cutText ["","BLACK IN",0];
       
};

Danke für deine Hilfe :daumen:

Q_W_E_R 30.11.2014 14:48

So hab jetzt ziemlich lange rumprobiert ... und hab fest gestellt was mein Problem ist :

Alle Spielbaren Einheiten haben den Rang COLONEL

P1 connected :: Lässt das Script durchlaufen erstellt den Array: QWR_PlayerRank [[p1, "PRIVATE"]] und führt das aus: p1 setRank "PRIVATE";

so P2 connected :: Lässt das Script durchlaufen erstellt den Array: QWR_PlayerRank [[p1, "PRIVATE"],[p2, "LIEUTNANT"]] und führt das aus: p1 setRank "PRIVATE"; p2 setRank "LIEUTNANT";

jetzt hab ich das Prbolem für P1 sieht das so aus:

rank P1 | "PRIVATE"
rank P2 | "COLONEL"

für P2 sieht es so aus:

rank P1 | "PRIVATE"
rank P2 | "LIEUTNANT"

Ich finde es irgendwie seltsam das man auf die idee kommt den Befehl "SetRank" nur Lokal zu machen aber das ist halt Bohemia...

ich brauch jetzt eine Art umschreibung die sagt das Wenn ein Spieler den Array ändert/Connected das alle anderen den Befehl SetRank mit dem von ihm aktualisierten Array ausführen :komisch: kein Plan wie ich in einem Lokalem Script sage das alle Spieler noch einmal ein Script ausführen ...

Vielleicht hat noch jemand ne idee mal schaun viell. fällt mir selber noch was ein :confused:

Tajin 02.12.2014 09:40

Zitat:

Zitat von Q_W_E_R (Beitrag 479049)
mal wieder entäuscht mich ARMA

Nimms mir nicht übel aber an der Enttäuschung ist nicht ArmA schuld, sondern deine fehlende Scripterfahrung. :zahn:



Erstelle eine Funktion:
PHP-Code:

fnc_setRank = { (this select 0setRank (this select 1); }; 


Rufe die Funktion mit BIS_fnc_MP auf.:
PHP-Code:

[ [someGuy,"COLONEL"], "fnc_setRank"truetruecall BIS_fnc_MP


Das gleiche wäre auch direkt mit dem setRank befehl möglich, ohne eine Funktion zu erstellen. Ist aber sicherer so.



Schau dir bis_fnc_mp mal genauer an, für multiplayerscripting ist das fast unerlässlich.




Ansonsten, was dein Script oben angeht: Anstelle objektreferenzen zusammen mit Rängen in einem Array abzulegen, könntest du einfach Objektvariablen für den Rang verwenden. (setVariable)

Oder aber die Ränge nicht abhängig vom Objekt, sondern nur von der SpielerID abspeichern.



Das lässt sich jedenfalls auf mehrere Wege lösen.

Q_W_E_R 03.12.2014 19:29

Hätte ich den Beitrag mal vohere gelesen :rolleyes: habs jetzt so umgeschrieben das es auch ohne mp_fnc funktionert :zahn: aber danke für die funktion wird demnächst einiges erleichtern wenn ich weider mal mp scripte...

Danke :daumen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr.

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 117 118 119