PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fragen zu Expression Gate 2?



Toffifee
11.11.2008, 18:47
Hey,
Falls ihr Fragen zu dem neuen Expression Gate 2 habt könnt ihr diese gerne hier rein posten.
Ich werde sie natürlich gerne beantworten.
Eure Toffifee...

WeltEnSTurm
11.11.2008, 18:49
Ich hab eine:
Wie geht funktioniert es? xD
/
Wie mach ich sowas wie ein if then?
if (A==1) then (B = 1) end
geht irgendwie nicht..

Toffifee
11.11.2008, 18:56
Wie mach ich sowas wie ein if then?
if (A==1) then (B = 1) end


Naja eig. brauchst du ja nur
if (A == 1) {B = 1}
machen...
Denke ich mal xD
und ja zwischen (A und den == einen Abstand lassen genauso wie danach also sieht dann so aus...

(A == 1)

Oh jaa... Ganz wichtig... (erst jetzt bemerkt sry xD)

es ist : if (A == 1) und dann eine {-Klammer...
Also : if (A == 1) {B = 1} (Weiß nicht mehr so angenehm wie beim alten xD)

Sollte gehen.. :oops:

WeltEnSTurm
11.11.2008, 18:57
Naja eig. brauchst du ja nur
if (A == 1) {B = 1}
machen...
Denke ich mal xD
und ja zwischen (A und den == einen Abstand lassen genauso wie danach also sieht dann so aus...

(A == 1)

Sollte gehen.. :oops:

Danke :D
Wieso können die nicht n Lua-Gate machen? Muss man keine extra Sprache lernen :gmod:

Specter123
11.11.2008, 18:59
Danke :D
Wieso können die nicht n Lua-Gate machen? Muss man keine extra Sprache lernen :gmod:

Ja, dann könntest du aber alles mit einer Zeile Code schaffen :gmod:

WireGod
11.11.2008, 20:52
Danke :D
Wieso können die nicht n Lua-Gate machen? Muss man keine extra Sprache lernen :gmod:

STOP! ^^ ES GIBT doch ein "Lua-Gate"... das sogennante "Moongate". Es ist noch nicht im offiziellen Wire-SVN drin, sondern kann nur extra runtergeladen werden. Schau mal hier: http://www.wiremod.com/forum/advanced-gates/5741-moongate-documentation-temporary-download.html . Habs selber noch nicht getestet, aber müsste genau das sein, was du suchst. ;)

Ach und zu der Frage wegen dem IF: Falls ihr/du noch ein else dazu haben wollt, einfach zb.

if (A == 1) {B = 1} else {B = 2}

SMILIE
12.11.2008, 23:05
Danke :D
Wieso können die nicht n Lua-Gate machen? Muss man keine extra Sprache lernen :gmod:

Jedoch is das für alle C++, Java, PHP, Javascript usw Programmierer keine Umstellung weil dort ist das überall so.

Es ist glaub ich eher nur in Scriptsprachen verbreitet das die ifs usw. so geschrieben werden, in den höheren Programmiersprachen is eigentlich die form mit den geschwungenen Klammern üblich (zuminderst ist das bei den mir bekannten Sprachen so).

monky2k6
12.11.2008, 23:12
Expression Gate 2? Das gibts? Und da ist das nicht mehr so das man Aktionen mit einem "Dash" -> einleitet?
Oh, ok. Lange nicht mehr Wiremod aktualisiert... :D

gamerpaddy
24.11.2008, 01:05
Hallo,
ich hab hier eine frage zu meinen 2 Expressiongate 2 scripts

1: ein schreib script für den console screen

@name Screib expression
@inputs KEY RESET
@outputs X Y CHAR CPARAM RESET
@persist
RESET= RESET
CHAR= KEY
CPARAM= 255
KEY == 127 == X -1
KEY == 13 == Y +1
KEY == X +1
X= 31 == Y +1
X= 31 == X 0
Y= 31 == RESET


und ein script wo auf dem digital screen ein viereck anzeigt



@name Digital screen writer
@outputs X Y G
@persist
interval(100)
X= 6
X= 7
X= 8
X= 9
X= 10
X= 18
X= 21
X= 24
X= 27
X= 30
Y= 2
Y= 3
Y= 4
Y= 5
Y= 6
Y= 6
Y= 9
Y= 12
Y= 15
Y= 18
G= 4834

:/ ingame kommen im editor keine errors,
nur funktionieren diese scripts nicht ?
also nun zur frage;
was muss ich machen das es funktioniert?

WeltEnSTurm
24.11.2008, 11:20
CJ[CSR];317549']Hallo,
ich hab hier eine frage zu meinen 2 Expressiongate 2 scripts

1: ein schreib script für den console screen

@name Screib expression
@inputs KEY RESET
@outputs X Y CHAR CPARAM RESET
@persist
RESET= RESET
CHAR= KEY
CPARAM= 255
KEY == 127 == X -1
KEY == 13 == Y +1
KEY == X +1
X= 31 == Y +1
X= 31 == X 0
Y= 31 == RESET



XD man kann nicht alles mit == lösen :P

if(key == 127){X = X - 1}
Doppelpost:
Wie macht man ein and?

@name Screib expression
@inputs KEY RESET
@outputs X Y CHAR CPARAM RESET
@persist
RESET = RESET
CHAR = KEY
CPARAM = 255
if(KEY == 32){X = X + 1}
if(KEY == 13){Y = Y + 1 && X = 1}
if(KEY > 13){X = X + 1}
if(X > 31){X = 1 && Y = Y + 1}
if(Y > 10){RESET = 1 && KEY = 1&& Y = 1}
if(Y == 1){RESET = 0}

Stoned
24.11.2008, 17:16
XD man kann nicht alles mit == lösen :P

if(key == 127){X = X - 1}
Doppelpost:
Wie macht man ein and?

@name Screib expression
@inputs KEY RESET
@outputs X Y CHAR CPARAM RESET
@persist
RESET = RESET
CHAR = KEY
CPARAM = 255
if(KEY == 32){X = X + 1}
if(KEY == 13){Y = Y + 1 && X = 1}
if(KEY > 13){X = X + 1}
if(X > 31){X = 1 && Y = Y + 1}
if(Y > 10){RESET = 1 && KEY = 1&& Y = 1}
if(Y == 1){RESET = 0}

adds sollten noch immer mit if ( KEY == 32 ) { B += 1 } funktionieren oder?

WeltEnSTurm
24.11.2008, 18:33
adds sollten noch immer mit if ( KEY == 32 ) { B += 1 } funktionieren oder?

Ich weiß, aber ich hab wegen dem &/and gefragt, was irgendwie nicht funktionieren will

Gidius
24.11.2008, 18:40
so müste es jetze gehen :


@name Screib expression
@inputs KEY RESET
@outputs X Y CHAR CPARAM RESET
@persist
RESET = RESET
CHAR = KEY
CPARAM = 255
if(KEY == 32){X = X + 1}
if(KEY == 13){Y = Y + 1}
if(KEY == 13){ X = 1}
if(KEY > 13){X = X + 1}
if(X > 31){X = 1}
if(X > 31){Y = Y + 1}
if(Y > 10){RESET = 1}
if(Y > 10){KEY = 1}
if(Y > 10){Y = 1}
if(Y == 1){RESET = 0}


with help from WeltEnSTurm

gamerpaddy
24.11.2008, 18:46
also mit if geht alles oder ?
if(EINGANG Funktion Value ){AUSGANG = VALUE} ?
und wie mach ich das mit dem viereck auf dem screen ?
was ich machen möchte:
per STRING´s buchstaben auf den digital screen projektieren.

WeltEnSTurm
24.11.2008, 18:51
CJ[CSR];317805']also mit if geht alles oder ?
if(EINGANG Funktion Value ){AUSGANG = VALUE} ?


if(input <vergleich> value){output <zuweisung> value}


CJ[CSR];317805']
und wie mach ich das mit dem viereck auf dem screen ?
was ich machen möchte:
per STRING´s buchstaben auf den digital screen projektieren.

Viel arbeit :gmod:

WireGod
24.11.2008, 23:48
CJ[CSR];317805']
und wie mach ich das mit dem viereck auf dem screen ?


Diese Expression hier,


@name Digital screen writer
@outputs X Y G
@persist // <- ist in dem Fall eigentlich sowieso unnötig,
da ja keine internen Variablen benötigt werden.
interval(100) // Das hier kann man auch ruhig höher
stellen (also eine niedrigere Zahl einsetzen), so wird
das ganze schneller angezeigt und funktioniert genau so gut.
X= 6
X= 7
X= 8
X= 9
X= 10
X= 18
X= 21
X= 24
X= 27
X= 30
Y= 2
Y= 3
Y= 4
Y= 5
Y= 6
Y= 6
Y= 9
Y= 12
Y= 15
Y= 18
G= 4834

funktioniert deshalb nicht, weil die X und Y Koordinaten GLEICHZEITIG gesetzt werden und das vorherige einfach überschreiben. Im Grunde ist die Idee ja richtig, nur muss man die ganzen Variablen nacheinander ausgeben.
Ausserdem zeichnen die Koordinaten so noch kein Viereck, da hierfür noch ein paar Seiten fehlen ;)



CJ[CSR];317805']
per STRING´s buchstaben auf den digital screen projektieren.

Wie WeltEnSTurm schon sagte, würde es doch recht viel Arbeit bedeuten. Hm, wobei ich denke, würde ich meine HoloText Expression leicht bearbeiten, würde es damit denke ich auch möglich sein, Text aus Strings dort darzustellen. Wobei was bringt das, auf die 32x32 Pixel Auflösung bekommt man doch eh maximal 2,3 Buchstaben gleichzeitig... Bei einem Console-Screen sieht die Sache schon anders aus. ;)

gamerpaddy
25.11.2008, 00:33
Diese Expression hier,


@name Digital screen writer
@outputs X Y G
@persist // <- ist in dem Fall eigentlich sowieso unnötig,
da ja keine internen Variablen benötigt werden.
interval(100) // Das hier kann man auch ruhig höher
stellen (also eine niedrigere Zahl einsetzen), so wird
das ganze schneller angezeigt und funktioniert genau so gut.
X= 6
X= 7
X= 8
X= 9
X= 10
X= 18
X= 21
X= 24
X= 27
X= 30
Y= 2
Y= 3
Y= 4
Y= 5
Y= 6
Y= 6
Y= 9
Y= 12
Y= 15
Y= 18
G= 4834

funktioniert deshalb nicht, weil die X und Y Koordinaten GLEICHZEITIG gesetzt werden und das vorherige einfach überschreiben. Im Grunde ist die Idee ja richtig, nur muss man die ganzen Variablen nacheinander ausgeben.
Ausserdem zeichnen die Koordinaten so noch kein Viereck, da hierfür noch ein paar Seiten fehlen ;)




Wie WeltEnSTurm schon sagte, würde es doch recht viel Arbeit bedeuten. Hm, wobei ich denke, würde ich meine HoloText Expression leicht bearbeiten, würde es damit denke ich auch möglich sein, Text aus Strings dort darzustellen. Wobei was bringt das, auf die 32x32 Pixel Auflösung bekommt man doch eh maximal 2,3 Buchstaben gleichzeitig... Bei einem Console-Screen sieht die Sache schon anders aus. ;)

das erste war ja nur ein test, was ich machen muss das ich mehrere pixel auf einem screen anzeigen kann.


edit. das waren meine erste expression code versuche (der editor gefiel mir :D)

Toffifee
26.11.2008, 20:22
Wie macht man ein and?

@name Screib expression
@inputs KEY RESET
@outputs X Y CHAR CPARAM RESET
@persist
RESET = RESET
CHAR = KEY
CPARAM = 255
if(KEY == 32){X = X + 1}
if(KEY == 13){Y = Y + 1 && X = 1}
if(KEY > 13){X = X + 1}
if(X > 31){X = 1 && Y = Y + 1}
if(Y > 10){RESET = 1 && KEY = 1&& Y = 1}
if(Y == 1){RESET = 0}

1.) Tut mir leid, das ich so inaktiv war xD Hatte ein paar Private Gründe

Nun zu deiner Frage:

if(KEY == 32){X = X + 1}
if(KEY == 13){Y = Y + 1 && X = 1}
if(KEY > 13){X = X + 1}
if(X > 31){X = 1 && Y = Y + 1}
if(Y > 10){RESET = 1 && KEY = 1&& Y = 1}

Ich nehme einfach mal an das du...

if(Y > 10){RESET = 1 && KEY = 1&& Y = 1}

...hier ein "and" haben willst.

Richtig sieht es folgendermassen aus:

if(Y > 10){RESET = 1 & KEY = 1 & Y = 1}

(Heißt: immer nur 1x& nicht 2x)

Hier der richtige Code:

@name Screib expression
@inputs KEY RESET
@outputs X Y CHAR CPARAM RESET
@persist
RESET = RESET
CHAR = KEY
CPARAM = 255
if(KEY == 32) {X = X + 1}
if(KEY == 13) {Y = Y + 1 & X = 1}
if(KEY > 13) {X = X + 1}
if(X > 31) {X = 1 & Y = Y + 1}
if(Y > 10) {RESET = 1 & KEY = 1 & Y = 1}
if(Y == 1) {RESET = 0}

Viel spaß beim coden xD

gamerpaddy
27.11.2008, 03:34
ah danke ich habs jetzt so gemacht (der springt immer 2 zeilen pro buchstabe nach vorne nicht eine ..

@name Screib expression
@inputs KEY
@outputs X Y CHAR CPARAM
@persist
CHAR = KEY
CPARAM = 255
if(KEY == 32){X = X + 1}
if(KEY == 13){Y = Y + 1}
if(KEY == 13){ X = 1}
if(KEY > 13){X = X + 1}
if(X > 31){X = 1}
if(X > 31){Y = Y + 1}
if(Y > 10){KEY = 1}
if(Y > 10){Y = 1}

noch ne frage: wie mach ein timer in ein expressin2 ? ich habe in der wiki schon geschaut bin aber kein milimeter weiter gekommen...

MADD-DOXX
07.03.2009, 12:11
frage zum schreib expression: die buchstben verschwinden sofort wieder, was muss ich machen, dass sie stehen bleiben

Waldi
07.03.2009, 12:47
-snip, boom-

MADD-DOXX
07.03.2009, 21:44
es würde ja wahrscheinlich mit nem 64x64 store memory gehen aber ich weis nich wie ich die daten dann auf dem bildschirm halte

R3dBuLL
13.03.2009, 15:05
Wie kann man die Geschwindkeit eines Entity bekommen?
Wenn ich entity():vel() mache bekomme ich einen Fehler: Variable overlaoded oder so ähnlich.

Außerdem würde ich gerne wissen wie ApplyOffsetForce und ApplyForce genau funktioniert. Z.B. das ein Enitiy einen folgt oder ein Entity an der selben Postion mit dem selben angles bleibt (also 0,0,0).

gamerpaddy
13.03.2009, 22:00
Wbekomme ich einen Fehler: Variable overlaoded oder so ähnlich.

den error bekommt man wen man 2 sachen an eins zuweist

aso zb.
A= 6 und
A= 2

oder versuche es mal mit :vector :entity :angle :string :wirelink usw. hinter dem persist (oder wie es heißt) dan wär der error weg

gamerpaddy
17.03.2009, 02:14
wie kann ich eine funktion einma abrufen?

ich bau immoment ein code wo den spieler aus dem auto wirft wen es ihm nicht gehört

@name Driver message
@inputs CAR:entity
@outputs
@persist
DRIVER= CAR:driver()
if(DRIVER:name() == CAR:owner():name())
{
DRIVER:hintDriver("Scannig ........ You are the owner of the car!",5)
DRIVER:hintDriver("You are not ejected!",5)
}
else
{
DRIVER:hintDriver("YOU ASSHOLE STFU AND EJECT OUT OF MY CAR!",3)
DRIVER:ejectPod()
}


nur funktioniert es nicht so wie ich will ..
wen ich interval reinmache dan schreibt der die message jede XX milisekunde
und mit timer wiederholt er sich immer
ich hab es schon mit timer("funktion",N) und stoptimer("timer") veruscht aber er stoppt so schnell das er die message nicht anzeigt ?
was kann ich da machen ?

Xasir
21.03.2009, 11:56
weis einer wie man ein oder macht

also if(A == 1 "oder" B == 3){C = 2}

beim ersten war es ja das ,

Gidius
21.03.2009, 13:47
Kann das wer in Expression 2 umschreiben ?


N@Advanced Smoother
I@Target Speed Acceleration
O@Value Active
# Activate when target has been set
~Target -> Active = 1;

# Main computation loop
first() | clk() ->
# Precomputation of inputs
!Acceleration -> Acceleration = Speed * 50 * 2;
AccLength = Speed^2 / Acceleration / 2
AccRate = min(Speed, Acceleration / 50)
# Precomputation of variables
Distance = Target - Value
Direction = Distance >= 0 ? 1 : -1
# Calculate ideal speed modifier
IdealRate = Speed * Direction
abs(Distance) <= AccLength ->
IdealRate *= sqrt(abs(Distance - Rate / 50) / AccLength);
# Calculate final speed for iteration
Rate += clamp(IdealRate - Rate, -Acceleration / 50, Acceleration / 50)
Value += Rate / 50
# Check if value has reached target
Active = abs(Rate) > AccRate
| abs(Distance) > AccRate / 50
!Active -> Rate = 0, Value = Target;;

# Schedule the main loop if active
Active -> interval(20);

Aky
16.04.2009, 19:18
Hab ein Problem mit dem Wirelink tool

habe diesen Expression 2 Code

@name stringtest
@inputs Console:wirelink
@outputs
@persist Teststring:string Counter

interval(20)

Teststring = "This is a Teststring!"

if(Counter > Teststring:length() ) {Counter = 0}

Console:writeCell(Counter*2-2,toByte(Teststring,Counter))
Console:writeCell(Counter*2-1,999) #this sets the color

Counter += 1

So.., nun benutze ich das Wirelink toll auf den Consol Screen und versuche das E2-Gate mit dem Screen zu verbinden, leider geht es nicht weil irgendein Wert auf NIL steht, auf deutsch, da klappt was mit dem Wirelink tool nicht (denke ich mir zumindest, da ich auch kein wirelink output am Consol Screen habe)

Danke für die hilfe (hab gesucht und nichts gefunden!)

Joogle
17.04.2009, 15:38
Ich habe mich auch mal mit E2 porbiert, doch es gibt i-wie ein Problem mit den "{" Klammern, d.h. da gibt er einen Fehler aus:


@name VehicleCode
@inputs W A S D
@outputs TRight TLeft TBack
@persist D

If (W == 1) {TBack = 1}
Else {TBack = 0}
If (S == 1) {TBack = -1}
Else {TBack = 0}
If (A == 1) {TRight = 1 & TLeft = -1}
Else {TRight = 0 & TLeft = 0}
If (D == 1) {TLeft= 1 & TRight = -1}
Else {TLeft = 0 & TRight = 0}

Und gibt es Verbesserungsvorschläge ?

gamerpaddy
17.04.2009, 16:16
Ich habe mich auch mal mit E2 porbiert, doch es gibt i-wie ein Problem mit den "{" Klammern, d.h. da gibt er einen Fehler aus:


@name VehicleCode
@inputs W A S D
@outputs TRight TLeft TBack
@persist D

If (W == 1) {TBack = 1}
Else {TBack = 0}
If (S == 1) {TBack = -1}
Else {TBack = 0}
If (A == 1) {TRight = 1 & TLeft = -1}
Else {TRight = 0 & TLeft = 0}
If (D == 1) {TLeft= 1 & TRight = -1}
Else {TLeft = 0 & TRight = 0}

Und gibt es Verbesserungsvorschläge ?
If (groß) -> if (klein)
Else (groß) zu else (klein)
in der ausgabe & zu einem , machen
fertig
--------------
Aky ------->
--------------
nimm das Expression 2 - wirelink tool (bei debugger , wire, gate)
klick 1 mal auf den console screen (beim 2ten mal können fehler auftretten)
da kannst du wirelink vom expression2 an den console screen wiren
--------------
Gidius ------>
--------------
schau im zeigt eure expressions thread da habe ichs schon gemacht

Aky
17.04.2009, 16:28
CJ[CSR];353673']If (groß) -> if (klein)
nimm das Expression 2 - wirelink tool (bei debugger , wire, gate)
klick 1 mal auf den console screen (beim 2ten mal können fehler auftretten)
da kannst du wirelink vom expression2 an den console screen wiren


hatte ich ja gemacht aber hat nicht funktioniert
hab dann mal den rechner neu gestartet und es funzt.....

Chelebi
10.08.2009, 21:27
Ich weiss dieser Thread ist schon etwas älter möchte aber keinen neuen auf machen.

Ich habe das problem das immer irgenteiner meine Vehicles klaut -.-
ein freund sachte mir wen ich nen pod controler und den E2 dran machen kann ich alles so einstellen das
wen nicht der Owner also ich drinne sitzt er raus geschmissen oder gekillt wird.

Meine Frage ist nun wie muss mein E2 aussehen damit ich sowas machen kann ?


Ich hoffe ihr könnt mir helfen.

Waldi
10.08.2009, 22:41
Der müsste so aussehen:

@name Test
@inputs Player:entity
@outputs
@persist
@trigger all

interval(5)
if(Player:owner()) {} else {Player:killPod()}
Dann "Player:entity" beim Adv.Pod auf "Entity [ENTITY]" wiren.
Geht nicht auf Server, die Prop protection haben.

€: Korrigiert mich bitte, wenn ich was falsch gemacht hab. Ich bin Expression 2 Anfänger.

Chelebi
10.08.2009, 22:50
Danke werd ich mal testen ob es auf meinem server fungtioniert werde dan bescheit sagen.

EDIT: Nein fungtioniert leider nicht ich bekomme auch mit dem debugger keine veränderungen und es können noch alle in das vehicle

EDIT2: Ich habe jetzt was geändert unzwar ist es jetzt so
@name Test
@inputs Player:entity
@outputs
@persist
@trigger all

interval(5)
if(Player == owner()) {} else {Player:killPod()}

aber jetzt sterben alle sogar ich wen wir das vehicle betreten

frog
13.08.2009, 17:26
geht vllt das?(bin selber noch ein Anfänger:()

@name Test
@inputs Player:entity
@outputs
@persist
@trigger all

interval(5)
if(Player:owner() ==1) {} else {Player:killPod()}

TrAx
02.10.2009, 14:37
Hallo,

ich habe eine Frage zu dem folgenden EX2 Code:


@name
@inputs S:wirelink Keyboard
@outputs Keyboard
@persist String:string
@trigger all

if(first()) {
S:writeCell(2041,1)
}

if(Keyboard & ~Keyboard) {
String += toChar(Keyboard)
}

S:writeString(String,1,1,255255255,0,0)

if(Keyboard == 13 ) { #Cleart den Screen und den String
S:writeCell(2041,1)
String = ""
}


Und zwar kann ich mithilfe der ENTER-Taste den Bildschirm und den String clearen. Nun würde ich aber gerne mit der Taste "Nach Links Löschen (ANSI: 127)" den letzten Charakter vom String und dem Screen (Console) entfernen, kann mir jemand dabei helfen?

Ley-V
04.10.2009, 11:23
CJ[CSR];317549']Hallo,
ich hab hier eine frage zu meinen 2 Expressiongate 2 scripts

1: ein schreib script für den console screen

@name Screib expression
@inputs KEY RESET
@outputs X Y CHAR CPARAM RESET
@persist
RESET= RESET
CHAR= KEY
CPARAM= 255
KEY == 127 == X -1
KEY == 13 == Y +1
KEY == X +1
X= 31 == Y +1
X= 31 == X 0
Y= 31 == RESET


und ein script wo auf dem digital screen ein viereck anzeigt



@name Digital screen writer
@outputs X Y G
@persist
interval(100)
X= 6
X= 7
X= 8
X= 9
X= 10
X= 18
X= 21
X= 24
X= 27
X= 30
Y= 2
Y= 3
Y= 4
Y= 5
Y= 6
Y= 6
Y= 9
Y= 12
Y= 15
Y= 18
G= 4834

:/ ingame kommen im editor keine errors,
nur funktionieren diese scripts nicht ?
also nun zur frage;
was muss ich machen das es funktioniert?

wirelink ftw
funtzt ungefähr so:


@name Wirelink Console Screen
@inputs A:wirelink
A:writeString("Hallo",1,1)
A:writeString("Lol",1,2)
A:writeString("Der Owner hats kappiert",(1,3)


A:writeString(String,Zeile,Spalte)

Achso der input wirelink muss an den output wirelink vom console screen.
Doppelpost:

Danke werd ich mal testen ob es auf meinem server fungtioniert werde dan bescheit sagen.

EDIT: Nein fungtioniert leider nicht ich bekomme auch mit dem debugger keine veränderungen und es können noch alle in das vehicle

EDIT2: Ich habe jetzt was geändert unzwar ist es jetzt so
@name Test
@inputs Player:entity
@outputs
@persist
@trigger all

interval(5)
if(Player == owner()) {} else {Player:killPod()}

aber jetzt sterben alle sogar ich wen wir das vehicle betreten

Du hast den Pod als entity...
wenn dann musst du:

interval(5)
if(Pod:driver() == owner()){} else {Pod:killPod()} # Falls des nit funtz musste anstatt dirver() passenger() nehmen

Fighter_Zero
05.10.2009, 19:32
Weiß einer wie ich Strings aus mehreren Buchstaben in Buchstaben umformatiere die alle dann einen eigenen String bilde.?

TrAx
05.10.2009, 21:05
Einen eigenen String bilden? Du möchtest also, dass aus einem String mehrere Strings entstehen und daraus wieder einen String?

Zunächst mal brauchst du nichts unformatieren. Ich persönlich würde zu einem Array raten, dort kannst du relativ einfach einzelne Strings durch eine Schleife oder spezielle Anweisung verteilen.

Erstellen kannst du ein String-Array wiefolgt:


String = "Das,wird,ein,Array":explode(",") #In der Klammer gibst du also an, womit getrennt wird. Es würde auch ein Leerzeichen (" ") gehen.


Durch die Funktion ":explode(",")" weist du durch das Trennzeichen "," den String in einem Array zu. Beim o. g. Beispiel würde das dann so aussehen:

String:string(1) = "Das"
String:string(2) = "wird"
String:string(3) = "ein"
String:string(4) = "Array"


Naja und das ganze in einen neuen String setzen oder so geht dann so:

String:string(N) #Du schreibst also entsprechen Name:Typ(NUMMER IM ARRAY) und kannst somit alles im Array herausnehmen.

Also:

StringZwei = String:string(1) + String:string(2) usw.


EDIT: Ich habe es so noch nicht getestet, habe es nur Theoretisch erfasst. Also müsstest du schauen ob es so funktioniert.

Hidden Evil
26.12.2009, 22:32
Ich buddel mal den Thread aus, denn ich hänge seit Stunden an einer Idee, die ich nicht umsetzen kann, denn ich habe trotz mehrmaligem Lesen der E2-Wiki und meinem krampfhaften Versuch, mit meinem bescheidenem Englisch das Wiremod-Forum durchzusuchen keinen Ansatz gefunden.

Der Hintergrund: Ich möchte alle Entitys in der Nähe meines E2-Chips ermitteln und mir 2 ganz bestimmte rauspicken und in 2 Variablen ablegen. Nämlich einen Asgard-Teleporter und ein wired Numpad.

Meine Ansatz:

runOnTick(1)
findInSphere(entity():pos(),50)
List=findToArray()


Mit Var1=List[1,entity] kann ich nun das naheste Entity ermitteln und mit Var2=List[2,entity] das nächste, soweit ok. Aber das kann sich durch Zufall ja mal ändern, dass die vertauscht sind oder gar etwas anderes in den Such-Bereich gerät.

Leider konnte ich nirgendwo nun rauslesen, wie man ein komplettes Array nach bestimmtem Inhalt durchsuchen kann, also dass ich nach "transporter" und "gmod_wire_numpad" suchen kann und die dazugehörigen Indizes bekomme. Dazu kommt noch, dass ja immer noch vorher eine ID im Namen steht, die sich ebenfalls unter Umständen verändert.

Ich bin sicher, die Lösung ist so simpel dass ich hinterher in den Boden versinken könnte, aber ich komme nicht drauf. Kann mir da jemand weiterhelfen?

_______________________

Hat sich erledigt, ich bin nun selbst darauf gekommen. War wirklich so einfach, dass ich schreien könnte.

Für, die, die es wissen möchten und ggf. gebrauchen können:


Count=1,IndexT=0,IndexN=0
while(Count<=List:count()){
if (List[Count,entity]:type()=="transporter"){
IndexT=Count}
if (List[Count,entity]:type()=="gmod_wire_numpad"){
IndexN=Count}
Count++
}
Teleporter=List[IndexT,entity]
Numpad=List[IndexN,entity]

Clarity
29.12.2009, 17:33
@ 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:


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

Hidden Evil
29.12.2009, 18:01
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

Clarity
29.12.2009, 19:06
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.

theploo010
29.12.2009, 19:16
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

Hidden Evil
29.12.2009, 19:41
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 ;)


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?

theploo010
29.12.2009, 20:00
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?

Clarity
30.12.2009, 02:11
@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

kartoffel
30.12.2009, 03:02
E2 ist erweiterbar, daher gibt es prinzipiell noch sehr viel mehr Zeug.

gamerpaddy
30.12.2009, 10:35
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:

registerFunction("setAlpha", "e:n", "", function(self, args)
local op1, op2 = args[2], args[3]
local rv1, rv2 = op1[1](self, op1), op2[1](self, op2)
if !validEntity(rv1) then return end
if !isOwner(self, rv1) then return end

if rv1:IsPlayer() or rv1:IsWeapon() then return end

local r,g,b = rv1:GetColor()
rv1:SetColor(r, g, b, Clamp(rv2, 0, 255))
end)

mit dem austauschen
registerFunction("setAlpha", "e:n", "", function(self, args)
local op1, op2 = args[2], args[3]
local rv1, rv2 = op1[1](self, op1), op2[1](self, op2)
if !validEntity(rv1) then return end
if !isOwner(self, rv1) then return end

local r,g,b = rv1:GetColor()
rv1:SetColor(r, g, b, Clamp(rv2, 0, 255))
end)


wen man alle spielerunsichbar machen will löscht die linie
if !isOwner(self, rv1) then return end

theploo010
30.12.2009, 10:55
@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

gamerpaddy
30.12.2009, 13:04
ja es passiert cleintside aber die e2 funktion geht nur serverside

Clarity
30.12.2009, 13:59
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/


@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

Hidden Evil
30.12.2009, 15:18
-gelöscht, habe die 6. Seite übersehen-

Quabit
30.12.2009, 17:53
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:



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.



if(!Entity & findCanQuery()) {
findByModel("models/props_junk/sawblade001a.mdl")
Entity = findClosest(entity():pos())
}

Clarity
30.12.2009, 18:31
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)

Quabit
30.12.2009, 19:52
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".


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 ;)



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 ;)

