[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Ohje...
    Du musst das Ausklammern also //


    //UsePlayerPedAnims();

  • Ich brauch den "Krüppel" Laufstyle. Aber auch diese "UsePlayerPedAnims();" um das Rennen mit "Schweren Waffen" zu verhindern


    Ja, das kannst du tun, indem du unter "OnPlayerKeyStateChange" abfragst, ob der Spieler die Sprinttaste drückt..



    if(newkeys & KEY_SPRINT){
    if(GetPlayerWeapon(playerid) == WAFFENID DER SCHWEREN WAFFE || GetPlayerWeapon(playerid) == WAFFENID DER SCHWEREN WAFFE || ...)SetPlayerArmedWeapon(playerid,0);
    }

    • Offizieller Beitrag

    Er möchte nicht das die Waffe entfernt wird, sondern das er nicht mehr rennen kann.


    Unter OnPlayerUpdate
    mit GetPlayerKeys abfragen ob er die Lauftasten drückt und diese abspeichern.


    Unter OnPlayerKeyStateChange
    die Variable abfragen die du setzt wenn er die Lauftasten drückt
    wenn ja abfragen ob er die Leertaste drückt, dann ApplyAnimation.


    Ist vielleicht kompliziert, jedoch klappt es so, ich habe noch einiges was
    diese Funktion verbessert, dass musst du aber dann selber lösen :)


    Zur Info:
    Du musst die Animation auch beenden, wenn der Spieler keine Lauftaste mehr drückt.

  • Die Waffe wird nicht entfernt, du solltest dir die Funktion erstmal anschauen.
    Und OnPlayerUpdate nutzen? Ja sicher! ist ja eine super gute Idee (NICHT)


    "SetPlayerArmedWeapon" setzt dem Spieler nur die Waffe in die Hand, der Spieler kann immer wieder zurück switchen.


    Nein, Cireyses meinte, dass CrashGames nicht will, dass die Waffe entfernt / zur Faust gesetzt wird..
    Er will nur nicht, dass man mit der Waffe laufen kann, aber man soll sie trotzdem in der Hand haben.
    Also, dann einfach bei "OnPlayerKeyStateChange" abfragen, ob der Spieler die KEY_SPRINT drückt HÄLT, wenn ja, Animation ausführen, wenn er sie loslässt, dann die Animation beenden

    • Offizieller Beitrag

    Die Waffe wird nicht entfernt, du solltest dir die Funktion erstmal anschauen.

    Ich weiß das nur der Waffenslot gewechselt wird, mit entfernt meinte ich das auch.

    Und OnPlayerUpdate nutzen? Ja sicher! ist ja eine super gute Idee (NICHT)

    Wie alle meinen das OnPlayerUpdate den Server zerschießt wenn man dies benutzt, dass ist extra ein public für solche Funktionen, sogar
    SAMP selber schlägt es so vor. Wenn du einen Timer von 3 Sekunden hast, der ständig diese Funktion aufruft, dann kann es zu Problemen mit den
    Animationen führen, entweder wird es zu spät abgespielt oder zu spät beendet.

  • Ja bin mir nicht sicher von wem glaube aber von Beavis, Hauke oder Butthead


    Mit freundlichen Grüßen


    Glaube Dynamic Tor oder so heißt des.
    Mit freundlichen Grüßen

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • 1. Ich meinte einfach nur Objekte, die ich mal entfernt habe.. Wo genau soll ich die Objekte bei dem Spieler entfernen? Bei OnPlayerConnect würde er beim 3. mal oder so crashen, oder das Game hängt sich auf..


    3. Wie könnte ich es denn am Besten machen?


    //Edit: 2. Wie könnte ich das z.B. machen?

    format(string,...,"%s",Where("Admin") >= 1); // das mit dem ">=1" & auch halt mit Strings ( Where("Name") > Name ) [iwi sowas]

    Mit freundlichen Grüßen
    ErikSon



    Scripte kleine Systeme auf Anfrage umsonst!
    Per PN könnt ihr mir gerne Scriptingfragen stellen.

    Einmal editiert, zuletzt von ErikSon ()

  • stock Where(func[]){
    new dir:dHandle = dir_open("./scriptfiles/Accounts/");
    new item[40], type, datei[20], readstr[200],count;
    while(dir_list(dHandle, item, type))
    {
    if(type == FM_FILE)
    {
    format(datei,20,"/Accounts/%s",item);
    new File:file = f_open(datei);
    while(f_read(file, readstr){
    if(strfind(func,readstr,false) != -1) ++count;
    }
    }
    }
    dir_close(dHandle);
    return count;
    }
    Die Funktion ist dafür da, bei allen Spielern eine bestimmte Information aus deren Spielerdatei herauszufinden, ohne MySQL..


    -> Wie könnte ich das z.B. machen?

    format(string,...,"%s",Where("Admin") >= 1); // das mit dem ">=1" & auch halt mit Strings ( Where("Name") > Name ) [iwi sowas]


    Kann mir da vlt jemand helfen? ;)

  • Hey,


    bräuchte mal Hilfe bei einer kleinen mathematischen Berechnung:


    Ein Spieler zielt und ich möchte diesen dann nach ca. 5 Meter links von ihm aus gesehen hinporten.


    Allerdings finde ich keine wirkliche Lösung dazu, zumal ich nicht der Mathe Crack bin. :whistling:


    Wäre nett, wenn mir jemand auf die Sprünge helfen könnte.


    Danke im Voraus.


    Grüße

  • @Mr.Reese: Könnte dir das eventuell helfen?:

    stock GetPosVorSpieler(playerid, Float:dist, &Float:x, &Float:y, &Float:z) //©Jeffry
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:a;
    if(IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
    else GetPlayerFacingAngle(playerid, a);
    GetPlayerPos(playerid, x, y, z);
    x += (dist * floatsin(-a, degrees));
    y += (dist * floatcos(-a, degrees));
    return true;
    }
    return false;
    }


    Benutzung:

    //Setzt den Spieler 5 Meter vor den anderen Spieler.
    new Float:x, Float:y, Float:z;
    GetPosVorSpieler(pID, 5.0, x, y, z); //pID = Spieler, dessen Position abgefragt wird.
    SetPlayerPos(playerid, x, y, z); //playerid = Spieler, dessen Position gesetzt wird.


    Könntest es mal so probieren:

    new Float:x, Float:y, Float:z;
    GetPosVorSpieler(pID, 5.0/*Distance vom Spieler entfernt*/, x, y, z);
    SetPlayerPos(playerid, x+5, y, z);

  • Beitrag von Apokrate ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.