Probiers mal mit v:GetClass() == ''sent_ball"
 AW: Betreten eines Bereichs als Auslöser
 AW: Betreten eines Bereichs als Auslöser
				Probiers mal mit v:GetClass() == ''sent_ball"
Gruß
minifisch
 AW: Betreten eines Bereichs als Auslöser
 AW: Betreten eines Bereichs als Auslöser
				Natürlich klappt das, du wendest bloß SetVelocity falsch an (Siehe hier). GetClass() gibt dir den Namen zurück, auf egal welches Entity du das anwendest. prop_physics ist auch nur ein Entity, bloß eben "hardcoded". Hat damit also gar nichts zu tun.. (Die Funktion gibt dir also auch Namen von Entities zurück, welche selbst gecoded sind.)
Das sind beides Varianten, die funktionieren würden:
Lua Code:
for k, v in pairs( ents.FindInSphere( Vector( 0, 0, 0 ), 1000 ) ) do
if v:GetClass() == "sent_ball" then v:GetPhysicsObject():SetVelocity( Vector( 0, 0, 500 ) ) end
end
Lua Code:
for k, v in pairs( ents.FindByClass( "sent_ball" ) ) do
if <wie auch immer du jetzt letztendlich checken möchtest, ob das Entity in einem gewissen Bereich liegt> then v:GetPhysicsObject():SetVelocity( Vector( 0, 0, 500 ) ) end
end
Geändert von RP-01 (29.04.2013 um 15:47 Uhr)
 AW: Betreten eines Bereichs als Auslöser
 AW: Betreten eines Bereichs als Auslöser
				Wow, danke es funktioniert endlich
Und wieder etwas dazugelernt, danke euch !!!
Edit: Mit dem Sentball klappt es schonmal, aber mit anderen Objekten z.B. der Waschmaschine scheint es mit diesem Code nicht zu funktionieren (hab den Code natürlich angepasst), wenn ihr Tipps habt, dann nur raus damit
Geändert von Eddman (30.04.2013 um 11:51 Uhr)
 AW: Betreten eines Bereichs als Auslöser
 AW: Betreten eines Bereichs als Auslöser
				Habe es mal so probiert, aber es klappt nicht. Vermutlich unterscheidet sich die Waschmaschine vom sent mehr als ich gedacht habe. Ist es überhaupt möglich normale Objekte wie eine Waschmaschine für solche Dinge zu verwenden?
Lua Code:
for _, v in pairs(ents.FindInSphere( Vektorposition, radius )) do
if v:GetClass() == "sent_ball" then
v:GetPhysicsObject():SetVelocity( v:GetUp() + Vector(0,0,100))
elseif v:GetClass() == "models/props_c17/FurnitureWashingmachine001a.mdl" then
v:GetPhysicsObject():SetVelocity( v:GetUp() + Vector(0,0,100))
end
end
GetName() funzt leider auch nischt..
 AW: Betreten eines Bereichs als Auslöser
 AW: Betreten eines Bereichs als Auslöser
				Wieso hat es mit dem sent_ball geklappt, aber mit anderen dingen nicht? :/
 AW: Betreten eines Bereichs als Auslöser
 AW: Betreten eines Bereichs als Auslöser
				"models/props_c17/FurnitureWashingmachine001a.mdl" ist doch keine Klasse. Das ist ein Teil von 'nem Model/Mesh.
Versuch's damit:
Lua Code:
for k, v in pairs( ents.GetAll() ) do
if v:GetClass() == "sent_ball" then
v:GetPhysicsObject():SetVelocity( Vector(0,0,100) ) //Das was du hier geschrieben hattest, "v:GetUp() + Vector( 0, 0, 1000 )" macht so keinen Sinn. Die Funktion gibt die Direction nach oben -aus "Sicht" des Entities- aus. Wenn das Ding also auf dem Kopf liegt, fliegt's nicht mehr hoch.
continue //continue springt in den nächsten Schleifendurchgang. Funktioniert auch bei while- und repeat until- Schleifen
endif v:GetModel() == "models/props_c17/furniturewashingmachine001a.mdl" and v:GetMoveType() == MOVETYPE_VPHYSICS then //Hat das Entity das Model, und ist es überhaupt beweglich, sodass Velocity setzen überhaupt Sinn macht?
v:GetPhysicsObject():SetVelocity( Vector( 0, 0, 1000 ) )
end
end
Edit:
BTW: Hier elseif zu nutzen, ist unnötige Rechenarbeit. Der führt nämlich dann jedes mal noch 'nen zweiten Check durch, obwohl v:GetClass() == "sent_ball" war.
Benutze hier, wie ich, einfach eine zweite if-clause, und springe per "continue" in den nächsten Schleifendurchgang, wenn das Entity schon ein sent_ball war
Geändert von RP-01 (02.05.2013 um 16:02 Uhr)
 AW: Betreten eines Bereichs als Auslöser
 AW: Betreten eines Bereichs als Auslöser
				Ich hab zwar schon lange nixmehr mit LUA in Gmod gemacht und weiß deshalb nicht, ob das noch aktuell ist, aber...: Muss man bei einem PhysicObject nicht ApplyForceCenter verwenden?
 AW: Betreten eines Bereichs als Auslöser
 AW: Betreten eines Bereichs als Auslöser
				Nicht unbedingt. Kann man, alternativ zu Ent:SetVelocity() oder Ent:GetPhysicsObject():SetVelocity() nutzen..
SetLocalVelocity gibt's auch noch, aber ich glaube das hat die Velocity dauerhaft gesetzt.
Die anderen Befehle sollten jeweils eine Velocity zu dem entsprechenden Vektor addiert haben.
Muss ich später mal testen, was da genau der Unterschied war. Mein Code von oben funktioniert jedenfalls.
 AW: Betreten eines Bereichs als Auslöser
 AW: Betreten eines Bereichs als Auslöser
				Geändert von Eddman (02.05.2013 um 22:03 Uhr)
Please do not throw salami Pizza away