Beiträge von Mostey



    SetPVarInt(playerid,"deads",GetPVarInt(playerid,"deads") + 1);


    Du musst auch erstmal die aktuelle Anzahl der Tode auslesen, dann kannst du anschließend etwas dazu addieren.


    Wo ist die if-Abfrage geblieben? 8|


    Probier mal folgendes:
    dcmd_showpda(playerid,params[])
    {
    #pragma unused params
    if(PlayerInfo[playerid][PDA]== 1)
    {
    for(new i=0;i<5;i++)
    ´ {
    TextDrawHideForPlayer(playerid, StatsDraw[playerid][i]);
    }
    }
    else
    {
    for(new i=0;i<5;i++)
    ´ {
    TextDrawShowForPlayer(playerid, StatsDraw[playerid][i]);
    }
    return 1;
    }
    return 1;
    }

    new arenastatus = 0;
    new arena[MAX_PLAYERS];
    // Irgendwo im Script den Befehl zum Betreten der Arena
    // arenastatus++
    // Benutzt jemand den Befehl, wird die Variable um 1 hochgezählt
    // Variable steht nun also bei 1, kommt der zweite rein, steht die Variable nun bei 2. Somit wäre sie voll.


    // Folgendes muss in den Befehl:
    if(arenastatus < 3)
    {
    if(arena[playerid] == 0) // Ist der Spieler schon in der Arena? Wenn nein (0), dann geht's weiter:
    {
    arena[playerid] = 1; // Spieler ist nun in der Arena
    // Port in die Arena
    // etc.
    }
    else
    {
    // Wenn der Spieler bereits in der Arena ist
    }
    }
    else
    {
    // Wenn die Arena voll ist.
    }


    // Befehl für das Verlassen muss enthalten:
    // arenastatus--
    // arena[playerid] = 0;


    Bin mir nicht sicher ob's funktioniert, hab das heute Morgen nur mal fix geschrieben. Müsste aber so passen. :thumbup:


    Globale Variable mit der Bezeichnung "hunger" vorhanden? Könnte auch ein Public, Array o.ä. sein.


    Der Compiler sagt dir ja, dass es diese Variable schon irgendwo gibt, da du in deiner Funktion die Variable "hunger" nicht 2 mal deklariert hast, müsste sie auf jeden Fall global irgendwo sein. :)

    Stimmt, ist mir jetzt eben nicht aufgefallen.


    Hab das ganze mal an meine bisherige Formatierung angepasst... und der Compiler zeigt mir überall einen tag mismatch an, warum? Kann man PlayerTextDraws nicht so formatieren wie die eigentlichen globalen Textdraws?


    textdrawname[playerid] = CreatePlayerTextDraw(playerid, 10.000000, 436.000000, " "); // -> Name
    TextDrawBackgroundColor(textdrawname[playerid], 255); // <- tag mismatch
    TextDrawFont(textdrawname[playerid], 2); // <- tag mismatch
    TextDrawLetterSize(textdrawname[playerid], 0.330000, 0.799998); // <- tag mismatch
    TextDrawColor(textdrawname[playerid], -16776961); // <- tag mismatch
    TextDrawSetOutline(textdrawname[playerid], 1); //<- tag mismatch
    TextDrawSetProportional(textdrawname[playerid], 1); // <- tag mismatch

    ocmd:aufstehen(playerid,params[])
    {
    SendClientMessage(playerid,Orange,"Ich.. Ich.. schaff dass! los.. Ich schaff dass !!!");
    SetTimerEx("aufstehen", 5000, false, "i", playerid);
    return 1;
    }


    public aufstehen (playerid)
    {
    ClearAnimations(playerid);
    return 1;
    }


    Müsste so gehen.
    Ich würde den Spieler aber während der Animation freezen, sonst kann er ja schon vorher aufstehen. ;)



    ocmd:aufstehen(playerid,params[])
    {
    SendClientMessage(playerid,Orange,"Ich.. Ich.. schaff dass! los.. Ich schaff dass !!!");
    TogglePlayerControllable(playerid,0);
    SetTimerEx("aufstehen", 5000, false, "i", playerid);
    return 1;
    }


    public aufstehen (playerid)
    {
    TogglePlayerControllable(playerid,1);
    ClearAnimations(playerid);
    return 1;
    }

    Moin Leute, wie kann ich ne 1vs1 Arena scripten, mit Variablen & Forschleife hab ich schon versucht, evtl jemand ne Lösung für mich?


    new arenastatus = 0;
    new arena[MAX_PLAYERS];
    // Irgendwo im Script den Befehl zum Betreten der Arena
    // arenastatus++
    // Benutzt jemand den Befehl, wird die Variable um 1 hochgezählt
    // Variable steht nun also bei 1, kommt der zweite rein, steht die Variable nun bei 2. Somit wäre sie voll.


    // Folgendes muss in den Befehl:
    if(arenastatus < 3)
    {
    if(arena[playerid] == 0) // Ist der Spieler schon in der Arena? Wenn nein (0), dann geht's weiter:
    {
    arena[playerid] = 1; // Spieler ist nun in der Arena
    // Port in die Arena
    // etc.
    }
    else
    {
    // Wenn der Spieler bereits in der Arena ist
    }
    }
    else
    {
    // Wenn die Arena voll ist.
    }


    // Befehl für das Verlassen muss enthalten:
    // arenastatus--
    // arena[playerid] = 0;


    Bin mir nicht sicher ob's funktioniert, hab das eben nur mal fix geschrieben. Und wozu braucht man hier for-Schleifen? ?(

    Kommt auf die Parameter des Publics an.


    Bei einem Timer wäre es wohl
    forward OnNPCModeInit();


    Wenn du jetzt allerdings Variablen (wie zum Beispiel "playerid") in die Funktion mit eingibst, heißt der Public ja


    public OnNPCModeInit(playerid)


    Demnach müsste das so weitergeleitet werden:
    forward OnNPCModeInit(playerid);


    Da ich den Public nicht kenne, kann ich dir leider nicht sagen wie die Deklaration aussehen muss. Sollte aber mit meiner Erklärung oben auch selbst machbar sein. :thumbup:

    Benutzt du noch irgendwo anders innerhalb einer Funktion die Variable "supmobil"?


    Kann natürlich sein dass es einen Konflikt mit der globalen Variable gibt.


    Deklariere mal zum Test eine Variable die du "supmobil2[MAX_PLAYERS]" nennst und dann dementsprechend in deinem Stock die Variable auf "supmobil2[playerid]" anpasst.

    C:\Users\rolf\Desktop\mein scripte ordner\2489_1999\gamemodes\GNE.pwn(4744) : error 017: undefined symbol "supmobil"



    Du hast die Variable "supmobil" nicht deklariert, deshalb zeigt er auch den Fehler in der ersten Zeile an, bei der die Variable vorkommt.


    Ganz oben im Script:
    new supmobil[MAX_PLAYERS];


    Beim Rest kann ich dir nicht helfen, wenn du die Funktionen dazu nicht postest. Vermutlich ist es aber einfach nur ein Tippfehler...

    public IFace(playerid)
    {
    new string[256],string2[256],string3[256],string4[256];
    format(string,sizeof(string),"~r~Level~w~: %d",SpielerInfo[playerid][pAge]);
    TextDrawSetString(InterFace[playerid][InterFace2], string);
    TextDrawShowForPlayer(playerid, InterFace[playerid][InterFace2]);
    return 1;
    }


    Du gibst einen Integer aus, keinen String. ;)

    Wenn ich eine Leiste unten mit den Stats ausgeben möchte, wie mache ich das dann am besten? Bin jetzt so weit, das die Daten zwar korrekt für jeden Spieler angezeigt werden, allerdings immer nur für einen. Wenn der Nächste connected, verschwindet die Statsleiste bei mir und taucht bei demjenigen auf, der sich frisch mit dem Server verbunden hat. Wie mache ich das für alle?



    new Text:textdrawname[MAX_PLAYERS];
    new Text:textdrawlevel[MAX_PLAYERS];
    new Text:textdrawkills[MAX_PLAYERS];
    new Text:textdrawdeaths[MAX_PLAYERS];
    new Text:textdrawkd[MAX_PLAYERS];
    new Text:textdrawexp[MAX_PLAYERS];


    stock SetPlayerTextDraws(playerid)
    {
    new namestring[30],
    levelstring[30],
    killsstring[30],
    deathsstring[30],
    kdstring[30],
    expstring[30];


    format(namestring,sizeof(namestring),"Name: %s",PlayerName(playerid));
    TextDrawSetString(textdrawname[playerid],namestring);
    TextDrawShowForPlayer(playerid,textdrawname[playerid]);


    format(levelstring,sizeof(levelstring),"Level: %d",GetPlayerScore(playerid));
    TextDrawSetString(textdrawlevel[playerid],levelstring);
    TextDrawShowForPlayer(playerid,textdrawlevel[playerid]);


    format(killsstring,sizeof(killsstring),"Kills: %d", PlayerInfo[playerid][Kills]);
    TextDrawSetString(textdrawkills[playerid],killsstring);
    TextDrawShowForPlayer(playerid,textdrawkills[playerid]);


    format(deathsstring,sizeof(deathsstring),"Deaths: %d", PlayerInfo[playerid][Deaths]);
    TextDrawSetString(textdrawdeaths[playerid],deathsstring);
    TextDrawShowForPlayer(playerid,textdrawdeaths[playerid]);


    format(kdstring,sizeof(kdstring),"K/D: %0.2f",Float:PlayerInfo[playerid][Kills] / Float:PlayerInfo[playerid][Deaths]);
    TextDrawSetString(textdrawkd[playerid], kdstring);
    TextDrawShowForPlayer(playerid,textdrawkd[playerid]);


    format(expstring,sizeof(expstring),"EXP: %d",PlayerInfo[playerid][EXP]);
    TextDrawSetString(textdrawexp[playerid], expstring);
    TextDrawShowForPlayer(playerid,textdrawexp[playerid]);
    return 1;
    }


    unter OnPlayerSpawn ist der Methodenaufruf: SetPlayerTextDraws(playerid)


    -> Wenn Spieler spawnt, sollen die Textdraws angezeigt werden.


    unter OnPlayerDeath ist dieser für die playerid und killerid: SetPlayerTextDraws(killerid); SetPlayerTextDraws(playerid);


    Was stimmt hier nicht? Normalerweise müsste das doch funktionieren...