Nützliche Codeschnipsel

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
  • Das liegt vielleicht daran, dass sName keine feste größe hast, darum hast Goldkiller das auch ursprünglich per ID gemacht
    Theoretisch kann man das jetzt so machen


    //Goldkiller
    stock GetPlayerNameEx(sName[MAX_PLAYER_NAME])
    {
    new
    iOffset = 0/*,
    sName[MAX_PLAYER_NAME]*/;
    //GetPlayerName(playerid,sName,sizeof(sName));
    while( ( iOffset = strfind(sName,"_",false,iOffset) ) != -1 ) {
    sName[iOffset] = ' ';
    }
    return sName;
    //return sName;
    }

    funktioniert wunderbar


    PS: Hier hübsch oder?


    Zitat

    [06/09/2011 15:23:03] [gpne] a_b_c_d_e_f_g_h_i_j --> a b c d e f g h i j
    [06/09/2011 15:23:03] [gpne] Proccesstime: [0 ms]
    [06/09/2011 15:23:03] [gpne2] a_b_c_d_e_f_g_h_i_j --> a b c d e f g h i j
    [06/09/2011 15:23:03] [gpne2] Proccesstime: [0 ms]

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Mach den Test richtig,dann kommt da auch kein P** raus.


    Der return funktioniert nicht richtig, ohne eine Array-Größe anzugeben.

    Zitat

    [15:18:17] sName vor return 'a b c d e f g h i j'
    [15:18:17] [gpne] a_b_c_d_e_f_g_h_i_j --> d
    [15:18:17] [gpne] Proccesstime: [0 ms]
    [15:18:17] [gpne2] a_b_c_d_e_f_g_h_i_j --> a b c d e f g h i j
    [15:18:17] [gpne2] Proccesstime: [0 ms]


    Musste beim Herrn PAWN Anfragen,wieso das so zurückgegeben wird.


    stock GetPlayerNameEx( sName[MAX_PLAYER_NAME] )

    Zitat

    [15:21:30] sName vor return 'a b c d e f g h i j'
    [15:21:30] [gpne] a_b_c_d_e_f_g_h_i_j --> a b c d e f g h i j
    [15:21:30] [gpne] Proccesstime: [0 ms]
    [15:21:30] [gpne2] a_b_c_d_e_f_g_h_i_j --> a b c d e f g h i j
    [15:21:30] [gpne2] Proccesstime: [0 ms]



    Test:
    new
    i,
    x[3];
    x[0] = GetTickCount();
    for( i = 0 ; i < 10000 ; i++) {
    GetPlayerNameEx("a_b_c_d_e_f_g_h_i_j");
    }
    x[1] = GetTickCount();
    for( i = 0 ; i < 10000 ; i++) {
    GetPlayerNameEx2("a_b_c_d_e_f_g_h_i_j");
    }
    x[2] = GetTickCount();
    printf("GetPlayerNameEx %dms", x[1] - x[0] );
    printf("GetPlayerNameEx2 %dms", x[2] - x[1] );

    Ausgabe:

    Zitat

    [15:24:31] GetPlayerNameEx 7ms
    [15:24:31] GetPlayerNameEx2 26ms


    Edit: Gut erkannt,BlackAce :D

  • Im strfind selber ist eine "for" oder "while" Schleife, die sogar ganze Wörter finden können und sie jeweils deren Position wiedergeben können. Deshalb ist nur strfind nützlich wenn du wirklich nach einem Wort suchst und nicht nach kleinen Bustaben/Zahlen/Zeichen die auch noch ersetzt werden sollten. Weil ein string besteht aus Zahlen, welches jedes davon ein Buchstabe, Zahl oder Zeichen ist. (Siehe ANSI Tabelle, welches nur 256 lang ist) http://www.code-knacker.de/ansi.htm

  • Das ist völlig sinnfrei.
    Sonst wäre strfind auch nicht schneller als eine for-Schleife ;)
    Ausserdem hätten sie in diesem Fall auch keine strfind-Funktion gemacht, sondern nur gezeigt wie man es selbst macht.


    Ausserdem:
    Woher hast du diesen Info (bitte mit URL bzw. Quelle) ?

  • Lernen? Ich weiß genug was ich wissen muss.
    Ausserdem, es ist nur eine Therie, du kannst selbst Kalcor im englischen Forum fragen, er wird dir auch sagen dass es nicht so geschrieben wurde ;)
    Das ist völlig sinnfrei, ausserdem nur eine Theorie die nichtmal bewiesen wurde.
    Naja kannst an das glauben was du willst, kannst auch Kalcor fragen.
    Es glaubt eh jeder an das was er will ;)


    €dit://
    Hier, kannst du selber testen BigETI.
    Normaler "strlen" dauert "0 ms" aber deins dauert "3 ms":
    public OnFilterScriptInit()
    {
    new x=GetTickCount();
    printf("(strlen) bigetimeintleideralleszuwissenobwohleresnichtttut LÄNGE:[%d]",strlen("bigetimeintleideralleszuwissenobwohleresnichtttut"));
    printf("(strlen) count: [%d ms]\n",GetTickCount()-x);
    x=GetTickCount();
    printf("(strlen2) bigetimeintleideralleszuwissenobwohleresnichtttut LÄNGE:[%d]",strlen2("bigetimeintleideralleszuwissenobwohleresnichtttut"));
    printf("(strlen2) count: [%d ms]",GetTickCount()-x);
    return 1;
    }

    2 Mal editiert, zuletzt von FoxHound () aus folgendem Grund: Zeigen dass BigETI's theorie falsch ist

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ihr redet von ms Verzug das ist unglaublich...
    Wie oft registriert sich eine Person gleichzeitig das so ein Server zum laggen bringen würde etc... Also übertreiben kann man es auch^^

  • Er meint dass "strlen" auf diese weise gemacht wurde:
    strlen2(const string[])
    {
    new strlenght = 0;
    while(string[strlenght] != 0) strlenght++;
    return strlenght;
    }


    Und strfind auf diese weise:
    strfind2(const string[], const sub[], bool:ignorecase=false, pos=0)
    {
    new f_result = -1, bool:f_complete, tpos = 0;
    for(new i = pos; i < strlen2(string); i++)
    {
    if(!ignorecase)
    {
    if(string[i] == sub[tpos])
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    else
    {
    switch(string[i])
    {
    case 'a','A':
    {
    if(sub[tpos] == 'a' || sub[tpos] == 'A')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'à','À':
    {
    if(sub[tpos] == 'à' || sub[tpos] == 'À')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'á','Á':
    {
    if(sub[tpos] == 'á' || sub[tpos] == 'Á')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'â','Â':
    {
    if(sub[tpos] == 'â' || sub[tpos] == 'Â')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ã','Ã':
    {
    if(sub[tpos] == 'ã' || sub[tpos] == 'Ã')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ä','Ä':
    {
    if(sub[tpos] == 'ä' || sub[tpos] == 'Ä')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'å','Å':
    {
    if(sub[tpos] == 'å' || sub[tpos] == 'Å')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'æ','Æ':
    {
    if(sub[tpos] == 'æ' || sub[tpos] == 'Æ')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'b','B':
    {
    if(sub[tpos] == 'b' || sub[tpos] == 'B')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'c','C':
    {
    if(sub[tpos] == 'c' || sub[tpos] == 'C')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ç','Ç':
    {
    if(sub[tpos] == 'ç' || sub[tpos] == 'Ç')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'd','D':
    {
    if(sub[tpos] == 'd' || sub[tpos] == 'D')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'e','E':
    {
    if(sub[tpos] == 'e' || sub[tpos] == 'E')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'è','È':
    {
    if(sub[tpos] == 'è' || sub[tpos] == 'È')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'é','É':
    {
    if(sub[tpos] == 'é' || sub[tpos] == 'É')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ê','Ê':
    {
    if(sub[tpos] == 'ê' || sub[tpos] == 'Ê')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ë','Ë':
    {
    if(sub[tpos] == 'ë' || sub[tpos] == 'Ë')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'f','F':
    {
    if(sub[tpos] == 'f' || sub[tpos] == 'F')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'g','G':
    {
    if(sub[tpos] == 'g' || sub[tpos] == 'G')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    //Sorry, weiches "G" gibt es in der ANSI liste nicht. (Es wird aber in Türkish benutzt.)
    case 'h','H':
    {
    if(sub[tpos] == 'h' || sub[tpos] == 'H')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'i','I': //In Türkisch sind es zwei verschiedene Buchtaben dabei sind die beiden Buchtaben in Latein gleich.
    {
    if(sub[tpos] == 'i' || sub[tpos] == 'I')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ì','Ì':
    {
    if(sub[tpos] == 'ì' || sub[tpos] == 'Ì')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'í','Í':
    {
    if(sub[tpos] == 'í' || sub[tpos] == 'Í')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'î','Î':
    {
    if(sub[tpos] == 'î' || sub[tpos] == 'Î')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ï','Ï':
    {
    if(sub[tpos] == 'ï' || sub[tpos] == 'Ï')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'j','J':
    {
    if(sub[tpos] == 'j' || sub[tpos] == 'J')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'k','K':
    {
    if(sub[tpos] == 'k' || sub[tpos] == 'K')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'l','L':
    {
    if(sub[tpos] == 'l' || sub[tpos] == 'L')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'm','M':
    {
    if(sub[tpos] == 'm' || sub[tpos] == 'M')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'n','N':
    {
    if(sub[tpos] == 'n' || sub[tpos] == 'N')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ñ','Ñ':
    {
    if(sub[tpos] == 'ñ' || sub[tpos] == 'Ñ')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'o','O':
    {
    if(sub[tpos] == 'o' || sub[tpos] == 'O')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ò','Ò':
    {
    if(sub[tpos] == 'ò' || sub[tpos] == 'Ò')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ó','Ó':
    {
    if(sub[tpos] == 'ó' || sub[tpos] == 'Ó')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ô','Ô':
    {
    if(sub[tpos] == 'ô' || sub[tpos] == 'Ô')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'õ','Õ':
    {
    if(sub[tpos] == 'õ' || sub[tpos] == 'Õ')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ö','Ö':
    {
    if(sub[tpos] == 'ö' || sub[tpos] == 'Ö')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'œ','Œ':
    {
    if(sub[tpos] == 'œ' || sub[tpos] == 'Œ')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ø','Ø':
    {
    if(sub[tpos] == 'ø' || sub[tpos] == 'Ø')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'p','P':
    {
    if(sub[tpos] == 'p' || sub[tpos] == 'P')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'Þ','þ':
    {
    if(sub[tpos] == 'Þ' || sub[tpos] == 'þ')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'q','Q':
    {
    if(sub[tpos] == 'q' || sub[tpos] == 'Q')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'r','R':
    {
    if(sub[tpos] == 'r' || sub[tpos] == 'R')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 's','S':
    {
    if(sub[tpos] == 's' || sub[tpos] == 'S')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'š','Š':
    {
    if(sub[tpos] == 'š' || sub[tpos] == 'Š')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 't','T':
    {
    if(sub[tpos] == 't' || sub[tpos] == 'T')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'u','U':
    {
    if(sub[tpos] == 'u' || sub[tpos] == 'U')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ù','Ù':
    {
    if(sub[tpos] == 'ù' || sub[tpos] == 'Ù')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ú','Ú':
    {
    if(sub[tpos] == 'ú' || sub[tpos] == 'Ú')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'û','Û':
    {
    if(sub[tpos] == 'û' || sub[tpos] == 'Û')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ü','Ü':
    {
    if(sub[tpos] == 'ü' || sub[tpos] == 'Ü')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'v','V':
    {
    if(sub[tpos] == 'v' || sub[tpos] == 'V')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'w','W':
    {
    if(sub[tpos] == 'w' || sub[tpos] == 'W')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'x','X':
    {
    if(sub[tpos] == 'x' || sub[tpos] == 'X')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'y','Y':
    {
    if(sub[tpos] == 'y' || sub[tpos] == 'Y')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ý','Ý':
    {
    if(sub[tpos] == 'ý' || sub[tpos] == 'Ý')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ÿ','Ÿ':
    {
    if(sub[tpos] == 'ÿ' || sub[tpos] == 'Ÿ')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'z','Z':
    {
    if(sub[tpos] == 'z' || sub[tpos] == 'Z')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    case 'ž','Ž':
    {
    if(sub[tpos] == 'ž' || sub[tpos] == 'Ž')
    {
    if(f_result == -1) f_result = i;
    tpos++;
    }
    else
    {
    f_result = -1;
    tpos = 0;
    }
    }
    }
    }
    if(tpos == strlen2(sub))
    {
    f_complete = true;
    break;
    }
    }
    if(!f_complete) f_result = -1;
    return f_result;
    }


    Nun sag mir was unglaublich und falsch ist...

  • Wie wäre es wenn ihr mal in den includes nachguckt dann wisst ihr wie es gemacht wird? Oder stehen die da nicht mit drin?


    Raten kann man viel ob es so ist, ist eine andere Frage...

  • Die SA:MP Includes beinhalten "Native" (Sowas wie einträge von den Plugins was wenig sinn bringt sich die anzugucken)


    Und mit dem ms entzug ffs Plugins sind im gegensatz vom Gamemodes/Filterscripts Funktionen schneller, deshalb waren auch meine Funktionen Natürlich langsamer.

  • ...aber man kann auch nicht wissen wie die nativen Funktionen geschrieben wurden, dann selber eins in Pawn machen und dann sagen "so wurde die native funktion auch gemacht, das ist nur eine nachmache"!
    Mit dem Test wollte ich ihm nur beweisen, dass die Theorie sinnfrei, sogar (sry aber) blödsinn ist...

  • Tortzdem meint er es sei so gemacht worden.
    Ich sag doch die ganze zeit, "jeder glaubt an das was er will" und will das thema beenden, da das ein Codeschnipsel Thread ist und kein Diskussionsthread. Naja wenn du willst können wir auch per PN weitermachen, aber hier schreib ich jetzt nichts mehr ;)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen