Beiträge von Kaliber

    mein server geht immer aus was machen?


    In CallLocalFunction dürfen keine Leeren Strings übergeben werden...evtl das mal prüfen...


    Passiert meistens wenn du keinen guten "CMD-Prozessor" verwendest...wechsel den einfach mal bzw Update ihn ^^


    Unknown column 'id' in 'where clause'


    Das bedeutet, dass das Feld ID nicht existiert...da du z.B. sowas machst:


    SQL
    SELECT * FROM `Bla` WHERE `id`='0'


    und dieses ID feld existiert nicht, dass musst du einfach erstellen :)


    mfg. :thumbup:

    Jeffry: Gibts da was?


    Auch wenn ich nicht Jeffry bin, ja das kannst du einfach mit SetPlayerPos machen :)


    //Ein Beispiel:
    new Float:x,Float:y,Float:z,Float:a;
    GetPlayerPos(playerid,x,y,z),GetPlayerFacingAngle(playerid,a);
    const Float:distance = 5.0; //Wie viele Meter er versetzt werden soll


    //Um den Spieler nachvorne zu setzen:
    x += (distance * floatsin(-a, degrees));
    y += (distance * floatcos(-a, degrees));
    //Um den Spieler nachhinten zu setzen:
    x += (-distance * floatsin(-a, degrees));
    y += (-distance * floatcos(-a, degrees));
    //Um den Spieler nach rechts zu setzen:
    a+=90.0;
    x += (distance * floatsin(-a, degrees));
    y += (distance * floatcos(-a, degrees));
    //Um den Spieler nach links zu setzen:
    a-=90.0;
    x += (distance * floatsin(-a, degrees));
    y += (distance * floatcos(-a, degrees));


    //Und dann halt einfach:
    SetPlayerPos(playerid,x,y,z);


    mfg. :thumbup:

    Du musst die Leader-Namen in eine Variable laden und dann prüfen ob dieser Spieler online ist mit z.B. der Funktion:


    stock IsPlayerOnline(const name[])
    {
    for(new i=GetPlayerPoolSize(),n[MAX_PLAYER_NAME]; i!=-1; i--) if(GetPlayerName(i,n,MAX_PLAYER_NAME) && !strcmp(n,name)) return 1;
    return 0;
    }


    Wenn die Funktion 1 ausgibt ist der Spieler online, ansonsten offline :)


    mfg. :thumbup:

    new rohr;
    if(rohr==1)
    {


    Schauen wir uns diesen Code mal an...


    In Pawn, werden Variablen direkt mit 0 initialisiert beim deklarieren, somit macht das hier keinen Sinn, da der Wert niemals direkt 1 sein wird...


    Entweder du machst es so:


    new rohr=1;


    oder änderst deine if-Abfrage zu:


    if(!rohr)
    //bzw
    if(rohr == 0)


    mfg. :thumbup:

    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: