Variable einer Playerid an eine Playerid heften

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Grüße!


    Ich würde gerne mal wissen wie man eine Variable einer Playerid individuell an eine Playerid heften kann. Sprich wenn "Slot" bei einer Playerid 1 ist soll dies an eine andere Playerid gebunden werden um dann Slot auf 2 setzen zu können und an eine andere Playerid als 2 zu binden.


    Kurz gesagt die Variable einer Playerid soll an andere Playerids gebunden werden und dies nicht statisch.


    Dazu würde ich gerne wissen wie das denn mit der Abfrage und größe dieser Funktion ist. Wenn mehrere Schleifen dafür besser geeignet sind muss ich einmal mein System nicht mehr umschreiben und zudem kann ich diese Idee wieder aus dem Kopf streichen.


    mfg

  • Sowas?


    C
    new bindID[MAX_PLAYERS][MAX_PLAYERS];

    OnPlayerConnect:

    C
    for(new i=0; i<MAX_PLAYERS; i++) bindID[playerid][i] = -1;


    Dort wo du es zuweist:

    C
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    	if(bindID[playerid][i] == -1)
    	{
    		bindID[playerid][i] = pID;
    		break;
    	}
    }
  • Slot[playerid][angeklickteID[playerid]] = 1;


    Sprich so wäre die Variable Slot der Playerid bei der angeklicktenID 1?


    Und dann kann ich Slot zB bei angeklickteID2 auf 2 oder 3 setzen ohne das es sich bei angeklickteID ändert?

  • Alles klar, wie sieht es jetzt mit dem Verbrauch aus?


    Ist sowas viel für den Server oder eher weniger als sagen wir 2 genutzte Schleifen pro Spieler? (bei der ersten Abfrage ob playerid eingeloggt ist grenzt es sich dann ja schon ein aber dennoch geht er ja in diesem Fall 500 Playerids durch mit beiden Schleifen)

  • Das kannst du nicht vergleichen.
    Die Variable benötigt Arbeitsspeicher und die Schleife geht auf die CPU.


    Was allerdings grundsätzlich Sinn macht ist, die 500 von MAX_PLAYERS auf die tatsächliche Anzahl der Slots zu reduzieren, das spart massiv Arbeitsspeicher, vor allem wenn du gar nicht 500 Slots nutzt.

  • Das mit den Slots ist soweit schon geregelt, aus vorauschauenden Gründen hatte ich dies erstmal auf 250 gestellt, demnach 500 wegen 2 Schleifen.


    Werde mir das denn mal durch den Kopf gehen lassen weil 5 solcher Variablen mal wieder 700kb oder so ausmachen und damit hat das Script dann bei ~11k Zeilen schon 3mb^^


    Glaube dann nutze ich doch lieber die Schleifen auch wenn das auf Kosten des CPU´s geht.

  • Du musst eben im Hinterkopf behalten, dass alles was rein PAWN Code ist nur auf einem einzigen Kern laufen kann, selbst wenn du 8 Kerne á 3,5 GHz hast, dann kann nur ein Kern verwendet werden.
    Das beste ist, wenn man es ausgeglichen hält, heißt nicht nur alles auf die CPU hauen, aber auch nicht nur alles auf den RAM packen.