Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 33

Thema: Betreten eines Bereichs als Auslöser

  1. #21
    Horst Avatar von minifisch
    Registriert seit
    02.09.2008
    Ort
    Österreich

    Standard AW: Betreten eines Bereichs als Auslöser

    Probiers mal mit v:GetClass() == ''sent_ball"
    Gruß
    minifisch

  2. Folgender Benutzer sagt Danke zu minifisch für den nützlichen Beitrag:


  3. #22
    Avatar von Eddman
    Registriert seit
    07.04.2013
    Ort
    Bayern

    Standard AW: Betreten eines Bereichs als Auslöser

    Zitat Zitat von minifisch Beitrag anzeigen
    Probiers mal mit v:GetClass() == ''sent_ball"
    Klappt nicht, soweit ich weiss gibt GetClass() nur etwas wie "prop_physics" aus. Habe es auch getestet, da passiert nichts mit meinem SentBall. Trotzdem thx. Sònst noch jemand Ideen?
    Geändert von Eddman (29.04.2013 um 13:12 Uhr)

  4. #23

    Standard 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:
    1. for k, v in pairs( ents.FindInSphere( Vector( 0, 0, 0 ), 1000 ) ) do
    2. 	if v:GetClass() == "sent_ball" then v:GetPhysicsObject():SetVelocity( Vector( 0, 0, 500 ) ) end
    3. end

    Lua Code:
    1. for k, v in pairs( ents.FindByClass( "sent_ball" ) ) do
    2. 	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
    3. end
    Geändert von RP-01 (29.04.2013 um 14:47 Uhr)

  5. Folgender Benutzer sagt Danke zu RP-01 für den nützlichen Beitrag:


  6. #24
    Avatar von Eddman
    Registriert seit
    07.04.2013
    Ort
    Bayern

    Standard 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 10:51 Uhr)

  7. #25
    Avatar von Eddman
    Registriert seit
    07.04.2013
    Ort
    Bayern

    Standard 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:
    1. for _, v in pairs(ents.FindInSphere( Vektorposition, radius )) do
    2.  
    3. 		if v:GetClass() == "sent_ball" then 
    4. 				v:GetPhysicsObject():SetVelocity( v:GetUp() + Vector(0,0,100))
    5.  
    6. 			elseif v:GetClass() == "models/props_c17/FurnitureWashingmachine001a.mdl" then
    7. 				v:GetPhysicsObject():SetVelocity( v:GetUp() + Vector(0,0,100))
    8. 		end
    9.  
    10. end

    GetName() funzt leider auch nischt..

  8. #26
    Avatar von Eddman
    Registriert seit
    07.04.2013
    Ort
    Bayern

    Standard AW: Betreten eines Bereichs als Auslöser

    Wieso hat es mit dem sent_ball geklappt, aber mit anderen dingen nicht? :/

  9. #27

    Standard 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:
    1. for k, v in pairs( ents.GetAll() ) do
    2. 	if v:GetClass() == "sent_ball" then 
    3. 		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.
    4. 		continue //continue springt in den nächsten Schleifendurchgang. Funktioniert auch bei while- und repeat until- Schleifen
    5. 	end
    6. 	if 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?
    7. 		v:GetPhysicsObject():SetVelocity( Vector( 0, 0, 1000 ) )
    8. 	end
    9. 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 15:02 Uhr)

  10. Folgender Benutzer sagt Danke zu RP-01 für den nützlichen Beitrag:


  11. #28

    Standard 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?
    Website: monky-town.de

    WildStar
    Server: Kazor
    Seite: Verbannte
    Char: Monkii (Arkanschütze)

  12. #29

    Standard 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.

  13. #30
    Avatar von Eddman
    Registriert seit
    07.04.2013
    Ort
    Bayern

    Standard AW: Betreten eines Bereichs als Auslöser

    Zitat Zitat von RP-01 Beitrag anzeigen

    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.
    Damit hast du vollkommen recht, gut zu wissen. Werde ich in Zukunft nun auch immer so machen.

    PS: Danke für deine Verbesserungen und Hilfe, ich lerne immer mehr

    Edit: Hmm, hab alles so umgeschrieben, es scheint immernoch nicht zu funktionieren, ich poste später mal meinen Code.
    Geändert von Eddman (02.05.2013 um 21:03 Uhr)
    Please do not throw salami Pizza away

Ähnliche Themen

  1. Die folgen eines nukers
    Von Master AP im Forum Bildbearbeitung
    Antworten: 3
    Letzter Beitrag: 16.08.2008, 18:24
  2. Regeln Akzeptieren beim Server betreten.
    Von computer22 im Forum Wünsche
    Antworten: 19
    Letzter Beitrag: 01.07.2008, 13:34
  3. Clanlogo auf Arm eines Combine
    Von Zulrak121 im Forum Hilfe & Support
    Antworten: 5
    Letzter Beitrag: 08.04.2008, 17:01
  4. Starten eines Listenservers
    Von Scarecrow im Forum Server
    Antworten: 30
    Letzter Beitrag: 01.07.2006, 20:46
  5. Ein Tag im Leben eines Facepunchmoderators.
    Von killuah im Forum Comics
    Antworten: 19
    Letzter Beitrag: 28.06.2006, 13:32

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •