Chatfehler ( /r chat)

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
  • Heyho,
    ich versuche mich gerade an einem Radio Chat wo sich bestimmte Fraktionen unter Sich schreiben können.
    Wenn jemand den Befehl eingibt und ein Text schreibt soll nur diejenige Person das lesen können die auch in der Fraktion des Schreibers ist.


    Hier mein Befehl:

    ocmd:r(playerid,params[])
    {
    if(AFK[playerid] == 1) return SendClientMessage(playerid,ROT,"Du kannst keine Befehle verwenden solange du AFK bist.");
    if(isPlayerInFrakt(playerid,0)) return SendClientMessage(playerid,ROT,"Du bist nicht befugt diesen Befehl zu benutzen.");

    if(SpielerInfo[playerid][pFraktion] ==1 || SpielerInfo[playerid][pFraktion] ==2 || SpielerInfo[playerid][pFraktion] ==3)
    {
    new string[128];
    if(sscanf(params,"s",string)) return SendClientMessage(playerid,DUNKELGRAU, "Benutzung: /r [Text]");
    new fID = SpielerInfo[playerid][pFraktion];


    switch(SpielerInfo[playerid][pRang])
    {
    case 1:format(string, sizeof(string), "** Rang 1 '%s': %s", SpielerName(playerid), string);
    case 2:format(string, sizeof(string), "** Rang 2 '%s': %s", SpielerName(playerid), string);
    case 3:format(string, sizeof(string), "** Rang 3 '%s': %s", SpielerName(playerid), string);
    case 4:format(string, sizeof(string), "** Rang 4 '%s': %s", SpielerName(playerid), string);
    case 5:format(string, sizeof(string), "** Rang 5 '%s': %s", SpielerName(playerid), string);
    case 6:format(string, sizeof(string), "** Rang 6 '%s': %s", SpielerName(playerid), string);
    case 7:format(string, sizeof(string), "** Leitung '%s': %s",SpielerName(playerid), string);
    }


    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(isPlayerInFrakt(i, fID))
    {
    SendClientMessage(i, 0x7B89FFFF, string);
    Frakchatlog(string);
    }
    }
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du bist nicht befugt diesen Befehl zu benutzen.");
    }
    return 1;
    }


    Wenn ich ingame jetzt /r hallo schreibe, crasht mein Server immer.
    Woran liegt das?

  • ocmd:r(playerid,params[]){
    if(AFK[playerid])return SendClientMessage(playerid,ROT,"Du kannst keine Befehle verwenden, solange du AFK bist!");
    if(isPlayerInFrakt(playerid,0))return SendClientMessage(playerid,ROT,"Du bist nicht befugt diesen Befehl zu benutzen!");
    if(SpielerInfo[playerid][pFraktion]!=1||SpielerInfo[playerid][pFraktion]!=2||SpielerInfo[playerid][pFraktion]!=3)return SendClientMessage(playerid,ROT,"Du bist nicht befugt diesen Befehl zu benutzen.");
    new string[128],text[64];
    if(sscanf(params,"s[64]",text))return SendClientMessage(playerid,DUNKELGRAU,"Benutzung: /r [Text]");
    switch(SpielerInfo[playerid][pRang]){
    case 1:format(string,128,"** Rang 1 '%s': %s",SpielerName(playerid),text);
    case 2:format(string,128,"** Rang 2 '%s': %s",SpielerName(playerid),text);
    case 3:format(string,128,"** Rang 3 '%s': %s",SpielerName(playerid),text);
    case 4:format(string,128,"** Rang 4 '%s': %s",SpielerName(playerid),text);
    case 5:format(string,128,"** Rang 5 '%s': %s",SpielerName(playerid),text);
    case 6:format(string,128,"** Rang 6 '%s': %s",SpielerName(playerid),text);
    case 7:format(string,128,"** Rang Leitung '%s': %s",SpielerName(playerid),text);
    }
    for(new i=0;i<MAX_PLAYERS;i++){
    if(isPlayerInFrakt(i,SpielerInfo[playerid][pFraktion])SendClientMessage(i,0x7B89FFFF,string),Frakchatlog(string);
    }
    return 1;
    }
    Versuch das mal so.


    Du kannst die AFK-Abfrage auch einfach bei OnPlayerCommandText einfügen, dann brauchst du das nur einmal abfragen und nicht bei jedem Befehl neu ;)
    if(AFK[playerid])return SendClientMessage(playerid,ROT,"Du kannst keine Befehle verwenden, solange du AFK bist!");


    Ansonsten kannst du uns mal die Funktion Frakchatlog schicken

    Einmal editiert, zuletzt von AirM4X ()

  • Schreibs mal so:


    ocmd:r(playerid,params[])
    {
    if(AFK[playerid]) return SendClientMessage(playerid,ROT,"Du kannst keine Befehle verwenden solange du AFK bist.");
    if(isPlayerInFrakt(playerid,0)) return SendClientMessage(playerid,ROT,"Du bist nicht befugt diesen Befehl zu benutzen.");
    if(!SpielerInfo[playerid][pFraktion] || SpielerInfo[playerid][pFraktion] > 3) return SendClientMessage(playerid,ROT,"Du bist nicht befugt diesen Befehl zu benutzen.");
    if(!params[0]) return SendClientMessage(playerid,DUNKELGRAU, "Benutzung: /r [Text]");
    new string[144];
    if(SpielerInfo[playerid][pRang] == 7) format(string,144,"** Leitung '%s': %s",SpielerName(playerid),params);
    else format(string,144,"** Rang %d '%s': %s",SpielerInfo[playerid][pRang],SpielerName(playerid),params);
    for(new i; i<MAX_PLAYERS; i++) {
    if(!isPlayerInFrakt(i, SpielerInfo[playerid][pFraktion])) continue;
    SendClientMessage(i, 0x7B89FFFF, string),Frakchatlog(string);
    }
    return 1;
    }


    Wenn das nicht klappt liegt der Fehler in der Funktion "Frakchatlog" ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S