Random++?

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
  • new callid = random(5000);
    for(new i=0; i< MAX_PLAYERS; i++)
    {
    //if-abfrage die ihr nicht braucht
    SetPVarInt(playerid,"CallID",callid);
    SetPVarInt(i,"CallID",callid++);
    printf("%d i %d p",GetPVarInt(i,"CallID"),GetPVarInt(playerid,"CallID"));
    }
    Wie man sieht, möchte ich für die playerid die Random Zahl speichern, für das Ergebnis der Schleife die Random Zahl +1. Trotzdem werden in beide PVars die gleichen Werte geschrieben, sehe ich anhand von dem Print. Warum ist das so? Eigentlich ist doch eine der PVars auf callid++ gesetzt?

    Greetz

  • Daher auch
    SetPVarInt(i,"CallID",++callid);


    Das ist die Präfix Version des Inkrementoperator, die wo du benutzt ist die Postfix version davon.
    Der unterschied dazwischen ist das bei der die variabeln bevor sie genutzt wird um 1 erhöht
    Präfix

  • Und wie frage ich das dann ab? Muss ich dort auch einen anderen Präfix/Suffix als sonst verwenden?
    if(GetPVarInt(playerid,"CallID")!=GetPVarInt(i,++"CallID")) {}
    if(GetPVarInt(playerid,"CallID")!=GetPVarInt(i,"CallID")++) {}
    if(GetPVarInt(playerid,"CallID")!=GetPVarInt(i,"CallID"++)) {}
    ?

    Greetz

  • Du setzt ja den wert +1 daher ist der auch temporär gespeichert. Du kannst das ganze normal auslesen der Wert wird dein random +1 sein wie du es willst.



    aber als kleine korrektur bei den if abfragen
    GetPVarInt(i,"CallID") 
    gibt einen wert zurück daher macht es kein sin den Inkrementoperator bei dem Namen hinzusetzen.


    Zudem muss man nicht umbedingt ein
    Inkrementoperator benutzten


    SetPVarInt(i,"CallID",callid+1);
    würde auch gehen