Veteran Member
|
09-26-2010
, 08:36
Re: Jumpcounter
|
#6
|
Quote:
Originally Posted by Erdener
xtheone:
Try this :
|
first of all, remove .amxx
second, you didnt change anything.
PHP Code:
#include < amxmodx > #include < fakemeta > #include < hamsandwich > #include < nvault > //#include < colorchat >
// OMG OMG PEW PEW PEW enum Color { NORMAL = 1, // clients scr_concolor cvar color GREEN, // Green Color TEAM_COLOR, // Red, grey, blue GREY, // grey RED, // Red BLUE, // Blue }
new TeamName[][] = { "", "TERRORIST", "CT", "SPECTATOR" }
ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...) { if( !get_playersnum() ) return; new message[256];
switch(type) { case NORMAL: // clients scr_concolor cvar color { message[0] = 0x01; } case GREEN: // Green { message[0] = 0x04; } default: // White, Red, Blue { message[0] = 0x03; } }
vformat(message[1], 251, msg, 4);
// Make sure message is not longer than 192 character. Will crash the server. message[192] = '^0';
new team, ColorChange, index, MSG_Type; if(id) { MSG_Type = MSG_ONE; index = id; } else { index = FindPlayer(); MSG_Type = MSG_ALL; } team = get_user_team(index); ColorChange = ColorSelection(index, MSG_Type, type);
ShowColorMessage(index, MSG_Type, message); if(ColorChange) { Team_Info(index, MSG_Type, TeamName[team]); } }
ShowColorMessage(id, type, message[]) { static bool:saytext_used; static get_user_msgid_saytext; if(!saytext_used) { get_user_msgid_saytext = get_user_msgid("SayText"); saytext_used = true; } message_begin(type, get_user_msgid_saytext, _, id); write_byte(id) write_string(message); message_end(); }
Team_Info(id, type, team[]) { static bool:teaminfo_used; static get_user_msgid_teaminfo; if(!teaminfo_used) { get_user_msgid_teaminfo = get_user_msgid("TeamInfo"); teaminfo_used = true; } message_begin(type, get_user_msgid_teaminfo, _, id); write_byte(id); write_string(team); message_end();
return 1; }
ColorSelection(index, type, Color:Type) { switch(Type) { case RED: { return Team_Info(index, type, TeamName[1]); } case BLUE: { return Team_Info(index, type, TeamName[2]); } case GREY: { return Team_Info(index, type, TeamName[0]); } }
return 0; }
FindPlayer() { new i = -1;
while(i <= get_maxplayers()) { if(is_user_connected(++i)) return i; }
return -1; } // OMG OMG PEW PEW PEW const HUDCHANNEL = 2; const Float:HUDMESSAGE_DELAY = 0.8;
new const VERSION[] = "0.2.2b"; new const PREFIX[] = "[JUMPS]";
// 0 = Crouched ; 1 = Normal new Jumps[ 33 ][ 2 ]; new JumpLevel[ 33 ][ 2 ];
new g_iHudSync; new g_iMaxplayers; new g_iSaveFile; new g_iPlayerCount;
new g_pLimit; new g_pHelpFile; new g_pLevelsFile;
new bool:g_bHaveCounter[ 33 ][ 2 ]; // 0 = Has Counter ; 1 = Player's Data Loaded? new bool:g_bUsedJumpsCmd[ 33 ];
new vOrigin[ 33 ][ 3 ]; new vOldOrigin[ 33 ][ 2 ][ 3 ]; // 0 = Crouched ; 1 = Normal
const MAXLEVELS = 40; // 39 LEVELS + NO LVL const TASKID_JUMPSCMD = 36484; const TASKID_LOADPRINT = 36148;
new const JUMPS[ MAXLEVELS - 1 ] = { // 0, 666, 2500, 5000, 10000, 15000, 20000, 25000, 30000, 35000, 45000, 50000, 55000, 60000, 65000, 70000, 85000, 95000, 125000, 130000, 140000, 150000, 160000, 170000, 180000, 190000, 200000, 220000, 260000, 280000, 300000, 330000, 360000, 400000, 450000, 550000, 570000, 680000, 860000, 1000000 };
new const CLASSES[ MAXLEVELS ][] = { "No LvL", "NEWBIE", "BEGINNER", "SMALL TIMER", "MODERATE", "CHICK", // CHICKEN JUMPER "GETTING THE HANG OF IT", "JUMPER", "JUST ANOTHER JUMPER", "COOL JUMPER", "WICKED JUMPER", "SNEACKY JUMPER", "MORE JUMPS PLZ!!!", // MORE JUMPS PLX! "JUMPISH:", // JUMPISH "GEEKJUMPER", // *<:D JUMPER "JUMPING WITH STYLE", "GOING TO THE TOP JUMPER", "JUMP, FOREST, JUMP!", // <3 JUMPS "ABNORMAL JUMPER", "CANT CATCH THE JUMPER", "ALL DAY JUMPER", "JUMPING 24/7", // 24/7 JUMPER "UNSTOPPABLE", // NEVAH STOP JUMPING "NEVAH SURRENDER DA JUMPS", "NOLIFER", // NO LIFE JUMPER "WE ALL LOVE JUMPS", "DOMINATOR", // FUCKIN IN DA ASS JUMPER "NAILING THE JUMPS", "SKILLED JUMPER", "PRO JUMPER", "NEMESSIS", "LEET JUMPER", "MEGA JUMPER", "SUPER JUMPER", "UBER JUMPER", "SUPER LEET JUMPER", "SUPER MEGA JUMPER", "SUPER UBER JUMPER", "SUPER LEET MEGA UBER JUMPER", "SUPERSTAR" };
public plugin_init() { register_plugin( "Jump Counter", VERSION, "Juice" ); register_cvar( "jc_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY );
register_clcmd( "say", "HandleSay" ); g_iHudSync = CreateHudSyncObj( ); g_iMaxplayers = get_maxplayers( ); g_iSaveFile = nvault_open( "JumpCounter" ); g_pLimit = register_cvar( "jc_playerlimit", "0" ); g_pHelpFile = register_cvar( "jc_helpfile", "link or folder" ); g_pLevelsFile = register_cvar( "jc_levelsfile", "link or folder" ); RegisterHam( Ham_Player_Jump, "player", "Ham_Player_Jump_Post", 1 ); }
public HandleSay( const id ) { static szArg[ 41 ]; new szTarget[ 32 ]; read_argv( 1, szArg, sizeof( szArg ) - 1 ); parse( szArg, szArg, 12, szTarget, sizeof( szTarget ) - 1 ); if( equali( szArg, "/jumphud" ) ) { g_bHaveCounter[ id ][ 0 ] = !g_bHaveCounter[ id ][ 0 ]; ColorChat( id, RED, "^x01%sJumps Counter HUD %sabled. To %sable, type '^x04/jumphud^x01'", PREFIX, g_bHaveCounter[ id ][ 0 ] ? "en" : "dis", g_bHaveCounter[ id ][ 0 ] ? "dis" : "en" ); return PLUGIN_HANDLED; } else if( equali( szArg, "/jumphelp" ) ) { new szPage[ 50 ]; get_pcvar_string( g_pHelpFile, szPage, 49 ); show_motd( id, szPage, "Jump Counter Help" ); return PLUGIN_HANDLED; } else if( equali( szArg, "/cjumplevels" ) || equali( szArg, "/jumplevels" ) ) { new szPage[ 50 ]; get_pcvar_string( g_pLevelsFile, szPage, 49 ); show_motd( id, szPage, "Jump Levels" ); return PLUGIN_HANDLED; } else if( equali( szArg, "/jumps" ) ) { if( g_bUsedJumpsCmd[ id ] ) { ColorChat( id, GREEN, "^x03%sDo not use these commands too often^x04!", PREFIX ); return PLUGIN_HANDLED; } if ( !szTarget[ 0 ] ) { new szName[ 33 ]; get_user_name( id, szName, 32 ); ColorChat( 0, GREEN,"^x03[^x04 %s^x03 ][ Jumps:^x04 %i^x03 '^x04%s^x03' ][ Crouched Jumps:^x04 %i^x03 '^x04%s^x03' ]", szName, Jumps[ id ][ 1 ], CLASSES[ JumpLevel[ id ][ 1 ] ], Jumps[ id ][ 0 ], CLASSES[ JumpLevel[ id ][ 0 ] ] ); UsedJumpsCommand( id ); } else { new targetid = get_target( szTarget ); if( targetid ) { new szName[ 33 ]; get_user_name( targetid, szName, 32 ); ColorChat( 0, GREEN,"^x03[^x04 %s^x03 ][ Jumps:^x04 %i^x03 '^x04%s^x03' ][ Crouched Jumps:^x04 %i^x03 '^x04%s^x03' ]", szName, Jumps[ targetid ][ 1 ], CLASSES[ JumpLevel[ targetid ][ 1 ] ], Jumps[ targetid ][ 0 ], CLASSES[ JumpLevel[ targetid ][ 0 ] ] ); UsedJumpsCommand( id ); } else { ColorChat( id, GREEN, "^x03%sThere are no or multiple players with that name '^x04 %s^x03 '", PREFIX, szTarget ); } } return PLUGIN_HANDLED; } else if( equali( szArg, "/jumpnext" ) ) { if( g_bUsedJumpsCmd[ id ] ) { ColorChat( id, GREEN, "%s^x03Do not use these commands too often^x04!", PREFIX ); return PLUGIN_HANDLED; } if ( !szTarget[ 0 ] ) { new szName[ 33 ]; get_user_name( id, szName, 32 ); ColorChat( 0, GREEN, "^x03[ Next level for:^x04 %s^x03 ][ Jumps:^x04 %i^x03 '^x04%s^x03' ][ Crouched Jumps:^x04 %i^x03 '^x04%s^x03' ]", szName, JUMPS[ JumpLevel[ id ][ 0 ] ], CLASSES[ JumpLevel[ id ][ 0 ] + 1 ] , JUMPS[ JumpLevel[ id ][ 1 ] ], CLASSES[ JumpLevel[ id ][ 1 ] + 1 ] ); UsedJumpsCommand( id ); } else { new targetid = get_target( szTarget ); if ( targetid ) { new szName[ 33 ]; get_user_name( targetid, szName, 32 ); ColorChat( 0, GREEN, "^x03[ Next level for:^x04 %s^x03 ][ Jumps:^x04 %i^x03 '^x04%s^x03' ][ Crouched Jumps:^x04 %i^x03 '^x04%s^x03' ]", szName, JUMPS[ JumpLevel[ targetid ][ 0 ] ], CLASSES[ JumpLevel[ targetid ][ 0 ] + 1 ] , JUMPS[ JumpLevel[ targetid ][ 1 ] ], CLASSES[ JumpLevel[ targetid ][ 1 ] + 1 ] ); UsedJumpsCommand( id ); } else { ColorChat( id, GREEN, "^x03%sThere are no or multiple players with that name '^x04 %s^x03 '", PREFIX, szTarget ); } } return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }
public client_putinserver( id ) { g_bHaveCounter[ id ][ 0 ] = true; g_bHaveCounter[ id ][ 1 ] = false; g_bUsedJumpsCmd[ id ] = false; LoadData( id ); g_iPlayerCount++; }
public client_disconnect( id ) { if ( task_exists( id + TASKID_JUMPSCMD ) ) { remove_task( id + TASKID_JUMPSCMD ); } else if( task_exists( id + TASKID_LOADPRINT ) ) { remove_task( id + TASKID_LOADPRINT ); } g_bHaveCounter[ id ][ 0 ] = false; g_bHaveCounter[ id ][ 1 ] = false; g_bUsedJumpsCmd[ id ] = false; SaveData( id ); g_iPlayerCount--; }
public UsedJumpsCommand( const id ) { g_bUsedJumpsCmd[ id ] = true; set_task( 2.0, "RemoveUsedJumpsCommand", id + TASKID_JUMPSCMD ); }
public RemoveUsedJumpsCommand( const id ) { g_bUsedJumpsCmd[ id - TASKID_JUMPSCMD ] = false; }
public SaveData( const id ) { new szAuthID[ 35 ]; new vaultkey[ 35 ], vaultdata[ 21 ]; get_user_authid( id, szAuthID, 34 ); format( vaultkey, 34, "%s", szAuthID ); format( vaultdata, 20," %i %i %i %i ", Jumps[ id ][ 0 ], JumpLevel[ id ][ 0 ], Jumps[ id ][ 1 ], JumpLevel[ id ][ 1 ] );
nvault_set( g_iSaveFile, vaultkey, vaultdata ); }
public LoadData( const id ) { new szAuthID[ 35 ]; new vaultkey[ 35 ], vaultdata[ 21 ]; new JumpCount[ 2 ][ 8 ]; new JumpLevelLoad[ 2 ][ 2 ]; get_user_authid( id, szAuthID, 34 ); format( vaultkey, 34, "%s", szAuthID ); format( vaultdata, 20," %i %i %i %i ", Jumps[ id ][ 0 ], JumpLevel[ id ][ 0 ], Jumps[ id ][ 1 ], JumpLevel[ id ][ 1 ] );
nvault_get( g_iSaveFile, vaultkey, vaultdata, 255 ); parse( vaultdata, JumpCount[ 0 ], 8, JumpLevelLoad[ 0 ], 2, JumpCount[ 1 ], 8, JumpLevelLoad[ 1 ], 2 ); Jumps[ id ][ 0 ] = str_to_num( JumpCount[ 0 ] ); Jumps[ id ][ 1 ] = str_to_num( JumpCount[ 1 ] ); JumpLevel[ id ][ 0 ] = str_to_num( JumpLevelLoad[ 0 ] ); JumpLevel[ id ][ 1 ] = str_to_num( JumpLevelLoad[ 1 ] ); set_task( 3.0, "PrintLoadMessage", id + TASKID_LOADPRINT ); }
public PrintLoadMessage( const id ) { ColorChat( id - TASKID_LOADPRINT, GREEN, "^x03%sYour^x04 %i^x03 Jumps and^x04 %i^x03 Crouched Jumps has been loaded - [v%s]", PREFIX, Jumps[ id - TASKID_LOADPRINT ][ 1 ], Jumps[ id - TASKID_LOADPRINT ][ 0 ], VERSION ); g_bHaveCounter[ id - TASKID_LOADPRINT ][ 1 ] = true; } public Ham_Player_Jump_Post( const id ) { if( /*get_pdata_int( id, 114 ) == 1 &&*/ g_bHaveCounter[ id ][ 1 ] && ( pev( id, pev_flags ) & FL_ONGROUND ) && !( pev( id, pev_oldbuttons ) & IN_JUMP ) ) { static i, g_PlayerLimit, szName[ 33 ], Distance[ 2 ]; g_PlayerLimit = get_pcvar_num( g_pLimit ); get_user_name( id, szName, 32 ); get_user_origin( id, vOrigin[ id ] ); Distance[ 0 ] = get_distance( vOldOrigin[ id ][ 0 ], vOrigin[ id ] ); Distance[ 1 ] = get_distance( vOldOrigin[ id ][ 1 ], vOrigin[ id ] ); if( g_iPlayerCount < g_PlayerLimit ) { for( i = 1; i <= g_iMaxplayers; i++ ) { if( i == 1 || user_spectating_player( i, id ) && g_bHaveCounter[ i ][ 0 ] ) { set_hudmessage( 200, 0, 0, 0.022, 0.17, 0, 0.0, HUDMESSAGE_DELAY, 0.0, 0.0, HUDCHANNEL ); ShowSyncHudMsg( i, g_iHudSync, "NOT ENOUGH PLAYERS!!!" ); } } return HAM_IGNORED; } if( pev( id, pev_button ) & IN_DUCK ) { if( Jumps[ id ][ 0 ] > 1000000 ) return HAM_IGNORED; if( Distance[ 0 ] >= 110 ) { ++Jumps[ id ][ 0 ]; while( Jumps[ id ][ 0 ] >= JUMPS[ JumpLevel[ id ][ 0 ] ] ) { ++JumpLevel[ id ][ 0 ]; ColorChat( 0, GREEN, "^x03%s^x04 %s^x03 has done^x04 %i^x03 Crouched Jumps! [NEW LEVEL:^x04 %s^x03]", PREFIX, szName, Jumps[ id ][ 0 ], CLASSES[ JumpLevel[ id ][ 0 ] ] ); } if( g_bHaveCounter[ id ][ 0 ] ) { set_hudmessage( 0, 200, 140, 0.022, 0.17, 0, 0.0, HUDMESSAGE_DELAY, 0.0, 0.0, HUDCHANNEL ); for( i = 1; i <= g_iMaxplayers; i++ ) { if( user_spectating_player( i, id ) ) { ShowSyncHudMsg( i, g_iHudSync, "%s:^nCrouched Jumps: %i", szName, Jumps[ id ][ 0 ] ); } else { ShowSyncHudMsg( id, g_iHudSync, "Crouched Jumps: %i", Jumps[ id ][ 0 ]); } } } vOldOrigin[ id ][ 0 ] = vOrigin[ id ]; } else { if( g_bHaveCounter[ id ][ 0 ] ) { set_hudmessage( 200, 0, 0, 0.022, 0.17, 0, 0.0, HUDMESSAGE_DELAY, 0.0, 0.0, HUDCHANNEL ); ShowSyncHudMsg( id, g_iHudSync, "CROUCH JUMPING AT THE SAME POSITION!!!!!!" ); } } } else { if( Jumps[ id ][ 1 ] > 1000000 ) return HAM_IGNORED; if( Distance[ 1 ] >= 100 ) { ++Jumps[ id ][ 1 ]; while( Jumps[ id ][ 1 ] >= JUMPS[ JumpLevel[ id ][ 1 ] ] ) { ++JumpLevel[ id ][ 1 ]; ColorChat( 0, GREEN, "^x03%s^x04 %s^x03 has done^x04 %i^x03 Jumps! [NEW LEVEL:^x04 %s^x03]", PREFIX, szName, Jumps[ id ][ 1 ], CLASSES[ JumpLevel[ id ][ 1 ] ] ); } if( g_bHaveCounter[ id ][ 0 ] ) { set_hudmessage( 0, 200, 140, 0.022, 0.17, 0, 0.0, HUDMESSAGE_DELAY, 0.0, 0.0, HUDCHANNEL ); for( i = 1; i <= g_iMaxplayers; i++ ) { if( user_spectating_player( i, id ) ) { ShowSyncHudMsg( i, g_iHudSync, "%s:^nJumps: %i", szName, Jumps[ id ][ 1 ] ); } else { ShowSyncHudMsg( id, g_iHudSync, "Jumps: %i", Jumps[ id ][ 1 ] ); } } } vOldOrigin[ id ][ 1 ] = vOrigin[ id ]; } else { if( g_bHaveCounter[ id ][ 0 ] ) { set_hudmessage( 200, 0, 0, 0.022, 0.17, 0, 0.0, HUDMESSAGE_DELAY, 0.0, 0.0, HUDCHANNEL ); ShowSyncHudMsg( id, g_iHudSync, "JUMPING AT THE SAME POSITION!!!!!!" ); } } } } return HAM_IGNORED; }
public plugin_end() { for( new i = 1; i <= g_iMaxplayers; i++ ) { SaveData( i ); } }
stock bool:user_spectating_player( const iSpectator, const iPlayer ) { if( is_user_connected( iSpectator ) && is_user_connected( iPlayer ) && !is_user_alive( iSpectator ) && is_user_alive( iPlayer ) && pev( iSpectator, pev_deadflag ) == 2 && pev( iSpectator, pev_iuser1 ) != 3 && pev( iSpectator, pev_iuser2 ) == iPlayer ) return true;
return false; }
stock get_target( const szArg[] ) { new iTarget = find_player( "bl", szArg ); if( iTarget ) { if( iTarget != find_player( "blj", szArg ) ) { return 0; } } else if( ( iTarget = find_player( "c", szArg ) ) == 0 && szArg[ 0 ] == '#' && szArg[ 1 ] ) { iTarget = find_player( "k", str_to_num( szArg[ 1 ] ) ); } if( !iTarget || !is_user_alive( iTarget ) ) { return 0; } return iTarget; }
|
|