Brauche Experten Tipp
-
Folgendes script ist für ein Spiel gemacht. Es prüft ob jemand ein bestimmtes Areal betritt (berührt), wenn das geschieht wird er "gekillt".
///////////////////// // TODES BOXEN // ///////////////////// thread _trigSet "trig_touch" 0 "kill" -1157 -880 100 1326 1015 800 //-------------------------------------------------------------------------------- thread _trigSet "trig_touch" 0 "ciact" -1157 -880 100 1326 1015 800 //--------------------------------------------- _trigSet local.type local.wtime local.action \ local.x1 local.y1 local.z1 \ local.x2 local.y2 local.z2 \ : thread level.mam_f_utils::debug 0 "_trigSet |" local.type "|" \ local.wtime "|" local.action "|" \ local.x1 "," local.y1 "," local.z1 "|" \ local.x2 "," local.y2 "," local.z2 "| -------" switch ( local.type ) { case "trig_touch": case "trig_use": case "trig_fire": case "trig_mg": local.trigObj = spawn trigger_multiple break default: end } local.x1 = float( local.x1 ) ; local.x2 = float( local.x2 ) local.y1 = float( local.y1 ) ; local.y2 = float( local.y2 ) local.z1 = float( local.z1 ) ; local.z2 = float( local.z2 ) // Make sure coords are in right order if ( local.x1 > local.x2 ) { local.x = local.x1 ; local.x1 = local.x2 ; local.x2 = local.x } if ( local.y1 > local.y2 ) { local.y = local.y1 ; local.y1 = local.y2 ; local.y2 = local.y } if ( local.z1 > local.z2 ) { local.z = local.z1 ; local.z1 = local.z2 ; local.z2 = local.z } local.trigObj.origin = ( local.x1 local.y1 local.z1 ) local.trigObj setsize ( 0 0 0 ) ( ( local.x2 local.y2 local.z2 ) - \ ( local.x1 local.y1 local.z1 ) ) local.trigObj delay ( float( local.wtime ) ) if ( level.mam_debug > 80 ) local.trigObj message \ ( "I'm in brush #" + local.trigObj.entnum ) local.trigObj setthread "_trigAction" local.trigObj.ham_type = local.type local.trigObj.ham_action = local.action for ( local.i = 1; local.i <= level.mam_sv_maxclients; local.i++ ) { local.trigObj.ham_team[ local.i ] = "" local.trigObj.ham_time[ local.i ] = 0 } end //---------------------------------------------------------------------------- _trigAction: local.player = parm.other if ( ( self.ham_type == "trig_use" ) && ( ! local.player.useheld ) ) end if ( ( self.ham_type == "trig_fire" ) && ( ! local.player.fireheld ) ) end local.playerId = local.player.entnum + 1 thread level.mam_f_utils::debug 80 "Trig: Player #" local.playerId \ " brush = " self.entnum \ " action = " self.ham_action local.team = self.ham_team[ local.playerId ] local.time = self.ham_time[ local.playerId ] if ( ( local.team != "" ) && ( local.team != local.player.dmteam ) && ( ( level.time - local.time ) < 30.0 ) ) { local.tmChange = 1 } else { local.tmChange = 0 self.ham_team[ local.playerId ] = local.player.dmteam self.ham_time[ local.playerId ] = level.time } if ( self.ham_type == "trig_mg" ) { if ( local.tmChange == 0 ) end } switch ( self.ham_action ) { case "hurt1": local.player hurt 1 ; break case "hurt5": local.player hurt 5 ; break case "hurt10": local.player hurt 10 ; break case "hurt25": local.player hurt 25 ; break case "hurt50": local.player hurt 50 ; break case "die": local.player hurt 10000 ; break case "kill": local.player kill ; break case "respawn": local.player respawn ; break case "weapnext":local.player weapnext ; break case "weapdrop":local.player weapdrop ; break case "holster": local.player safeholster 1 ; break case "stand": local.player modheight stand ; break case "duck": local.player modheight duck ; break case "ciact": thread outofbounds local.player ; break case "warn": thread sendwarning local.player ; break default: local.player stufftext self.ham_action ; break } end //----------------------------------------------------------------------------- outofbounds local.player: local.string = (getcvar ciact) if(local.string == "X" || local.string == "x") local.string = "" local.string = (local.string + "k" + local.player.entnum + ";") setcvar ciact local.string local.player stufftext "say Groundfight? Ich rall es einfach nicht - KICK MICH KICK MICH JUHUUU" iprintln "ATTENTION: Player not respecting NAG-RULES Detected" end //----------------------------------------------------------------------------- sendwarning local.player: local.player stufftext "say Groundfight? Ich rall es einfach nicht - KICK MICH KICK MICH JUHUUU" iprintln "ATTENTION: Player not respecting NAG-RULES Detected" end
Ich habe nun folgende Frage, weil ich nicht weiss, wo und wie genau die Abfrage, ob das Areal betreten / beruehrt wurde, geschieht:
Wie kann ich da einen Timer einbauen, sodass die Leute, die dieses Areal betreten, eine gewisse Zeit haben selbiges zu verlassen.Quasi:
Solange du dich im Areal befindest - laeuft eine gewisse Zeit ab - wenn du dann noch im Areal bist - KillDanke im Vorraus,
Simsalabim
-
thread _trigSet "trig_touch" 0 "kill" -1157 -880 100 1326 1015 800
//--------------------------------------------------------------------------------
thread _trigSet "trig_touch" 0 "ciact" -1157 -880 100 1326 1015 800Also die Null in diesen Zeilen ist jeweils ein Timer. Das dumme ist, mit diesem Timer kann ich nur die Zeit verzoegern bis zum KILL, wenn derjenige das Areal bereits verlassen hat, wird er trotzdem gekillt.
Niemand eine Idee?
-
Da ich absoluter Newbie in Sachen Programmierung bin, verzeiht bitte, wenn das eine dumme Frage war. Oder wenn es etwas unvollständig ist.
Sagt mir, was ihr braucht um mir überhaupt helfen zu können ^^
sim
-
also ich hab die abfrage mittlerweile in erfahrung brinegn können:
if (local.timer=0;local.timer<30;local.timer++)
soll wohl eine 30s Abfrage sein, die man verwenden könnte...
nur wo???
gruss,
sim
-
simsalabim schrieb:
Niemand eine Idee?
Sorry, wenn mitten in der Nacht nicht so viele anwesen sind
Eine Idee wäre es, beim Timer-Abluaf zu überprüfen, ob der Spieler noch im Areal ist. Alternativ kannst du auch den Timer wieder deaktivieren, wenn der Spieler das tödliche Gebiet wieder verlässt.
-
Was für ne Programmiersprache ist denn das ??
-
C++ jedenfalls nicht.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Erst mal sorry fürs das Missgeschick mit dem falschen Forum.
Ich habe es für c++ gehalten, aber was ist es denn sonst?Trotzdem...
CStoll schrieb:
simsalabim schrieb:
Niemand eine Idee?
Sorry, wenn mitten in der Nacht nicht so viele anwesen sind
Eine Idee wäre es, beim Timer-Abluaf zu überprüfen, ob der Spieler noch im Areal ist. Alternativ kannst du auch den Timer wieder deaktivieren, wenn der Spieler das tödliche Gebiet wieder verlässt.
Genau das wär ideal! Nur wie? Und wo ansetzen?
Gruss
simsalabim
-
Das kommt ganz darauf an, wieviel Logik du hinter deine Timer setzen kannst:
event "Spieler betritt Gebiet X" starte Timer 1 30s end event event "Spieler verlässt Gebiet X" beende Timer 1 end event event "Timer 1 abgelaufen" töte Spieler end event
event "Spieler betritt Gebiet X" starte Timer 1 30s end event event "Timer 1 abgelaufen" wenn "Spieler in Gebiet X" dann töte Spieler end event
(für die konkrete Syntax kann ich dir leider nicht weiterhelfen)