Beiträge von Sub Royal

    Ne Funktion um formatierte Nachrichten direkt mit SendClientMessageEx ausgeben zu koennen statt immer format zu nutzen


    ist definiert wie folgt:


    #define FIRST_TEAM_LOCATION "Mount Chilliad (South)"


    Wobei ich auch mal einfach #define FIRST_TEAM_LOCATION Mount Chilliad (South) probiert habe, aber das war auch nicht von Erfolg gekroent.



    Ersteres mit den Anfuehrungszeichen habe ich bei der format Variante probiert, um das dann als %s einzubauen

    Habe ein Problem mit den Makros


    Folgende Varianten habe ich probiert:


    C
    Textdraw00 = TextDrawCreate(10.000000,379.000000,"Location: FIRST_TEAM_LOCATION");
    	ClassSel_InitTeamNameText(Textdraw00);
    	Textdraw01 = TextDrawCreate(10.000000,379.000000,"Location: SECOND_TEAM_LOCATION");
    	ClassSel_InitTeamNameText(Textdraw01);
    	Textdraw02 = TextDrawCreate(10.000000,379.000000,"Location: THIRD_TEAM_LOCATION");
    	ClassSel_InitTeamNameText(Textdraw02);


    Das hat leider nicht geklappt


    Dann mal folgende Variante


    Im ersten Fall wurde statt dem Namen den ich als z.B. FIRST_TEAM_LOCATION definiert habe, einfach nur FIRST_TEAM_LOCATION angezeigt.
    Im 2. Fall mit format wurde garnichts angzeigt und die Textdraws haben rumgebuggt

    :D
    Alles klar


    Habe mal ne kleine Frage
    Was ist eigentlich der return Wert von sscanf bzw. was returnt sscanf?


    Werde mir bald mal ocmd anschauen, bis dahin experementiere ich noch bisschen


    bin von strcmp jetzt mal dazu gekommen um zu sehen wie schnell das ist



    Gehen weiterhin irgendwie structs in PAWN?


    Habe nun rausgefunden dass die Methode mit sscanf statt strcmp nun nochmal um einiges schneller ist


    Bench for strcmp: executes, by average, 678.47 times/ms.
    Bench for sscanf: executes, by average, 2612.83 times/ms.


    Gibt es einen einigermassen praktikablen Weg z.B. zcmd mit meiner Variante zu vergleichen?

    Moin ne Frage
    Kann ich den Teil hier alternativ mit sscanf ausdruecken?


    C
    new cmd[32], idx;
    	cmd = strtok(cmdtext, idx);


    edit:


    Habs geschafft mit


    C
    new cmd[32], idx;
    sscanf(cmdtext,"s[32]d",cmd,idx);

    Endlich kann ich strtok wegschmeissen :D


    /edit:


    Warum soll strtok eigentlich so schlecht sein?
    Habe gerade mal strtok (Das von DracoBlue), strtok(Das von Jeffry was schneller sein sollte) mit sscanf verglichen, und es kam raus dass das angebliche schnellere strtok von Jeffry langsamer war als strtok von Dracoblue und sscanf. Strtok von DracoBlue war jedoch nur extrem minimal von sscanf entfernt warum auch immer


    Das Ergebnis war verblueffend





    Kaliber: Das werde ich mal probieren die Teile zu erstellen wenn die im Streambereich sind.


    Naja ich habe gedacht ich returne mal irgendwas damit es nicht so langweilig ist, aber ich sehe jetzt erst dass das eigentlich keinen sinn macht :D Danke dir fuer deine Funktion damit klappts

    Danke @Kaliber fuer die Loesung des Problems, wobei ich garnicht mehr weiss woran es jetzt ueberhaupt lag :D




    So an alle habe nun folgendes Problem:


    Ich will mit meiner Funktion CreateGlobalActor einen Actor erstellen, und vor dem Actor soll halt ein Pickup erstellt werden.
    Irgendwie haut das jedoch nicht hin mit meinen beiden Funktionen, wo liegt das Problem?


    Das Pickup wird irgendwo um den Actor herum erstellt, niemals direkt vor ihm


    Ah moin Kaliber :D


    Also das sind die Zeilen wo ich meine Funktion drin habe





    Meine Funktion



    Der Compiler sagt es seien folgende Fehler vorhanden:



    Code
    error 008: must be a constant expression; assumed zero
     error 001: expected token: "}", but found ";"
     error 032: array index out of bounds (variable "MoneySpawns")
     error 032: array index out of bounds (variable "MoneySpawns")
     error 032: array index out of bounds (variable "MoneySpawns")


    Error 1: Die 2. Zeile aus dem Array


    C
    {-2279.4812,-2283.4812,-1286.3794,-1294.3794,258.9622,258.3622},//Yellow


    Error 2:
    Leere Zeile nach diesem Zeichen hier

    C
    };


    Die anderen 3 Errors jeweils die Zeilen wo ich GenerateRandomPickup einsetze in Verbindung mit dem Array


    Komischerweise ist mein "ackslimit" Problem was ich vorher hatte behoben, wenn ich GenerateRandomPickup nicht nutze, sonst gibt es wieder ackslimit Fehler nach kurzer Zeit.
    Ist vielleicht was an der Funktion fehlerhaft?

    Gruesse euch


    Kriege komischerweise Array Out Of Bounds


    Array:


    C
    new const Float:MoneySpawns[][6]={	
    		{-2335.7568,-2340.2905,-2023.9417,-2027.9861,270.0450,269.2450},//Violet
    		{-2279.4812,-2283.4812,-1286.3794,-1294.3794,258.9622,258.3622},//Yellow
    		{-2810.7144,-2819.3496,-1493.0504,-1495.6464,139.3078,138.9078},//Brown
    		{-2303.8931,-2337.4104,-1607.2054,-1644.9517,483.7031,482.9031}//Main
    	};


    Und hier die Zeile wo der Compiler meckert


    C
    GenerateRandomPickup(1212,19,MoneySpawns[1][0],MoneySpawns[1][1],MoneySpawns[1][2],MoneySpawns[1][3],MoneySpawns[1][4],MoneySpawns[1][5],0);


    Warum meckert der Compiler?

    Mein Problem hat sich erledigt, dafuer eine neue Frage


    Wie kann ich Praeprozessoranweisungen in Strings umsetzen? z.B. hier


    #define TEAM_NAME_1 Bla


    printf("TEAM_NAME_1");
    So wie ich das will sollte da dann eigentlich Bla stehen, jedoch wird dann TEAM_NAME_1 geprintet.


    Wie kann ich das umgehen?

    Meinst du das allererste in meinem Gamemode?


    Habe das Problem gefunden


    Es liegt an meiner CreateGlobalActor Funktion


    Ich weiss nicht wo hier der Fehler ist


    Der schwafelt was von preceeding leevel bei Zeile 9 -15

    OnPlayerUpdate sieht wie folgt aus:


    Habe ich so 1:1 aus Grand Larc uebernommen, bzw. mein Gamemode basiert auf Grandlarc

    Ich gruesse euch :D


    Ich erstelle mit meiner Funktion CreateGlobalActor einen Actor, und will in einem Abtand Float:pickupdistance ein Pickup vor den stellen.


    Das ist mein Code




    Was fange ich mit den Fehlern an?


    sample.pwn(2033 -- 2042) : warning 219: local variable "x" shadows a variable at a preceding level
    sample.pwn(2033 -- 2042) : warning 219: local variable "y" shadows a variable at a preceding level


    Betrifft folgende Zeilen



    So werden meine Actors erstellt


    C
    CreateGlobalActor(1,274,GlobalActors[0][0],GlobalActors[0][1],GlobalActors[0][2],GlobalActors[0][3],2.0,1);
    	CreateGlobalActor(2,274,GlobalActors[1][0],GlobalActors[1][1],GlobalActors[1][2],GlobalActors[1][3],2.0,2);
    	CreateGlobalActor(3,274,GlobalActors[2][0],GlobalActors[2][1],GlobalActors[2][2],GlobalActors[2][3],2.0,3);
    	CreateGlobalActor(4,274,GlobalActors[3][0],GlobalActors[3][1],GlobalActors[3][2],GlobalActors[3][3],2.0,4);
    	CreateGlobalActor(5,274,GlobalActors[4][0],GlobalActors[4][1],GlobalActors[4][2],GlobalActors[4][3],2.0,5);
    	CreateGlobalActor(6,274,GlobalActors[5][0],GlobalActors[5][1],GlobalActors[5][2],GlobalActors[5][3],2.0,6);

    Weiterhin crasht mein Server nun beim Start haha wie finde ich raus ob es eventuell an kaputten Textdraws liegt oder aehnlich?


    C
    [18:33:30] [debug] #0 0005fde4 in public OnPlayerUpdate () at bedwarssample.pwn:2359
    [18:33:30] [debug] Native backtrace: