|
 |
Laufgeschwindigkeit |
serthy
Codemeister
  
Dabei seit: 29.07.2010
Beiträge: 628

|
|
trigger_multiple in die map mit KVP : targetname/soulsand_trigger
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
|
init()
{
// alle trigger mit KVP : targetname/soulsand_trigger in ein array schreiben
trigger = getentArray( "soulsand_trigger" , "targetname" );
// alle einzelnen trigger rufen die Think()-funktion auf
for( i = 0 ; i < trigger.size ; i++ )
{
triggers[i] thread soulSandThink();
}
}
soulSandThink()
{
// self = ein trigger aus dem array
while( isDefined( self ) ) //solange es den trigger gibt...
{
self waittill( "trigger" , player ); // ...wartet er bis er von einem spieler ausgelöst wird
// falls der spieler am leben ist, soll er schneller laufen (soulSandTrigger()-funktion aufrufen)
// falls der spieler schon im trigger ist, ignore...
if( isAlive( player ) && player.sessionstate == "playing" && !isDefined( player.soulsandtrigger ) )
player thread soulSandTrigger( self );
// mit "thread" rufst du die funktion glaichzeitig auf, würde das fehlen wartet diese funktion solange bis die andere fertig ist
}
}
soulSandTrigger( trigger )
{
// self = der spieler
// falls dem spieler eines von den events passiert, stoppe die funktion
self endon( "disconnect" );
self endon( "death" );
// kleiner fix, sonst geht es nur 1x ^^
self thread onDeath();
// solange der spieler den trigger berührt, veränder den speed
while( isDefined( trigger ) && self isTouching( trigger ) && isAlive( self ) && self.sessionstate == "playing" )
{
self setMoveSpeedScale( 1.5 );
}
// falls er ihn nicht mehr berührt, wieder normal
self setMoveSpeedScale( 1.0 );
}
onDeath()
{
self.soulsandtrigger = undefined;
}
|
|
ich weiß allerdings nicht ob der geht, aber das ist was mir so sponatn dazzu einfiel
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von serthy: 25.02.2012 00:50.
|
|
|
|
|
|
|
Danke, habs mal ausprobiert aber es scheint nicht zu funktionieren. Die Geschwindigkeit bleibt die selbe wenn man durchläuft..
Zeile 9 musste ich ändern weil er mit "triggers" nichts anfangen konnte, daran dürfte es aber wohl nicht liegen oder?^^
Da ich ja neu bin hier im Forum und dazu nichts gefunden habe frage ich hier einfach mal ganz direkt.. Wie siehts hier aus wenn es mehrere Probleme/Fragen gibt? Alles in einen Thread oder lieber mehrere aufmachen? Also wenn sie nicht grad was miteinander zutun haben..^^
|
|
|
|
|
serthy
Codemeister
  
Dabei seit: 29.07.2010
Beiträge: 628

|
|
habs getestet + geht, falls nicht, wschreib nochmal
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
|
init()
{
// alle trigger mit KVP : targetname/soulsand_trigger in ein array schreiben
triggers = getentArray( "soulsand_trigger" , "targetname" );
// alle einzelnen trigger rufen die Think()-funktion auf
for( i = 0 ; i < triggers.size ; i++ )
{
triggers[i] thread soulSandThink();
}
}
soulSandThink()
{
// self = ein trigger aus dem array
while( isDefined( self ) ) //solange es den trigger gibt...
{
self waittill( "trigger" , player ); // ...wartet er bis er von einem spieler ausgelöst wird
// falls der spieler am leben ist, soll er schneller laufen (soulSandTrigger()-funktion aufrufen)
// falls der spieler schon im trigger ist, ignore...
if( isAlive( player ) && player.sessionstate == "playing" && !isDefined( player.soulsandtrigger ) )
player thread soulSandTrigger( self );
// mit "thread" rufst du die funktion glaichzeitig auf, würde das fehlen wartet diese funktion solange bis die andere fertig ist
}
}
soulSandTrigger( trigger )
{
// self = der spieler
// falls dem spieler eines von den events passiert, stoppe die funktion
self endon( "disconnect" );
self endon( "death" );
// kleiner fix, sonst geht es nur 1x ^^
self thread onDeath();
self.soulsandtrigger = true;
self thread onEnter();
// solange der spieler den trigger berührt, bleibe bei dem speed
while( isDefined( trigger ) && self isTouching( trigger ) && isAlive( self ) && self.sessionstate == "playing" )
{
wait( 1.0 );
self thread onTouch();
}
// falls er ihn nicht mehr berührt, wieder normal
self thread onExit();
self.soulsandtrigger = undefined;
self notify( "soulsand_exit" );
}
onDeath()
{
self endon( "soulsand_exit" );
self waittill( "death" );
self.soulsandtrigger = undefined;
}
onEnter()
{
// hier kommt das rein was passieren soll wenn du den trigger zum 1. mal berührst
self iprintln( "Enter" );
}
onTouch()
{
// hier das während du im trigger bist (wiederholt sich dann jede sekunde)
self iprintln( "..." );
}
onExit()
{
// hier das wenn du ihn wieder verlässt
self iprintln( "Exit" );
} |
|
|
|
|
|
|
|
|
Also irgendwie habe ich das Gefühl das ich momentan einfach zu dumm zum scripten bin..
Habe das ganze jetzt mal ausprobiert aber es funktioniert bei mir einfach nicht..
Irgendwo mach ich was verkehrt, nur wo?
Rechtsklick > Trigger > Multiple
targetname/soulsand_trigger
Dann das ganze in die .gsc rein und dann sollte doch eigentlich alles klappen oder?
|
|
|
|
|
|
|
Irgendwie bekomme ich das ganze nicht so richtig hin..
Hättest du vllt Zeit und Lust dich mal mit mir im TS zusammen zu setzen um mir bei dem Problem zu helfen? Irgendwo mache ich wohl einen entscheidenen Fehler.. :x
|
|
|
|
|
|
|
Hab das Problem behoben..
Hab wärend ich auf eine Antwort gewartet habe mit einem anderem Script rumgespielt und dadurch gemerkt das ich "thread init();" an der falschen Stelle eingefügt habe..
Beim compilen dann grade mal in den Thread geguckt und deine Antwort gesehen..
Klappt alles wunderbar <3 Vielen Dank für deine Hilfe!
|
|
|
|
|
|
|
|
 |
Impressum ||Datenschutzerklärung
|