#include #include #include #include #include #include //#define USE_SQL #if defined USE_SQL #include #include #endif #define KZ_LEVEL ADMIN_KICK #define MSG MSG_ONE_UNRELIABLE #define MAX_ENTITYS 900+15*32 #define IsOnLadder(%1) (pev(%1, pev_movetype) == MOVETYPE_FLY) #define VERSION "2.31" #define SCOREATTRIB_NONE 0 #define SCOREATTRIB_DEAD ( 1 << 0 ) #define SCOREATTRIB_BOMB ( 1 << 1 ) #define SCOREATTRIB_VIP ( 1 << 2 ) new g_iPlayers[32], g_iNum, g_iPlayer new const g_szAliveFlags[] = "a" #define RefreshPlayersList() get_players(g_iPlayers, g_iNum, g_szAliveFlags) new const FL_ONGROUND2 = ( FL_ONGROUND | FL_PARTIALGROUND | FL_INWATER | FL_CONVEYOR | FL_FLOAT ) new const KZ_STARTFILE[] = "start.ini" new const KZ_STARTFILE_TEMP[] = "temp_start.ini" #if defined USE_SQL new Handle:g_SqlTuple new Handle:SqlConnection new g_Error[512] new kz_sql_host new kz_sql_user new kz_sql_pass new kz_sql_db new kz_sql_name new kz_sql_files #else new Float:Pro_Times[24] new Pro_AuthIDS[24][32] new Pro_Names[24][32] new Pro_Date[24][32] new Float:Noob_Tiempos[24] new Noob_AuthIDS[24][32] new Noob_Names[24][32] new Noob_Date[24][32] new Noob_CheckPoints[24] new Noob_GoChecks[24] new Noob_Weapon[24][32] #endif new Float:Checkpoints[33][2][3] new Float:timer_time[33] new Float:g_pausetime[33] new Float:antihookcheat[33] new Float:SpecLoc[33][3] new Float:NoclipPos[33][3] new Float:PauseOrigin[33][3] new Float:SavedStart[33][3] new hookorigin[33][3] new Float:DefaultStartPos[3] new Float:SavedTime[33] new SavedChecks[33] new SavedGoChecks[33] new SavedScout[33] new SavedOrigins[33][3] new bool:g_bCpAlternate[33] new bool:timer_started[33] new bool:IsPaused[33] new bool:WasPaused[33] new bool:firstspawn[33] new bool:canusehook[33] new bool:ishooked[33] new bool:user_has_scout[33] new bool:NightVisionUse[33] new bool:HealsOnMap new bool:gViewInvisible[33] new bool:gMarkedInvisible[33] = { true, ...}; new bool:gWaterInvisible[33] new bool:gWaterEntity[MAX_ENTITYS] new bool:gWaterFound new bool:DefaultStart new bool:AutoStart[33] new Trie:g_tStarts new Trie:g_tStops; new checknumbers[33] new gochecknumbers[33] new chatorhud[33] new ShowTime[33] new MapName[64] new Kzdir[128] new SavePosDir[128] new prefix[33] #if !defined USE_SQL new Topdir[128] #endif new kz_checkpoints new kz_cheatdetect new kz_spawn_mainmenu new kz_show_timer new kz_chatorhud new kz_hud_color new kz_chat_prefix new hud_message new kz_other_weapons new kz_maxspeedmsg new kz_drop_weapons new kz_remove_drops new kz_pick_weapons new kz_reload_weapons new kz_use_radio new kz_hook_prize new kz_hook_sound new kz_hook_speed new kz_pause new kz_noclip_pause new kz_nvg new kz_nvg_colors new kz_vip new kz_respawn_ct new kz_save_pos new kz_save_pos_gochecks new kz_semiclip new kz_semiclip_transparency new kz_spec_saves new kz_save_autostart new kz_top15_authid new Sbeam = 0 new const other_weapons[8] = { CSW_SCOUT, CSW_P90, CSW_FAMAS, CSW_SG552, CSW_M4A1, CSW_M249, CSW_AK47, CSW_AWP } new const other_weapons_name[8][] = { "weapon_scout", "weapon_p90", "weapon_famas", "weapon_sg552", "weapon_m4a1", "weapon_m249", "weapon_ak47", "weapon_awp" } new const g_weaponsnames[][] = { "", // NULL "p228", "shield", "scout", "hegrenade", "xm1014", "c4", "mac10", "aug", "smokegrenade", "elite", "fiveseven", "ump45", "sg550", "galil", "famas", "usp", "glock18", "awp", "mp5navy", "m249", "m3", "m4a1", "tmp", "g3sg1", "flashbang", "deagle", "sg552", "ak47", "knife", "p90", "glock", "elites", "fn57", "mp5", "vest", "vesthelm", "flash", "hegren", "sgren", "defuser", "nvgs", "primammo", "secammo", "km45", "9x19mm", "nighthawk", "228compact", "12gauge", "autoshotgun", "mp", "c90", "cv47", "defender", "clarion", "krieg552", "bullpup", "magnum", "d3au1", "krieg550" } new const g_block_commands[][]= { "buy", "buyammo1", "buyammo2", "buyequip", "cl_autobuy", "cl_rebuy", "cl_setautobuy", "cl_setrebuy" } #if defined USE_SQL enum { TOP_NULL, PRO_TOP, NUB_TOP, LAST_PRO10, PRO_RECORDS, PLAYERS_RANKING, MAPS_STATISTIC } #endif // ================================================================================================= public plugin_init() { register_plugin("ProKreedz", VERSION, "nucLeaR & p4ddY") kz_checkpoints = register_cvar("kz_checkpoints","1") kz_cheatdetect = register_cvar("kz_cheatdetect","1") kz_spawn_mainmenu = register_cvar("kz_spawn_mainmenu", "1") kz_show_timer = register_cvar("kz_show_timer", "1") kz_chatorhud = register_cvar("kz_chatorhud", "2") kz_chat_prefix = register_cvar("kz_chat_prefix", "[KZ]") kz_hud_color = register_cvar("kz_hud_color", "12 122 221") kz_other_weapons = register_cvar("kz_other_weapons","1") kz_drop_weapons = register_cvar("kz_drop_weapons", "0") kz_remove_drops = register_cvar("kz_remove_drops", "1") kz_pick_weapons = register_cvar("kz_pick_weapons", "0") kz_reload_weapons = register_cvar("kz_reload_weapons", "0") kz_maxspeedmsg = register_cvar("kz_maxspeedmsg","1") kz_hook_prize = register_cvar("kz_hook_prize","1") kz_hook_sound = register_cvar("kz_hook_sound","1") kz_hook_speed = register_cvar("kz_hook_speed", "300.0") kz_use_radio = register_cvar("kz_use_radio", "0") kz_pause = register_cvar("kz_pause", "1") kz_noclip_pause = register_cvar("kz_noclip_pause", "1") kz_nvg = register_cvar("kz_nvg","1") kz_nvg_colors = register_cvar("kz_nvg_colors","5 0 255") kz_vip = register_cvar("kz_vip","1") kz_respawn_ct = register_cvar("kz_respawn_ct", "1") kz_semiclip = register_cvar("kz_semiclip", "1") kz_semiclip_transparency = register_cvar ("kz_semiclip_transparency", "85") kz_spec_saves = register_cvar("kz_spec_saves", "1") kz_save_autostart = register_cvar("kz_save_autostart", "1") kz_top15_authid = register_cvar("kz_top15_authid", "1") kz_save_pos = register_cvar("kz_save_pos", "1") kz_save_pos_gochecks = register_cvar("kz_save_pos_gochecks", "1") #if defined USE_SQL kz_sql_host = register_cvar("kz_sql_host", "") // Host of DB kz_sql_user = register_cvar("kz_sql_user", "") // Username of DB kz_sql_pass = register_cvar("kz_sql_pass", "", FCVAR_PROTECTED) // Password for DB user kz_sql_db = register_cvar("kz_sql_db", "") // DB Name for the top 15 kz_sql_name = register_cvar("kz_sql_server", "") // Name of server kz_sql_files = register_cvar("kz_sql_files", "") // Path of the PHP files #endif register_clcmd("/cp","CheckPoint") register_clcmd("drop", "BlockDrop") register_clcmd("/gc", "GoCheck") register_clcmd("+hook","hook_on",KZ_LEVEL) register_clcmd("-hook","hook_off",KZ_LEVEL) register_concmd("kz_hook","give_hook", KZ_LEVEL, " ") register_concmd("nightvision","ToggleNVG") register_clcmd("radio1", "BlockRadio") register_clcmd("radio2", "BlockRadio") register_clcmd("radio3", "BlockRadio") register_clcmd("/tp","GoCheck") kz_register_saycmd("cp","CheckPoint",0) kz_register_saycmd("chatorhud", "ChatHud", 0) kz_register_saycmd("ct","ct",0) kz_register_saycmd("gc", "GoCheck",0) kz_register_saycmd("gocheck", "GoCheck",0) kz_register_saycmd("god", "GodMode",0) kz_register_saycmd("godmode", "GodMode", 0) kz_register_saycmd("invis", "InvisMenu", 0) kz_register_saycmd("kz", "kz_menu", 0) kz_register_saycmd("menu","kz_menu", 0) kz_register_saycmd("nc", "noclip", 0) kz_register_saycmd("noclip", "noclip", 0) kz_register_saycmd("noob10", "NoobTop_show", 0) kz_register_saycmd("noob15", "NoobTop_show", 0) kz_register_saycmd("nub10", "NoobTop_show", 0) kz_register_saycmd("nub15", "NoobTop_show", 0) kz_register_saycmd("pause", "Pause", 0) kz_register_saycmd("pinvis", "cmdInvisible", 0) kz_register_saycmd("pro10", "ProTop_show", 0) kz_register_saycmd("pro15", "ProTop_show", 0) kz_register_saycmd("reset", "reset_checkpoints", 0) kz_register_saycmd("respawn", "goStart", 0) kz_register_saycmd("savepos", "SavePos", 0) kz_register_saycmd("scout", "cmdScout", 0) kz_register_saycmd("setstart", "setStart", KZ_LEVEL) kz_register_saycmd("showtimer", "ShowTimer_Menu", 0) kz_register_saycmd("spec", "ct", 0) kz_register_saycmd("start", "goStart", 0) kz_register_saycmd("stuck", "Stuck", 0) kz_register_saycmd("teleport", "GoCheck", 0) kz_register_saycmd("timer", "ShowTimer_Menu", 0) kz_register_saycmd("top15", "top15menu",0) kz_register_saycmd("top10", "top15menu",0) kz_register_saycmd("tp", "GoCheck",0) kz_register_saycmd("usp", "cmdUsp", 0) kz_register_saycmd("weapons", "weapons", 0) kz_register_saycmd("guns", "weapons", 0) kz_register_saycmd("winvis", "cmdWaterInvisible", 0) #if defined USE_SQL kz_register_saycmd("prorecords", "ProRecs_show", 0) kz_register_saycmd("prorecs", "ProRecs_show", 0) #endif register_event("CurWeapon", "curweapon", "be", "1=1") register_event( "StatusValue", "EventStatusValue", "b", "1>0", "2>0" ); register_forward(FM_AddToFullPack, "FM_client_AddToFullPack_Post", 1) RegisterHam( Ham_Player_PreThink, "player", "Ham_CBasePlayer_PreThink_Post", 1) RegisterHam( Ham_Use, "func_button", "fwdUse", 0) RegisterHam( Ham_Killed, "player", "Ham_CBasePlayer_Killed_Post", 1) RegisterHam( Ham_Touch, "weaponbox", "FwdSpawnWeaponbox" ) RegisterHam( Ham_Spawn, "player", "FwdHamPlayerSpawn", 1 ) RegisterHam( Ham_Touch, "weaponbox", "GroundWeapon_Touch") register_message( get_user_msgid( "ScoreAttrib" ), "MessageScoreAttrib" ) register_dictionary("prokreedz.txt") get_pcvar_string(kz_chat_prefix, prefix, 31) get_mapname(MapName, 63) set_msg_block(get_user_msgid("ClCorpse"), BLOCK_SET) set_task(0.5,"timer_task",2000,"",0,"ab") #if defined USE_SQL set_task(0.2, "plugin_sql") #endif new kreedz_cfg[128], ConfigDir[64] get_configsdir( ConfigDir, 64) formatex(Kzdir,128, "%s/kz", ConfigDir) if( !dir_exists(Kzdir) ) mkdir(Kzdir) #if !defined USE_SQL formatex(Topdir,128, "%s/top15", Kzdir) if( !dir_exists(Topdir) ) mkdir(Topdir) #endif formatex(SavePosDir, 128, "%s/savepos", Kzdir) if( !dir_exists(SavePosDir) ) mkdir(SavePosDir) formatex(kreedz_cfg,128,"%s/kreedz.cfg", Kzdir) if( file_exists( kreedz_cfg ) ) { server_exec() server_cmd("exec %s",kreedz_cfg) } for(new i = 0; i < sizeof(g_block_commands) ; i++) register_clcmd(g_block_commands[i], "BlockBuy") g_tStarts = TrieCreate( ) g_tStops = TrieCreate( ) new const szStarts[ ][ ] = { "counter_start", "clockstartbutton", "firsttimerelay", "but_start", "counter_start_button", "multi_start", "timer_startbutton", "start_timer_emi", "gogogo" } new const szStops[ ][ ] = { "counter_off", "clockstopbutton", "clockstop", "but_stop", "counter_stop_button", "multi_stop", "stop_counter", "m_counter_end_emi" } for( new i = 0; i < sizeof szStarts; i++ ) TrieSetCell( g_tStarts, szStarts[ i ], 1 ) for( new i = 0; i < sizeof szStops; i++ ) TrieSetCell( g_tStops, szStops[ i ], 1 ) } #if defined USE_SQL public plugin_sql() { new host[64], user[64], pass[64], db[64] get_pcvar_string(kz_sql_host, host, 63) get_pcvar_string(kz_sql_user, user, 63) get_pcvar_string(kz_sql_pass, pass, 63) get_pcvar_string(kz_sql_db, db, 63) g_SqlTuple = SQL_MakeDbTuple(host, user, pass, db) new ErrorCode SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511) if(!SqlConnection) { server_print("[KZ] TOP15 SQL: Could not connect to SQL database.!") log_amx("[KZ] TOP15 SQL: Could not connect to SQL database.") return pause("a") } new createinto[1001] formatex(createinto, 1000, "CREATE TABLE IF NOT EXISTS `kz_pro15` (`mapname` varchar(64) NOT NULL, `authid` varchar(64) NOT NULL, `country` varchar(6) NOT NULL, `name` varchar(64) NOT NULL, `time` decimal(65,2) NOT NULL, `date` datetime NOT NULL, `weapon` varchar(64) NOT NULL, `server` varchar(64) NOT NULL)") SQL_ThreadQuery(g_SqlTuple,"QueryHandle", createinto) formatex(createinto, 1000, "CREATE TABLE IF NOT EXISTS `kz_nub15` (`mapname` varchar(64) NOT NULL, `authid` varchar(64) NOT NULL, `country` varchar(6) NOT NULL, `name` varchar(64) NOT NULL, `time`decimal(65,2) NOT NULL, `date` datetime NOT NULL, `weapon` varchar(64) NOT NULL, `server` varchar(64) NOT NULL, `checkpoints` real NOT NULL, `gocheck` real NOT NULL)") SQL_ThreadQuery(g_SqlTuple,"QueryHandle", createinto) return PLUGIN_CONTINUE } public QueryHandle(iFailState, Handle:hQuery, szError[], iErrnum, cData[], iSize, Float:fQueueTime) { if( iFailState != TQUERY_SUCCESS ) { log_amx("[KZ] TOP15 SQL: SQL Error #%d - %s", iErrnum, szError) ColorChat(0, GREEN, "[KZ]^x01: Warning the SQL Tops can not be saved.") } server_print("[KZ] Server Sending Info to SQL Server") return PLUGIN_CONTINUE } #endif public plugin_precache() { hud_message = CreateHudSyncObj() RegisterHam( Ham_Spawn, "func_door", "FwdHamDoorSpawn", 1 ) precache_sound("weapons/xbow_hit2.wav") Sbeam = precache_model("sprites/laserbeam.spr") } public plugin_cfg() { #if !defined USE_SQL for (new i = 0 ; i < 15; ++i) { Pro_Times[i] = 999999999.00000; Noob_Tiempos[i] = 999999999.00000; } read_pro15() read_Noob15() #endif new startcheck[100], data[256], map[64], x[13], y[13], z[13]; formatex(startcheck, 99, "%s/%s", Kzdir, KZ_STARTFILE) new f = fopen(startcheck, "rt" ) while( !feof( f ) ) { fgets( f, data, sizeof data - 1 ) parse( data, map, 63, x, 12, y, 12, z, 12) if( equali( map, MapName ) ) { DefaultStartPos[0] = str_to_float(x) DefaultStartPos[1] = str_to_float(y) DefaultStartPos[2] = str_to_float(z) DefaultStart = true break; } } fclose(f) new ent = -1; while( ( ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "func_water") ) != 0 ) { if( !gWaterFound ) { gWaterFound = true; } gWaterEntity[ent] = true; } ent = -1; while( ( ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "func_illusionary") ) != 0 ) { if( pev( ent, pev_skin ) == CONTENTS_WATER ) { if( !gWaterFound ) { gWaterFound = true; } gWaterEntity[ent] = true; } } ent = -1; while( ( ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "func_conveyor") ) != 0 ) { if( pev( ent, pev_spawnflags ) == 3 ) { if( !gWaterFound ) { gWaterFound = true; } gWaterEntity[ent] = true; } } } public client_command(id) { new sArg[13]; if( read_argv(0, sArg, 12) > 11 ) { return PLUGIN_CONTINUE; } for( new i = 0; i < sizeof(g_weaponsnames); i++ ) { if( equali(g_weaponsnames[i], sArg, 0) ) { return PLUGIN_HANDLED; } } return PLUGIN_CONTINUE; } // ================================================================================================= // Global Functions // ================================================================================================= public Pause(id) { if (get_pcvar_num(kz_pause) == 0) { kz_chat(id, "%L", id, "KZ_PAUSE_DISABLED") return PLUGIN_HANDLED } if(! is_user_alive(id) ) { kz_chat(id, "%L", id, "KZ_NOT_ALIVE") return PLUGIN_HANDLED } if(!IsPaused[id]) { if(! timer_started[id]) { kz_chat(id, "%L", id, "KZ_TIMER_NOT_STARTED") return PLUGIN_HANDLED } g_pausetime[id] = get_gametime() - timer_time[id] timer_time[id] = 0.0 IsPaused[id] = true kz_chat(id, "%L", id, "KZ_PAUSE_ON") set_pev(id, pev_flags, pev(id, pev_flags) | FL_FROZEN) pev(id, pev_origin, PauseOrigin[id]) } else { if(timer_started[id]) { kz_chat(id, "%L", id, "KZ_PAUSE_OFF") if(get_user_noclip(id)) noclip(id) timer_time[id] = get_gametime() - g_pausetime[id] } IsPaused[id] = false set_pev(id, pev_flags, pev(id, pev_flags) & ~FL_FROZEN) } return PLUGIN_HANDLED } public timer_task() { if ( get_pcvar_num(kz_show_timer) > 0 ) { new Alive[32], Dead[32], alivePlayers, deadPlayers; get_players(Alive, alivePlayers, "ach") get_players(Dead, deadPlayers, "bch") for(new i=0;i 0) { canusehook[pid] = mode if(mode) { ColorChat(pid, GREEN, "%s^x01 %L.", prefix, pid, "KZ_HOOK") } } } return PLUGIN_HANDLED } public hook_on(id) { if( !canusehook[id] && !( get_user_flags( id ) & KZ_LEVEL ) || !is_user_alive(id) ) return PLUGIN_HANDLED if (IsPaused[id]) { kz_chat(id, "%L", id, "KZ_HOOK_PAUSE") return PLUGIN_HANDLED } detect_cheat(id,"Hook") get_user_origin(id,hookorigin[id],3) ishooked[id] = true antihookcheat[id] = get_gametime() if (get_pcvar_num(kz_hook_sound) == 1) emit_sound(id,CHAN_STATIC,"weapons/xbow_hit2.wav",1.0,ATTN_NORM,0,PITCH_NORM) set_task(0.1,"hook_task",id,"",0,"ab") hook_task(id) return PLUGIN_HANDLED } public hook_off(id) { remove_hook(id) return PLUGIN_HANDLED } public hook_task(id) { if(!is_user_connected(id) || !is_user_alive(id)) remove_hook(id) remove_beam(id) draw_hook(id) new origin[3], Float:velocity[3] get_user_origin(id,origin) new distance = get_distance(hookorigin[id],origin) velocity[0] = (hookorigin[id][0] - origin[0]) * (2.0 * get_pcvar_num(kz_hook_speed) / distance) velocity[1] = (hookorigin[id][1] - origin[1]) * (2.0 * get_pcvar_num(kz_hook_speed) / distance) velocity[2] = (hookorigin[id][2] - origin[2]) * (2.0 * get_pcvar_num(kz_hook_speed) / distance) set_pev(id,pev_velocity,velocity) } public draw_hook(id) { message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(1) // TE_BEAMENTPOINT write_short(id) // entid write_coord(hookorigin[id][0]) // origin write_coord(hookorigin[id][1]) // origin write_coord(hookorigin[id][2]) // origin write_short(Sbeam) // sprite index write_byte(0) // start frame write_byte(0) // framerate write_byte(random_num(1,100)) // life write_byte(random_num(1,20)) // width write_byte(random_num(1,0)) // noise write_byte(random_num(1,255)) // r write_byte(random_num(1,255)) // g write_byte(random_num(1,255)) // b write_byte(random_num(1,500)) // brightness write_byte(random_num(1,200)) // speed message_end() } public remove_hook(id) { if(task_exists(id)) remove_task(id) remove_beam(id) ishooked[id] = false } public remove_beam(id) { message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(99) // TE_KILLBEAM write_short(id) message_end() } //============================ VIP In ScoreBoard ================================================= public MessageScoreAttrib( iMsgID, iDest, iReceiver ) { if( get_pcvar_num(kz_vip) ) { new iPlayer = get_msg_arg_int( 1 ) if( is_user_alive( iPlayer ) && ( get_user_flags( iPlayer ) & KZ_LEVEL ) ) { set_msg_arg_int( 2, ARG_BYTE, SCOREATTRIB_VIP ); } } } public EventStatusValue( const id ) { new szMessage[ 34 ], Target, aux get_user_aiming(id, Target, aux) if (is_user_alive(Target)) { formatex( szMessage, 33, "1 %s: %%p2", get_user_flags( Target ) & KZ_LEVEL ? "VIP" : "Player" ) message_begin( MSG, get_user_msgid( "StatusText" ) , _, id ) write_byte( 0 ) write_string( szMessage ) message_end( ) } } public detect_cheat(id,reason[]) { if(timer_started[id] && get_pcvar_num(kz_cheatdetect) == 1) { timer_started[id] = false if(IsPaused[id]) { set_pev(id, pev_flags, pev(id, pev_flags) & ~FL_FROZEN) IsPaused[id] = false } if (get_pcvar_num(kz_show_timer) > 0 && ShowTime[id] == 2) kz_showtime_roundtime(id, 0) ColorChat(id, GREEN, "%s^x01 %L", prefix, id, "KZ_CHEAT_DETECT", reason) } } // ================================================================================================= // Cmds // ================================================================================================= public CheckPoint(id) { if( !is_user_alive( id ) ) { kz_chat(id, "%L", id, "KZ_NOT_ALIVE") return PLUGIN_HANDLED } if(get_pcvar_num(kz_checkpoints) == 0) { kz_chat(id, "%L", id, "KZ_CHECKPOINT_OFF") return PLUGIN_HANDLED } if( !( pev( id, pev_flags ) & FL_ONGROUND2 ) && !IsOnLadder(id)) { kz_chat(id, "%L", id, "KZ_CHECKPOINT_AIR") return PLUGIN_HANDLED } if( IsPaused[id] ) { kz_chat(id, "%L", id, "KZ_CHECKPOINT_PAUSE") return PLUGIN_HANDLED } pev(id, pev_origin, Checkpoints[id][g_bCpAlternate[id] ? 1 : 0]) g_bCpAlternate[id] = !g_bCpAlternate[id] checknumbers[id]++ kz_chat(id, "%L", id, "KZ_CHECKPOINT", checknumbers[id]) return PLUGIN_HANDLED } public GoCheck(id) { if( !is_user_alive( id ) ) { kz_chat(id, "%L", id, "KZ_NOT_ALIVE") return PLUGIN_HANDLED } if( checknumbers[id] == 0 ) { kz_chat(id, "%L", id, "KZ_NOT_ENOUGH_CHECKPOINTS") return PLUGIN_HANDLED } if( IsPaused[id] ) { kz_chat(id, "%L", id, "KZ_TELEPORT_PAUSE") return PLUGIN_HANDLED } set_pev( id, pev_velocity, Float:{0.0, 0.0, 0.0} ); set_pev( id, pev_view_ofs, Float:{ 0.0, 0.0, 12.0 } ); set_pev( id, pev_flags, pev(id, pev_flags) | FL_DUCKING ); set_pev( id, pev_fuser2, 0.0 ); engfunc( EngFunc_SetSize, id, {-16.0, -16.0, -18.0 }, { 16.0, 16.0, 32.0 } ); set_pev(id, pev_origin, Checkpoints[ id ][ !g_bCpAlternate[id] ] ) gochecknumbers[id]++ kz_chat(id, "%L", id, "KZ_GOCHECK", gochecknumbers[id]) return PLUGIN_HANDLED } public Stuck(id) { if( !is_user_alive( id ) ) { kz_chat(id, "%L", id, "KZ_NOT_ALIVE") return PLUGIN_HANDLED } if( checknumbers[id] < 2 ) { kz_chat(id, "%L", id, "KZ_NOT_ENOUGH_CHECKPOINTS") return PLUGIN_HANDLED } set_pev( id, pev_velocity, Float:{0.0, 0.0, 0.0} ) set_pev( id, pev_view_ofs, Float:{ 0.0, 0.0, 12.0 }) set_pev( id, pev_flags, pev(id, pev_flags) | FL_DUCKING ) set_pev( id, pev_fuser2, 0.0 ) engfunc( EngFunc_SetSize, id, {-16.0, -16.0, -18.0 }, { 16.0, 16.0, 32.0 } ) set_pev(id, pev_origin, Checkpoints[id][g_bCpAlternate[id]] ) g_bCpAlternate[id] = !g_bCpAlternate[id]; gochecknumbers[id]++ kz_chat(id, "%L", id, "KZ_GOCHECK", gochecknumbers[id]) return PLUGIN_HANDLED; } // ================================================================================================= public reset_checkpoints(id) { checknumbers[id] = 0 gochecknumbers[id] = 0 timer_started[id] = false timer_time[id] = 0.0 user_has_scout[id] = false if(IsPaused[id]) { set_pev(id, pev_flags, pev(id, pev_flags) & ~FL_FROZEN) IsPaused[id] = false } if (get_pcvar_num(kz_show_timer) > 0 && ShowTime[id] == 2) kz_showtime_roundtime(id, 0) return PLUGIN_HANDLED } //===== Invis ======= public cmdInvisible(id) { gViewInvisible[id] = !gViewInvisible[id] if(gViewInvisible[id]) kz_chat(id, "%L", id, "KZ_INVISIBLE_PLAYERS_ON") else kz_chat(id, "%L", id, "KZ_INVISIBLE_PLAYERS_OFF") return PLUGIN_HANDLED } public cmdWaterInvisible(id) { if( !gWaterFound ) { kz_chat(id, "%L", id, "KZ_INVISIBLE_NOWATER") return PLUGIN_HANDLED } gWaterInvisible[id] = !gWaterInvisible[id] if(gWaterInvisible[id]) kz_chat(id, "%L", id, "KZ_INVISIBLE_WATER_ON") else kz_chat(id, "%L", id, "KZ_INVISIBLE_WATER_OFF") return PLUGIN_HANDLED } //======================Semiclip / Invis========================== public FM_client_AddToFullPack_Post(es, e, ent, host, hostflags, player, pSet) { if( player ) { if (get_pcvar_num(kz_semiclip) == 1) { if ( host != ent && get_orig_retval() && is_user_alive(host) ) { set_es(es, ES_Solid, SOLID_NOT) set_es(es, ES_RenderMode, kRenderTransAlpha) set_es(es, ES_RenderAmt, get_pcvar_num(kz_semiclip_transparency)) } } if(gMarkedInvisible[ent] && gViewInvisible[host]) { set_es(es, ES_RenderMode, kRenderTransTexture) set_es(es, ES_RenderAmt, 0) set_es(es, ES_Origin, { 999999999.0, 999999999.0, 999999999.0 } ) } } else if( gWaterInvisible[host] && gWaterEntity[ent] ) { set_es(es, ES_Effects, get_es( es, ES_Effects ) | EF_NODRAW ) } return FMRES_IGNORED } public Ham_CBasePlayer_PreThink_Post(id) { if( !is_user_alive(id) ) { return } RefreshPlayersList() if (get_pcvar_num(kz_semiclip) == 1) { for(new i = 0; i 18) return 0; else { formatex(createinto, 1000, "UPDATE `kz_pro15` SET name='%s' WHERE authid='%s'", name, authid) SQL_ThreadQuery(g_SqlTuple, "QueryHandle", createinto) formatex(createinto, 1000, "UPDATE `kz_nub15` SET name='%s' WHERE authid='%s'", name, authid) SQL_ThreadQuery(g_SqlTuple, "QueryHandle", createinto) } return 1 } #endif public FwdSpawnWeaponbox( iEntity ) { if(get_pcvar_num(kz_remove_drops) == 1) { set_pev( iEntity, pev_flags, FL_KILLME ) dllfunc( DLLFunc_Think, iEntity ) } return HAM_IGNORED } public FwdHamDoorSpawn( iEntity ) { static const szNull[ ] = "common/null.wav"; new Float:flDamage; pev( iEntity, pev_dmg, flDamage ); if( flDamage < -999.0 ) { set_pev( iEntity, pev_noise1, szNull ); set_pev( iEntity, pev_noise2, szNull ); set_pev( iEntity, pev_noise3, szNull ); if( !HealsOnMap ) HealsOnMap = true } } public FwdHamPlayerSpawn( id ) { if( !is_user_alive( id ) ) return; if(firstspawn[id]) { ColorChat(id, GREEN, "%s^x01 Welcome to ^x03nucLeaR's Server ^x01", prefix) ColorChat(id, GREEN, "%s^x01 Visit ^x03www.google.com ^x01", prefix) if(get_pcvar_num(kz_checkpoints) == 0) ColorChat(id, GREEN, "%s^x01 %L", id, "KZ_CHECKPOINT_OFF", prefix) if(Verif(id,1) && get_pcvar_num(kz_save_pos) == 1) savepos_menu(id) else if(get_pcvar_num(kz_spawn_mainmenu) == 1) kz_menu (id) } firstspawn[id] = false if( !user_has_weapon(id,CSW_KNIFE) ) give_item( id,"weapon_knife" ) if( HealsOnMap ) set_user_health(id, 50175) if( IsPaused[id] ) { set_pev(id, pev_flags, pev(id, pev_flags) | FL_FROZEN) set_pev(id, pev_origin, PauseOrigin[id]) } if(get_pcvar_num(kz_use_radio) == 0) { #define XO_PLAYER 5 #define m_iRadiosLeft 192 set_pdata_int(id, m_iRadiosLeft, 0, XO_PLAYER) } } public GroundWeapon_Touch(iWeapon, id) { if( is_user_alive(id) && timer_started[id] && get_pcvar_num(kz_pick_weapons) == 0 ) return HAM_SUPERCEDE return HAM_IGNORED } // ==================================Save positions================================================= public SavePos(id) { new authid[33]; get_user_authid(id, authid, 32) if(get_pcvar_num(kz_save_pos) == 0) { kz_chat(id, "%L", id, "KZ_SAVEPOS_DISABLED") return PLUGIN_HANDLED } if(equal(authid, "VALVE_ID_LAN") || equal(authid, "STEAM_ID_LAN") || strlen(authid) > 18) { ColorChat (id, GREEN, "%s^x01 %L", prefix, id, "KZ_NO_STEAM") return PLUGIN_HANDLED } if( !( pev( id, pev_flags ) & FL_ONGROUND2 ) ) { kz_chat(id, "%L", id, "KZ_NOT_ON_GROUND") return PLUGIN_HANDLED } if(!timer_started[id]) { kz_chat(id, "%L", id, "KZ_TIMER_NOT_STARTED") return PLUGIN_HANDLED } if(Verif(id,1)) { ColorChat(id, GREEN, "%s^x01 %L", prefix, id, "KZ_SAVEPOS_ALREADY") savepos_menu(id) return PLUGIN_HANDLED } if(get_user_noclip(id)) { ColorChat(id, GREEN, "%s^x01 %L", prefix, id, "KZ_SAVEPOS_NOCLIP") return PLUGIN_HANDLED } new Float:origin[3], scout pev(id, pev_origin, origin) new Float:Time,check,gocheck if(IsPaused[id]) { Time = g_pausetime[id] Pause(id) } else Time=get_gametime() - timer_time[id] check=checknumbers[id] gocheck=gochecknumbers[id] ColorChat(id, GREEN, "%s^x01 %L", prefix, id, "KZ_SAVEPOS") if (user_has_scout[id]) scout=1 else scout=0 kz_savepos(id, Time, check, gocheck, origin, scout) reset_checkpoints(id) return PLUGIN_HANDLED } public GoPos(id) { remove_hook(id) set_user_godmode(id, 0) set_user_noclip(id, 0) if(Verif(id,0)) { set_pev(id, pev_velocity, Float:{0.0, 0.0, 0.0}) set_pev(id, pev_flags, pev(id, pev_flags) | FL_DUCKING ) set_pev(id, pev_origin, SavedOrigins[id] ) } checknumbers[id]=SavedChecks[id] gochecknumbers[id]=SavedGoChecks[id]+((get_pcvar_num(kz_save_pos_gochecks)>0) ? 1 : 0) CheckPoint(id) CheckPoint(id) strip_user_weapons(id) give_item(id,"weapon_usp") give_item(id,"weapon_knife") if(SavedScout[id]) { give_item(id, "weapon_scout") user_has_scout[id] = true } timer_time[id]=get_gametime()-SavedTime[id] timer_started[id]=true Pause(id) } public Verif(id, action) { new realfile[128], tempfile[128], authid[32], map[64] new bool:exist = false get_mapname(map, 63) get_user_authid(id, authid, 31) formatex(realfile, 127, "%s/%s.ini", SavePosDir, map) formatex(tempfile, 127, "%s/temp.ini", SavePosDir) if( !file_exists(realfile) ) return 0 new file = fopen(tempfile, "wt") new vault = fopen(realfile, "rt") new data[150], sid[32], time[25], checks[5], gochecks[5], x[25], y[25], z[25], scout[5] while( !feof(vault) ) { fgets(vault, data, 149) parse(data, sid, 31, time, 24, checks, 4, gochecks, 4, x, 24, y, 24, z, 24, scout, 4) if( equal(sid, authid) && !exist) // ma aflu in fisier? { if(action == 1) fputs(file, data) exist= true SavedChecks[id] = str_to_num(checks) SavedGoChecks[id] = str_to_num(gochecks) SavedTime[id] = str_to_float(time) SavedOrigins[id][0]=str_to_num(x) SavedOrigins[id][1]=str_to_num(y) SavedOrigins[id][2]=str_to_num(z) SavedScout[id] = str_to_num(scout) } else { fputs(file, data) } } fclose(file) fclose(vault) delete_file(realfile) if(file_size(tempfile) == 0) delete_file(tempfile) else while( !rename_file(tempfile, realfile, 1) ) {} if(!exist) return 0 return 1 } public kz_savepos (id, Float:time, checkpoints, gochecks, Float:origin[3], scout) { new realfile[128], formatorigin[128], map[64], authid[32] get_mapname(map, 63) get_user_authid(id, authid, 31) formatex(realfile, 127, "%s/%s.ini", SavePosDir, map) formatex(formatorigin, 127, "%s %f %d %d %d %d %d %d", authid, time, checkpoints, gochecks, origin[0], origin[1], origin[2], scout) new vault = fopen(realfile, "rt+") write_file(realfile, formatorigin) // La sfarsit adaug datele mele fclose(vault) } // ================================================================================================= // Events / Forwards // ================================================================================================= //================================================================================================= public client_disconnect(id) { checknumbers[id] = 0 gochecknumbers[id] = 0 antihookcheat[id] = 0.0 chatorhud[id] = -1 timer_started[id] = false ShowTime[id] = get_pcvar_num(kz_show_timer) firstspawn[id] = true NightVisionUse[id] = false IsPaused[id] = false WasPaused[id] = false user_has_scout[id] = false remove_hook(id) } public client_putinserver(id) { checknumbers[id] = 0 gochecknumbers[id] = 0 antihookcheat[id] = 0.0 chatorhud[id] = -1 timer_started[id] = false ShowTime[id] = get_pcvar_num(kz_show_timer) firstspawn[id] = true NightVisionUse[id] = false IsPaused[id] = false WasPaused[id] = false user_has_scout[id] = false remove_hook(id) } // ================================================================================================= // Menu // ================================================================================================= public kz_menu(id) { new title[64]; formatex(title, 63, "\yProKreedz %s Menu\w", VERSION) new menu = menu_create(title, "MenuHandler") new msgcheck[64], msggocheck[64], msgpause[64] formatex(msgcheck, 63, "Checkpoint - \y#%i", checknumbers[id]) formatex(msggocheck, 63, "Gocheck - \y#%i", gochecknumbers[id]) formatex(msgpause, 63, "Pause - %s^n", IsPaused[id] ? "\yON" : "\rOFF" ) menu_additem( menu, msgcheck, "1" ) menu_additem( menu, msggocheck, "2" ) menu_additem( menu, "Top 15^n", "3") menu_additem( menu, "Start", "4") menu_additem( menu, "Timer Menu", "5" ) menu_additem( menu, msgpause, "6" ) menu_additem( menu, "Invisible Menu", "7" ) menu_additem( menu, "Spectator/CT", "8" ) menu_additem( menu, "Reset Time^n", "9") menu_additem( menu, "Exit", "MENU_EXIT" ) menu_setprop(menu, MPROP_PERPAGE, 0) menu_display(id, menu, 0) return PLUGIN_HANDLED } public MenuHandler(id , menu, item) { if( item == MENU_EXIT ) { menu_destroy(menu) return PLUGIN_HANDLED } switch(item) { case 0:{ CheckPoint(id) kz_menu(id) } case 1:{ GoCheck(id) kz_menu(id) } case 2:{ top15menu(id) } case 3:{ goStart(id) kz_menu(id) } case 4:{ ShowTimer_Menu(id) } case 5:{ Pause(id) kz_menu(id) } case 6:{ InvisMenu(id) } case 7:{ ct(id) } case 8:{ reset_checkpoints(id) kz_menu(id) } } return PLUGIN_HANDLED } public InvisMenu(id) { new menu = menu_create("\yInvis Menu\w", "InvisMenuHandler") new msginvis[64], msgwaterinvis[64] formatex(msginvis, 63, "Players - %s", gViewInvisible[id] ? "\yON" : "\rOFF" ) formatex(msgwaterinvis, 63, "Water - %s^n^n", gWaterInvisible[id] ? "\yON" : "\rOFF" ) menu_additem( menu, msginvis, "1" ) menu_additem( menu, msgwaterinvis, "2" ) menu_additem( menu, "Main Menu", "3" ) menu_display(id, menu, 0) return PLUGIN_HANDLED } public InvisMenuHandler (id, menu, item) { if( item == MENU_EXIT ) { menu_destroy(menu) return PLUGIN_HANDLED } switch(item) { case 0: { cmdInvisible(id) InvisMenu(id) } case 1: { cmdWaterInvisible(id) InvisMenu(id) } case 2: { kz_menu(id) } } return PLUGIN_HANDLED } public ShowTimer_Menu(id) { if (get_pcvar_num(kz_show_timer) == 0 ) { kz_chat(id, "%L", id, "KZ_TIMER_DISABLED") return PLUGIN_HANDLED } else { new menu = menu_create("\yTimer Menu\w", "TimerHandler") new roundtimer[64], hudtimer[64], notimer[64]; formatex(roundtimer, 63, "Round Timer %s", ShowTime[id] == 2 ? "\y x" : "" ) formatex(hudtimer, 63, "HUD Timer %s", ShowTime[id] == 1 ? "\y x" : "" ) formatex(notimer, 63, "No Timer %s^n", ShowTime[id] == 0 ? "\y x" : "" ) menu_additem( menu, roundtimer, "1" ) menu_additem( menu, hudtimer, "2" ) menu_additem( menu, notimer, "3" ) menu_additem( menu, "Main Menu", "4" ) menu_display(id, menu, 0) return PLUGIN_HANDLED } return PLUGIN_HANDLED } public TimerHandler (id, menu, item) { if( item == MENU_EXIT ) { menu_destroy(menu) return PLUGIN_HANDLED } switch(item) { case 0: { ShowTime[id]= 2 ShowTimer_Menu(id) } case 1: { ShowTime[id]= 1 ShowTimer_Menu(id) if (timer_started[id]) kz_showtime_roundtime(id, 0) } case 2: { ShowTime[id]= 0 ShowTimer_Menu(id) if (timer_started[id]) kz_showtime_roundtime(id, 0) } case 3: { kz_menu(id) } } return PLUGIN_HANDLED } public savepos_menu(id) { new menu = menu_create("SavePos Menu", "SavePosHandler") menu_additem( menu, "Reload previous run", "1" ) menu_additem( menu, "Start a new run", "2" ) menu_display(id, menu, 0) return PLUGIN_HANDLED } public SavePosHandler(id, menu, item) { switch(item) { case 0: { GoPos(id) } case 1: { Verif(id,0) } } return PLUGIN_HANDLED } public top15menu(id) { new menu = menu_create("\rProKreedz \yTop15 \w", "top15handler") menu_additem(menu, "\wPro 15", "1", 0) menu_additem(menu, "\wNoob 15^n^n", "2", 0) #if defined USE_SQL menu_additem(menu, "Pro Records","3") menu_additem(menu, "Players Rankings^n","4") menu_additem(menu, "Last 10 Pro Entries", "5") menu_additem(menu, "Maps Statistic","6") menu_additem(menu, "Main Menu", "7") #else menu_additem(menu, "\wMain Menu", "3", 0) #endif menu_display(id, menu, 0); return PLUGIN_HANDLED; } public top15handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } #if defined USE_SQL switch(item) { case 0: { ProTop_show(id) } case 1: { NoobTop_show(id) } case 2: { kz_showhtml_motd(id, PRO_RECORDS, "") } case 3: { kz_showhtml_motd(id, PLAYERS_RANKING, "") } case 4: { kz_showhtml_motd(id, LAST_PRO10, "") } case 5: { kz_showhtml_motd(id, MAPS_STATISTIC, "") } case 6: { kz_menu(id) } } #else switch(item) { case 0: { ProTop_show(id) } case 1: { NoobTop_show(id) } case 2: { kz_menu(id) } } #endif return PLUGIN_HANDLED; } // ================================================================================================= // // Timersystem // ================================================================================================= public fwdUse(ent, id) { if( !ent || id > 32 ) { return HAM_IGNORED; } if( !is_user_alive(id) ) { return HAM_IGNORED; } new name[32] get_user_name(id, name, 31) new szTarget[ 32 ]; pev(ent, pev_target, szTarget, 31); if( TrieKeyExists( g_tStarts, szTarget ) ) { if ( get_gametime() - antihookcheat[id] < 3.0 ) { kz_hud_message( id, "%L", id, "KZ_HOOK_PROTECTION" ); return PLUGIN_HANDLED } if(Verif(id,1)) { ColorChat(id, GREEN, "%s^x01 %L", prefix, id, "KZ_SAVEPOS_SAVED") savepos_menu(id) return HAM_IGNORED } if ( reset_checkpoints(id) && !timer_started[id] ) { start_climb(id) new wpn=get_user_weapon(id) for(new i = 0; i < 8; i++) if( user_has_weapon(id, other_weapons[i]) ) { strip_user_weapons(id) give_item(id,"weapon_knife") give_item(id,"weapon_usp") set_pdata_int(id, 382, 24, 5) if(wpn==CSW_SCOUT) { user_has_scout[id]=true give_item(id,"weapon_scout") } else user_has_scout[id]=false } if( get_user_health(id) < 100 ) set_user_health(id, 100) pev(id, pev_origin, SavedStart[id]) if(get_pcvar_num(kz_save_autostart) == 1) AutoStart[id] = true; if( !DefaultStart ) { kz_set_start(MapName, SavedStart[id]) ColorChat(id, GREEN, "%s^x01 %L", prefix, id, "KZ_SET_START") } remove_hook(id) } } if( TrieKeyExists( g_tStops, szTarget ) ) { if( timer_started[id] ) { if(get_user_noclip(id)) return PLUGIN_HANDLED finish_climb(id) if(get_pcvar_num(kz_hook_prize) == 1 && !canusehook[id]) { canusehook[id] = true ColorChat(id, GREEN, "%s^x01 %L.", prefix, id, "KZ_HOOK") } } else kz_hud_message(id, "%L", id, "KZ_TIMER_NOT_STARTED") } return HAM_IGNORED } public start_climb(id) { kz_chat(id, "%L", id, "KZ_START_CLIMB") if (get_pcvar_num(kz_reload_weapons) == 1) { strip_user_weapons(id) give_item(id,"weapon_knife") give_item(id,"weapon_usp") } if (ShowTime[id] == 2) kz_showtime_roundtime(id, 0) set_pev(id, pev_gravity, 1.0); set_pev(id, pev_movetype, MOVETYPE_WALK) set_user_godmode(id, 0) reset_checkpoints(id) IsPaused[id] = false timer_started[id] = true timer_time[id] = get_gametime() } public finish_climb(id) { if (!is_user_alive (id)) { return; } if ( (get_pcvar_num(kz_top15_authid) > 1) || (get_pcvar_num(kz_top15_authid) < 0) ) { ColorChat(id, GREEN, "%s^x01 %L.", prefix, id, "KZ_TOP15_DISABLED") return; } #if defined USE_SQL new Float: time, wpn time = get_gametime() - timer_time[id] show_finish_message(id, time) timer_started[id] = false if (get_pcvar_num(kz_show_timer) > 0 && ShowTime[id] == 2) kz_showtime_roundtime(id, 0) new checkpoints=checknumbers[id] new gocheck=gochecknumbers[id] if(user_has_scout[id]) wpn=CSW_SCOUT else wpn=get_user_weapon( id ) new steam[32], name[32] get_user_name(id, name, 31) get_user_authid(id, steam, 31 ) client_cmd(0, "spk buttons/bell1") new createinto[1001] new cData[192] cData[0] = id formatex(cData[2], charsmax(cData)-2, "^"%f^" ^"%d^" ^"%d^" ^"%d^"", time, wpn, checkpoints ,gocheck) if(equal(steam, "VALVE_ID_LAN") || equal(steam, "STEAM_ID_LAN") || strlen(steam) > 18) { if (gochecknumbers[id] == 0 && !user_has_scout[id] ) { cData[1] = PRO_TOP formatex(createinto, sizeof createinto - 1, "SELECT time FROM `kz_pro15` WHERE mapname='%s' AND name='%s'", MapName, name) SQL_ThreadQuery(g_SqlTuple, "Set_QueryHandler", createinto, cData, strlen(cData[2])+1) } if (gochecknumbers[id] > 0 || user_has_scout[id] ) { cData[1] = NUB_TOP formatex(createinto, sizeof createinto - 1, "SELECT time FROM `kz_nub15` WHERE mapname='%s' AND name='%s'", MapName, name) SQL_ThreadQuery(g_SqlTuple, "Set_QueryHandler", createinto, cData, strlen(cData[2])+1) } } else { if (gochecknumbers[id] == 0 && !user_has_scout[id] ) { cData[1] = PRO_TOP formatex(createinto, sizeof createinto - 1, "SELECT time FROM `kz_pro15` WHERE mapname='%s' AND authid='%s'", MapName, steam) SQL_ThreadQuery(g_SqlTuple, "Set_QueryHandler", createinto, cData, strlen(cData[2])+1) } if (gochecknumbers[id] > 0 || user_has_scout[id] ) { cData[1] = NUB_TOP formatex(createinto, sizeof createinto - 1, "SELECT time FROM `kz_nub15` WHERE mapname='%s' AND authid='%s'", MapName, steam) SQL_ThreadQuery(g_SqlTuple, "Set_QueryHandler", createinto, cData, strlen(cData[2])+1) } } #else new Float: time, authid[32] time = get_gametime() - timer_time[id] get_user_authid(id, authid, 31) show_finish_message(id, time) timer_started[id] = false if (get_pcvar_num(kz_show_timer) > 0 && ShowTime[id] == 2) kz_showtime_roundtime(id, 0) if (gochecknumbers[id] == 0 && !user_has_scout[id] ) ProTop_update(id, time) if (gochecknumbers[id] > 0 || user_has_scout[id] ) NoobTop_update(id, time, checknumbers[id], gochecknumbers[id]) #endif user_has_scout[id] = false } public show_finish_message(id, Float:kreedztime) { new name[32] new imin,isec,ims, wpn if(user_has_scout[id]) wpn=CSW_SCOUT else wpn=get_user_weapon( id ) get_user_name(id, name, 31) imin = floatround(kreedztime / 60.0, floatround_floor) isec = floatround(kreedztime - imin * 60.0,floatround_floor) ims = floatround( ( kreedztime - ( imin * 60.0 + isec ) ) * 100.0, floatround_floor ) ColorChat(0, GREEN, "%s^x01^x03 %s^x01 %L^x04 %02i:%02i.%02i ^x03(^x01 CPs: ^x04%d^x03 | ^x01 TPs: ^x04%d^x03 | ^x01 %L: ^x04%s^x03) ^x01 !", prefix, name, LANG_PLAYER, "KZ_FINISH_MSG", imin, isec, ims, checknumbers[id], gochecknumbers[id], LANG_PLAYER, "KZ_WEAPON", g_weaponsnames[wpn]) } //========================================================== #if defined USE_SQL public Set_QueryHandler(iFailState, Handle:hQuery, szError[], iErrnum, cData[], iSize, Float:fQueueTime) { new id = cData[0] new style = cData[1] if( iFailState != TQUERY_SUCCESS ) { log_amx("[KZ] TOP15 SQL: SQL Error #%d - %s", iErrnum, szError) ColorChat(0, GREEN, "%s^x01 %F", prefix, LANG_PLAYER, "KZ_TOP15_SQL_ERROR") } server_print("[KZ] Server Geting Info of SQL Server") new createinto[1001] new x1[16], x2[4], x3[5], x4[5] parse(cData[2], x1, 15, x2, 3, x3, 4, x4, 4) new dia[64], steam[32], name[32], ip[15], country[3], checkpoints[32], gochecks[32] new Float:newtime = str_to_float(x1) new iMin, iSec, iMs, server[64] get_pcvar_string(kz_sql_name, server, 63) get_time("%Y%m%d%H%M%S", dia, sizeof dia - 1) get_user_authid(id, steam, 31) get_user_name(id, name, sizeof name - 1) get_user_ip (id, ip, sizeof ip - 1, 1) geoip_code2_ex( ip, country) replace_all(name, 31, "\", "") replace_all(name, 31, "`", "") replace_all(name, 31, "'", "") if( SQL_NumResults(hQuery) == 0 ) { formatex(checkpoints, 31, ", '%d'", str_to_num(x3)) formatex(gochecks, 31, ", '%d'", str_to_num(x4)) formatex( createinto, sizeof createinto - 1, "INSERT INTO `%s` VALUES('%s', '%s','%s','%s','%f','%s','%s','%s'%s%s)", style == PRO_TOP ? "kz_pro15" : "kz_nub15", MapName, steam, country, name, newtime, dia, g_weaponsnames[str_to_num(x2)], server, style == PRO_TOP ? "" : checkpoints, style == PRO_TOP ? "" : gochecks) SQL_ThreadQuery(g_SqlTuple, "QueryHandle", createinto) GetNewRank(id, style) } else { new Float:oldtime, Float:thetime SQL_ReadResult(hQuery, 0, oldtime) if(newtime < oldtime) { thetime = oldtime - newtime iMin = floatround(thetime / 60.0, floatround_floor) iSec = floatround(thetime - iMin * 60.0,floatround_floor) iMs = floatround( ( thetime - ( iMin * 60.0 + iSec ) ) * 100.0, floatround_floor ) ColorChat(id, GREEN, "[KZ]^x01 %L^x03 %02i:%02i.%02i^x01 in ^x03%s", id, "KZ_IMPROVE", iMin, iSec, iMs, style == PRO_TOP ? "Pro 15" : "Noob 15") formatex(checkpoints, 31, ", checkpoints='%d'", str_to_num(x3)) formatex(gochecks, 31, ", gocheck='%d'", str_to_num(x4)) if(equal(steam, "VALVE_ID_LAN") || equal(steam, "STEAM_ID_LAN") || strlen(steam) > 18) formatex(createinto, sizeof createinto - 1, "UPDATE `%s` SET time='%f', weapon='%s', date='%s', server='%s'%s%s WHERE name='%s' AND mapname='%s'", style == PRO_TOP ? "kz_pro15" : "kz_nub15", newtime, g_weaponsnames[str_to_num(x2)], dia, server, style == PRO_TOP ? "" : gochecks, style == PRO_TOP ? "" : checkpoints, name, MapName) else formatex(createinto, sizeof createinto - 1, "UPDATE `%s` SET time='%f', weapon='%s', date='%s', server='%s'%s%s WHERE authid='%s' AND mapname='%s'", style == PRO_TOP ? "kz_pro15" : "kz_nub15", newtime, g_weaponsnames[str_to_num(x2)], dia, server, style == PRO_TOP ? "" : gochecks, style == PRO_TOP ? "" : checkpoints, steam, MapName) SQL_ThreadQuery(g_SqlTuple, "QueryHandle", createinto ) GetNewRank(id, style) } else { thetime = newtime - oldtime iMin = floatround(thetime / 60.0, floatround_floor) iSec = floatround(thetime - iMin * 60.0,floatround_floor) iMs = floatround( ( thetime - ( iMin * 60.0 + iSec ) ) * 100.0, floatround_floor ) ColorChat(id, GREEN, "[KZ]^x01 %L^x03 %02i:%02i.%02i ^x01in ^x03%s", id, "KZ_SLOWER", iMin, iSec, iMs, style == PRO_TOP ? "Pro 15" : "Noob 15") } } return PLUGIN_CONTINUE } public GetNewRank_QueryHandler(iFailState, Handle:hQuery, szError[], iErrnum, cData[], iSize, Float:fQueueTime) { new id = cData[0] if( iFailState != TQUERY_SUCCESS ) { return log_amx("TOP15 SQL: SQL Error #%d - %s", iErrnum, szError) } new steam[32], authid[32], namez[32], name[32], i = 0 get_user_authid(id, steam, 31) get_user_name(id, namez, 31) while( SQL_MoreResults(hQuery) ) { i++ if(equal(steam, "VALVE_ID_LAN") || equal(steam, "STEAM_ID_LAN") || strlen(steam) > 18) { SQL_ReadResult(hQuery, 0, name, 31) if( equal(name, namez) ) { ColorChat(0, GREEN, "%s^x03 %s^x01 %L ^x03%d^x01 in^x03 %s^x01",prefix, namez, LANG_PLAYER, "KZ_PLACE", i, cData[1] == PRO_TOP ? "Pro 15" : "Noob 15"); break; } } else { SQL_ReadResult(hQuery, 0, authid, 31) if( equal(authid, steam) ) { ColorChat(0, GREEN, "%s^x03 %s^x01 %L ^x03%d^x01 in^x03 %s^x01",prefix, namez, LANG_PLAYER, "KZ_PLACE", i, cData[1] == PRO_TOP ? "Pro 15" : "Noob 15"); break; } } SQL_NextRow(hQuery) } return PLUGIN_CONTINUE } public ProTop_show(id) { kz_showhtml_motd(id, PRO_TOP, MapName) return PLUGIN_HANDLED } public NoobTop_show(id) { kz_showhtml_motd(id, NUB_TOP, MapName) return PLUGIN_HANDLED } public ProRecs_show(id) { new authid[32] get_user_authid(id, authid, 31) if(equal(authid, "VALVE_ID_LAN") || equal(authid, "STEAM_ID_LAN") || strlen(authid) > 18) { ColorChat (id, GREEN, "%s^x01 %L", prefix, id, "KZ_NO_STEAM") return PLUGIN_HANDLED } kz_showhtml_motd(id, PRO_RECORDS, MapName) return PLUGIN_HANDLED } stock kz_showhtml_motd(id, type, const map[]) { new buffer[1001], namebuffer[64], filepath[96] get_pcvar_string(kz_sql_files, filepath, 95) new authid[32] get_user_authid(id, authid, 31) switch( type ) { case PRO_TOP: { formatex(namebuffer, 63, "Pro 15 of %s", equal(map, "") ? "All Maps" : map) formatex(buffer, 1000, "

