grab
Hey leute,
bin ja jetz schon etwas besser im scripten geworden und hab mir jetz einen timer included. nun hab ich alles schon fertig der timer läuft von 4:00 auf 0:0 runter. Nun möchte ich machen das er wenn er bei 0:0 ist eine funtkion ausführt die im script schon gemacht wurde namens "stopRound()".
Ich hab mich schpn in der Standart SD.gsc rumgeschaut aber da nix gutes gefunden.
Bitte um eure hilfe jetz.
grab
könntest du eine kleine erklärung zu den elementen machen ?
also wie was funktioniert.
Hab alles includiert aber es geht nix. der timer wird nicht angezeigt.
Unterstützung ?
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:
|
roundTimer( time ) {
// stoppe die funktion wenn map/runde zuende ist oder du sie so beenden willst
level endon( "round_end" );
level endon( "game_ended" );
level endon( "stop_roundTimer" );
level.roundTimer = newHudElem();
level.roundTimer.sort = -1;
level.roundTimer.archived = false;
level.roundTimer.alignX = "center";
level.roundTimer.alignY = "middle";
level.roundTimer.x = 320;
level.roundTimer.y = 260;
level.roundTimer.alpha = 1;
level.roundTimer.color = (255,160,0);
level.roundTimer.fontScale = 1.5;
level.roundTimer settimer(int ( time ) );
startTime = getTime();
while( getTime() - startTime <= time * 1000 )
{
wait( int (time) );
}
// wait( int( time ) ); würde auch gehen
level.roundTimer detsroy();
level thread maps\mp\gametypes\_zom::checkRestart();;
} |
|
serthy
na soo einfach geht es nicht
ich kenn außerdem deinen mod nicht, da kann vieles schonmal schiefgehen wenn man einfach so was einfügt und das nicht klappt
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:
|
// in SetupCvars() kommt das hin: if( getCvar( "scr_zom_roundtime") == "" ) setCvar( "scr_zom_roundtime" , "4" ); level.roundtime = getCvarInt( "scr_zom_roundtime" );
// in GameStart() funktion kommt das ganz oben hin: level thread monitorRound();
// in checkRestart() funktion müsste sowtwas rein (direkt über return true;): level notify( "round_restart" ); thread monitorRound();
monitorRound()
{
level endon( "intermission" );
level endon( "round_restart" );
if( !isDefined( level.roundClock ) )
{
level.roundClock = newHudElem();
level.roundClock.horzAlign = "left";
level.roundClock.vertAlign = "top";
level.roundClock.x = 8;
level.roundClock.y = 22;
level.roundClock.fontscale = 1.5;
}
level.roundClock setTimer( int( level.roundlimit * 60 ) );
startTime = getTime();
while( getTime() - startTime < level.roundlimit * 60000 )
{
wait( int ( 1.0 ) );
}
otherteam["allies"] = "axis";
otherteam["axis"] = "allies";
players = getentarray( "player" , "classname" );
for( i = 0 ; i < players.size ; i++ )
{
player = players[i];
if( !isDefined( player.pers["team"] ) || player.pers["team"] == "spectator" )
continue;
player thread showText( &"ZOM_ROUND_RESTART" );
player thread movePlayer( otherteam[player.pers["team"]] , 4.0 );
}
wait( 4.0 );
level thread monitorRound();
} |
|
nimm das als grundlage und passe es an (achtung, keine ahnung ob alles stimmt!)
zu der erklärung:
wenn das spiel startet(neue map etc.) musst du mit als erstes monitorRound() aufrufen, da das deine runden steuert. die funktion erstellt dir deinen timer und überprüft jede sekunde ob die zeit vorrüber ist oder nicht (genauer: es checkt ob die jetzige zeit mit gettime minus der startzeit größer ist als die rundenzeit, falls ja stoppt der loop) danach werden alle aktiven spieler mit der movePlayer()-funktion aus dem zombiemod getauscht, zombies werden jäger und umgeklehrt. danach wird die funktion von sich selbst neu aufgerufen.
du müsstest noch in der movePlayer() funktion die 2 oben genannten dinge einfügen, damit jedesmal roundMonitor() funktion neu gestartet wird. und du musst die rundenzeit natürlich definieren in der setupCvars() funktion
das level endon( event ) stoppt und beendet die komplette funktion, sobald das entity (hier: level) etwas mit level notify( event ) zugewiesen wird.