Kreis um ein Object absperren

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
  • Hallo :D
    Wollte mal fragen, ob es möglich ist einen Kreis so wie bei SetPlayerWorldBounds abzusperren. Ich habe ein Object und möchte, dass wenn man in die Nähe des Objects kommt nach hinten geschleudert wird. Ähnlich wie SetPlayerWorldBounds nur dass ich dabei außerhalb des Kreises bin. Das muss doch mit SetPlayerVelocity machbar sein... Man müsste nur i-wie ausrechnen in welche Richtung der Spieler fliegen soll...


    Hoffe das jemand ne Idee hat :)

  • Ja mit wegschleudern weiß ich jetzt nichts, aber so kannst dus machen:
    Eben in nen Timer. Nicht in OnPlayerUpdate: Viiiiiel zu Ressourcenverschwendent. Davon kann ich nen Lied singen...
    if(IsPlayerInRangeOfPoint(playerid, range, posx, posy, posz)
    {
    SetPlayerPos(playerid, x,y,z);
    }
    posx, posy und posz sind dabei die Koordinaten für das Objekt. Und x,y und z die Koordinaten, zu denen der Player Teleportiert wird.


    EvilToast.

  • Danke aber: Ich weiß das ja schon ^^ ich will eher dass der Spieler vom Object weggeschleudert wird. Dazu müsste ich i-wie errechnen in welcher Richtung das Object ist damit ich den Spieler in die entgegengesetzte Richtung schleudern/porten kann :/

  • Genau das ist mein Problem :/ Ich glaube ^^ dass ich es geschafft hab, den Winkel vom Spieler zum Object auszurechnen (mit atan :D) aber weiß nicht ob mir das was bringt. Immer wenn ich ne Idee hab wies gehen könnte merk ich das das doch nicht geht :/

  • Öhh vielleicht so:
    new Float:angle;
    GetPlayerFacingAngle(playerid, angle);
    SetPlayerFacingAngle(playerid, angle+180);
    // So wird er schon mal umgedreht^^ Dann musste nurnoch das mit der Velocity hinkriegen xD Ich weiß nicht sehr hilfreich^^ Aber vllt bringts ja bisschen was^^

  • if(IsPlayerInAnyVehicle(playerid))
    {

    new vID, Float:Xvelo, Float:Yvelo, Float:Zvelo, Float:rot;
    vID = GetPlayerVehicleID(playerid);
    GetVehicleVelocity(vID, Xvelo, Yvelo, Zvelo);
    GetVehicleZAngle(vID, rot);
    SetVehicleZAngle(vID,rot+180);
    Xvelo=Xvelo+(floatcos(rot+90, degrees)*1.5);
    Yvelo=Yvelo+(floatcos(360-rot, degrees)*1.5);
    SetVehicleVelocity(vID, Xvelo, Yvelo, Zvelo);
    return 1;
    }
    Ist ungetestet!
    Es wird herausgefunden in welche Richtung das Fahrzeug guckt.
    Dann dreht sich das fahrzeug um 180 ° und dürfte dann "weggeschleudert" werden.
    Arbeitet im Prinzip wie boost :D :thumbup:
    Das ganze einfach in der Abfrage bei if(IsPlayerInRangeOfPoint(...)
    eintragen.
    Fertig :thumbup:

  • Das zeigt ja nur in welche Richtung der Spieler guckt ^^ wenn er aber nicht zum Object guckt ist das ja auch falsch. Ich könnte den Spieler aber aufs Object gucken lassen ist aber nicht die beste lösung :/


    EDIT:
    @S.T.U.N.T.


    jetzt müsste das ganze nurnoch so gehen, dass ich nicht zum Objekt gucken muss :) vll. weiß ja jemand weiter