Clarity
30.12.2009, 20:03
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:

@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(),Fo rward=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=Wire_Expression2:Examples#Gyroscopic_Stabil ization_.28by_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.)

Quabit
30.12.2009, 21:44
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.


@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 ;)

Clarity
30.12.2009, 22:12
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...

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. :)

Quabit
30.12.2009, 22:17
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.

Clarity
31.12.2009, 00:11
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.

Clarity
01.01.2010, 21:15
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.



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)
}
}
}

Quabit
03.01.2010, 10:42
Du könntest direkt alle NPC´s in einem Array speichern und das dann abarbeiten.



@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
}

Clarity
03.01.2010, 12:32
Danke für den Tipp, klingt gut, aber geht immer noch nicht so richtig.

Ich hab mal ein ganz kleines E2 zum testen geschrieben:


@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?

Clarity
24.01.2010, 18:03
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

Sk3y
01.02.2010, 04:26
Darauf kann bitte jeder antworten.

Ich möchte gerne mehrere Entitys zusammenfassend einen befehl geben.


@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

minifisch
04.02.2010, 16:59
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

1mannlan
16.02.2010, 18:52
Normal müsste das auch ohne gehen. Kannich vllt mal den Code sehen?
(Wenn dus nicht schon gelöst hast...)

Mitsuma
03.03.2010, 17:19
Hier mal ein vllt. etwas schwereres Problem:



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


Das macht das Prop zur Zeit nur:
http://www.abload.de/img/unbenannt-1bxdt.png

Dass soll er aber machen:
http://www.abload.de/img/unbenannt-2dbij.png

Ein Video zu Verdeutlichung:

http://www.youtube.com/watch?v=EQRFhPZ_Vrg
http://www.youtube.com/watch?v=EQRFhPZ_Vrg