Danke @Bonus, es funktioniert super (ich hab ein wenig zu kompliziert gedacht)
#Erledigt
Beiträge von TenderDishes
-
-
@Bonus Dein Vorschlag versuch ich jetzt mal umzusetzen
//Edit Meinst du das so?
Lua
Alles anzeigenlocal diff = 0 function getRotDiff() _,_,rotz = getElementRotation( rotveh ) diff = rotz1-rotz rotation = rotation+diff outputChatBox("Rot: "..rotz) outputChatBox("Rotation: "..rotation) if diff > 300 and rotz < 100 then --rotation = rotation+360 else --rotation = rotation end rotz1 = rotz diff = 0 end
-
@Jusonex Müsste ich dann nicht mit der Drehdauer und der Drehgeschwindigkeit berechnen, ob ein Wagen sich 90° gedreht hat?
-
Lua
Alles anzeigenfunction drehcheck() removeEventHandler("onClientRender", getRootElement(), calculateRotationRender) colli = false _,_,endrot = getElementRotation(rotveh) --outputDebugString("endrot:"..endrot) disrot = math.abs(startrot-endrot) if math.abs(lastdis-disrot) >= 100 or rotplus360 or rotminus360 then lastdis = disrot if math.abs(startrot-(endrot+360)) < 100 or rotplus360 then disrot = math.abs(startrot-(endrot+360)) rotplus360 = true elseif math.abs(startrot-(endrot-360)) < 100 or rotminus360 then disrot = math.abs(startrot-(endrot-360)) rotminus360 = true end else lastdis = disrot end if disrot >= 90 and not rot90 then outputChatBox("90° Drehung") rot90 = true punkte = 10 end timer = false lastdis = 0 rotplus360 = false rotminus360 = false if punkte > 0 then --Punkte vergeben end punkte = 0 end
Lua
Alles anzeigenlocal function vehcollision_func (theHitElement, force, bodypart, collisionX, collisionY, collisionZ, normalX, normalY, normalZ, hitElementForce, model) if theHitElement then if source == getPedOccupiedVehicle(getLocalPlayer()) and getElementType(theHitElement) == "vehicle" --[[and getVehicleOccupant(theHitElement) ]]and getElementType(source) == "vehicle" and not colli and not timer then colli = true _,_,startrot = getElementRotation(theHitElement) rotveh = theHitElement addEventHandler("onClientRender", getRootElement(), calculateRotationRender) addEventHandler("onClientRender", getRootElement(), calculateLoopRender) timer = setTimer(drehcheck, 1750, 1) end end end addEventHandler("onClientVehicleCollision", root, vehcollision_func)
Ein wenig unnötiger Balast ist rausgenommen, daher kann es sein, dass ein end oder ähnliches nicht passt
@Bonus, PewX -
Guten Tag Community,
ich habe ein kleines Problem mit der Differenzberechnung zwischen 2 Rotationen in der GTA Spielwelt. Das Problem entsteht dadurch, dass bei Richtung Norden die Funktion setElementRotation von 360 auf 0 springt. Der Verwendungszweck ist hierbei ein Autominigame, wobei 90°-Drehungen Punkte geben sollen. Bis jetzt habe ich es nicht gescheit geschafft an eine funktionierende Lösung zu gelangen. Meine jetzigen Versuche haben clientseitig bei jedem Frame die Differenz berechnet und diese für ein bestimmte Zeit zusammen addiert.
Danke fürs durchlesen und den Versuch zu helfen
Tender