SetPlayerHealth per Dialog

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
  • Hallo Brotfische,


    bin dabei mir ein ein fortgeschrittenes Adminsystem zu erstellen.


    So ich war dabei SetPlayerHealth per Dialog zu erstellen dabei ist mir jetzt etwas dazwischen gekommen...., erstmal meine Quellcodes:


    DIALOG für die Funktion SetPlayerHealth

    Das Problem liegt in Zeile 11
    Ich war auch schon beim Fehlerklärbär nur ich weiß nicht wie ich es umsetzten soll.
    Problem Code beim Compilen:
    Desktop\pawn\gamemodes\morshRP.pwn(455) : error 035: argument type mismatch (argument 1)

    DIALOG für die Funktion SetPlayerHealth
    bzw der ganze Code ist falsch?

    if(dialogid == DIALOG_ALEBEN)
    {
    if(response)
    {
    new string2[128],string[128],namee[MAX_PLAYER_NAME];
    GetPlayerName(clickid[playerid], namee, sizeof(namee));
    format(string2,sizeof(string2),"Administrator {FFFFFF}%s{FF7777} hat dein Leben auf {FFFFFF}%d{FF7777} gesetzt!",sName(playerid),inputtext);
    SendClientMessage(clickid[playerid],C_MELDUNG,string2);
    format(string,sizeof(string),"** Du hast das Leben von {FFFFFF}%s4FAE3E{FF7777} auf {FFFFFF}%d4FAE3E gesetzt!",namee,inputtext);
    SendClientMessage(playerid, C_**,string);
    SetPlayerHealth(namee, inputtext);
    }
    else
    {
    }
    return 1;
    }

    Einmal editiert, zuletzt von morshly ()

  • Du musst bedenken, dass du nicht überprüfst was der Spieler eingibt. Im Moment kann er nicht nur Ganzzahlen eingeben, sondern auch Zeichenketten. Schau mal nach der Funktion "IsNumeric" (ist nicht nativ, du musst selbst die stock Funktion anlegen!). Desweiteren ist strval() auch interessant. Schau einfach mal nach diesen zweien und frag, wenn du wieder hängst! ;)

  • Problem 1: Du musst die ID des Spielers in SetPlayerHealth verwenden, nicht der Name.
    Problem 2: inputtext muss zu einem Float konvertiert werden und so auch angezeigt werden.


    if(dialogid == DIALOG_ALEBEN)
    {
    if(response)
    {
    new string[145],namee[MAX_PLAYER_NAME], Float:health;
    GetPlayerName(clickid[playerid], namee, sizeof(namee));
    health = floatstr(inputtext);
    format(string,sizeof(string),"Administrator {FFFFFF}%s{FF7777} hat dein Leben auf {FFFFFF}%0.2f{FF7777} gesetzt!",sName(playerid),health);
    SendClientMessage(clickid[playerid],C_MELDUNG,string);
    format(string,sizeof(string),"** Du hast das Leben von {FFFFFF}%s{FF7777} auf {FFFFFF}%0.2f{FF7777} gesetzt!",namee,health);
    SendClientMessage(playerid, C_**,string);
    SetPlayerHealth(clickid[playerid], health);
    }
    return 1;
    }




    EDIT: (Post unten)
    @morshly: Gerne! Da dein Problem behoben ist, wäre es super, wenn du den Thread als erledigt markierst. Danke!

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()