[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

  • Ist nicht Falsch wie ich es eingetragen habe, es ist Falsch wie er es gesavt hat ;9

  • Ist nicht Falsch wie ich es eingetragen habe,


    Er zeigt sie dir an auf der Map
    Aber achte mal drauf, denn ich wette 100:1 das die Zone Flackert
    Du kannst es ja mal mit IsPlayerInArea testen da wirst du sehen das es falsch ist, da die MinX, MaxX nicht richtig sind und das selbe mit den Y auch so
    Du kannst nicht einfach sagen
    MinX und MinY = AddPlayerClass 1
    MaxX und MaxY = AddPlayerClass 2


    Darauf wo man achten muss sind die X und Y coordinaten vergleichen welche größer sind und welche kleiner......


    //edit
    Ich habe hier mal ein Muster um zu sehen das es viele falsch machen
    AddPlayerClass(0,-2794.5500,1302.3000,3127.1560,262.0000,0,0,0,0,0,0); // Save 1
    AddPlayerClass(50,207.4913,-100.8774,1005.2578,357.1566,0,0,0,0,0,0); // Save 2


    GangZoneCreate(-2794.5500,1302.3000, 207.4913,-100.8774); //Das ist schon falsch (Ich habe einfach XY von 1 als Min genommen und XY von 2 als Max)
    GangZoneCreate(-2794.5500,-100.8774, 207.4913,1302.3000); //Das ist der richtige weg
    /*
    Erklärung


    -2794.5500 ist kleiner als 207.4913
    Daher ist MinX -2794.5500
    und MaxX ist 207.4913


    -100.8774 ist kleiner als 1302.3000
    Daher ist MinY -100.8774
    und MaxY ist 1302.3000
    */
    Das sollte eigendlich verständlich sein ;)

    All in all it's just another brick in the wall

    Einmal editiert, zuletzt von Beavis ()

  • Das geht per SetTimerEx einfach abfragen ob er im punkt XYZ ist wenn nicht dahinsetzen




    SetTimerEx("PPos", 1000, true, "i", playerid);


    forward PPos(playerid);
    public PPos(playerid)
    {
    if(!IsPlayerPlayerRangeOfPoint(playerid, 5, X, Y, Z)return SetPlayerPos(playerid, X, Y, Z), SendClientMessage(playerid, ROT, "Test");
    }
    So? Und wie kann ich den Timer nach ca. 10 Sek automatisch beenden? KillTimer in dem Public wäre ja nicht so angebracht, denk ich mal :D


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • Mach ne Variable, die mit jedem Durchgang um eins erhöht wird.
    Sobald diese Variable 10 ist, machst di KillTimer und dann return 1; :)


    Hab das nun schon anders gelöst. :D


    Hab noch einen Timer, der nach 15 Sek aufgerufen wird, (Solange soll die Pos) ja überprüft werden, und da beende ich den Timer wieder.


    Danke euch beiden. :)


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • Kann ich es irgendwie so machen, das ich die playerid auch als " i " nutzen kann.... Ohne das ich davor eine Sleife machen muss?


    Beispiel:
    if(IsPlayerConnected(i) && !IsPlayerNPC(i) && GetPVarInt(i,"Eingeloggt") == 1)

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

    Einmal editiert, zuletzt von Eddy ()

  • -2200 ist kleiner als -2100 ...
    Und -279 ist auch kleiner als -84.
    Das Minus dreht es sozusagen um, denkt an einen "Zeit"strahl und geht dort ins Minus.
    Rechts ist größer als links.
    Im Wiki steht:
    minx -> The X coordinate for the west side of the gangzone.
    miny -> The Y coordinate for the south side of the gangzone.
    maxx -> The X coordinate for the east side of the gangzone.
    maxy -> The Y coordinate for the north side of the gangzone.


    -2200.4507, -279.5477,-2100.9177, -84.1811
    Stimmt so doch alles ;)
    Hier nochmal grafisch:
    http://www.pic2web.net/info.ph…8d0d2c9e914f682c031421675
    ps. Der Graph ist von http://www.arndt-bruenner.de/mathe/java/plotter.htm.

    Kann ich es irgendwie so machen, das ich die playerid auch als " i " nutzen kann.... Ohne das ich davor eine Sleife machen muss?


    Beispiel:
    if(IsPlayerConnected(i) && !IsPlayerNPC(i) && GetPVarInt(i,"Eingeloggt") == 1)

    http://wiki.sa-mp.com/wiki/Keywords:Directives#.23define
    Als Beispiel wird jetzt genannt:
    #define MOO 7
    Sobald du im Script MOO schreibst wird das mit 7 ersetzt.
    Nur Vorsicht ... Wenn du MOOOOOO schreibst wird der Anfang auch ersetzt -> 7OOOO (Buchstabe O, keine Null)
    Nun könntest du folgendes machen:
    #define i playerid
    Nur naja ...
    Er ersetzt dann alle Wörter die ein "i" beinhalten mit playerid.
    Als Beispiel:
    "Er ersetzt dann alle Wörter dplayeride eplayerid "playerid" beplay...."
    Ich glaube das war nicht so schwer.


    shoxinat0r:
    Für dich auch nochmal der obere Abschnitt...


    playerid steht ja eigentlich immer am Anfang. (Mir fällt spontan nichts anderes ein).
    Das hier wäre evtl. etwas:
    #define (i) (playerid)
    und
    #define (i, (playerid,
    In deinem Beispiel rot markiert:
    if(IsPlayerConnected(i) && !IsPlayerNPC(i) && GetPVarInt(i,"Eingeloggt") == 1)


    Irgendwo gibt es da dann garantiert einen Fehler, aber solange du dir das Prinzip von dem "define i" merkst kann nichts passieren.


    Mit freundlichen Grüßen
    Kevin

    Einmal editiert, zuletzt von Kevin1 ()