Beiträge von Kaliber

    2. Was genau meinst du?

    Na, was glaubst du warum der Code nicht funktioniert?


    Weil die Code Logik zerstört ist.


    Die Funktion SendClientToChat hingegen funktioniert, also nutze sie doch einfach.



    mt violettfarben

    Dann ändern sich doch nur die Farben.


    Ja, klar kannst du es so machen, wie in deinem Beispiel :)


    Es ginge auch noch anders, z.B. mit intelligentem shiften.


    Da gibt es ein schönes Include: https://forum.sa-mp.com/showthread.php?p=4055845


    Und sogar ein Beispiel für dein Problem: https://forum.sa-mp.com/showpo…a07&p=4079880&postcount=7


    Aber kannst du ja entscheiden xD

    Wieso machst du so einen Quatsch?


    1. Hast du wieder alle Funktionen zerstört und alles darein gepackt.


    2. Hast du die Logik zerstört und machst da kompletten Blödsinn.


    Wieso nutzt du nicht wie vorher die Funktion die du schon hattest...


    Da war doch alles korrekt, bis auf die Farben, aber das lag an deinen defines...

    @Kaliber wie meint du das? Ich hab oben was reinedtiert.

    Das hat nichts mit der Funktion zu tuen, die funktioniert einwandfrei.


    Der Punkt ist, du nutzt in den Defines immer die selbe Farbe...


    Überall nur 0x505050


    R = 50
    G = 50
    B = 50


    Nur die Alpha Werte änderst du, aber die haben keine Auswirkungen auf die Farbe.


    Also ändere die R, G oder B Werte...


    Schreib also zum Beispiel bei COLOR_FADE4B0B0B0 dann ist diese wesentlich heller.


    Kannst ja mal mit den Werten rumspielen: https://html-color-codes.info/old/colorpicker.html

    Hier die fehlenden Defines

    Deine Defines sind falsch.



    #define COLOR_FADE1 0x505050FF
    #define COLOR_FADE2 0x50505095
    #define COLOR_FADE3 0x50505060
    #define COLOR_FADE4 0x50505032


    Du veränderst nur den Alpha_Wert die Farbe selbst bleibt gleich.


    Wie soll sich da also was ändern? ^^


    Musst die Farben selbst heller bzw dunkler machen, so wie du magst.

    Habe das System Jetzt so und es ist immernoch wie oben beschrieben

    Keine Ahnung, ich bin aktuell zu faul die Funktion selbst zu testen.


    Kannst ja auch einfach sowas machen:


    C
    const Float:distance=5.0; //5m vor dem Blitzer wird er geblitzt
    new Float:x = Blitzer[id][x] + distance * floatsin(-Blitzer[id][rotation], degrees);
    new Float:y = Blitzer[id][y] + distance * floatcos(-Blitzer[id][rotation], degrees);
    
    
    if(IsPlayerInRangeOfPoint(playerid,5.0,x,y,Blitzer[id][z]))
    {
        //Blitz
    }

    @Allrounder18
    Ich hab nach mehr defines gefragt gehabt..lies nochmal genau..

    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 :)