Chat befehl funktioniert nicht richtig

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
  • Morgen Community,


    ich habe folgendes Problem. Ich habe einen "Radio" Befehl für die Polizei geschrieben.
    Der Befehl Ansich funktioniert doch es werden nicht mehr als 30 Zeichen von denen man eingetippt hat angezeigt also schreibt man einen längeren Satz wird der bei 30 Sachen einfach "abgeschnitten".


    Hier Der Code:


    ocmd:r(playerid,params[]) //Polizei-Funk
    {
    if(sInfo[playerid][Fraktion] > 0)
    {
    if(sInfo[playerid][Fraktion] == 1)
    {
    new string[128],string2[512];
    if(sscanf(params,"s",string))return SendClientMessage(playerid,COLOR_RED,"Befehl: {FEFEFE}/r <Text>");
    new rang[30];
    new namesy[MAX_PLAYER_NAME];
    GetPlayerName(playerid,namesy,sizeof(namesy));
    if(sInfo[playerid][FrakRang] == 1) { rang = "[R1 - Officer]"; }
    else if(sInfo[playerid][FrakRang] == 2) { rang = "[R2 - Officer]"; }
    else if(sInfo[playerid][FrakRang] == 3) { rang = "[R3 - Officer]"; }
    else if(sInfo[playerid][FrakRang] == 4) { rang = "[R4 - Officer]"; }
    else if(sInfo[playerid][FrakRang] == 5) { rang = "[R5 - Officer]"; }
    else if(sInfo[playerid][FrakRang] == 6) { rang = "[R6 - Officer]"; }
    format(string2,sizeof(string2),"{FCFF00}[Radio] %s %s sagt: %s, over.",rang,namesy,string);
    SendCopMessage(COLOR_BLUE,string2);
    return 1;
    } }
    }



    Hoffe ihr versteht was ich meine und habt eine Lösung.




    Mit freundlichen Grüßen


    Boomray

  • Versuch mal den "string" etwas zu erhöhen. Was mich wundert, das genau bei der Anzahl der Buchstaben, diese das Maximum des String's "Rang" hat, der Satz zuende ist.


    Dies habe ich schon versucht da ändert sich nichts.


    Das lustige ist wenn ich als Standart text also z.B "Officer Boomray ist ein Polizist: " und dann InGame schreibe werden auch 30 zeichen ausgelesen obwohl schon mehr als standart text eingetragen ist.


    //Edit:


    public SendCopMessage(color, string[])
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(sInfo[i][Fraktion] == 1)
    {
    SendClientMessage(i, color, string);
    }
    }
    }
    }

  • Es ist doch ganz einfach mach es doch in einem case



    ocmd:r(playerid,params[])
    {
    new string[128],text[128];
    if(sInfo[playerid][Fraktion] > 0)
    {
    if(sInfo[playerid][Fraktion] == 1)
    if(sscanf(params,"s",text))return SendClientMessage(playerid,COLOR_GREY,"INFO: /r [Text]");
    switch(if(sInfo[playerid][FrakRang])
    {
    case 1: format(string, sizeof(string),"** R1 Officer %s: %s, over. **", SpielerName(playerid),text);
    case 2: format(string, sizeof(string),"** R2 Officer %s: %s, over. **", SpielerName(playerid),text);
    case 3: format(string, sizeof(string),"** R3 Officer %s: %s, over. **", SpielerName(playerid),text);
    case 4: format(string, sizeof(string),"** R4 Officer %s: %s, over. **", SpielerName(playerid),text);
    case 5: format(string, sizeof(string),"** R5 Officer %s: %s, over. **", SpielerName(playerid),text);
    case 6: format(string, sizeof(string),"** R6 Officer %s: %s, over. **", SpielerName(playerid),text);
    }
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i)) {
    if(sInfo[Fraktion] == 1)
    {
    SendClientMessage(i, COLOR_DGREEN, string);
    }
    }
    }
    }

    Einmal editiert, zuletzt von JOK3R ()

  • ocmd:r(playerid,params[])
    {
    if(sInfo[playerid][Fraktion]!=1)return 1;
    new string[128],string2[512],rang[30],namesy[MAX_PLAYER_NAME];
    if(sscanf(params,"s[128]",string))return SendClientMessage(playerid,COLOR_RED,"Befehl: {FEFEFE}/r <Text>");
    GetPlayerName(playerid,namesy,MAX_PLAYER_NAME);
    switch(sInfo[playerid][FrakRang]){
    case 1:rang="[R1 - Officer]";
    case 2:rang="[R2 - Officer]";
    case 3:rang="[R3 - Officer]";
    case 4:rang="[R4 - Officer]";
    case 5:rang="[R5 - Officer]";
    case 6:rang="[R6 - Officer]";
    }
    format(string2,512,"{FCFF00}[Radio] %s %s sagt: %s, over.",rang,namesy,string),SendCopMessage(COLOR_BLUE,string2);
    return 1;
    }
    So, lag vielleicht daran das du bei sscanf die [128] vergessen hast.
    REVISION: war schneller :)