LOADING...

", filepath, map) } case NUB_TOP: { formatex(namebuffer, 63, "Noob 15 of %s", equal(map, "") ? "All Maps" : map) formatex(buffer, 1000, "

LOADING...

", filepath, map) } case PRO_RECORDS: { formatex(namebuffer, 63, "ProRecords and Rank") formatex(buffer, 1000, "

LOADING...

", filepath, authid) } case PLAYERS_RANKING: { formatex(namebuffer, 63, "Players Ranking") formatex(buffer, 1000, "

LOADING...

", filepath, authid) } case LAST_PRO10: { formatex(namebuffer, 63, "Last 10 Pro Entries") formatex(buffer, 1000, "

LOADING...

", filepath) } case MAPS_STATISTIC: { formatex(namebuffer, 63, "Maps Statistic") formatex(buffer, 1000, "

LOADING...

", filepath) } } show_motd(id, buffer, namebuffer) } #else public ProTop_update(id, Float:time) { new authid[32], name[32], thetime[32], Float: slower, Float: faster, Float:protiempo get_user_name(id, name, 31); get_user_authid(id, authid, 31); get_time(" %d/%m/%Y ", thetime, 31); new bool:Is_in_pro15 Is_in_pro15 = false for(new i = 0; i < 15; i++) { if( (equali(Pro_Names[i], name) && (get_pcvar_num(kz_top15_authid) == 0)) || (equali(Pro_AuthIDS[i], authid) && (get_pcvar_num(kz_top15_authid) == 1)) ) { Is_in_pro15 = true slower = time - Pro_Times[i] faster = Pro_Times[i] - time protiempo = Pro_Times[i] } } for (new i = 0; i < 15; i++) { if( time < Pro_Times[i]) { new pos = i if ( get_pcvar_num(kz_top15_authid) == 0 ) while( !equal(Pro_Names[pos], name) && pos < 15 ) { pos++; } else if ( get_pcvar_num(kz_top15_authid) == 1) while( !equal(Pro_AuthIDS[pos], authid) && pos < 15 ) { pos++; } for (new j = pos; j > i; j--) { formatex(Pro_AuthIDS[j], 31, Pro_AuthIDS[j-1]); formatex(Pro_Names[j], 31, Pro_Names[j-1]); formatex(Pro_Date[j], 31, Pro_Date[j-1]) Pro_Times[j] = Pro_Times[j-1]; } formatex(Pro_AuthIDS[i], 31, authid); formatex(Pro_Names[i], 31, name); formatex(Pro_Date[i], 31, thetime) Pro_Times[i] = time save_pro15() if( Is_in_pro15 ) { if( time < protiempo ) { new min, Float:sec; min = floatround(faster, floatround_floor)/60; sec = faster - (60*min); ColorChat(id, GREEN, "%s^x01 %L ^x03%02d:%s%.2f^x01", prefix, id, "KZ_IMPROVE", min, sec < 10 ? "0" : "", sec); if( (i + 1) == 1) { client_cmd(0, "spk woop"); ColorChat(0, GREEN, "%s^x01^x03 %s^x01 %L^x03 1^x01 in ^x04Pro 15^x01", prefix, name, LANG_PLAYER, "KZ_PLACE"); } else { client_cmd(0, "spk buttons/bell1"); ColorChat(0, GREEN, "%s^x01^x03 %s^x01 %L^x03 %d^x01 in ^x04Pro 15^x01", prefix, name, LANG_PLAYER, "KZ_PLACE", (i+1)); } } } else { if( (i + 1) == 1) { client_cmd(0, "spk woop"); ColorChat(0, GREEN, "%s^x01^x03 %s^x01 %L^x03 1^x01 in ^x04Pro 15^x01", prefix, name, LANG_PLAYER, "KZ_PLACE"); } else { client_cmd(0, "spk buttons/bell1"); ColorChat(0, GREEN, "%s^x01^x03 %s^x01 %L^x03 %d^x01 in ^x04Pro 15^x01", prefix, name, LANG_PLAYER, "KZ_PLACE", (i+1)); } } return; } if( (equali(Pro_Names[i], name) && (get_pcvar_num(kz_top15_authid) == 0)) || (equali(Pro_AuthIDS[i], authid) && (get_pcvar_num(kz_top15_authid) == 1)) ) { if( time > protiempo ) { new min, Float:sec; min = floatround(slower, floatround_floor)/60; sec = slower - (60*min); ColorChat(id, GREEN, "%s^x01 %L ^x03%02d:%s%.2f^x01", prefix, id, "KZ_SLOWER", min, sec < 10 ? "0" : "", sec); return; } } } } public save_pro15() { new profile[128] formatex(profile, 127, "%s/pro_%s.cfg", Topdir, MapName) if( file_exists(profile) ) { delete_file(profile) } new Data[256]; new f = fopen(profile, "at") for(new i = 0; i < 15; i++) { formatex(Data, 255, "^"%.2f^" ^"%s^" ^"%s^" ^"%s^"^n", Pro_Times[i], Pro_AuthIDS[i], Pro_Names[i], Pro_Date[i]) fputs(f, Data) } fclose(f); } public read_pro15() { new profile[128], prodata[256] formatex(profile, 127, "%s/pro_%s.cfg", Topdir, MapName) new f = fopen(profile, "rt" ) new i = 0 while( !feof(f) && i < 16) { fgets(f, prodata, 255) new totime[25] parse(prodata, totime, 24, Pro_AuthIDS[i], 31, Pro_Names[i], 31, Pro_Date[i], 31) Pro_Times[i] = str_to_float(totime) i++; } fclose(f) } //================================================================================================== public NoobTop_update(id, Float:time, checkpoints, gochecks) { new authid[32], name[32], thetime[32], wpn, Float: slower, Float: faster, Float:noobtiempo get_user_name(id, name, 31); get_user_authid(id, authid, 31); get_time(" %d/%m/%Y ", thetime, 31); new bool:Is_in_noob15 Is_in_noob15 = false if(user_has_scout[id]) wpn=CSW_SCOUT else wpn=get_user_weapon(id) for(new i = 0; i < 15; i++) { if( (equali(Noob_Names[i], name) && (get_pcvar_num(kz_top15_authid) == 0)) || (equali(Noob_AuthIDS[i], authid) && (get_pcvar_num(kz_top15_authid) == 1)) ) { Is_in_noob15 = true slower = time - Noob_Tiempos[i]; faster = Noob_Tiempos[i] - time; noobtiempo = Noob_Tiempos[i] } } for (new i = 0; i < 15; i++) { if( time < Noob_Tiempos[i]) { new pos = i if ( get_pcvar_num(kz_top15_authid) == 0 ) while( !equal(Noob_Names[pos], name) && pos < 15 ) { pos++; } else if ( get_pcvar_num(kz_top15_authid) == 1) while( !equal(Noob_AuthIDS[pos], authid) && pos < 15 ) { pos++; } for (new j = pos; j > i; j--) { formatex(Noob_AuthIDS[j], 31, Noob_AuthIDS[j-1]) formatex(Noob_Names[j], 31, Noob_Names[j-1]) formatex(Noob_Date[j], 31, Noob_Date[j-1]) formatex(Noob_Weapon[j], 31, Noob_Weapon[j-1]) Noob_Tiempos[j] = Noob_Tiempos[j-1] Noob_CheckPoints[j] = Noob_CheckPoints[j-1] Noob_GoChecks[j] = Noob_GoChecks[j-1] } formatex(Noob_AuthIDS[i], 31, authid); formatex(Noob_Names[i], 31, name); formatex(Noob_Date[i], 31, thetime) formatex(Noob_Weapon[i], 31, g_weaponsnames[wpn]) Noob_Tiempos[i] = time Noob_CheckPoints[i] = checkpoints Noob_GoChecks[i] = gochecks save_Noob15() if( Is_in_noob15 ) { if( time < noobtiempo ) { new min, Float:sec; min = floatround(faster, floatround_floor)/60; sec = faster - (60*min); ColorChat(id, GREEN, "%s^x01 %L ^x03%02d:%s%.2f^x01", prefix, id, "KZ_IMPROVE", min, sec < 10 ? "0" : "", sec); if( (i + 1) == 1) { client_cmd(0, "spk woop"); ColorChat(0, GREEN, "%s^x01^x03 %s^x01 %L^x03 1^x01 in ^x04Noob 15^x01", prefix, name, LANG_PLAYER, "KZ_PLACE"); } else { client_cmd(0, "spk buttons/bell1"); ColorChat(0, GREEN, "%s^x01^x03 %s^x01 %L^x03 %d^x01 in ^x04Noob 15^x01", prefix, name, LANG_PLAYER, "KZ_PLACE", (i+1)); } } } else { if( (i + 1) == 1) { client_cmd(0, "spk woop"); ColorChat(0, GREEN, "%s^x01^x03 %s^x01 %L^x03 1^x01 in ^x04Noob 15^x01", prefix, name, LANG_PLAYER, "KZ_PLACE"); } else { client_cmd(0, "spk buttons/bell1"); ColorChat(0, GREEN, "%s^x01^x03 %s^x01 %L^x03 %d^x01 in ^x04Noob 15^x01", prefix, name, LANG_PLAYER, "KZ_PLACE", (i+1)); } } return; } if( (equali(Noob_Names[i], name) && (get_pcvar_num(kz_top15_authid) == 0)) || (equali(Noob_AuthIDS[i], authid) && (get_pcvar_num(kz_top15_authid) == 1)) ) { if( time > noobtiempo ) { new min, Float:sec; min = floatround(slower, floatround_floor)/60; sec = slower - (60*min); ColorChat(id, GREEN, "%s^x01 %L ^x03%02d:%s%.2f^x01", prefix, id, "KZ_SLOWER", min, sec < 10 ? "0" : "", sec); return; } } } } public save_Noob15() { new profile[128] formatex(profile, 127, "%s/Noob_%s.cfg", Topdir, MapName) if( file_exists(profile) ) { delete_file(profile) } new Data[256]; new f = fopen(profile, "at") for(new i = 0; i < 15; i++) { formatex(Data, 255, "^"%.2f^" ^"%s^" ^"%s^" ^"%i^" ^"%i^" ^"%s^" ^"%s^" ^n", Noob_Tiempos[i], Noob_AuthIDS[i], Noob_Names[i], Noob_CheckPoints[i], Noob_GoChecks[i],Noob_Date[i],Noob_Weapon[i]) fputs(f, Data) } fclose(f); } public read_Noob15() { new profile[128], prodata[256] formatex(profile, 127, "%s/Noob_%s.cfg", Topdir, MapName) new f = fopen(profile, "rt" ) new i = 0 while( !feof(f) && i < 16) { fgets(f, prodata, 255) new totime[25], checks[5], gochecks[5] parse(prodata, totime, 24, Noob_AuthIDS[i], 31, Noob_Names[i], 31, checks, 4, gochecks, 4, Noob_Date[i], 31, Noob_Weapon[i], 31) Noob_Tiempos[i] = str_to_float(totime) Noob_CheckPoints[i] = str_to_num(checks) Noob_GoChecks[i] = str_to_num(gochecks) i++; } fclose(f) } public ProTop_show(id) { new buffer[2048], len, name[32] len = formatex(buffer, 2047, "") len += formatex(buffer[len], 2047-len, "
# Player Time Date ") for (new i = 0; i < 10; i++) { name = Pro_Names[i] if( Pro_Times[i] > 9999999.0 ) { len += formatex(buffer[len], 2047-len, "
%d %s %s %s", ((i%2)==0) ? " bgcolor=#5DA5FF" : " bgcolor=#3399FF", (i+1), "", "", "") } else { new minutos, Float:segundos minutos = floatround(Pro_Times[i], floatround_floor)/60 segundos = Pro_Times[i] - (60*minutos) len += formatex(buffer[len], 2047-len, "
%d %s %02d:%s%.2f %s", ((i%2)==0) ? " bgcolor=#5DA5FF" : " bgcolor=#3399FF", (i+1), Pro_Names[i], minutos, segundos < 10 ? "0" : "", segundos, Pro_Date[i]) } } len += formatex(buffer[len], 2047-len, "
") len += formatex(buffer[len], 2047-len, "

