mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
1065 lines
20 KiB
Plaintext
1065 lines
20 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps\mp\_createfxmenu.gsc
|
|
* Game: Call of Duty: Black Ops 2
|
|
* Platform: PC
|
|
* Function Count: 35
|
|
* Decompile Time: 18 ms
|
|
* Timestamp: 10/28/2023 12:10:53 AM
|
|
*******************************************************************/
|
|
|
|
#include common_scripts/utility;
|
|
#include maps/mp/_createfx;
|
|
#include maps/mp/_createfxundo;
|
|
#include maps/mp/_utility;
|
|
|
|
//Function Number: 1
|
|
menu(name)
|
|
{
|
|
/#
|
|
return level.create_fx_menu == name;
|
|
#/
|
|
}
|
|
|
|
//Function Number: 2
|
|
setmenu(name)
|
|
{
|
|
/#
|
|
level.create_fx_menu = name;
|
|
#/
|
|
}
|
|
|
|
//Function Number: 3
|
|
create_fx_menu()
|
|
{
|
|
/#
|
|
if(button_is_clicked("escape","x"))
|
|
{
|
|
exit_menu();
|
|
return;
|
|
}
|
|
|
|
if(menu("creation"))
|
|
{
|
|
if(button_is_clicked("1"))
|
|
{
|
|
setmenu("create_oneshot");
|
|
draw_effects_list();
|
|
return;
|
|
}
|
|
|
|
if(button_is_clicked("2"))
|
|
{
|
|
setmenu("create_loopfx");
|
|
draw_effects_list();
|
|
return;
|
|
}
|
|
|
|
if(button_is_clicked("3"))
|
|
{
|
|
setmenu("create_exploder");
|
|
draw_effects_list();
|
|
return;
|
|
}
|
|
|
|
if(button_is_clicked("4"))
|
|
{
|
|
setmenu("create_loopsound");
|
|
ent = createloopsound();
|
|
finish_creating_entity(ent);
|
|
setmenu("none");
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(menu("create_oneshot") || menu("create_loopfx") || menu("create_exploder") || menu("change_fxid"))
|
|
{
|
|
if(button_is_clicked("rightarrow"))
|
|
{
|
|
increment_list_offset();
|
|
draw_effects_list();
|
|
}
|
|
|
|
if(button_is_clicked("leftarrow"))
|
|
{
|
|
decrement_list_offset();
|
|
draw_effects_list();
|
|
}
|
|
|
|
menu_fx_creation();
|
|
}
|
|
else if(menu("none"))
|
|
{
|
|
menu_change_selected_fx();
|
|
if(entities_are_selected())
|
|
{
|
|
display_fx_info(get_last_selected_entity());
|
|
if(button_is_clicked("a"))
|
|
{
|
|
clear_settable_fx();
|
|
setmenu("add_options");
|
|
}
|
|
}
|
|
}
|
|
else if(menu("add_options"))
|
|
{
|
|
if(!(entities_are_selected()))
|
|
{
|
|
clear_fx_hudelements();
|
|
setmenu("none");
|
|
return;
|
|
}
|
|
|
|
display_fx_add_options(get_last_selected_entity());
|
|
if(button_is_clicked("rightarrow"))
|
|
{
|
|
increment_list_offset();
|
|
}
|
|
|
|
if(button_is_clicked("leftarrow"))
|
|
{
|
|
decrement_list_offset();
|
|
}
|
|
}
|
|
else if(menu("jump_to_effect"))
|
|
{
|
|
if(button_is_clicked("rightarrow"))
|
|
{
|
|
increment_list_offset();
|
|
draw_effects_list("Select effect to jump to:");
|
|
}
|
|
|
|
if(button_is_clicked("leftarrow"))
|
|
{
|
|
decrement_list_offset();
|
|
draw_effects_list("Select effect to jump to:");
|
|
}
|
|
|
|
jump_to_effect();
|
|
}
|
|
else if(menu("select_by_property"))
|
|
{
|
|
menu_selection();
|
|
if(button_is_clicked("rightarrow"))
|
|
{
|
|
increment_list_offset();
|
|
}
|
|
|
|
if(button_is_clicked("leftarrow"))
|
|
{
|
|
decrement_list_offset();
|
|
}
|
|
}
|
|
else if(menu("change_type"))
|
|
{
|
|
if(!(entities_are_selected()))
|
|
{
|
|
clear_fx_hudelements();
|
|
setmenu("none");
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
menu_fx_type();
|
|
}
|
|
}
|
|
#/
|
|
}
|
|
|
|
//Function Number: 4
|
|
exit_menu()
|
|
{
|
|
/#
|
|
clear_fx_hudelements();
|
|
clear_entity_selection();
|
|
update_selected_entities();
|
|
setmenu("none");
|
|
#/
|
|
}
|
|
|
|
//Function Number: 5
|
|
get_last_selected_entity()
|
|
{
|
|
/#
|
|
return level.selected_fx_ents[level.selected_fx_ents.size - 1];
|
|
#/
|
|
}
|
|
|
|
//Function Number: 6
|
|
menu_fx_creation()
|
|
{
|
|
/#
|
|
count = 0;
|
|
picked_fx = undefined;
|
|
keys = get_level_ambient_fx();
|
|
for(i = level.effect_list_offset;i < keys.size;i++)
|
|
{
|
|
count = count + 1;
|
|
button_to_check = count;
|
|
if(button_to_check == 10)
|
|
{
|
|
button_to_check = 0;
|
|
}
|
|
|
|
if(button_is_clicked(button_to_check + "") && !button_is_held("f"))
|
|
{
|
|
picked_fx = keys[i];
|
|
break;
|
|
}
|
|
|
|
if(count > level.effect_list_offset_max)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!(IsDefined(picked_fx)))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(menu("change_fxid"))
|
|
{
|
|
apply_option_to_selected_fx(get_option("fxid"),picked_fx);
|
|
level.effect_list_offset = 0;
|
|
clear_fx_hudelements();
|
|
setmenu("none");
|
|
return;
|
|
}
|
|
|
|
ent = undefined;
|
|
if(menu("create_loopfx"))
|
|
{
|
|
ent = createloopeffect(picked_fx);
|
|
}
|
|
|
|
if(menu("create_oneshot"))
|
|
{
|
|
ent = createoneshoteffect(picked_fx);
|
|
delay_min = GetDvarInt(#"72501C7");
|
|
delay_max = GetDvarInt(#"A6DCBA49");
|
|
if(delay_min > delay_max)
|
|
{
|
|
temp = delay_min;
|
|
delay_min = delay_max;
|
|
delay_max = temp;
|
|
}
|
|
|
|
ent.v["delay"] = randomintrange(delay_min,delay_max);
|
|
}
|
|
|
|
if(menu("create_exploder"))
|
|
{
|
|
ent = createexploder(picked_fx);
|
|
}
|
|
|
|
finish_creating_entity(ent);
|
|
if(level.cfx_last_action != "none")
|
|
{
|
|
store_undo_state("edit",level.selected_fx_ents);
|
|
}
|
|
|
|
store_undo_state("add",level.createfxent[level.createfxent.size - 1]);
|
|
level.cfx_last_action = "none";
|
|
setmenu("none");
|
|
#/
|
|
}
|
|
|
|
//Function Number: 7
|
|
finish_creating_entity(ent)
|
|
{
|
|
/#
|
|
ent.v["angles"] = VectorToAngles(100 + VectorScale((0,0,1)) - ent.v["origin"]);
|
|
/#
|
|
assert(IsDefined(ent));
|
|
#/
|
|
ent post_entity_creation_function();
|
|
clear_entity_selection();
|
|
select_last_entity("skip_undo");
|
|
move_selection_to_cursor("skip_undo");
|
|
update_selected_entities();
|
|
#/
|
|
}
|
|
|
|
//Function Number: 8
|
|
change_effect_to_oneshot(ent)
|
|
{
|
|
/#
|
|
if(ent.v["type"] == "oneshotfx")
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(ent.v["type"] == "exploder")
|
|
{
|
|
ent.v["exploder"] = undefined;
|
|
ent.v["exploder_type"] = undefined;
|
|
ent.v["soundalias"] = undefined;
|
|
}
|
|
|
|
if(!IsDefined(ent.v["delay"]) || ent.v["delay"] == 0)
|
|
{
|
|
delay_min = GetDvarInt(#"72501C7");
|
|
delay_max = GetDvarInt(#"A6DCBA49");
|
|
if(delay_min > delay_max)
|
|
{
|
|
temp = delay_min;
|
|
delay_min = delay_max;
|
|
delay_max = temp;
|
|
}
|
|
|
|
ent.v["delay"] = randomintrange(delay_min,delay_max);
|
|
}
|
|
|
|
ent.v["type"] = "oneshotfx";
|
|
#/
|
|
}
|
|
|
|
//Function Number: 9
|
|
change_effect_to_loop(ent)
|
|
{
|
|
/#
|
|
if(ent.v["type"] == "loopfx")
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(ent.v["type"] == "exploder")
|
|
{
|
|
ent.v["exploder"] = undefined;
|
|
ent.v["exploder_type"] = undefined;
|
|
ent.v["soundalias"] = undefined;
|
|
}
|
|
|
|
if(!IsDefined(ent.v["delay"]) || ent.v["delay"] <= 0)
|
|
{
|
|
ent.v["delay"] = 1;
|
|
}
|
|
|
|
ent.v["type"] = "loopfx";
|
|
#/
|
|
}
|
|
|
|
//Function Number: 10
|
|
change_effect_to_exploder(ent)
|
|
{
|
|
/#
|
|
if(ent.v["type"] == "exploder")
|
|
{
|
|
return;
|
|
}
|
|
|
|
ent.v["type"] = "exploder";
|
|
if(!IsDefined(ent.v["delay"]) || ent.v["delay"] < 0)
|
|
{
|
|
ent.v["delay"] = 0;
|
|
}
|
|
|
|
ent.v["exploder"] = 1;
|
|
ent.v["exploder_type"] = "normal";
|
|
#/
|
|
}
|
|
|
|
//Function Number: 11
|
|
change_ent_type(newtype)
|
|
{
|
|
/#
|
|
store_undo_state("edit",level.selected_fx_ents);
|
|
level.cfx_last_action = "ent_type";
|
|
if(newtype == "oneshotfx")
|
|
{
|
|
for(i = 0;i < level.selected_fx_ents.size;i++)
|
|
{
|
|
change_effect_to_oneshot(level.selected_fx_ents[i]);
|
|
}
|
|
}
|
|
else if(newtype == "loopfx")
|
|
{
|
|
for(i = 0;i < level.selected_fx_ents.size;i++)
|
|
{
|
|
change_effect_to_loop(level.selected_fx_ents[i]);
|
|
}
|
|
}
|
|
else if(newtype == "exploder")
|
|
{
|
|
for(i = 0;i < level.selected_fx_ents.size;i++)
|
|
{
|
|
change_effect_to_exploder(level.selected_fx_ents[i]);
|
|
}
|
|
}
|
|
#/
|
|
}
|
|
|
|
//Function Number: 12
|
|
menu_init()
|
|
{
|
|
/#
|
|
level.createfx_options = [];
|
|
addoption("string","type","Type","oneshotfx","fx");
|
|
addoption("string","fxid","Name","nil","fx");
|
|
addoption("vector","origin","Origin",(0,0,0),"fx");
|
|
addoption("vector","angles","Angles",(0,0,0),"fx");
|
|
addoption("float","delay","Repeat rate/start delay",0.5,"fx");
|
|
addoption("int","repeat","Number of times to repeat",5,"exploder");
|
|
addoption("float","primlightfrac","Primary light fraction",1,"fx");
|
|
addoption("int","lightoriginoffs","Light origin offset",64,"fx");
|
|
addoption("float","delay_min","Minimum time between repeats",1,"exploder");
|
|
addoption("float","delay_max","Maximum time between repeats",2,"exploder");
|
|
addoption("float","fire_range","Fire damage range",0,"fx");
|
|
addoption("string","firefx","2nd FX id","nil","exploder");
|
|
addoption("float","firefxdelay","2nd FX id repeat rate",0.5,"exploder");
|
|
addoption("float","firefxtimeout","2nd FX timeout",5,"exploder");
|
|
addoption("string","firefxsound","2nd FX soundalias","nil","exploder");
|
|
addoption("string","ender","Level notify for ending 2nd FX","nil","exploder");
|
|
addoption("string","rumble","Rumble","nil","exploder");
|
|
addoption("float","damage","Radius damage",150,"exploder");
|
|
addoption("float","damage_radius","Radius of radius damage",250,"exploder");
|
|
addoption("int","exploder","Exploder",1,"exploder");
|
|
addoption("string","earthquake","Earthquake","nil","exploder");
|
|
addoption("string","soundalias","Soundalias","nil","all");
|
|
addoption("int","stoppable","Can be stopped from script","1","all");
|
|
level.effect_list_offset = 0;
|
|
level.effect_list_offset_max = 9;
|
|
level.createfxmasks = [];
|
|
level.createfxmasks["all"] = [];
|
|
level.createfxmasks["all"]["exploder"] = 1;
|
|
level.createfxmasks["all"]["oneshotfx"] = 1;
|
|
level.createfxmasks["all"]["loopfx"] = 1;
|
|
level.createfxmasks["all"]["soundfx"] = 1;
|
|
level.createfxmasks["fx"] = [];
|
|
level.createfxmasks["fx"]["exploder"] = 1;
|
|
level.createfxmasks["fx"]["oneshotfx"] = 1;
|
|
level.createfxmasks["fx"]["loopfx"] = 1;
|
|
level.createfxmasks["exploder"] = [];
|
|
level.createfxmasks["exploder"]["exploder"] = 1;
|
|
level.createfxmasks["loopfx"] = [];
|
|
level.createfxmasks["loopfx"]["loopfx"] = 1;
|
|
level.createfxmasks["oneshotfx"] = [];
|
|
level.createfxmasks["oneshotfx"]["oneshotfx"] = 1;
|
|
level.createfxmasks["soundfx"] = [];
|
|
level.createfxmasks["soundfx"]["soundalias"] = 1;
|
|
#/
|
|
}
|
|
|
|
//Function Number: 13
|
|
get_last_selected_ent()
|
|
{
|
|
/#
|
|
return level.selected_fx_ents[level.selected_fx_ents.size - 1];
|
|
#/
|
|
}
|
|
|
|
//Function Number: 14
|
|
entities_are_selected()
|
|
{
|
|
/#
|
|
return level.selected_fx_ents.size > 0;
|
|
#/
|
|
}
|
|
|
|
//Function Number: 15
|
|
menu_change_selected_fx()
|
|
{
|
|
/#
|
|
if(!(level.selected_fx_ents.size))
|
|
{
|
|
return;
|
|
}
|
|
|
|
count = 0;
|
|
drawncount = 0;
|
|
ent = get_last_selected_ent();
|
|
for(i = 0;i < level.createfx_options.size;i++)
|
|
{
|
|
option = level.createfx_options[i];
|
|
if(!(IsDefined(ent.v[option["name"]])))
|
|
{
|
|
}
|
|
else
|
|
{
|
|
count++;
|
|
if(count < level.effect_list_offset)
|
|
{
|
|
}
|
|
else
|
|
{
|
|
drawncount++;
|
|
button_to_check = drawncount;
|
|
if(button_to_check == 10)
|
|
{
|
|
button_to_check = 0;
|
|
}
|
|
|
|
if(button_is_clicked(button_to_check + "") && !button_is_held("f"))
|
|
{
|
|
prepare_option_for_change(option,drawncount);
|
|
break;
|
|
}
|
|
|
|
if(drawncount > level.effect_list_offset_max)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#/
|
|
}
|
|
|
|
//Function Number: 16
|
|
prepare_option_for_change(option,drawncount)
|
|
{
|
|
/#
|
|
if(option["name"] == "fxid")
|
|
{
|
|
setmenu("change_fxid");
|
|
draw_effects_list();
|
|
return;
|
|
}
|
|
|
|
if(option["name"] == "type")
|
|
{
|
|
setmenu("change_type");
|
|
return;
|
|
}
|
|
|
|
level.createfx_inputlocked = 1;
|
|
set_option_index(option["name"]);
|
|
setdvar("fx","nil");
|
|
level.createfxhudelements[drawncount + 1][0].color = (1,1,0);
|
|
#/
|
|
}
|
|
|
|
//Function Number: 17
|
|
menu_fx_option_set()
|
|
{
|
|
/#
|
|
if(GetDvar(#"5977E3") == "nil")
|
|
{
|
|
return;
|
|
}
|
|
|
|
option = get_selected_option();
|
|
setting = undefined;
|
|
if(option["type"] == "string")
|
|
{
|
|
setting = GetDvar(#"5977E3");
|
|
}
|
|
|
|
if(option["type"] == "int")
|
|
{
|
|
setting = GetDvarInt(#"5977E3");
|
|
}
|
|
|
|
if(option["type"] == "float")
|
|
{
|
|
setting = GetDvarFloat(#"5977E3");
|
|
}
|
|
|
|
if(option["type"] == "vector")
|
|
{
|
|
setting = GetDvar(#"5977E3");
|
|
temparray = strtok(setting," ");
|
|
if(temparray.size == 3)
|
|
{
|
|
setting = (float(temparray[0]),float(temparray[1]),float(temparray[2]));
|
|
}
|
|
else
|
|
{
|
|
clear_settable_fx();
|
|
return;
|
|
}
|
|
}
|
|
|
|
apply_option_to_selected_fx(option,setting);
|
|
#/
|
|
}
|
|
|
|
//Function Number: 18
|
|
menu_fx_type()
|
|
{
|
|
/#
|
|
clear_fx_hudelements();
|
|
set_fx_hudelement("Change effect type to:");
|
|
set_fx_hudelement(" (1) Oneshot");
|
|
set_fx_hudelement(" (2) Looped");
|
|
set_fx_hudelement(" (3) Exploder");
|
|
set_fx_hudelement("(x) Exit >");
|
|
if(button_is_clicked("1") && !button_is_held("f"))
|
|
{
|
|
change_ent_type("oneshotfx");
|
|
setmenu("none");
|
|
}
|
|
else if(button_is_clicked("2") && !button_is_held("f"))
|
|
{
|
|
change_ent_type("loopfx");
|
|
setmenu("none");
|
|
}
|
|
else if(button_is_clicked("3") && !button_is_held("f"))
|
|
{
|
|
change_ent_type("exploder");
|
|
setmenu("none");
|
|
}
|
|
|
|
if(menu("none"))
|
|
{
|
|
update_selected_entities();
|
|
}
|
|
#/
|
|
}
|
|
|
|
//Function Number: 19
|
|
menu_selection()
|
|
{
|
|
/#
|
|
clear_fx_hudelements();
|
|
set_fx_hudelement("Select all by property:");
|
|
drawncount = 0;
|
|
option_number = 0;
|
|
ent = level.selected_fx_ents[level.selected_fx_ents.size - 1];
|
|
if(level.selected_fx_ents.size < 1)
|
|
{
|
|
set_fx_hudelement("No ent is selected.");
|
|
}
|
|
else
|
|
{
|
|
for(i = level.effect_list_offset;i < level.createfx_options.size;i++)
|
|
{
|
|
if(drawncount > level.effect_list_offset_max)
|
|
{
|
|
break;
|
|
}
|
|
|
|
if(drawncount > ent.v.size)
|
|
{
|
|
break;
|
|
}
|
|
|
|
prop_name = level.createfx_options[i]["name"];
|
|
option_number = drawncount + 1;
|
|
if(IsDefined(ent.v[prop_name]))
|
|
{
|
|
if(button_is_clicked(option_number + "") && !button_is_held("f"))
|
|
{
|
|
level.cfx_selected_prop = prop_name;
|
|
menunone();
|
|
level.effect_list_offset = 0;
|
|
return;
|
|
}
|
|
|
|
prop_desc = level.createfx_options[i]["description"];
|
|
set_fx_hudelement(option_number + ". " + prop_desc + ": " + ent.v[prop_name]);
|
|
drawncount++;
|
|
}
|
|
else
|
|
{
|
|
}
|
|
}
|
|
}
|
|
|
|
if(drawncount > level.effect_list_offset_max)
|
|
{
|
|
pages = ceil(ent.v.size / level.effect_list_offset_max);
|
|
current_page = level.effect_list_offset / level.effect_list_offset_max + 1;
|
|
set_fx_hudelement("(<-) Page " + current_page + " of " + pages + " (->)");
|
|
}
|
|
|
|
set_fx_hudelement("(x) Exit >");
|
|
#/
|
|
}
|
|
|
|
//Function Number: 20
|
|
apply_option_to_selected_fx(option,setting)
|
|
{
|
|
/#
|
|
if(level.cfx_last_action != option["name"])
|
|
{
|
|
store_undo_state("edit",level.selected_fx_ents);
|
|
level.cfx_last_action = option["name"];
|
|
}
|
|
|
|
for(i = 0;i < level.selected_fx_ents.size;i++)
|
|
{
|
|
ent = level.selected_fx_ents[i];
|
|
if(mask(option["mask"],ent.v["type"]))
|
|
{
|
|
ent.v[option["name"]] = setting;
|
|
}
|
|
}
|
|
|
|
update_selected_entities();
|
|
clear_settable_fx();
|
|
#/
|
|
}
|
|
|
|
//Function Number: 21
|
|
set_option_index(name)
|
|
{
|
|
/#
|
|
for(i = 0;i < level.createfx_options.size;i++)
|
|
{
|
|
if(level.createfx_options[i]["name"] != name)
|
|
{
|
|
}
|
|
else
|
|
{
|
|
level.selected_fx_option_index = i;
|
|
return;
|
|
}
|
|
}
|
|
#/
|
|
}
|
|
|
|
//Function Number: 22
|
|
get_selected_option()
|
|
{
|
|
/#
|
|
return level.createfx_options[level.selected_fx_option_index];
|
|
#/
|
|
}
|
|
|
|
//Function Number: 23
|
|
mask(type,name)
|
|
{
|
|
/#
|
|
return IsDefined(level.createfxmasks[type][name]);
|
|
#/
|
|
}
|
|
|
|
//Function Number: 24
|
|
addoption(type,name,description,defaultsetting,mask)
|
|
{
|
|
/#
|
|
option = [];
|
|
option["type"] = type;
|
|
option["name"] = name;
|
|
option["description"] = description;
|
|
option["default"] = defaultsetting;
|
|
option["mask"] = mask;
|
|
level.createfx_options[level.createfx_options.size] = option;
|
|
#/
|
|
}
|
|
|
|
//Function Number: 25
|
|
get_option(name)
|
|
{
|
|
/#
|
|
for(i = 0;i < level.createfx_options.size;i++)
|
|
{
|
|
if(level.createfx_options[i]["name"] == name)
|
|
{
|
|
return level.createfx_options[i];
|
|
}
|
|
}
|
|
#/
|
|
}
|
|
|
|
//Function Number: 26
|
|
display_fx_info(ent)
|
|
{
|
|
/#
|
|
if(!(menu("none")))
|
|
{
|
|
return;
|
|
}
|
|
|
|
clear_fx_hudelements();
|
|
if(!(level.createfx_draw_enabled))
|
|
{
|
|
return;
|
|
}
|
|
|
|
set_fx_hudelement("Selected: " + level.selected_fx_ents.size + " Distance: " + get_distance_from_ent(ent));
|
|
level.createfxhudelements[0][0].color = (1,1,0);
|
|
set_fx_hudelement("Name: " + ent.v["fxid"]);
|
|
if(entities_are_selected())
|
|
{
|
|
count = 0;
|
|
drawncount = 0;
|
|
for(i = 0;i < level.createfx_options.size;i++)
|
|
{
|
|
option = level.createfx_options[i];
|
|
if(!(IsDefined(ent.v[option["name"]])))
|
|
{
|
|
}
|
|
else
|
|
{
|
|
count++;
|
|
if(count < level.effect_list_offset)
|
|
{
|
|
}
|
|
else
|
|
{
|
|
drawncount++;
|
|
set_fx_hudelement(drawncount + ". " + option["description"] + ": " + ent.v[option["name"]]);
|
|
if(drawncount > level.effect_list_offset_max)
|
|
{
|
|
more = 1;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(count > level.effect_list_offset_max)
|
|
{
|
|
pages = ceil(level.createfx_options.size / level.effect_list_offset_max);
|
|
current_page = level.effect_list_offset / level.effect_list_offset_max + 1;
|
|
set_fx_hudelement("(<-) Page " + current_page + " of " + pages + " (->)");
|
|
}
|
|
|
|
set_fx_hudelement("(a) Add >");
|
|
set_fx_hudelement("(x) Exit >");
|
|
}
|
|
else
|
|
{
|
|
set_fx_hudelement("Origin: " + ent.v["origin"]);
|
|
set_fx_hudelement("Angles: " + ent.v["angles"]);
|
|
}
|
|
#/
|
|
}
|
|
|
|
//Function Number: 27
|
|
display_fx_add_options(ent)
|
|
{
|
|
/#
|
|
/#
|
|
assert(menu("add_options"));
|
|
#/
|
|
/#
|
|
assert(entities_are_selected());
|
|
#/
|
|
clear_fx_hudelements();
|
|
set_fx_hudelement("Selected: " + level.selected_fx_ents.size + " Distance: " + get_distance_from_ent(ent));
|
|
level.createfxhudelements[0][0].color = (1,1,0);
|
|
set_fx_hudelement("Name: " + ent.v["fxid"]);
|
|
set_fx_hudelement("Origin: " + ent.v["origin"]);
|
|
set_fx_hudelement("Angles: " + ent.v["angles"]);
|
|
count = 0;
|
|
drawncount = 0;
|
|
if(level.effect_list_offset >= level.createfx_options.size)
|
|
{
|
|
level.effect_list_offset = 0;
|
|
}
|
|
|
|
for(i = 0;i < level.createfx_options.size;i++)
|
|
{
|
|
option = level.createfx_options[i];
|
|
if(IsDefined(ent.v[option["name"]]))
|
|
{
|
|
}
|
|
else if(!(mask(option["mask"],ent.v["type"])))
|
|
{
|
|
}
|
|
else
|
|
{
|
|
count++;
|
|
if(count < level.effect_list_offset)
|
|
{
|
|
}
|
|
else if(drawncount >= level.effect_list_offset_max)
|
|
{
|
|
}
|
|
else
|
|
{
|
|
drawncount++;
|
|
button_to_check = drawncount;
|
|
if(button_to_check == 10)
|
|
{
|
|
button_to_check = 0;
|
|
}
|
|
|
|
if(button_is_clicked(button_to_check + "") && !button_is_held("f"))
|
|
{
|
|
add_option_to_selected_entities(option);
|
|
menunone();
|
|
return;
|
|
}
|
|
|
|
set_fx_hudelement(button_to_check + ". " + option["description"]);
|
|
}
|
|
}
|
|
}
|
|
|
|
if(count > level.effect_list_offset_max)
|
|
{
|
|
pages = ceil(level.createfx_options.size / level.effect_list_offset_max);
|
|
current_page = level.effect_list_offset / level.effect_list_offset_max + 1;
|
|
set_fx_hudelement("(<-) Page " + current_page + " of " + pages + " (->)");
|
|
}
|
|
|
|
set_fx_hudelement("(x) Exit >");
|
|
#/
|
|
}
|
|
|
|
//Function Number: 28
|
|
add_option_to_selected_entities(option)
|
|
{
|
|
/#
|
|
for(i = 0;i < level.selected_fx_ents.size;i++)
|
|
{
|
|
ent = level.selected_fx_ents[i];
|
|
if(mask(option["mask"],ent.v["type"]))
|
|
{
|
|
ent.v[option["name"]] = option["default"];
|
|
}
|
|
}
|
|
#/
|
|
}
|
|
|
|
//Function Number: 29
|
|
menunone()
|
|
{
|
|
/#
|
|
level.effect_list_offset = 0;
|
|
clear_fx_hudelements();
|
|
setmenu("none");
|
|
#/
|
|
}
|
|
|
|
//Function Number: 30
|
|
draw_effects_list(title)
|
|
{
|
|
/#
|
|
clear_fx_hudelements();
|
|
if(!(IsDefined(title)))
|
|
{
|
|
title = "Pick an effect:";
|
|
}
|
|
|
|
set_fx_hudelement(title);
|
|
count = 0;
|
|
more = 0;
|
|
keys = get_level_ambient_fx();
|
|
if(level.effect_list_offset >= keys.size)
|
|
{
|
|
level.effect_list_offset = 0;
|
|
}
|
|
else if(level.effect_list_offset < 0)
|
|
{
|
|
level.effect_list_offset = int(floor(keys.size / level.effect_list_offset_max) * level.effect_list_offset_max);
|
|
}
|
|
|
|
for(i = level.effect_list_offset;i < keys.size;i++)
|
|
{
|
|
count = count + 1;
|
|
set_fx_hudelement(count + ". " + keys[i]);
|
|
if(count >= level.effect_list_offset_max)
|
|
{
|
|
more = 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(keys.size > level.effect_list_offset_max)
|
|
{
|
|
pages = ceil(keys.size / level.effect_list_offset_max);
|
|
current_page = level.effect_list_offset / level.effect_list_offset_max + 1;
|
|
set_fx_hudelement("(<-) Page " + current_page + " of " + pages + " (->)");
|
|
}
|
|
#/
|
|
}
|
|
|
|
//Function Number: 31
|
|
increment_list_offset()
|
|
{
|
|
/#
|
|
level.effect_list_offset = level.effect_list_offset + level.effect_list_offset_max;
|
|
#/
|
|
}
|
|
|
|
//Function Number: 32
|
|
decrement_list_offset()
|
|
{
|
|
/#
|
|
level.effect_list_offset = level.effect_list_offset - level.effect_list_offset_max;
|
|
#/
|
|
}
|
|
|
|
//Function Number: 33
|
|
jump_to_effect()
|
|
{
|
|
/#
|
|
count = 0;
|
|
picked_fxid = undefined;
|
|
keys = get_level_ambient_fx();
|
|
for(i = level.effect_list_offset;i < keys.size;i++)
|
|
{
|
|
count = count + 1;
|
|
button_to_check = count;
|
|
if(button_to_check == 10)
|
|
{
|
|
button_to_check = 0;
|
|
}
|
|
|
|
if(button_is_clicked(button_to_check + "") && !button_is_held("f"))
|
|
{
|
|
picked_fxid = keys[i];
|
|
break;
|
|
}
|
|
|
|
if(count > level.effect_list_offset_max)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!(IsDefined(picked_fxid)))
|
|
{
|
|
return;
|
|
}
|
|
|
|
clear_entity_selection();
|
|
ent = get_next_ent_with_same_id(-1,picked_fxid);
|
|
if(IsDefined(ent))
|
|
{
|
|
level.cfx_next_ent = ent;
|
|
move_player_to_next_same_effect(1);
|
|
}
|
|
else
|
|
{
|
|
iprintln("Effect " + picked_fxid + " has not been placed.");
|
|
}
|
|
|
|
level.effect_list_offset = 0;
|
|
clear_fx_hudelements();
|
|
setmenu("none");
|
|
#/
|
|
}
|
|
|
|
//Function Number: 34
|
|
get_level_ambient_fx()
|
|
{
|
|
/#
|
|
if(!(IsDefined(level._effect_keys)))
|
|
{
|
|
keys = getarraykeys(level._effect);
|
|
level._effect_keys = [];
|
|
k = 0;
|
|
for(i = 0;i < keys.size;i++)
|
|
{
|
|
if(issubstr(keys[i],"fx_"))
|
|
{
|
|
level._effect_keys[k] = keys[i];
|
|
k++;
|
|
}
|
|
}
|
|
|
|
if(level._effect_keys.size == 0)
|
|
{
|
|
level._effect_keys = keys;
|
|
}
|
|
}
|
|
|
|
return level._effect_keys;
|
|
#/
|
|
}
|
|
|
|
//Function Number: 35
|
|
get_distance_from_ent(ent)
|
|
{
|
|
/#
|
|
player = get_players()[0];
|
|
return distance(player geteye(),ent.v["origin"]);
|
|
#/
|
|
} |