Hilfe bei Command mit dcmd und sscanf2

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
  • Hallo liebe Bread´ler,


    ich hab jetzt ein Selfmade angefangen und habe dabei auf dcmd und sscanf gesetzt, bisher versteh ich alles und es gibt auch keine probleme. Bis ich ein Command für ein Chat erstellt habe. Das ist mein Befehl, keine errors, keine Warnings:


    dcmd_d(playerid,params[]) {
    new Name[MAX_PLAYER_NAME], string[256], Text;
    if(SpielerEingeloggt[playerid] == 0) { return SendClientMessage(playerid,rot,"Du bist nicht eingeloggt!"); }
    if(!IstStaatsBeamter(playerid)) { return SendClientMessage(playerid,rot,"Du bist kein Staatsbeamter"); }
    if(sscanf(params, "s",Text)) { return SendClientMessage(playerid,rot,"Nutzung: /d [Text]"); }
    GetPlayerName(playerid,Name,sizeof (Name));
    if(GetPVarInt(playerid,"Leiter") == 1||GetPVarInt(playerid,"Leiter") == 1)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPVarInt(i,"Leiter") == 1||GetPVarInt(i,"Leiter") == 1)
    {
    format(string,sizeof string,"[Department Radio] Polizist %s[%d]: %s",Name,playerid,Text);
    SendClientMessage(i, gelb, string);
    }
    }
    }
    }
    if(GetPVarInt(playerid,"Leiter") == 2||GetPVarInt(playerid,"Leiter") == 2)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPVarInt(i,"Leiter") == 2||GetPVarInt(i,"Leiter") == 2)
    {
    format(string,sizeof string,"[Department Radio] Agent %s[%d]: %s",Name,playerid,Text);
    SendClientMessage(i, gelb, string);
    }
    }
    }
    }
    return 1;
    }


    Und leider ist das Problem das es komisch ausgegeben wird. Siehe mein Screen:


    http://s13.directupload.net/file/d/2389/ud5lawsr_png.htm


    Ich hoffe ihr könnt mir helfen. Gruß David

  • Oh, naja das eine ist Mitglied, aber liegt es denn wirklich daran? Hab ich gar nich gesehn :rolleyes:

  • du frägst ja 2 mal Leiter ab und man braucht nur 1 mal abfragen zu lassen
    und ob es daran liegt weiss ich nicht genau^^


    und warum frägst du auch hier 2 mal ab?
    if(GetPVarInt(playerid,"Leiter") == 1||GetPVarInt(playerid,"Leiter") == 1)<<1
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPVarInt(i,"Leiter") == 1||GetPVarInt(i,"Leiter") == 1)<<2
    {
    format(string,sizeof string,"[Department Radio] Polizist %s[%d]: %s",Name,playerid,Text);
    SendClientMessage(i, gelb, string);
    }
    }
    }
    }

    es geht doch auch so
    if(GetPVarInt(playerid,"Leiter") == 1||GetPVarInt(playerid,"Leiter") == 1)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    format(string,sizeof string,"[Department Radio] Polizist %s[%d]: %s",Name,playerid,Text);
    SendClientMessage(i, gelb, string);
    }
    }
    }

    und mit einer abfrage
    [pwn]if(GetPVarInt(playerid,"Leiter") == 1)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    format(string,sizeof string,"[Department Radio] Polizist %s[%d]: %s",Name,playerid,Text);
    SendClientMessage(i, gelb, string);
    }
    }
    }
    [/pwn]

  • Gut danke dir, ich werds mal testen, wenns noch was gibt melde ich mich :)

  • hm hat sich leider nix geändert, mir ist aufgefallen ist bei "/o" genau so


    Hier nochmal der /d befehl, wurde schon verbessert...
    dcmd_d(playerid,params[]) {
    new Name[MAX_PLAYER_NAME], string[256], Text;
    if(SpielerEingeloggt[playerid] == 0) { return SendClientMessage(playerid,rot,"Du bist nicht eingeloggt!"); }
    if(!IstStaatsBeamter(playerid)) { return SendClientMessage(playerid,rot,"Du bist kein Staatsbeamter"); }
    if(sscanf(params, "s",Text)) { return SendClientMessage(playerid,rot,"Nutzung: /d [Text]"); }
    GetPlayerName(playerid,Name,sizeof (Name));
    if(GetPVarInt(playerid,"Leiter") == 1||GetPVarInt(playerid,"Mitglied") == 1)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    format(string,sizeof string,"[Department Radio] Polizist %s[%d]: %s",Name,playerid,Text);
    SendClientMessage(i, gelb, string);
    }
    }
    }
    if(GetPVarInt(playerid,"Leiter") == 2||GetPVarInt(playerid,"Mitglied") == 2)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    format(string,sizeof string,"[Department Radio] Polizist %s[%d]: %s",Name,playerid,Text);
    SendClientMessage(i, gelb, string);
    }
    }
    }
    return 1;
    }


    Und hier auch /o was nich geht..
    dcmd_o(playerid,params[]) {
    new Name[MAX_PLAYER_NAME], string[256], Text;
    if(SpielerEingeloggt[playerid] == 0) { return SendClientMessage(playerid,rot,"Du bist nicht eingeloggt!"); }
    if(GetPVarInt(playerid,"Adminlevel") < 1) { return SendClientMessage(playerid,rot,"Du bist kein Admin oder dein Adminlevel ist zu Niedrig."); }
    if(sscanf(params, "s",Text)) { return SendClientMessage(playerid,rot,"Nutzung: /o [Text]"); }
    GetPlayerName(playerid,Name,sizeof (Name));
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    format(string,sizeof string," (( %d* ADMIN %s[%d]: %s ))",GetPVarInt(playerid,"Adminlevel"),Name,playerid,Text);
    SendClientMessage(i,weiss,string);
    }
    return 1;
    }


  • versuch es ma so


    dcmd_d(playerid,params[]) {
    new Name[MAX_PLAYER_NAME], string[256], Text;
    if(SpielerEingeloggt[playerid] == 0) { return SendClientMessage(playerid,rot,"Du bist nicht eingeloggt!"); }
    if(!IstStaatsBeamter(playerid)) { return SendClientMessage(playerid,rot,"Du bist kein Staatsbeamter"); }
    if(sscanf(params, "s",Text)) { return SendClientMessage(playerid,rot,"Nutzung: /d [Text]"); }
    GetPlayerName(playerid,Name,sizeof (Name));
    if(GetPVarInt(playerid,"Leiter") == 1||GetPVarInt(playerid,"Mitglied") == 1)
    {
    if(IsPlayerConnected(playerid))
    {
    format(string,sizeof string,"[Department Radio] Polizist %s[%d]: %s",Name,playerid,Text);
    SendClientMessage(playerid, gelb, string);
    }
    }
    if(GetPVarInt(playerid,"Leiter") == 2||GetPVarInt(playerid,"Mitglied") == 2)
    {
    if(IsPlayerConnected(playerid))
    {
    format(string,sizeof string,"[Department Radio] Polizist %s[%d]: %s",Name,playerid,Text);
    SendClientMessage(playerid, gelb, string);
    }
    }
    return 1;
    }


    dcmd_o(playerid,params[]) {
    new Name[MAX_PLAYER_NAME], string[256], Text;
    if(SpielerEingeloggt[playerid] == 0) { return SendClientMessage(playerid,rot,"Du bist nicht eingeloggt!"); }
    if(GetPVarInt(playerid,"Adminlevel") < 1) { return SendClientMessage(playerid,rot,"Du bist kein Admin oder dein Adminlevel ist zu Niedrig."); }
    if(sscanf(params, "s",Text)) { return SendClientMessage(playerid,rot,"Nutzung: /o [Text]"); }
    GetPlayerName(playerid,Name,sizeof (Name));
    format(string,sizeof string," (( %d* ADMIN %s[%d]: %s ))",GetPVarInt(playerid,"Adminlevel"),Name,playerid,Text);
    SendClientMessage(playerid,weiss,string);
    return 1;
    }


    obs gehen wird weiss ich nicht ^^

  • Bei /o kann man ja SendClientMessageToAll machen, aber bei /d soll es ja an alle gesendet werden die halt Leiter oder Mitglied 1 sind..

  • dann mach es ma so^^
    dcmd_o(playerid,params[]) {
    new Name[MAX_PLAYER_NAME], string[256], Text;
    if(SpielerEingeloggt[playerid] == 0) { return SendClientMessage(playerid,rot,"Du bist nicht eingeloggt!"); }
    if(GetPVarInt(playerid,"Adminlevel") < 1) { return SendClientMessage(playerid,rot,"Du bist kein Admin oder dein Adminlevel ist zu Niedrig."); }
    if(sscanf(params, "s",Text)) { return SendClientMessage(playerid,rot,"Nutzung: /o [Text]"); }
    GetPlayerName(playerid,Name,sizeof (Name));
    format(string,sizeof string," (( %d* ADMIN %s[%d]: %s ))",GetPVarInt(playerid,"Adminlevel"),Name,playerid,Text);
    SendClientMessageToAll(weiss,string);
    return 1;
    }
    dcmd_d(playerid,params[]) {
    new Name[MAX_PLAYER_NAME], string[256], Text;
    if(SpielerEingeloggt[playerid] == 0) { return SendClientMessage(playerid,rot,"Du bist nicht eingeloggt!"); }
    if(!IstStaatsBeamter(playerid)) { return SendClientMessage(playerid,rot,"Du bist kein Staatsbeamter"); }
    if(sscanf(params, "s",Text)) { return SendClientMessage(playerid,rot,"Nutzung: /d [Text]"); }
    GetPlayerName(playerid,Name,sizeof (Name));
    if(GetPVarInt(playerid,"Leiter") == 1||GetPVarInt(playerid,"Mitglied") == 1)
    {
    if(IsPlayerConnected(playerid))
    {
    if(GetPVarInt(playerid,"Leiter") == 2||GetPVarInt(playerid,"Mitglied") == 2)
    {
    format(string,sizeof string,"[Department Radio] Polizist %s[%d]: %s",Name,playerid,Text);
    SendClientMessage(playerid, gelb, string);
    }
    else
    {


    }
    }
    }
    if(GetPVarInt(playerid,"Leiter") == 2||GetPVarInt(playerid,"Mitglied") == 2)
    {
    if(IsPlayerConnected(playerid))
    {
    if(GetPVarInt(playerid,"Leiter") == 2||GetPVarInt(playerid,"Mitglied") == 2)
    {
    format(string,sizeof string,"[Department Radio] Polizist %s[%d]: %s",Name,playerid,Text);
    SendClientMessage(playerid, gelb, string);
    }
    else
    {


    }
    }
    }
    return 1;
    }


    EDIT: vll. fehlt unten noch eine klammer^^

  • "/o" geht normal, bei "/d" kann es nur ich selbst lesen, was nicht sinn der sache ist :D


    Kann das was mit LimitGlobalChatRadius zutun haben? Ich hab das normale Chat schreiben nicht über OnPlayerText

  • versuch es dann ma so :D
    dcmd_d(playerid,params[]) {
    new Name[MAX_PLAYER_NAME], string[256], Text;
    if(SpielerEingeloggt[playerid] == 0) { return SendClientMessage(playerid,rot,"Du bist nicht eingeloggt!"); }
    if(!IstStaatsBeamter(playerid)) { return SendClientMessage(playerid,rot,"Du bist kein Staatsbeamter"); }
    if(sscanf(params, "s",Text)) { return SendClientMessage(playerid,rot,"Nutzung: /d [Text]"); }
    GetPlayerName(playerid,Name,sizeof (Name));
    if(GetPVarInt(playerid,"Leiter") == 1||GetPVarInt(playerid,"Mitglied") == 1)
    {
    if(IsPlayerConnected(playerid))
    {
    if(GetPVarInt(playerid,"Leiter") == 1||GetPVarInt(playerid,"Mitglied") == 1)
    {
    format(string,sizeof string,"[Department Radio] Polizist %s[%d]: %s",Name,playerid,Text);
    SendClientMessage(GetPVarInt(playerid,"Leiter") == 1||GetPVarInt(playerid,"Mitglied") == 1, gelb, string);
    }
    else
    {


    }
    }
    }
    if(GetPVarInt(playerid,"Leiter") == 2||GetPVarInt(playerid,"Mitglied") == 2)
    {
    if(IsPlayerConnected(playerid))
    {
    if(GetPVarInt(playerid,"Leiter") == 2||GetPVarInt(playerid,"Mitglied") == 2)
    {
    format(string,sizeof string,"[Department Radio] Polizist %s[%d]: %s",Name,playerid,Text);
    SendClientMessage(GetPVarInt(playerid,"Leiter") == 2||GetPVarInt(playerid,"Mitglied") == 2, gelb, string);
    }
    else
    {


    }
    }
    }
    return 1;
    }

  • dcmd_d(playerid,params[]) {
    new Name[MAX_PLAYER_NAME], string[100], Text[100];
    if(SpielerEingeloggt[playerid] == 0) { return SendClientMessage(playerid,rot,"Du bist nicht eingeloggt!"); }
    if(!IstStaatsBeamter(playerid)) { return SendClientMessage(playerid,rot,"Du bist kein Staatsbeamter"); }
    if(sscanf(params, "s",Text)) { return SendClientMessage(playerid,rot,"Nutzung: /d [Text]"); }
    if(GetPVarInt(playerid,"Leiter") == 1||GetPVarInt(playerid,"Mitglied") == 1 || GetPVarInt(playerid,"Leiter") == 2||GetPVarInt(playerid,"Mitglied") == 2)
    {
    GetPlayerName(playerid,Name,sizeof (Name));
    format(string,sizeof string,"[Department Radio] Polizist %s[%d]: %s",Name,playerid,Text);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {


    SendClientMessage(i, gelb, string);
    }
    }
    }
    return 1;
    }


    probier mal ^^
    E\\ verbessert ^^

  • Danke Danke Danke haxler :) es geht hab jetz 2 Stunden dran gegrübelt


    // Closed \\