Operator für einmaliges Ereignis

Nightwing
Ich benutz den Nukes Killingspree, den ich in den AdmiralMOD eingefügt habe und würde gerne in das Script dazu FIRSTBLOOD einfügen

Hier mal ein Ausschnitt des Scripts, das die Killsounds steuert:

if(killcount == 4)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Ultra Kill!");
attacker iprintlnBold("^1Ultra Kill!");
//playSoundOnPlayers("ultrakill");
self playlocalSound("ultrakill");
attacker playlocalSound("ultrakill");
wait (2);
}


Wie heisst der Operator, der hier (killcount == 4) die zwei "==" ersetzen kann, der ein einmaliges Ereignis auslöst??

so hab i das mal umgeschrieben, nur der Operator fehlt mir (sind die zwei "??"), der das eben einmalig macht:


if(killcount ?? 1)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1First Blood!");
attacker iprintlnBold("^1First Blood!");
//playSoundOnPlayers("firstblood");
self playlocalSound("firstblood");
attacker playlocalSound("firstblood");
wait (2);
}


kann mir da wer helfen??
Kelli

Zitat:

Original von Nightwing
if(killcount == 4)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Ultra Kill!");
attacker iprintlnBold("^1Ultra Kill!");
//playSoundOnPlayers("ultrakill");
self playlocalSound("ultrakill");
attacker playlocalSound("ultrakill");
wait (2);
}


if(killcount ?? 1)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1First Blood!");
attacker iprintlnBold("^1First Blood!");
//playSoundOnPlayers("firstblood");
self playlocalSound("firstblood");
attacker playlocalSound("firstblood");
wait (2);
}


Du stellst dir die falsche Frage. So wird die Bedingung ja schon nur einmal erfüllt, dann wenn die Anzahl der Kills exakt 4 ist
== 4
Sonst gibt es nur
!= nicht 4 währe immer außer bei 4 Kills
>= beim 5. 6. 7. [...] Kill
<= beim 1. 2. 3. aber nicht beim 4. 5. 6. [...] Kill

Du suchst aber sicher das der erste überhaupt in der Runde gezählt wird. Das geht so einfach nicht da (jetzt ohne das ich es mir angesehen habe) ja die variable $killcount für jeden einzelnen Spieler hochgezählt wird und nicht global für die Runde. Es ist sicher möglich das einzubauen, aber nicht so an dieser Stelle. Da müsste man mal das ganze auseinandernehmen und dann schauen.
So ganz schnell, als Pseudocode denke ich dabei an sowas:

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
if(killcount == 1 && firstblood == false)
		
			{
                        firstblood == true;
			iprintln("" + attacker.name + " ^1First Blood!");
			attacker iprintlnBold("^1First Blood!");
			self playlocalSound("firstblood");
			attacker playlocalSound("firstblood");
                        wait (2);
			}


Aber ich kenne die Variablenbehandlung und die Syntax dieser Sprache nicht, da müsste ich erst nachlesen ob man $firstblood so verwenden kann. Old Man weiß das bestimmt so ohne nachzusehen. Außerdem muss firstblood bestimmt noch am Anfang der Runde definiert und am Ende der Runde zurückgesetzt werden.
{LSB} Squall69
Soll die Textausgabe wirklich so wie in deinem Post sein?

iprintln............... klein links unten fuer alle
attacker iprintlnBold............... Bildschirmmitte fuer Schuetzen
Nightwing

Zitat:

Original von {LSB} Squall69
Soll die Textausgabe wirklich so wie in deinem Post sein?

iprintln............... klein links unten fuer alle
attacker iprintlnBold............... Bildschirmmitte fuer Schuetzen


Jawoll, bis jetzt störts keinen der 5 Testzocker, im Gegenteil.

ich post hier mal die ganze datei _shmod.gsc, die für die ausführung dieser sounds verantwortlich ist

et voila, hier isch se:

Messages(sMeansOfDeath, attacker)
{

killcount = undefined;
self.pers["kill_spree"] = 0;
//if(getCvar("spree") == "")
// setCvar("spree", "0");


if(sMeansOfDeath == "MOD_HEAD_SHOT")
{
distance = distance(Attacker.origin , self.origin); //Inches
meters = distance * 0.0254; //Meters
feet = distance / 12; //Feet

if(!isDefined("shm_metric") || getcvar("shm_metric") == "")
setcvar("shm_metric", "meters");

if(getCVar("shm_metric") != "feet")
{
attacker iprintlnBold("^1Head Shot!^7 " + self.name + " ^5eliminiert. Distanz:^3 " + meters + " ^5Meter!"); //Message to attacker
attacker playlocalSound("headshot");//voice message to attacker

self iprintlnBold("^1Head Shot!^7 " + attacker.name + " ^5hat Dich eliminiert. ^5Distanz:^3 " + meters + " ^5 Meter!"); //Message to death person
self playlocalSound("headshot"); //voice message to dead person

iprintln("^1Head Shot!^7 " + attacker.name + " ^5eliminierte^7 " + self.name + "^5. Distanz:^3 " + meters + " ^5Meter!"); //Message to every player
}

wait (2);
}


attacker.pers["kill_spree"]++;//this is ok
killcount = attacker.pers["kill_spree"];



if(killcount == 3)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Killing Spree!");
attacker iprintlnBold("^1Killing Spree!");
//playSoundOnPlayers("killingspree");
self playlocalSound("killingspree");
attacker playlocalSound("killingspree");
wait (2);
}

if(killcount == 4)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Ultra Kill!");
attacker iprintlnBold("^1Ultra Kill!");
//playSoundOnPlayers("ultrakill");
self playlocalSound("ultrakill");
attacker playlocalSound("ultrakill");
wait (2);
}

if(killcount == 5)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Rampage!");
attacker iprintlnBold("^1Rampage!");
//playSoundOnPlayers("rampage");
self playlocalSound("rampage");
attacker playlocalSound("rampage");
wait (2);
}

if(killcount == 6)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Dominating!");
attacker iprintlnBold("^1Dominating!");
//playSoundOnPlayers("dominating");
self playlocalSound("dominating");
attacker playlocalSound("dominating");
wait (2);
}

if(killcount == 7)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Monster Kill!");
attacker iprintlnBold("^1Monster Kill!");
//playSoundOnPlayers("monsterkill");
self playlocalSound("monsterkill");
attacker playlocalSound("monsterkill");
wait (2);
}

if(killcount == cool

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Holy Shit!");
attacker iprintlnBold("^1Holy Shit!");
//playSoundOnPlayers("holyshit");
self playlocalSound("holyshit");
attacker playlocalSound("holyshit");
wait (2);
}

if(killcount == 9)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Slaughter!");
attacker iprintlnBold("^1Slaughter!");
//playSoundOnPlayers("slaughter");
self playlocalSound("slaughter");
attacker playlocalSound("slaughter");
wait (2);
}

if(killcount == 10)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Unstopable!");
attacker iprintlnBold("^1Unstopable!");
//playSoundOnPlayers("unstoppable");
self playlocalSound("unstoppable");
attacker playlocalSound("unstoppable");
wait (2);
}

if(killcount >= 11)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Godlike!");
attacker iprintlnBold("^1Godlike!");
//playSoundOnPlayers("godlike");
self playlocalSound("godlike");
attacker playlocalSound("godlike");
wait (2);
}
}


playSoundOnPlayers(sound, team)
{
players = getentarray("player", "classname");

if(level.splitscreen)
{
if(isdefined(players[0]))
players[0] playLocalSound(sound);
}
else
{
if(isdefined(team))
{
for(i = 0; i < players.size; i++)
{
if((isdefined(players[i].pers["team"])) && (players[i].pers["team"] == team))
players[i] playLocalSound(sound);
}
}
else
{
for(i = 0; i < players.size; i++)
players[i] playLocalSound(sound);
}
}
}
Nightwing

Zitat:

Original von Kellerkind
Du stellst dir die falsche Frage. So wird die Bedingung ja schon nur einmal erfüllt, dann wenn die Anzahl der Kills exakt 4 ist
== 4
Sonst gibt es nur
!= nicht 4 währe immer außer bei 4 Kills
>= beim 5. 6. 7. [...] Kill
<= beim 1. 2. 3. aber nicht beim 4. 5. 6. [...] Kill



öhm, das ab der 3 tut, jeder spieler, der 3 4 5 usw in reihe tötet, ohne selbst getötet zu werden, erhält anzeige und sound, passt feini


nach selbstmord oder tod ist der killcount dann wieder auf 0


nur komisch ist, dass nach einem sturz, oder einem minenfeld, der das leben kostet, alle sounds hintereinander ausgeführt werden, OHNE anzeige!!!!

wär das script nicht etwa 8000 zeichen zu lang, könnt ichs ja mal posten, aber wer mir da helfen will, dem kann ich das gern per mail zusenden

soweit mal 1000 dank


PS von mike bekam ich seine moddateien zugesendet, aber zwischen admiral mod und extreme+ mod liegen ein paar lichtjährchen, was die scripts angeht, so wie ich das als laie sehe...
trotzdem danke
{LSB} Squall69
Das mit dem "first blood" hat nichts mit dem deiner "killingspree" zu tun.
Wen du es wirklich so haben willst dan def. dir eine neue Variabel auf "level" Basis

level.myvar=0;

und dann nimmst du deinen komischen "print & sound" code

if( level.myvar == 0 )

{
iprintln("" + attacker.name + " ^1First Blood!");
attacker iprintlnBold("^1First Blood!");
self playlocalSound("firstblood");
attacker playlocalSound("firstblood");
level.myvar++;
wait (2);
}
Kelli

Zitat:

Original von {LSB} Squall69

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
level.myvar=0;
if( level.myvar == 0 )
{
iprintln("" + attacker.name + " ^1First Blood!");
attacker iprintlnBold("^1First Blood!");
self playlocalSound("firstblood");
attacker playlocalSound("firstblood");
level.myvar++;
wait (2);
}



Dann hätte meine Version so aussehen müssen:

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
if(killcount == 1 && level.firstblood == 0)
		
			{
                        level.firstblood == 1;
			iprintln("" + attacker.name + " ^1First Blood!");
			attacker iprintlnBold("^1First Blood!");
			self playlocalSound("firstblood");
			attacker playlocalSound("firstblood");
                        wait (2);
			}


Aber wird das dann nicht für jeden Spieler einmal aufgerufen? (Sowohl meine als auch deine Lösung)
Nightwing
die zeile hier


level.firstblood == 1;


mag er nicht ---> script compile error
Kelli
ROFL
Naja, ich sag doch ich bin nur Amateur in der CoD2 Language.
Hab das einfach mal so gemacht wie ich das in einer anderen Sprache gelöst hätte.
Squall69´s level.myvar++; wird wohl richtig sein.
Ich bin mir jetzt auch sicher das bei meiner Lösung bei jedem Spieler beim ersten Kill getriggert wird. Mich würde zu fortbildungszwecken jetzt nur mal interessieren ob das bei Squall69´s Schnipsel auch so ist, oder wenn nicht warum eigentlich nicht.
{LSB} Squall69
Was ich dir geschrieben hab funktioniert 100%tig.

Viele Wege fueren nach Rom einer durch den dunklen Wald und ein anderer das Seeufer entlang.

Warum ich es so geloest habe, ist einfach erklaert. Er hat nicht viel Ahnung vom den Scripts und ich hab sein Script so erweitert das er es auch verstehen sollte.

Die killcount var hab ich nicht verwendet da "first blood" nichts mit mit einer "Killingspree" zu schaffen hat, denn falls er sich entschliesst es woanders unerzubringen funktieoniert es auch weiterhin, desshalb auch level.
Nightwing

Zitat:

Original von {LSB} Squall69
Das mit dem "first blood" hat nichts mit dem deiner "killingspree" zu tun.
Wen du es wirklich so haben willst dan def. dir eine neue Variabel auf "level" Basis

level.myvar=0;

und dann nimmst du deinen komischen "print & sound" code

if( level.myvar == 0 )

{
iprintln("" + attacker.name + " ^1First Blood!");
attacker iprintlnBold("^1First Blood!");
self playlocalSound("firstblood");
attacker playlocalSound("firstblood");
level.myvar++;
wait (2);
}




so sieht das jetzt aus:

Messages(sMeansOfDeath, attacker)
{

killcount = undefined;
self.pers["kill_spree"] = 0;
level.firstblood=0;
//if(getCvar("spree") == "")
// setCvar("spree", "0");


if(sMeansOfDeath == "MOD_HEAD_SHOT")
{
distance = distance(Attacker.origin , self.origin); //Inches
meters = distance * 0.0254; //Meters
feet = distance / 12; //Feet

if(!isDefined("shm_metric") || getcvar("shm_metric") == "")
setcvar("shm_metric", "meters");

if(getCVar("shm_metric") != "feet")
{
attacker iprintlnBold("^1Head Shot!^7 " + self.name + " ^5eliminiert. Distanz:^3 " + meters + " ^5Meter!"); //Message to attacker
attacker playlocalSound("headshot");//voice message to attacker

self iprintlnBold("^1Head Shot!^7 " + attacker.name + " ^5hat Dich eliminiert. ^5Distanz:^3 " + meters + " ^5 Meter!"); //Message to death person
self playlocalSound("headshot"); //voice message to dead person

iprintln("^1Head Shot!^7 " + attacker.name + " ^5eliminierte^7 " + self.name + "^5. Distanz:^3 " + meters + " ^5Meter!"); //Message to every player
}

wait (2);
}


attacker.pers["kill_spree"]++;//this is ok
killcount = attacker.pers["kill_spree"];


if( level.firstblood == 0 )

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1First Blood!");
attacker iprintlnBold("^1First Blood!");
//playSoundOnPlayers("firstblood");
self playlocalSound("firstblood");
attacker playlocalSound("firstblood");
level.firstblood++;
wait (2);
}


if(killcount == 3)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Killing Spree!");
attacker iprintlnBold("^1Killing Spree!");
//playSoundOnPlayers("killingspree");
self playlocalSound("killingspree");
attacker playlocalSound("killingspree");
wait (2);
}

if(killcount == 4)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Ultra Kill!");
attacker iprintlnBold("^1Ultra Kill!");
//playSoundOnPlayers("ultrakill");
self playlocalSound("ultrakill");
attacker playlocalSound("ultrakill");
wait (2);
}

if(killcount == 5)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Rampage!");
attacker iprintlnBold("^1Rampage!");
//playSoundOnPlayers("rampage");
self playlocalSound("rampage");
attacker playlocalSound("rampage");
wait (2);
}

if(killcount == 6)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Dominating!");
attacker iprintlnBold("^1Dominating!");
//playSoundOnPlayers("dominating");
self playlocalSound("dominating");
attacker playlocalSound("dominating");
wait (2);
}

if(killcount == 7)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Monster Kill!");
attacker iprintlnBold("^1Monster Kill!");
//playSoundOnPlayers("monsterkill");
self playlocalSound("monsterkill");
attacker playlocalSound("monsterkill");
wait (2);
}

if(killcount == cool

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Holy Shit!");
attacker iprintlnBold("^1Holy Shit!");
//playSoundOnPlayers("holyshit");
self playlocalSound("holyshit");
attacker playlocalSound("holyshit");
wait (2);
}

if(killcount == 9)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Slaughter!");
attacker iprintlnBold("^1Slaughter!");
//playSoundOnPlayers("slaughter");
self playlocalSound("slaughter");
attacker playlocalSound("slaughter");
wait (2);
}

if(killcount == 10)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Unstopable!");
attacker iprintlnBold("^1Unstopable!");
//playSoundOnPlayers("unstoppable");
self playlocalSound("unstoppable");
attacker playlocalSound("unstoppable");
wait (2);
}

if(killcount >= 11)

{
//iprintln(killcount);
iprintln("" + attacker.name + " ^1Godlike!");
attacker iprintlnBold("^1Godlike!");
//playSoundOnPlayers("godlike");
self playlocalSound("godlike");
attacker playlocalSound("godlike");
wait (2);
}
}


playSoundOnPlayers(sound, team)
{
players = getentarray("player", "classname");

if(level.splitscreen)
{
if(isdefined(players[0]))
players[0] playLocalSound(sound);
}
else
{
if(isdefined(team))
{
for(i = 0; i < players.size; i++)
{
if((isdefined(players[i].pers["team"])) && (players[i].pers["team"] == team))
players[i] playLocalSound(sound);
}
}
else
{
for(i = 0; i < players.size; i++)
players[i] playLocalSound(sound);
}
}
}



sind deine bemühungen richtig umgesetzt???

nur 1 problem, der firstblood sound kommt bei JEDEM kill, nicht nur beim allerersten...


PS: level.myvar geändert in level.firstblood
{LSB} Squall69
Du hast die Variabe level.firstblood=0; zu spaet definiert.

Wo genau es in den Admiral mod .gsc Files hingehoert kann ich dir leider nicht sagen.

Aber auf alle faelle kannst du deine var in den Gametyp .gsc files defienieren. Such dort nach Callback_StartGameType() hier ist dann der richtige Platz.
Musst halt fuer jeden Spieltyp extra machen.
Aber in Callback_StartGameType() muss auch ein File vom Admiral mod aufgerfufen werden, wenn du deine Variable es in diesem File plazierst musst du es nur einmal tun,
da dieser Aufruf schon in allen Gametyps enthalten ist.

Und dein Print fuer "first blood" solltest du eigentlich wo anders unterbringen, das macht dann ein weiterbearbeiten und wiederfinden wesentlich einfacher.

Such mal in einem der Gametyps nach Callback_PlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration)
Innerhalb dieser Funktion muss wieder ein File bzw eine Funktion des Admiral Mod aufgerufen werden. Dort waer dann auch ein guter Platz fuer dein "first blood"
{LSB} Squall69

Zitat:

Originale von Kellerkind

Ich bin mir jetzt auch sicher das bei meiner Lösung bei jedem Spieler beim ersten Kill getriggert wird. Mich würde zu fortbildungszwecken jetzt nur mal interessieren ob das bei Squall69´s Schnipsel auch so ist, oder wenn nicht warum eigentlich nicht.


Bei mir erfolgt der Print nur einmal da meine Variable def wird wenn die Karte laedt und sie nicht an einen Spieler gebunden ist sondern eine allgemeine var ist.

Dein Code triggerd bei jeden Spieler da du die var killcount verwendest die fuer jeden Spieler seperat def ist.

Um es mit der killcount var zu loesen mass man die killcount bzw. attacker.pers["kill_spree"] var aller Spieler abfragen und kontrolieren ob alle null sind, und anhand dieser Abfrage deine var firstblood true oder fals setzen, was die Sache unnoetig kompliziert macht.
Kelli

Zitat:

Kellerkind
Ich bin mir jetzt auch sicher das bei meiner Lösung bei jedem Spieler beim ersten Kill getriggert wird. Mich würde zu fortbildungszwecken jetzt nur mal interessieren ob das bei Squall69´s Schnipsel auch so ist, oder wenn nicht warum eigentlich nicht
.

Zitat:

Original von Nightwing
[...]nur 1 problem, der firstblood sound kommt bei JEDEM kill, nicht nur beim allerersten...

Zitat:

Original von {LSB} Squall69
Du hast die Variabe level.firstblood=0; zu spaet definiert.
[...]
Such mal in einem der Gametyps nach Callback_PlayerKilled [...]
Dort waer dann auch ein guter Platz fuer dein "first blood"[...]

Zitat:

Original von {LSB} Squall69
Bei mir erfolgt der Print nur einmal da meine Variable def wird wenn die Karte laedt und sie nicht an einen Spieler gebunden ist sondern eine allgemeine var ist.

Nach dem Nachtrag^^^^"Such mal in einem der[...]guter Platz fuer dein "first blood"", ja. Damit ist es dann klar. Genau das hab ich gemeint.
{LSB} Squall69
Kellerkind es funktieniert auch wenn er es in seiner headshot,killingspree Datei laesst.


Zitat:

Original von {LSB} Squall69

Und dein Print fuer "first blood" solltest du eigentlich wo anders unterbringen, das macht dann ein weiterbearbeiten und wiederfinden wesentlich einfacher.

Such mal in einem der Gametyps nach Callback_PlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration)
Innerhalb dieser Funktion muss wieder ein File bzw eine Funktion des Admiral Mod aufgerufen werden. Dort waer dann auch ein guter Platz fuer dein "first blood"


Gruender warum er es in eine andere Funktion packen soll?

Ich weiss von mir selbst das man nie Zufrieden ist mit dem was man hat , und da seine Prints etwas komisch sind bin ich mir sicher das er sie noch aendern wird.
Und wenn er diesen Platz waehlt kann er alles was zu dem Kill gehoert in seine prints einbauen ohne gross scripten zu koennen.

BBB has drawn the first blood and the victim was GGG
Holy shit the first blood was a headshot
First bood was drawn with a shot in the right hand
BBBB used the kar98 for the first blood
First blood was a Teamkill

Ein weiter Grund sind dann die code Aenderungen, denn er muss mindestens den Fix machen das die Nachricht nicht kommt wenn er das Team wechselt.
Und wenn er es in der richtigen Funktion hat ist es dann auch logisch weshalb er diesen Fix benoetigt.
zb wenn er nicht haben will das first blood bei einen Teamkill ausgegeben wird findet er hier auch gleich ein Beispiel.
Nightwing
SO hab i das jetzt mal reingesetzt, wenn ich connecte, tuts auch, mal nachher mim kumpel testen

ist das level.firstblood richtig so an der stelle?

die killprints inbold hab ich jetzt mal weg, unrecht hast du nicht ;-)

noch was: firstblood kommt auch bei selbstmord, sturz etc, das ist schon korrekt so, oder?? ist ja das erste blut so gesehen *lach*


auf jeden fall möcht ich mich bei euch ganz herzlich bedanken, supertolle arbeit!!!!

darf ich so unverschämt sein, und an andrer stelle noch ein winziges scriptproblem erläutern?? Augenzwinkern


Callback_StartGameType()
{
level.splitscreen = isSplitScreen();

// defaults if not defined in level script
if(!isdefined(game["allies"]))
game["allies"] = "american";
if(!isdefined(game["axis"]))
game["axis"] = "german";

// server cvar overrides
if(getCvar("scr_allies") != "")
game["allies"] = getCvar("scr_allies");
if(getCvar("scr_axis") != "")
game["axis"] = getCvar("scr_axis");

precacheStatusIcon("hud_status_dead");
precacheRumble("damage_heavy");
precacheString(&"PLATFORM_PRESS_TO_SPAWN");

// * AdmiralMOD *
if(game["am_enabled"] == 1) maps\mp\gametypes\_admiral_mod_precache:Zunge raus recache();


thread maps\mp\gametypes\_menus::init();
thread maps\mp\gametypes\_serversettings::init();
thread maps\mp\gametypes\_clientids::init();
thread maps\mp\gametypes\_teams::init();
thread maps\mp\gametypes\_weapons::init();
thread maps\mp\gametypes\_scoreboard::init();
thread maps\mp\gametypes\_killcam::init();
thread maps\mp\gametypes\_shellshock::init();
thread maps\mp\gametypes\_hud_playerscore::init();
thread maps\mp\gametypes\_deathicons::init();
thread maps\mp\gametypes\_hearticons::init();
thread maps\mp\gametypes\_tnticons::init();
thread maps\mp\gametypes\_damagefeedback::init();
thread maps\mp\gametypes\_objpoints::init();
thread maps\mp\gametypes\_healthoverlay::init();
thread maps\mp\gametypes\_grenadeindicators::init();

level.xenon = (getcvar("xenonGame") == "true");
if(level.xenon) // Xenon only
thread maps\mp\gametypes\_richpresence::init();
else // PC only
thread maps\mp\gametypes\_quickmessages::init();

setClientNameMode("auto_change");

spawnpointname = "mp_dm_spawn";
spawnpoints = getentarray(spawnpointname, "classname");

if(!spawnpoints.size)
{
maps\mp\gametypes\_callbacksetup::AbortLevel();
return;
}
level.firstblood=0;

for(i = 0; i < spawnpoints.size; i++)
spawnpoints[i] placeSpawnpoint();

allowed[0] = "dm";
maps\mp\gametypes\_gameobjects::main(allowed);

// Time limit per map
if(getCvar("scr_dm_timelimit") == "")
setCvar("scr_dm_timelimit", "30");
else if(getCvarFloat("scr_dm_timelimit") > 1440)
setCvar("scr_dm_timelimit", "1440");
level.timelimit = getCvarFloat("scr_dm_timelimit");
setCvar("ui_dm_timelimit", level.timelimit);
makeCvarServerInfo("ui_dm_timelimit", "30");

// Score limit per map
if(getCvar("scr_dm_scorelimit") == "")
setCvar("scr_dm_scorelimit", "100");
level.scorelimit = getCvarInt("scr_dm_scorelimit");
setCvar("ui_dm_scorelimit", level.scorelimit);
makeCvarServerInfo("ui_dm_scorelimit", "100");

// Force respawning
if(getCvar("scr_forcerespawn") == "")
setCvar("scr_forcerespawn", "0");

if(!isdefined(game["state"]))
game["state"] = "playing";

level.QuickMessageToAll = true;
level.mapended = false;

thread startGame();
thread updateGametypeCvars();
//thread maps\mp\gametypes\_teams::addTestClients();


// * AdmiralMOD *
if(game["am_enabled"] == 1) maps\mp\gametypes\_admiral_mod::StartGame();


}

dummy()
{
waittillframeend;

if(isdefined(self))
level notify("connecting", self);
}
{LSB} Squall69
Hier ist es ok.

Tipp um ein Bearbeiten und Wiederfinden zu vereinfachen:

Wenn du etwas zu einem bestehen Script hinzufuegst mach dir gleich Notizen dafuer im Script und such nach aehnlichen Dingen in der Funktion wie zB.


Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
level.QuickMessageToAll = true;
level.mapended = false;

/////// Hinzugefuegt fuer meinen server ////////////

level.firstblood=0; // allgemeine Variabel fuer first kill

////////////////////////////////////////////////////////




Wie vorher beschrieben ist hier auch der Aufruf fuer den Admiral Mod wo du ebenfalls deine var def kannst.

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
// * AdmiralMOD * 
if(game["am_enabled"] == 1) maps\mp\gametypes\_admiral_mod::StartGame();



Wie schon erwaehnt hast du dadurch den Vorteil das du deine Varibel nur eimal def musst und nicht fuer jeden Spieltyp seperat.
maps\mp\gametypes\ ...Pfad
_admiral_mod ...Dateiname
StartGame() ...Funktion


Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
	// * MM Missionen *
	level.highscore_text = "";
	level.bomb_on_the_map_allies = 0;
	level.bomb_on_the_map_axis = 0;
	
/////// Hinzugefuegt fuer meinen server ////////////

                level.firstblood=0; // allgemeine Variabel fuer first kill

////////////////////////////////////////////////////////

	// * Sprint Schritte unterdrücken, solage bei S&D nach dem planten PlayerSounds ausgegeben werden  *
	level.sd_sound_play = undefined;

Nightwing
na super!!!

i hab für jeden spieltyp ne .gsc und in jeder ist das callback player connected enthalten, also hab ichs in denen, die ich anbiete einfach reingetan, tut ja auch ;-)

also in dm, tdm, ctf, ctb

und in der _shmod.gsc ist dann headshot, killsound und firstblood definiert.


super dank dir