jabba, bin grad dabei, die änderungen schön zu bezeichnen, nen fehlerhaften mod hab ich nicht.
grad war n kumpel mit freundin da, und die gute ist programmiererin und hat mein problem nullkommanix gelöst, hier die lösung (rot)
das kleine fitzele ist die lösung, wenn mich die map tötet, keine sounds spielen
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:

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;
}
//////////////////////////////////////////////////////////////
////////Firstblood definieren/////////////////////////////////
//////////////////////////////////////////////////////////////
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);
}
Callback_PlayerConnect()
{
thread dummy();
////////////////////////////////////////////
////////Killcount definieren////////////////
////////////////////////////////////////////
killcount = undefined;
self.pers["kill_spree"] = 0;
//if(getCvar("spree") == "")
//setCvar("spree", "0");
////////////////////////////////////////////
self.statusicon = "";
self waittill("begin");
self.statusicon = "";
level notify("connected", self);
if(!level.splitscreen)
iprintln(&"MP_CONNECTED", self.name);
lpselfnum = self getEntityNumber();
lpselfguid = self getGuid();
logPrint("J;" + lpselfguid + ";" + lpselfnum + ";" + self.name + "\n");
// * AdmiralMOD *
if(game["am_enabled"] == 1) self maps\mp\gametypes\_admiral_mod_player:

layerConnect();
if(game["state"] == "intermission")
{
spawnIntermission();
return;
}
level endon("intermission");
if(level.splitscreen)
scriptMainMenu = game["menu_ingame_spectator"];
else
scriptMainMenu = game["menu_ingame"];
if(isdefined(self.pers["team"]) && self.pers["team"] != "spectator")
{
self setClientCvar("ui_allow_weaponchange", "1");
self.sessionteam = "none";
if(isdefined(self.pers["weapon"]))
spawnPlayer();
else
{
spawnSpectator();
scriptMainMenu = self maps\mp\gametypes\_menus::am_menuSelection();
}
}
else
{
self setClientCvar("ui_allow_weaponchange", "0");
if(!level.xenon)
{
if(!isdefined(self.pers["skipserverinfo"])) self openMenu(game["menu_serverinfo"]);
else self openMenu(game["menu_team"]);
}
else
self openMenu(game["menu_team"]);
self.pers["team"] = "spectator";
self.sessionteam = "spectator";
spawnSpectator();
}
self setClientCvar("g_scriptMainMenu", scriptMainMenu);
}
Callback_PlayerDisconnect()
{
if(!level.splitscreen)
iprintln(&"MP_DISCONNECTED", self.name);
if(isdefined(self.clientid))
setplayerteamrank(self, self.clientid, 0);
lpselfnum = self getEntityNumber();
lpselfguid = self getGuid();
logPrint("Q;" + lpselfguid + ";" + lpselfnum + ";" + self.name + "\n");
// * AdmiralMOD *
if(game["am_enabled"] == 1) self maps\mp\gametypes\_admiral_mod_player:

layerDisconnect();
}
Callback_PlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime)
{
if(self.sessionteam == "spectator")
return;
// Don't do knockback if the damage direction was not specified
if(!isdefined(vDir))
iDFlags |= level.iDFLAGS_NO_KNOCKBACK;
// * Wenn Vote, dann kein Damage mehr *
if(isDefined(level.vote_starting)) return;
// * Weapon Damage Modifier *
if(game["am_weapon_damage_modifiers"] == 1) {
if(isDefined(sWeapon) && isDefined(sMeansOfDeath) && sMeansOfDeath != "MOD_MELEE") {
iDamage = maps\mp\gametypes\_admiral_mod_weapons::ModifyWeaponDamage(iDamage,sWeapon)
;
}
}
// Make sure at least one point of damage is done
if(iDamage < 1)
iDamage = 1;
// * Spawn Protection *
if(game["am_enabled"] == 1 && game["am_player_spawn_protect"] == 1) {
// * Spawn Protect hier nur wenn nicht Gas/Fire *
if(!isDefined(sWeapon) || (isDefined(sWeapon) && sWeapon != "gas_grenade_mp" && sWeapon != "fire_grenade_mp")) {
// * Gegner anzeigen der Spawn Protected *
if(isPlayer(eAttacker) && isDefined(self.spawnProtection)) {
self thread maps\mp\gametypes\_admiral_mod_player:

layerSpawnProtection();
}
// * Wenn getroffener Spieler Spawn Protected, dann kein Damage *
if(isDefined(self.spawnProtection)) return;
}
}
if(sMeansOfDeath == "MOD_FALLING" && game["am_fall_damage_modifier"] > -1) iDamage = game["am_fall_damage_modifier"];
// * AdmiralMOD *
if(game["am_enabled"] == 1) self maps\mp\gametypes\_admiral_mod_player:

layerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime);
if(isDefined(sWeapon) && (sWeapon == "gas_grenade_mp" || sWeapon == "fire_grenade_mp")) return;
// Do debug print if it's enabled
if(getCvarInt("g_debugDamage"))
{
println("client:" + self getEntityNumber() + " health:" + self.health +
" damage:" + iDamage + " hitLoc:" + sHitLoc);
}
// Apply the damage to the player
self finishPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, psOffsetTime);
// Shellshock/Rumble
self thread maps\mp\gametypes\_shellshock::shellshockOnDamage(sMeansOfDeath, iDamage);
self playrumble("damage_heavy");
if(isdefined(eAttacker) && eAttacker != self)
eAttacker thread maps\mp\gametypes\_damagefeedback::updateDamageFeedback();
if(self.sessionstate != "dead")
{
lpselfnum = self getEntityNumber();
lpselfname = self.name;
lpselfteam = self.pers["team"];
lpselfGuid = self getGuid();
lpattackerteam = "";
if(isPlayer(eAttacker))
{
lpattacknum = eAttacker getEntityNumber();
lpattackGuid = eAttacker getGuid();
lpattackname = eAttacker.name;
lpattackerteam = eAttacker.pers["team"];
}
else
{
lpattacknum = -1;
lpattackGuid = "";
lpattackname = "";
lpattackerteam = "world";
}
logPrint("D;" + lpselfGuid + ";" + lpselfnum + ";" + lpselfteam + ";" + lpselfname + ";" + lpattackGuid + ";" + lpattacknum + ";" + lpattackerteam + ";" + lpattackname + ";" + sWeapon + ";" + iDamage + ";" + sMeansOfDeath + ";" + sHitLoc + "\n");
}
}
Callback_PlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration)
{
////////////////////////////////////////////
////////Killcount definieren////////////////
////////////////////////////////////////////
killcount = undefined;
self.pers["kill_spree"] = 0;
if(getCvar("spree") == "")
setCvar("spree", "0");
////////////////////////////////////////////
self endon("spawned");
self notify("killed_player");
if(self.sessionteam == "spectator")
return;
// If the player was killed by a head shot, let players know it was a head shot kill
if(sHitLoc == "head" && sMeansOfDeath != "MOD_MELEE")
sMeansOfDeath = "MOD_HEAD_SHOT";
// send out an obituary message to all clients about the kill
obituary(self, attacker, sWeapon, sMeansOfDeath);
//////////////////////////////////////////////////////
////////Killsounds aufrufen///////////////////////////
//////////////////////////////////////////////////////
if(isPlayer(attacker))
thread maps\mp\gametypes\_shmod::Messages(sMeansOfDeath, attacker);
//////////////////////////////////////////////////////
// * AdmiralMOD *
if(game["am_weapon_drop"] == 1) {
self maps\mp\gametypes\_weapons::dropWeapon();
self maps\mp\gametypes\_weapons::dropOffhand();
}
self.sessionstate = "dead";
self.statusicon = "hud_status_dead";
// * AdmiralMOD *
if(game["am_enabled"] == 1) self maps\mp\gametypes\_admiral_mod_player:

layerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration);
if(!isdefined(self.switching_teams))
self.deaths++;
lpselfnum = self getEntityNumber();
lpselfname = self.name;
lpselfteam = "";
lpselfguid = self getGuid();
lpattackerteam = "";
attackerNum = -1;
if(isPlayer(attacker))
{
if(attacker == self) // killed himself
{
doKillcam = false;
////////////////////////////////////////////
////////Killcount definieren////////////////
////////////////////////////////////////////
killcount = undefined;
self.pers["kill_spree"] = 0;
//if(getCvar("spree") == "")
//setCvar("spree", "0");
////////////////////////////////////////////
if(!isdefined(self.switching_teams))
attacker.score--;
}
else
{
attackerNum = attacker getEntityNumber();
doKillcam = true;
attacker.score++;
attacker checkScoreLimit();
}
lpattacknum = attacker getEntityNumber();
lpattackguid = attacker getGuid();
lpattackname = attacker.name;
attacker notify("update_playerscore_hud");
attacker notify("update_playerhud_score");
}
else // If you weren't killed by a player, you were in the wrong place at the wrong time
{
doKillcam = false;
self.score--;
lpattacknum = -1;
lpattackguid = "";
lpattackname = "";
self notify("update_playerscore_hud");
self notify("update_playerhud_score");
}
logPrint("K;" + lpselfguid + ";" + lpselfnum + ";" + lpselfteam + ";" + lpselfname + ";" + lpattackguid + ";" + lpattacknum + ";" + lpattackerteam + ";" + lpattackname + ";" + sWeapon + ";" + iDamage + ";" + sMeansOfDeath + ";" + sHitLoc + "\n");
// Stop thread if map ended on this death
if(level.mapended)
return;
self.switching_teams = undefined;
self.joining_team = undefined;
self.leaving_team = undefined;
body = self cloneplayer(deathAnimDuration);
// * AdmiralMOD *
if(game["am_deathicons"] == 1) thread maps\mp\gametypes\_deathicons::addDeathicon(body, self.clientid, self.pers["team"]);
delay = 2; // Delay the player becoming a spectator till after he's done dying
wait delay; // ?? Also required for Callback_PlayerKilled to complete before respawn/killcam can execute
if(doKillcam && level.killcam)
self maps\mp\gametypes\_killcam::killcam(attackerNum, delay, psOffsetTime, true);
self thread respawn();
}