Beiträge von Kaliber

    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:

    Habe es nur bis jetzt immer so gemacht.


    Ja...aber es ist dann halt anders sortiert :D


    for(new i; i<5; i++) {
    format(string,sizeof string,"Hallo ID: %d|%s",i,string);
    }


    /*
    Gibt aus:
    Hallo ID: 4|Hallo ID: 3|Hallo ID: 2|Hallo ID: 1|Hallo ID: 0|
    */


    //Und mein/unser Code gibt aus:


    for(new i; i<5; i++) {
    format(string,sizeof string,"%sHallo ID: %d|",string,i);
    }


    /*
    Gibt aus:
    Hallo ID: 0|Hallo ID: 1|Hallo ID: 2|Hallo ID: 3|Hallo ID: 4|
    */


    mfg. :rolleyes:

    Schreib es so, dass ist wesentlich besser und richtiger:


    dcmd_admins(playerid,params[])
    {
    #pragma unused params
    new string[128];
    for(new i; i < MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i) || !AccInfo[i][Level] || AccInfo[i][Hide]) continue;
    format(string, sizeof string, "%sAdmin %s (ID: %i)- Level %d - %s\n",string,PlayerName2(i),i, AccInfo[i][Level],(!AccInfo[i][OnDuty]) ? ("Busy") : ("Available"));
    }
    if(!string[0]) return ShowPlayerDialog(playerid,NO_ADMINS,DIALOG_STYLE_MSGBOX,"Online Admins","\n\n\n\nThere are no admins online.","Close","");
    return ShowPlayerDialog(playerid,DIALOG_ADMINS,DIALOG_STYLE_MSGBOX,"Online Admins",string,"Close","");
    }


    mfg. :thumbup:

    Fabi.StaR:


    Hier eine etwas kompaktere Funktion, die mehr deinen Wünschen entspricht:


    stock EditName(name[]) {
    static delimiter[][] = {"_",".",","},i,pos; //Du kannst das Array beliebig fortführen
    for(; i<sizeof delimiter; ++i) {
    pos = strfind(name,delimiter[i]);
    if(pos == -1) continue;
    name[pos] = ' ';
    }
    return name;
    }


    mfg. :thumbup:

    Okay, jetzt brauch ich nur nochmal die strcat-Funktion erklärt, weil ich Besitzer und Text mit dieser Zusammenfügen möchte und das ganze dann in einem Dialog ausgeben möchte.


    Nutze doch einfach...format da kannst du das alles zusammenfügen :wacko:

    Die Version von ElDiabolo: sieht mir Ressourcensparender aus :o


    Wenn du sscanf in deinem Script schon nutzt, kannst du das natürlich auch verwenden :rolleyes:


    public BlaBlub() {
    new string[256],query[64],besitzer[32],text[32];
    format(query, sizeof query, "SELECT `Besitzer`,`Text` FROM `Tickets` WHERE `Status` = '0'");
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(string) == 1)
    {
    sscanf(string,"p<|>s[32]s[32]",besitzer,text);
    printf("**Spieler: %s | Text: %s**",besitzer,text);
    }
    mysql_free_result();
    }


    Der | kommt von dem MySQL-Result :rolleyes:


    mfg. :thumbup:

    Hier eine Lösung:



    public BlaBlub() {
    new string[256],query[64];
    format(query, sizeof query, "SELECT `Besitzer`,`Text` FROM `Tickets` WHERE `Status` = '0'");
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(string) == 1)
    {
    printf("**Spieler: %s | Text: %s**",BESITZER(string),TEXT(string));
    }
    mysql_free_result();
    }


    stock TEXT(const string[]) {
    new tmp[32];
    strcat(tmp,string),strdel(tmp,0,strfind(string,"|")+1);
    return tmp;
    }


    stock BESITZER(const string[]) {
    new tmp[32];
    strcat(tmp,string),strdel(tmp,strfind(string,"|"),strlen(tmp));
    return tmp;
    }


    mfg. :thumbup:

    BlueG R5 :whistling:


    Dann kannst du es einfach so machen:


    new string[256],query[64];
    format(query, sizeof query, "SELECT `Besitzer`,`Text` FROM `Tickets` WHERE `Status` = '0'");
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(string);
    mysql_free_result();
    //In string steht dann alles drinnen


    mfg. :thumbup:

    format(str, sizeof(str), "{%s}%s{FFFFFF}: %s", HexToStr(GetPlayerColor(playerid)), name, text);


    Du kannst das auch einfach shiften und so machen:


    format(str, sizeof(str),"{%06x}%s{FFFFFF}: %s",GetPlayerColor(playerid) >>> 8,name,text);


    Dann brauchst du diese Funktion nicht :)


    wenn du hier 10 eingibst erhältst du als rückgabe wert 10.
    Daher kannst du das mit dem Operator nicht gleichsetzen


    Tatsache :D Gar nicht darauf geachtet ^^


    mfg. :thumbup:

    funktioniert nicht


    Doch...


    Ob man jetzt folgendes macht:


    new bool:x = !!SendClientMessage(0,-1," ");
    printf("%s",(x == false) ? ("Funzt") : ("not"));


    oder das hier:


    new bool:x = bool:SendClientMessage(0,-1," ");
    printf("%s",(x == false) ? ("Funzt") : ("not"));


    Macht im Endeffekt keinen Unterschied, da beides den Wert in einen Bool konvertiert...


    mfg. :thumbup:

    warum kein makro


    Hö?! :D


    Was auch geht, anstatt das mit dem !! zu machen, kann man das auch direkt casten, indem man einfach folgendes macht:


    stock bool:IntToBool(int_value) return bool:int_value;


    Achso um das mal zu erwähnen:


    stock IntToBool(int_value) return !!int_value; //Das gibt einen Warning, weil die Funktion als bool gekennzeichnet sein muss!


    //Richtig wäre:


    stock bool:IntToBool(int_value) return !!int_value;


    mfg. :rolleyes: