Problem mit Object Physics

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
  • Hi,
    ich habe angefangen mit dem include Objects Physics (by PeppeAC) zu arbeiten habe aber direkt ein problem. Ich habe versucht ein Object damit zu bewegen und es gibt mit mit meinen Narchichten auch an das sich das Object bewegt aber es passiert nichts ... Errors oder fehlercodes becomme ich keine.
    (Ich weiss nicht ob ich das include verlinken darf deshalb nur der name davon)


    Hier ist mein Code:

    Ich hoffe jemand kennt sich damit aus :)



    Danke
    :)

  • Hallo ciaxx,
    Benutzt du vielleicht einen Objektstreamer (z.B. Das Streamplugin)?
    Falls ja, versuch mal die Objekte nicht als Gestreamte Objekte sondern als Normale Objekte zu erstellen (CreateDynamicObject -> CreateObject)


    Mit freundlichen Grüßen,
    Firerfan

  • Vielen Dank für die Antwort.
    Ja ich verwende einen Streamer (Streamer.dll) und habe auch CreateObject verwendet (CreateDynamicObject kennt er gar nicht und gibt nen error aus).
    Gibt es sonst eine andere möglichkeit wie man Objecte in eine richtung (nicht zu einer location) bewegen kann und abfragen kann ob diese mit etwas kollidieren sodass man dann eine Action ausführen kann?

  • Ich verstehe nicht so ganz, was genau du versuchst.


    Beschreibe doch mal was eine Qualle auf der Straße mit einem Auto zu suchen hat?! :D


    Eine kleine Beschreibung wäre ganz interessant :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Die Qualle ist nur zu testzwecken da sie etwas größer ist aber ein grbäude wäre zu groß ^^ ich versuche "Projektile" zu erschaffen die Fahrzeuge beschädigen und wenn die auf etwas anderes treffen entfernt werden.

  • Okay ich habe jetzt mehrere Object durchgetestet mit collision, ohne, zerstörbar, unzerstörbar und ohne animation aber nichts. Habe testweise das obj das PHY_InitObject überall als Object verwendet aber es funktioniert immernoch nicht ... kann es sein das das ganze für 0.3.7 nicht mehr funktioniert oder bin ich einfach zu doff?

  • Beitrag von Kaliber ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Sowas habe ich tatsächlich auch gemacht für meinen Taucherjob.


    Du musst für das Fahrzeug eine "Hitbox erstellen", dafür benötigst du du Randposition deines Fahrzeuges und musst berechnen ob sich ein Objekt in der Box befindet , danach berechnest du den Endpunkt
    deines Projektils


    http://wiki.sa-mp.com/wiki/GetPlayerCameraFrontVector



    Nun kannst du mit einer For-schleife die Punkte bis zum Ziel überprüfen ob sich das Projekttil in einer dieser Hitbox befindet.



    Falls du mit einer Waffe Bsp der Deagle Projektile schiesen möchtest geht dfas auch wesentlich einfacher ^^

  • Okay vielen dank doch bei meinen riesen script künsten geht es schon beim berechnen der Hitbox los. Ich bräuche ja (soweit ich mir das vorstellen kann) 3 Punkte um einen Würfel/Quader zu berechnen, ich würde für ein Fahrzeug dann 2 Quader berechnen (unteres und oberes teil des Fahrzeuges da das dach ja kleiner ist).
    1. Problem: Wie berechnet man sowas bzw überprüft ob eine Location innerhalb dieses bereiches ist? Mir fällt nichs ein muss man dann irgendwie die differenz ausrechnen oder so?
    Dann muss ich das Projektil Object ja erstmal in eine richtung bewegen, also in die Fahrzeug richtung (glaube das müsste GetVehicleZAngle sein) aber bei MoveObject muss man ja eine ziel location angeben. Wie kann man sowas also machen? Oder gibt es eine möglichkeit einen Punkt zu berechnen der sagen wir 30m vor dem Fahrzeug liegt (als in fahrtrichtung) und das man das object dann zu diesem Punkt bewegt und, falls es auf dem weg in keiner hitbox landet, am ende entfernt?


    Also ich glaube dieses berechnen von irgendwas ist das was mir am meisten probleme macht da ich von sowas nicht wirklich die ahnung habe, hättest du eventuell einen Codeschnipsel wo ich mir angucken kann wie man sowas berechnet und abfragen kann? Oder vielleicht auch ein Tutorial oder sowas


    //EDIT: Mir fällt gerade ein das für einen 3 dimensionalen Körper (wenn man sich nur auf x, y, z bewegen kann) auch 2 Punkte reichen würden aber das berechnen ist halt so ne sache ...

  • ...verstehe zwar nicht wieso du meinem PNs und alles andere von mir ignorierst...aber okay.


    Um z.B. die Koordinaten 30m vor deinem Auto zu bekommen, dafür sieht der Code so aus:


    C
    new Float:x,Float:y,Float:z,Float:a;
    GetVehiclePos(veh,x,y,z),GetVehicleZAngle(veh,a);
    const Float:distance = 30.0; //30m vor dem Auto
    x += distance * floatsin(-a, degrees);
    y += distance * floatcos(-a, degrees);
    //Jetzt hast du die x,y,z Positionen für 30m vor dem Auto


    Desweiteren eine Fahrzeug Hitbox, kannst du so machen, ich bin mal so freundlich und gebe dir direkt eine Funktion:


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Beitrag von Kaliber ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Erstmal kann ich dir sagen das der gepostete Code von Kaliber zwar ein stückweit nützlich ist aber einen Fehler beinhaltet und zwar wäre die Hitbox bei einer rotation des Fahrzeuges verschoben.


    Was das ganze mit MoveObject angeht , da führst du erst die Kalkulation aus und lässt danach das Objekt zum Punkt bewegen nach der Bewegung des Objektes wird OnObjectMoved aufgerufen da kannst es löschen.


    Wie bereits oben genannt benutzt du am besten eine for-schleife was die Distanz angeht


    - Ich würde dir den Code gerne geben jedoch ist es mir von seitens YRP nicht gestattet dies zu tun :/

    Einmal editiert, zuletzt von IPrototypeI ()