Beiträge von Kaliber

    wenn jemand wirklich auf die Laufzeitperformance achtet.


    Ich sag mal so, bei 10.000 Durchläufen brauchen beide 1ms für das setzen...da ist kein Unterschied...erst ab über 1.000.000 Durchläufen wird da was ersichtlich, aber bitte...wer hat Schleifen im Skript für mehr als 10.000 Durchläufe...


    und nur eine komplizierte Schreibweise


    Man hat 1x die Makros...dann ist es einfach nur noch hinzufügen, denke so komplex ist das nicht.


    Der Vorteil an der Methode ist einfach, dass man keine 32 Variablen mit einem Array von jeweils MAX_PLAYERS erstellen muss!


    Somit hält das halt die amx schön klein und wie gesagt, den Laufzeit unterschied wirst du niemals auch nur ansatzweise inGame merken :rolleyes:


    Anstatt Header Informationen zu nutzen (das geht übrigends wegen dem session_start hier nicht mehr bzw deshalb erfolgt die Warnung mach es einfach über einen meta tag):


    PHP
    <?php
    session_start();
    if( !$_SESSION['loggedIn'] ) {
    echo '<meta http-equiv="refresh" content="0; URL=index.php?status=false">';
    exit();
    }
    ?>


    mfg. :thumbup:

    Wie kommen alle eigentlich immer darauf, das alle Scripter süchtig sind. So ein gutes Itemsystem braucht 1-2 Wochen wenn man täglich ein bissien Scriptet.


    und hab ein Itemsystem in 1-2 Tagen (maximal 3).


    Es soll zumindestens gut sein. Und ohne Fehler&Sicherheitslücken. Und das geht nicht in 2 Stunden.


    Ich bitte euch...eigentlich braucht man dafür keine 5 Minuten hier mal ein sehr gutes Beispiel dafür:


    enum e_Items (<<=1)
    {
    Hut = 1,
    Shirt,
    Tasche,
    Fahrrad,
    Shit //man kann hier 32 Items erstellen, sollte fürs erste reichen :)
    };
    new e_Items:Items[MAX_PLAYERS];


    //Dann ein paar Makros:
    #define GivePlayerItem(%0,%1) Items[%0] |= %1
    #define RemovePlayerItem(%0,%1) Items[%0] &= ~(%1)
    #define ResetAllItems(%0) Items[%0] = 0
    #define HasItem(%0,%1) (Items[%0] & (%1))


    //Dann kann man das einfach setzen:
    GivePlayerItem(playerid, Hut);


    //Dann removen:
    RemovePlayerItem(playerid, Hut);


    //Dann einfach prüfen:
    if(HasItem(playerid,Hut))
    {
    //Hier hat er einen Hut
    }


    //Speichern, ganz easy als Integer in seinem Speicher System...in Items[playerid] steht alles und dann einfach laden lassen...


    Effizient, einfach und schnell ;)


    mfg. :thumbup:

    Mit strlen oder sizeof kommst du nicht weiter.


    Also am schnellsten und einfachsten wäre es, wenn du es statisch machst z.B. einfach so:


    stock GetLen(x) return ((x)==0)?7:6;


    //Nutzen kannst du das dann so:
    const frakid = 0;
    printf("%d",GetLen(frakid)); //Gibt dir dann halt 7 zurück da der 0te index in deinem Array 7 Einträge hat, alle anderen 6


    Wenn du es dynamischer haben willst, musst du mit einem End-Byte arbeiten, z.B. so:


    //Dann schreib das Array so:
    stock const FrakSkinM[][] =
    {
    {1,2,7,15,21,22,26,-1},
    {265,267,266,281,282,283,-1},
    {265,267,266,281,282,283,-1},
    {265,267,266,281,282,283,-1}
    };


    //Und die Funktion:
    stock GetLen(const str[])
    {
    new idx;
    for(new i=str[0]; i!=-1; i=str[++idx]){}
    return idx;
    }


    //und nutzung:
    const frakid=0;
    printf("%d",GetLen(FrakSkinM[frakid])); //Gibt 7 aus


    Da jede Zeile die gleiche Größe haben muss


    Das stimmt nicht.


    stock const FrakSkinM[][] =
    {
    {1,2,3},
    {1,2,3,4}
    };


    Kann man gut machen, da funktioniert aber das sizeof(FrakSkinM[]) nicht :)


    mfg. :thumbup:

    Es existiert schon ein Liberty City Interior :D


    Den könnte man evtl ausmappen:


    Position: -729.276000,503.086944,1371.971801
    Interiorid: 1


    Der Airport existiert auch, musste auch nur ausmappen:


    Position: -1827.147338,7.207417,1061.143554
    Interiorid: 14


    //Oder alternativ:


    Position: -1861.936889,54.908092,1061.143554
    Interiorid: 14


    Da verfügen einige Objekte über keine Kollission, aber kannst ja was drunter mappen ;)


    mfg. :thumbup:

    Naja, es gibt hier zwei Möglichkeiten, entweder NaviInfo[n][naAktiv] ist immer 1 oder sizeof(NaviInfo) ist 1.


    Evtl machst du mal einen print-Debug und postest mal deine Lade Methode...


    Vermutlich, wenn du das über MySQL machst hast du vergessen auf deinem Server irgendwas richtig einzurichten (dafür gibt es den mysql_log wo man sowas nachlesen kann, was man falsch gemacht hat...)


    mfg. :rolleyes:

    Das dem Spieler anzeigen lassen, dann sollte dieser normalerweise crashen.


    Oh ja, super Idee, dann kann er versuchen mit dem Taskmanager sein gta zu beenden, falls er es nicht schafft den fokusiert zu bekommen...kann er den PC neustarten ^^


    Kick ihn einfach und sag ihm er soll /q machen oder so ^^