Beiträge von Kaliber

    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:

    Was kommt beim "????" rein um den Text zu sehen?


    Musst es so machen:


    dcmd_pm(playerid,params[])
    {
    new PMplayer1,string[128];
    if(sscanf(params,"us[128]",PMplayer1,string)) return SendClientMessage(playerid, COLOR_WHITE, "** Usage: /pm (PlayerID) (Text)");
    if(PMplayer1 == playerid) return SendClientMessage(playerid, COLOR_MAUVE, "* You can not send yourself a PM.");
    if(!(IsPlayerConnected(PMplayer1) && PMplayer1 != INVALID_PLAYER_ID)) return SendClientMessage(playerid, red, "** Invalid Player.");
    GetPlayerName(PMplayer1, PmReceiver, sizeof(PmReceiver));
    format(string,sizeof(string),"* PM to %s (ID: %d): %s ", PmReceiver, PMplayer1, string); // Was kommt denn hier rein um den Text zu sehen?
    SendClientMessage(playerid,grey,string);
    return 1;
    }


    mfg. :thumbup: