-
AW: Fragen zu Expression Gate 2?
@ Hidden Evil:
Du hättest die Entities ja nicht einmal in ne Liste schreiben müssen, wenn du nur die IDs
von Numpad und Teleporter willst, wäre es doch auch so gegangen:
PHP-Code:
for (I = 0, findInSphere(entity():pos(),50)) {
if (findResult(I):type()=="transporter"){
IndexT=I
Teleporter=findResult(I)
}
if (findResult(I):type()=="gmod_wire_numpad"){
IndexN=I
Numpad=findResult(I)
}
}
__________________________________________________ __________________________
Egal, ich hab auch ne Frage:
Gibt es bei E2 nicht mehr möglichkeiten Entities zu manipulieren als diese hier?
http://wiki.garrysmod.com/?title=Wire_Expression2#Color
Gibts da nicht noch was mit Thruster, Weld oder irgendwelche der anderen Standard Gmod Tools?
Nur Färben und Materials ändern ist auf dauer öde...
-
AW: Fragen zu Expression Gate 2?
Danke Dir :)
Was mir noch einfällt wäre E:applyForce(V), damit kann man Gegenstände zum angegebenen Punkt "bewegen". Funktioniert nur leider nicht mit NPCs und Playern :D
-
AW: Fragen zu Expression Gate 2?
Danke mal, ist ganz nützlich ;)
Aber der Vektor V gibt hier nicht den Punkt an, zu dem das Objekt bewegt wird,
sondern die Kraft wirkt in richtung des Vektors auf das Objekt.
-
AW: Fragen zu Expression Gate 2?
Gibt es keine Möglichkeit, sich selbst unsichtbar zu machen? Ich kann meinen Alpha Channel nicht verstellen...
Habe schon owner():setColor(255,255,255,0) und owner():setAlpha(0) und das selbe mit 1 probiert, und mit 20, aber immer das selbe Resultat: man bleibt sichtbar, der Alpha Channel auf 255... Gibt es eine Möglichkeit das zu umgehen? Bitte keine Kommentare wie: "Mach doch von den Materials das vol_light001, das ist doch fast das selbe..." oder so ;D
-
AW: Fragen zu Expression Gate 2?
Zitat:
Zitat von
Clarity
Aber der Vektor V gibt hier nicht den Punkt an, zu dem das Objekt bewegt wird,
sondern die Kraft wirkt in richtung des Vektors auf das Objekt.
Von mir aus auch so, funktionieren tut es trotzdem ;)
Zitat:
Zitat von
theploo010
Habe schon owner():setColor(255,255,255,0) [...] probiert
Ich hätte jetzt vorgeschlagen, mal alles auf 0 zu setzen, aber das macht den Owner auch nur raabenschwarz und nicht auch noch unsichtbar :(
Scheint wieder eine der Funktionen zu sein, die auf Player nicht anwendbar sind. Oder hat noch wer eine Idee?
-
AW: Fragen zu Expression Gate 2?
Aber wie funktionieren dann die "Cloaking Devices", wie z.B. aus dem Stargate-Pack?
Ich meine, die sind zwar in Lua gecoded, aber Lua ist doch fast so, wie E2, oder?
-
AW: Fragen zu Expression Gate 2?
@theploo010:
Es gibt hier doch n extra LUA Unterforum oder?
Wenn das LUA ist, warum frägst du dann nicht direkt da nach?
(Ich könnte dir leider ohnehin nicht helfen)
Andere Frage:
Sind hier denn alle möglichen E2 Funktionen aufgelistet, oder gibt es noch mehr?
http://wiki.garrysmod.com/?title=Wire_Expression2
-
AW: Fragen zu Expression Gate 2?
E2 ist erweiterbar, daher gibt es prinzipiell noch sehr viel mehr Zeug.
-
AW: Fragen zu Expression Gate 2?
ja und wen der unsichbar mach code nicht funktionniert sagt dem owner der soll die datei
garrysmod/adons/wire/lua/entitys/gmod_wire_expression2/core/color.lua verändern
und das:
mit dem austauschen
wen man alle spielerunsichbar machen will löscht die linie
-
AW: Fragen zu Expression Gate 2?
@Clarity:
Nene, es ging hier schon um E2, ich wollte nur sagen, das es mit SWeps möglich ist :gmod:
@CJ:
Sieht schonmal vielversprechend aus :D
Aber was meinst du mit dem "alle Spieler unsichtbarmachen"? Ist das nicht eine lokale Änderungß Also Client-Side?
Grüsse
-
AW: Fragen zu Expression Gate 2?
ja es passiert cleintside aber die e2 funktion geht nur serverside
-
AW: Fragen zu Expression Gate 2?
Ich habe ein schwebendes, sich drehendes Sägeblatt gebaut.
Später soll es dann auch noch NPCs angreifen, aber das kommt noch.
Wie schaffe ich es, dass ich die rotationsgeschwindigkeit begrenze?
Es rotiert immer schneller und irgendwann verlässt der E2 chip dann das Sägeblatt.
applyTorque kleiner machen bringt nichts, dann dauert es nur länger bis es passiert.
http://www.wegame.com/watch/sawblade-problem/
PHP-Code:
@name SawBlade
@inputs
@outputs
@persist Entity:entity
@trigger
runOnTick(1)
findByModel("models/props_junk/sawblade001a.mdl")
Entity = findClosest(entity():pos())
Entity:applyTorque(vec(0,0,-10) * Entity:mass())
Entity:applyForce(vec(0,0,9) * Entity:mass())
entity():applyTorque(vec(0,0,-10) * entity():mass())
entity():applyForce(vec(0,0,9) * entity():mass())
# by Clarity
-
AW: Fragen zu Expression Gate 2?
-gelöscht, habe die 6. Seite übersehen-
-
AW: Fragen zu Expression Gate 2?
Zitat:
Zitat von
Clarity
Es rotiert immer schneller und irgendwann verlässt der E2 chip dann das Sägeblatt.
Lass die Scheibe nur beschleinigen, wenn sie zu langsam ist:
PHP-Code:
if(Entity:angVel():yaw() < 1000) {
Entity:applyTorque(vec(0,0,-10) * Entity:mass())
} else {
Entity:applyAngForce(-Entity:angVel()*10) # Bremst das Prop, ist aber vielleicht nicht unbedingt nötig.
}
Was mir noch auffällt: Du lässt jeden Tick das Sägeblatt suchen. Die find-funktionen sind recht rechenintensiv, deswegen wäre es besser, das du nur einmal danach suchst, und es dann speicherst.
PHP-Code:
if(!Entity & findCanQuery()) {
findByModel("models/props_junk/sawblade001a.mdl")
Entity = findClosest(entity():pos())
}
-
AW: Fragen zu Expression Gate 2?
Erstmal danke für den Tipp mit findByModel, wusste ich gar nicht, dass das besonders rechenintensiv ist,
zudem blieben meine fps (bisher) immer realativ konstant.
Die Scheibe zu bremsen funktioniert allerdings noch nicht so richtig, selbst mit der else Bedingung.
Ich habe auch schon if(Entity:angVel():yaw() < 10) eingesetzt. Selbst da verlässt der Chip noch zeitweise
die Scheibe.
Sehe ich das richtig, Entity:angVel() gibt die Winkelgeschwindigkeit des Entities als "WinkelVektor" (Angle) zurück. Die Funktion yaw() sorgt dafür, dass nur der winkel in der horizontalen Ebene genommen wird?
Edit:
Problem gelöst! Die Scheibe wird ja mit einem negativen Drehmoment beschleunigt, also ist auch yaw negativ.
Die if-Bedingung muss dann also so lauten: if(Entity:angVel():yaw() > -1000)
-
AW: Fragen zu Expression Gate 2?
Zitat:
Zitat von
Clarity
Erstmal danke für den Tipp mit findByModel, wusste ich gar nicht, dass das besonders rechenintensiv ist,
zudem blieben meine fps (bisher) immer realativ konstant.
Es gibt die Convars wire_exp2_entFindRate und wire_exp2_playerFindRate, womit man einstellt, wie oft gesucht werden kann. Mit findCanQuery() kann man gucken, ob man gerade suchen "darf".
Zitat:
Zitat von
Clarity
Sehe ich das richtig, Entity:angVel() gibt die Winkelgeschwindigkeit des Entities als "WinkelVektor" (Angle) zurück. Die Funktion yaw() sorgt dafür, dass nur der winkel in der horizontalen Ebene genommen wird?
Genau ;)
Zitat:
Zitat von
Clarity
Problem gelöst! Die Scheibe wird ja mit einem negativen Drehmoment beschleunigt, also ist auch yaw negativ.
Die if-Bedingung muss dann also so lauten: if(Entity:angVel():yaw() > -1000)
Ups, dass hatte ich übersehen. Aber du hast es ja selber rausgefunden ;)
-
AW: Fragen zu Expression Gate 2?
Jetzt hänge ich an meinem nächsten Problem...
Ich will, dass das Sägeblatt horizontal stabilisiert wird,
aber ich bekomme das nicht hin. Ich habe schon fertige E2s gefunden, die es komplett
Winkelstabilisieren, aber das will ich ja nicht, es soll sich ja noch um die eigene Achse drehen.
zB das hier:
PHP-Code:
@name Force Test
runOnTick(1)
Temp=entity(),Entity=(Temp:getConstraints():count() > 0 ? Temp:isWeldedTo() : Temp)
Angle=-Entity:angles()*15-Entity:angVel()*2
Center=Entity:massCenter(),Right=Entity:right(),Forward=Entity:forward(),Up=Entity:up()
Entity:applyForce((vec(0,0,9.015)-Entity:vel())*Entity:mass())
Leverage=Entity:inertia():length()
Entity:applyOffsetForce( Up *Angle:pitch(),Center-Forward*Leverage)
Entity:applyOffsetForce(-Up *Angle:pitch(),Center+Forward*Leverage)
Entity:applyOffsetForce( Right*Angle:yaw() ,Center-Forward*Leverage) # will ich nicht
Entity:applyOffsetForce(-Right*Angle:yaw() ,Center+Forward*Leverage) # und das auch nicht
Entity:applyOffsetForce( Up *Angle:roll() ,Center-Right *Leverage)
Entity:applyOffsetForce(-Up *Angle:roll() ,Center+Right *Leverage)
#Entity:applyAngForce(Angle*Leverage) #This can replace the above 6 lines
http://wiki.garrysmod.com/?title=Wir...8by_chinoto.29
Wenn ich jetzt die zwei zeilen die ich nicht brauche auskommentiere, dann dreht es sich zwar wieder,
aber es ist absolut nicht mehr stabil in roll und pitch...
Ist es überhaupt möglich, nur in pitch und roll zu stabilisieren, oder geht das nur, wenn ich auch yaw stabilisiere?
(Mein alternativplan wäre es, das Sägeblatt über eine Axis mit einer kleinen komplett stabilisierten Platte zu verbinden. Aber diese Lösung fände ich nicht so schön, wie wenn alles in einem Chip geht.)
-
AW: Fragen zu Expression Gate 2?
Zitat:
Zitat von
Clarity
Ist es überhaupt möglich, nur in pitch und roll zu stabilisieren, oder geht das nur, wenn ich auch yaw stabilisiere?
Ich hab gerade was gebastelt. Sägeblatt spawnen und per Entity-Marker mit dem E2 verbinden. Das Sägeblatt schwebt 100 units über der E2, Pitch und Roll werden gehalten und es dreht sich.
PHP-Code:
@name
@inputs E:entity
@outputs
@persist
@trigger
runOnTick( 1 )
To = entity():pos() + vec( 0, 0, 100 )
V = ( To - E:pos() - E:vel() ) * E:mass()
A = ( -E:angles() - E:angVel() ):setYaw( 0 ) * E:mass()
R = ang( 0, 1000, 0 )
E:applyForce( V )
E:applyAngForce( A )
if( E:angVel():yaw() < 1000 ) {
E:applyAngForce( R )
}
Es gibt mehrere Wege das zu realisieren, dass hier ist nur einer ;)
-
AW: Fragen zu Expression Gate 2?
Hey danke,
das ist zwar noch nicht genau das was ich brauche,
aber wenn ich das verstanden habe wird es mir weiterhelfen denke ich.
PS: Was meinst du mit dem "Entity-Marker"? Ich habs mit dem Wire Tool verbunden...
Spoiler:
Mein bisheriger Stand noch ohne Stabilisierung
http://www.wegame.com/watch/auto-sawblade-test/
Edit:
Bei dem Versuch, die Drehzahl bei deinem E2 zu erhöhen, war es auf einmal nicht mehr stabil.
Das brachte mich auf die Idee, die Drehzahl bei meinem zu verringern, jetzt läuft auch meines stabil. :)
-
AW: Fragen zu Expression Gate 2?
Zitat:
Zitat von
Clarity
PS: Was meinst du mit dem "Entity-Marker"? Ich habs mit dem Wire Tool verbunden...
Der ist bei Wire -> Detection. Damit kannste ein Prop markieren und dann im E2 auf das markierte Entity zugreifen.
-
AW: Fragen zu Expression Gate 2?
Was gibt findByClass(S) zurück?
Bei http://wiki.garrysmod.com/?title=Wire_Expression2 steht, dass es eine Number zurückgibt,
aber was bedeutet diese Zahl? Bei mir ist sie immer 0 mit findByClass("npc*") und das egal ob NPCs gespawnt
sind oder nicht...
Edit:
Es gibt 1 zurück, wenn welche gefunden wurden, 0 wenn nicht.
Ich habe die Funktion glaube ich einfach nur öfter aufgerufen als erlaubt.
Jetzt funktioniert alles, hat sich also erledigt.
-
AW: Fragen zu Expression Gate 2?
Kann man die Zeit, die ein E2 zum finden deines Gegners braucht verkürzen?
das geht bei mir immer 1-2 Sekunden in denen das E2 noch den Vektor des gerade getöteten
NPCs anvisiert.
PHP-Code:
if (!NPC & findCanQuery()) {
NPCFound = findByClass("npc*")
NPC = findClosest(entity():pos())
}
if (NPCFound) {
if (abs(NPC:pos():z() + 40 - Sawblade:pos():z()) < 3) {
# Angreifen!
TempVec = (((NPC:pos() + vec(0,0,40)) - Sawblade:pos()):normalized()*1500 - Sawblade:vel()) * Sawblade:mass()
Sawblade:applyForce(TempVec)
}
else {
# Zuerst die Höhe anpassen
Sawblade:applyForce(vec(0,0,(NPC:pos():z() + 40 - Sawblade:pos():z())) * 2)
}
}
}
-
AW: Fragen zu Expression Gate 2?
Du könntest direkt alle NPC´s in einem Array speichern und das dann abarbeiten.
PHP-Code:
@persist Npcs:array Target:entity
interval( 2000 ) # Zb alle 2 Sekunden eine neues Array erstellen
runOnTick( 1 )
if( clk() & findCanQuery() ) {
findByClass("npc*")
Npcs = findToArray()
}
if( !Target ) {
Target = Npcs:popEntity()
} else {
# Dein Zielcode
}
-
AW: Fragen zu Expression Gate 2?
Danke für den Tipp, klingt gut, aber geht immer noch nicht so richtig.
Ich hab mal ein ganz kleines E2 zum testen geschrieben:
PHP-Code:
@name TargetTest
@inputs
@outputs
@persist NPC:entity Npcs:array
@trigger
runOnTick(1)
if (findCanQuery()) {
findByClass("npc*")
Npcs = findToArray()
}
if (!NPC) {
NPC = Npcs:popEntity()
NPC:setColor(255,0,0)
}
Selbst da dauert es 1-2 Sekunden, bis der nächste NPC rot wird, wenn ich den roten getötet habe.
Es dauert glaube ich einfach zu lange bis der Status von "NPC" sich ändert und "!NPC" wahr wird.
Kann man das irgendwie umgehen?
-
AW: Fragen zu Expression Gate 2?
PHP-Code:
holoCreate(1)
holoPos(1,NPC:pos()+vec(0,0,25))
holoScale(1,vec(1,1,1))
holoColor(1,vec(255,255,255))
holoParent(1,entity())
holoMaterial(1,"models/XQM/LightLinesGB")
# Melone suchen...
if (clk() & findCanQuery()) {
MelonFound = findByModel("models/props_junk/watermelon01.mdl")
# Gibt es noch keine Melone, muss erst eine gespawnt werden
if (MelonFound <= 1) {
Spawn = 1
findByModel("models/props_junk/watermelon01.mdl")
}
else {
Spawn = 0
}
MelonA = findToArray()
if (!Melon) {
# Die erste ist immer der spawner, die zweite daher die richtige
Melon = MelonA:removeEntity(2)
}
Melon:setColor(0,I,0) #zum test
# Ziemlich aehnlich wie oben, nur werden nun NPCs gesucht
findByModel("*")
NPCFound = findByClass("npc*")
Npcs = findToArray()
}
Warum ist das Hologramm hier über der Melone und nicht über dem NPC?
Gehören Melonen auch zur Klasse npc* ?
Wie kann ich es schaffen, dass ich in "Npcs" auch wirklich nur NPCs speicher?
http://666kb.com/i/bg3v7w84fdb68bh4r.jpg
-
AW: Fragen zu Expression Gate 2?
Darauf kann bitte jeder antworten.
Ich möchte gerne mehrere Entitys zusammenfassend einen befehl geben.
Code:
@inputs [ELV ELM ELB ERV ERM ERB]:entity
E1 = (ELM ERV ERB)
E2 = (ELV ELB ERM)
Ang1 = -(ang(E1:angles():pitch(),0,0) - ang(CH*10,0,0))*(E1:mass()*10)
E1:applyAngForce(Ang1*8 + $Ang1*13)
der Code ist nur ein Beispiel. Funktionieren tut er auch nicht.
Ist es möglich oben genanntes zu ermöglichen? Falls es von belang ist, das ganze ist mit Entity Maker und Ballsocket verbunden.
Mfg
-
AW: Fragen zu Expression Gate 2?
Ich bin schon sehr geübt im Umgang mit E2 nur möcht ich eins wissen:
Man kann mit dem E2 Gate Sounds abspielen (soundPlay()) und auch den Pitch(soundPitch()) regeln!
Wenn ich aber beides in ein E2 Gate packe und sich der Input von Pitch ändert dann wird der Sound erneut abgespielt :mad:.
Ich möchte einfach nur den Pitch neu durchrechnen lassen (pro Tick) aber der Sound soll nur einmal abgespielt werden bzw im Loop laufen (Motorensound)
lg
-
AW: Fragen zu Expression Gate 2?
Normal müsste das auch ohne gehen. Kannich vllt mal den Code sehen?
(Wenn dus nicht schon gelöst hast...)
-
AW: Fragen zu Expression Gate 2?
Hier mal ein vllt. etwas schwereres Problem:
Code:
@name Mitsuma1
@inputs W S A D Space Shift Seat:entity
@outputs CamEnable CamPos:vector CamDir:vector
@persist Prop:entity
if( first() | duped() ){
Prop = entity():isWeldedTo(1)
Prop:setMass(50000)
}
interval(50)
if(Seat:driver())
{
### ADDED cam-controller settings
CamEnable = 1
CamPos = Seat:pos() + 100*Seat:forward()
CamDir = Seat:forward()*1000
###CONTROL ANGLE
# Perform the accurate angle calculation
EyeVector = vec(Seat:forward():dot(Seat:driver():eye()),-Seat:right():dot(Seat:driver():eye()),Seat:up():do t(Seat:driver():eye()))
DesiredDirectionRight = EyeVector:cross(vec(0,0,1))
DesiredDirection = EyeVector:cross(DesiredDirectionRight)
LocalDifference1 = vec(Prop:forward():dot(DesiredDirection),Prop:righ t():dot(DesiredDirection),Prop:up():dot(DesiredDir ection))
LocalDifference2 = vec(Prop:forward():dot(DesiredDirectionRight),Prop :right():dot(DesiredDirectionRight),Prop:up():dot( DesiredDirectionRight))
DifAngle = angnorm(ang( LocalDifference1:toAngle():pitch(), LocalDifference1:toAngle():yaw(), LocalDifference2:toAngle():pitch() ))
# Apply force
Prop:applyAngForce(-ang(-240863457.64829*DifAngle:pitch() + 14042677.51405*Prop:angVel():pitch(),242567860.834 9*DifAngle:yaw() + 14009478.474246*Prop:angVel():yaw(),-19768391.033251*DifAngle:roll() + 1150772.6880888*Prop:angVel():roll()))
# Apply positional force
Force = (Space-Shift)*90000000*Prop:up() + (D-A)*90000000*Prop:right()+ (W-S)*90000000*Prop:forward() - 50000*Prop:vel()
Prop:applyForce(Force)
}
else
{
CamEnable = 0
# Cancel all angular velocity
DifAngle = ang(0,0,0)
Prop:applyAngForce(-ang(-240863457.64829*DifAngle:pitch() + 14042677.51405*Prop:angVel():pitch(),242567860.834 9*DifAngle:yaw() + 14009478.474246*Prop:angVel():yaw(),-19768391.033251*DifAngle:roll() + 1150772.6880888*Prop:angVel():roll()))
Force = -50000*Prop:vel()
Prop:applyForce(Force)
}
Zum Problem:
Der Code an sich funktioniert bereits, das Problem ist scheinbar ein Denkfehler.
Das Prop, an welches es geweldet ist lässt sich wie gewollt drehen, nach Vorne, Hinten, Oben, Unten, Links und Rechts bewegen, jedoch liegt das Problem beim Neigen.
Zur Zeit bewegt sich das Prop nur von 0° bis -180°. Es soll sich aber von 0° bis 360° bewegen können.
Der Input ist die Maus mit der man das Sichtfeld verschiebt.