Plugin created by nucLeaR") show_motd(id, buffer, "Pro10 Climbers") return PLUGIN_HANDLED } public NoobTop_show(id) { new buffer[2048], name[32], len len = formatex(buffer, 2047, "") len += formatex(buffer[len], 2047-len, "
# Player Time CPs TPs Date") for (new i = 0; i < 10; i++) { if( Noob_Tiempos[i] > 9999999.0 ) { len += formatex(buffer[len], 2047-len, "
%d %s %s %s %s %s", ((i%2)==0) ? " bgcolor=#5DA5FF" : " bgcolor=#3399FF", (i+1), "", "", "", "", "") } else { name = Noob_Names[i] new minutos, Float:segundos minutos = floatround(Noob_Tiempos[i], floatround_floor)/60 segundos = Noob_Tiempos[i] - (60*minutos) len += formatex(buffer[len], 2047-len, "
%d %s%s %02d:%s%.2f %d %d %s", ((i%2)==0) ? " bgcolor=#5DA5FF" : " bgcolor=#3399FF", (i+1), Noob_Names[i], equal(Noob_Weapon[i],"scout") ? "(scout)" : "", minutos, segundos < 10 ? "0" : "", segundos, Noob_CheckPoints[i], Noob_GoChecks[i], Noob_Date[i], Noob_Weapon[i]) } } len += formatex(buffer[len], 2047-len, "
") len += formatex(buffer[len], 2047-len, "

Plugin created by nucLeaR") show_motd(id, buffer, "Noob10 Climbers") return PLUGIN_HANDLED } #endif // You reached the end of file // The original plugin was made by p4ddY // This plugin was edited by nucLeaR // Version 2.31