Re: Days API Problem!!
this is the code:
PHP Code:
#include < amxmodx >
#include < fakemeta >
#include < jb_days_const >
#define fm_find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2)
#define FADE_IN 0x0000
#define FADE_OUT 0x0001
#define TASK_SPECIAL 100
enum _:DAYS
{
DAY_SUNDAY,
DAY_MONDAY,
DAY_TUESDAY,
DAY_WEDNESDAY,
DAY_THURSDAY,
DAY_FRIDAY,
DAY_SATURDAY
};
new const DaysNames[ DAYS ][ ] =
{
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
};
enum _:Forwards
{
ForwardDayActive = 0,
ForwardDayDisable,
ForwardDayChoosePre,
ForwardDayChoosePost,
ForwardDayStarted
};
const OFFSET_CSMENUCODE = 205
new Array:gDayName;
new gDaysCount;
new bool:DayActivated;
new DayActivatedID;
new gForwards[ Forwards ];
new gForwardResult;
new Days;
new gHudMsg;
new gMsgIDScreenFade;
public plugin_natives( )
{
register_native( "jb_days_register", "native_days_register" );
register_native( "jb_days_is_active", "native_days_is_active" );
register_native( "jb_days_set_active", "native_days_set_active" );
register_native( "jb_days_get_id", "native_days_get_id" );
gDayName = ArrayCreate(32, 1)
}
public native_days_register( plugin, params )
{
new name[ 32 ];
get_string( 1, name, charsmax( name ) )
if ( strlen( name ) < 1 )
{
log_error( AMX_ERR_NATIVE, "[JB] Can't register day with an empty name" )
return JB_INVALID_DAY;
}
new index, day_name[32]
for ( index = 0; index < gDaysCount; index++ )
{
ArrayGetString( gDayName, index, day_name, charsmax( day_name ) )
if ( equali( name, day_name ) )
{
log_error( AMX_ERR_NATIVE, "[JB] day already registered (%s)", name )
return JB_INVALID_DAY;
}
}
ArrayPushString( gDayName, name )
gDaysCount++
return gDaysCount - 1;
}
public native_days_is_active( plugin, params )
{
return DayActivated ? true : false;
}
public native_days_set_active( plugin, params )
{
new State = get_param( 1 );
DayActivated = State ? true : false;
if( !DayActivated )
{
ExecuteForward( gForwards[ ForwardDayDisable ], gForwardResult );
}
return true;
}
public native_days_get_id( plugin, params )
{
return DayActivated ? DayActivatedID : 0;
}
public plugin_init( )
{
register_plugin( "[JB] Days Manager", "0.1", "Ang52" );
register_saycmd( "days", "DaysManage" );
register_saycmd( "day", "DaysManage" );
gForwards[ ForwardDayActive ] = CreateMultiForward( "Jb_fwDayActivated", ET_IGNORE, FP_CELL );
gForwards[ ForwardDayDisable ] = CreateMultiForward( "Jb_fwDayDisabled", ET_IGNORE );
gForwards[ ForwardDayChoosePre ] = CreateMultiForward( "Jb_fwDayChoosePre", ET_CONTINUE, FP_CELL, FP_CELL );
gForwards[ ForwardDayChoosePost ] = CreateMultiForward( "Jb_fwDayChoosePost", ET_IGNORE, FP_CELL, FP_CELL );
gHudMsg = CreateHudSyncObj( );
gMsgIDScreenFade = get_user_msgid( "ScreenFade" );
}
public plugin_end( )
{
ArrayDestroy( gDayName );
}
public Jb_fwRoundstartPre( )
{
ExecuteForward( gForwards[ ForwardDayDisable ], gForwardResult );
}
public Jb_fwRoundstart( )
{
if ( Days > DAY_SATURDAY )
{
Days = DAY_SUNDAY;
}
new iUnits = clamp( ( 3 * ( 1 << 12 ) ), 0, 0xFFFF );
new players[ 32 ], num;
get_players( players, num );
new id;
for ( id = 0;id < num;id++ )
{
set_hudmessage( 200, 200, 200, -1.0, 0.75, 2, 5.0, 15.0 );
ShowSyncHudMsg( players[ id ], gHudMsg, "Day: %s^nJailbreak", DaysNames[ Days ] );
message_begin( MSG_ONE_UNRELIABLE, gMsgIDScreenFade,_, players[ id ] );
write_short( iUnits );
write_short( iUnits );
write_short( FADE_IN );
write_byte( 3 );
write_byte( 3 );
write_byte( 3 );
write_byte( 255 );
message_end( );
}
}
public Jb_fwRoundend( )
{
new iUnits = clamp( ( 3 * ( 1 << 12 ) ), 0, 0xFFFF );
new players[ 32 ], num;
get_players( players, num );
new id;
for ( id = 0;id < num;id++ )
{
client_cmd( id, "mp3 stop" );
set_hudmessage( 200, 200, 200, -1.0, 0.75, 1, 5.0, 5.0 );
ShowSyncHudMsg( id, gHudMsg, "Day: %s End^nJailbreak", DaysNames[ Days ] );
message_begin( MSG_ONE_UNRELIABLE, gMsgIDScreenFade,_, players[ id ] );
write_short( iUnits );
write_short( iUnits );
write_short( FADE_OUT );
write_byte( 3 );
write_byte( 3 );
write_byte( 3 );
write_byte( 255 );
message_end( );
}
Days++;
}
public DaysManage( id )
{
if( !( get_user_flags( id ) & ADMIN_KICK ) )
{
ColorChat( id, "You have^3 no access^1 to this command." );
return PLUGIN_HANDLED;
}
DaysManager( id );
return PLUGIN_HANDLED;
}
public DaysManager( id )
{
static menu[ 128 ], DayName[ 64 ];
new menuid, index, buffer[ 2 ];
formatex( menu, sizeof menu - 1, "\d[\y Jailbreak\d ]\y Days List^nTotal Days: %d", gDaysCount );
menuid = menu_create( menu, "DaysHandler" );
for( index = 0; index < gDaysCount; index++ )
{
ExecuteForward( gForwards[ ForwardDayChoosePre ], gForwardResult, id, index )
if( gForwardResult >= JB_DAY_DONT_SHOW )
continue;
ArrayGetString( gDayName, index, DayName, sizeof DayName );
if( gForwardResult >= JB_DAY_NOT_AVAILABLE )
formatex( menu, sizeof menu - 1, "\d%s", DayName );
else
formatex( menu, sizeof menu - 1, "%s", DayName );
buffer[ 0 ] = index;
buffer[ 1 ] = 0;
menu_additem( menuid, menu, buffer );
}
if( menu_items( menuid ) <= 0 )
{
ColorChat( id, "No^3 Days^1 Available." );
menu_destroy( menuid );
return PLUGIN_HANDLED;
}
formatex(menu, charsmax(menu), "Back")
menu_setprop(menuid, MPROP_BACKNAME, menu)
formatex(menu, charsmax(menu), "Next")
menu_setprop(menuid, MPROP_NEXTNAME, menu)
formatex(menu, charsmax(menu), "Exit")
menu_setprop(menuid, MPROP_EXITNAME, menu)
set_pdata_int(id, OFFSET_CSMENUCODE, 0)
menu_display(id, menuid, 0)
return PLUGIN_HANDLED;
}
public DaysHandler( id, menuid, item )
{
if (item == MENU_EXIT)
{
menu_destroy(menuid)
return PLUGIN_HANDLED;
}
// Retrieve item id
new buffer[2], dummy, dayid;
menu_item_getinfo(menuid, item, dummy, buffer, charsmax(buffer), _, _, dummy)
dayid = buffer[0]
startDay( id, dayid );
menu_destroy(menuid)
return PLUGIN_HANDLED;
}
startDay( id, dayid )
{
ExecuteForward( gForwards[ ForwardDayChoosePre ], gForwardResult, id, dayid );
if( gForwardResult >= JB_DAY_NOT_AVAILABLE )
return;
ExecuteForward( gForwards[ ForwardDayChoosePost ], gForwardResult, id, dayid );
}
public Jb_fwDayChoosePre( id, DayID )
{
if( DayActivated )
return JB_DAY_NOT_AVAILABLE;
return JB_DAY_AVAILABLE;
}
public Jb_fwDayChoosePost( id, DayID )
{
DayActivated = true;
DayActivatedID = DayID;
ExecuteForward( gForwards[ ForwardDayActive ], gForwardResult, DayID );
OpenCells( );
new DayName[ 64 ];
ArrayGetString( gDayName, DayID, DayName, charsmax( DayName ) );
set_hudmessage( 0, 191, 255, -1.0, 0.17, 1, 5.0, 8.0, 0.0, 0.0, 10 );
ShowSyncHudMsg( 0, gHudMsg, "[ Today ]^n[ %s ]", DayName );
}
public Jb_fwDayDisabled( )
{
DayActivated = false;
DayActivatedID = 0;
}
OpenCells( )
{
new ent = -1;
while( ( ent = fm_find_ent_by_class( ent, "func_button" ) ) )
{
dllfunc( DLLFunc_Use, ent, 0 );
}
}
register_saycmd( command[ ], function[ ] )
{
new saycom[ 64 ];
formatex( saycom, sizeof saycom - 1, "say %s", command );
register_clcmd( saycom, function );
formatex( saycom, sizeof saycom - 1, "say .%s", command );
register_clcmd( saycom, function );
formatex( saycom, sizeof saycom - 1, "say !%s", command );
register_clcmd( saycom, function );
formatex( saycom, sizeof saycom - 1, "say /%s", command );
register_clcmd( saycom, function );
}
ColorChat(id, string[], {Float, Sql, Resul,_}:...)
{
new msg[191], players[32], count = 1;
static len;
len = formatex(msg, charsmax(msg), "^4[ JBAMXX ]^1 ");
vformat(msg[len], charsmax(msg) - len, string, 3);
if(id) players[0] = id;
else get_players(players,count,"ch");
for (new i = 0; i < count; i++)
{
if(is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"),_, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
|