Beiträge von Kaliber

    Offensichtlich wird OnPlayerSpawn ...mit den richtigen Koordinaten aufgerufen...


    wo ist jetzt dein Problem?


    Wenn die Position nicht gesetzt wird...liegt es offenbar nicht daran, sondern, dass du sie danach wieder anders setzt oder so...


    Keine Ahnung, was du da machst.

    OnPlayerSpawn wird nicht aufgerufen

    Wie OnPlayerSpawn wird nicht aufgerufen?


    Wie soll er dann auch Spawnen? ^^


    Befindet er sich beim Register etwa im SpectateModus?


    Dann schreib mal unter OnUserRegister, anstatt SpawnPlayer TogglePlayerSpectating(playerid, false);


    Aber wirklich nur, wenn er im Spectate Modus ist.


    Ansonsten, hast du irgendwo einen anderen Fehler, wenn das nicht aufgerufen wird...wie falsche Hooks o.ä.

    format(SpielerDaten[playerid][player_LastLoginZeit], 50, "%d:%d:%d",Time[0],Time[1],Time[2]);

    Einfach:


    format(SpielerDaten[playerid][player_LastLoginZeit], 50, "%02d:%02d:%02d",Time[0],Time[1],Time[2]);



    hat jemand einen Plan was ich Flasch mache ?

    Was heißt denn Bin am Blitzer vor?


    Wieso stimmt das denn nicht?


    Er blitzt doch nur auf einer Seite...wenn es die falsche Seite ist, dreh einfach den Winkel:


    GetPlayerFacingAngle(playerid, pY);
    pY = floatround(pY + 180.0) % 360;

    1. Wieso funktioniert du Funktion, du gibst keine String-Größe an?


    2. Es ist klar definiert, dass nur ein Unterstrich im Namen vorkommen darf, oder?


    Dann könntest du die Funktion einfach so schreiben:


    C
    stock RemoveUnderscore(const text[MAX_PLAYER_NAME+1])
    {
        new i = strfind(text,"_");
        if(i == -1) return text;
        new string[MAX_PLAYER_NAME+1];
        strcat(string,text),string[i] = ' ';
        return string;
    }


    Mit der Funktion ist auch sichergestellt, dass du nicht zu große Arrays verwendest oder zu kleine :D


    Und bei deinem Callback kommst du durcheinander (der Fehler liegt bei den String-Variablen), weil du alles darein packst.


    Aber das ist doch eine eigene Funktion, die du an anderer Stelle eventuell wieder verwenden kannst, lager sie doch einfach aus.


    Schreib es so:


    PS: Falls du die Funktion oben verwendest und einen Fehler erhälst wegen der Array Size, im Enum muss die Größe von player_RPName exakt MAX_PLAYER_NAME+1 sein.

    so besser?

    1. Nein nicht den Code aus dem pwn Tag jetzt da einfach rein kopieren, da jegliche Formatierung zuvor zerstört wurde.


    2. Wähle bei dem Code Tag die Sprache mit aus (C) oder wenn du es als Tag direkt schreiben magst: [code=c]


    3. Du musst den Code jetzt noch einmal aus deinem Skript kopieren und da einfügen, damit die Formatierung beibehalten wird :)

    Bitte nicht den [pwn] Tag nutzen, der verschiebt sich nämlich wie du siehst, sobald du den Beitrag bearbeitest oder sonst was machst.


    Immer nur den Code Tag verwenden, ansonsten ist das wirklich nur schwer möglich dir zu helfen ^^

    Wo liegt mein Fehler ?

    Hmmm
    So einfach kannst du das nicht dynamisch abfragen...


    Wie du nämlich siehst, sobald der Winkel über 360 ist stimmt die Logik nicht mehr und sobald es kleiner als 0 ist ebenso.


    2 Möglichkeiten:


    1. Du bestimmt für den Blitzer exakt die Winkel und gibst diese als zusätzliche Parameter an und prüfst das darüber...


    2. Du nutzt eine Funktion die das berücksichtigt und abdeckt.


    Hier wurde mal eine gepostet: https://forum.sa-mp.com/showpost.php?p=3065655&postcount=2


    Und hier: https://pastebin.com/AzXJc7Lm


    Die Funktion heißt da: IsPlayerFacingPoint


    Kanst ja mal ein bisschen rumprobieren und damit spielen :)

    Du weißt ja, an welchem Biz er sich das Auto gekauft hat, als er es sich kauft...


    Du hast also 2 Möglichkeiten...


    Entweder du speicherst das in einem PVar und fügst das da einfach ein..


    oooder du prüfst die Positionen von dem Biz und checkst, an welchem er sich befindet..und hast so die ID.

    Wie kann ich am besten ein Erfahrungslevel System erstellen, wo die User Erfahrungspunkte bekommen und dadurch das Level steigt ?

    Das kommt darauf an, wie sie diese Erfahrungspunkte erhalten sollen.


    Aber üblicherweise passiert das ja über dein "PayDay".


    Du kannst also einfach eine Spieler-Variable wie das Level machen, die nennst du dann z.b. pExp.


    C
    //Damit gibst du an, dass der Spieler Pro Level 4 XP braucht
    //Also um auf Level 2 zu kommen 4
    //Um auf level 3 zu kommen 8
    //Um auf Level 4 zu kommen 16
    //Kannst den Faktor natürlich beliebig Variieren
    stock GetXPNeeded(playerid)
    {
        return 4*SpielerInfo[playerid][pLevel];
    }


    Dann gibst du dem Spieler pro PayDay einfach immer einen Xp..



    C
    SpielerInfo[playerid][pExp]++; //Erhöht immer die XP um 1
    
    
    if(SpielerInfo[playerid][pExp] >= GetXPNeeded(playerid)) //Prüft ob er genug XP hat
    {
        //Level Up! :)
        SpielerInfo[playerid][pExp] = 0;
        SpielerInfo[playerid][pLevel]++;
    }

    Also meinst du einfach nur abfragen ob das Auto in die Richtung fährt über die Z Rotation ?

    Jaa...das ist doch das, was du wissen wolltest ^^


    Darüber kannst du prüfen, ob das Auto auf den Blitzer zu fährt...oder eben nicht :)



    Den Widerspruch hört man schon raus

    Da ist kein Widerspruch, du benutzt es nicht.


    Du hast die Variablen deklariert und gibst ihnen einen Wert.


    Aber du fragst den Wert ja nirgends ab, also benutzt du die Variable nicht, du weist ihnen nur einen Wert zu :)

    Irgendwie wird die Kilometer Anzeige "über dem Weißen angezeigt"

    Du musst das TextDraw als letztes erstellen mit dem Blitzer, dann wird es auch über allen angezeigt :)



    Habe eine andere frage wie mache ich das dass der Blitzer den Spieler angucken muss ?

    Wäre es nicht einfacher....den Blitzer Trigger point nur auf der einen Spur zu halten, wo er auch in die Richtung fährt? ^^


    Ansonsten kannst du das anhand der [wiki]GetVehicleZAngle[/wiki] ja einfach prüfen, in welche Richtung das Auto zeigen sollte, damit der Blitzer reagiert :)