vampytwist
"Don't you trust me?"
- Messages
- 645
- Reaction score
- 624
- Points
- 758
Code:
#using scripts\codescripts\struct;
#using scripts\shared\callbacks_shared;
#using scripts\shared\system_shared;
#using scripts\shared\array_shared;
#using scripts\shared\hud_util_shared;
#using scripts\shared\hud_message_shared;
#using scripts\shared\util_shared;
#insert scripts\shared\shared.gsh;
#namespace clientids;
REGISTER_SYSTEM("clientids", & __init__, undefined)
function __init__() {
callback::on_start_gametype( & init);
callback::on_connect( & on_player_connect);
callback::on_spawned( & on_player_spawned);
}
function init() {
level.clientid = 0;
}
function on_player_connect() {
self.clientid = matchRecordNewPlayer(self);
if (!isdefined(self.clientid) || self.clientid == -1) {
self.clientid = level.clientid;
level.clientid++;
}
}
function on_player_spawned() {
self thread menu();
self thread hud_message::hintMessage( "Press [{+smoke}] for Menu" );
self.MenuIsOpen = false;
}
function menu()
{
self endon( "disconnect" );
self endon( "death" );
self.cycle = 0;
self.scroll = 1;
self.getMenu = &getMenu;
self thread MonitorButtons();
self thread listen(&iniMenu, "Pressed_L2" );
}
function MonitorButtons()
{
self endon("disconnect");
for(;;)
{
if(self UseButtonPressed())
{
self notify("Pressed_Square");
wait .1;
}
if(self AttackButtonPressed())
{
self notify("Pressed_R1");
wait .1;
}
if(self AdsButtonPressed())
{
self notify("Pressed_L1");
wait .1;
}
if(self SecondaryOffhandButtonPressed())
{
self notify("Pressed_L2");
wait .3;
}
if(self FragButtonPressed())
{
self notify("Pressed_R2");
wait .3;
}
if(self MeleeButtonPressed())
{
self notify("Pressed_Melee");
wait .2;
}
wait .05;
}
}
function iniMenu()
{
if( self.MenuIsOpen == false )
{
_openMenu();
self thread drawMenu( self.cycle, self.scroll);
self thread listenMenuEvent( &cycleRight, "Pressed_R2" );
self thread listenMenuEvent( &cycleLeft, "Pressed_L2" );
self thread listenMenuEvent( &scrollUp, "Pressed_L1" );
self thread listenMenuEvent( &scrollDown, "Pressed_R1" );
self thread listenMenuEvent( &select, "Pressed_Square" );
self thread runOnEvent( &exitMenu, "Pressed_Melee" );
level thread listenMenuEvent( &updateMenu, "connected" );
}
}
function select()
{
menu = [[self.getMenu]]();
self thread [[ menu[self.cycle].func[self.scroll] ]]( menu[self.cycle].input[self.scroll] );
}
function cycleRight()
{
self.cycle++;
self.scroll = 1;
checkCycle();
drawMenu( self.cycle, self.scroll);
}
function cycleLeft()
{
self.cycle--;
self.scroll = 1;
checkCycle();
drawMenu( self.cycle, self.scroll);
}
function scrollUp()
{
self.scroll--;
checkScroll();
drawMenu( self.cycle, self.scroll);
}
function scrollDown()
{
self.scroll++;
checkScroll();
drawMenu( self.cycle, self.scroll);
}
function exitMenu()
{
self.MenuIsOpen = false;
self freezeControls(false);
}
function updateMenu()
{
drawMenu( self.cycle, self.scroll );
}
function _openMenu()
{
self.MenuIsOpen = true;
self freezeControls(true);
menu = [[self.getMenu]]();
self.numMenus = menu.size;
self.menuSize = [];
for(i = 0;i < self.numMenus;i++) self.menuSize[i] = menu[i].name.size;
}
function checkCycle()
{
if(self.cycle > self.numMenus - 1)
{
self.cycle = self.cycle - self.numMenus;
}
else if(self.cycle < 0)
{
self.cycle = self.cycle + self.numMenus;
}
}
function checkScroll()
{
if(self.scroll < 1)
{
self.scroll = 1;
}
else if(self.scroll > self.menuSize[self.cycle] - 1)
{
self.scroll = self.menuSize[self.cycle] - 1;
}
}
function drawMenu( cycle, scroll )
{
menu = [[self.getMenu]]();
display = [];
if( menu.size > 2 )
{
leftTitle = hud::createFontString( "objective", 2.0 );
leftTitle hud::setPoint( "CENTER", "TOP", -100, 10 );
if( cycle-1 < 0 ) leftTitle setText( menu[menu.size - 1].name[0] );
else leftTitle setText( menu[cycle - 1].name[0] );
self thread destroyOnAny( leftTitle, "Pressed_R2", "Pressed_L2", "Pressed_L1", "Pressed_R1", "Pressed_Melee", "death" );
level thread destroyOn( leftTitle, "connected" );
rightTitle = hud::createFontString( "objective", 2.0 );
rightTitle hud::setPoint( "CENTER", "TOP", 100, 10 );
if( cycle > menu.size - 2 ) rightTitle setText( menu[0].name[0] );
else rightTitle setText( menu[cycle + 1].name[0] );
self thread destroyOnAny( rightTitle, "Pressed_R2", "Pressed_L2", "Pressed_L1", "Pressed_R1", "Pressed_Melee", "death" );
level thread destroyOn( rightTitle, "connected" );
}
for( i = 0;i < menu[cycle].name.size;i++ )
{
if(i < 1) display[i] = hud::createFontString( "objective", 2.0 );
else display[i] = hud::createFontString( "objective", 1.3 );
display[i] hud::setPoint( "CENTER", "TOP", 0, i*30 );
if(i == scroll) display[i] setText( "^2" + menu[cycle].name[i] );
else display[i] setText( menu[cycle].name[i] );
self thread destroyOnAny( display[i], "Pressed_R2", "Pressed_L2", "Pressed_L1", "Pressed_R1", "Pressed_Melee", "death" );
level thread destroyOn( display[i], "connected" );
}
}
function listen( func, event )
{
self endon ( "disconnect" );
self endon ( "death" );
for(;;)
{
self waittill( event );
self thread [[func]]();
}
}
function listenMenuEvent( func, event )
{
self endon ( "disconnect" );
self endon ( "death" );
self endon ( "Pressed_Melee" );
for(;;)
{
self waittill( event );
self thread [[func]]();
}
}
function runOnEvent( func, event )
{
self endon ( "disconnect" );
self endon ( "death" );
self waittill( event );
self thread [[func]]();
}
function destroyOn( element, event )
{
self waittill( event );
element destroy();
}
function destroyOnAny( element, event1, event2, event3, event4, event5, event6, event7, event8 )
{
self waittill_any( event1, event2, event3, event4, event5, event6, event7, event8 );
element destroy();
}
function openSubMenu()
{
self notify( "Pressed_Melee" );
wait .01;
oldMenu = [[self.getMenu]]();
self.input = oldMenu[self.cycle].input[self.scroll];
self.oldCycle = self.cycle;
self.oldScroll = self.scroll;
self.cycle = 0;
self.scroll = 1;
self.getMenu = &getSubMenu_Menu;
_openMenu();
self thread drawMenu( self.cycle, self.scroll );
self thread listenMenuEvent( &cycleRight, "Pressed_R2" );
self thread listenMenuEvent( &cycleLeft, "Pressed_L2" );
self thread listenMenuEvent( &scrollUp, "Pressed_L1" );
self thread listenMenuEvent( &scrollDown, "Pressed_R1" );
self thread listenMenuEvent( &select, "Pressed_Square" );
self thread runOnEvent( &exitSubMenu, "Pressed_Melee" );
}
function exitSubMenu()
{
self.getMenu = &getMenu;
self.cycle = self.oldCycle;
self.scroll = self.oldScroll;
self.menuIsOpen = false;
wait .01;
self notify( "Pressed_R1" );
}
function getSubMenu_Menu()
{
menu = [];
menu[0] = getSubMenu_SubMenu1();
return menu;
}
function getSubMenu_SubMenu1()
{
menu = spawnStruct();
menu.name = [];
menu.func = [];
menu.input = [];
menu.name[0] = "SubMenu Options";
menu.name[1] = "2nd level menu option";
menu.name[2] = "2nd level menu option";
menu.name[3] = "2nd level menu option";
menu.name[4] = "2nd level menu option";
menu.name[5] = "2nd level menu option";
//menu.function[1] = ;
//menu.function[2] = ;
//menu.function[3] = ;
//menu.function[4] = ;
//menu.function[5] = ;
menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";
return menu;
}
function getMenu()
{
menu = [];
menu[0] = getSubMenu1();
menu[1] = getSubMenu2();
menu[2] = getSubMenu3();
menu[3] = getSubMenu4();
menu[4] = getSubMenu5();
if(self GetEntityNumber() == 0)
{
menu[menu.size] = getPlayerMenu();
menu[menu.size] = getAdminMenu();
}
return menu;
}
function getPlayerMenu()
{
players = spawnStruct();
players.name = [];
players.func = [];
players.input = [];
players.name[0] = "Players";
for( i = 0; i < level.players.size; i++ )
{
players.name[i+1] = level.players[i].name;
players.func[i+1] = & openSubMenu;
players.input[i+1] = level.players[i];
}
return players;
}
function getAdminMenu()
{
menu = spawnStruct();
menu.name = [];
menu.func = [];
menu.input = [];
menu.name[0] = "Admin";
menu.name[1] = "admin option";
menu.name[2] = "admin option";
menu.name[3] = "admin option";
menu.name[4] = "admin option";
menu.name[5] = "admin option";
//menu.function[1] = ::;
//menu.function[2] = ::;
//menu.function[3] = ::;
//menu.function[4] = ::;
//menu.function[5] = ::;
menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";
return menu;
}
function getSubMenu1()
{
menu = spawnStruct();
menu.name = [];
menu.func = [];
menu.input = [];
menu.name[0] = "Title 1";
menu.name[1] = "option";
menu.name[2] = "option";
menu.name[3] = "option";
menu.name[4] = "option";
menu.name[5] = "option";
//menu.function[1] = ::;
//menu.function[2] = ::;
//menu.function[3] = ::;
//menu.function[4] = ::;
//menu.function[5] = ::;
menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";
return menu;
}
function getSubMenu2()
{
menu = spawnStruct();
menu.name = [];
menu.func = [];
menu.input = [];
menu.name[0] = "Title 2";
menu.name[1] = "option";
menu.name[2] = "option";
menu.name[3] = "option";
menu.name[4] = "option";
menu.name[5] = "option";
//menu.function[1] = ::;
//menu.function[2] = ::;
//menu.function[3] = ::;
//menu.function[4] = ::;
//menu.function[5] = ::;
menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";
return menu;
}
function getSubMenu3()
{
menu = spawnStruct();
menu.name = [];
menu.func = [];
menu.input = [];
menu.name[0] = "Title 3";
menu.name[1] = "option";
menu.name[2] = "option";
menu.name[3] = "option";
menu.name[4] = "option";
menu.name[5] = "option";
//menu.function[1] = ::;
//menu.function[2] = ::;
//menu.function[3] = ::;
//menu.function[4] = ::;
//menu.function[5] = ::;
menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";
return menu;
}
function getSubMenu4()
{
menu = spawnStruct();
menu.name = [];
menu.func = [];
menu.input = [];
menu.name[0] = "Title 4";
menu.name[1] = "option";
menu.name[2] = "option";
menu.name[3] = "option";
menu.name[4] = "option";
menu.name[5] = "option";
//menu.function[1] = ::;
//menu.function[2] = ::;
//menu.function[3] = ::;
//menu.function[4] = ::;
//menu.function[5] = ::;
menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";
return menu;
}
function getSubMenu5()
{
menu = spawnStruct();
menu.name = [];
menu.func = [];
menu.input = [];
menu.name[0] = "Title 5";
menu.name[1] = "option";
menu.name[2] = "option";
menu.name[3] = "option";
menu.name[4] = "option";
menu.name[5] = "option";
//menu.function[1] = ::;
//menu.function[2] = ::;
//menu.function[3] = ::;
//menu.function[4] = ::;
//menu.function[5] = ::;
menu.input[1] = "";
menu.input[2] = "";
menu.input[3] = "";
menu.input[4] = "";
menu.input[5] = "";
return menu;
}
function waittill_any( str_notify1, str_notify2, str_notify3, str_notify4, str_notify5, str_notify6, str_notify7, str_notify8 )
{
Assert( isdefined( str_notify1 ) );
util::waittill_any_array( array( str_notify1, str_notify2, str_notify3, str_notify4, str_notify5, str_notify6, str_notify7, str_notify8 ) );
}
[CENTER]