UGX-Mods Login

or login with an authentication provider below
Sign In with Google
Sign In with Twitter
Sign In with Discord
Sign In with Steam
Sign In with Facebook
Sign In with Twitch

Soviet Mod 1.3 Beta Source

broken avatar :(
Created 8 years ago
by daedra descent
0 Members and 1 Guest are viewing this topic.
2,316 views
broken avatar :(
×
broken avatar :(
☭ Soviet Commander ☭
Location: us
Date Registered: 13 August 2012
Last active: 8 years ago
Posts
2,790
Respect
Forum Rank
King of the Zombies
Primary Group
Community Daedra
My Groups
More
My Contact & Social Links
More
Signature
Let's keep this thread on topic from here on in. -DBZ

+1 to off-topic reply -DBZ

lmao. Too funny.

Goliath Script Placer: http://ugx-mods.com/forum/index.php/topic,11234.msg125257/topicseen.html#new

"...Christ, people. Learn C, instead of just stringing random characters
together until it compiles (with warnings)..."

-Linus Torvalds
×
daedra descent's Groups
Community Daedra
Community Daedra
daedra descent's Contact & Social LinksBlueSoviet
Source code for the Soviet mod. Feel free to create your own versions(please rename differently than the official version if you do!).

soviet:

Code Snippet
Plaintext
#include maps\_utility; 
#include common_scripts\utility;
#include maps\_soviet\soviet_utility;
#include maps\_soviet\soviet_backend;
#include maps\_soviet\soviet_dev;

// Script inits all required scripts for all gamemodes
init()
{
flag_wait( "all_players_connected" );

dev();
dev_create_playback("soviet");
dev_create_playback("ctf");
dev_create_playback("hotzone");
dev_create_playback("bots");
dev_create_playback("weapons");
dev_create_playback("perks");

dev_add_playback("soviet", "Soviet mod initalized");

setDvar( "soviet_gamemode", "deathmatch" );
setDvar( "soviet_dif", "normal" );


if(!isdefined(level.soviet))
level.soviet = [];

level.soviet["mod_version"] = 1.3;

dev_add_playback("soviet", "Using soviet mod version " + level.soviet["mod_version"] + ".");

threadedTasks = [];
threadedTasks[0] = ::hide_ctf;
threadedTasks[1] = maps\_soviet\soviet_weapons::init_weapon_affects;

do_threaded_tasks(threadedTasks);

players_connect_opening();

script_wait_message(15, "Use the console to select your gamemode by typing soviet_gamemode <gamemode>", "Locking current gamemode in ", "Current gamemode locked in!");


level.soviet["gamemode"] = getdvar("soviet_gamemode");
level.soviet["max_ai"] = 8;


if(!is_valid_gamemode())
{
iprintln("Gamemode not valid! Changing gamemode to deathmatch!");

dev_add_playback("soviet", "Gamemode dvar not valid. The gamemode has been set to deathmatch.");
level.soviet["gamemode"] = "deathmatch";
}

mod_version_Check();

mod_dif();

mod_init();
}
mod_init()
{

if(level.soviet["gamemode"] == "deathmatch")
{
[[level.deathmatch_settings]]();
level.soviet["cType"] = " kills";
level.soviet["gamemode_text"] = "Kills: ";
thread deathmatch_init();
}
else if(level.soviet["gamemode"] == "ctf")
{
[[level.ctf_settings]]();
level.soviet["cType"] = " captures";
level.soviet["gamemode_text"] = "Captures: ";
thread ctf_init();
}
else if(level.soviet["gamemode"] == "hotzone")
{
[[level.hotzone_settings]]();
level.soviet["cType"] = " hotzones";
level.soviet["gamemode_text"] = "Hotzone: ";
thread hotzone_init();
}
else if(level.soviet["gamemode"] == "quake_deathmatch")
{
[[level.quake_deathmatch_settings]]();
level.soviet["cType"] = " score";
level.soviet["gamemode_text"] = "Score: ";
thread quake_deathmatch_init();
}
else if(level.soviet["gamemode"] == "null")
return;
else
{
assertMsg("Gamemode " + level.soviet["gamemode"] + " is not valid!");
return;
}

level.gamemode = level.soviet["gamemode"];
level.cType = level.soviet["cType"];

[[level.common_settings]]();
thread common_init();
thread gamemode_hud();
}
mod_dif()
{
dif = getDvar("soviet_dif");

if(dif == "easy")
level.soviet["max_ai"] = 4;
else if(dif == "hard")
level.soviet["max_ai"] = 12;
else if(dif == "extreme")
level.soviet["max_ai"] = 16;
else
level.soviet["max_ai"] = 8;


}

common_init()
{
players = get_players();
for(i=0;i<players.size;i++)
{
players[i].score = 0;
players[i].kills = 0;
}

maps\_soviet\soviet_perks::init();
maps\_soviet\soviet_weapons::init();
}
deathmatch_init()
{
maps\_soviet\soviet_bots::init();

while(1)
{
players = get_players();
for(i=0;i<players.size;i++)
players[i].score = players[i].kills;
wait(.75);
}

}
ctf_init()
{
maps\_soviet\soviet_ctf::init();
maps\_soviet\soviet_bots::init();
}
hotzone_init()
{
maps\_soviet\soviet_hotzone::init();
maps\_soviet\soviet_bots::init();
}
quake_deathmatch_init()
{
maps\_soviet\soviet_bots::init("spawner", maps\_soviet\soviet_bots::quake_deathmatch);

while(1)
{
players = get_players();
for(i=0;i<players.size;i++)
players[i].score = players[i].kills;
wait(.75);
}
}

Soviet_backend:

Code Snippet
Plaintext
#include maps\_utility; 
#include common_scripts\utility;
#include maps\_soviet\soviet_utility;
#include maps\_soviet\soviet_dev;

// This script is for functions that are used once in other scripts. Placing this stuff here will just make other scripts shorter and clutter free.
mod_integrity_check()
{
if(!isdefined(level.cost[level.soviet["gamemode"]]))
assertmsg("No weapon cost for gamemode: " + level.soviet["gamemode"]);
if(!isdefined(level.delay[level.soviet["gamemode"]]))
assertmsg("No spawner delays for gamemode: " + level.soviet["gamemode"]);
if(!isdefined(level.shader))
assertmsg("shader array not defined!");
}
is_valid_gamemode()
{
if(!isdefined(level.compatibility) || !isArray(level.compatibility))
return false;

if(level.soviet["gamemode"] == "null")
return true;

return search_array(level.compatibility, level.soviet["gamemode"]);
}
mod_Version_Check()
{
if(!isDefined(level.soviet["map_mod_version"]))
return;

if(level.soviet["mod_version"] < level.soviet["map_mod_version"])
iprintln("[Warning] This map requires a newer version of the Soviet Mod.");
}
hide_ctf()
{
home_flag = getent("home_flag","targetname");
enemy_flags = getentarray("enemy_flag", "targetname");

if(!isdefined(home_flag) || !isdefined(enemy_flags))
return;

home_flag hide();

for(i=0;i<enemy_flags.size;i++)
enemy_flags[i] hide();
}
players_connect_opening()
{
flag_wait( "all_players_connected" );
players = get_players();
for( i = 0; i < players.size; i++ )
{
players[i] allowstand(true);
players[i] allowcrouch(true);
players[i] allowprone(true);
players[i] setstance("stand");
players[i] SetClientDvar( "hud_showStance", "0" );
players[i] SetClientDvar( "compass", "0");
players[i] SetClientDvar( "ammoCounterHide", "1" );
players[i] setClientDvar( "miniscoreboardhide", "0" );
}
level thread coop_player_spawn_placement();
}

coop_player_spawn_placement()
{
structs = getstructarray( "initial_spawn_points", "targetname" );

//chrisp - adding support for overriding the default spawning method

players = get_players();

for( i = 0; i < players.size; i++ )
{
players[i] setorigin( structs[i].origin ); 
players[i].spectator_respawn = structs[i];
}
}
gamemode_hud()
{
hud = create_simple_hud();
hud.alignX = "left";
hud.alignY = "bottom";
hud.horzAlign = "left";
hud.vertAlign = "bottom";
hud.alpha = 1;
hud.x = 20;
Hud.y = -35;
hud.font = "big";
hud.fontscale = 2.0;
hud.color = ( 1, 1, 0.5 );

while(1)
{
players = get_players();
for(i=0;i<players.size;i++)
{
hud SetText(level.soviet["gamemode_text"] + players[i].score );
}
wait(.5);
}
}

Soviet_bots:

Code Snippet
Plaintext
#include maps\_utility; 
#include common_scripts\utility;
#include maps\_soviet\soviet_utility;
#include maps\_soviet\soviet_dev;

init(spawners, func, forcemove)
{
if(isdefined(spawners))
level.spawner["valid_spawners"] = getentarray(spawners,"targetname");
else
level.spawner["valid_spawners"] = getentarray("spawner","targetname");

if(!isdefined(level.spawner["valid_spawners"]))
assertmsg("No spawners!");

for(i=0;i<level.spawner["valid_spawners"].size;i++)
if(!isdefined(level.spawner["valid_spawners"][i].script_noteworthy))
assertmsg("Spawner at origin: " + level.spawner["valid_spawners"][i].origin + " doesn't have a script_noteworthy!");

if(isdefined(func))
thread [[func]]();
else
thread loop_spawn();

if(!isdefined(forcemove) || forcemove)
thread ai_move();
}
loop_spawn()
{
while(1)
{
ai = getaiarray("axis");
if(ai.size < level.soviet["max_ai"])
{
a = randomint(level.spawner["valid_spawners"].size);
waitTime = level.delay[level.soviet["gamemode"]][level.spawner["valid_spawners"][a].script_noteworthy];

guy = level.spawner["valid_spawners"][a] dospawn();

if(isDefined(guy))
guy.dropweapon = false;


dev_add_playback("bots", "Spawned AI at origin: " + level.spawner["valid_spawners"][a].origin + " with wait time: " + waitTime);
wait(waitTime);
}
else if(ai.size > level.soviet["max_ai"])
assertmsg("Over max AI limit!");
wait(1);
}
}
quake_deathmatch()
{
players = get_players();

for(i=0;i<players.size;i++)
{
players[i] setMoveSpeedScale( 1.6 );
players[i] allowCrouch(false);
players[i] allowProne(false);
players[i] allowSprint(false);
players[i] allowAds(false);
}
thread loop_spawn();
}
ai_move()
{
while(1)
{

ai = getaiarray("axis");
players = get_players();

if(isdefined(ai))
{
for(i=0;i<players.size;i++)
{
for(k=0;k<ai.size;k++)
{
ai[k].closest_player = get_Closest_player(ai[k].origin);
nodes = GetAllNodes();
goal_node = getClosest(ai[k].closest_player.origin, nodes );
ai[k] SetGoalNode( goal_node );
}
}
}
wait(.25);
}
}

Soviet_dev:

Code Snippet
Plaintext
//////////////////////////////////////////////
//
// Script Playback System
// Version: 1.2
// Tracks in-game scripted events
// ONLY FOR DEVELOPER MODE
//
// Scripted by BlueSoviet
//
//////////////////////////////////////////////


#include maps\_utility;
#include common_scripts\utility;

dev()
{
/#
level.playback = [];
SetDvar( "dev_playback", "" );
thread dev_dvar_playback();
#/
}
dev_dvar_playback()
{
while(1)
{
cmd = getdvar("dev_playback");
if(isdefined(level.playback[cmd]))
dev_print_playback(cmd);
SetDvar("dev_playback", "");
wait(.1);
}
}

dev_create_playback(script)
{
/#
// *** BEGIN MAIN PLAYBACK VAR ***
level.playback[script] = [];
level.playback[script][0] = "***DEV SCRIPT PLAYBACK INIT***";
level.playback[script][1] = "DEV SCRIPT: " + script;
level.num[script] = level.playback[script].size;
// *** END MAIN PLAYBACK VAR ***
#/
}
dev_add_playback(script, playback)
{
/#
if(!isdefined(level.playback[script]) || !isdefined(level.num[script]))
assertmsg("UNDEFINED PLAYBACK SCRIPT");
level.playback[script][level.num[script]] = playback;
level.num[script]++;
#/
}
dev_print_playback(script, alert)
{
/#
if(!isdefined(level.playback[script]))
assertmsg("UNDEFINED PLAYBACK SCRIPT");

println("Script Playback Size: " + level.playback[script].size);
for(i=0;i<level.playback[script].size;i++)
{
if(isdefined(alert) && isstring(alert))
println(alert + " Playback " + i + ": " + level.playback[script][i]);
else
println("Playback " + i + ": " + level.playback[script][i]);
}
#/
}
dev_assert(desc, file, line, script)
{
/#
dev_add_playback(script, "SCRIPT FAIL! Desc: " + desc + " File: " + file + " Line: " + line);
assertmsg("SCRIPT FAIL! Desc: " + desc + " File: " + file + " Line: " + line);
#/
}


Soviet_ctf:

Code Snippet
Plaintext
#include maps\_utility; 
#include common_scripts\utility;
#include maps\_soviet\soviet_dev;

init()
{
level.flags = [];
level.flags["home"] = getent("home_flag","targetname");
level.flags["enemy"] = getentarray("enemy_flag", "targetname");

if(!isdefined(level.flags["home"]) || !isdefined(level.flags["enemy"]))
assertmsg("No home or enemy flags!");

level.flags["home"] show();

players = get_players();
for(i=0;i<players.size;i++)
{
players[i].has_flag = false;
dev_add_playback("ctf", ".has_flag set to false for: " + players[i].playername);
}
thread flags_init();
}
flags_init()
{
level.sa = true;

home_trig = spawn("trigger_radius", level.flags["home"].origin,0,32,32);
home_trig thread home_init();
flag_hide();

dev_add_playback("ctf", "Home flag set at origin: " + home_trig.origin + ". All enemy flags have been hidden.");

while(1)
{
if(level.sa)
{
dev_add_playback("ctf", "initializing new flag");
change_flag();
wait(1);
level.flags["current_flag"] enemy_init();
level.sa = false;
}
wait(1);
}
}
change_flag()
{
a_flag = randomint(level.flags["enemy"].size);
level.flags["current_flag"] = level.flags["enemy"][a_flag];
level.flags["current_trig"] = spawn("trigger_radius", level.flags["current_flag"].origin, 0, 32, 32);
level.flags["current_trig"] show();
}
flag_hide()
{
for(i=0;i<level.flags["enemy"].size;i++)
{
dev_add_playback("ctf", "Hiding flag at origin: " + level.flags["enemy"][i].origin);
level.flags["enemy"][i] hide();
}
}

home_init()
{
level.flags["home_trig"] = spawn("trigger_radius", level.flags["home"].origin,0,32,32);
dev_add_playback("ctf", "Spawned trigger radius for home flag.");
while(1)
{
players = get_players();
for(i=0;i<players.size;i++)
{
if(players[i].has_flag == true && players[i] istouching(self))
{
dev_add_playback("ctf", "Player: " + players[i].playername + " captured flag!");
players[i].has_flag = false;
level.fh = false;
players[i].score++;
players[i] iprintln("Flag captured!");
dev_add_playback("ctf", "Level.sa set to true!");
level.sa = true;

}
}
wait(.1);
}
}
enemy_init()
{
self endon("flag_taken");
self show();
// org = spawn("script_model", self.origin);
// org setModel("tag_origin");
// org moveTo(org groundPos(org.origin), .005);
// playFxOnTag(level.fx["pickupAvailableEffect"], org, "tag_origin");
// org.angles = org.angles + (0,180,0);
// iprintln("tag: " + org getTagAngles("tag_origin") + " Flag: " + self.angles);
while(1)
{
players = get_players();
for(i=0;i<players.size;i++)
{
if(players[i].has_flag == false && players[i] istouching(self))
{
dev_add_playback("ctf", "Player: " + players[i].playername + " has a flag!");
self hide();
players[i].has_flag = true;
players[i] iprintln("Flag taken!");
dev_add_playback("ctf", "Deleting current_trig and ending script execution for current flag!");
// org delete();
self notify("flag_taken");
self delete();
}
}
wait(.01);
}
}

Soviet_hotzone(unfinished/not working):
Code Snippet
Plaintext
#include maps\_utility; 
#include common_scripts\utility;
#include maps\_soviet\soviet_dev;

init()
{
flag_wait( "all_players_connected" );

level.hotzones = getentarray("hotzone", "targetname");
if(!isdefined(level.hotzones))
{
dev_assert("No hotzones!", "Soviet_hotzone", 12, "hotzone");
return;
}
else if(!isdefined(level.shader["obj_capture"]) || !isdefined(level.shader["obj_capture"]))
{
dev_assert("A hotzone shader is not defined!", "Soviet_hotzone", 17, "hotzone");
return;
}
else if(!isdefined(level.cost["hotzone"]["hotzone_count"]))
{
dev_assert("Hotzone count cost not defined!", "Soviet_hotzone", 22, "hotzone");
}

thread hotzone_init();
}
hotzone_init()
{
level.hotzone_spawn = true;
while(1)
{
if(level.hotzone_spawn)
{
dev_add_playback("hotzone", "initializing new hotzone");
dynamic_change_hotzone();
level.c_hotzone hotzone_think();
level.hotzone_spawn = false;
}
wait(1);
}
}
dynamic_change_hotzone()
{
a_hotzone = randomint(level.hotzones.size);
level.c_hotzone = level.hotzones[a_hotzone];
}
hotzone_think()
{
self endon("count_done");
if(!isdefined(self.radius) || !isdefined(self.height))
{
self.radius = 256;
self.height = 128;
}
count = 0;
hud = newHudElem();
hud.hideWhenInMenu = true;
hud SetTargetEnt(self);
hud setshader(level.shader["obj_capture"]);
hud SetWayPoint( true, level.shader["obj_capture"]);
while(1)
{
players = get_players();
for(i=0;i<players.size;i++)
{
if(players[i] istouching(self))
{
count++;
hud setshader(level.shader["obj_defend"]);
hud SetTargetEnt(self);
if(count == level.cost["hotzone"]["hotzone_count"])
{
hud destroy();
players[i].score++;
level.hotzone_spawn = true;
self notify("count_done");
}
}
else
{
hud setshader(level.shader["obj_capture"]);
hud SetTargetEnt(self);
}

}
wait(1);
}
}

Soviet_perks:

Code Snippet
Plaintext
#include maps\_utility; 
#include common_scripts\utility;
#include maps\_soviet\soviet_utility;
#include maps\_soviet\soviet_dev;


init()
{
if(!isDefined(level.perks))
level.perks = [];

level.perks["trigger_use_array"] = getEntArray("perk_trig","targetname");


if(!isdefined(level.perks["trigger_use_array"]))
return;

array_thread(level.perks["trigger_use_array"], ::perk_init );
array_thread(level.perks["trigger_use_array"], ::effects_init );
}
perk_init()
{
if(!isdefined(self.script_noteworthy))
assertmsg("No script_noteworthy for perk trigger at " + self.origin);

self.cost = level.cost[level.soviet["gamemode"]][self.script_noteworthy];

if(!isdefined(self.cost))
assertmsg("Undefined cost for perk: " + self.script_noteworthy + " at origin: " + self.origin);

string = level.string[level.soviet["gamemode"]][self.script_noteworthy];

if(!isdefined(string))
assertmsg("Undefined string for perk: " + self.script_noteworthy + " at origin: " + self.origin);

self sethintstring(string);
self SetCursorHint( "HINT_NOICON" );

while(1)
{
who = undefined;
self waittill("trigger", who);

if(who.score >= self.cost && !who hasperk(self.script_noteworthy) && isPlayer(who) && who usebuttonpressed())
who give_perk(self.script_noteworthy);
wait(.001);
}
}
give_perk(perk)
{
self setperk(perk);
if(perk == "specialty_fastreload")
self SetClientDvar("perk_weapReloadMultiplier", .75);
else if(perk == "specialty_rof")
self SetClientDvar("perk_weapratemultiplier", .94);
self perk_hud_create(perk);
self perk_think(perk);
}
perk_hud_create( perk )
{
if ( !IsDefined( self.perk_hud ) )
self.perk_hud = [];

shader = level.shader[perk];

hud = create_simple_hud( self );
hud.foreground = true;
hud.sort = 1;
hud.hidewheninmenu = false;
hud.alignX = "left";
hud.alignY = "bottom";
hud.horzAlign = "left";
hud.vertAlign = "bottom";
hud.x = self.perk_hud.size * 30;
hud.y = hud.y - 70;
hud.alpha = 1;
hud SetShader( shader, 24, 24 );

self.perk_hud[ perk ] = hud;
}
perk_think( perk )
{
self waittill_any( "fake_death", "death", "player_downed" );

self UnsetPerk( perk );
self.maxhealth = 100;
self perk_hud_destroy( perk );
}
perk_hud_destroy( perk )
{
self.perk_hud[ perk ] destroy_hud();
self.perk_hud[ perk ] = undefined;
}
destroy_hud()
{
self Destroy();
}
effects_init()
{
if(!isdefined(self.target) || !isdefined(level._effect[self.script_noteworthy]))
return;

origin = getent(self.target, "targetname");
playfx(level._effect[self.script_noteworthy], origin.origin);
origin playloopsound("perks_machine_loop");
}

Soviet_utility:

Code Snippet
Plaintext
#include maps\_utility; 
#include common_scripts\utility;
#include maps\_soviet\soviet_dev;

//delays the script by looping until the time var hits zero
script_wait_message(seconds, string1, string2, string3)
{
level endon("wait_done");
iprintln(string1);

time = seconds;
while(1)
{
iprintln(string2 + time + " seconds!");
wait(1);
time--;;
if(time == 0)
{
if(isdefined(string3))
iprintln(string3);
level notify("wait_done");

}
}
}
// creates simple HUD element
create_simple_hud( client )
{
if( IsDefined( client ) )
{
hud = NewClientHudElem( client );
}
else
{
hud = NewHudElem();
}

hud.foreground = true;
hud.sort = 1;
hud.hidewheninmenu = true;

return hud;
}
// prints the vars array keys to the console
print_array_keys(var)
{
if(!isDefined(var))
assertMsg("Var is undefined ");

if(!isarray(var))
assertmsg("Var is not an array");

keys = GetArrayKeys( var );

if(!isdefined(keys))
return "no_key";

for(i=0;i<keys.size;i++)
iprintln(keys[i]);
}
object_float(height, time)
{
if(!isDefined(self) || !isDefined(height) || !isDefined(time))
return undefined;

self moveTo(self groundPos(self.origin) + (0,0,height), time);
}
do_threaded_tasks(tasks)
{
if(!isDefined(tasks))
assertMsg("Tasks not defined!");
if(!isArray(tasks))
assertMsg("Tasks is not an array!");

for(i=0;i<tasks.size;i++)
thread [[tasks[i]]]();


dev_add_playback("soviet", "Threaded tasks have all been initalized");
}
// Searches through an array for something and returns either the index or a boolean
// Args:
// Array = the array you want to search
// item = the thing your trying to find in the array. MUST be the same data type as whats stored in the array
// type = what to return if true. Currently just allows to return the index spot(i) or a boolean.
//
search_array(array, item, type)
{
for(i=0;i<array.size;i++)
{
if(array[i] == item)
{
if(isDefined(type) && type == "index")
return i;
else
return true;
}
}
return false;
}
// Name: spawn_trig_on_notify
// Purpose: To spawn a trigger_radius at the given origin with the given radius, height, and flags
//
// Arguments(name(dataType), description:
// notifyStr(String): The string to wait for before spawning the trig
// Origin(origin): The origin of the trig you want to spawn
// radius(int): radius of the trigger
// height(int): height of the trigger
// spawnflags(int): the spawnflags that you want the trigger to spawn with
//
// Example code:
// trig = spawn_trig_on_notify("ee_blocker_open", self.origin, 24, 24, 0);
//
spawn_trig_on_notify(notifyStr, origin, radius, height, spawnflags)
{
level waittill(notifyStr);

trig = spawn("trigger_radius", origin, spawnflags, radius, height);
trig SetCursorHint("HINT_NOICON");

for(i=0;i<get_players().size;i++)
trig setVisibleToPlayer(get_players()[i]);

return trig;
}
get_basic_entity_info()
{
if(!isDefined(self))
return undefined;

info = [];

if(isDefined(self.targetname))
info["targetname"] = self.targetname;

if(isDefined(self.script_noteworthy))
info["script_noteworthy"] = self.script_noteworthy;

if(isDefined(self.script_string))
info["script_string"] = self.script_string;

if(isDefined(self.script_sound))
info["script_sound"] = self.script_sound;

if(isDefined(self.script_activated))
info["script_activated"] = self.script_activated;

if(isDefined(self.target))
info["target"] = self.target;

return info;
}
set_basic_entity_info(infoArray)
{

if(!isDefined(self) || !isDefined(infoArray))
return;

if(isDefined(infoArray["targetname"]))
self.targetname = infoArray["targetname"];

if(isDefined(infoArray["script_noteworthy"]))
self.script_noteworthy = infoArray["script_noteworthy"];

if(isDefined(infoArray["script_string"]))
self.script_string = infoArray["script_string"];

if(isDefined(infoArray["script_sound"]))
self.script_sound = infoArray["script_sound"];

if(isDefined(self.script_activated))
self.script_activated = infoArray["script_activated"];

if(isDefined(infoArray["target"]))
self.target = infoArray["target"];

}
// returns all the spawners with the same script_noteworthy
get_spawner_array_group(script_noteworthy)
{
return getentarray(script_noteworthy, "script_noteworthy");
}
/*
MATH SECTION
*/
get_percent_increase(change, original)
{
return (change * 100) / original;
}
get_increase_amount(percent, original)
{
return (percent * original) / 100;
}
get_original_amount(percent, increase)
{
return (increase * 100) / percent;
}
roundOff(int, mod, mid)
{
if(!isDefined(int) || !isDefined(mod) || !isDefined(mid))
return undefined;

while(int % mod != 0)
{
if(int % mod >= mid)
int++;
else
int--;
}
return int;
}


Soviet_weapons:

Code Snippet
Plaintext
#include maps\_utility; 
#include common_scripts\utility;
#include maps\_soviet\soviet_utility;
#include maps\_soviet\soviet_dev;

init()
{
if(!isdefined(level.weapon))
level.weapon = [];

level.weapon["weapons"] = getentarray("weapon","targetname");
if(!isdefined(level.weapon["weapons"]))
assertMsg("No Weapons!");
array_thread(level.weapon["weapons"], ::init_guns);

}
init_guns()
{
if(!isdefined(self.script_noteworthy))
assertMsg("No script noteworthy for weapon at " + self.origin);


self.cost = level.cost[level.soviet["gamemode"]][self.script_noteworthy];

if(!isdefined(self.cost))
assertMsg("Cost not defined for weapon: " + self.script_noteworthy);

trig = spawn("trigger_radius",self.origin,0,20,20);
trig SetCursorHint("HINT_NOICON");

for(i=0;i<get_players().size;i++)
trig setVisibleToPlayer(get_players()[i]);

script_noteworthy_old = self.script_noteworthy;

if(strTok(self.script_noteworthy, "_").size > 1)
self.script_noteworthy = strTok(self.script_noteworthy, "_")[0] + " " + strTok(self.script_noteworthy, "_")[1];

trig sethintstring("Press F for weapon " + self.script_noteworthy + "[" + self.cost + level.ctype + " required for weapon, " + (self.cost + 30) + " for ammo]");


while(1)
{
trig waittill("trigger", player);
if(player istouching(trig) && !player hasweapon(script_noteworthy_old) && player usebuttonpressed())
{
if(player.score >= self.cost)
{
player takeweapon(player getcurrentweapon());
player giveweapon(script_noteworthy_old);
player switchtoweapon(script_noteworthy_old);
}
}
else if(player istouching(trig) && player hasweapon(script_noteworthy_old) && player getCurrentWeapon() == script_noteworthy_old && player usebuttonpressed())
{
if(player.score >= self.cost + 30)
player giveMaxAmmo(player getCurrentWeapon());
}


}
}
init_weapon_affects()
{
if(!isDefined(level.soviet["allow_weapon_rotation"]) || isDefined(level.soviet["allow_weapon_rotation"]) && level.soviet["allow_weapon_rotation"] == false)
return;


if(!isDefined(getentarray("weapon","targetname")))
assertMsg("No Weapons in the map to rotate!");


array_thread(getEntArray("weapon", "targetname"), ::affects_think);
}
affects_think()
{
if(!isDefined(level.fx["pickupAvailableEffect"]))
assertMsg("No pickup effect defined!");

if(isDefined(level.soviet["fixedWeaponHeight"]) && level.soviet["fixedWeaponHeight"])
self object_float(45, .001);

playFx(level.fx["pickupAvailableEffect"], self groundPos(self.origin));
while(1)
{
self rotateYaw(-180, 2);
wait(2);

}
}
ammoRegen(weapon, type)
{


while(1)
{

}
}


 
Loading ...