Beiträge von Kaliber

    Naja...ich habe da auch nochmal was:


    stock format_money(string[], geld, charakter[]) {
    if(geld <= 0) return 0;
    valstr(string,geld);
    for(new i=strlen(string)-3; i>=0; i-=3) strins(string,charakter,i,strlen(string)+11);
    if(strcmp(string[0],charakter,true) == 7) strdel(string,0,1);
    return 1;
    }


    Durch diese Funktion, kann man geld in einen String mit einen Zeichen seiner Wahl umwandeln, sprich so:


    new string[32],geld=1000500;
    format_money(string,geld,"."); //Wenn man hier anstatt dem . ein , macht, steht es auch so im string
    printf("%s",string);
    //->Gibt aus: 1.000.500


    //Edit: War doch noch ein fehler..
    //Edit²: Okay..jetzt gehts ^^


    //edit³:


    Okay, ich habe mal wieder etwas lustiges.
    Mir ist aufgefallen, das die Split Funktion (von wem auch immer) total langsam ist, also ich rede von dieser:


    stock split(const strsrc[], strdest[][], delimiter)
    {
    new i, li, aNum, len;
    while(i <= strlen(strsrc))
    {
    if(strsrc[i] == delimiter || i == strlen(strsrc))
    {
    len = strmid(strdest[aNum], strsrc, li, i, 128);
    strdest[aNum][len] = 0;
    li = i+1;
    aNum++;
    }
    i++;
    }
    return 1;
    }


    Aus diesem Grund, habe ich die mal verbessert, schaut so aus:


    stock f_split(const src[], dest[][], delimiter[]) {
    new pos = strfind(src,delimiter),n_pos,num,bool:end;
    for(;;) {
    if(!num) strmid(dest[num], src, 0, pos, 128),num++;
    else strmid(dest[num], src, n_pos+1, pos, 128),num++;
    n_pos = strfind(src,delimiter,false,pos+1);
    if(n_pos == -1) n_pos = strlen(src),end=true;
    strmid(dest[num], src, pos+1, n_pos, 128),num++;
    pos = strfind(src,delimiter,false,n_pos+1);
    if(end) break;
    }
    return 1;
    }


    Hier ein paar Speedtests:







    //Edit 4:


    Also...mir ist wieder langweilig und ich habe mir überlegt...welche Funktionen schlecht sind und ich verbessern könnte.


    Also und ich bin auf strtok gestoßen, diese Funktion ist sehr sehr langsam, aus diesen Grund, habe ich die Funktion mal sehr verbessert:


    Alter Code:


    stock strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }


    Mein Code:


    stock _strtok(const string[], &index) {
    new pos = strfind(string, " ", false, index+1),buffer[128];
    if(pos == -1) pos = strlen(string);
    strmid(buffer,string,index,pos,128),index = pos;
    return buffer;
    }


    Also, damit ihr einen Vergleich habt, wie viel schneller meine Funktion ist, habe ich wieder ein paar Speedtests gemacht:






    Viel Spaß eure Funktionen zu verschnellern.


    mfg. :thumbup:

    Dein Ernst? :huh:


    Du hast Teile aus deinem Filterscript kopiert und hier eingefügt.


    Und meine Vorschläge für das Filterscript wieder nicht beachtet.


    Nun...ahja...okay :rolleyes:

    Schreibe das unten in dein Script (habe ich selbst geschrieben...könnte sein, das es so gemeint ist):


    stock substr(string[],p1,p2) {
    new buffer[128];
    strmid(buffer,string,p1,p2,128);
    return buffer;
    }


    mfg. :thumbup:

    Nein!


    Was soll den dieser Schwachsinn? :huh:


    Wenn ein Beitrag unangemessen ist/war, kannst du ihn Melden und die Administration wird das dann entscheiden. Aber vorerst gilt Meinungsfreiheit und die darfst du nicht so respektlos behandeln!


    mfg. :thumbup:

    Wo soll der Error den genau ausgegeben werden?


    Du musst es z.B. so machen:


    #if mapNUM > MAX_MAPS
    #error Die MapID darf nicht größer als MAX_MAPS sein. (Standart == 25)
    #endif


    Solche if-Statements musst du nutzen ;)


    mfg. :thumbup:

    Jeder Spieler braucht eine Farbe, wo die Transparenz nicht 00 ist.
    Zudem musst du ShowPlayerMarkers(1); verwenden ;)


    und unter OnPlayerConnect, zum Beispiel SetPlayerColor(playerid, 0xFF4800FF)...dieses FF Am Ende ist entscheidend, da darf kein 00 stehen!


    mfg. :thumbup:

    Dein Befehl wird so nicht funktionieren, da du die Parameter falsch verwenden willst bzw es falsch splittest.


    Hier, mach es einfach so:


    if(!strcmp("/deliver", cmd, true))
    {
    if(!IstSpielerAdmin(playerid, 1)) return SendClientMessage(playerid,COLOR_RED,"Zugriff verweigert! Du benötigst mindestens den Adminrang: {00A500}Supporter ");
    tmp = strtok(cmdtext,idx);
    if(!tmp[0]) return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Benutze /deliver [ID] [Zeit]");
    new id = strval(tmp);
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_RED,"~> Spieler nicht gefunden.");
    tmp = strtok(cmdtext,idx);
    new zeit = strval(tmp);
    if(zeit < 0 || zeit > 120) return SendClientMessage(playerid,COLOR_WHITE," Zeit nur zwischen 0 und 120 Minuten!");
    //gMessage = strrest(cmdtext,idx); //WAS DAS?!
    sSpieler[id][Jailtime] = zeit; //Hier das was Gesetzt werden soll (Funktioniert nicht!)
    SetPlayerPos(id,-2302.9690,1926.7751,7.0480);
    SetTimerEx("jailtimer", 1000, 1, "i", id); //Den Timer evtl überarbeiten
    SendClientMessage(id,ADMINFS_MESSAGE_COLOR,"Du bist nun im Knast :("); //Testbefehl funktionert
    return 1;
    }


    mfg. :thumbup:

    Das musst du so machen:


    new cmdstring[200];
    format(cmdstring, sizeof(cmdstring), "Befehl \"%s\" existiert so nicht, schau unter /hilfe nach.", cmdtext);
    SendClientMessage(playerid, ROT, cmdstring);


    mfg. :thumbup:

    Kaliber: bitte noch ne x/10 Bewertung.


    Wofür? :huh:


    Ich habe dir eine sachlich, gut formulierte und begründete Bewertung gegeben und dir bewusst nicht nur ein x/10 dahin geklatscht :rolleyes:


    Halte nichts von diesen Bewertungen im Script-Showroom, sry :S


    mfg. :thumbup: