Warnings, Errors

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
  • Hey,
    bekomme mehrere Warnings / Errors die ich einfach nicht wegbekomme.
    Wenn ich global new pID; mache kriege ich undefined pID als Error und muss diese ueberall einzeln setzen.


    Fehler:


    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    new pID=clickedplayerid; [color=#FF0000]<- Zeile 40875[/color]
    if (PlayerInfo[playerid][pAdmin] >= 1)
    {
    new string[2048];
    strcat(string,"{0087FF}1. {FEFEFE}Spieler Bannen\n");
    strcat(string,"{0087FF}2. {FEFEFE}Spieler Kicken\n");
    strcat(string,"{0087FF}3. {FEFEFE}Zum Spieler Porten\n");
    strcat(string,"{0087FF}4. {FEFEFE}Spieler zu mir Porten\n");
    strcat(string,"{0087FF}5. {FEFEFE}Leben Setten\n");
    strcat(string,"{0087FF}6. {FEFEFE}Weste geben\n");
    strcat(string,"{0087FF}7. {FEFEFE}Waffe geben\n");
    strcat(string,"{0087FF}8. {FEFEFE}Skin Ändern\n");
    strcat(string,"{0087FF}9. {FEFEFE}Spieler Slap\n");
    strcat(string,"{0087FF}10. {FEFEFE}Spieler Freezeen\n");
    strcat(string,"{0087FF}11. {FEFEFE}Spieler Unfreezeen\n");
    strcat(string,"{0087FF}12. {FEFEFE}Spieler Spawnen\n");
    strcat(string,"{0087FF}13. {FEFEFE}Handynummer Ändern\n");
    strcat(string,"{0087FF}14. {FEFEFE}Payday Geben\n");
    strcat(string,"{0087FF}15. {FEFEFE}Level Geben\n");
    strcat(string,"{0087FF}16. {FEFEFE}Geld Geben\n");
    strcat(string,"{0087FF}17. {FEFEFE}Spieler Premium Geben\n");
    strcat(string,"{0087FF}18. {FEFEFE}Spieler Bankgeld Geben\n");
    strcat(string,"{0087FF}19. {FEFEFE}Spieler RoG Points Geben\n");
    strcat(string,"{0087FF}20. {FEFEFE}Spieler ins Tutorial Stecken\n");
    ShowPlayerDialog(playerid,DIALOG_ADMINPANEL,DIALOG_STYLE_LIST,"Wähle eine Option aus",string,"Verwenden","Beenden");
    }
    return 1;
    }



    if(listitem==4)//Lebenspunkte (HP) eines Spielers setzen
    {
    if(!PlayerInfo[playerid][pAdmin] >= 2)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    // ShowPlayerDialog(playerid,DIALOG_SetHP,DIALOG_STYLE_INPUT,"HP setzen","Gib die HP an","OK","Zurück");
    }


    [color=#FF0000]if(! da ist Zeile 42434[/color]



    if(listitem==5)//Schutzweste eines Spielers setzen
    {
    if(!PlayerInfo[playerid][pAdmin] >= 2)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    ShowPlayerDialog(playerid,DIALOG_SetArmour,DIALOG_STYLE_INPUT,"Schutzweste setzen","Gib die zu gebene Schutzweste in Zahlen an","ok","Zurück");
    }



    [color=#FF0000]Das mit dem if(! da ist Zeile 42439[/color]


    Das Problem bei den Listitems hab ich bis zum 15ten listitem.


    Außerdem muss ich immer in jedem listitem oder Dialog new pID; schreiben. Wenn ich es ganz oben im Script bei jedem new als new pID; deklariere sagt er mir undefined symbol: pID

  • Ändere
    new pID=clickedplayerid;
    zu:
    SetPVarInt(playerid, "clickedplayerid", clickedplayerid);




    Und:
    if(!PlayerInfo[playerid][pAdmin] >= 2)
    zu:
    if(PlayerInfo[playerid][pAdmin] < 2)




    Die angeklickte ID bekommst du dann im Listitem über
    printf("Es wurde ID %d zuvor angeklickt.", GetPVarInt(playerid, "clickedplayerid"));

  • Also,
    ich möchte ja das wenn ich Tab druecke und auf einen Spieler doppelklicke DIALOG_ADMINPANEL aufgerufen wird. Wie stelle ich das dann jetzt richtig an durch die Änderungen? ^^

  • Du musst die angegebenen Codes jeweils mit dem drunterstehenden ersetzen.


    Über das "GetPVarInt" weißt du dann an beliebiger Stelle, welche ID der Spieler angeklickt hatte (z.B. in OnDialogResponse von DIALOG_SetArmour).

    Kann ich irgendwie folgendes in die Konsole printen lassen bspw das:
    Anthony Smith hat das Adminpanel bei dem Spieler Thomas geöffnet (04.11.2016 23:23)

  • Klar.
    Bei OnPlayerClickPlayer:
    new h, m, s, d, mo, y;
    gettime(h, m, s); getdate(y, mo, d);
    new name1[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name1, MAX_PLAYER_NAME);
    GetPlayerName(clickedplayerid, name2, MAX_PLAYER_NAME);
    printf("%s hat das Adminpanel bei dem Spieler %s geöffnet (%02d.%02d.%d %02d:%02d:%02d)", name1, name2, d, mo, y, h, m, s);

  • Wie kann ich's dann noch fuer die einzelnen Funktionen einbauen?
    Bspw. das dort steht: Anthony Smith hat Paul 5000$ gutgeschrieben, Anthony Smith hat Paul gebannt etc.
    Kann ich das auch irgendwie in einer Dini-Datei speichern, wenn ja wie? :)



    if(dialogid==DIALOG_ADMINPANEL)
    {
    new pID;
    if(response)
    {
    if(listitem==0) //Ban Funktion
    {
    SendClientMessage(playerid,DECLINERED,"Derzeit deaktiviert aufgrund einer Test-Phase.");
    Ban(pID);
    }
    if(listitem==1) // Kick Funktion
    {
    SendClientMessage(playerid,DECLINERED,"Derzeit deaktiviert aufgrund einer Test-Phase.");
    Kick(pID);
    }
    if(listitem==2) //Zu einem Spieler teleportieren
    {
    new Float:x1;
    new Float:y1;
    new Float:z1;
    GetPlayerPos(pID,x1,y1,z1);
    SetPlayerPos(playerid,x1,y1,z1);
    }
    if(listitem==3)//Spieler zu sich teleportieren
    {
    new Float:x2;
    new Float:y2;
    new Float:z2;
    GetPlayerPos(playerid,x2,y2,z2);
    SetPlayerPos(pID,x2,y2,z2);
    }
    //PlayerInfo[playerid][pAdmin] >= 1
    if(listitem==4)//Lebenspunkte (HP) eines Spielers setzen
    {
    if(PlayerInfo[playerid][pAdmin] < 2)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    ShowPlayerDialog(playerid,DIALOG_SetHP,DIALOG_STYLE_INPUT,"HP setzen","Gib die HP an","OK","Zurück");
    }
    if(listitem==5)//Schutzweste eines Spielers setzen
    {
    if(PlayerInfo[playerid][pAdmin] < 2)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    ShowPlayerDialog(playerid,DIALOG_SetArmour,DIALOG_STYLE_INPUT,"Schutzweste setzen","Gib die zu gebene Schutzweste in Zahlen an","ok","Zurück");
    }
    if(listitem==6)//Spieler eine Waffe geben (mit 500 Schuss)
    {
    if(PlayerInfo[playerid][pAdmin] < 4)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    ShowPlayerDialog(playerid,DIALOG_GiveWeapon,DIALOG_STYLE_INPUT,"Waffe geben","Gib die zu gebene Waffen-ID an\n(+500 Kugeln)","OK","Zurück");
    }
    if(listitem==7)//Spieler einen anderen Skin (Aussehen) setzen
    {
    if(PlayerInfo[playerid][pAdmin] < 3)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    ShowPlayerDialog(playerid,DIALOG_SetSkin,DIALOG_STYLE_INPUT,"Skin setzen","Gib die zu setzende Skin-ID ein.","OK","Zurück");
    }
    if(listitem==8) //Unbekannt
    {
    new Float:x3;
    new Float:y3;
    new Float:z3;
    GetPlayerPos(pID,x3,y3,z3);
    SetPlayerPos(pID,x3,y3,z3+7);
    }
    if(listitem==9)//Spieler Freezen
    {
    TogglePlayerControllable(pID,0);
    }
    if(listitem==10)//Spieler unfreezen
    {
    TogglePlayerControllable(pID,1);
    }
    if(listitem==11) //Spawne einen Spieler
    {
    //SetTimerEx("SpielerUnfreeze", 5000, 0, "pID", pID); //setzt einen Timer das der Spieler entfreezt wird
    GameTextForPlayer(pID, "~n~~n~~n~~n~~n~~n~~n~~n~~n~~w~Welt wird ~y~geladen", 5000, 3); //Text an Spieler
    SpawnPlayer(pID); //Spieler spawnen
    // FreezePlayer(pID); //Spieler einfrieren lassen
    }
    if(listitem==12)//Handynummer eines Spielers setzen
    {
    if(PlayerInfo[playerid][pAdmin] < 4)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    ShowPlayerDialog(playerid,DIALOG_GEBENUMMER,DIALOG_STYLE_INPUT,"Handynummer setzen","Gib die neue Handynummer ein die der Spieler bekommen soll.","OK","Zurück");
    }
    if(listitem==13)//Spieler PayDay geben
    {
    if(PlayerInfo[playerid][pAdmin] < 4)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    /*SpielerPayday(pID);
    SendClientMessage(pID,GRAU,"Du hast soeben einen Payday von einem Team-Mitglied erhalten.");*/
    SendClientMessage(playerid,DECLINERED,"Zurzeit deaktiviert.");
    }
    if(listitem==14) //Level setzen (ab pAdmin Level 4)
    {
    if(PlayerInfo[playerid][pAdmin] < 4)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    ShowPlayerDialog(playerid,DIALOG_LEVELGEBEN,DIALOG_STYLE_INPUT,"Level setzen","Welches Level soll der Spieler erhalten?","Setzen","Zurück");
    }
    if(listitem==15) //Geld geben (ab pAdmin Level 3)
    {
    if(PlayerInfo[playerid][pAdmin] < 3)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    ShowPlayerDialog(playerid,DIALOG_GELDGEBEN,DIALOG_STYLE_INPUT,"Geld geben","Wie viel soll der Spieler erhalten\nGebe die Summe ein","Geben","Zurück");
    }
    if(listitem==16) //Premium setzen (ab pAdmin Level 5)
    {
    if(PlayerInfo[playerid][pAdmin] < 5)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    ShowPlayerDialog(playerid,DIALOG_GEBEPREMIUM,DIALOG_STYLE_MSGBOX,"Premium setzen","Möchtest du dem Spieler den Premium-Status setzen?","Ja","Nein");
    }
    if(listitem==17) //Kontostand setzen
    {
    if(PlayerInfo[playerid][pAdmin] < 3)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    ShowPlayerDialog(playerid,DIALOG_BANKGELDGEBEN,DIALOG_STYLE_INPUT,"Kontostand Geld geben","Wie viel Geld soll dieser Spieler auf seiner Bank haben.","OK","Zurück");
    }
    if(listitem==18)
    {
    if(PlayerInfo[playerid][pAdmin] < 5)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    ShowPlayerDialog(playerid,DIALOG_GEBEGNLPOINTS,DIALOG_STYLE_INPUT,"GNL Points geben","Wieviele GNL (Premium Points) möchtest du diesem Spieler geben\nGebe ein wieviele Points der Spieler bekommen soll.","OK","Zurück");
    SendClientMessage(playerid,DECLINERED,"Zurzeit aufgrund System-Umbaus deaktiviert.");
    }
    if(listitem==19)
    {
    if(PlayerInfo[playerid][pAdmin] < 5)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    SendClientMessage(playerid,DECLINERED,"Zurzeit aufgrund System-Umbaus deaktiviert.");
    }
    }
    }

  • Hier als Beispiel für das Ban Listitem:
    new clickedplayerid = GetPVarInt(playerid, "clickedplayerid");
    new name1[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name1, MAX_PLAYER_NAME);
    GetPlayerName(clickedplayerid, name2, MAX_PLAYER_NAME);
    new str[128];
    format(str, sizeof(str), "%s hat den Spieler %s gebannt.", name1, name2);
    SaveToFile("BanLog", str);




    Und das ganz unten im Gamemode:
    forward SaveToFile(filename[],text[]);
    public SaveToFile(filename[],text[])
    {
    new h, m, s, d, mo, y;
    gettime(h, m, s); getdate(y, mo, d);
    new File:wFile, filepath[256], string[256];
    format(filepath,sizeof(filepath),"%s.txt",filename);
    wFile = fopen(filepath,io_append);
    format(string,sizeof(string),"(%02d.%02d.%d %02d:%02d:%02d) %s\r\n", d, mo, y, h, m, s, text);
    fwrite(wFile,string);
    fclose(wFile);
    print(string);
    return 1;
    }Analog für die anderen natürlich.

  • Kannst du mir beim Ban Listitem mal dazu schreiben was was bewirkt bzw. was man ändern muesste?

  • if(dialogid==DIALOG_ADMINPANEL)
    {
    if(response)
    {
    new pID = GetPVarInt(playerid, "clickedplayerid");
    new name1[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name1, MAX_PLAYER_NAME);
    GetPlayerName(pID, name2, MAX_PLAYER_NAME);
    new str[128];
    switch(listitem)
    {
    case 1:
    {
    Ban(pID);
    format(str, sizeof(str), "%s hat den Spieler %s gebannt.", name1, name2);
    SaveToFile("BanLog", str);
    return 1;
    }
    //...weitere listitems
    }
    }
    }

  • if(dialogid==DIALOG_ADMINPANEL){ if(response) { new pID = GetPVarInt(playerid, "clickedplayerid"); new name1[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME]; GetPlayerName(playerid, name1, MAX_PLAYER_NAME); GetPlayerName(pID, name2, MAX_PLAYER_NAME); new str[128]; switch(listitem) { case 1: { Ban(pID); format(str, sizeof(str), "%s hat den Spieler %s gebannt.", name1, name2); SaveToFile("BanLog", str); return 1; } //...weitere listitems } }}

    Dann muesste ich ja alles komplett umbauen.
    Wie sieht denn eine Log beim Geld/Level geben aus?



    if(listitem==15) //Geld geben (ab pAdmin Level 3)
    {
    if(PlayerInfo[playerid][pAdmin] < 3)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    ShowPlayerDialog(playerid,DIALOG_GELDGEBEN,DIALOG_STYLE_INPUT,"Geld geben","Wie viel soll der Spieler erhalten\nGebe die Summe ein","Geben","Zurück");
    }



    if(listitem==17) //Kontostand setzen
    {
    if(PlayerInfo[playerid][pAdmin] < 3)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    ShowPlayerDialog(playerid,DIALOG_BANKGELDGEBEN,DIALOG_STYLE_INPUT,"Kontostand Geld geben","Wie viel Geld soll dieser Spieler auf seiner Bank haben.","OK","Zurück");
    }



    if(listitem==14) //Level setzen (ab pAdmin Level 4)
    {
    if(PlayerInfo[playerid][pAdmin] < 4)return SendClientMessage(playerid,DECLINERED,"Du besitzt nicht den benötigten Rang fuer diese Option.");
    ShowPlayerDialog(playerid,DIALOG_LEVELGEBEN,DIALOG_STYLE_INPUT,"Level setzen","Welches Level soll der Spieler erhalten?","Setzen","Zurück");
    }

  • Anstatt
    format(str, sizeof(str), "%s hat den Spieler %s gebannt.", name1, name2);
    halt
    format(str, sizeof(str), "%s hat dem Spieler %s $%d gegeben.", name1, name2, strval(inputtext));


    Natürlich im OnDialogResponse von dem DIALOG_GELDGEBEN Dialog.




    Versuche dich mal am Rest selbst, ich habe dir jetzt alle Dialoge so fertig gestellt, dass du den Code nur an die richtige Stelle kopieren musst. Das dürfte machbar sein.
    Sollten dort Fehler auftreten, poste bitte deinen Code, dann kann dir daran geholfen werden.


    Probiere das bitte aus, sonst lernst du nichts dabei. Am besten zuerst mit nur einem "Teil".

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Danke dir. Suche schon die ganze Zeit nach der sscanf Version hab iwie nh alte.


    [23:57:21] sscanf error: The current build ONLY supports 0.3d
    [23:57:21] Loaded.
    [23:57:21] Loaded 3 plugins.

  • Beitrag von Jeffry ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: seegras war schneller ().
  • Danke schön.
    Hab nun folgendes Problem:


    [00:07:55] [debug] Run time error 19: "File or function is not found"
    [00:07:55] [debug] dir_exists
    [00:07:55] [debug] dir_create
    [00:07:55] [debug] file_write
    [00:07:55] [debug] Run time error 19: "File or function is not found"
    [00:07:55] [debug] dir_exists
    [00:07:55] [debug] dir_create
    [00:07:55] [debug] file_write
    [00:07:55] Script[gamemodes/WB.amx]: Run time error 19: "File or function is not found"
    [00:07:55] Number of vehicle models: 0

  • Das nativechecker-Plugin schon geladen?


    ----------
    Loaded log file: "server_log.txt".
    ----------


    SA-MP Dedicated Server
    ----------------------
    v0.3.7, (C)2005-2015 SA-MP Team


    [00:15:17] filterscripts = "" (string)
    [00:15:17] password = "" (string)
    [00:15:17]
    [00:15:17] Server Plugins
    [00:15:17] --------------
    [00:15:17] Loading plugin: mysql.dll
    [00:15:17]


    > MySQL plugin R5 successfully loaded.


    [00:15:17] Loaded.
    [00:15:17] Loading plugin: nativechecker.dll
    [00:15:17] Loaded.
    [00:15:17] Loading plugin: streamer.dll
    [00:15:17]


    *** Streamer Plugin v2.8.2 by Incognito loaded ***


    [00:15:17] Loaded.
    [00:15:17] Loading plugin: sscanf.dll
    [00:15:17]


    [00:15:17] ===============================


    [00:15:17] sscanf plugin loaded.


    [00:15:17] Version: 2.8.2


    [00:15:17] (c) 2012 Alex "Y_Less" Cole


    [00:15:17] ===============================


    [00:15:17] Loaded.
    [00:15:17] Loaded 4 plugins.


    [00:15:17]
    [00:15:17] Ban list
    [00:15:17] --------
    [00:15:17] Loaded: samp.ban
    [00:15:17]
    [00:15:17]
    [00:15:17] Filterscripts
    [00:15:17] ---------------
    [00:15:17] Loaded 0 filterscripts.


    [00:15:17] Error: Function not registered: 'CreateDynamicObject'
    [00:15:17] Error: Function not registered: 'MoveDynamicObject'
    [00:15:17] Error: Function not registered: 'SSCANF_Init'
    [00:15:17] Error: Function not registered: 'SSCANF_IsConnected'
    [00:15:17] Error: Function not registered: 'SSCANF_Join'
    [00:15:17] Error: Function not registered: 'SSCANF_Leave'
    [00:15:17] Error: Function not registered: 'DestroyDynamicObject'
    [00:15:17] Error: Function not registered: 'SetDynamicObjectMaterial'
    [00:15:17] Error: Function not registered: 'SetDynamicObjectMaterialText'
    [00:15:17] Error: Function not registered: 'GetDynamicObjectPos'
    [00:15:17] Error: Function not registered: 'GetDynamicObjectRot'
    [00:15:17] Error: Function not registered: 'sscanf'
    [00:15:17] Error: Function not registered: 'DestroyDynamicPickup'
    [00:15:17] Error: Function not registered: 'IsValidDynamic3DTextLabel'
    [00:15:17] Error: Function not registered: 'DestroyDynamic3DTextLabel'
    [00:15:17] Error: Function not registered: 'DestroyDynamicMapIcon'
    [00:15:17] Error: Function not registered: 'dir_exists'
    [00:15:17] Error: Function not registered: 'dir_create'
    [00:15:17] Error: Function not registered: 'file_write'
    [00:15:17] Error: Function not registered: 'IsValidDynamicPickup'
    [00:15:17] Error: Function not registered: 'UpdateDynamic3DTextLabelText'
    [00:15:17] Error: Function not registered: 'CreateDynamic3DTextLabel'
    [00:15:17] Error: Function not registered: 'CreateDynamicPickup'
    [00:15:17] Error: Function not registered: 'CreateDynamicMapIcon'
    [00:15:17] Script[gamemodes/WB.amx]: Run time error 19: "File or function is not found"
    [00:15:17] Number of vehicle models: 0



    Könnt Ihr mir den richtigen Streamer/SScanf senden