Beiträge von Kaliber

    Was...machst du denn da genau? ?(


    cInfo[i][besitzer] Das ist ja ein String...aber playerInfo[playerid][pMySQLID] ist doch ein Integer?! Und du willst hier die Besitzer vergleichen..was du aber machst..ist den Besitzer mit deiner MySQLID zu vergleichen?! Oder steht da der Name von dem..Besitzer drinnen? :huh:


    Wenn ja, wäre das dann so richtig:


    if(!strcmp(cInfo[i][besitzer], playerInfo[playerid][pMySQLID]) && cInfo[i][slot] == s)

    Sieht dann so aus:


    wie lasse ich jede Linie ausführen?

    Was genau meinst du jetzt damit....


    Unter OnDialogResponse...prüfst du über das listitem welche Route er ausgewählt hat..und lässt ihn darüber dann einen Checkpoint anzeigen...


    Und einen Countdown kannst du z.B. so realisieren:


    static oder new?

    static, dadurch werden nicht permanent 2048 Cells (8192 Bytes = 8 KiloByte) pro Aufruf angefordert, sondern reserviert.


    Das spart eine Menge Zeit ^^


    Wobei du eigentlich versuchen solltest alles zu packen.


    Du musst doch nicht unbedingt format verwenden? ^^


    Verstehe nicht so genau...wieso du darauf zurückgreifen musst :D


    Denn wenn du z.B. einen Namen adden willst geht das auch so:



    new packed_name[MAX_PLAYER_NAME char];
    strpack(packed_name, GetName(playerid));
    //DialogString = !""; //Wichtig das dient als reset (aber da wir darunter schon was setzen, brauchen wir das nicht)
    DialogString = !"Willkommen ";
    strcat(DiaogString, packed_name);
    strcat(DialogString, !" :)\nSchön, dass sie zu uns gefunden haben!");



    Ist zwar ein bisschen umständlicher...aber du büßt nur minimale Performanz ein..und sparst dir 6 KiloByte von 8 ^^

    Du solltest das nicht global nutzen!


    Da kann es zu Fehlern kommen...zwar meint man immer, Pawn ist in der VM Single-Threaded was auch so ist, allerdings können Callbacks sogut wie zeitgleich für Spieler ausgeführt werden.
    Besser wäre zu versuchen, Strings zu packen oder einen großen statischen Speicherbereich im Callback zu allozieren.



    //Ganz oben im OnDialogResponse
    static DialogString[2048 char]; //Mit char wäre es am schönsten ^^ geht aber auch ohne xD

    Nein format kannst du da nicht nutzen :/


    [900 char] bedeutet, dass eine Cell (wo du hier 900 erstellst) nicht 4 Bytes groß ist, sondern nur 1 Byte :)


    Wenn du format nutzen musst, dann musste normale Cells verwenden :)

    Als erstes rate ich dir von dcmd ab...nutze ocmd/zcmd/ycmd/rcmd..iwas anderes außer dcmd ^^


    Als nächstes schreib den code mal so (return..immer klein):


    Die Anderen Klappen kaum hab ich einen Langen Text spinnt es rum?

    Jaa das liegt am Compiler :wacko:
    Du musst des zum Beispiel so machen:


    Das char packed den string, dadurch sparst du einfach Speicher :)


    Dieses ! sagt einfach nur, dass der String gepackt werden soll :)


    Kannst du auch ideal so bei Texten im Dialog verwenden :)

    Doch...das kannst du da einfach drunter klatchen..schau dir meinen code an..da unter die if-Abfrage kommt das alles mit dem IsPlayerConnected :D


    In dem Fall musste kein if(listitem) checken, da wir die ID über den inputtext filtern und der je nach listitem angepasst ist :)

    dini hat nichts mit PVars zu tun ._.


    Das eine ist eine Speicherung, das andere ist quasi eine Speicherung im RAM und nicht im Stack wie bei einer Variable ^^


    Du machst quasi folgendes:


    SetPVarInt(playerid, "lohn_id", pID);


    Und dann öffnest du einen neuen Dialog und dort setzt du dann den lohn so:



    new pID = GetPVarInt(playerid, "lohn_id"), lohn = strval(inputtext);
    DeletePVar(playerid, "lohn_id"); //Wichtig! Hier Ram reinigen


    //Und nun haste die pID = Der Spieler wo der Lohn gesetzt werden soll...lohn = der Betrag vom Lohn :)