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.