Beiträge von Kaliber

    format(string, sizeof(string), "%s", text);
    SendClientMessageToAll(-1, string);
    return 0;


    sollte funktionieren (ungetestet)


    Ist ja irgendwie das selbe...


    kein return 0; ...
    return 1; !


    Das ist hier egal...da der Callback ja anscheinend eh nicht aufgerufen wird ;)


    Nun, vielleicht wird durch ein Include, der Callback gehookt bzw falsch gehookt sodass er im Rest-Script nicht mehr verwendet werden kann.


    Oder Kp...reden wir hier überhaupt von einem GM oder einem FS?


    mfg. ^^

    Wenn ich nicht ganz dumm bin, kommt am Ende davon ein ; :P


    Auch und weil man sizeof nicht bei 2 Dimensionalen Arrays verwendet ;)


    Sprich, du musst es so schreiben:


    format(SpielerInfo[playerid][pAlter],11,inputtext);


    mfg. :thumbup:

    Da steht trotzdem nichts. Hat das was damit zu tun, dass ich den gesamten Block unter OnPlayerConnect habe? Sorry aber ich bin noch recht neu was Textdrwas angeht. Ich lerne nocht.


    Nun, du musst dem Spieler das TextDraw dann auch anzeigen lassen...mit TextDrawShowForPlayer ^^

    Das musst du so machen:


    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Name,MAX_PLAYER_NAME);
    Textdraw17 = TextDrawCreate(266.666625, 273.362884, Name);
    TextDrawLetterSize(Textdraw17, 0.449999, 1.600000);
    TextDrawAlignment(Textdraw17, 1);
    TextDrawColor(Textdraw17, -1);
    TextDrawSetShadow(Textdraw17, 0);
    TextDrawSetOutline(Textdraw17, 1);
    TextDrawBackgroundColor(Textdraw17, 51);
    TextDrawFont(Textdraw17, 1);
    TextDrawSetProportional(Textdraw17, 1);


    mfg. :thumbup:

    Schreib deinen Befehl mal so:


    ocmd:admins(playerid,params[]) {
    if(!GetPVarInt(playerid,"LogIn"))return SendClientMessage(playerid,ROT,"Logge dich bitte zuerst ein.");
    new string[128],adminrang[50];
    for(new i,l=GetMaxPlayers(); i!=l; i++) {
    if(!IsPlayerConnected(i) || !GetPVarInt(i,"Adminlevel"))continue;
    switch(GetPVarInt(i,"Adminlevel")) {
    case 1: adminrang = "{00F73}Supporter";
    case 2: adminrang = "Moderator";
    case 3: adminrang = "Super Moderator";
    case 4: adminrang = "Admin";
    case 5: adminrang = "{FE2E2E}Fulladmin";
    }
    format(string,sizeof(string),"%s %s",adminrang,SpielerName(i));
    SendClientMessage(playerid,WEIß,string);
    }
    return 1;
    }


    mfg. :thumbup:


    //Edit: so...jetzt^^

    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: