init fungun
This commit is contained in:
4
gunfun/.gitignore
vendored
Normal file
4
gunfun/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
*.log*
|
||||
maps/
|
||||
scriptdata/
|
||||
demos/
|
||||
75
gunfun/mod/api.gsc
Executable file
75
gunfun/mod/api.gsc
Executable file
@@ -0,0 +1,75 @@
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_utility;
|
||||
#include maps\mp\gametypes\_hud_util;
|
||||
|
||||
// For sending data, you use - as split character and for response I use | as split character
|
||||
// all-10 => top 10 guids split by |
|
||||
|
||||
Init()
|
||||
{
|
||||
if(true) // unfinished script
|
||||
return;
|
||||
//level.api = "http://178.63.44.165:80831/";
|
||||
level.api = "";
|
||||
level.chatCommands = [];
|
||||
level.chatCommands[level.chatCommands.size] = "register";
|
||||
level.chatCommands[level.chatCommands.size] = "increment";
|
||||
level.chatCommands[level.chatCommands.size] = "all";
|
||||
level.chatCommands[level.chatCommands.size] = "read";
|
||||
thread onSay();
|
||||
thread onPlayerConnect();
|
||||
}
|
||||
onPlayerConnect()
|
||||
{
|
||||
while(true)
|
||||
{
|
||||
level waittill("connected", player);
|
||||
player thread tryCallApi("register");
|
||||
}
|
||||
}
|
||||
onSay()
|
||||
{
|
||||
while(true)
|
||||
{
|
||||
level waittill("say", string, player);
|
||||
iprintlnBold(string + " " + player.name);
|
||||
player thread checkString(string);
|
||||
}
|
||||
}
|
||||
checkString(string)
|
||||
{
|
||||
if(string[0] != "!" && string[0] != "-")
|
||||
return;
|
||||
string = GetSubStr(string,1); //GetSubStr( <string>, <start index>, <end index> )
|
||||
iPrintln(string);
|
||||
cmd = strTok(string, " ");
|
||||
foreach(chat in level.chatCommands)
|
||||
{
|
||||
if(chat == cmd[0])
|
||||
self callApi(chat);
|
||||
}
|
||||
}
|
||||
callApi(string)
|
||||
{
|
||||
list = httpGet(level.api + "");
|
||||
list waittill("done", success, data);
|
||||
if(!success)
|
||||
return "error";
|
||||
iPrintln("^2green");
|
||||
return data;
|
||||
}
|
||||
tryCallApi(parameter)
|
||||
{
|
||||
data = self callApi("!" + parameter + "-" + self.guid);
|
||||
if(!isDefined(data))
|
||||
self iPrintlnBold(parameter + " was successful");
|
||||
else if(data == "error")
|
||||
self iPrintlnBold("^1error calling the api");
|
||||
else
|
||||
{
|
||||
wait 2;
|
||||
ar = strTok(data, "|");
|
||||
foreach(a in ar)
|
||||
self iPrintlnBold(a);
|
||||
}
|
||||
}
|
||||
991
gunfun/mod/main.gsc
Executable file
991
gunfun/mod/main.gsc
Executable file
@@ -0,0 +1,991 @@
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_utility;
|
||||
#include maps\mp\gametypes\_hud_util;
|
||||
|
||||
/////////////////////
|
||||
//
|
||||
// Gamemodes:
|
||||
//
|
||||
// - basic
|
||||
// - team gungame
|
||||
// - no streaks
|
||||
// - snipers only
|
||||
// - kill confirmed
|
||||
// - pistol & shotgun only (disabled)
|
||||
|
||||
Init()
|
||||
{
|
||||
loadSettings();
|
||||
thread mod\weapons::loadWeapons();
|
||||
thread mod\streaks::loadStreaks();
|
||||
thread mod\vote::loadVote(); // does not work
|
||||
thread onPlayerConnect();
|
||||
thread deleteSentries();
|
||||
thread launchGame();
|
||||
}
|
||||
setGamemodes()
|
||||
{
|
||||
level.gungamemodes = [];
|
||||
level.gungamemodes[level.gungamemodes.size] = "Fungame"; // God of Hellfire addition
|
||||
level.gungamemodes[level.gungamemodes.size] = "Classic";
|
||||
// level.gungamemodes[level.gungamemodes.size] = "Classic"; // raising the chance
|
||||
// level.gungamemodes[level.gungamemodes.size] = "Classic";
|
||||
// level.gungamemodes[level.gungamemodes.size] = "No Streaks";
|
||||
// level.gungamemodes[level.gungamemodes.size] = "Snipers only";
|
||||
//level.gungamemodes[level.gungamemodes.size] = "Pistol & Shotguns only"; // works but is it fun?
|
||||
// level.gungamemodes[level.gungamemodes.size] = "Team Gungame";
|
||||
// level.gungamemodes[level.gungamemodes.size] = "Kill Confirmed";
|
||||
}
|
||||
initializeGametype(type) // called in vote.gsc after first map
|
||||
{
|
||||
setDvar("gunmode", type);
|
||||
if(type == "Team Gungame")
|
||||
setDvar("g_gametype", "gungame_team");
|
||||
else
|
||||
setDvar("g_gametype", "gungame");
|
||||
switch(type)
|
||||
{
|
||||
case "Classic":
|
||||
setDvar("global_health", 60);
|
||||
setDvar("speed", 1.2);
|
||||
setDvar("streaks_online", 1);
|
||||
setDvar("jump_height", 60);
|
||||
setDvar("amount_weapons", 100);
|
||||
setDvar("shuffle_weapons", 1);
|
||||
break;
|
||||
case "No Streaks":
|
||||
setDvar("global_health", 70);
|
||||
setDvar("speed", 1.2);
|
||||
setDvar("streaks_online", 0);
|
||||
setDvar("jump_height", 70);
|
||||
break;
|
||||
case "Snipers only":
|
||||
setDvar("global_health", 70);
|
||||
setDvar("speed", 1.2);
|
||||
setDvar("streaks_online", 1);
|
||||
setDvar("jump_height", 70);
|
||||
break;
|
||||
case "Pistol & Shotguns only":
|
||||
setDvar("global_health", 70);
|
||||
setDvar("speed", 1.2);
|
||||
setDvar("streaks_online", 1);
|
||||
setDvar("jump_height", 70);
|
||||
break;
|
||||
case "Team Gungame":
|
||||
setDvar("global_health", 70);
|
||||
setDvar("speed", 1.2);
|
||||
setDvar("streaks_online", 1);
|
||||
setDvar("jump_height", 70);
|
||||
break;
|
||||
case "Kill Confirmed":
|
||||
setDvar("global_health", 100);
|
||||
setDvar("speed", 1);
|
||||
setDvar("streaks_online", 1);
|
||||
setDvar("jump_height", 70);
|
||||
break;
|
||||
case "Fungame":
|
||||
setDvar("global_health", 60);
|
||||
setDvar("speed", 1.5);
|
||||
setDvar("streaks_online", 1);
|
||||
setDvar("jump_height", 0.5);
|
||||
setDvar("amount_weapons", 150);
|
||||
break;
|
||||
default: // not required
|
||||
setDvar("global_health", 70);
|
||||
setDvar("speed", 1.2);
|
||||
setDvar("streaks_online", 1);
|
||||
setDvar("jump_height", 70);
|
||||
setDvar("amount_weapons", 100);
|
||||
break;
|
||||
}
|
||||
}
|
||||
loadSettings()
|
||||
{
|
||||
/////////////////////// CUSTOM SETTINGS /////////////////////////////
|
||||
//SetDvarIfUninitialized("gunmode", "Classic");
|
||||
SetDvarIfUninitialized("gunmode", "Fungame");
|
||||
initializeGametype(getDvar("gunmode"));
|
||||
|
||||
if(getDvar("g_gametype") == "gungame_team")
|
||||
setDvar("amount_weapons", int(getDvarInt("amount_weapons")/4));
|
||||
|
||||
setDvar("shuffle_weapons", 0);
|
||||
setDvar("intermission", 15);
|
||||
SetDvarIfUninitialized("show_damage_ui", 1);
|
||||
setDvar("gunversion", "1.4 Remaster by ^1Santahunter - Modified by God of Hellfire");
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
setDvar("scr_" + (getDvar("g_gametype")) + "_timelimit", 0);
|
||||
setDvar("scr_" + (getDvar("g_gametype")) + "_scorelimit", 0);
|
||||
setDvar("ui_allow_teamchange", 0);
|
||||
setDvar("testClients_watchKillcam", 0);
|
||||
setDvar("scr_game_hardpoints", 0);
|
||||
setDvar("scr_game_graceperiod", 0);
|
||||
setDvar("scr_game_matchstarttime", 0);
|
||||
setDvar("scr_game_playerwaittime", 0);
|
||||
setDvar("g_hardcore", 0);
|
||||
|
||||
level.state = "prematch";
|
||||
level.markerIcon = "ui_host";
|
||||
level.teamKills = [];
|
||||
level.teamKills["allies"] = 0;
|
||||
level.teamKills["axis"] = 0;
|
||||
level.teamKills["allies_weapon"] = 1;
|
||||
level.teamKills["axis_weapon"] = 1;
|
||||
precacheShader(level.markerIcon);
|
||||
setGamemodes();
|
||||
|
||||
// Bot Management
|
||||
setDvar("bots_main", 1);
|
||||
setDvar("bots_manage_fill", 8);
|
||||
setDvar("bots_skill", 3);
|
||||
}
|
||||
deleteSentries()
|
||||
{
|
||||
turret = GetEntArray("misc_turret","classname");
|
||||
for(i=0;i<turret.size;i++)
|
||||
turret[i] delete();
|
||||
}
|
||||
launchGame()
|
||||
{
|
||||
hud = createServerFontString("hudbig", 1);
|
||||
hud setPoint("CENTER", "CENTER", 0,-80);
|
||||
hud.color = (1,1,0);
|
||||
hud.glowAlpha = 1;
|
||||
hud.glowColor = (.7,0,0);
|
||||
hud setText("Game starting in");
|
||||
|
||||
value = createServerFontString("hudbig", 1.75);
|
||||
value setPoint("CENTER", "CENTER", 0,0);
|
||||
value.glowAlpha = 1;
|
||||
value.color = (1,1,0);
|
||||
value.glowAlpha = 1;
|
||||
value.glowColor = (.7,0,0);
|
||||
|
||||
for(i = getDvarInt("intermission");i > 0;i--)
|
||||
{
|
||||
value changeFontScaleOverTime(1);
|
||||
value.fontScale = 0.5;
|
||||
value setValue(i);
|
||||
wait 1;
|
||||
value.fontScale = 1.75;
|
||||
foreach(player in level.players)
|
||||
{
|
||||
player playLocalSound("ui_mp_suitcasebomb_timer");
|
||||
}
|
||||
}
|
||||
level.state = "ingame";
|
||||
value setValue(0);
|
||||
foreach(player in level.players)
|
||||
{
|
||||
player enableWeapons();
|
||||
player visionSetNakedForPlayer(getDvar("mapname"), 2);
|
||||
player setMoveSpeedScale(1.25);
|
||||
}
|
||||
|
||||
setDvar("jump_height", 60);
|
||||
hud destroy();
|
||||
value destroy();
|
||||
//player freezeControls(false);
|
||||
}
|
||||
onPlayerConnect()
|
||||
{
|
||||
while(true)
|
||||
{
|
||||
level waittill("connected", player);
|
||||
player thread onPlayerSpawned();
|
||||
}
|
||||
}
|
||||
onPlayerSpawned()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self thread firstSpawn();
|
||||
while(true)
|
||||
{
|
||||
self waittill("spawned_player");
|
||||
self thread loadSetup();
|
||||
// self thread test();
|
||||
}
|
||||
}
|
||||
firstSpawn()
|
||||
{
|
||||
self endon("disconnect");
|
||||
team = getCorrectTeam();
|
||||
self thread setStartWeapon(team);
|
||||
self.firstSpawn = true;
|
||||
self.knifeKills = 0;
|
||||
self.gungameKills = 0;
|
||||
self.streaks = [];
|
||||
self setClientDvar("cg_drawSplatter", 1);
|
||||
self.hud_damagefeedback.color = (1,0,0);
|
||||
self.line = self createRectangle("CENTER", "LEFT", 0,-90,300,5,(1,1,0),"line_horizontal",1);
|
||||
self thread onKilling();
|
||||
self thread createUI();
|
||||
self thread refillOnFire();
|
||||
self thread watchVersion();
|
||||
self thread FPSBoost();
|
||||
if(getDvar("g_gametype") == "gungame_team")
|
||||
self thread upgradeOnTeamKills();
|
||||
for(i=1;i<3;i++)
|
||||
self setClientDvar("lowAmmoWarningNoAmmoColor" + i, 0, 0, 0, 0);
|
||||
wait .2;
|
||||
self notify("menuresponse", game["menu_team"], team);
|
||||
wait .1;
|
||||
self notify("menuresponse", "changeclass", "class1");
|
||||
wait .1;
|
||||
self.firstSpawn = false;
|
||||
self thread tryCreateMarkerIcons();
|
||||
}
|
||||
getCorrectTeam()
|
||||
{
|
||||
if(getDvar("g_gametype") != "gungame_team")
|
||||
return "allies";
|
||||
allies = 0;
|
||||
axis = 0;
|
||||
foreach(player in level.players)
|
||||
{
|
||||
if(player.team == "allies")
|
||||
allies++;
|
||||
else if(player.team == "axis")
|
||||
axis++;
|
||||
}
|
||||
if(allies >= axis)
|
||||
return "allies";
|
||||
return "axis";
|
||||
}
|
||||
setStartWeapon(team)
|
||||
{
|
||||
if(getDvar("g_gametype") != "gungame_team")
|
||||
self.current = 1;
|
||||
else
|
||||
self.current = level.teamKills[team + "_weapon"];
|
||||
}
|
||||
loadSetup()
|
||||
{
|
||||
self hide();
|
||||
self thread mod\streaks::setStreaks();
|
||||
self takeAllWeapons();
|
||||
self _clearPerks();
|
||||
self thread updateWeapon();
|
||||
self.maxhp = getDvarInt("global_health");
|
||||
self.maxhealth = self.maxhp;
|
||||
self.health = self.maxhealth;
|
||||
self.streaking = 0;
|
||||
self.speed = false;
|
||||
self.isJugger = false;
|
||||
self.moveSpeedScaler = getDvarFloat("speed");
|
||||
self setMoveSpeedScale(getDvarFloat("speed"));
|
||||
self maps\mp\perks\_perks::givePerk("specialty_fastreload"); // due to icys request :)
|
||||
self maps\mp\perks\_perks::givePerk("specialty_falldamage"); // due to icys request :)
|
||||
self maps\mp\perks\_perks::givePerk("specialty_quickdraw");
|
||||
|
||||
self thread takeInvalidWeapon();
|
||||
if(level.state == "prematch")
|
||||
{
|
||||
//self freezeControls(true);
|
||||
self setMoveSpeedScale(0);
|
||||
self disableWeapons();
|
||||
self visionSetNakedForPlayer("blacktest", 0);
|
||||
waitFrame();
|
||||
if(level.state == "prematch")
|
||||
self setMoveSpeedScale(0);
|
||||
}
|
||||
}
|
||||
upgradeOnTeamKills()
|
||||
{
|
||||
self endon("disconnect");
|
||||
while(true)
|
||||
{
|
||||
level waittill("upgrade_" + self.team);
|
||||
wait .3;
|
||||
enemyTeam = self getEnemyTeam();
|
||||
self.current = level.teamKills[self.team + "_weapon"];
|
||||
self thread updateWeapon();
|
||||
self.weaponhud setText("Weapon: " + self.current + "/" + (level.gungameList.size) + "/^3" + level.teamKills[enemyTeam + "_weapon"]);
|
||||
}
|
||||
}
|
||||
getEnemyTeam()
|
||||
{
|
||||
if(self.team == "allies")
|
||||
return "axis";
|
||||
return "allies";
|
||||
}
|
||||
updateWeapon()
|
||||
{
|
||||
if(self.current > (level.gungameList.size - 1))
|
||||
{
|
||||
self thread tryNuke();
|
||||
return;
|
||||
}
|
||||
//self iPrintlnBold(level.gungameList[self.current]);
|
||||
variant = randomInt(9);
|
||||
if(getDvar("gunmode") == "Fungame")
|
||||
variant = 0;
|
||||
if (isSubstr(level.gungameList[self.current], "_akimbo"))
|
||||
self giveWeapon(level.gungameList[self.current], variant, true);
|
||||
else
|
||||
self giveWeapon(level.gungameList[self.current], variant, false);
|
||||
self giveWeapon("onemanarmy_mp");
|
||||
self takeWeapon(self getCurrentWeapon());
|
||||
self giveMaxAmmo(level.gungameList[self.current]);
|
||||
waitFrame();
|
||||
self switchtoweaponimmediate(level.gungameList[self.current]);
|
||||
waitFrame();
|
||||
if(level.state == "prematch" || level.state == "ingame")
|
||||
self show();
|
||||
if(self.isJugger)
|
||||
self setMoveSpeedScale(.7);
|
||||
else if(self.speed)
|
||||
self setMoveSpeedScale(1.6);
|
||||
if(level.state == "prematch")
|
||||
{
|
||||
self setMoveSpeedScale(0);
|
||||
if(level.state == "prematch")
|
||||
self setMoveSpeedScale(0);
|
||||
}
|
||||
if(self getCurrentWeapon() == "none" && !self isMantling() && !self isOnLadder()) // in rare case weapon does not exist
|
||||
{
|
||||
self updateWeapon();
|
||||
}
|
||||
}
|
||||
refillOnFire()
|
||||
{
|
||||
self endon("disconnect");
|
||||
while(true)
|
||||
{
|
||||
self waittill("weapon_fired");
|
||||
weapon = self getCurrentWeapon();
|
||||
if(weapon == "at4_mp" || weapon == "rpg_mp" || weapon == "m79_mp")
|
||||
{
|
||||
self giveMaxAmmo(weapon);
|
||||
}
|
||||
}
|
||||
}
|
||||
onKilling() {
|
||||
self endon("disconnect");
|
||||
level endon("nuke");
|
||||
self.multiplier = 0;
|
||||
self.amount = 0;
|
||||
//kills = self.pers["kills"];
|
||||
kills = 0;
|
||||
refreshCounter = 0;
|
||||
self.scoretext = self createText("hudbig", 1, "CENTER", "CENTER", 0, 0, .7,"");
|
||||
self.scoretext_amount = self createText("hudbig", 1, "CENTER", "CENTER", -10, 20, .7,"");
|
||||
self.multitext = [];
|
||||
for(i=2;i<6;i++)
|
||||
self.multitext[i] = self createText("hudbig", .6, "CENTER", "CENTER", 50, (i * 20), .7,"");
|
||||
while(true)
|
||||
{
|
||||
wait .3;
|
||||
if(kills > self.gungameKills) // not called on team gungame
|
||||
{
|
||||
self thread scorepopup(-100);
|
||||
kills--;
|
||||
refreshCounter++;
|
||||
if(getDvar("gunmode") == "Fungame")
|
||||
{
|
||||
killsInGun = (self.gungameKills % 2);
|
||||
self.weaponhud setText("Weapon: " + self.current + "/" + (level.gungameList.size-1) + " (" + killsInGun + "/2)");
|
||||
}
|
||||
else
|
||||
self.weaponhud setText("Weapon: " + self.current + "/" + (level.gungameList.size-1));
|
||||
self refreshCounter(refreshCounter);
|
||||
self updateRatio();
|
||||
}
|
||||
else if(kills < self.gungameKills)
|
||||
{
|
||||
kills++;
|
||||
refreshCounter++;
|
||||
self thread scorepopup(100);
|
||||
self.streaking++;
|
||||
if(getDvar("g_gametype") != "gungame_team")
|
||||
{
|
||||
if(getDvar("gunmode") == "Fungame")
|
||||
{
|
||||
if(self.gungameKills % 2 == 0)
|
||||
{
|
||||
self.current++;
|
||||
self thread updateWeapon();
|
||||
}
|
||||
killsInGun = (self.gungameKills % 2);
|
||||
self.weaponhud setText("Weapon: " + self.current + "/" + (level.gungameList.size-1) + " (" + killsInGun + "/2)");
|
||||
}
|
||||
else
|
||||
{
|
||||
self.current++;
|
||||
self thread updateWeapon();
|
||||
self.weaponhud setText("Weapon: " + self.current + "/" + (level.gungameList.size-1));
|
||||
}
|
||||
}
|
||||
if(self.current >= (level.gungameList.size-5) && !isDefined(self.markerIcon))
|
||||
self thread initCreateMarkerIcon();
|
||||
self refreshCounter(refreshCounter);
|
||||
self updateRatio();
|
||||
}
|
||||
}
|
||||
}
|
||||
updateRatio()
|
||||
{
|
||||
if(self.deaths != 0)
|
||||
ratio = (self.kills/self.deaths);
|
||||
else
|
||||
ratio = self.kills;
|
||||
self.ratiohud setValue(floatToString(ratio));
|
||||
}
|
||||
refreshCounter(refreshCounter)
|
||||
{
|
||||
if(refreshCounter == 10)
|
||||
{
|
||||
refreshCounter = 0;
|
||||
self.weaponhud destroy();
|
||||
self createWeaponHud();
|
||||
}
|
||||
}
|
||||
warning(friendly)
|
||||
{
|
||||
self notify("warning");
|
||||
if(friendly == 0)
|
||||
warning = self createText("hudbig", .8, "CENTER", "CENTER", 0, 130, 1,"Enemy's powershield absorbed damage!");
|
||||
else if(friendly == 1)
|
||||
warning = self createText("hudbig", .8, "CENTER", "CENTER", 0, 130, 1,"Powershield absorbed damage!");
|
||||
else if(friendly == 2)
|
||||
warning = self createText("hudbig", .8, "CENTER", "CENTER", 0, 130, 1,"Enemy demoted you!");
|
||||
else
|
||||
warning = self createText("hudbig", .8, "CENTER", "CENTER", 0, 130, 1,"You demoted yourself!");
|
||||
self thread clearWarning(warning);
|
||||
warning.glowColor = (1,0,0);
|
||||
warning fadeovertime(5);
|
||||
warning.alpha = 0;
|
||||
wait 5;
|
||||
if(isDefined(warning))
|
||||
warning destroy();
|
||||
self notify("warning_end");
|
||||
}
|
||||
clearWarning(hud)
|
||||
{
|
||||
self endon("warning_end");
|
||||
self waittill("warning");
|
||||
if(isDefined(hud))
|
||||
hud destroy();
|
||||
}
|
||||
createText(font,fontScale,align,relative,x,y,alpha,input,color,gcolor,galpha)
|
||||
{
|
||||
text = self createFontString(font,fontScale,self);
|
||||
text setPoint(align,relative,x,y);
|
||||
text.sort = 999;
|
||||
text.alpha = alpha;
|
||||
if(isDefined(color))
|
||||
text.color = color;
|
||||
if(isDefined(gcolor))
|
||||
text.glowcolor = gcolor;
|
||||
if(isDefined(galpha))
|
||||
text.glowalpha = galpha;
|
||||
else
|
||||
text.glowalpha = 1;
|
||||
text setText(input);
|
||||
text.HideWhenInMenu = true;
|
||||
return text;
|
||||
}
|
||||
scorepopup(amount)
|
||||
{
|
||||
self endon("disconnect");
|
||||
self notify("scoring");
|
||||
self endon("scoring");
|
||||
self.multiplier++;
|
||||
self.amount = self.amount + amount;
|
||||
color = (0,0,0);
|
||||
glowColor = (0,0,0);
|
||||
switch(self.multiplier)
|
||||
{
|
||||
case 1:
|
||||
color = (1,1,1);
|
||||
glowColor = (0,1,0);
|
||||
break;
|
||||
case 2:
|
||||
color = (1,1,0);
|
||||
glowColor = (1,0,0);
|
||||
break;
|
||||
case 3:
|
||||
color = (0,0,0);
|
||||
glowColor = (1,0,0);
|
||||
break;
|
||||
default:
|
||||
color = (0,0,0);
|
||||
glowColor = (0,0,1);
|
||||
break;
|
||||
}
|
||||
self.scoretext.alpha = 1;
|
||||
self.scoretext_amount.alpha = 1;
|
||||
self.scoretext.color = color;
|
||||
self.scoretext.glowColor = glowColor;
|
||||
self.scoretext SetPulseFX( 40, 2000, 600 );
|
||||
if(getDvar("gunmode") == "Kill Confirmed")
|
||||
self.scoretext setText("Upgraded!^3");
|
||||
else
|
||||
self.scoretext setText("Killed!^3");
|
||||
self.scoretext_amount.color = color;
|
||||
self.scoretext_amount.glowColor = glowColor;
|
||||
self.scoretext_amount SetPulseFX( 40, 2000, 600 );
|
||||
self.scoretext_amount setText("+" + self.amount);
|
||||
if(self.multiplier > 1)
|
||||
{
|
||||
self.multitext[self.multiplier].alpha = 1;
|
||||
self.multitext[self.multiplier] fadeOverTime(0.1);
|
||||
self.multitext[self.multiplier].color = color;
|
||||
self.multitext[self.multiplier].glowColor = glowColor;
|
||||
}
|
||||
if(self.multiplier == 2)
|
||||
{
|
||||
self thread lowerMultitext(self.multiplier);
|
||||
self.multitext[self.multiplier] setText("Double Kill!");
|
||||
}
|
||||
else if(self.multiplier == 3)
|
||||
self.multitext[self.multiplier] setText("Triple Kill!");
|
||||
else if(self.multiplier == 4)
|
||||
self.multitext[self.multiplier] setText("Multi Kill!");
|
||||
else if(self.multiplier > 4)
|
||||
{
|
||||
color = [];
|
||||
for(i = 0;i < 13;i++)
|
||||
color[i] = randomInt(9);
|
||||
difference = self.multiplier - 4;
|
||||
self.multitext[5] setText("^3x" + difference + " ^" + color[0] + "K^" + color[1] + "i^" + color[2] + "l^" + color[3] + "l^" + color[4] + "i^" + color[5] + "n^" + color[6] + "g ^" + color[7] + "S^" + color[8] + "p^" + color[9] + "r^" + color[10] + "e^" + color[11] + "e^" + color[12] + "!");
|
||||
}
|
||||
self thread lowerMultiplier();
|
||||
}
|
||||
lowerMultiplier()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self notify("lowering");
|
||||
self endon("lowering");
|
||||
wait 5;
|
||||
self notify("start_lowering");
|
||||
self.multiplier = 0;
|
||||
self.amount = 0;
|
||||
}
|
||||
lowerMultitext(multiplier)
|
||||
{
|
||||
self waittill_any("start_lowering", "disconnect");
|
||||
for(i=2;i<6;i++)
|
||||
{
|
||||
self.multitext[i] fadeOverTime(3);
|
||||
self.multitext[i].alpha = 0;
|
||||
wait .75;
|
||||
}
|
||||
wait 4;
|
||||
}
|
||||
tryNuke()
|
||||
{
|
||||
if(isDefined(level.startNuke))
|
||||
return;
|
||||
level.state = "aftermatch";
|
||||
level notify("nuke");
|
||||
if(getDvar("g_gametype") != "gungame_team")
|
||||
self.weaponhud setText("Weapon: " + (level.gungameList.size-1) + "/" + (level.gungameList.size-1));
|
||||
|
||||
//self thread mod\api::tryCallApi("increment");
|
||||
foreach(player in level.players)
|
||||
player hide();
|
||||
self thread maps\mp\killstreaks\_nuke::tryUseNuke();
|
||||
}
|
||||
createUI()
|
||||
{
|
||||
self thread createWeaponHud();
|
||||
self thread Weaponnumber();
|
||||
self thread createRatioHud();
|
||||
}
|
||||
createWeaponHud()
|
||||
{
|
||||
self.weaponhud = self createFontString("hudsmall", 1);
|
||||
self.weaponhud setPoint("LEFT", "CENTER", -410, -105);
|
||||
self.weaponhud.glowalpha = .5;
|
||||
self.weaponhud.color = (1,1,0);
|
||||
self.weaponhud.hideWhenInMenu = true;
|
||||
self.weaponhud.glowcolor = (1,0,0);
|
||||
}
|
||||
createRatioHud()
|
||||
{
|
||||
self.ratiohud = self createFontString("hudsmall", 1);
|
||||
self.ratiohud setPoint("LEFT", "CENTER", -410, -125);
|
||||
self.ratiohud.color = (1,1,0);
|
||||
self.ratiohud.glowalpha = .3;
|
||||
self.ratiohud.glowcolor = (1,0,0);
|
||||
self.ratiohud.label = &"Ratio: ";
|
||||
self.ratiohud.alpha = 0;
|
||||
self waittill_any("death", "killed_lethal");
|
||||
self.ratiohud fadeOverTime(2);
|
||||
self.ratiohud.alpha = 1;
|
||||
}
|
||||
Weaponnumber() // deprecated
|
||||
{
|
||||
self notify("weaponnumber");
|
||||
self endon("weaponnumber");
|
||||
self endon("disconnect");
|
||||
kills = 0;
|
||||
oldkills = 0;
|
||||
wait 1;
|
||||
while(1)
|
||||
{
|
||||
kills++;
|
||||
self.weaponhud setText("Weapon: " + self.current + "/" + (level.gungameList.size - 1));
|
||||
//self waittill("killed_enemy");
|
||||
self waittill("update_weaponNumber");
|
||||
//progress updateBar(self.current/level.weapon.size);
|
||||
if(kills >= 10)
|
||||
{
|
||||
self.weaponhud destroy();
|
||||
self createWeaponHud();
|
||||
self thread Weaponnumber();
|
||||
}
|
||||
if(oldkills != self.kills)
|
||||
{
|
||||
oldkills = self.kills;
|
||||
if(self.deaths != 0)
|
||||
ratio = (self.kills/self.deaths);
|
||||
else
|
||||
ratio = self.kills;
|
||||
self.ratiohud setValue(floatToString(ratio));
|
||||
}
|
||||
}
|
||||
}
|
||||
floatToString(float)
|
||||
{
|
||||
string = "" + float;
|
||||
if(string.size > 5)
|
||||
string = getSubStr(string, 0, 5);
|
||||
return StringToFloat(string);
|
||||
}
|
||||
takeInvalidWeapon()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("death");
|
||||
level endon("nuke");
|
||||
counter = 0;
|
||||
wait 3;
|
||||
while(1)
|
||||
{
|
||||
waitFrame();
|
||||
if(!isAlive(self))
|
||||
continue;
|
||||
if(self isMantling())
|
||||
continue;
|
||||
weapon = self getCurrentWeapon();
|
||||
if(!self hasWeapon(level.gungameList[self.current]))
|
||||
{
|
||||
counter++;
|
||||
if(counter == 2)
|
||||
{
|
||||
counter = 0;
|
||||
level.gungameList[self.current] = mod\weapons::setWeapon("peacekeeper_mp");
|
||||
}
|
||||
}
|
||||
if(weapon != level.gungameList[self.current])
|
||||
{
|
||||
self takeAllWeapons();
|
||||
self thread updateWeapon();
|
||||
wait 2.5;
|
||||
}
|
||||
}
|
||||
}
|
||||
takeInvalidWeapon2()
|
||||
{
|
||||
self endon("disconnect");
|
||||
level endon("nuke");
|
||||
counter = 0;
|
||||
wait 3;
|
||||
while(1)
|
||||
{
|
||||
wait .25;
|
||||
if(!isAlive(self))
|
||||
continue;
|
||||
weapon = self getCurrentWeapon();
|
||||
if((weapon != level.gungameList[self.current] && weapon != "killstreak_uav_mp") || weapon == "none")
|
||||
{
|
||||
weaponArray = strTok(weapon, "_");
|
||||
//if(weapon == ("gl_" + weaponArray[1] + "_mp"))
|
||||
// continue;
|
||||
//if(weapon == "none" && self isMantling())
|
||||
// continue;
|
||||
//self iPrintln("false");
|
||||
//iPrintlnBold(weapon);
|
||||
self takeAllWeapons();
|
||||
//if(!self hasWeapon(level.gungameList[self.current]) || weapon == "none")
|
||||
//{
|
||||
counter++;
|
||||
if(counter == 40) // debug
|
||||
{
|
||||
self.gungameKills++;
|
||||
counter = 0;
|
||||
self.current++;
|
||||
self thread updateWeapon();
|
||||
wait 1;
|
||||
}
|
||||
else
|
||||
self updateWeapon();
|
||||
wait .2;
|
||||
//}
|
||||
//if(level.gungameList[self.current] == "throwingknife_mp")
|
||||
// self thread ThrowingKnife();
|
||||
if(!self.speed)
|
||||
{
|
||||
speed = level.speed;
|
||||
self setMoveSpeedScale(speed);
|
||||
if(self.hardmode == 1)
|
||||
{
|
||||
speed = level.speed * 0.8;
|
||||
self setMoveSpeedScale(speed);
|
||||
}
|
||||
self.moveSpeedScaler = speed;
|
||||
}
|
||||
}
|
||||
else if(weapon == "usp_tactical_mp")
|
||||
{
|
||||
speed = level.speed * 1.2;
|
||||
self setMoveSpeedScale(speed);
|
||||
self setWeaponAmmoClip("usp_tactical_mp", 0);
|
||||
self setWeaponAmmoStock("usp_tactical_mp", 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
ThrowingKnife()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self notify("tk");
|
||||
self endon("tk");
|
||||
for(;;)
|
||||
{
|
||||
self waittill( "grenade_fire", lightstick, weapName );
|
||||
if(weapName == "throwingknife_mp")
|
||||
{
|
||||
self giveWeapon("throwingknife_mp");
|
||||
self giveMaxAmmo("throwingknife_mp");
|
||||
}
|
||||
}
|
||||
}
|
||||
giveGun(weapon, variant)
|
||||
{
|
||||
if (!isDefined(variant))
|
||||
variant = randomInt(9);
|
||||
if (isSubstr(weapon, "_akimbo"))
|
||||
self giveWeapon(weapon, variant, true);
|
||||
else
|
||||
self giveWeapon(weapon, variant, false);
|
||||
}
|
||||
initCreateMarkerIcon()
|
||||
{
|
||||
rank = 1;
|
||||
foreach(player in level.players)
|
||||
{
|
||||
if(isDefined(player.markerIcon))
|
||||
rank++;
|
||||
}
|
||||
self.markerIcon = rank;
|
||||
self.markerIconsEnemies = [];
|
||||
self thread createWarnHUD();
|
||||
if(self.isJugger)
|
||||
self notify("isMarked");
|
||||
foreach(player in level.players)
|
||||
{
|
||||
if(player != self)
|
||||
{
|
||||
self thread createMarkerIcon(player);
|
||||
}
|
||||
}
|
||||
self waittill("disconnect");
|
||||
foreach(icon in self.markerIconsEnemies)
|
||||
{
|
||||
if(isDefined(icon))
|
||||
icon destroy();
|
||||
}
|
||||
}
|
||||
createMarkerIcon(player)
|
||||
{
|
||||
self.markerIconsEnemies[self.markerIconsEnemies.size] = NewClientHudElem(player);
|
||||
self.markerIconsEnemies[self.markerIconsEnemies.size-1] SetShader(level.markerIcon, 10, 10 );
|
||||
self.markerIconsEnemies[self.markerIconsEnemies.size-1].width = 10;
|
||||
self.markerIconsEnemies[self.markerIconsEnemies.size-1].height = 10;
|
||||
self.markerIconsEnemies[self.markerIconsEnemies.size-1].color = getColor(self.markerIcon);
|
||||
self.markerIconsEnemies[self.markerIconsEnemies.size-1].x = self.origin[ 0 ];
|
||||
self.markerIconsEnemies[self.markerIconsEnemies.size-1].y = self.origin[ 1 ];
|
||||
self.markerIconsEnemies[self.markerIconsEnemies.size-1].z = self.origin[ 2 ] + 55;
|
||||
self.markerIconsEnemies[self.markerIconsEnemies.size-1] SetWayPoint( true, true );
|
||||
self.markerIconsEnemies[self.markerIconsEnemies.size-1] SetTargetEnt(self);
|
||||
}
|
||||
getColor(rank)
|
||||
{
|
||||
if(rank == 1)
|
||||
return (1, 215/255, 0); // gold
|
||||
if(rank == 2)
|
||||
return (155/255,0,0); // darkred
|
||||
if(rank == 3)
|
||||
return (0,0,155/255); // darkblue
|
||||
return (191/255, 137/255, 112/255); // bronze
|
||||
}
|
||||
createWarnHUD()
|
||||
{
|
||||
/*
|
||||
warnHUD = self createFontString("hudsmall", 1.2);
|
||||
warnHUD setPoint("CENTER", "CENTER", 0, -10);
|
||||
warnHUD.glowalpha = .5;
|
||||
warnHUD.color = (155/255,0,0);
|
||||
warnHUD.hideWhenInMenu = true;
|
||||
warnHUD.glowcolor = (0,0,0);
|
||||
warnHUD setText("Final Game: You are marked for all enemies now!");
|
||||
wait 3;
|
||||
warnHUD destroy();
|
||||
*/
|
||||
self thread maps\mp\gametypes\_hud_message::hintMessage("Final Game: You are marked for all enemies now!");
|
||||
}
|
||||
tryCreateMarkerIcons()
|
||||
{
|
||||
foreach(player in level.players)
|
||||
{
|
||||
if(isDefined(player.markerIcon))
|
||||
{
|
||||
player thread createMarkerIcon(self);
|
||||
}
|
||||
}
|
||||
}
|
||||
createRectangle(align, relative, x, y, width, height, color, shader, sort)
|
||||
{
|
||||
hud = newClientHudElem(self);
|
||||
hud.sTexType = "bar";
|
||||
hud.width = width;
|
||||
hud.height = height;
|
||||
hud.align = align;
|
||||
hud.relative = relative;
|
||||
hud.xOffset = 0;
|
||||
hud.yOffset = 0;
|
||||
hud.children = [];
|
||||
hud.sort = sort;
|
||||
hud.color = color;
|
||||
hud setParent(level.uiParent);
|
||||
hud setShader(shader,width,height);
|
||||
hud.hidden = false;
|
||||
hud.HideWhenInMenu = true;
|
||||
hud setPoint(align,relative,x,y);
|
||||
return hud;
|
||||
}
|
||||
upgradeTeamUI(team)
|
||||
{
|
||||
fontElem = newTeamHudElem( team );
|
||||
fontElem.elemType = "font";
|
||||
fontElem.font = "default";
|
||||
fontElem.fontscale = 1.6;
|
||||
fontElem.baseFontScale = 1.6;
|
||||
fontElem.glowAlpha = 1;
|
||||
fontElem.color = (1,1,0);
|
||||
fontElem.glowColor = (1,0,0);
|
||||
fontElem.x = 0;
|
||||
fontElem.y = 0;
|
||||
fontElem.width = 0;
|
||||
fontElem.height = int(level.fontHeight * 1.6);
|
||||
fontElem.xOffset = 0;
|
||||
fontElem.yOffset = 0;
|
||||
fontElem.children = [];
|
||||
fontElem setParent( level.uiParent );
|
||||
fontElem.hidden = false;
|
||||
fontElem setText("Weaponupgrade for your team!");
|
||||
fontElem setPoint("CENTER", "TOP", 0,200);
|
||||
wait 3;
|
||||
fontElem fadeOverTime(2);
|
||||
fontElem.alpha = 0;
|
||||
wait 2;
|
||||
fontElem destroy();
|
||||
}
|
||||
upgradeEnemyWeaponUI(team)
|
||||
{
|
||||
foreach(player in level.players)
|
||||
{
|
||||
if(player.team == team)
|
||||
{
|
||||
player.weaponhud setText("Weapon: " + player.current + "/" + (level.gungameList.size) + "/^3" + level.teamKills[player getEnemyTeam() + "_weapon"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
spawnDogTag(victim, attacker)
|
||||
{
|
||||
picked = false;
|
||||
dogtag = spawn("script_model", victim.origin+(0,0,30));
|
||||
//dogtag setModel("test_sphere_silver");
|
||||
//playFxOnTag( level.spawnGlow["enemy"], self, "pelvis" );
|
||||
//playFxOnTag( level.spawnGlow["friendly"], self, "j_head" );
|
||||
fx = spawnFx(level.dogtag, dogtag.origin);
|
||||
fx2 = spawnFx(level.dogtag2, dogtag.origin);
|
||||
triggerFx(fx);
|
||||
triggerFx(fx2);
|
||||
while(!isDefined(level.startNuke) && !picked)
|
||||
{
|
||||
foreach(player in level.players)
|
||||
{
|
||||
if(Distance(player.origin, dogtag.origin) < 75 && isAlive(player))
|
||||
{
|
||||
if(player != victim)
|
||||
player.gungameKills++;
|
||||
dogtag delete();
|
||||
fx delete();
|
||||
fx2 delete();
|
||||
picked = true;
|
||||
}
|
||||
}
|
||||
wait .1;
|
||||
}
|
||||
if(isDefined(fx))
|
||||
{
|
||||
fx delete();
|
||||
fx2 delete();
|
||||
}
|
||||
if(!picked)
|
||||
dogtag delete();
|
||||
}
|
||||
FPSBoost()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self notifyonplayercommand("FPS", "+actionslot 2");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("FPS");
|
||||
self setClientDvar("r_fullbright", 1);
|
||||
self waittill("FPS");
|
||||
self setClientDvar("r_fullbright", 0);
|
||||
}
|
||||
}
|
||||
test()
|
||||
{
|
||||
self notifyOnPlayerCommand("F", "+activate");
|
||||
self thread test2();
|
||||
while(true)
|
||||
{
|
||||
self waittill("F");
|
||||
//self thread tryNuke();
|
||||
// setDvar("g_gametype", "gungame_team");
|
||||
// map("mp_rust");
|
||||
self suicide();
|
||||
}
|
||||
}
|
||||
test2()
|
||||
{
|
||||
self notifyOnPlayerCommand("G", "+frag");
|
||||
self thread test2();
|
||||
while(true)
|
||||
{
|
||||
self waittill("G");
|
||||
setDvar("g_gametype", "gungame");
|
||||
setDvar("gunmode", "Kill Confirmed");
|
||||
map("mp_rust");
|
||||
}
|
||||
}
|
||||
watchVersion()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self notifyOnPlayerCommand("open", "+scores");
|
||||
self notifyOnPlayerCommand("close", "-scores");
|
||||
while(true)
|
||||
{
|
||||
self waittill("open");
|
||||
self.versionText = createFontString("hudbig", .65, self);
|
||||
self.versionText setPoint("CENTER", "BOTTOM", 0,-40);
|
||||
self.versionText setText(getDvar("gunversion"));
|
||||
self waittill("close");
|
||||
self.versionText destroy();
|
||||
}
|
||||
}
|
||||
714
gunfun/mod/streaks.gsc
Executable file
714
gunfun/mod/streaks.gsc
Executable file
@@ -0,0 +1,714 @@
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_utility;
|
||||
#include maps\mp\gametypes\_hud_util;
|
||||
|
||||
loadStreaks()
|
||||
{
|
||||
precacheShader("cardicon_helmet_brit_ww2");
|
||||
precacheShader("cardicon_boot");
|
||||
precacheShader("cardicon_headshot");
|
||||
precacheShader("cardicon_ghost_mic");
|
||||
precacheShader("cardicon_biohazard");
|
||||
precacheShader("cardicon_juggernaut_2");
|
||||
precacheShader("cardicon_paratrooper");
|
||||
precacheShader("cardicon_xray");
|
||||
precacheShader("dpad_killstreak_sentry");
|
||||
precacheShader("cardicon_b2");
|
||||
precacheShader("cardicon_fmj");
|
||||
precacheShader("cardicon_thebomb");
|
||||
precacheShader("cardicon_cod4");
|
||||
precacheShader("cardicon_loadedfinger");
|
||||
|
||||
level.streaks3 = [];
|
||||
level.streaks6 = [];
|
||||
level.streaks9 = [];
|
||||
// add
|
||||
// - no reload
|
||||
// - radioactive
|
||||
|
||||
level.streaks3[level.streaks3.size] = "No Recoil";
|
||||
level.streaks3[level.streaks3.size] = "Riotshield";
|
||||
level.streaks3[level.streaks3.size] = "Speed";
|
||||
level.streaks3[level.streaks3.size] = "No Reload";
|
||||
|
||||
level.streaks6[level.streaks6.size] = "Suicide Bomber";
|
||||
level.streaks6[level.streaks6.size] = "I.M.S";
|
||||
level.streaks6[level.streaks6.size] = "Explosive Bullets";
|
||||
level.streaks6[level.streaks6.size] = "Radioactive";
|
||||
|
||||
level.streaks9[level.streaks9.size] = "Juggernaut";
|
||||
level.streaks9[level.streaks9.size] = "Jetpack";
|
||||
level.streaks9[level.streaks9.size] = "XRay";
|
||||
}
|
||||
getStreak(which)
|
||||
{
|
||||
switch(which)
|
||||
{
|
||||
case 0:
|
||||
invalid = true;
|
||||
streak = undefined;
|
||||
while(invalid)
|
||||
{
|
||||
streak = level.streaks3[randomInt(level.streaks3.size)];
|
||||
if(!self.isJugger)
|
||||
invalid = false;
|
||||
else if(streak != "Speed")
|
||||
invalid = false;
|
||||
}
|
||||
return streak;
|
||||
case 1:
|
||||
return level.streaks6[randomInt(level.streaks6.size)];
|
||||
case 2:
|
||||
return level.streaks9[randomInt(level.streaks9.size)];
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
getStreakIcon(streak)
|
||||
{
|
||||
if(streak == "Riotshield")
|
||||
return "cardicon_helmet_brit_ww2";
|
||||
if(streak == "Speed")
|
||||
return "cardicon_boot";
|
||||
if(streak == "No Recoil")
|
||||
return "cardicon_headshot";
|
||||
if(streak == "Suicide Bomber")
|
||||
return "cardicon_ghost_mic";
|
||||
if(streak == "Radioactive")
|
||||
return "cardicon_biohazard"; //cardicon_hazard
|
||||
if(streak == "Juggernaut")
|
||||
return "cardicon_juggernaut_2";
|
||||
if(streak == "Jetpack")
|
||||
return "cardicon_paratrooper";
|
||||
if(streak == "XRay")
|
||||
return "cardicon_xray";
|
||||
if(streak == "Gl Sentry")
|
||||
return "dpad_killstreak_sentry";
|
||||
//return tableLookup( "mp/killstreakTable.csv", 1, "sentry", 14 );
|
||||
if(streak == "Bomber")
|
||||
return "cardicon_b2";
|
||||
if(streak == "Explosive Bullets")
|
||||
return "cardicon_fmj";
|
||||
if(streak == "I.M.S")
|
||||
return "cardicon_thebomb";
|
||||
if(streak == "Godmode")
|
||||
return "cardicon_chicken";
|
||||
if(streak == "No Reload")
|
||||
return "cardicon_loadedfinger";
|
||||
return "cardicon_cod4";
|
||||
}
|
||||
setStreaks()
|
||||
{
|
||||
if(!getDvarInt("streaks_online"))
|
||||
return;
|
||||
|
||||
self.streaks[0] = getStreak(0);
|
||||
self.streaks[1] = getStreak(1);
|
||||
self.streaks[2] = getStreak(2);
|
||||
|
||||
self thread drawStreaks();
|
||||
self thread onKilling();
|
||||
}
|
||||
drawStreaks()
|
||||
{
|
||||
if(isDefined(self.streakIcons[0]))
|
||||
{
|
||||
for(i=0;i<3;i++)
|
||||
{
|
||||
self.streakIcons[i] destroy();
|
||||
}
|
||||
self.streakText destroy();
|
||||
}
|
||||
self.streakIcons = [];
|
||||
for(index = 0;index < 3;index++)
|
||||
{
|
||||
self.streakIcons[index] = self createFontString( "objective", 2 );
|
||||
self.streakIcons[index].foreground = false;
|
||||
self.streakIcons[index].hideWhenInMenu = true;
|
||||
self.streakIcons[index].fontScale = 1;
|
||||
self.streakIcons[index].font = "hudbig";
|
||||
self.streakIcons[index].alpha = 1;
|
||||
self.streakIcons[index].glow = 1;
|
||||
self.streakIcons[index].glowColor = ( 0, 0, 1 );
|
||||
self.streakIcons[index].glowAlpha = 1;
|
||||
self.streakIcons[index].color = ( 1.0, 1.0, 1.0 );
|
||||
self.streakIcons[index] setPoint("RIGHT", "RIGHT", 0, 0-(index *45));
|
||||
self.streakIcons[index] setShader(getStreakIcon(self.streaks[index]), 40, 40 );
|
||||
}
|
||||
self.streakText = self createFontString( "objective", 2 );
|
||||
self.streakText.foreground = false;
|
||||
self.streakText.hideWhenInMenu = true;
|
||||
self.streakText.fontScale = 1;
|
||||
self.streakText.font = "hudbig";
|
||||
self.streakText.alpha = 1;
|
||||
self.streakText.glow = .3;
|
||||
self.streakText.glowColor = ( 1, 0, 0 );
|
||||
self.streakText.glowAlpha = 1;
|
||||
self.streakText.color = ( 1.0, 1.0, 0.0 );
|
||||
self.streakText setPoint("RIGHT", "RIGHT", -50, 0);
|
||||
}
|
||||
onKilling()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
level endon("nuke");
|
||||
spree = 0;
|
||||
value = 3;
|
||||
counter = 1;
|
||||
self.streakText setValue(value);
|
||||
while(true)
|
||||
{
|
||||
kills = self.kills;
|
||||
wait .1;
|
||||
if(kills != self.kills)
|
||||
{
|
||||
for(i = kills;i < self.kills;i++)
|
||||
{
|
||||
spree++;
|
||||
value--;
|
||||
if(spree == 3 || spree == 6 || spree == 9)
|
||||
{
|
||||
streak = self giveReward(spree);
|
||||
self thread doStreakPopup(spree,streak);
|
||||
if(spree == 9)
|
||||
spree = 0;
|
||||
}
|
||||
if(value == 0)
|
||||
{
|
||||
value = 3;
|
||||
if(counter < 3)
|
||||
{
|
||||
y = self.streakText.y - 45;
|
||||
self.streakText setPoint("RIGHT", "RIGHT", -50, y);
|
||||
counter++;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.streakText setPoint("RIGHT", "RIGHT", -50, 100);
|
||||
counter = 1;
|
||||
self.streaks[0] = getStreak(0);
|
||||
self.streaks[1] = getStreak(1);
|
||||
self.streaks[2] = getStreak(2);
|
||||
self thread drawStreaks();
|
||||
}
|
||||
}
|
||||
self.streakText setValue(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
doStreakPopup(spree, streak)
|
||||
{
|
||||
notifyHello = spawnstruct();
|
||||
notifyHello.glowColor = (0.0, 0.6, 0.3);
|
||||
notifyHello.titleText = spree + " Streak";
|
||||
notifyHello.notifyText = streak;
|
||||
notifyHello.iconName = getStreakIcon(streak);
|
||||
notifyHello.hideWhenInMenu = true;
|
||||
notifyHello.sound = "mp_level_up";
|
||||
self thread maps\mp\gametypes\_hud_message::notifyMessage( notifyHello );
|
||||
}
|
||||
giveReward(spree)
|
||||
{
|
||||
streak = "";
|
||||
if(spree == 3)
|
||||
streak = self.streaks[0];
|
||||
else if(spree == 6)
|
||||
streak = self.streaks[1];
|
||||
else if(spree == 9)
|
||||
streak = self.streaks[2];
|
||||
self thread giveStreak(streak);
|
||||
return streak;
|
||||
}
|
||||
giveStreak(streak)
|
||||
{
|
||||
switch(streak)
|
||||
{
|
||||
case "No Recoil":
|
||||
self player_recoilScaleOn(0);
|
||||
break;
|
||||
case "Speed":
|
||||
self.speed = true;
|
||||
wait 1;
|
||||
self maps\mp\perks\_perks::givePerk("specialty_lightweight");
|
||||
self maps\mp\perks\_perks::givePerk("specialty_lightweight");
|
||||
self setMoveSpeedScale(1.6);
|
||||
self.setMoveSpeedScale = 1.6;
|
||||
//self thread spawnFireLoop();
|
||||
break;
|
||||
case "Riotshield":
|
||||
self AttachShieldModel( "weapon_riot_shield_mp", "tag_shield_back" );
|
||||
break;
|
||||
case "Jetpack":
|
||||
self thread Jetpack();
|
||||
break;
|
||||
case "Suicide Bomber":
|
||||
self thread Suicidebomber();
|
||||
break;
|
||||
case "I.M.S":
|
||||
self thread tryUseIMS();
|
||||
self thread infoText("I.M.S");
|
||||
break;
|
||||
case "Juggernaut":
|
||||
self thread Juggernaut();
|
||||
break;
|
||||
case "XRay":
|
||||
self thread Wh();
|
||||
break;
|
||||
case "Explosive Bullets":
|
||||
self thread Explosive();
|
||||
break;
|
||||
case "No Reload":
|
||||
self thread NoReload();
|
||||
case "Radioactive":
|
||||
self thread Radioactive();
|
||||
break;
|
||||
default:
|
||||
self iPrintlnBold("^1ERROR: Unknown Streak!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
Radioactive()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("death");
|
||||
level endon("nuke");
|
||||
playFxOnTag( level.spawnGlow["enemy"], self, "pelvis" );
|
||||
playFxOnTag( level.spawnGlow["friendly"], self, "j_head" );
|
||||
//self SetPlayerIgnoreRadiusDamage( true );
|
||||
while(1)
|
||||
{
|
||||
wait .1;
|
||||
//self RadiusDamage(self.origin,120,50,40,self,"MOD_Explosive","nuke_mp");
|
||||
//RadiusDamage(self.origin, 50, 30, 20, self );
|
||||
foreach(player in level.players)
|
||||
{
|
||||
if(player == self)
|
||||
continue;
|
||||
if(getDvar("g_gametype") == "gungame_team")
|
||||
{
|
||||
if(player.team == self.team)
|
||||
continue;
|
||||
}
|
||||
if(Distance(player.origin,self.origin) < 120 && isAlive(player))
|
||||
{
|
||||
player thread maps\mp\gametypes\_damage::finishPlayerDamageWrapper( self, self, 4, 0, "MOD_EXPLOSIVE", "none", player.origin, player.origin, "none", 0, 0 );
|
||||
self thread maps\mp\gametypes\_damagefeedback::updateDamageFeedback("");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Suicidebomber()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self waittill("death");
|
||||
Earthquake( 0.4, 0.75, self.origin, 512 );
|
||||
MagicBullet("ac130_105mm_mp", self.origin+(0,0,20), self.origin, self);
|
||||
}
|
||||
Explosive()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("death");
|
||||
self notify("exploagain");
|
||||
self endon("exploagain");
|
||||
self.explodmg = 40;
|
||||
self.explomindmg = 20;
|
||||
self.explotime = .1;
|
||||
for(;;)
|
||||
{
|
||||
self waittill("weapon_fired");
|
||||
class = WeaponClass(self getCurrentWeapon());
|
||||
self setClassTime(class);
|
||||
forward = self getTagOrigin("j_head");
|
||||
end = self thread vector_scal(anglestoforward(self getPlayerAngles()),1000000);
|
||||
Location = BulletTrace( forward, end, 0, self )[ "position" ];
|
||||
playFx(level.explosionfx, Location);
|
||||
RadiusDamage(Location, 50, 30, 20, self );
|
||||
//self RadiusDamage(Location,250,self.explodmg,self.explomindmg,self,"MOD_Explosive","barrel_mp");
|
||||
wait self.explotime;
|
||||
}
|
||||
}
|
||||
Jetpack()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
self notify("jetpack");
|
||||
self endon("jetpack");
|
||||
self iPrintlnBold("^3Press ^1F ^7to use ^:Jetpack!");
|
||||
self.jetpack = 80;
|
||||
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
|
||||
self.fx = [];
|
||||
self.fx[0] = loadfx ("smoke/smoke_trail_white_heli");
|
||||
self.fx[1] = loadfx( "misc/flares_cobra" );
|
||||
JETPACKBACK = createPrimaryProgressBar( -275 );
|
||||
JETPACKBACK.bar.x = 40;
|
||||
JETPACKBACK.x = 100;
|
||||
JETPACKTXT = createPrimaryProgressBarText( -275 );
|
||||
JETPACKTXT.x=100;
|
||||
if(randomInt(10) < 8)
|
||||
JETPACKTXT settext("^:Jetpack");
|
||||
else
|
||||
{
|
||||
JETPACKTXT settext("^:Big Jetpack");
|
||||
self.jetpack = 120;
|
||||
}
|
||||
self thread dod(JETPACKBACK.bar,JETPACKBACK,JETPACKTXT);
|
||||
self attach("projectile_hellfire_missile","tag_stowed_back");
|
||||
while(true)
|
||||
{
|
||||
if(self usebuttonpressed() && self.jetpack>0)
|
||||
{
|
||||
//self playsound("veh_ac130_sonic_boom");
|
||||
//self playsound("veh_mig29_sonic_boom");
|
||||
self playsound("cobra_helicopter_dying_loop");
|
||||
self setstance("crouch");
|
||||
playfx(self.fx[0],self gettagorigin("j_spine4"));
|
||||
playfx(self.fx[1],self gettagorigin("j_spine4"));
|
||||
earthquake(.15,.2,self gettagorigin("j_spine4"),50);
|
||||
self.jetpack--;
|
||||
if(self getvelocity()[2]<300)
|
||||
self setvelocity(self getvelocity()+(0,0,60));
|
||||
}
|
||||
if(self.jetpack < 80 &&!self usebuttonpressed())
|
||||
self.jetpack++;
|
||||
JETPACKBACK updateBar(self.jetpack/80);
|
||||
JETPACKBACK.bar.color=(1,self.jetpack/80,self.jetpack/80);
|
||||
wait .05;
|
||||
}
|
||||
}
|
||||
dod(a,b,c)
|
||||
{
|
||||
self waittill_any("death", "disconnect", "jetpack");
|
||||
a destroy();
|
||||
b destroy();
|
||||
c destroy();
|
||||
}
|
||||
tryUseIMS()
|
||||
{
|
||||
self notify("ims2");
|
||||
self endon("ims2");
|
||||
self endon("disconnect");
|
||||
self notifyonplayercommand("IMS", "+actionslot 4");
|
||||
self waittill("IMS");
|
||||
ims = spawn("script_model", self.origin);
|
||||
ims setModel( "sentry_minigun_folded" );
|
||||
ims.angles = (90,0,0);
|
||||
ims.imsbombs = 3;
|
||||
block = spawn("script_model", self.origin+(-40,0,0));
|
||||
block setModel("com_plasticcase_enemy");
|
||||
block.angles = (0,0,0);
|
||||
block Solid();
|
||||
block2 = spawn("script_model", self.origin+(40,0,0));
|
||||
block2 setModel("com_plasticcase_enemy");
|
||||
block2.angles = (0,0,0);
|
||||
block2 Solid();
|
||||
block3 = spawn("script_model", self.origin+(0,40,0));
|
||||
block3 setModel("com_plasticcase_enemy");
|
||||
block3.angles = (0,90,0);
|
||||
block3 Solid();
|
||||
block4 = spawn("script_model", self.origin+(0,-40,0));
|
||||
block4 setModel("com_plasticcase_enemy");
|
||||
block4.angles = (0,90,0);
|
||||
block4 Solid();
|
||||
self thread BombThem(ims);
|
||||
self thread DeleteIt(block, block2, block3, block4);
|
||||
self thread DeleteIMS(ims);
|
||||
self thread DeleteIMS2(ims);
|
||||
|
||||
}
|
||||
|
||||
DeleteIMS(ims)
|
||||
{
|
||||
self waittill_any("death", "disconnect", "Ims_Dead");
|
||||
ims delete();
|
||||
}
|
||||
|
||||
DeleteIMS2(ims)
|
||||
{
|
||||
level waittill("fuckemp");
|
||||
ims delete();
|
||||
}
|
||||
|
||||
DeleteIt(block, block2, block3, block4)
|
||||
{
|
||||
self waittill_any("disconnect", "Ims_Dead");
|
||||
|
||||
block delete();
|
||||
block2 delete();
|
||||
block3 delete();
|
||||
block4 delete();
|
||||
}
|
||||
BombThem(ims)
|
||||
{
|
||||
//self endon("death");
|
||||
self endon("disconnect");
|
||||
self endon("Ims_Dead");
|
||||
expos = self.origin;
|
||||
wait 4;
|
||||
self iPrintln("I.M.S ready!");
|
||||
for(;;)
|
||||
{
|
||||
foreach(player in level.players)
|
||||
{
|
||||
if(player != self)
|
||||
{
|
||||
if(Distance(expos, player.origin) <= 300)
|
||||
{
|
||||
if(ims.imsbombs > 0)
|
||||
{
|
||||
ims.imsbombs--;
|
||||
self thread Boom(player, expos);
|
||||
if(ims.imsbombs == 0)
|
||||
self notify("Ims_Dead");
|
||||
wait 5;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
wait 1;
|
||||
}
|
||||
}
|
||||
Boom(player, expos)
|
||||
{
|
||||
player playsound ("claymore_activated");
|
||||
level._effect["bombexplosion"] = loadfx("explosions/tanker_explosion");
|
||||
PlayFx( level._effect["bombexplosion"], expos );
|
||||
//RadiusDamage(self.origin,350,500,100,level);
|
||||
MagicBullet("ac130_105mm_mp", expos, expos+(0,-100,-1000), self);
|
||||
MagicBullet("ac130_105mm_mp", expos, expos+(100,0, -10), self);
|
||||
MagicBullet("ac130_105mm_mp", expos, expos+(0,100, -10), self);
|
||||
MagicBullet("ac130_105mm_mp", expos, expos+(-100,0, -10), self);
|
||||
MagicBullet("ac130_105mm_mp", expos, expos+(0,-100, -10), self);
|
||||
PlayRumbleOnPosition( "grenade_rumble", self.origin );
|
||||
earthquake( 0.4, 0.75, self.origin, 512 );
|
||||
player playsound("exp_suitcase_bomb_main");
|
||||
}
|
||||
vector_scal(vec, scale)
|
||||
{
|
||||
vec = (vec[0] * scale, vec[1] * scale, vec[2] * scale);
|
||||
return vec;
|
||||
}
|
||||
setClassTime(class)
|
||||
{
|
||||
if(class == "rifle")
|
||||
{
|
||||
self.explodmg = 20;
|
||||
self.explotime = 0;
|
||||
self.explomindmg = 1;
|
||||
}
|
||||
else if(class == "smg")
|
||||
{
|
||||
self.explodmg = 20;
|
||||
self.explotime = 0;
|
||||
self.explomindmg = 1;
|
||||
}
|
||||
else if(class == "spread")
|
||||
{
|
||||
self.explodmg = 30;
|
||||
self.explotime = .5;
|
||||
self.explomindmg = 10;
|
||||
}
|
||||
else //pistol
|
||||
{
|
||||
self.explodmg = 40;
|
||||
self.explotime = 1;
|
||||
self.explomindmg = 15;
|
||||
}
|
||||
}
|
||||
|
||||
Wh()
|
||||
{
|
||||
// cheat invert vision, marks near enemies
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
self notifyOnPlayerCommand("3","+actionslot 3");
|
||||
hud = self createText("Press [{+actionslot 3}] to use recon vision", 1.5, "CENTER", "BOTTOM", 0,-80,"default");
|
||||
hud.glowcolor = (0,.7,0);
|
||||
self thread destroyGhostHud(hud);
|
||||
while(true)
|
||||
{
|
||||
self waittill("3");
|
||||
self visionSetNakedForplayer("cheat_invert", 2);
|
||||
hud.label = &"Countdown: ";
|
||||
self.recon = true;
|
||||
self thread scanPlayer();
|
||||
for(i = 10;i > 0;i--)
|
||||
{
|
||||
hud setValue(i);
|
||||
wait 1;
|
||||
}
|
||||
self visionSetNakedForplayer(getDvar("mapname"), 2);
|
||||
self.recon = false;
|
||||
hud fadeOverTime(1);
|
||||
hud.alpha = 0;
|
||||
wait 20;
|
||||
hud.label = &"";
|
||||
hud setText("Press [{+actionslot 3}] to use recon vision");
|
||||
hud fadeOverTime(1);
|
||||
hud.alpha = 1;
|
||||
}
|
||||
}
|
||||
|
||||
destroyGhostHud(hud)
|
||||
{
|
||||
self endon("disconnect");
|
||||
//self endon("ghostCounter_done");
|
||||
self waittill_any("death", "spawned_player");
|
||||
hud destroy();
|
||||
}
|
||||
scanPlayer()
|
||||
{
|
||||
//self endon("disconnect");
|
||||
//self endon("death");
|
||||
//self endon("ghostCounter_done");
|
||||
self.scanPlayer = [];
|
||||
while(self.recon)
|
||||
{
|
||||
foreach(player in level.players)
|
||||
{
|
||||
if(player == self)
|
||||
continue;
|
||||
if((getDvar("g_gametype") == "gungame_team") && self.team == player.team)
|
||||
continue;
|
||||
if(Distance(player.origin,self.origin) <= 1000)
|
||||
{
|
||||
go = true;
|
||||
foreach(scan in self.scanPlayer)
|
||||
{
|
||||
if(scan == "" + player.guid)
|
||||
go = false;
|
||||
}
|
||||
if(go)
|
||||
{
|
||||
self thread createScanImage(player);
|
||||
self.scanPlayer[self.scanPlayer.size] = "" + player.guid;
|
||||
}
|
||||
}
|
||||
}
|
||||
wait .5;
|
||||
}
|
||||
self notify("ghostCounter_done");
|
||||
}
|
||||
createText(text,size,align,pos,x,y,font)
|
||||
{
|
||||
if(!isDefined(font))
|
||||
hud = self createFontString("default",size);
|
||||
else
|
||||
hud = self createFontString(font,size);
|
||||
hud setPoint(align,pos,x,y);
|
||||
if(isDefined(text))
|
||||
hud setText(text);
|
||||
hud.glowAlpha = 1;
|
||||
hud.hideWhenInMenu = true;
|
||||
return hud;
|
||||
}
|
||||
createScanImage(player)
|
||||
{
|
||||
//self endon("disconnect");
|
||||
|
||||
rectpos = spawn("script_model", player getTagOrigin("j_head")+(0,0,-20));
|
||||
rectpos enableLinkTo();
|
||||
rectpos linkTo(player);
|
||||
|
||||
icon = NewClientHudElem(self);
|
||||
icon.elemType = "bar";
|
||||
icon.width = 64;
|
||||
icon.height = 80;
|
||||
icon SetShader( "cardicon_headshot", 40, 40 );
|
||||
icon.color = (1,0,0);
|
||||
icon.alpha = 0;
|
||||
icon.x = rectpos.origin[ 0 ];
|
||||
icon.y = rectpos.origin[ 1 ];
|
||||
icon.z = rectpos.origin[ 2 ];
|
||||
icon SetTargetEnt(rectpos);
|
||||
icon SetWayPoint( true, true );
|
||||
icon fadeovertime(1);
|
||||
icon.alpha = 1;
|
||||
self waittill_any("disconnect","ghostCounter_done");
|
||||
icon fadeovertime(2);
|
||||
icon.alpha = 0;
|
||||
wait 2;
|
||||
rectpos delete();
|
||||
icon destroy();
|
||||
}
|
||||
|
||||
Wh_Old()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
self notify("wh");
|
||||
self endon("wh");
|
||||
self ThermalVisionFOFOverlayOn();
|
||||
for(i = 30;i > 0;i--)
|
||||
{
|
||||
wait 1;
|
||||
self iPrintln("Infrared Vision for: " + i);
|
||||
}
|
||||
self ThermalVisionFOFOverlayOff();
|
||||
}
|
||||
///////////////////////////////////////////////////////////
|
||||
infoText(item)
|
||||
{
|
||||
infotext = self createFontString("hudsmall", 1);
|
||||
infotext setPoint("CENTER", "CENTER", 0, -50);
|
||||
infotext.color = (1,1,0);
|
||||
infotext.glowalpha = .5;
|
||||
infotext.glowcolor = (1,0,0);
|
||||
infotext setText("Press [{+actionslot 4}] to use " + item);
|
||||
//infoText fadeOverTime(2);
|
||||
//infoText.alpha = 0;
|
||||
wait 2;
|
||||
if(isDefined(infoText))
|
||||
infoText destroy();
|
||||
}
|
||||
Juggernaut()
|
||||
{
|
||||
level endon("nuke");
|
||||
self.isJugger = true;
|
||||
self.maxhealth = 400;
|
||||
self.health = self.maxhealth;
|
||||
self setMoveSpeedScale(.7);
|
||||
|
||||
juggIcon = newHudElem();
|
||||
juggIcon.x = self.origin[0];
|
||||
juggIcon.y = self.origin[1];
|
||||
juggIcon.z = self.origin[2] + 54;
|
||||
juggIcon.alpha = .8;
|
||||
juggIcon.archived = true;
|
||||
juggIcon setShader("cardicon_juggernaut_2");
|
||||
juggIcon SetWayPoint( true, true );
|
||||
juggIcon SetTargetEnt(self);
|
||||
self thread destroyJuggOnNuke(juggIcon);
|
||||
self waittill_any("death", "disconnect", "isMarked");
|
||||
juggicon destroy();
|
||||
}
|
||||
destroyJuggOnNuke(juggIcon)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
level waittill("nuke");
|
||||
juggIcon destroy();
|
||||
}
|
||||
NoReload()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
while(true)
|
||||
{
|
||||
if(self AttackButtonPressed())
|
||||
{
|
||||
current = self getCurrentWeapon();
|
||||
clip = self GetWeaponAmmoClip(current);
|
||||
stock = self GetWeaponAmmoStock(current);
|
||||
if(stock > 0)
|
||||
{
|
||||
self setWeaponAmmoStock(current, stock-1);
|
||||
self setWeaponAmmoClip(current, clip+1);
|
||||
}
|
||||
waitFrame();
|
||||
}
|
||||
else
|
||||
self waittill("weapon_fired");
|
||||
}
|
||||
}
|
||||
635
gunfun/mod/vote.gsc
Executable file
635
gunfun/mod/vote.gsc
Executable file
@@ -0,0 +1,635 @@
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_utility;
|
||||
#include maps\mp\gametypes\_hud_util;
|
||||
|
||||
// =========================================================
|
||||
// FileName: vote.gsc
|
||||
// Date: 11.05.2019
|
||||
//
|
||||
// Author Of Code: Santahunter
|
||||
//
|
||||
// =========================================================
|
||||
|
||||
|
||||
/*
|
||||
|
||||
ALPHA
|
||||
so_killspree_trainer "The Pit"
|
||||
so_rooftop_contingency "Sniper Fi"
|
||||
so_killspree_favela "O Cristo Redentor"
|
||||
so_forest_contingency "Evasion"
|
||||
so_crossing_so_bridge "Suspension"
|
||||
|
||||
BRAVO
|
||||
so_ac139_co_hunted "Overwatch" (Two-Players Min)
|
||||
so_killspree_invasion "Body Count"
|
||||
so_defuse_favela_escape "Bomb Squad"
|
||||
so_snowrace1_cliffhanger "Race"
|
||||
so_chopper_invasion "Big Brother" (Two-Players Min) /////////////////// BURGERTOWN
|
||||
|
||||
CHARLIE
|
||||
so_hidden_so_ghillies "Hidden"
|
||||
so_showers_gulag "Breach & Clear"
|
||||
so_snowrace2_cliffhanger "Time Trial"
|
||||
so_defuse_invasion "Homeland Security"
|
||||
so_intel_boneyard "Snatch & Grab"
|
||||
|
||||
DELTA
|
||||
so_download_arcadia "Wardriving"
|
||||
so_demo_so_bridge "Wreckage"
|
||||
so_sabotage_cliffhanger "Acceptable Losses"
|
||||
so_escape_airport "Terminal"
|
||||
so_takeover_estate "Estate Takedown"
|
||||
|
||||
ECHO
|
||||
so_assault_oilrig "Wetwork"
|
||||
so_juggernauts_favela "High Explosive"
|
||||
so_takeover_oilrig "Armor Piercing"
|
||||
|
||||
*/
|
||||
|
||||
loadVote()
|
||||
{
|
||||
precacheShader("line_horizontal");
|
||||
precacheShader("hudscoreboardscroll_uparrow");
|
||||
precacheShader("hudscoreboardscroll_downarrow");
|
||||
level.maxOptions = 8;
|
||||
maps();
|
||||
thread startVote();
|
||||
}
|
||||
maps()
|
||||
{
|
||||
level.maps = [];
|
||||
|
||||
level.maps[level.maps.size] = "mp_rust";
|
||||
level.maps[level.maps.size] = "mp_afghan";
|
||||
level.maps[level.maps.size] = "mp_terminal";
|
||||
level.maps[level.maps.size] = "mp_highrise";
|
||||
level.maps[level.maps.size] = "mp_derail";
|
||||
level.maps[level.maps.size] = "mp_rundown";
|
||||
level.maps[level.maps.size] = "mp_brecourt";
|
||||
level.maps[level.maps.size] = "mp_boneyard";
|
||||
level.maps[level.maps.size] = "mp_quarry";
|
||||
level.maps[level.maps.size] = "mp_nightshift";
|
||||
level.maps[level.maps.size] = "mp_estate";
|
||||
level.maps[level.maps.size] = "mp_invasion";
|
||||
level.maps[level.maps.size] = "mp_checkpoint";
|
||||
level.maps[level.maps.size] = "mp_subbase";
|
||||
level.maps[level.maps.size] = "mp_favela";
|
||||
level.maps[level.maps.size] = "mp_underpass";
|
||||
level.maps[level.maps.size] = "iw4_credits";
|
||||
|
||||
|
||||
level.maps[level.maps.size] = "mp_complex";
|
||||
level.maps[level.maps.size] = "mp_crash";
|
||||
level.maps[level.maps.size] = "mp_overgrown";
|
||||
level.maps[level.maps.size] = "mp_compact";
|
||||
level.maps[level.maps.size] = "mp_storm";
|
||||
|
||||
level.maps[level.maps.size] = "mp_abandon";
|
||||
level.maps[level.maps.size] = "mp_fuel2";
|
||||
level.maps[level.maps.size] = "mp_strike";
|
||||
level.maps[level.maps.size] = "mp_trailerpark";
|
||||
level.maps[level.maps.size] = "mp_vacant";
|
||||
|
||||
level.maps[level.maps.size] = "mp_nuked";
|
||||
|
||||
level.maps[level.maps.size] = "mp_cross_fire";
|
||||
level.maps[level.maps.size] = "mp_bloc";
|
||||
level.maps[level.maps.size] = "mp_cargoship";
|
||||
|
||||
level.maps[level.maps.size] = "mp_killhouse";
|
||||
level.maps[level.maps.size] = "mp_bog_sh";
|
||||
|
||||
level.maps[level.maps.size] = "mp_cargoship_sh";
|
||||
|
||||
level.maps[level.maps.size] = "mp_shipment_long";
|
||||
level.maps[level.maps.size] = "mp_rust_long";
|
||||
level.maps[level.maps.size] = "mp_firingrange";
|
||||
|
||||
level.maps[level.maps.size] = "mp_storm_spring";
|
||||
level.maps[level.maps.size] = "mp_fav_tropical";
|
||||
level.maps[level.maps.size] = "mp_estate_tropical";
|
||||
level.maps[level.maps.size] = "mp_crash_tropical";
|
||||
level.maps[level.maps.size] = "mp_bloc_sh";
|
||||
|
||||
////////////// NOT VANILLA /////////////////////////
|
||||
|
||||
//level.maps[level.maps.size] = "af_caves";
|
||||
//level.maps[level.maps.size] = "af_chase";
|
||||
//level.maps[level.maps.size] = "airport";
|
||||
//level.maps[level.maps.size] = "arcadia";
|
||||
//level.maps[level.maps.size] = "boneyard";
|
||||
//level.maps[level.maps.size] = "ending";
|
||||
//level.maps[level.maps.size] = "cliffhanger";
|
||||
//level.maps[level.maps.size] = "co_hunted";
|
||||
//level.maps[level.maps.size] = "so_forest_contingency";
|
||||
//level.maps[level.maps.size] = "dcburning";
|
||||
//level.maps[level.maps.size] = "dcemp";
|
||||
level.maps[level.maps.size] = "estate";
|
||||
//level.maps[level.maps.size] = "favela";
|
||||
//level.maps[level.maps.size] = "so_showers_gulag";
|
||||
level.maps[level.maps.size] = "oilrig";
|
||||
//level.maps[level.maps.size] = "roadkill";
|
||||
//level.maps[level.maps.size] = "so_hidden_so_ghillies";
|
||||
//level.maps[level.maps.size] = "trainer";
|
||||
|
||||
/////////////// TAUROS //////////////////////////////
|
||||
|
||||
//level.maps[level.maps.size] = "so_chopper_invasion"; // Burgertown // so_killspree_invasion
|
||||
//level.maps[level.maps.size] = "so_killspree_trainer"; // Startmission // The Pit
|
||||
|
||||
/////////////// DRAGONITE //////////////////////////////
|
||||
//level.maps[level.maps.size] = "so_defuse_favela_escape";
|
||||
//level.maps[level.maps.size] = "dc_whitehouse";
|
||||
//level.maps[level.maps.size] = "so_crossing_so_bridge";
|
||||
|
||||
level.mapStruct = [];
|
||||
|
||||
foreach(map in level.maps)
|
||||
{
|
||||
level.mapStruct[level.mapStruct.size] = spawnStruct();
|
||||
level.mapStruct[level.mapStruct.size-1].mapname = map;
|
||||
level.mapStruct[level.mapStruct.size-1].displayName = getDisplayName(map);
|
||||
}
|
||||
|
||||
}
|
||||
getDisplayName(map)
|
||||
{
|
||||
if(map == "mp_afghan")
|
||||
return "Afghan";
|
||||
if(map == "mp_rust")
|
||||
return "Rust";
|
||||
if(map == "mp_terminal")
|
||||
return "Terminal";
|
||||
if(map == "mp_highrise")
|
||||
return "Highrise";
|
||||
if(map == "mp_derail")
|
||||
return "Derail";
|
||||
if(map == "mp_rundown")
|
||||
return "Rundown";
|
||||
if(map == "mp_brecourt")
|
||||
return "Wasteland";
|
||||
if(map == "mp_boneyard")
|
||||
return "Scrapyard";
|
||||
if(map == "mp_quarry")
|
||||
return "Quarry";
|
||||
if(map == "mp_estate")
|
||||
return "Estate";
|
||||
if(map == "mp_nightshift")
|
||||
return "Skidrow";
|
||||
if(map == "mp_invasion")
|
||||
return "Invasion";
|
||||
if(map == "mp_checkpoint")
|
||||
return "Karachi";
|
||||
if(map == "mp_subbase")
|
||||
return "Subbase";
|
||||
if(map == "mp_favela")
|
||||
return "Favela";
|
||||
if(map == "mp_underpass")
|
||||
return "Underpass";
|
||||
if(map == "iw4_credits")
|
||||
return "Testmap";
|
||||
if(map == "mp_abandon")
|
||||
return "Carnival";
|
||||
if(map == "mp_fuel2")
|
||||
return "Fuel";
|
||||
if(map == "mp_strike")
|
||||
return "Strike";
|
||||
if(map == "mp_trailerpark")
|
||||
return "Trailerpark";
|
||||
if(map == "mp_vacant")
|
||||
return "Vacant";
|
||||
if(map == "mp_complex")
|
||||
return "Bailout";
|
||||
if(map == "mp_crash")
|
||||
return "Crash";
|
||||
if(map == "mp_overgrown")
|
||||
return "Overgrown";
|
||||
if(map == "mp_compact")
|
||||
return "Salvage";
|
||||
if(map == "mp_storm")
|
||||
return "Storm";
|
||||
if(map == "mp_nuked")
|
||||
return "Nuketown";
|
||||
if(map == "mp_cross_fire")
|
||||
return "Crossfire";
|
||||
if(map == "mp_cargoship")
|
||||
return "Cargoship";
|
||||
if(map == "mp_bloc")
|
||||
return "Bloc";
|
||||
if(map == "mp_killhouse")
|
||||
return "Killhouse";
|
||||
if(map == "mp_bog_sh")
|
||||
return "Bog";
|
||||
if(map == "mp_cargoship_sh")
|
||||
return "Freighter";
|
||||
if(map == "mp_shipment_long")
|
||||
return "Shipment Long";
|
||||
if(map == "mp_rust_long")
|
||||
return "Rust Long";
|
||||
if(map == "mp_firingrange")
|
||||
return "Firing Range";
|
||||
if(map == "mp_storm_spring")
|
||||
return "Chemical Storm";
|
||||
if(map == "mp_fav_tropical")
|
||||
return "Tropical Favela";
|
||||
if(map == "mp_estate_tropical")
|
||||
return "Tropical Estate";
|
||||
if(map == "mp_crash_tropical")
|
||||
return "Tropical Crash";
|
||||
if(map == "mp_bloc_sh")
|
||||
return "Ruin City";
|
||||
if(map == "af_caves")
|
||||
return "Afghanistan Caves";
|
||||
if(map == "af_chase")
|
||||
return "Afghanistan Hunt";
|
||||
if(map == "airport")
|
||||
return "Airport";
|
||||
if(map == "arcadia")
|
||||
return "Arcadia";
|
||||
if(map == "boneyard")
|
||||
return "Airplane Scrapyard";
|
||||
if(map == "ending")
|
||||
return "Museum";
|
||||
if(map == "cliffhanger")
|
||||
return "Cliffhanger";
|
||||
if(map == "co_hunted")
|
||||
return "Hunted";
|
||||
if(map == "contingency" || map == "so_forest_contingency")
|
||||
return "Contingency";
|
||||
if(map == "dcburning")
|
||||
return "DC Burning";
|
||||
if(map == "dcemp")
|
||||
return "DC Dark";
|
||||
if(map == "estate")
|
||||
return "Makarovs House";
|
||||
if(map == "favela")
|
||||
return "Rojas Favelas";
|
||||
if(map == "favela_escape" || map == "so_defuse_favela_escape")
|
||||
{
|
||||
return "Favels Escape";
|
||||
}
|
||||
if(map == "gulag" || map == "so_showers_gulag")
|
||||
return "Gulag";
|
||||
if(map == "invasion")
|
||||
return "School";
|
||||
if(map == "oilrig")
|
||||
return "Oilrig";
|
||||
if(map == "roadkill")
|
||||
return "School";
|
||||
if(map == "so_hidden_so_ghillies")
|
||||
return "Chernobyl";
|
||||
if(map == "trainer" || map == "so_killspree_trainer")
|
||||
return "The Pit";
|
||||
if(map == "so_chopper_invasion" || map == "so_killspree_invasion")
|
||||
return "Burgertown";
|
||||
if(map == "dc_whitehouse")
|
||||
{
|
||||
return "DC Whitehouse";
|
||||
}
|
||||
if(map == "so_crossing_so_bridge")
|
||||
return "Bridge";
|
||||
return map;
|
||||
}
|
||||
|
||||
createRectangle(shader,align, relative, x, y, width, height)
|
||||
{
|
||||
hud = newHudElem();
|
||||
hud.sTexType = "bar";
|
||||
hud.width = width;
|
||||
hud.height = height;
|
||||
hud.align = align;
|
||||
hud.relative = relative;
|
||||
hud.alpha = 1;
|
||||
hud.xOffset = 0;
|
||||
hud.yOffset = 0;
|
||||
hud.children = [];
|
||||
hud.sort = 1;
|
||||
hud setParent(level.uiParent);
|
||||
hud setShader(shader,width,height);
|
||||
hud.hidden = false;
|
||||
hud.HideWhenInMenu = true;
|
||||
hud setPoint(align,relative,x,y);
|
||||
return hud;
|
||||
}
|
||||
createPlayerRectangle(shader,align, relative, x, y, width, height)
|
||||
{
|
||||
hud = newClientHudElem(self);
|
||||
hud.sTexType = "bar";
|
||||
hud.width = width;
|
||||
hud.height = height;
|
||||
hud.align = align;
|
||||
hud.relative = relative;
|
||||
hud.alpha = 1;
|
||||
hud.xOffset = 0;
|
||||
hud.yOffset = 0;
|
||||
hud.children = [];
|
||||
hud.sort = 1;
|
||||
hud setParent(level.uiParent);
|
||||
hud setShader(shader,width,height);
|
||||
hud.hidden = false;
|
||||
hud.HideWhenInMenu = true;
|
||||
hud setPoint(align,relative,x,y);
|
||||
return hud;
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
doCountdown(timer,timer2)
|
||||
{
|
||||
secs = 20;
|
||||
milisecs = 10;
|
||||
while(secs > 0)
|
||||
{
|
||||
milisecs--;
|
||||
if(milisecs == 0)
|
||||
{
|
||||
milisecs = 10;
|
||||
secs--;
|
||||
}
|
||||
if(secs == 9)
|
||||
{
|
||||
timer2 setPoint("LEFT", "CENTER", 20,90);
|
||||
}
|
||||
timer setText("Time left: " + secs);
|
||||
timer2 setValue(milisecs);
|
||||
wait .1;
|
||||
}
|
||||
level notify("finishVote");
|
||||
}
|
||||
startVote()
|
||||
{
|
||||
//level waittill ( "game_ended" );
|
||||
//level waittill ( "spawning_intermission" );
|
||||
level waittill("spawnVote");
|
||||
//setDvar("g_hardcore", 1);
|
||||
setSlowMotion( 0.25, 1, 2.0 );
|
||||
thread killGungameHUD();
|
||||
background = createRectangle("black","CENTER", "CENTER", 0,0,250,350);
|
||||
background.alpha = .7;
|
||||
line = createRectangle("line_horizontal","CENTER", "CENTER", 0,-145,180,3);
|
||||
line.sort = 2;
|
||||
//line.color = (1,0,0);
|
||||
line2 = createRectangle("line_horizontal","CENTER", "CENTER", 0,70,180,3);
|
||||
line2.sort = 2;
|
||||
//line2.color = (1,0,0);
|
||||
line3 = createRectangle("line_horizontal","CENTER", "CENTER", 0,110,180,3);
|
||||
line3.sort = 2;
|
||||
//line3.color = (1,0,0);
|
||||
|
||||
//background2 = createRectangle("black","CENTER", "CENTER", -200,0,75,180);
|
||||
//background2.alpha = .7;
|
||||
arrowUp = createRectangle("hudscoreboardscroll_uparrow","CENTER", "CENTER", -100,-125,25,25);
|
||||
arrowDown = createRectangle("hudscoreboardscroll_downarrow","CENTER", "CENTER", 100,-125,25,25);
|
||||
arrowUp.sort = 2;
|
||||
arrowDown.sort = 2;
|
||||
controls = level createServerFontString("default", 1.5);
|
||||
controls setPoint("CENTER", "CENTER", -100,-100);
|
||||
controls.hideWhenInMenu = true;
|
||||
controls setText("[{+forward}]");
|
||||
controls2 = level createServerFontString("default", 1.5);
|
||||
controls2 setPoint("CENTER", "CENTER", 100,-100);
|
||||
controls2.hideWhenInMenu = true;
|
||||
controls2 setText("[{+back}]");
|
||||
controls3 = level createServerFontString("default", 1.3);
|
||||
controls3 setPoint("CENTER", "CENTER", 0,-125);
|
||||
controls3.hideWhenInMenu = true;
|
||||
controls3 setText("[{+gostand}] to select");
|
||||
|
||||
|
||||
//background3 = createRectangle("black","CENTER", "CENTER", 225,0,180,75);
|
||||
//background3.alpha = .7;
|
||||
timer = level createServerFontString("default", 1.8);
|
||||
timer setPoint("CENTER", "CENTER", -20,90);
|
||||
timer.hideWhenInMenu = true;
|
||||
|
||||
timer2 = level createServerFontString("default", 1.8);
|
||||
timer2 setPoint("CENTER", "CENTER", 30,90);
|
||||
timer2.hideWhenInMenu = true;
|
||||
timer2.label = &": ";
|
||||
timer2.sort = 3;
|
||||
|
||||
credits = level createServerFontString("default", 1.6);
|
||||
credits setPoint("CENTER", "CENTER", 0,130);
|
||||
credits.hideWhenInMenu = true;
|
||||
credits setText("Made by ^:Santahunter"); // if you change this credits Im gonna come to your house and smack ur sister... for real, dont change it, it took many hours and days to come to this point
|
||||
|
||||
thread doCountdown(timer,timer2);
|
||||
|
||||
header = createServerFontString("default", 2);
|
||||
header setPoint("CENTER", "CENTER", 0,-155);
|
||||
header.hideWhenInMenu = false;
|
||||
header setText("Votemap");
|
||||
|
||||
level.options = [];
|
||||
level.votes = [];
|
||||
level.invalidMaps = [];
|
||||
text = "";
|
||||
level.elems = createServerFontString("default", 1.5);
|
||||
level.elems setPoint("CENTER", "CENTER", 20,-75);
|
||||
level.elems.hideWhenInMenu = true;
|
||||
//level.elems = [];
|
||||
for(i = 0;i < level.maxOptions;i++)
|
||||
{
|
||||
valid = true;
|
||||
map = level.maps[randomInt(level.maps.size-1)];
|
||||
gamemode = level.gungamemodes[randomInt(level.gungamemodes.size)];
|
||||
foreach(invalid in level.invalidMaps)
|
||||
{
|
||||
if(map == invalid)
|
||||
valid = false;
|
||||
}
|
||||
if(!valid)
|
||||
i--;
|
||||
else
|
||||
{
|
||||
text += getDisplayName(map) + "[^3" + gamemode + "^7] [0]\n";
|
||||
level.votes[i] = 0;
|
||||
level.options[i] = spawnstruct();
|
||||
level.options[i].map = map;
|
||||
level.options[i].gamemode = gamemode;
|
||||
level.invalidMaps[level.invalidMaps.size] = map;
|
||||
}
|
||||
}
|
||||
level.elems setText(text);
|
||||
foreach(player in level.players)
|
||||
{
|
||||
player.scrollbarY = -75;
|
||||
player.scrollbar = player createPlayerRectangle("line_horizontal","CENTER", "CENTER", 0,player.scrollbarY,220,11);
|
||||
player.scrollbar.color = (0,1,0);
|
||||
player.scrollbar.sort = 2;
|
||||
player thread doControls();
|
||||
}
|
||||
level waittill("finishVote");
|
||||
background destroy();
|
||||
|
||||
//background2 destroy();
|
||||
//background3 destroy();
|
||||
header destroy();
|
||||
timer destroy();
|
||||
timer2 destroy();
|
||||
controls destroy();
|
||||
controls2 destroy();
|
||||
controls3 destroy();
|
||||
arrowUp destroy();
|
||||
arrowDown destroy();
|
||||
line destroy();
|
||||
line2 destroy();
|
||||
line3 destroy();
|
||||
credits destroy();
|
||||
maps = [];
|
||||
level.elems destroy();
|
||||
foreach(player in level.players)
|
||||
player.scrollbar destroy();
|
||||
|
||||
sameVote = -1;
|
||||
altVote = "";
|
||||
number = 0;
|
||||
maxVote = level.votes[0];
|
||||
for(i = 1;i < level.votes.size;i++)
|
||||
{
|
||||
if(level.votes[i] >= maxVote)
|
||||
{
|
||||
maxVote = level.votes[i];
|
||||
sameVote = -1;
|
||||
number = i;
|
||||
}
|
||||
}
|
||||
mod\main::initializeGametype(level.options[number].gamemode);
|
||||
setDvar("sv_maprotation", ("map " + level.options[number].map));
|
||||
setDvar("g_hardcore", 0);
|
||||
wait 0.5;
|
||||
exitLevel(false);
|
||||
level.currentNextMap = level.options[number].map;
|
||||
level notify("endVote");
|
||||
}
|
||||
doControls()
|
||||
{
|
||||
self endon("disconnect");
|
||||
level endon("finishVote");
|
||||
self.totalVotes = 0;
|
||||
self.position = 0;
|
||||
self.oldPosition = self.position;
|
||||
voted = false;
|
||||
self thread onForward();
|
||||
self thread onBackward();
|
||||
self notifyOnPlayerCommand("Stand", "+gostand");
|
||||
while(true)
|
||||
{
|
||||
self waittill("Stand");
|
||||
if(self.totalVotes > 3)
|
||||
{
|
||||
self iPrintln("^1Maximal votes done");
|
||||
continue;
|
||||
}
|
||||
self.totalVotes++;
|
||||
if(voted)
|
||||
{
|
||||
level.votes[self.oldPosition]--;
|
||||
//level.elems[self.oldPosition] setText(getDisplayName(level.options[self.oldPosition]) + " [" + level.votes[self.oldPosition] + "]");
|
||||
|
||||
}
|
||||
self.oldPosition = self.position;
|
||||
//voted = level.options[self.position];
|
||||
voted = true;
|
||||
level.votes[self.position]++;
|
||||
//level.elems[self.position] setText(getDisplayName(level.options[self.position]) + " [" + level.votes[self.position] + "]");
|
||||
text = "";
|
||||
for(i = 0;i < level.maxOptions;i++)
|
||||
{
|
||||
text += getDisplayName(level.options[i].map) + " [^3" + level.options[i].gamemode + "^7][" + level.votes[i] + "]\n";
|
||||
}
|
||||
level.elems setText(text);
|
||||
}
|
||||
}
|
||||
onForward()
|
||||
{
|
||||
self endon("disconnect");
|
||||
level endon("finishVote");
|
||||
self notify("onForward");
|
||||
self endon("onForward");
|
||||
self notifyOnPlayerCommand("Forward", "+forward");
|
||||
while(true)
|
||||
{
|
||||
self waittill("Forward");
|
||||
self.position--;
|
||||
self.scrollbar destroy();
|
||||
if(self.position < 0)
|
||||
{
|
||||
self.position = level.maxOptions-1;
|
||||
self.scrollbarY = 51;
|
||||
}
|
||||
else
|
||||
self.scrollbarY -= 18;
|
||||
|
||||
//self.scrollbar = self createPlayerRectangle("line_horizontal","CENTER", "CENTER", level.elems[self.position].x,level.elems[self.position].y,220,8);
|
||||
self.scrollbar = self createPlayerRectangle("line_horizontal","CENTER", "CENTER", 0,self.scrollbarY,220,11);
|
||||
self.scrollbar.color = (0,1,0);
|
||||
self.scrollbar.sort = 2;
|
||||
}
|
||||
}
|
||||
onBackward()
|
||||
{
|
||||
self endon("disconnect");
|
||||
level endon("finishVote");
|
||||
self notify("onBackward");
|
||||
self endon("onBackward");
|
||||
self notifyOnPlayerCommand("Backward", "+back");
|
||||
while(true)
|
||||
{
|
||||
self waittill("Backward");
|
||||
self.position++;
|
||||
if(self.position > level.maxOptions-1)
|
||||
{
|
||||
self.position = 0;
|
||||
self.scrollbarY = -75;
|
||||
}
|
||||
else
|
||||
self.scrollbarY += 18;
|
||||
//iPrintln(self.scrollbarY);
|
||||
self.scrollbar destroy();
|
||||
//self.scrollbar = self createPlayerRectangle("line_horizontal","CENTER", "CENTER", level.elems[self.position].x,level.elems[self.position].y,220,8);
|
||||
self.scrollbar = self createPlayerRectangle("line_horizontal","CENTER", "CENTER", 0,self.scrollbarY,220,11);
|
||||
self.scrollbar.color = (0,1,0);
|
||||
self.scrollbar.sort = 2;
|
||||
}
|
||||
}
|
||||
killGungameHUD()
|
||||
{
|
||||
foreach(player in level.players)
|
||||
{
|
||||
for(i=2;i<6;i++)
|
||||
player.multitext[i] destroy();
|
||||
if(isdefined(player.scoretext))
|
||||
player.scoretext destroy();
|
||||
if(isdefined(player.scoretext_amount))
|
||||
player.scoretext_amount destroy();
|
||||
if(isdefined(player.weaponhud))
|
||||
player.weaponhud destroy();
|
||||
if(isdefined(player.ratiohud))
|
||||
player.ratiohud destroy();
|
||||
if(isDefined(player.streakText))
|
||||
player.streakText destroy();
|
||||
foreach(icon in player.streakIcons)
|
||||
{
|
||||
if(isDefined(icon))
|
||||
icon destroy();
|
||||
}
|
||||
player.line destroy();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
579
gunfun/mod/weapons.gsc
Executable file
579
gunfun/mod/weapons.gsc
Executable file
@@ -0,0 +1,579 @@
|
||||
#include common_scripts\utility;
|
||||
#include maps\mp\_utility;
|
||||
#include maps\mp\gametypes\_hud_util;
|
||||
|
||||
|
||||
loadWeapons()
|
||||
{
|
||||
level.gungameList = [];
|
||||
weaponList = [];
|
||||
amount_of_weapons = getDvarInt("amount_weapons");
|
||||
|
||||
if(getDvar("gunmode") == "Snipers only")
|
||||
{
|
||||
amount_of_weapons = int(amount_of_weapons/2);
|
||||
weaponList[weaponList.size] = "barrett_mp";
|
||||
weaponList[weaponList.size] = "wa2000_mp";
|
||||
weaponList[weaponList.size] = "m21_mp";
|
||||
weaponList[weaponList.size] = "cheytac_mp";
|
||||
}
|
||||
else if(getDvar("gunmode") == "Pistol & Shotguns only")
|
||||
{
|
||||
amount_of_weapons = int(amount_of_weapons/2);
|
||||
weaponList[weaponList.size] = "deserteagle_mp";
|
||||
weaponList[weaponList.size] = "coltanaconda_mp";
|
||||
weaponList[weaponList.size] = "beretta_mp";
|
||||
// semi auto pistols
|
||||
weaponList[weaponList.size] = "tmp_mp";
|
||||
weaponList[weaponList.size] = "glock_mp";
|
||||
weaponList[weaponList.size] = "beretta393_mp";
|
||||
weaponList[weaponList.size] = "pp2000_mp";
|
||||
// shotguns
|
||||
weaponList[weaponList.size] = "ranger_mp";
|
||||
weaponList[weaponList.size] = "model1887_mp";
|
||||
weaponList[weaponList.size] = "striker_mp";
|
||||
weaponList[weaponList.size] = "aa12_mp";
|
||||
weaponList[weaponList.size] = "m1014_mp";
|
||||
weaponList[weaponList.size] = "spas12_mp";
|
||||
}
|
||||
else if(getDvar("gunmode") == "Fungame")
|
||||
{
|
||||
loadFungameList();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
// pistols
|
||||
weaponList[weaponList.size] = "usp_mp";
|
||||
weaponList[weaponList.size] = "deserteagle_mp";
|
||||
weaponList[weaponList.size] = "coltanaconda_mp";
|
||||
weaponList[weaponList.size] = "beretta_mp";
|
||||
// semi auto pistols
|
||||
weaponList[weaponList.size] = "tmp_mp";
|
||||
weaponList[weaponList.size] = "glock_mp";
|
||||
weaponList[weaponList.size] = "beretta393_mp";
|
||||
weaponList[weaponList.size] = "pp2000_mp";
|
||||
// shotguns
|
||||
weaponList[weaponList.size] = "ranger_mp";
|
||||
weaponList[weaponList.size] = "model1887_mp";
|
||||
weaponList[weaponList.size] = "striker_mp";
|
||||
weaponList[weaponList.size] = "aa12_mp";
|
||||
weaponList[weaponList.size] = "m1014_mp";
|
||||
weaponList[weaponList.size] = "spas12_mp";
|
||||
// rocket launcher
|
||||
weaponList[weaponList.size] = "m79_mp";
|
||||
weaponList[weaponList.size] = "rpg_mp";
|
||||
weaponList[weaponList.size] = "at4_mp";
|
||||
//weaponList[weaponList.size] = "javelin_mp";
|
||||
// assault rifles
|
||||
weaponList[weaponList.size] = "ak47_mp";
|
||||
weaponList[weaponList.size] = "m16_mp";
|
||||
weaponList[weaponList.size] = "m4_mp";
|
||||
weaponList[weaponList.size] = "fn2000_mp";
|
||||
weaponList[weaponList.size] = "masada_mp";
|
||||
weaponList[weaponList.size] = "famas_mp";
|
||||
weaponList[weaponList.size] = "fal_mp";
|
||||
weaponList[weaponList.size] = "scar_mp";
|
||||
weaponList[weaponList.size] = "tavor_mp";
|
||||
weaponList[weaponList.size] = "ak47classic_mp";
|
||||
// sub machine guns
|
||||
weaponList[weaponList.size] = "mp5k_mp";
|
||||
weaponList[weaponList.size] = "uzi_mp";
|
||||
weaponList[weaponList.size] = "p90_mp";
|
||||
weaponList[weaponList.size] = "kriss_mp";
|
||||
weaponList[weaponList.size] = "ump45_mp";
|
||||
weaponList[weaponList.size] = "ak74u_mp";
|
||||
// light machine guns
|
||||
weaponList[weaponList.size] = "rpd_mp";
|
||||
weaponList[weaponList.size] = "sa80_mp";
|
||||
weaponList[weaponList.size] = "mg4_mp";
|
||||
weaponList[weaponList.size] = "m240_mp";
|
||||
weaponList[weaponList.size] = "aug_mp";
|
||||
// sniper
|
||||
weaponList[weaponList.size] = "barrett_mp";
|
||||
weaponList[weaponList.size] = "wa2000_mp";
|
||||
weaponList[weaponList.size] = "m21_mp";
|
||||
weaponList[weaponList.size] = "cheytac_mp";
|
||||
weaponList[weaponList.size] = "dragunov_mp";
|
||||
weaponList[weaponList.size] = "m40a3_mp";
|
||||
// special
|
||||
weaponList[weaponList.size] = "ac130_mp";
|
||||
//weaponList[weaponList.size] = "riotshield_mp";
|
||||
|
||||
}
|
||||
|
||||
shuffle = getDvarInt("shuffle_weapons");
|
||||
level.gungameList[0] = "defaultweapon_mp";
|
||||
for(i = 1; i <= amount_of_weapons; i++)
|
||||
{
|
||||
if(weaponList.size <= 0) break;
|
||||
|
||||
if(shuffle)
|
||||
id = randomInt(weaponList.size);
|
||||
else
|
||||
id = (i - 1) % weaponList.size;
|
||||
|
||||
level.gungameList[level.gungameList.size] = setWeapon(weaponList[id]);
|
||||
|
||||
// Only remove specific weapons if we still have enough unique ones left
|
||||
if(weaponList.size > 5)
|
||||
{
|
||||
if(weaponList[id] == "m79_mp" || weaponList[id] == "at4_mp" || weaponList[id] == "rpg_mp" || weaponList[id] == "riotshield_mp" || weaponList[id] == "dragunov_mp" || weaponList[id] == "m40a3_mp" || weaponList[id] == "peacekeeper_mp")
|
||||
weaponList = removeIDfromArray(id, weaponList);
|
||||
}
|
||||
}
|
||||
//level.gungameList[1] = setWeapon("rpg_mp");
|
||||
//level.gungameList[1] = "rpg_mp";
|
||||
}
|
||||
removeIDfromArray(id, weaponList)
|
||||
{
|
||||
newArray = [];
|
||||
for(i = 0; i < weaponList.size;i++)
|
||||
{
|
||||
if(id != i)
|
||||
newArray[newArray.size] = weaponList[i];
|
||||
}
|
||||
return newArray;
|
||||
}
|
||||
setWeapon(name)
|
||||
{
|
||||
name = strTok(name, "_");
|
||||
scope = "";
|
||||
attachments = "";
|
||||
switch(name[0])
|
||||
{
|
||||
case "ak47":
|
||||
scope = "acog,eotech,,reflex";
|
||||
attachments = "fmj,xmags,gl,heartbeat,silencer,thermal,,shotgun";
|
||||
break;
|
||||
case "m16":
|
||||
scope = "acog,eotech,,reflex";
|
||||
attachments = "fmj,xmags,gl,heartbeat,silencer,thermal,,shotgun";
|
||||
break;
|
||||
case "m4":
|
||||
scope = "acog,eotech,,reflex";
|
||||
attachments = "fmj,xmags,gl,heartbeat,silencer,thermal,,shotgun";
|
||||
break;
|
||||
case "fn2000":
|
||||
scope = "acog,eotech,,reflex";
|
||||
attachments = "fmj,xmags,gl,heartbeat,silencer,thermal,,shotgun";
|
||||
break;
|
||||
case "masada":
|
||||
scope = "acog,eotech,,reflex";
|
||||
attachments = "fmj,xmags,gl,heartbeat,silencer,thermal,,shotgun";
|
||||
break;
|
||||
case "famas":
|
||||
scope = "acog,eotech,,reflex";
|
||||
attachments = "fmj,xmags,gl,heartbeat,silencer,thermal,,shotgun";
|
||||
break;
|
||||
case "fal":
|
||||
scope = "acog,eotech,,reflex";
|
||||
attachments = "fmj,xmags,gl,heartbeat,silencer,thermal,,shotgun";
|
||||
break;
|
||||
case "scar":
|
||||
scope = "acog,eotech,,reflex";
|
||||
attachments = "fmj,xmags,gl,heartbeat,silencer,thermal,,shotgun";
|
||||
break;
|
||||
case "tavor":
|
||||
scope = "acog,eotech,,reflex";
|
||||
attachments = "fmj,xmags,gl,heartbeat,silencer,thermal,,shotgun";
|
||||
break;
|
||||
case "ak47classic":
|
||||
scope = "acog,,reflex";
|
||||
attachments = "fmj,gl,,silencer,xmags";
|
||||
break;
|
||||
// sub machine guns
|
||||
case "mp5k":
|
||||
scope = "acog,eotech,,reflex,akimbo";
|
||||
attachments = "fmj,xmags,silencer,thermal,,rof";
|
||||
break;
|
||||
case "uzi":
|
||||
scope = "acog,eotech,,reflex,akimbo";
|
||||
attachments = "fmj,xmags,silencer,thermal,,rof";
|
||||
break;
|
||||
case "p90":
|
||||
scope = "acog,eotech,,reflex,akimbo";
|
||||
attachments = "fmj,xmags,silencer,thermal,,rof";
|
||||
break;
|
||||
case "kriss":
|
||||
scope = "acog,eotech,,reflex,akimbo";
|
||||
attachments = "fmj,xmags,silencer,thermal,,rof";
|
||||
break;
|
||||
case "ump45":
|
||||
scope = "acog,eotech,,reflex,akimbo";
|
||||
attachments = "fmj,xmags,silencer,thermal,,rof";
|
||||
break;
|
||||
case "ak47u":
|
||||
scope = "acog,,";
|
||||
attachments = "xmags,,";
|
||||
break;
|
||||
// light machine guns
|
||||
case "rpd":
|
||||
scope = "acog,,eotech";
|
||||
attachments = "fmj,xmags,silencer,thermal,,grip,heartbeat"; // reflex
|
||||
break;
|
||||
case "sa80":
|
||||
scope = "acog,,eotech";
|
||||
attachments = "fmj,xmags,silencer,thermal,,grip,heartbeat";
|
||||
break;
|
||||
case "mg4":
|
||||
scope = "acog,,eotech";
|
||||
attachments = "fmj,xmags,silencer,thermal,,grip,heartbeat";
|
||||
break;
|
||||
case "m240":
|
||||
scope = "acog,,eotech";
|
||||
attachments = "fmj,xmags,silencer,thermal,,grip,heartbeat";
|
||||
break;
|
||||
case "aug":
|
||||
scope = "acog,,eotech";
|
||||
attachments = "fmj,xmags,silencer,thermal,,grip,heartbeat";
|
||||
break;
|
||||
// sniper
|
||||
case "barrett":
|
||||
scope = "acog,,";
|
||||
attachments = "fmj,xmags,silencer,thermal,,heartbeat";
|
||||
break;
|
||||
case "wa2000":
|
||||
scope = "acog,,";
|
||||
attachments = "fmj,xmags,silencer,thermal,,heartbeat";
|
||||
break;
|
||||
case "m21":
|
||||
scope = "acog,,";
|
||||
attachments = "fmj,xmags,silencer,thermal,,heartbeat";
|
||||
break;
|
||||
case "cheytac":
|
||||
scope = "acog,,";
|
||||
attachments = "fmj,xmags,silencer,thermal,,heartbeat";
|
||||
break;
|
||||
// shotgun
|
||||
case "ranger":
|
||||
scope = "akimbo,";
|
||||
attachments = "fmj,";
|
||||
break;
|
||||
case "model1887":
|
||||
scope = "akimbo,";
|
||||
attachments = "fmj,";
|
||||
break;
|
||||
case "striker":
|
||||
scope = "eotech,reflex,";
|
||||
attachments = "fmj,grip,silencer,xmags,";
|
||||
break;
|
||||
case "aa12":
|
||||
scope = "eotech,reflex,";
|
||||
attachments = "fmj,grip,silencer,xmags,";
|
||||
break;
|
||||
case "m1014":
|
||||
scope = "eotech,reflex,";
|
||||
attachments = "fmj,grip,silencer,xmags,";
|
||||
break;
|
||||
case "spas12":
|
||||
scope = "eotech,reflex,";
|
||||
attachments = "fmj,grip,silencer,xmags,";
|
||||
break;
|
||||
// pistols
|
||||
case "usp": // some variants get lost because fmj can be front and back attachment
|
||||
scope = "akimbo,";
|
||||
attachments = "fmj,silencer,xmags"; // tactical
|
||||
break;
|
||||
case "beretta":
|
||||
scope = "akimbo,";
|
||||
attachments = "fmj,silencer,xmags";
|
||||
break;
|
||||
case "deserteagle":
|
||||
scope = "akimbo,";
|
||||
attachments = "fmj,silencer,xmags";
|
||||
break;
|
||||
case "coltanaconda":
|
||||
scope = "akimbo,";
|
||||
attachments = "fmj,silencer,xmags";
|
||||
break;
|
||||
// semi automatic pistols
|
||||
case "tmp":
|
||||
scope = "akimbo,eotech,"; // reflex
|
||||
attachments = "fmj,silencer,xmags,";
|
||||
break;
|
||||
case "glock":
|
||||
scope = "akimbo,eotech,";
|
||||
attachments = "fmj,silencer,xmags,";
|
||||
break;
|
||||
case "beretta393":
|
||||
scope = "akimbo,eotech,";
|
||||
attachments = "fmj,silencer,xmags,";
|
||||
break;
|
||||
case "pp2000":
|
||||
scope = "akimbo,eotech,";
|
||||
attachments = "fmj,silencer,xmags,";
|
||||
break;
|
||||
case "ac130":
|
||||
scope = "";
|
||||
attachments = "25mm,40mm,105mm";
|
||||
break;
|
||||
default: // grenadelaunchers and riotshield
|
||||
scope = "";
|
||||
attachments = "";
|
||||
break;
|
||||
}
|
||||
|
||||
if(scope == "" && attachments == "")
|
||||
{
|
||||
return (name[0] + "_mp");
|
||||
}
|
||||
else if(scope == "") // ac130 only
|
||||
{
|
||||
attachmentsAr = strTok(attachments, ",");
|
||||
usedAttachment = attachmentsAr[randomInt(attachmentsAr.size)];
|
||||
return (name[0] + "_" + usedAttachment + "_mp");
|
||||
}
|
||||
|
||||
scopeAr = strTok(scope, ",");
|
||||
usedScope = scopeAr[randomInt(scopeAr.size)];
|
||||
attachmentsAr = strTok(attachments, ",");
|
||||
usedAttachment = attachmentsAr[randomInt(attachmentsAr.size)];
|
||||
|
||||
if((usedScope == "akimbo") && (name[0] == "deserteagle" || name[0] == "coltanaconda")){
|
||||
attachments = "fmj,";
|
||||
attachmentsAr = strTok(attachments, ",");
|
||||
usedAttachment = attachmentsAr[randomInt(attachmentsAr.size)];
|
||||
}
|
||||
else if(usedScope == "reflex")
|
||||
{
|
||||
if(name[0] == "aa12" || name[0] == "spas12" || name[0] == "striker" || name[0] == "m1014")
|
||||
{
|
||||
attachments = "silencer,xmags,";
|
||||
attachmentsAr = strTok(attachments, ",");
|
||||
usedAttachment = attachmentsAr[randomInt(attachmentsAr.size)];
|
||||
}
|
||||
else if(isAssaultRifle(name[0]))
|
||||
{
|
||||
if(usedAttachment == "gl" || usedAttachment == "fmj" || usedAttachment == "heartbeat")
|
||||
return (name[0] + "_" + usedAttachment + "_" + usedScope + "_mp");
|
||||
}
|
||||
else if(isSMG(name[0]))
|
||||
{
|
||||
if(usedAttachment == "fmj")
|
||||
return (name[0] + "_" + usedAttachment + "_" + usedScope + "_mp");
|
||||
}
|
||||
}
|
||||
//iPrintln("scope" + usedScope);
|
||||
//iPrintln("attachment" + usedAttachment);
|
||||
if(usedAttachment == "thermal")
|
||||
return (name[0] + "_" + usedAttachment + "_mp");
|
||||
else
|
||||
return (name[0] + "_" + usedScope + "_" + usedAttachment + "_mp");
|
||||
}
|
||||
isAssaultRifle(name)
|
||||
{
|
||||
ar = [];
|
||||
ar[ar.size] = "fn2000";
|
||||
ar[ar.size] = "masada";
|
||||
ar[ar.size] = "famas";
|
||||
ar[ar.size] = "fal";
|
||||
ar[ar.size] = "m4";
|
||||
ar[ar.size] = "m16";
|
||||
ar[ar.size] = "scar";
|
||||
ar[ar.size] = "tavor";
|
||||
ar[ar.size] = "ak47classic";
|
||||
foreach(a in ar)
|
||||
{
|
||||
if(name == a)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
loadFungameList()
|
||||
{
|
||||
level.gungameList = [];
|
||||
level.gungameList[0] = "defaultweapon_mp";
|
||||
|
||||
// PISTOLS (1-20)
|
||||
addFungameWeapon("usp_mp");
|
||||
addFungameWeapon("usp_silencer_mp");
|
||||
addFungameWeapon("usp_tactical_mp");
|
||||
addFungameWeapon("usp_fmj_mp");
|
||||
addFungameWeapon("usp_akimbo_mp");
|
||||
addFungameWeapon("beretta_mp");
|
||||
addFungameWeapon("beretta_silencer_mp");
|
||||
addFungameWeapon("beretta_tactical_mp");
|
||||
addFungameWeapon("beretta_fmj_mp");
|
||||
addFungameWeapon("beretta_akimbo_mp");
|
||||
addFungameWeapon("deserteagle_mp");
|
||||
addFungameWeapon("deserteagle_fmj_mp");
|
||||
addFungameWeapon("deserteagle_tactical_mp");
|
||||
addFungameWeapon("deserteagle_akimbo_mp");
|
||||
addFungameWeapon("coltanaconda_mp");
|
||||
addFungameWeapon("coltanaconda_fmj_mp");
|
||||
addFungameWeapon("coltanaconda_tactical_mp");
|
||||
addFungameWeapon("coltanaconda_akimbo_mp");
|
||||
addFungameWeapon("usp_mp"); // Filler
|
||||
addFungameWeapon("beretta_mp"); // Filler
|
||||
|
||||
// MACHINE PISTOLS (21-40)
|
||||
addFungameWeapon("glock_mp");
|
||||
addFungameWeapon("glock_silencer_mp");
|
||||
addFungameWeapon("glock_reflex_mp");
|
||||
addFungameWeapon("glock_akimbo_mp");
|
||||
addFungameWeapon("tmp_mp");
|
||||
addFungameWeapon("tmp_silencer_mp");
|
||||
addFungameWeapon("tmp_reflex_mp");
|
||||
addFungameWeapon("tmp_akimbo_mp");
|
||||
addFungameWeapon("beretta393_mp");
|
||||
addFungameWeapon("beretta393_silencer_mp");
|
||||
addFungameWeapon("beretta393_reflex_mp");
|
||||
addFungameWeapon("beretta393_akimbo_mp");
|
||||
addFungameWeapon("pp2000_mp");
|
||||
addFungameWeapon("pp2000_silencer_mp");
|
||||
addFungameWeapon("pp2000_reflex_mp");
|
||||
addFungameWeapon("pp2000_akimbo_mp");
|
||||
addFungameWeapon("glock_eotech_mp");
|
||||
addFungameWeapon("tmp_eotech_mp");
|
||||
addFungameWeapon("beretta393_eotech_mp");
|
||||
addFungameWeapon("pp2000_eotech_mp");
|
||||
|
||||
wait .05;
|
||||
// SHOTGUNS (41-60)
|
||||
addFungameWeapon("spas12_mp");
|
||||
addFungameWeapon("spas12_grip_mp");
|
||||
addFungameWeapon("spas12_silencer_mp");
|
||||
addFungameWeapon("spas12_reflex_mp");
|
||||
addFungameWeapon("m1014_mp");
|
||||
addFungameWeapon("m1014_grip_mp");
|
||||
addFungameWeapon("m1014_silencer_mp");
|
||||
addFungameWeapon("m1014_reflex_mp");
|
||||
addFungameWeapon("aa12_mp");
|
||||
addFungameWeapon("aa12_grip_mp");
|
||||
addFungameWeapon("aa12_silencer_mp");
|
||||
addFungameWeapon("aa12_reflex_mp");
|
||||
addFungameWeapon("striker_mp");
|
||||
addFungameWeapon("striker_grip_mp");
|
||||
addFungameWeapon("striker_silencer_mp");
|
||||
addFungameWeapon("striker_reflex_mp");
|
||||
addFungameWeapon("ranger_mp");
|
||||
addFungameWeapon("ranger_akimbo_mp");
|
||||
addFungameWeapon("model1887_mp");
|
||||
addFungameWeapon("model1887_akimbo_mp");
|
||||
|
||||
wait .05;
|
||||
// SMGS (61-90)
|
||||
addFungameWeapon("mp5k_mp");
|
||||
addFungameWeapon("mp5k_silencer_mp");
|
||||
addFungameWeapon("mp5k_reflex_mp");
|
||||
addFungameWeapon("mp5k_akimbo_mp");
|
||||
addFungameWeapon("mp5k_rof_mp");
|
||||
addFungameWeapon("uzi_mp");
|
||||
addFungameWeapon("uzi_silencer_mp");
|
||||
addFungameWeapon("uzi_reflex_mp");
|
||||
addFungameWeapon("uzi_akimbo_mp");
|
||||
addFungameWeapon("uzi_rof_mp");
|
||||
addFungameWeapon("p90_mp");
|
||||
addFungameWeapon("p90_silencer_mp");
|
||||
addFungameWeapon("p90_reflex_mp");
|
||||
addFungameWeapon("p90_akimbo_mp");
|
||||
addFungameWeapon("p90_rof_mp");
|
||||
addFungameWeapon("kriss_mp");
|
||||
addFungameWeapon("kriss_silencer_mp");
|
||||
addFungameWeapon("kriss_reflex_mp");
|
||||
addFungameWeapon("kriss_akimbo_mp");
|
||||
addFungameWeapon("kriss_rof_mp");
|
||||
addFungameWeapon("ump45_mp");
|
||||
addFungameWeapon("ump45_silencer_mp");
|
||||
addFungameWeapon("ump45_reflex_mp");
|
||||
addFungameWeapon("ump45_akimbo_mp");
|
||||
addFungameWeapon("ump45_rof_mp");
|
||||
addFungameWeapon("ak74u_mp");
|
||||
addFungameWeapon("mp5k_acog_mp");
|
||||
addFungameWeapon("p90_acog_mp");
|
||||
addFungameWeapon("kriss_acog_mp");
|
||||
addFungameWeapon("ump45_acog_mp");
|
||||
|
||||
wait .05;
|
||||
// ASSAULT RIFLES (91-120)
|
||||
addFungameWeapon("m4_mp");
|
||||
addFungameWeapon("m4_silencer_mp");
|
||||
addFungameWeapon("m4_reflex_mp");
|
||||
addFungameWeapon("m4_acog_mp");
|
||||
addFungameWeapon("m4_gl_mp");
|
||||
addFungameWeapon("scar_mp");
|
||||
addFungameWeapon("scar_silencer_mp");
|
||||
addFungameWeapon("scar_reflex_mp");
|
||||
addFungameWeapon("scar_acog_mp");
|
||||
addFungameWeapon("scar_gl_mp");
|
||||
addFungameWeapon("tavor_mp");
|
||||
addFungameWeapon("tavor_silencer_mp");
|
||||
addFungameWeapon("tavor_reflex_mp");
|
||||
addFungameWeapon("tavor_acog_mp");
|
||||
addFungameWeapon("tavor_gl_mp");
|
||||
addFungameWeapon("masada_mp");
|
||||
addFungameWeapon("masada_silencer_mp");
|
||||
addFungameWeapon("masada_reflex_mp");
|
||||
addFungameWeapon("masada_acog_mp");
|
||||
addFungameWeapon("masada_gl_mp");
|
||||
addFungameWeapon("ak47_mp");
|
||||
addFungameWeapon("ak47_silencer_mp");
|
||||
addFungameWeapon("ak47_reflex_mp");
|
||||
addFungameWeapon("ak47_acog_mp");
|
||||
addFungameWeapon("ak47_gl_mp");
|
||||
addFungameWeapon("famas_mp");
|
||||
addFungameWeapon("famas_silencer_mp");
|
||||
addFungameWeapon("famas_reflex_mp");
|
||||
addFungameWeapon("famas_acog_mp");
|
||||
addFungameWeapon("famas_fmj_mp");
|
||||
|
||||
wait .05;
|
||||
// LMGS (121-135)
|
||||
addFungameWeapon("rpd_mp");
|
||||
addFungameWeapon("rpd_grip_mp");
|
||||
addFungameWeapon("rpd_reflex_mp");
|
||||
addFungameWeapon("mg4_mp");
|
||||
addFungameWeapon("mg4_grip_mp");
|
||||
addFungameWeapon("mg4_reflex_mp");
|
||||
addFungameWeapon("aug_mp");
|
||||
addFungameWeapon("aug_grip_mp");
|
||||
addFungameWeapon("aug_reflex_mp");
|
||||
addFungameWeapon("m240_mp");
|
||||
addFungameWeapon("m240_grip_mp");
|
||||
addFungameWeapon("m240_reflex_mp");
|
||||
addFungameWeapon("sa80_mp");
|
||||
addFungameWeapon("sa80_grip_mp");
|
||||
addFungameWeapon("sa80_reflex_mp");
|
||||
|
||||
// SNIPERS (136-145)
|
||||
addFungameWeapon("cheytac_mp");
|
||||
addFungameWeapon("cheytac_acog_mp");
|
||||
addFungameWeapon("cheytac_thermal_mp");
|
||||
addFungameWeapon("barrett_mp");
|
||||
addFungameWeapon("barrett_acog_mp");
|
||||
addFungameWeapon("barrett_thermal_mp");
|
||||
addFungameWeapon("wa2000_mp");
|
||||
addFungameWeapon("wa2000_thermal_mp");
|
||||
addFungameWeapon("m21_mp");
|
||||
addFungameWeapon("m21_thermal_mp");
|
||||
|
||||
// LAUNCHERS & SPECIAL (146-150)
|
||||
addFungameWeapon("m79_mp");
|
||||
addFungameWeapon("rpg_mp");
|
||||
addFungameWeapon("at4_mp");
|
||||
addFungameWeapon("riotshield_mp");
|
||||
addFungameWeapon("javelin_mp");
|
||||
}
|
||||
|
||||
addFungameWeapon(weapon)
|
||||
{
|
||||
level.gungameList[level.gungameList.size] = weapon;
|
||||
}
|
||||
isSMG(name)
|
||||
{
|
||||
ar = [];
|
||||
ar[ar.size] = "mp5k";
|
||||
ar[ar.size] = "uzi";
|
||||
ar[ar.size] = "p90";
|
||||
ar[ar.size] = "kriss";
|
||||
ar[ar.size] = "ump45";
|
||||
ar[ar.size] = "ak74u"; //?
|
||||
foreach(a in ar)
|
||||
{
|
||||
if(name == a)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
5
gunfun/scripts/load.gsc
Executable file
5
gunfun/scripts/load.gsc
Executable file
@@ -0,0 +1,5 @@
|
||||
|
||||
Init()
|
||||
{
|
||||
thread mod\main::Init();
|
||||
}
|
||||
BIN
gunfun/z_svr_bots.iwd
Executable file
BIN
gunfun/z_svr_bots.iwd
Executable file
Binary file not shown.
Reference in New Issue
Block a user