2 Command Probleme /admins und /usedrugs

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
  • Einmal möchte ich eine Zeit Begrenzung auf 20 Sekunden in diesen Command: kann mir das jemand machen und fertig drunter posten
    if(strcmp("/usedrugs", cmd, true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pDrugs] >= 2)
    {
    new Float:Health;
    GetPlayerName(playerid,sendername,sizeof(sendername));
    GetPlayerHealth(playerid, Health);
    PlayerStoned[playerid] += 1;
    if(PlayerStoned[playerid] >= 3)
    {
    PlayerStonedTime[playerid] = 180;
    }
    if(PlayerStonedTime[playerid] > 0)
    {
    GameTextForPlayer(playerid, "~w~Du bist~n~~p~bekifft", 4000, 1);
    SetPlayerDrunkLevel(playerid,GetPlayerDrunkLevel(playerid) +3000);
    }
    if(PlayerInfo[playerid][pDrugPerk] > 0)
    {
    new hp = 5 * PlayerInfo[playerid][pDrugPerk];
    SetPlayerHealth(playerid, Health + hp);
    }
    else
    {
    SetPlayerHealth(playerid, Health + 4);
    }
    PlayerInfo[playerid][pDrugs] -= 2;
    OnePlayAnim(playerid, "FOOD", "EAT_Burger", 3.0, 0, 0, 0, 0, 0); // Eat Burger
    format(string, sizeof(string), "* %s pfeift sich 2 Gramm getrocknetes Gras rein.", sendername);
    ProxDetector(20.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    format(string,sizeof(string),"* %s nutzt usedrugs", sendername);
    EnterToLog("usedrugs",string);
    }
    else
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keine Drogen !");
    }
    }
    return 1;
    }


    und noch /admins bei diesem Befehl sehen normale User nicht wer On ist nur die admins und da steht egal welcher Rang Admin:(ID)(Name)(Rang) und ich hätte gerne das es jeder sieht und das es so dort steht Rangname:[Name][ID] auch dann bitte fertig drunter posten
    if(strcmp("/admins", cmd, true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, "Admins Online:");
    for(new i = 0; i < MAX_PLAYERS; i++){
    if(IsPlayerConnected(i)){
    if(PlayerInfo[i][pAdmin] >= 1 && AFKModus[i] == 0){
    if(PlayerInfo[i][pAdmin] != 0 && PlayerInfo[i][pAdmin] < 1338){
    new AdminRangName[25];
    if(PlayerInfo[i][pAdmin] == -1){AdminRangName = "Beschwerdemoderator";}
    if(PlayerInfo[i][pAdmin] == 1){AdminRangName = "Supporter";}
    if(PlayerInfo[i][pAdmin] == 2){AdminRangName = "OberSupporter";}
    if(PlayerInfo[i][pAdmin] == 3){AdminRangName = "Moderator";}
    if(PlayerInfo[i][pAdmin] == 4){AdminRangName = "SupperModerator";}
    if(PlayerInfo[i][pAdmin] == 5){AdminRangName = "Admin";}
    if(PlayerInfo[i][pAdmin] == 6){AdminRangName = "SupperAdmin";}
    if(PlayerInfo[i][pAdmin] == 1337){AdminRangName = "Fulladmin";}
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, sizeof(string), "%s: %s", AdminRangName, sendername);
    SendClientMessage(playerid, COLOR_GREY, string);
    }}}}}
    else if(PlayerInfo[playerid][pAdmin] != 0){
    SendClientMessage(playerid, COLOR_GREY, "Admins Online:");
    for(new i = 0; i < MAX_PLAYERS; i++){
    if(IsPlayerConnected(i)){
    if(PlayerInfo[i][pAdmin] != 0 && PlayerInfo[i][pAdmin] != 2050){
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, sizeof(string), "Admin: [%d]%s (%d)", i, sendername, PlayerInfo[i][pAdmin]);
    SendClientMessage(playerid, COLOR_GREY, string);
    }}}}}
    return 1;
    }


    Es wäre sehr hilfreich wenn mir jemand helfen würde!
    Lg. Luis

  • Zum ersten kannst du mit timestamps arbeiten einfach eine zusätzliche account variabel erstellen oder ein extra array und den wert das gettime zurück gibt drin speichern und die 20 sekunden dazu rechnen und das ganze abprüfen.
    new timestamp[MAX_PLAYERS];



    if(strcmp("/usedrugs", cmd, true) == 0)
    {
    if(timestamp[playerid] > gettime())return SendClientMessage(playerid,-1,"Du kannst noch nicht diesen Befehl nutzen");
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pDrugs] >= 2)
    {
    new Float:Health;
    GetPlayerName(playerid,sendername,sizeof(sendername));
    GetPlayerHealth(playerid, Health);
    PlayerStoned[playerid] += 1;
    if(PlayerStoned[playerid] >= 3)
    {
    PlayerStonedTime[playerid] = 180;
    }
    if(PlayerStonedTime[playerid] > 0)
    {
    GameTextForPlayer(playerid, "~w~Du bist~n~~p~bekifft", 4000, 1);
    SetPlayerDrunkLevel(playerid,GetPlayerDrunkLevel(playerid) +3000);
    }
    if(PlayerInfo[playerid][pDrugPerk] > 0)
    {
    new hp = 5 * PlayerInfo[playerid][pDrugPerk];
    SetPlayerHealth(playerid, Health + hp);
    }
    else
    {
    SetPlayerHealth(playerid, Health + 4);
    }
    timestamp[playerid] = gettime() + 20;
    PlayerInfo[playerid][pDrugs] -= 2;
    OnePlayAnim(playerid, "FOOD", "EAT_Burger", 3.0, 0, 0, 0, 0, 0); // Eat Burger
    format(string, sizeof(string), "* %s pfeift sich 2 Gramm getrocknetes Gras rein.", sendername);
    ProxDetector(20.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    format(string,sizeof(string),"* %s nutzt usedrugs", sendername);
    EnterToLog("usedrugs",string);
    }
    else
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du hast keine Drogen !");
    }
    }
    return 1;
    }



    if(strcmp("/admins", cmd, true) == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, "Admins Online:");
    new AdminRangName[25];
    for(new i = 0; i < MAX_PLAYERS; i++){
    if(!IsPlayerConnected(i)|| (PlayerInfo[i][pAdmin] == 0 && AFKModus[i] == 1))continue;
    switch( PlayerInfo[i][pAdmin]){
    case -1:AdminRangName = "Beschwerdemoderator";
    case 1:AdminRangName = "Supporter";
    case 2:AdminRangName = "OberSupporter";
    case 3:AdminRangName = "Moderator";
    case 4:AdminRangName = "SuperModerator";
    case 5:AdminRangName = "Admin";
    case 6:AdminRangName = "SuperAdmin";
    case 1337: AdminRangName = "Fulladmin";
    case default: AdminRangName = "Unknown";

    }
    format(string, sizeof(string), "%s: %s[%d]", AdminRangName, sendername,i);
    SendClientMessage(playerid, COLOR_GREY, string);
    }
    return 1;
    }

  • danke für den /usedrugs Befehl klappt perfekt aber der /admins befehl zeigt dann an :Name[0] :Name[1] :Name[2] :Name[3] Projektleiter:Name[4]
    Die IDs 0-3 sind Bots und ich musste case default: AdminRangName = "Unknown"; rauslöschen weil es ein error angezeigt hat

  • danke für den /usedrugs Befehl klappt perfekt aber der /admins befehl zeigt dann an :Name[0] :Name[1] :Name[2] :Name[3] Projektleiter:Name[4]
    Die IDs 0-3 sind Bots und ich musste case default: AdminRangName = "Unknown"; rauslöschen weil es ein error angezeigt hat


    if(strcmp("/admins", cmd, true) == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, "Admins Online:");
    new AdminRangName[25],i;
    for(; i != MAX_PLAYERS; ++i){
    if(!IsPlayerConnected(i)|| PlayerInfo[i][pAdmin] == 0 || AFKModus[i] == 1 || PlayerInfo[i][pAdmin] > 1338)continue;
    switch( PlayerInfo[i][pAdmin]){
    case -1:AdminRangName = "Beschwerdemoderator";
    case 1:AdminRangName = "Supporter";
    case 2:AdminRangName = "OberSupporter";
    case 3:AdminRangName = "Moderator";
    case 4:AdminRangName = "SuperModerator";
    case 5:AdminRangName = "Admin";
    case 6:AdminRangName = "SuperAdmin";
    case 1337: AdminRangName = "Fulladmin";
    }
    format(string, sizeof(string), "%s: %s[%d]", AdminRangName, sendername,i);
    SendClientMessage(playerid, COLOR_GREY, string);
    }
    return 1;
    }


    Deine Bots werden doch wohl kein Adminlevel haben sonst fügst du einfach IsPlayerNPC(i) hinzu bei der if abfrage

  • jetzt gehts nur wenn ich und ein anderer Admin on sind und man /admins eingibt steht dann da z.b. Fulladmin:MeinName[ID] und darunter den rang den er hat aber den gleichen namen vorne und wenn er dann auch /admins macht steht anstatt mein name auch 2 mal sein name da

  • das liegt daran das ich GetPlayerName raus gekickt habe und mir das nicht aufgefallen ist und da dies wahrscheinlich als globalen string definiert hast ergibt das auch kein error
    als undefines symbol

    if(strcmp("/admins", cmd, true) == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, "Admins Online:");
    new AdminRangName[25],i,pName[MAX_PLAYER_NAME];
    for(; i != MAX_PLAYERS; ++i){
    if(!IsPlayerConnected(i)|| PlayerInfo[i][pAdmin] == 0 || AFKModus[i] == 1 || PlayerInfo[i][pAdmin] > 1338)continue;
    switch( PlayerInfo[i][pAdmin]){
    case -1:AdminRangName = "Beschwerdemoderator";
    case 1:AdminRangName = "Supporter";
    case 2:AdminRangName = "OberSupporter";
    case 3:AdminRangName = "Moderator";
    case 4:AdminRangName = "SuperModerator";
    case 5:AdminRangName = "Admin";
    case 6:AdminRangName = "SuperAdmin";
    case 1337: AdminRangName = "Fulladmin";
    }
    GetPlayerName(i,pName,MAX_PLAYER_NAME);
    format(string, sizeof(string), "%s: %s[%d]", AdminRangName, pName,i);
    SendClientMessage(playerid, COLOR_GREY, string);
    }
    return 1;
    }