Beiträge von Kaliber

    Also als 1. du resettest nicht die Variable loop2 (also setzt diese nicht wieder auf 0 vor der while Schleife


    2. Wieso nutzt du da eine while-Schleife? Die Aufgabe ist perfekt für eine for-Schleife?


    3. Wieso nutzt du da überhaupt noch eine Schleife? Schließlich steht das 1:1 über der While - Schleife..du hast da 2x den selben Code...


    Und du verwendest wieder C99 Stil...lass doch mal Variablen-Deklarationen aus den Schleifen ^^


    Hier, schreib es so:


    DIALOG_STYLE_INPUT

    Nein :)


    Das hat etwas damit zu tun, dass du den String nicht richtig formatierst....


    format(string,sizeof(string),"{EB0000}Der Fahrpreis muss zwischen 1$ und 1000$ liegen.\n");
    format(string,sizeof(string),"%s{FFFFFF}Um als Taxifahrer zu arbeiten, gib hier den Fahrpreis ein. Du erhälst ihn alle 15 Sekunden.", string);

    Woran kann das liegen? Ich weiss aktuell nicht wo der Fehler liegt

    Also bei mir wird es fehlerfrei ausgeführt.


    Eventuell mal keinen C99 Stil verwenden ^^


    Naja, hier gäbe es 2 gute Möglichkeiten.


    1. Du erstellst ein 2D-Array...1D = Kills...2D = ID und dann sortierst das nach Kills und hast die ID :)


    2. Du durchsuchst einfach nur das Array:


    Map/HUD wie bekomme ich die schwarz ? Bzw. Kann man den HUD(Nur die kleine Karte) irgendwie ausblenden?

    Entweder über den SpecateModus, dadurch verschwindet die HUD oder ein schwarzes TextDraw / Sprite drüber (gibt ein rundes sprite) :)


    Vielleicht ist ein Fehler im Code?

    Nein. Hier mal ein Zitat, was das ganz gut erklärt:


    Im Durchschnitt ist Heapsort nur dann schneller als Quicksort, wenn Vergleiche auf den zu sortierenden Daten sehr aufwendig sind und gleichzeitig eine für Quicksort ungünstige Datenanordnung besteht (z. B. viele gleiche Elemente). In der Praxis ist bei unsortierten oder teilweise vorsortierten Daten Quicksort oder Introsort um einen konstanten Faktor (2 bis 5) schneller als Heapsort.

    Da gibt es noch andere Möglichkeiten :)


    Zum Beispiel, wenn eine Zeile zu lang ist kann auch der Compiler abkratzen, das leider ein kleiner Bug vom Compiler...


    Es kann auch am Kompatibilitätsmodus von Pawno liegen, eventuell den mal auf Windows 7 stellen :)


    Oder du hast eine ( / ) vergessen...oder die " xD


    Es kann echt extrem viele Gründe haben ^^

    Da stellt sich mir jedoch die Frage: Inwiefern ist das mit sscanf besser als alles mit strtok zu machen? Ist das schneller und/oder ressourcensparender?

    Also mal zu dir...sscanf ist schneller und hat viel mehr Möglichkeiten als strtok.


    Zum anderen ist ocmd/zcmd/ycmd oder what ever viel schneller als strcmp (&dcmd da dcmd nur ein Makro von strcmp ist).


    Mal zu Erklärung...bei strcmp sieht das z.B. so aus:



    new cmd="/hallo";


    if(cmd == "/test")
    if(cmd == "/hust")
    if(cmd == "/admin")
    if(cmd == "/hallo")

    Das heißt, er muss von oben an alle cmds prüfen bis er beim richtigen ist..und wenn /hallo ganz unten von 500 Commands steht..muss er vorher 500 andere prüfen..und das kann schon ein weilchen dauern...
    Bei ocmd/zcmd/ycmd springt er direkt an die Adresse wo der Command startet..und das ist natürlich wesentlich schneller, egal wie viele commands man hat :)



    Aber wieso ?

    Jaa das ein Rundungsfehler :)


    Der hat nicht 0.04 auf dem Schirm, sondern 0.039999999 ^^


    Also mach einfach sowas:



    #define FLOAT_ERROR 0.00000001


    format(string,sizeof(string),"Du hast %0.2f€ auf dein Konto eingezahlt.",floatstr(inputtext)+FLOAT_ERROR);

    Kann man dann auch z.B. mit arrays machen? array1={0101} XOR array2={1011} = array3={1110} ? Also wie kann man sowas in PAWN realisieren?

    Ja, das geht sehr gut in Pawn :)


    C
    new a=0b0101, b=0b1011;
    new c = a^b;
    printf("0b%04b",c);


    Mit dem PI, du musst %f nutzen :)


    Ich empfehle dir übrigens ein MAKRO :)



    #define PI 3.14159265359


    //Nutzung:
    printf("Pi: %f",PI);


    PS: Nutze ocmd/zcmd (kein dcmd) ist schneller und schau dir die basics von der sscanf Anwendung an :)

    Mach doch sowas:


    if(strcmp(cmd, "/soundvalid", true))

    Es muss: if(!strcmp(cmd,"/soundvalid",true)) heißen :)


    Und wieso nutzt du goto und do-while?


    Bitte goto nie verwenden...das ist ein sehr schlechter programmierstil...


    So könntest du das machen:


    dini_Int("/Ordnername/Dateiname.txt", "frakmats", dini_GetInt("/Ordnername/Dateiname.txt", "frakmats")-100);


    Ist natürlich nicht ganz so übersichtlich...also abgesehen davon, dass ich dir von dini abrate..kannste auch ein Makro nutzen:



    #define dini_Sub(%0,%1,%2) dini_Int(%0,%1,dini_GetInt(%0,%1)-(%2))


    //Und dann
    dini_Sub("/Ordnername/Dateiname.txt", "frakmats", 100); //dann wird 100 abgezogen