[Hilfe] Problem mit Adminchat

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
  • Ich habe nen problem mit meinem Admichat hier der code




    ocmd:a(playerid,params[])
    {
    if(!isAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Admin!");
    new text[400];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,GRAU,"INFO: /a [Text]");
    new string[128];
    if(GetPVarInt(playerid,"admin")==1) { format(string, sizeof(string), "** (ADMINCHAT) ProbeSupporter %s: %s. **", SpielerName(playerid), text);}
    else if(GetPVarInt(playerid,"admin")==2) {format(string,sizeof(string),"**(ADMINCHAT) Supporter %s: %s.**",SpielerName(playerid),text);}
    else if(GetPVarInt(playerid,"admin")==3) {format(string,sizeof(string),"**(ADMINCHAT) Moderator %s: %s.**",SpielerName(playerid),text);}
    else if(GetPVarInt(playerid,"admin")==4) {format(string,sizeof(string),"**(ADMINCHAT) Administrator %s: %s.**",SpielerName(playerid),text);}
    else if(GetPVarInt(playerid,"admin")==5) {format(string,sizeof(string),"**(ADMINCHAT) SuperAdministrator %s: %s.**",SpielerName(playerid),text);}
    else if(GetPVarInt(playerid,"admin")==6) {format(string,sizeof(string),"**(ADMINCHAT) Stellv. ServerLeiter %s: %s.**",SpielerName(playerid),text);}
    else if(GetPVarInt(playerid,"admin")==7) {format(string,sizeof(string),"**(ADMINCHAT) ServerLeiter %s: %s.**",SpielerName(playerid),text);}
    print("-----");
    print(string);
    for(new i=0; i<GetMaxPlayers(); i++) { if(IsPlayerConnected(i)) { if(isPlayerInFrakt(i,GetPVarInt(playerid,"Adminlevel"))) { SendClientMessage(i,BLAU,string); } } }
    return 1;
    }


    sorry ich bekomm das einfach nicht hin mit dem scheiß pwn code -.-


    Errors bekomm ich keine aber wen ich ingame /a mache kommt da nix nur die frabe also als hätte man mit der leertaste geschrieben und enter gedrückt

    2 Mal editiert, zuletzt von JOK3R () aus folgendem Grund: as


  • DAmit man es besser erkennen kann :) Schreib es ambesten mit PHP


    //edit sry hab nicht gessehn das du keine Errors bekommst :)

  • ocmd:a(playerid,params[])
    {
    if(!isAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Admin!");
    new text[400],string[128],text1[400];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,GRAU,"INFO: /a [Text]");
    switch(admin)
    {
    case 1: text1 = "ProbeSupporter";
    }
    for(new i=0; i<GetMaxPlayers(); i++) { if(IsPlayerConnected(i)) { if(isPlayerInFrakt(i,GetPVarInt(playerid,"Adminlevel"))) { format(string,sizeof(string),"**(ADMINCHAT) %s %s: %s.*",text1,text,SpielerName(playerid)); SendClientMessage(i,BLAU,string); } } }
    return 1;
    }


    musst es Fortsetzen mit dem case 1 = Admin level 1, case 2 = Admin level 2 usw :)


    MfG
    Acer

  • Also ich habe es jetzt mal so gemacht


    new admin;


    und dann


    ocmd:a(playerid,params[])
    {
    if(!isAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Admin!");
    new text[400],string[128],text1[400];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,GRAU,"INFO: /a [Text]");
    switch(admin)
    {
    case 1: text1 = "ProbeSupporter";
    case 2: text1 = "Supporter";
    case 3: text1 = "Moderator";
    case 4: text1 = "Administrator";
    case 5: text1 = "SuperAdministrator";
    case 6: text1 = "Stellv. ServerLeiter";
    case 7: text1 = "ServerLeiter";
    }
    for(new i=0; i<GetMaxPlayers(); i++) { if(IsPlayerConnected(i)) { if(isPlayerInFrakt(i,GetPVarInt(playerid,"Adminlevel"))) { format(string,sizeof(string),"**(ADMINCHAT) %s %s: %s.*",text1,text,SpielerName(playerid)); SendClientMessage(i,BLAU,string); } } }
    return 1;
    }


    und ingame xD kommt dann


    [21:04:30] **(ADMINCHAT) Hallo: DerJonny.*



    abver es sollte ja so sein
    **(ADMINCHAT) ServerLeiter Name: blablabla

  • Hallo DerJonny.[47]



    Darf ich Fragen warum du es dir so umständlich machst ?
    Das geht doch alles viel einfacher. Zum beispiel so:


    ocmd:a(playerid,params[])
    {
    new adminrank[10],text[64];
    if(!isAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Admin!");
    {
    switch(GetPVarInt(playerid,"Adminlevel"))
    {
    case 1:{adminrank="Rang1";}
    case 2:{adminrank="Rang2";}
    case 3:{adminrank="Rang3";}
    case 4:{adminrank="Rang4";}
    case 5:{adminrank="Rang5";}
    case 6:{adminrank="Rang6";}
    case 7:{adminrank="Rang7";}
    }
    }
    if(sscanf(params,"s",text))return SendClientMessage(playerid,DUNKELGRAU,"Benutzung: /a [Dein Text]");
    format(text,sizeof(text),"(ADMINCHAT) %s %s: %s",adminrank,SpielerName(playerid),text);
    print(text);


    return 1;
    }

  • Ja das ist doch auch total simple ^^



    switch(GetPVarInt(playerid,"Adminlevel"))
    {
    case 1:{adminrank="Rang1";} // = Admins mit dem Adminlevel 1 kriegen den Rang1
    case 2:{adminrank="Rang2";} // = Admins mit dem Adminlevel 2 kriegen den Rang2
    case 3:{adminrank="Rang3";} // falls du halt Adminlevels wie 1337 oder 2000 hast einfach z.B aus case 7 = case 1337 usw machen ^^[/color]
    case 4:{adminrank="Rang4";}
    case 5:{adminrank="Rang5";}
    case 6:{adminrank="Rang6";}
    case 7:{adminrank="Rang7";}




    Grüße

    Einmal editiert, zuletzt von Equ ()

  • if(strcmp(cmd, "/admin", true) == 0 || strcmp(cmd, "/a", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "NUTZE: (/a)dmin [admin chat]");
    return 1;
    }
    if(PlayerInfo[playerid][pAdmin] >= 1)
    {
    format(string, sizeof(string), "{FF00E5}*%d Admin %s[%d]: %s{FFFFFF}", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pSupporter] >= 1)
    {
    format(string, sizeof(string), "{FF00E5}*%d Supporter %s[%d]: %s{FFFFFF}", PlayerInfo[playerid][pSupporter], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pSupporter] == 6)
    {
    format(string, sizeof(string), "{FF00E5}*%d Admin %s[%d]: %s", PlayerInfo[playerid][pSupporter], sendername, playerid, result);
    }


    else return 1;
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerInfo[i][pSupporter] >= 1 || PlayerInfo[i][pAdmin] >= 1)
    {
    SendClientMessage(i,COLOR_YELLOW,string);
    }
    }
    }
    Log("OA-Chat.txt",string);
    }
    return 1;
    }


    Mein System, eigendlich ganz Simpel, müsste halt nur angepasst werden :D

  • was für eine verschwendung...

    Code
    new text[400];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,GRAU,"INFO: /a [Text]");


    würde um einiges ressourcensparender so funktionieren: (statt text einfach params verwenden)

    Code
    if(!strlen(params))return SendClientMessage(playerid,GRAU,"INFO: /a [Text]");
  • Waht the f.. ?


    Simple ist was anderes meine Variante ist wohl die beste hier im Thread ^^




    Grüße