mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-21 23:47:52 -05:00
1319 lines
27 KiB
Plaintext
1319 lines
27 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: common_scripts\_painter.gsc
|
|
* Game: Call of Duty: Modern Warfare 3
|
|
* Platform: PC
|
|
* Function Count: 53
|
|
* Decompile Time: 911 ms
|
|
* Timestamp: 10/27/2023 2:22:22 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
main(param_00)
|
|
{
|
|
var_01 = getentarray("painter_setup","targetname");
|
|
if(!var_01.size)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!getdvarint("painter"))
|
|
{
|
|
common_scripts\utility::array_thread(var_01,::painter_clean_me);
|
|
return;
|
|
}
|
|
|
|
painter_initvars(param_00);
|
|
var_02 = [];
|
|
var_03 = get_painter_groups(var_01);
|
|
foreach(var_05 in var_03)
|
|
{
|
|
setup_painter_group(var_05);
|
|
}
|
|
|
|
thread painter_init();
|
|
common_scripts\utility::array_thread(level.var_1BB1,::default_undefined);
|
|
level.stop_load = 1;
|
|
level waittill("forever");
|
|
}
|
|
|
|
//Function Number: 2
|
|
painter_clean_me()
|
|
{
|
|
if(isdefined(self.target))
|
|
{
|
|
var_00 = getent(self.target,"targetname");
|
|
var_00 delete();
|
|
}
|
|
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 3
|
|
default_undefined()
|
|
{
|
|
if(!isdefined(self.var_1BB5))
|
|
{
|
|
self.var_1BB5 = 0;
|
|
}
|
|
|
|
if(!isdefined(self.var_1BB6))
|
|
{
|
|
self.var_1BB6 = 0;
|
|
}
|
|
|
|
if(!isdefined(self.var_1BB7))
|
|
{
|
|
self.var_1BB7 = 0;
|
|
}
|
|
|
|
if(!isdefined(self.var_1BB8))
|
|
{
|
|
self.var_1BB8 = 0;
|
|
}
|
|
|
|
if(!isdefined(self.var_1BB9))
|
|
{
|
|
self.var_1BB9 = 32;
|
|
}
|
|
|
|
if(!isdefined(self.radius))
|
|
{
|
|
self.radius = 84;
|
|
}
|
|
|
|
if(!isdefined(self.maxdist))
|
|
{
|
|
self.maxdist = 1000;
|
|
}
|
|
|
|
if(!isdefined(self.var_1BBB))
|
|
{
|
|
self.var_1BBB = [];
|
|
}
|
|
}
|
|
|
|
//Function Number: 4
|
|
setup_painter_group(param_00)
|
|
{
|
|
var_01 = 100000001;
|
|
var_02 = param_00;
|
|
var_03 = undefined;
|
|
var_04 = undefined;
|
|
var_05 = undefined;
|
|
var_06 = undefined;
|
|
var_07 = undefined;
|
|
var_08 = undefined;
|
|
var_09 = undefined;
|
|
var_0A = undefined;
|
|
foreach(var_0C in param_00)
|
|
{
|
|
var_0A = get_angle_offset(var_0C);
|
|
var_07 = get_height_offset(var_0C);
|
|
var_0D = isdefined(var_0C.script_parameters) && var_0C.script_parameters == "use_prefab_model";
|
|
if(isdefined(var_0C.radius))
|
|
{
|
|
var_05 = var_0C.radius;
|
|
}
|
|
|
|
if(isdefined(var_0C.var_1BBD) && var_0C.var_1BBD)
|
|
{
|
|
var_03 = 1;
|
|
}
|
|
|
|
if(isdefined(var_0C.var_1BBE) && var_0C.var_1BBE)
|
|
{
|
|
var_06 = var_0C.var_1BBE;
|
|
}
|
|
|
|
if(isdefined(var_0C.var_1BBF) && var_0C.var_1BBF)
|
|
{
|
|
var_04 = 1;
|
|
}
|
|
|
|
foreach(var_0F in var_02)
|
|
{
|
|
if(var_0C == var_0F)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_10 = distance(var_0C.origin,var_0F.origin);
|
|
if(var_10 < var_01)
|
|
{
|
|
var_01 = var_10;
|
|
}
|
|
}
|
|
|
|
if(var_01 == 100000001)
|
|
{
|
|
var_01 = undefined;
|
|
}
|
|
|
|
add_spammodel(var_0C.var_1BC0,var_0C.model,var_03,var_04,var_01,var_05,var_06,var_07,var_08,var_09,var_0A,var_0D);
|
|
}
|
|
}
|
|
|
|
//Function Number: 5
|
|
get_angle_offset(param_00)
|
|
{
|
|
if(!isdefined(param_00.target))
|
|
{
|
|
return undefined;
|
|
}
|
|
|
|
var_01 = getent(param_00.target,"targetname");
|
|
return var_01.angles - param_00.angles;
|
|
}
|
|
|
|
//Function Number: 6
|
|
get_height_offset(param_00)
|
|
{
|
|
if(!isdefined(param_00.target))
|
|
{
|
|
return undefined;
|
|
}
|
|
|
|
var_01 = getent(param_00.target,"targetname");
|
|
var_02 = var_01.origin[2] - param_00.origin[2];
|
|
var_01 delete();
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 7
|
|
get_painter_groups(param_00)
|
|
{
|
|
var_01 = [];
|
|
var_02 = "";
|
|
foreach(var_04 in param_00)
|
|
{
|
|
if(!isdefined(var_04.var_1BC0))
|
|
{
|
|
var_04.var_1BC0 = var_04.model;
|
|
}
|
|
|
|
var_02 = var_04.var_1BC0;
|
|
level.var_1B4F = var_02;
|
|
if(!isdefined(var_01[var_02]) || !var_01[var_02].size)
|
|
{
|
|
var_01[var_02] = [];
|
|
}
|
|
|
|
var_01[var_02][var_01[var_02].size] = var_04;
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 8
|
|
painter_initvars(param_00)
|
|
{
|
|
level._clearalltextafterhudelem = 0;
|
|
level.var_1BB5 = 0;
|
|
level.var_1BB6 = 0;
|
|
level.var_1BC5 = 16;
|
|
level.var_1BC6 = 0;
|
|
level.var_1BB1 = [];
|
|
level.var_1BC7 = [];
|
|
level.var_1BC8 = 0.1;
|
|
level.var_1BC9 = 31;
|
|
level.var_1BCA = 1000;
|
|
level.var_1BCB = [];
|
|
level.var_1BCC = 0;
|
|
level.var_1BCD = 0;
|
|
level.var_1BCE = 0;
|
|
level.var_1BCF = 0;
|
|
level.var_1BD0 = 0;
|
|
level.var_1BD1 = ::add_spammodel;
|
|
level.timelimitoverride = 1;
|
|
thread hack_start(param_00);
|
|
thread hud_init();
|
|
}
|
|
|
|
//Function Number: 9
|
|
hack_start(param_00)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = "painter";
|
|
}
|
|
|
|
precachemenu(param_00);
|
|
common_scripts\utility::flag_init("user_alive");
|
|
while(!isdefined(get_player()))
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
level.var_1BD3 = get_player();
|
|
wait 0.05;
|
|
var_01 = "team_marinesopfor";
|
|
var_02 = "autoassign";
|
|
level.var_1BD3 notify("menuresponse",var_01,var_02);
|
|
wait 0.05;
|
|
var_01 = "changeclass_offline";
|
|
var_02 = "offline_class1_mp, 0";
|
|
level.var_1BD3 notify("menuresponse",var_01,var_02);
|
|
level.var_1BD3 openpopupmenu(param_00);
|
|
wait 0.05;
|
|
level.var_1BD3 closepopupmenu();
|
|
common_scripts\utility::flag_set("user_alive");
|
|
}
|
|
|
|
//Function Number: 10
|
|
painter_init()
|
|
{
|
|
common_scripts\utility::array_call(getentarray("script_model","classname"),::delete);
|
|
setcurrentgroup(level.var_1B4F);
|
|
level.var_1B4F = undefined;
|
|
playerinit();
|
|
}
|
|
|
|
//Function Number: 11
|
|
hud_update_placed_model_count()
|
|
{
|
|
level.hud_controler["helppm"].description setvalue(level.var_1BC7.size);
|
|
var_00 = 256;
|
|
if(level.var_1BC7.size < var_00)
|
|
{
|
|
level.hud_controler["helppm"].description.color = (1,1,1);
|
|
return;
|
|
}
|
|
|
|
var_01 = 1;
|
|
var_02 = 1 - level.var_1BC7.size - var_00 / var_00;
|
|
var_03 = var_02;
|
|
level.hud_controler["helppm"].description.color = (var_01,var_02,var_03);
|
|
}
|
|
|
|
//Function Number: 12
|
|
hud_init()
|
|
{
|
|
common_scripts\utility::flag_init("user_hud_active");
|
|
common_scripts\utility::flag_wait("user_alive");
|
|
var_00 = 7;
|
|
if(is_mp())
|
|
{
|
|
var_00 = 7;
|
|
}
|
|
|
|
var_01 = [];
|
|
var_02 = 15;
|
|
var_03 = int(var_00 / 2);
|
|
var_04 = 240 + var_03 * var_02;
|
|
var_05 = 0.5 / var_03;
|
|
var_06 = var_05;
|
|
for(var_07 = 0;var_07 < var_00;var_07++)
|
|
{
|
|
var_01[var_07] = _newhudelem();
|
|
var_01[var_07].location = 0;
|
|
var_01[var_07].alignx = "left";
|
|
var_01[var_07].aligny = "middle";
|
|
var_01[var_07].foreground = 1;
|
|
var_01[var_07].fontscale = 2;
|
|
var_01[var_07].sort = 20;
|
|
if(var_07 == var_03)
|
|
{
|
|
var_01[var_07].alpha = 1;
|
|
}
|
|
else
|
|
{
|
|
var_01[var_07].alpha = var_06;
|
|
}
|
|
|
|
var_01[var_07].x = 20;
|
|
var_01[var_07].y = var_04;
|
|
var_01[var_07] _settext(".");
|
|
if(var_07 == var_03)
|
|
{
|
|
var_05 = var_05 * -1;
|
|
}
|
|
|
|
var_06 = var_06 + var_05;
|
|
var_04 = var_04 - var_02;
|
|
}
|
|
|
|
level.spam_group_hudelems = var_01;
|
|
var_08 = _newhudelem();
|
|
var_08.location = 0;
|
|
var_08.alignx = "center";
|
|
var_08.aligny = "bottom";
|
|
var_08.foreground = 1;
|
|
var_08.fontscale = 2;
|
|
var_08.sort = 20;
|
|
var_08.alpha = 1;
|
|
var_08.x = 320;
|
|
var_08.y = 244;
|
|
var_08 _settext(".");
|
|
level.crosshair = var_08;
|
|
var_08 = _newhudelem();
|
|
var_08.location = 0;
|
|
var_08.alignx = "center";
|
|
var_08.aligny = "bottom";
|
|
var_08.foreground = 1;
|
|
var_08.fontscale = 2;
|
|
var_08.sort = 20;
|
|
var_08.alpha = 0;
|
|
var_08.x = 320;
|
|
var_08.y = 244;
|
|
var_08 setvalue(0);
|
|
level.crosshair_value = var_08;
|
|
controler_hud_add("helppm",1,"^5Placed Models: ",undefined,level.var_1BC7.size);
|
|
controler_hud_add("helpdensity",2,"^5Spacing: ",undefined,level.var_1BC5);
|
|
controler_hud_add("helpradius",3,"^5Radius: ",undefined,level.var_1BC9);
|
|
controler_hud_add("helpxy",6,"^4X / ^3Y: ",undefined,level.var_1BC9);
|
|
controler_hud_add("helpab",7,"^2A / ^1B^7: "," - ");
|
|
controler_hud_add("helplsrs",8,"^8L^7 / R Stick: "," - ");
|
|
controler_hud_add("helplbrb",9,"^8L^7 / R Shoulder: "," - ");
|
|
controler_hud_add("helpdpu",10,"^8DPad U / ^7D: "," - ");
|
|
controler_hud_add("helpdpl",11,"^8DPad L / ^7R: "," - ");
|
|
controler_hud_add("helpF",17,"^8F: ^7( dump ) ^3map_source/" + level.script + "_modeldump.map","");
|
|
hint_buttons_main();
|
|
common_scripts\utility::flag_set("user_hud_active");
|
|
}
|
|
|
|
//Function Number: 13
|
|
hint_buttons_main()
|
|
{
|
|
controler_hud_update_text("helpxy","^4Select Set Up ^7 / ^3Down");
|
|
controler_hud_update_text("helpab","^2Spacing Down ^7 / ^1up ");
|
|
controler_hud_update_text("helplsrs","^8Radius Down ^7 / Up");
|
|
controler_hud_update_text("helplbrb","^8Remove ^7 / Place");
|
|
controler_hud_update_text("helpdpl","^8zOffset Clear ^7 / Set");
|
|
controler_hud_update_text("helpdpu","^8Rotation Clear ^7 / Set");
|
|
}
|
|
|
|
//Function Number: 14
|
|
hint_buttons_zoffset()
|
|
{
|
|
controler_hud_update_text("helpxy","^4 - ^7 / ^3 - ");
|
|
controler_hud_update_text("helpab","^2Height Down ^7 / ^1Up ");
|
|
controler_hud_update_text("helplsrs","^8 - ^7 / - ");
|
|
controler_hud_update_text("helplbrb","^8 - ^7 / - ");
|
|
controler_hud_update_text("helpdpl","^8 - ^7 / Set");
|
|
controler_hud_update_text("helpdpu","^8 - ^7 / - ");
|
|
controler_hud_update_text("helpF"," - ");
|
|
}
|
|
|
|
//Function Number: 15
|
|
hint_buttons_rotation()
|
|
{
|
|
controler_hud_update_text("helpxy","^4 - ^7 / ^3 - ");
|
|
controler_hud_update_text("helpab","^2RotateOther Up ^7 / ^1Down ");
|
|
controler_hud_update_text("helplsrs","^8 - ^7 / - ");
|
|
controler_hud_update_text("helplbrb","^8 - ^7 / - ");
|
|
controler_hud_update_text("helpdpl","^8 - ^7 / - ");
|
|
controler_hud_update_text("helpdpu","^8Set ^7 / - ");
|
|
controler_hud_update_text("helpF"," - ");
|
|
}
|
|
|
|
//Function Number: 16
|
|
setcurrentgroup(param_00)
|
|
{
|
|
common_scripts\utility::flag_wait("user_hud_active");
|
|
level.spam_model_current_group = param_00;
|
|
var_01 = getarraykeys(level.var_1BB1);
|
|
var_02 = 0;
|
|
var_03 = int(level.spam_group_hudelems.size / 2);
|
|
for(var_04 = 0;var_04 < var_01.size;var_04++)
|
|
{
|
|
if(var_01[var_04] == param_00)
|
|
{
|
|
var_02 = var_04;
|
|
break;
|
|
}
|
|
}
|
|
|
|
level.spam_group_hudelems[var_03] _settext(var_01[var_02]);
|
|
for(var_04 = 1;var_04 < level.spam_group_hudelems.size - var_03;var_04++)
|
|
{
|
|
if(var_02 - var_04 < 0)
|
|
{
|
|
level.spam_group_hudelems[var_03 + var_04] _settext(".");
|
|
continue;
|
|
}
|
|
|
|
level.spam_group_hudelems[var_03 + var_04] _settext(var_01[var_02 - var_04]);
|
|
}
|
|
|
|
for(var_04 = 1;var_04 < level.spam_group_hudelems.size - var_03;var_04++)
|
|
{
|
|
if(var_02 + var_04 > var_01.size - 1)
|
|
{
|
|
level.spam_group_hudelems[var_03 - var_04] _settext(".");
|
|
continue;
|
|
}
|
|
|
|
level.spam_group_hudelems[var_03 - var_04] _settext(var_01[var_02 + var_04]);
|
|
}
|
|
|
|
param_00 = getcurrent_groupstruct();
|
|
level.var_1BB6 = param_00.var_1BB6;
|
|
level.var_1BB5 = param_00.var_1BB5;
|
|
level.var_1BCA = param_00.maxdist;
|
|
level.var_1BC9 = param_00.radius;
|
|
level.hud_controler["helpradius"].description setvalue(level.var_1BC9);
|
|
level.var_1BC5 = param_00.var_1BB9;
|
|
level.hud_controler["helpdensity"].description setvalue(level.var_1BC5);
|
|
}
|
|
|
|
//Function Number: 17
|
|
setgroup_up()
|
|
{
|
|
var_00 = undefined;
|
|
var_01 = getarraykeys(level.var_1BB1);
|
|
for(var_02 = 0;var_02 < var_01.size;var_02++)
|
|
{
|
|
if(var_01[var_02] == level.spam_model_current_group)
|
|
{
|
|
var_00 = var_02 + 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(var_00 == var_01.size)
|
|
{
|
|
return;
|
|
}
|
|
|
|
setcurrentgroup(var_01[var_00]);
|
|
while(level.var_1BD3 buttonpressed("BUTTON_Y"))
|
|
{
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 18
|
|
setgroup_down()
|
|
{
|
|
var_00 = undefined;
|
|
var_01 = getarraykeys(level.var_1BB1);
|
|
for(var_02 = 0;var_02 < var_01.size;var_02++)
|
|
{
|
|
if(var_01[var_02] == level.spam_model_current_group)
|
|
{
|
|
var_00 = var_02 - 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(var_00 < 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
setcurrentgroup(var_01[var_00]);
|
|
while(level.var_1BD3 buttonpressed("BUTTON_X"))
|
|
{
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 19
|
|
add_spammodel(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
|
|
{
|
|
if(!isdefined(level.var_1BB1[param_00]))
|
|
{
|
|
var_0C = spawnstruct();
|
|
level.var_1BB1[param_00] = var_0C;
|
|
level.var_1BB1[param_00].var_1BD8 = [];
|
|
}
|
|
|
|
if(!isdefined(param_0A))
|
|
{
|
|
param_0A = (0,0,0);
|
|
}
|
|
|
|
level.var_1BB1[param_00].var_1BB8 = param_03;
|
|
level.var_1BB1[param_00].var_1BB7 = param_02;
|
|
level.var_1BB1[param_00].var_1BB9 = param_04;
|
|
level.var_1BB1[param_00].radius = param_05;
|
|
level.var_1BB1[param_00].maxdist = param_06;
|
|
level.var_1BB1[param_00].var_1BB5 = param_08;
|
|
level.var_1BB1[param_00].var_1BB6 = param_09;
|
|
if(!isdefined(level.var_1BB1[param_00].var_1BBB))
|
|
{
|
|
level.var_1BB1[param_00].var_1BBB = [];
|
|
}
|
|
|
|
level.var_1BB1[param_00].var_1BBB[param_01] = param_0A;
|
|
if(!isdefined(level.var_1BB1[param_00].var_1BD9))
|
|
{
|
|
level.var_1BB1[param_00].var_1BD9 = [];
|
|
}
|
|
|
|
level.var_1BB1[param_00].var_1BD9[param_01] = param_07;
|
|
if(!isdefined(level.var_1BB1[param_00].var_1BDA))
|
|
{
|
|
level.var_1BB1[param_00].var_1BDA = [];
|
|
}
|
|
|
|
level.var_1BB1[param_00].var_1BDA[param_01] = param_0B;
|
|
level.var_1BB1[param_00].var_1BD8[level.var_1BB1[param_00].var_1BD8.size] = param_01;
|
|
}
|
|
|
|
//Function Number: 20
|
|
playerinit()
|
|
{
|
|
level.var_1BDB = 700;
|
|
level.var_1BD3 takeallweapons();
|
|
common_scripts\utility::flag_wait("user_hud_active");
|
|
for(;;)
|
|
{
|
|
var_00 = player_view_trace();
|
|
draw_placement_circle(var_00);
|
|
if(level.var_1BD3 buttonpressed("f"))
|
|
{
|
|
dump_models();
|
|
}
|
|
|
|
if(level.var_1BD3 buttonpressed("DPAD_UP"))
|
|
{
|
|
customrotation_mode(var_00,"DPAD_UP");
|
|
}
|
|
else if(level.var_1BD3 buttonpressed("DPAD_DOWN"))
|
|
{
|
|
customrotation_mode_off();
|
|
}
|
|
else if(level.var_1BD3 buttonpressed("DPAD_RIGHT"))
|
|
{
|
|
customheight_mode(var_00,"DPAD_RIGHT");
|
|
}
|
|
else if(level.var_1BD3 buttonpressed("DPAD_LEFT"))
|
|
{
|
|
customheight_mode_off();
|
|
}
|
|
else if(level.var_1BD3 buttonpressed("BUTTON_X"))
|
|
{
|
|
setgroup_down();
|
|
}
|
|
else if(level.var_1BD3 buttonpressed("BUTTON_Y"))
|
|
{
|
|
setgroup_up();
|
|
}
|
|
else if(level.var_1BD3 buttonpressed("BUTTON_LSTICK"))
|
|
{
|
|
spam_model_circlescale(var_00,-1);
|
|
}
|
|
else if(level.var_1BD3 buttonpressed("BUTTON_RSTICK"))
|
|
{
|
|
spam_model_circlescale(var_00,1);
|
|
}
|
|
else if(level.var_1BD3 buttonpressed("BUTTON_A"))
|
|
{
|
|
spam_model_densityscale(var_00,-1);
|
|
}
|
|
else if(level.var_1BD3 buttonpressed("BUTTON_B"))
|
|
{
|
|
spam_model_densityscale(var_00,1);
|
|
}
|
|
else
|
|
{
|
|
if(level.var_1BD3 buttonpressed("BUTTON_LSHLDR"))
|
|
{
|
|
spam_model_erase(var_00);
|
|
}
|
|
|
|
if(level.var_1BD3 buttonpressed("BUTTON_RSHLDR"))
|
|
{
|
|
thread spam_model_place(var_00);
|
|
}
|
|
}
|
|
|
|
level notify("clear_previews");
|
|
wait 0.05;
|
|
hud_update_placed_model_count();
|
|
}
|
|
}
|
|
|
|
//Function Number: 21
|
|
customheight_mode_off()
|
|
{
|
|
level.var_1BCD = 0;
|
|
hint_buttons_main();
|
|
}
|
|
|
|
//Function Number: 22
|
|
customheight_mode(param_00,param_01)
|
|
{
|
|
if(param_00["fraction"] == 1)
|
|
{
|
|
return;
|
|
}
|
|
|
|
while(level.var_1BD3 buttonpressed(param_01))
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
level.var_1BCD = 1;
|
|
hint_buttons_zoffset();
|
|
var_02 = [];
|
|
var_02 = spam_models_atcircle(param_00,0,1);
|
|
var_03 = 2;
|
|
var_04 = 1;
|
|
var_05 = param_00["position"];
|
|
while(!level.var_1BD3 buttonpressed(param_01))
|
|
{
|
|
var_06 = level.var_1BCE;
|
|
if(level.var_1BD3 buttonpressed("BUTTON_A"))
|
|
{
|
|
var_04 = -1;
|
|
}
|
|
else if(level.var_1BD3 buttonpressed("BUTTON_B"))
|
|
{
|
|
var_04 = 1;
|
|
}
|
|
else
|
|
{
|
|
var_04 = 0;
|
|
}
|
|
|
|
var_06 = var_06 + var_04 * var_03;
|
|
if(var_06 == 0)
|
|
{
|
|
var_06 = var_06 + var_04 * var_03;
|
|
}
|
|
|
|
level.var_1BCE = var_06;
|
|
common_scripts\utility::array_thread(var_02,::customheight_mode_offsetmodels,param_00);
|
|
draw_placement_circle(param_00,(1,1,1));
|
|
wait 0.05;
|
|
}
|
|
|
|
common_scripts\utility::array_thread(var_02,::deleteme);
|
|
hint_buttons_main();
|
|
while(level.var_1BD3 buttonpressed(param_01))
|
|
{
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 23
|
|
customheight_mode_offsetmodels(param_00)
|
|
{
|
|
self.origin = self.var_1BDF + param_00["normal"] * level.var_1BCE;
|
|
}
|
|
|
|
//Function Number: 24
|
|
customrotation_mode_off()
|
|
{
|
|
level.var_1BCC = 0;
|
|
hint_buttons_main();
|
|
}
|
|
|
|
//Function Number: 25
|
|
customrotation_mode(param_00,param_01)
|
|
{
|
|
if(param_00["fraction"] == 1)
|
|
{
|
|
return;
|
|
}
|
|
|
|
while(level.var_1BD3 buttonpressed(param_01))
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
hint_buttons_rotation();
|
|
level.var_1BCC = 1;
|
|
level.var_1BE2 = level.var_1BD3 getplayerangles();
|
|
var_02 = [];
|
|
var_02 = spam_models_atcircle(param_00,1,1);
|
|
var_03 = 0;
|
|
var_04 = 1;
|
|
var_05 = 0;
|
|
while(!level.var_1BD3 buttonpressed(param_01))
|
|
{
|
|
var_05 = 0;
|
|
if(level.var_1BD3 buttonpressed("BUTTON_A"))
|
|
{
|
|
var_05 = -1;
|
|
}
|
|
else if(level.var_1BD3 buttonpressed("BUTTON_B"))
|
|
{
|
|
var_05 = 1;
|
|
}
|
|
|
|
var_03 = var_03 + var_05 * var_04;
|
|
if(var_03 > 360)
|
|
{
|
|
var_03 = 1;
|
|
}
|
|
|
|
if(var_03 < 0)
|
|
{
|
|
var_03 = 359;
|
|
}
|
|
|
|
draw_placement_circle(param_00,(0,0,1));
|
|
level.var_1BE2 = level.var_1BD3 getplayerangles();
|
|
level.var_1BE2 = level.var_1BE2 + (0,0,var_03);
|
|
for(var_06 = 0;var_06 < var_02.size;var_06++)
|
|
{
|
|
var_02[var_06].angles = level.var_1BE2;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
hint_buttons_main();
|
|
while(level.var_1BD3 buttonpressed(param_01))
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
for(var_06 = 0;var_06 < var_02.size;var_06++)
|
|
{
|
|
var_02[var_06] thread deleteme();
|
|
}
|
|
}
|
|
|
|
//Function Number: 26
|
|
deleteme()
|
|
{
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 27
|
|
spam_model_clearcondition()
|
|
{
|
|
self endon("death");
|
|
level waittill("clear_previews");
|
|
level.var_1BCB = common_scripts\utility::array_remove(level.var_1BCB,self);
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 28
|
|
crosshair_fadetopoint()
|
|
{
|
|
level notify("crosshair_fadetopoint");
|
|
level endon("crosshair_fadetopoint");
|
|
wait 2;
|
|
level.crosshair_value.alpha = 0;
|
|
level.crosshair.alpha = 1;
|
|
}
|
|
|
|
//Function Number: 29
|
|
spam_model_circlescale(param_00,param_01)
|
|
{
|
|
if(gettime() - level.var_1BCF > 60)
|
|
{
|
|
level.var_1BD0 = 0;
|
|
}
|
|
|
|
level.var_1BD0 = level.var_1BD0 + 0.05;
|
|
if(level.var_1BD0 < 0.5)
|
|
{
|
|
var_02 = 2;
|
|
}
|
|
else
|
|
{
|
|
var_02 = level.var_1BD0 / 0.3;
|
|
}
|
|
|
|
var_03 = level.var_1BC9;
|
|
var_03 = var_03 + param_01 * var_02;
|
|
if(var_03 > 0)
|
|
{
|
|
level.var_1BC9 = var_03;
|
|
}
|
|
|
|
level.hud_controler["helpradius"].description setvalue(level.var_1BC9);
|
|
level.var_1BCF = gettime();
|
|
}
|
|
|
|
//Function Number: 30
|
|
spam_model_densityscale(param_00,param_01)
|
|
{
|
|
var_02 = 2;
|
|
var_03 = level.var_1BC5;
|
|
var_03 = var_03 + param_01 * var_02;
|
|
if(var_03 > 0)
|
|
{
|
|
level.var_1BC5 = var_03;
|
|
}
|
|
|
|
level.crosshair_value.alpha = 1;
|
|
level.crosshair.alpha = 0;
|
|
level.crosshair_value setvalue(level.var_1BC5);
|
|
level.hud_controler["helpdensity"].description setvalue(level.var_1BC5);
|
|
thread crosshair_fadetopoint();
|
|
}
|
|
|
|
//Function Number: 31
|
|
draw_placement_circle(param_00,param_01)
|
|
{
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = (0,1,0);
|
|
}
|
|
|
|
if(param_00["fraction"] == 1)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_02 = vectortoangles(param_00["normal"]);
|
|
var_03 = param_00["position"];
|
|
var_04 = level.var_1BC9;
|
|
plot_circle(var_03,var_04,var_02,param_01,40,level.var_1BC9);
|
|
if(level.var_1BCC)
|
|
{
|
|
draw_axis(var_03,level.var_1BE2);
|
|
}
|
|
|
|
if(level.var_1BCD)
|
|
{
|
|
common_scripts\utility::draw_arrow(var_03,var_03 + param_00["normal"] * level.var_1BCE,(1,1,1));
|
|
}
|
|
}
|
|
|
|
//Function Number: 32
|
|
player_view_trace()
|
|
{
|
|
var_00 = level.var_1BCA;
|
|
var_01 = level.var_1BD3 geteye();
|
|
return bullettrace(var_01,var_01 + anglestoforward(level.var_1BD3 getplayerangles()) * var_00,0,self);
|
|
}
|
|
|
|
//Function Number: 33
|
|
orienttoplayeryrot()
|
|
{
|
|
self addyaw(level.var_1BD3 getplayerangles()[1] - common_scripts\utility::flat_angle(self.angles)[1]);
|
|
}
|
|
|
|
//Function Number: 34
|
|
getcurrent_groupstruct()
|
|
{
|
|
return level.var_1BB1[level.spam_model_current_group];
|
|
}
|
|
|
|
//Function Number: 35
|
|
orient_model()
|
|
{
|
|
var_00 = getcurrent_groupstruct();
|
|
if(level.var_1BCC)
|
|
{
|
|
self.angles = level.var_1BE2;
|
|
return;
|
|
}
|
|
|
|
if(level.var_1BB5)
|
|
{
|
|
self.angles = level.var_1BD3 getplayerangles();
|
|
}
|
|
|
|
if(level.var_1BB6)
|
|
{
|
|
orienttoplayeryrot();
|
|
}
|
|
|
|
if(var_00.var_1BB7)
|
|
{
|
|
self.angles = common_scripts\utility::flat_angle(self.angles);
|
|
}
|
|
|
|
if(!level.var_1BB6 && !level.var_1BB5)
|
|
{
|
|
self addyaw(randomint(360));
|
|
}
|
|
|
|
if(var_00.var_1BB8)
|
|
{
|
|
self.angles = common_scripts\utility::flat_angle(vectortoangles(self.origin - level.var_1BD3 geteye()));
|
|
self addyaw(90);
|
|
}
|
|
|
|
self addroll(var_00.var_1BBB[self.model][0]);
|
|
self addpitch(var_00.var_1BBB[self.model][1]);
|
|
self addyaw(var_00.var_1BBB[self.model][2]);
|
|
}
|
|
|
|
//Function Number: 36
|
|
spam_model_place(param_00)
|
|
{
|
|
if(level.var_1BC6)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(param_00["fraction"] == 1 && !level.var_1BB5)
|
|
{
|
|
return;
|
|
}
|
|
|
|
level.var_1BC6 = 1;
|
|
var_01 = spam_models_atcircle(param_00,1);
|
|
level.var_1BC7 = common_scripts\utility::array_combine(level.var_1BC7,var_01);
|
|
level.var_1BC6 = 0;
|
|
}
|
|
|
|
//Function Number: 37
|
|
getrandom_spammodel()
|
|
{
|
|
var_00 = level.var_1BB1[level.spam_model_current_group].var_1BD8;
|
|
return var_00[randomint(var_00.size)];
|
|
}
|
|
|
|
//Function Number: 38
|
|
spam_models_atcircle(param_00,param_01,param_02)
|
|
{
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 0;
|
|
}
|
|
|
|
var_03 = [];
|
|
var_04 = level.var_1BC5;
|
|
var_05 = level.var_1BC9;
|
|
var_06 = int(var_05 / var_04) * 2;
|
|
var_07 = 0;
|
|
var_08 = param_00["position"];
|
|
var_09 = vectortoangles(param_00["normal"]);
|
|
if(param_01)
|
|
{
|
|
var_09 = var_09 + (0,randomfloat(360),0);
|
|
}
|
|
|
|
var_0A = vectornormalize(anglestoright(var_09));
|
|
var_0B = vectornormalize(anglestoup(var_09));
|
|
var_0C = var_08;
|
|
var_0C = var_0C - var_0A * var_05;
|
|
var_0C = var_0C - var_0B * var_05;
|
|
var_0C = var_0C + var_0A * var_04;
|
|
var_0C = var_0C + var_0B * var_04;
|
|
var_0D = var_0C;
|
|
if(var_06 == 0 || level.var_1BB5)
|
|
{
|
|
if(!param_02)
|
|
{
|
|
if(is_too_dense(var_08))
|
|
{
|
|
return var_03;
|
|
}
|
|
}
|
|
|
|
if(!param_02)
|
|
{
|
|
if(level.var_1BC7.size + var_03.size > level.var_1BDB)
|
|
{
|
|
return var_03;
|
|
}
|
|
}
|
|
|
|
var_0E = getrandom_spammodel();
|
|
var_03[0] = spam_modelattrace(param_00,var_0E);
|
|
var_03[0] orient_model();
|
|
return var_03;
|
|
}
|
|
|
|
var_0F = [];
|
|
var_10 = var_08;
|
|
while(var_0F < var_06)
|
|
{
|
|
for(var_10 = var_07;var_10 < var_06;var_10++)
|
|
{
|
|
if(!param_02)
|
|
{
|
|
if(level.var_1BC7.size + var_03.size > level.var_1BDB)
|
|
{
|
|
return var_03;
|
|
}
|
|
}
|
|
|
|
var_0D = var_0C;
|
|
var_0D = var_0D + var_0A * var_0F * var_04;
|
|
var_0D = var_0D + var_0B * var_10 * var_04;
|
|
if(distance(var_0D,var_08) > var_05)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_0E = contour_point(var_0D,var_09,level.var_1BC9);
|
|
if(var_0E["fraction"] == 1)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(is_too_dense(var_0E["position"]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_11 = getrandom_spammodel();
|
|
var_12 = spam_modelattrace(var_0E,var_11);
|
|
var_12 orient_model();
|
|
var_03[var_03.size] = var_12;
|
|
}
|
|
|
|
var_0F++;
|
|
}
|
|
|
|
return var_03;
|
|
}
|
|
|
|
//Function Number: 39
|
|
is_too_dense(param_00)
|
|
{
|
|
for(var_01 = level.var_1BC7.size - 1;var_01 >= 0;var_01--)
|
|
{
|
|
if(distance(level.var_1BC7[var_01].var_1BDF,param_00) < level.var_1BC5 - 1)
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 40
|
|
get_player()
|
|
{
|
|
return getentarray("player","classname")[0];
|
|
}
|
|
|
|
//Function Number: 41
|
|
spam_modelattrace(param_00,param_01)
|
|
{
|
|
var_02 = spawn("script_model",level.var_1BD3.origin);
|
|
var_02 setmodel(param_01);
|
|
var_02 notsolid();
|
|
var_02.origin = param_00["position"];
|
|
var_02.angles = vectortoangles(param_00["normal"]);
|
|
var_02 addpitch(90);
|
|
var_02.var_1BDF = var_02.origin;
|
|
var_03 = getcurrent_groupstruct();
|
|
if(level.var_1BCD)
|
|
{
|
|
var_02.origin = var_02.origin + param_00["normal"] * level.var_1BCE;
|
|
}
|
|
|
|
var_03 = getcurrent_groupstruct();
|
|
if(isdefined(var_03.var_1BD9[param_01]))
|
|
{
|
|
var_02.origin = var_02.origin + param_00["normal"] * var_03.var_1BD9[param_01];
|
|
}
|
|
|
|
if(isdefined(var_03.var_1BDA[param_01]))
|
|
{
|
|
var_02.var_1BDA = var_03.var_1BDA[param_01];
|
|
}
|
|
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 42
|
|
contour_point(param_00,param_01,param_02)
|
|
{
|
|
var_03 = param_02;
|
|
var_04 = anglestoforward(param_01);
|
|
var_05 = param_00 + var_04 * var_03;
|
|
var_06 = param_00 + var_04 * -1 * var_03;
|
|
return bullettrace(var_05,var_06,0,level.var_1BD3);
|
|
}
|
|
|
|
//Function Number: 43
|
|
plot_circle(param_00,param_01,param_02,param_03,param_04,param_05)
|
|
{
|
|
if(!isdefined(param_03))
|
|
{
|
|
param_03 = (0,1,0);
|
|
}
|
|
|
|
if(!isdefined(param_04))
|
|
{
|
|
param_04 = 16;
|
|
}
|
|
|
|
var_06 = param_04 / 2;
|
|
var_07 = 360 / param_04;
|
|
param_04++;
|
|
var_08 = [];
|
|
var_09 = 0;
|
|
var_08 = [];
|
|
var_09 = 0;
|
|
for(var_0A = 0;var_0A < param_04;var_0A++)
|
|
{
|
|
var_0B = param_00 + anglestoup(param_02 + (0,0,var_09)) * param_01;
|
|
var_0C = contour_point(var_0B,param_02,level.var_1BC9);
|
|
if(var_0C["fraction"] != 1)
|
|
{
|
|
var_08[var_08.size] = var_0C["position"];
|
|
}
|
|
|
|
var_09 = var_09 + var_07;
|
|
}
|
|
|
|
common_scripts\utility::plot_points(var_08,param_03[0],param_03[1],param_03[2]);
|
|
var_08 = [];
|
|
}
|
|
|
|
//Function Number: 44
|
|
spam_model_erase(param_00)
|
|
{
|
|
var_01 = param_00["position"];
|
|
var_02 = [];
|
|
var_03 = [];
|
|
for(var_04 = 0;var_04 < level.var_1BC7.size;var_04++)
|
|
{
|
|
if(distance(level.var_1BC7[var_04].var_1BDF,var_01) > level.var_1BC9)
|
|
{
|
|
var_02[var_02.size] = level.var_1BC7[var_04];
|
|
continue;
|
|
}
|
|
|
|
var_03[var_03.size] = level.var_1BC7[var_04];
|
|
}
|
|
|
|
level.var_1BC7 = var_02;
|
|
for(var_04 = 0;var_04 < var_03.size;var_04++)
|
|
{
|
|
var_03[var_04] delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 45
|
|
dump_models()
|
|
{
|
|
}
|
|
|
|
//Function Number: 46
|
|
draw_axis(param_00,param_01)
|
|
{
|
|
var_02 = 32;
|
|
var_03 = var_02 * anglestoforward(param_01);
|
|
var_04 = var_02 * anglestoright(param_01);
|
|
var_05 = var_02 * anglestoup(param_01);
|
|
}
|
|
|
|
//Function Number: 47
|
|
_newhudelem()
|
|
{
|
|
if(!isdefined(level.scripted_elems))
|
|
{
|
|
level.scripted_elems = [];
|
|
}
|
|
|
|
var_00 = newhudelem();
|
|
level.scripted_elems[level.scripted_elems.size] = var_00;
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 48
|
|
_settext(param_00)
|
|
{
|
|
self.realtext = param_00;
|
|
self settext("_");
|
|
thread _clearalltextafterhudelem();
|
|
var_01 = 0;
|
|
foreach(var_03 in level.scripted_elems)
|
|
{
|
|
if(isdefined(var_03.realtext))
|
|
{
|
|
var_01 = var_01 + var_03.realtext.size;
|
|
var_03 settext(var_03.realtext);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 49
|
|
controler_hud_add(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
var_05 = 520;
|
|
if(is_mp())
|
|
{
|
|
var_05 = 630;
|
|
}
|
|
|
|
var_06 = 120;
|
|
var_07 = 18;
|
|
var_08 = 0.8;
|
|
var_09 = 20;
|
|
var_0A = 1.4;
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = "";
|
|
}
|
|
|
|
if(!isdefined(level.hud_controler) || !isdefined(level.hud_controler[param_00]))
|
|
{
|
|
level.hud_controler[param_00] = _newhudelem();
|
|
var_0B = _newhudelem();
|
|
}
|
|
else
|
|
{
|
|
var_0B = level.hud_controler[param_01].description;
|
|
}
|
|
|
|
level.hud_controler[param_00].location = 0;
|
|
level.hud_controler[param_00].alignx = "right";
|
|
level.hud_controler[param_00].aligny = "middle";
|
|
level.hud_controler[param_00].foreground = 1;
|
|
level.hud_controler[param_00].fontscale = 1.5;
|
|
level.hud_controler[param_00].sort = 20;
|
|
level.hud_controler[param_00].alpha = var_08;
|
|
level.hud_controler[param_00].x = var_05 + var_09;
|
|
level.hud_controler[param_00].y = var_06 + param_01 * var_07;
|
|
level.hud_controler[param_00] _settext(param_02);
|
|
level.hud_controler[param_00].base_button_text = param_02;
|
|
var_0B.location = 0;
|
|
var_0B.alignx = "left";
|
|
var_0B.aligny = "middle";
|
|
var_0B.foreground = 1;
|
|
var_0B.fontscale = var_0A;
|
|
var_0B.sort = 20;
|
|
var_0B.alpha = var_08;
|
|
var_0B.x = var_05 + var_09;
|
|
var_0B.y = var_06 + param_01 * var_07;
|
|
if(isdefined(param_04))
|
|
{
|
|
var_0B setvalue(param_04);
|
|
}
|
|
|
|
if(isdefined(param_03))
|
|
{
|
|
var_0B _settext(param_03);
|
|
}
|
|
|
|
level.hud_controler[param_00].description = var_0B;
|
|
}
|
|
|
|
//Function Number: 50
|
|
controler_hud_update_text(param_00,param_01)
|
|
{
|
|
if(is_mp())
|
|
{
|
|
level.hud_controler[param_00] _settext(level.hud_controler[param_00].base_button_text + param_01);
|
|
level.hud_controler[param_00].description _settext("");
|
|
return;
|
|
}
|
|
|
|
level.hud_controler[param_00].description _settext(param_01);
|
|
}
|
|
|
|
//Function Number: 51
|
|
controler_hud_update_button(param_00,param_01)
|
|
{
|
|
level.hud_controler[param_00] _settext(param_01);
|
|
}
|
|
|
|
//Function Number: 52
|
|
_clearalltextafterhudelem()
|
|
{
|
|
if(level._clearalltextafterhudelem)
|
|
{
|
|
return;
|
|
}
|
|
|
|
level._clearalltextafterhudelem = 1;
|
|
self clearalltextafterhudelem();
|
|
wait 0.05;
|
|
level._clearalltextafterhudelem = 0;
|
|
}
|
|
|
|
//Function Number: 53
|
|
is_mp()
|
|
{
|
|
return issubstr(level.script,"mp_");
|
|
} |