Adminlevel-Befehl spinnt

  • Adminlevel-Befehl spinnt

    Guten Abend zusammen :D
    Ich bin noch sehr am Anfang und wollte einen Befehl erstellen, mit dem man als Rcon-Admin oder Serverleiter (Adminlevel 4) das Aminlevel eines Spielers ändern kann. Compile-Errors hab ich keine.
    Sowie ich /setadminlevel 0 (Meine ID) 4 auf meinem Localhost eingebe, passiert das im Chat:





    Hier der Befehl im Script:

    PAWN-Quellcode

    1. dcmd_setadminlevel(playerid, params[])
    2. {
    3. new spieler[100];
    4. new spieler2[100];
    5. new name[MAX_PLAYER_NAME];
    6. new name2[MAX_PLAYER_NAME];
    7. GetPlayerName(playerid,name,sizeof(name));
    8. format(spieler,sizeof(spieler),"/Accounts/%s.txt",name);
    9. if(IsPlayerAdmin(playerid))
    10. {
    11. new id, alevel;
    12. new str[128];
    13. new str2[128];
    14. new str3[128];
    15. if(sscanf(params,"uu",id,alevel)) return SendClientMessage(playerid,WEISS,"/setadminlevel [ID] [0-4]");
    16. GetPlayerName(id,name2,sizeof(name2));
    17. format(str,sizeof(str),"A: %s ist nun ein level %d Admin!",name2,alevel);
    18. format(str2,sizeof(str2),"A: Du wurdest zu einem level %d Admin befördert!",alevel);
    19. format(str3,sizeof(str3),"A: Du wurdest zu einem level %d Admin degradiert!",alevel);
    20. format(spieler2,sizeof(spieler2),"/Accounts/%s.txt",name2);
    21. dini_IntSet(spieler2,"Adminlevel",alevel);
    22. if(dini_Int(spieler2,"Adminlevel") > alevel)
    23. SendClientMessage(playerid,HELLROT,str);
    24. {
    25. SendClientMessage(id,HELLROT,str3);
    26. }
    27. if(dini_Int(spieler2,"Adminlevel") < alevel)
    28. {
    29. SendClientMessage(id,HELLROT,str2);
    30. }
    31. if(dini_Int(spieler2,"Adminlevel") == alevel)
    32. {
    33. SendClientMessage(playerid,HELLROT,"A: Dieser Spieler hat bereits dieses Adminlevel!");
    34. return 1;
    35. }
    36. return 1;
    37. }
    38. if(dini_Int(spieler,"Adminlevel") == 4)
    39. {
    40. new id, alevel;
    41. new str[128];
    42. new str2[128];
    43. new str3[128];
    44. if(sscanf(params,"uu",id,alevel)) return SendClientMessage(playerid,WEISS,"/setadminlevel [ID] [0-4]");
    45. GetPlayerName(id,name2,sizeof(name2));
    46. format(str,sizeof(str),"A: %s ist nun ein level %d Admin!",name2,alevel);
    47. format(str2,sizeof(str2),"A: Du wurdest zu einem level %d Admin befördert!",alevel);
    48. format(str3,sizeof(str3),"A: Du wurdest zu einem level %d Admin degradiert!",alevel);
    49. format(spieler2,sizeof(spieler2),"/Accounts/%s.txt",name2);
    50. dini_IntSet(spieler2,"Adminlevel",alevel);
    51. if(dini_Int(spieler2,"Adminlevel") > alevel)
    52. SendClientMessage(playerid,HELLROT,str);
    53. {
    54. SendClientMessage(id,HELLROT,str3);
    55. }
    56. if(dini_Int(spieler2,"Adminlevel") < alevel)
    57. {
    58. SendClientMessage(id,HELLROT,str2);
    59. }
    60. if(dini_Int(spieler2,"Adminlevel") == alevel)
    61. {
    62. SendClientMessage(playerid,HELLROT,"A: Dieser Spieler hat bereits dieses Adminlevel!");
    63. return 1;
    64. }
    65. return 1;
    66. }
    67. else
    68. {
    69. SendClientMessage(playerid,HELLROT,"A: Du bist nicht befugt!");
    70. return 1;
    71. }
    72. }
    Alles anzeigen


    Danke schonmal im Voraus :thumbup:
  • Versuch es mal mit dem Code.

    C-Quellcode

    1. dcmd_setadminlevel(playerid, params[])
    2. {
    3. new Spieler[100], Spieler2[100], SName[MAX_PLAYER_NAME], Sname2[MAX_PLAYER_NAME],
    4. id, alevel, str[128];
    5. GetPlayerName(playerid, Sname, sizeof(Sname));
    6. format(Spieler, sizeof(Spieler), "/Accounts/%s.txt", Sname);
    7. if(!IsPlayerAdmin(playerid) || dini_Int(Spieler, "Adminlevel") >= 4) return SendClientMessage(playerid, WEISS, "Du kannst diesen Befehl nicht Benutzen.");
    8. if(sscanf(params, "ud", id, alevel)) return SendClientMessage(playerid, WEISS, "/setadminlevel [ID/NAME] [0-4]");
    9. GetPlayerName(id, Sname2, sizeof(Sname2));
    10. format(Spieler2, sizeof(Spieler2), "/Accounts/%s.txt", Sname2);
    11. if(dini_Int(Spieler2, "Adminlevel" > alevel))
    12. {
    13. dini_IntSet(Spieler2, "Adminlevel", alevel);
    14. format(str, sizeof(str), "A: Du wurdest zu einem Level %d Admin degradiert!", alevel);
    15. SendClientMessage(id, HELLROT, str);
    16. format(str, sizeof(str), "A: Du hast den Spieler %s zum Admin mit dem Level %d degradiert!", Sname2, alevel);
    17. SendClientMessage(playerid, HELLROT, str);
    18. }
    19. else if(dini_Int(Spieler2, "Adminlevel" < alevel))
    20. {
    21. dini_IntSet(Spieler2, "Adminlevel", alevel);
    22. format(str, sizeof(str), "A: Du wurdest zu einem Level %d Admin befördert!", alevel);
    23. SendClientMessage(id, HELLROT, str);
    24. format(str, sizeof(str), "A: Du hast den Spieler %s zum Admin mit dem Level %d befördert!", Sname2, alevel);
    25. SendClientMessage(playerid, HELLROT, str);
    26. }
    27. else if(dini_Int(Spieler2, "Adminlevel" == alevel))
    28. {
    29. SendClientMessage(playerid, HELLROT, "Der Spieler hat bereits dieses Adminlevel.");
    30. }
    31. return 1;
    32. }
    Alles anzeigen
  • Ok, habe noch in Zeile 3 "SName" zu "Sname" geändert, doch jetzt kommen die Fehlercodes:

    C:\Users\Simon\Desktop\GTA SA Server\gamemodes\NVRoleplay.pwn(1132) : error 001: expected token: "-string end-", but found "-identifier-" // if(dini_Int(Spieler2, "Adminlevel" > alevel))
    C:\Users\Simon\Desktop\GTA SA Server\gamemodes\NVRoleplay.pwn(1141) : error 001: expected token: "-string end-", but found "-identifier-" //else if(dini_Int(Spieler2, "Adminlevel" < alevel))
    C:\Users\Simon\Desktop\GTA SA Server\gamemodes\NVRoleplay.pwn(1150) : error 001: expected token: "-string end-", but found "-identifier-" //else if(dini_Int(Spieler2, "Adminlevel" == alevel))
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    3 Errors.
  • War mein Fehler sorry. Sollte nun gehen.

    C-Quellcode

    1. dcmd_setadminlevel(playerid, params[])
    2. {
    3. new Spieler[100], Spieler2[100], SName[MAX_PLAYER_NAME], Sname2[MAX_PLAYER_NAME],
    4. id, alevel, str[128];
    5. GetPlayerName(playerid, Sname, sizeof(Sname));
    6. format(Spieler, sizeof(Spieler), "/Accounts/%s.txt", Sname);
    7. if(!IsPlayerAdmin(playerid) || dini_Int(Spieler, "Adminlevel") >= 4) return SendClientMessage(playerid, WEISS, "Du kannst diesen Befehl nicht Benutzen.");
    8. if(sscanf(params, "ud", id, alevel)) return SendClientMessage(playerid, WEISS, "/setadminlevel [ID/NAME] [0-4]");
    9. GetPlayerName(id, Sname2, sizeof(Sname2));
    10. format(Spieler2, sizeof(Spieler2), "/Accounts/%s.txt", Sname2);
    11. if(dini_Int(Spieler2, "Adminlevel") > alevel)
    12. {
    13. dini_IntSet(Spieler2, "Adminlevel", alevel);
    14. format(str, sizeof(str), "A: Du wurdest zu einem Level %d Admin degradiert!", alevel);
    15. SendClientMessage(id, HELLROT, str);
    16. format(str, sizeof(str), "A: Du hast den Spieler %s zum Admin mit dem Level %d degradiert!", Sname2, alevel);
    17. SendClientMessage(playerid, HELLROT, str);
    18. }
    19. else if(dini_Int(Spieler2, "Adminlevel") < alevel)
    20. {
    21. dini_IntSet(Spieler2, "Adminlevel", alevel);
    22. format(str, sizeof(str), "A: Du wurdest zu einem Level %d Admin befördert!", alevel);
    23. SendClientMessage(id, HELLROT, str);
    24. format(str, sizeof(str), "A: Du hast den Spieler %s zum Admin mit dem Level %d befördert!", Sname2, alevel);
    25. SendClientMessage(playerid, HELLROT, str);
    26. }
    27. else if(dini_Int(Spieler2, "Adminlevel") == alevel)
    28. {
    29. SendClientMessage(playerid, HELLROT, "Der Spieler hat bereits dieses Adminlevel.");
    30. }
    31. return 1;
    32. }
    Alles anzeigen
  • PAWN-Quellcode

    1. dcmd_setadminlevel(playerid, params[])
    2. {
    3. new Spieler[100], Spieler2[100], SName[MAX_PLAYER_NAME], Sname2[MAX_PLAYER_NAME],
    4. id, alevel, str[128];
    5. GetPlayerName(playerid, Sname, sizeof(Sname));
    6. format(Spieler, sizeof(Spieler), "/Accounts/%s.txt", Sname);
    7. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, WEISS, "Du kannst diesen Befehl nicht Benutzen.");
    8. if(sscanf(params, "ud", id, alevel)) return SendClientMessage(playerid, WEISS, "/setadminlevel [ID/NAME] [0-4]");
    9. GetPlayerName(id, Sname2, sizeof(Sname2));
    10. format(Spieler2, sizeof(Spieler2), "/Accounts/%s.txt", Sname2);
    11. if(dini_Int(Spieler2, "Adminlevel") > alevel)
    12. {
    13. dini_IntSet(Spieler2, "Adminlevel", alevel);
    14. format(str, sizeof(str), "A: Du wurdest zu einem Level %d Admin degradiert!", alevel);
    15. SendClientMessage(id, HELLROT, str);
    16. format(str, sizeof(str), "A: Du hast den Spieler %s zum Admin mit dem Level %d degradiert!", Sname2, alevel);
    17. SendClientMessage(playerid, HELLROT, str);
    18. }
    19. else if(dini_Int(Spieler2, "Adminlevel") < alevel)
    20. {
    21. dini_IntSet(Spieler2, "Adminlevel", alevel);
    22. format(str, sizeof(str), "A: Du wurdest zu einem Level %d Admin befördert!", alevel);
    23. SendClientMessage(id, HELLROT, str);
    24. format(str, sizeof(str), "A: Du hast den Spieler %s zum Admin mit dem Level %d befördert!", Sname2, alevel);
    25. SendClientMessage(playerid, HELLROT, str);
    26. }
    27. else if(dini_Int(Spieler2, "Adminlevel") == alevel)
    28. {
    29. SendClientMessage(playerid, HELLROT, "Der Spieler hat bereits dieses Adminlevel.");
    30. }
    31. return 1;
    32. }
    Alles anzeigen
  • So war das nicht gemeint ^^ Ich meinte, dass ich den Command sowohl nur als Serverleiter (Level 4 Admin) , nur als Rcon-Admin als auch als Serverleiter und Rcon-Admin zusammen nutzen kann , also so, wie ich es am Anfang in den Thread gepostet habe :D Tut mir leid, dass es grad so kompliziert ist ^^

  • Ich hoffe ich hab das jetzt richtig verstanden... also du willst den Befehl als Rcon-Admin oder als Serverleiter (Level 4 Admin) verwenden können bzw. wenn du beides bist. Falls ja dann:

    PAWN-Quellcode

    1. dcmd_setadminlevel(playerid, params[])
    2. {
    3. new Spieler[100], Spieler2[100], SName[MAX_PLAYER_NAME], Sname2[MAX_PLAYER_NAME],
    4. id, alevel, str[128];
    5. GetPlayerName(playerid, Sname, sizeof(Sname));
    6. format(Spieler, sizeof(Spieler), "/Accounts/%s.txt", Sname);
    7. if(!IsPlayerAdmin(playerid) || dini_Int(Spieler, "Adminlevel") < 4) return SendClientMessage(playerid, WEISS, "Du kannst diesen Befehl nicht Benutzen.");
    8. if(sscanf(params, "ud", id, alevel)) return SendClientMessage(playerid, WEISS, "/setadminlevel [ID/NAME] [0-4]");
    9. GetPlayerName(id, Sname2, sizeof(Sname2));
    10. format(Spieler2, sizeof(Spieler2), "/Accounts/%s.txt", Sname2);
    11. if(dini_Int(Spieler2, "Adminlevel") > alevel)
    12. {
    13. dini_IntSet(Spieler2, "Adminlevel", alevel);
    14. format(str, sizeof(str), "A: Du wurdest zu einem Level %d Admin degradiert!", alevel);
    15. SendClientMessage(id, HELLROT, str);
    16. format(str, sizeof(str), "A: Du hast den Spieler %s zum Admin mit dem Level %d degradiert!", Sname2, alevel);
    17. SendClientMessage(playerid, HELLROT, str);
    18. }
    19. else if(dini_Int(Spieler2, "Adminlevel") < alevel)
    20. {
    21. dini_IntSet(Spieler2, "Adminlevel", alevel);
    22. format(str, sizeof(str), "A: Du wurdest zu einem Level %d Admin befördert!", alevel);
    23. SendClientMessage(id, HELLROT, str);
    24. format(str, sizeof(str), "A: Du hast den Spieler %s zum Admin mit dem Level %d befördert!", Sname2, alevel);
    25. SendClientMessage(playerid, HELLROT, str);
    26. }
    27. else if(dini_Int(Spieler2, "Adminlevel") == alevel)
    28. {
    29. SendClientMessage(playerid, HELLROT, "Der Spieler hat bereits dieses Adminlevel.");
    30. }
    31. return 1;
    32. }
    Alles anzeigen
  • Ja, richtig verstanden :D Doch wenn ich jetzt kein Rcon-Admin bin, jedoch Level 4 admin, kann ich den Befehl trz nicht verwenden.
    Und wenn ich kein Rcon-Admin bin, jedoch level 4 Admin, geht es auch nicht.. :/
    Ich schätze das liegt an daran, dass die Bedingung Rcon-Admin zu sein ( if(!IsPlayerAdmin(playerid)) ) mit der bedingung level 4 Admin zu sein ( dini_Int(Spieler,"Adminlevel") < 4) ) zusammenhängt..
    Ich würde sagen, es passt aber auch so, bevor ich noch mehr eurer Zeit raube ^^

    Auf jeden Fall bedanke ich mich recht herzlich bei euch! :)
  • xMidFingx schrieb:

    Ich schätze das liegt an daran, dass die Bedingung Rcon-Admin zu sein ( if(!IsPlayerAdmin(playerid)) ) mit der bedingung level 4 Admin zu sein ( dini_Int(Spieler,"Adminlevel") < 4) ) zusammenhängt..
    Ich würde sagen, es passt aber auch so, bevor ich noch mehr eurer Zeit raube
    Ups...

    Entweder:

    PAWN-Quellcode

    1. dcmd_setadminlevel(playerid, params[])
    2. {
    3. new Spieler[100], Spieler2[100], SName[MAX_PLAYER_NAME], Sname2[MAX_PLAYER_NAME],
    4. id, alevel, str[128];
    5. GetPlayerName(playerid, Sname, sizeof(Sname));
    6. format(Spieler, sizeof(Spieler), "/Accounts/%s.txt", Sname);
    7. if(IsPlayerAdmin(playerid) || dini_Int(Spieler, "Adminlevel") == 4)
    8. {
    9. if(sscanf(params, "ud", id, alevel)) return SendClientMessage(playerid, WEISS, "/setadminlevel [ID/NAME] [0-4]");
    10. GetPlayerName(id, Sname2, sizeof(Sname2));
    11. format(Spieler2, sizeof(Spieler2), "/Accounts/%s.txt", Sname2);
    12. if(dini_Int(Spieler2, "Adminlevel") > alevel)
    13. {
    14. dini_IntSet(Spieler2, "Adminlevel", alevel);
    15. format(str, sizeof(str), "A: Du wurdest zu einem Level %d Admin degradiert!", alevel);
    16. SendClientMessage(id, HELLROT, str);
    17. format(str, sizeof(str), "A: Du hast den Spieler %s zum Admin mit dem Level %d degradiert!", Sname2, alevel);
    18. SendClientMessage(playerid, HELLROT, str);
    19. }
    20. else if(dini_Int(Spieler2, "Adminlevel") < alevel)
    21. {
    22. dini_IntSet(Spieler2, "Adminlevel", alevel);
    23. format(str, sizeof(str), "A: Du wurdest zu einem Level %d Admin befördert!", alevel);
    24. SendClientMessage(id, HELLROT, str);
    25. format(str, sizeof(str), "A: Du hast den Spieler %s zum Admin mit dem Level %d befördert!", Sname2, alevel);
    26. SendClientMessage(playerid, HELLROT, str);
    27. }
    28. else if(dini_Int(Spieler2, "Adminlevel") == alevel)
    29. {
    30. SendClientMessage(playerid, HELLROT, "Der Spieler hat bereits dieses Adminlevel.");
    31. }
    32. } else {
    33. return SendClientMessage(playerid, WEISS, "Du kannst diesen Befehl nicht Benutzen.");
    34. }
    35. return 1;
    36. }
    Alles anzeigen
    Oder du ersetzt bei dem anderen Code die | | durch && .