Hard problem for resolve
If you are a superior to please to solve
This plug-in uses a period of time future reunion to make an automatic close of server Please the help for understand see is wrong exactly there The plug-in code is as follows /* Share and have fun. if you modify this code, please share with others. thanks. Marshall */ //includes #include <amxmodx> #include <amxmisc> #include <sqlx> #include <fun> #include <cstrike> #define PLUGIN "LANCLUB" #define VERSION "2006.05.22" #define AUTHOR "Marshall" //define some task id #define t_corner_id 1001 #define t_checkreg_id 1101 #define t_checkinfo_id 1201 #define t_bindkey_id 1301 #define t_hook_minute_id 2001 #define t_db_check_id 2002 //declare some variables new g_level_exp[11] = {0,200,1600,5400,12800,25000,43200,68600,1024 00,145800,200000} new g_p_id[33] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0} new g_p_level[33] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0} new g_p_point[33] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0} new g_p_exp[33] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0} new g_menuPosition[33] new g_menuPlayers[33][32] new g_menuPlayersNum[33] new g_coloredMenus //declare global sql handle new Handle:g_DbInfo public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_dictionary("idreg2.txt") //register commands register_clcmd("say","cmd_say",-1," - say something") register_clcmd("reg","cmd_reg",-1," [PASSWORD] register an account.") register_clcmd("login","cmd_login",-1," [ID] [PASSWORD] login an account.") register_clcmd("amx_me", "cmd_mymenu",0," - view my menu" ) register_clcmd("amx_myfriend", "cmd_myfriendmenu",0," - view my friend menu") //here are OP commands register_clcmd("amx_mban", "cmd_banip",ADMIN_BAN," - [IP] ban an IP" ) register_clcmd("amx_munban", "cmd_unbanip",ADMIN_BAN," - [IP] unban an IP" ) register_clcmd("amx_munblock", "cmd_unblockid",ADMIN_BAN," - [ID] unblock menu" ) //register cvars register_cvar("amx_m_point_enable","1") register_cvar("amx_m_allow_reg","1") register_cvar("amx_m_kick_notvip","0") register_cvar("amx_m_default_point","15") register_cvar("amx_m_default_exp","0") register_cvar("amx_m_vipglow","0") register_cvar("amx_m_viphp","0") register_cvar("amx_m_viparmor","0") register_cvar("amx_m_levelhp","2") register_cvar("amx_m_levelap","3") register_cvar("amx_m_notvip_maxmoney","3000") register_cvar("amx_m_exps","1") register_cvar("amx_m_exp_change_map","180") register_cvar("amx_m_exp_change_team","80") register_cvar("amx_m_exp_kick","90") register_cvar("amx_m_exp_slay","60") register_cvar("amx_m_exp_money","30") register_cvar("amx_m_exp_restartround","150") register_cvar("amx_m_exp_givemoney","40") register_cvar("amx_m_exp_giveexp","75") register_cvar("amx_m_exp_givepoint","20") register_cvar("amx_m_level_changemap","5") register_cvar("amx_m_level_kick","4") register_cvar("amx_m_level_slay","4") register_cvar("amx_m_level_changeteam","4") register_cvar("amx_m_level_changemoney","3") register_cvar("amx_m_level_restartround","5") register_cvar("amx_m_level_givemoney","4") register_cvar("amx_m_level_giveexp","4") register_cvar("amx_m_level_givepoint","4") //menus register_menucmd(register_menuid("Choose_an_o ption?"), 1023, "actionmymenu") register_menucmd(register_menuid("Change_map? "), 1023, "actionmapmenu") register_menucmd(register_menuid("KICK_PLAYER ?"), 1023, "actionKickMenu") register_menucmd(register_menuid("Change_team ?"), 1023, "actionTeamMenu") register_menucmd(register_menuid("Kill_a_play er?"), 1023, "actionSlayMenu") register_menucmd(register_menuid("Block_ID?") , 1023, "actionBlockMenu") register_menucmd(register_menuid("Add_Point?" ), 1023, "actionAddPointMenu") register_menucmd(register_menuid("My_friend?" ), 1023, "actionmyfriendmenu") register_menucmd(register_menuid("Give_money? "), 1023, "actionGiveMoneyMenu") register_menucmd(register_menuid("Give_exp?") , 1023, "actionGiveExpMenu") register_menucmd(register_menuid("Give_point? "), 1023, "actionGivePointMenu") //events register_logevent("hook_roundstart",2,"0=Worl d triggered","1=Round_Start") register_event("DeathMsg", "hook_death", "a") register_event("Money","hook_money","b") //set global task, it will reduce the point and increase the experience set_task(60.0,"hook_minute",t_hook_minute_id, "",0,"b",0) //get sql config from file,if don't do this, will return error: no password new configsDir[64] get_configsdir(configsDir, 63) server_cmd("exec %s/sql.cfg", configsDir) server_exec() g_coloredMenus = colored_menus() } //ready to execute sql query public plugin_cfg(){ new c_host[64] new c_user[64] new c_pass[64] new c_db[64] get_cvar_string("amx_sql_host",c_host,63) get_cvar_string("amx_sql_user",c_user,63) get_cvar_string("amx_sql_pass",c_pass,63) get_cvar_string("amx_sql_db",c_db,63) // g_DbInfo = SQL_MakeDbTuple(c_host, c_user, c_pass, c_db) //set task, it will create databases if not exist. set_task(1.0,"db_check",t_db_check_id) } //database create public db_check(){ //create database if not exists new c_lastserver[32] get_cvar_string("hostname",c_lastserver,31) new query[1024] format(query,1023,"CREATE TABLE IF NOT EXISTS `member` (`id` int(11) unsigned NOT NULL auto_increment,`online` tinyint(4) NOT NULL default '0',`exp` int(11) NOT NULL default '0',`block` tinyint(4) NOT NULL default '0',") format(query,1023,"%s `password` text,`name` text character set utf8,`point` int(11) NOT NULL default '0', `lastip` text, `lasttime` text, `lastserver` text character set utf8, ",query) format(query,1023,"%s `md5` tinytext, `level` int(11) default '0', PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`))",query) SQL_ThreadQuery(g_DbInfo, "db_create", query) format(query,1023,"CREATE TABLE IF NOT EXISTS `banip` (`id` int(11) unsigned NOT NULL auto_increment, `ip` tinytext NOT NULL, `time` tinytext NOT NULL, `server` text character set utf8, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`))") SQL_ThreadQuery(g_DbInfo, "db_create", query) //clear online tag, so you should not change the server hostname. format(query,1023,"UPDATE member SET online = '0' WHERE lastserver = '%s'",c_lastserver) SQL_ThreadQuery(g_DbInfo, "db_query", query) } //return the SQL db check result public db_create(failstate, Handle:query, error[], errnum, data[], size){ if (failstate){ if (failstate == TQUERY_CONNECT_FAILED){ server_print("%L",LANG_PLAYER,"SQL_CONNECT_FA ILED") } else if (failstate == TQUERY_QUERY_FAILED) { server_print("%L",LANG_PLAYER,"SQL_QUERY_FAIL ED") } server_print("%L",LANG_PLAYER,"SQL_ERROR_CODE ", errnum, error) } else { //server_print("%L",LANG_PLAYER,"SQL_QUERY_OK") server_print("%L",LANG_PLAYER,"SQL_DB_CHECK_O K") } } //execute a common query, without return public db_query(failstate, Handle:query, error[], errnum, data[], size){ if (failstate){ if (failstate == TQUERY_CONNECT_FAILED){ server_print("%L",LANG_PLAYER,"SQL_CONNECT_FA ILED") } else if (failstate == TQUERY_QUERY_FAILED) { server_print("%L",LANG_PLAYER,"SQL_QUERY_FAIL ED") } server_print("%L",LANG_PLAYER,"SQL_ERROR_CODE ", errnum, error) } else { //server_print("%L",LANG_PLAYER,"SQL_QUERY_OK") } } //when a player request to connect to the server, execute below public client_connect(id){ //mark player as an unreg player g_p_id[id] = -1 //clear player's level, experience, etc. g_p_level[id] = 0 g_p_exp[id] = 0 g_p_point[id] = 0 new p_playerip[16] new q_query[512] new p_id_data[1] get_user_ip(id,p_playerip,15,1) p_id_data[0] = id format(q_query, 511, "SELECT id FROM banip WHERE ip = '%s'",p_playerip) //check if ip was banned. SQL_ThreadQuery(g_DbInfo, "player_ip_checkban", q_query, p_id_data, 1) } //about IP ban //Check the player IP whether it was banned, if yes, kick the player. public player_ip_checkban(failstate, Handle:query, error[], errnum, data[], size){ if (failstate){ if (failstate == TQUERY_CONNECT_FAILED){ server_print("%L",LANG_PLAYER,"SQL_CONNECT_FA ILED") } else if (failstate == TQUERY_QUERY_FAILED) { server_print("%L",LANG_PLAYER,"SQL_QUERY_FAIL ED") } server_print("%L",LANG_PLAYER,"SQL_ERROR_CODE ", errnum, error) } else { new q_rows = SQL_NumResults(query) if(q_rows>0){ //if the player's ip had been banned, kick the player. server_cmd("kick #%d ^"%L^"",get_user_userid(data[0]),data[0],"KICK_BY_BANNED") server_exec() } } } //banip command public cmd_banip(id){ if(!access(id,ADMIN_BAN)){ return PLUGIN_HANDLED } new q_query[512] new a_ip[16] new s_lasttime[32] get_time("%m/%d/%Y - %H:%M:%S",s_lasttime,31) read_argv (1, a_ip,15) format(q_query, 511, "INSERT INTO banip (ip,time) VALUES('%s','%s')",a_ip,s_lasttime) SQL_ThreadQuery(g_DbInfo, "db_query", q_query) client_print(id,print_chat,"%L",id,"MESSAGE_C MD_BAN_IP") return PLUGIN_CONTINUE } //remove ip from banip table public cmd_unbanip(id){ if(!access(id,ADMIN_BAN)){ return PLUGIN_HANDLED } new q_query[512] new a_ip[16] read_argv (1, a_ip,15) format(q_query, 511, "DELETE FROM banip WHERE ip = '%s'",a_ip) SQL_ThreadQuery(g_DbInfo, "db_query", q_query) client_print(id,print_chat,"%L",id,"MESSAGE_C MD_UNBAN_IP") return PLUGIN_CONTINUE } //reg process //reg command public cmd_reg(id){ new c_allowreg = get_cvar_num("amx_m_allow_reg") if (c_allowreg==0){ set_hudmessage(255, 255, 255, -1.0, 0.5, 0, 0.1, 0.1, 0.1, 6.0, 1) show_hudmessage(id, "%L",id,"MESSAGE_NOT_ALLOW_REG") return PLUGIN_HANDLED } if (g_p_id[id]>0){ set_hudmessage(255, 255, 255, -1.0, 0.5, 0, 0.1, 0.1, 0.1, 6.0, 1) show_hudmessage(id, "%L",id,"MESSAGE_ALREADY_LOGIN") return PLUGIN_HANDLED } new a_password[11] new p_lastip[32] new p_lasttime[32] new p_lastserver[32] new md5buffer[34],md5str[96],md5password[34] //make a mark in the database read_argv (1, a_password,10) get_user_ip(id,p_lastip,31,0) get_time("%m/%d/%Y - %H:%M:%S",p_lasttime,31) get_cvar_string("hostname",p_lastserver,31) format(md5str,95,"%s%s%s",p_lastip,p_lasttime ,p_lastserver) md5(md5str,md5buffer) md5(a_password,md5password) //set default value g_p_level[id] = 0 g_p_point[id] = get_cvar_num("amx_m_default_point") g_p_exp[id] = get_cvar_num("amx_m_default_exp") //insert new record new q_query[1024] format(q_query , 1023 ,"INSERT INTO member (password,exp,point,online,lastip,lasttime,la stserver,md5) VALUES('%s','%d','%d','1','%s','%s','%s','%s' )",md5password,g_p_exp[id],g_p_point[id],p_lastip,p_lasttime,p_lastserver,md5buffer) SQL_ThreadQuery(g_DbInfo, "db_query", q_query) //let the player setinfo client_cmd(id, "setinfo mloginpassword %s", a_password) //get id new p_id_data[1] p_id_data[0] = id format(q_query,1023,"SELECT id FROM member WHERE md5 = '%s'",md5buffer) SQL_ThreadQuery(g_DbInfo, "db_reg_getid", q_query,p_id_data,1) return PLUGIN_CONTINUE } //continue reg public db_reg_getid(failstate, Handle:query, error[], errnum, data[], size){ if (failstate){ if (failstate == TQUERY_CONNECT_FAILED){ server_print("%L",LANG_PLAYER,"SQL_CONNECT_FA ILED") } else if (failstate == TQUERY_QUERY_FAILED) { server_print("%L",LANG_PLAYER,"SQL_QUERY_FAIL ED") } server_print("%L",LANG_PLAYER,"SQL_ERROR_CODE ", errnum, error) } else { new id = data[0] g_p_id[id] = SQL_ReadResult(query,0) //let the player setinfo client_cmd(id, "setinfo mloginid %d", g_p_id[id]) //show stat on the left corner if (task_exists(t_corner_id +id)) remove_task(t_corner_id+id) set_task(1.0,"show_corner_stat",t_corner_id+i d,"",0,"b",0) //show stats on the center show_center_stat(id) //bind key cmd_bindkey(id+t_bindkey_id) } } //end reg process //function show player's state in the center show_center_stat(p_id){ new l_message[32] set_hudmessage(0, 255, 0, -1.0, 0.5, 0, 0.1, 0.1, 0.1, 10.0, 1) format(l_message,31,"MESSAGE_STAT_SIMPLE_%d", g_p_level[p_id]) show_hudmessage(p_id,"%L",p_id,l_message,g_p_ id[p_id],g_p_level[p_id],g_p_exp[p_id],g_p_point[p_id]) } //function show the player corner state public show_corner_stat(id){ id = id - t_corner_id new l_message[32] set_hudmessage(255, 255, 255, 0.0, 0.98, 0, 0.1, 1.0, 0.1, 0.1, 2) format(l_message,31,"MESSAGE_STAT_CORNER_%d", g_p_level[id]) show_hudmessage(id, "%L",id,l_message,g_p_id[id],g_p_exp[id],g_level_exp[g_p_level[id]+1],g_p_point[id]) } //function bind key , you can add keys or edit key here public cmd_bindkey(id){ id = id -t_bindkey_id client_cmd (id,"bind F12 amx_me") client_cmd (id,"bind F11 amx_myfriend") } //disconnect process public client_disconnect(id){ //if player has logged in , save the state. if(g_p_id[id]>0){ remove_task(t_corner_id+id) new errnum, error[255] new q_query[1024] format(q_query,1023,"UPDATE member SET online = '0',exp = '%d',point = '%d',level = '%d' WHERE id = '%d'",g_p_exp[id],g_p_point[id],g_p_level[id],g_p_id[id]) //SQL_ThreadQuery(g_DbInfo, "db_query", q_query) new Handle:db = SQL_Connect(g_DbInfo, errnum, error, 254) new Handle:query = SQL_PrepareQuery(db, q_query) SQL_Execute(query) server_print("%L",LANG_PLAYER,"MESSAGE_DISCON NECT_USER",id) SQL_FreeHandle(query) SQL_FreeHandle(db) } //remove the player's check reg task if exist. if (task_exists(t_checkreg_id +id)) remove_task(t_checkreg_id +id) //clear player's state g_p_id[id] = 0 } //client putinserver process public client_putinserver(id){ //set task to check if player is log in set_task(25.0,"t_checkreg",t_checkreg_id + id) //show notice new c_allowmessage = get_cvar_num("amx_m_kick_notvip") new c_allowreg = get_cvar_num("amx_m_allow_reg") if (c_allowmessage!=0 && c_allowreg!=0 ){ set_task(5.0,"show_notice_message",id) } //set task bind key set_task(1.0,"cmd_bindkey",t_bindkey_id + id) //set task check info, if there is not null, automatically log in . set_task(5.0,"p_checkinfo",t_checkinfo_id + id) } //task: check if log in public t_checkreg(id){ id = id - t_checkreg_id if (g_p_id[id]>0) { return PLUGIN_HANDLED } new c_kicknovip = get_cvar_num("amx_m_kick_notvip") if(c_kicknovip!=0){ server_cmd("kick #%d %L",get_user_userid(id),id,"KICK_BY_NOVIP") } return PLUGIN_CONTINUE } //function show notice public show_notice_message(id){ set_hudmessage(0, 255, 0, 0.04, -1.0, 0, 0.1, 0.1, 0.1, 8.0, 3) show_hudmessage(id,"%L",id,"MESSAGE_NOTICE") } //about login process //login command public cmd_login(id){ //check if logged in if (g_p_id[id]>0){ set_hudmessage(0, 255, 0, -1.0, 0.5, 0, 0.1, 0.1, 0.1, 6.0, 1) show_hudmessage(id, "%L",id,"MESSAGE_ALREADY_LOGIN") return PLUGIN_HANDLED } //get id and password new i_id[7] new p_id_data[12] new q_query[1024] read_argv ( 1, i_id,6 ) read_argv ( 2, p_id_data,10 ) p_id_data[11]=id format(q_query,1023,"SELECT password,block,online,point,id,exp,level,last ip,lasttime,lastserver FROM member WHERE id = '%s'",i_id) SQL_ThreadQuery(g_DbInfo, "db_login_check", q_query,p_id_data,12) return PLUGIN_CONTINUE } //continue login public db_login_check(failstate, Handle:query, error[], errnum, data[], size){ if (failstate){ if (failstate == TQUERY_CONNECT_FAILED){ server_print("%L",LANG_PLAYER,"SQL_CONNECT_FA ILED") } else if (failstate == TQUERY_QUERY_FAILED) { server_print("%L",LANG_PLAYER,"SQL_QUERY_FAIL ED") } server_print("%L",LANG_PLAYER,"SQL_ERROR_CODE ", errnum, error) } else { new id = data[11] new q_rows = SQL_NumResults(query) //check if registered. if (q_rows == 0){ set_hudmessage(0, 255, 0, -1.0, 0.5, 0, 0.1, 0.1, 0.1, 6.0, 1) show_hudmessage(id, "%L",id,"MESSAGE_IDNOTREG") return PLUGIN_HANDLED } //check if the password match. new p_password[11],q_password[35],md5password[34] SQL_ReadResult(query,0,q_password,34) format(p_password,10,"%s",data) md5(p_password,md5password) if(strcmp(md5password,q_password)!=0){ set_hudmessage(0, 255, 0, -1.0, 0.5, 0, 0.1, 0.1, 0.1, 6.0, 1) show_hudmessage(id, "%L",id,"MESSAGE_PASSWORDNOTMATCH") return PLUGIN_HANDLED } //check if the account is blocked new q_block = SQL_ReadResult(query,1) if(q_block!=0){ set_hudmessage(0, 255, 0, -1.0, 0.5, 0, 0.1, 0.1, 0.1, 6.0, 1) show_hudmessage(id, "%L",id,"MESSAGE_BLOCKED") return PLUGIN_HANDLED } //check if the account is online new q_online = SQL_ReadResult(query,2) if(q_online!=0){ set_hudmessage(0, 255, 0, -1.0, 0.5, 0, 0.1, 0.1, 0.1, 6.0, 1) show_hudmessage(id, "%L",id,"MESSAGE_ONLINE") return PLUGIN_HANDLED } //check if the account still have points new q_point = SQL_ReadResult(query,3) if(q_point<=0){ set_hudmessage(0, 255, 0, -1.0, 0.5, 0, 0.1, 0.1, 0.1, 6.0, 1) show_hudmessage(id, "%L",id,"MESSAGE_NOPOINT") return PLUGIN_HANDLED } //if all above is true, get id,experience, etc. g_p_id[id] = SQL_ReadResult(query,4) g_p_exp[id] = SQL_ReadResult(query,5) g_p_level[id] = SQL_ReadResult(query,6) g_p_point[id] = q_point new p_lasttime[32] new p_lastip[32] new p_lastserver[32] SQL_ReadResult(query,7,p_lastip,31) SQL_ReadResult(query,8,p_lasttime,31) SQL_ReadResult(query,9,p_lastserver,31) //set userinfo, then when he/she join the server next time, he/she will automatically log in. client_cmd(id, "setinfo mloginid %d", g_p_id[id]) client_cmd(id, "setinfo mloginpassword %s", p_password) //show last login time message new l_message[32] set_hudmessage(255, 255, 255, -1.0, 0.5, 0, 0.1, 0.1, 0.1, 8.0, 1) format(l_message,31,"MESSAGE_STAT_%d",g_p_lev el[id]) show_hudmessage(id,"%L",id,l_message,g_p_id[id],g_p_level[id],g_p_exp[id],g_p_point[id],p_lasttime,p_lastip,p_lastserver) //save the login time and server get_user_ip(id,p_lastip,31,0) get_time("%m/%d/%Y - %H:%M:%S",p_lasttime,31) get_cvar_string("hostname",p_lastserver,31) new q_query[1024] format(q_query,1023,"UPDATE member SET online = '1',lastip = '%s',lasttime = '%s',lastserver = '%s' WHERE id = '%d'",p_lastip,p_lasttime,p_lastserver,g_p_id[id]) SQL_ThreadQuery(g_DbInfo, "db_query", q_query) //show stat on the left corner if (task_exists(t_corner_id +id)) remove_task(t_corner_id+id) set_task(1.0,"show_corner_stat",t_corner_id+i d,"",0,"b",0) } return PLUGIN_CONTINUE } //end login process //every minute will execute public hook_minute(){ new q_query[1024] new c_enable_point = get_cvar_num("amx_m_point_enable") new c_exps = get_cvar_num("amx_m_exps") for(new i=1;i<=32;i++){ if (g_p_id[i]>0){ if(c_enable_point!=0) //point - 1 g_p_point[i]=g_p_point[i]-1 //experience + 1 * N g_p_exp[i]=g_p_exp[i]+1*c_exps //calculate the level calclevel(i) //update player's state format(q_query,1023,"UPDATE member SET exp = '%d',point = '%d',level = '%d' WHERE id = '%d'",g_p_exp[i],g_p_point[i],g_p_level[i],g_p_id[i]) SQL_ThreadQuery(g_DbInfo, "db_query", q_query) //if no point left, kick if(g_p_point[i]<=0){ server_cmd("kick #%d %L",get_user_userid(i),i,"MESSAGE_NOPOINT") } } } } //experience calculation public hook_death(){ new p_message[128] new c_exps = get_cvar_num("amx_m_exps") new Killer = read_data(1) new Victim = read_data(2) new headshot = read_data(3) if(g_p_id[Killer]>0){ //experience increase g_p_exp[Killer]=g_p_exp[Killer] + (2 + headshot)*c_exps format(p_message,127,"%L",Killer,"MESSAGE_KIL LER_GOTEXP",(2 + headshot)*c_exps) set_hudmessage(255, 255, 255, 0.01, 0.73, 0,1.0,1.0,0.1,3.0,3) show_hudmessage(Killer,"%L",Killer,"MESSAGE_K ILLER_GOTEXP",(2 + headshot)*c_exps) calclevel(Killer) } if(g_p_id[Victim]>0){ //experience reduce g_p_exp[Victim]=g_p_exp[Victim] - 2*c_exps set_hudmessage(255, 255, 255, 0.01, 0.73, 0,1.0,1.0,0.1,3.0,3) show_hudmessage(Victim,"%L",Victim,"MESSAGE_V ICTIM_GOTEXP") calclevel(Victim) } } //round start process public hook_roundstart(){ for(new i=1;i<=32;i++){ if(g_p_id[i]>0){ //vip hp new c_viphp = get_cvar_num("amx_m_viphp") if(c_viphp!=0){ new c_levelhp = get_cvar_num("amx_m_levelhp") set_user_health(i,100+g_p_level[i]*c_levelhp) } //vip ap new c_viparmor = get_cvar_num("amx_m_viparmor") if(c_viparmor!=0){ new c_levelap = get_cvar_num("amx_m_levelap") new p_tarmor = get_user_armor(i) if (p_tarmor>=100){ p_tarmor=100+g_p_level[i]*c_levelap }else { p_tarmor=p_tarmor+g_p_level[i]*c_levelap } set_user_armor (i,p_tarmor) } //vip glow color new c_vipglow = get_cvar_num("amx_m_vipglow") if(c_vipglow!=0) set_user_rendering(i,kRenderFxGlowShell,150+g _p_level[i]*8,150+g_p_level[i]*8,150+g_p_level[i]*8,kRenderNormal,25) } } } //calculate the level, don't laugh :) calclevel(id){ if(g_p_exp[id]<g_level_exp[0]){ g_p_exp[id]=0 g_p_level[id]=0 return PLUGIN_HANDLED } if(g_p_exp[id]>=g_level_exp[0]&&g_p_exp[id]<g_level_exp[1]){ g_p_level[id]=0 return PLUGIN_HANDLED } if(g_p_exp[id]>=g_level_exp[1]&&g_p_exp[id]<g_level_exp[2]){ g_p_level[id]=1 return PLUGIN_HANDLED } if(g_p_exp[id]>=g_level_exp[2]&&g_p_exp[id]<g_level_exp[3]){ g_p_level[id]=2 return PLUGIN_HANDLED } if(g_p_exp[id]>=g_level_exp[3]&&g_p_exp[id]<g_level_exp[4]){ g_p_level[id]=3 return PLUGIN_HANDLED } if(g_p_exp[id]>=g_level_exp[4]&&g_p_exp[id]<g_level_exp[5]){ g_p_level[id]=4 return PLUGIN_HANDLED } if(g_p_exp[id]>=g_level_exp[5]&&g_p_exp[id]<g_level_exp[6]){ g_p_level[id]=5 return PLUGIN_HANDLED } if(g_p_exp[id]>=g_level_exp[6]&&g_p_exp[id]<g_level_exp[7]){ g_p_level[id]=6 return PLUGIN_HANDLED } if(g_p_exp[id]>=g_level_exp[7]&&g_p_exp[id]<g_level_exp[8]){ g_p_level[id]=7 return PLUGIN_HANDLED } if(g_p_exp[id]>=g_level_exp[8]&&g_p_exp[id]<g_level_exp[9]){ g_p_level[id]=8 return PLUGIN_HANDLED } if(g_p_exp[id]>=g_level_exp[9]&&g_p_exp[id]<g_level_exp[10]){ g_p_level[id]=9 return PLUGIN_HANDLED } if(g_p_exp[id]>=g_level_exp[10]){ g_p_level[id]=10 return PLUGIN_HANDLED } return PLUGIN_CONTINUE } //if money change ,,,, public hook_money(id){ if(g_p_id[id]==-1) { new c_novipmoney = get_cvar_num("amx_m_notvip_maxmoney") new Amount = read_data(1) if(c_novipmoney>0){ if( Amount>c_novipmoney) cs_set_user_money(id,c_novipmoney,0) } } } //get userinfo and automatically login public p_checkinfo(id){ id = id - t_checkinfo_id new mregid[7] ,mregpassword[11] get_user_info(id, "mloginid", mregid, 6) get_user_info(id, "mloginpassword", mregpassword, 10) if(strlen(mregid)>0) client_cmd(id,"login %s %s",mregid,mregpassword) } //function check player's state cmd_checkmypoint(id){ if(g_p_id[id]>0){ show_center_stat(id) } } //about menus //amx_me public cmd_mymenu(id){ if (g_p_id[id]>0){ new menu[512] format(menu, 511, "Choose_an_option?^n") new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|M ENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|ME NU_KEY_8|MENU_KEY_9 new c_level_changemap = get_cvar_num("amx_m_level_changemap") new c_level_changeteam = get_cvar_num("amx_m_level_changeteam") new c_level_kick = get_cvar_num("amx_m_level_kick") new c_level_slay = get_cvar_num("amx_m_level_slay") new c_level_restartround = get_cvar_num("amx_m_level_restartround") new c_level_changemoney = get_cvar_num("amx_m_level_changemoney") if (g_p_level[id]>=c_level_changemap){ format(menu, 511, "%s^n\w1.%L",menu,id,"MENU_CHANGE_MAP") }else{ format(menu, 511, "%s^n\d1.%L",menu,id,"MENU_CHANGE_MAP") } if (g_p_level[id]>=c_level_kick){ format(menu, 511, "%s^n\w2.%L",menu,id,"MENU_KICK_PLAYER") }else{ format(menu, 511, "%s^n\d2.%L",menu,id,"MENU_KICK_PLAYER") } if (g_p_level[id]>=c_level_restartround){ format(menu, 511, "%s^n\w3.%L",menu,id,"MENU_RESTARTROUND") }else{ format(menu, 511, "%s^n\d3.%L",menu,id,"MENU_RESTARTROUND") } if (g_p_level[id]>=c_level_changeteam){ format(menu, 511, "%s^n\w4.%L",menu,id,"MENU_CHANGE_PLAYER_TEAM ") }else{ format(menu, 511, "%s^n\d4.%L",menu,id,"MENU_CHANGE_PLAYER_TEAM ") } if (g_p_level[id]>=c_level_slay){ format(menu, 511, "%s^n\w5.%L",menu,id,"MENU_KILL_PLAYER") }else{ format(menu, 511, "%s^n\d5.%L",menu,id,"MENU_KILL_PLAYER") } if (g_p_level[id]>=c_level_changemoney){ format(menu, 511, "%s^n\w6.%L",menu,id,"MENU_CHANGE_MONEY") }else{ format(menu, 511, "%s^n\d6.%L",menu,id,"MENU_CHANGE_MONEY") } if(access(id,ADMIN_BAN)){ format(menu, 511, "%s^n\w7.%L",menu,id,"MENU_BLOCK_ID") }else{ format(menu, 511, "%s^n\d7.%L",menu,id,"MENU_BLOCK_ID") } if(!access(id,ADMIN_BAN)){ if(g_p_id[id]>0){ format(menu, 511, "%s^n\w8.%L",menu,id,"MENU_MY_STAT") }else{ format(menu, 511, "%s^n\d8.%L",menu,id,"MENU_MY_STAT") } }else{ if(g_p_id[id]>0){ format(menu, 511, "%s^n\w8.%L",menu,id,"MENU_ADD_POINT") }else{ format(menu, 511, "%s^n\d8.%L",menu,id,"MENU_ADD_POINT") } } if (g_p_id[id]>0){ format(menu, 511, "%s^n\w9.%L",menu,id,"MENU_LOGOUT") }else{ format(menu, 511, "%s^n\d9.%L",menu,id,"MENU_LOGOUT") } format(menu, 511, "%s^n\w0.%L",menu,id,"MENU_EXIT") show_menu(id, keys, menu) } } //action mymenu public actionmymenu(id, key){ switch(key) { case 0: { new c_level_changemap = get_cvar_num("amx_m_level_changemap") if (g_p_id[id]>0 && g_p_level[id]>=c_level_changemap){ new menu[192] format(menu, 191, "Change_map?^n^n1.de_dust2^n2.de_inferno^n3.d e_nuke^n4.de_aztec^n5.de_cbble^n6.de_train^n7 .de_dust^n^n^n0.Exit") new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|M ENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|ME NU_KEY_8|MENU_KEY_9 show_menu(id, keys, menu) } } case 1: { new c_level_kick = get_cvar_num("amx_m_level_kick") if (g_p_id[id]>0 && g_p_level[id]>=c_level_kick){ displayKickMenu(id, g_menuPosition[id] = 0) } } case 2: { new c_level_restartround = get_cvar_num("amx_m_level_restartround") if (g_p_id[id]>0 && g_p_level[id]>=c_level_restartround){ server_cmd("sv_restartround 3") server_exec() client_print(id,print_chat,"%L",id,"MESSAGE_R ESTARTROUND_OK") new c_restartround = get_cvar_num ("amx_m_exp_restartround") g_p_exp[id]=g_p_exp[id]-c_restartround calclevel(id) } } case 3: { new c_level_changeteam = get_cvar_num("amx_m_level_changeteam") if (g_p_id[id]>0 && g_p_level[id]>=c_level_changeteam){ displayTeamMenu(id, g_menuPosition[id] = 0) } } case 4: { new c_level_slay = get_cvar_num("amx_m_level_slay") if (g_p_id[id]>0 && g_p_level[id]>=c_level_slay){ displaySlayMenu(id, g_menuPosition[id] = 0) } } case 5: { new c_level_changemoney = get_cvar_num("amx_m_level_changemoney") if (g_p_id[id]>0 && g_p_level[id]>=c_level_changemoney&&cs_get_user_money (id )<15000){ new c_money = get_cvar_num ("amx_m_exp_money") g_p_exp[id] = g_p_exp[id] - c_money calclevel(id) cs_set_user_money(id,cs_get_user_money(id)+10 00,1) client_print(id,print_chat,"%L",id,"MESSAGE_C HANGE_MONEY_OK") cmd_mymenu(id) } } case 6: { if (access(id,ADMIN_BAN)){ displayBlockMenu(id, g_menuPosition[id] = 0) } } case 7: { if(!access(id,ADMIN_BAN)){ if (g_p_id[id]>0){ cmd_checkmypoint(id) } }else{ displayAddPointMenu(id, g_menuPosition[id] = 0) } } case 8: { if (g_p_id[id]>0){ client_cmd(id, "setinfo mloginid ^"^"") client_cmd(id, "setinfo mloginpassword ^"^"") new userid2 = get_user_userid(id) server_cmd("kick #%d %L", userid2,id,"MESSAGE_YOU_HAVE_LOGOUT") server_exec() } } case 9:return PLUGIN_HANDLED } return PLUGIN_HANDLED } //delay change map public delayedChangeMap(mapname[]){ server_cmd("changelevel %s",mapname) //do not add server_exec , it will crash the server. //server_exec() } //change map menu action public actionmapmenu(id,key){ new c_change_map = get_cvar_num ("amx_m_exp_change_map") switch(key) { case 0: { set_task(2.0, "delayedChangeMap", 9977+id, "de_dust2", strlen("de_dust2") + 1) g_p_exp[id]=g_p_exp[id]-c_change_map calclevel(id) } case 1: { set_task(2.0, "delayedChangeMap", 9977+id, "de_inferno", strlen("de_inferno") + 1) g_p_exp[id]=g_p_exp[id]-c_change_map calclevel(id) } case 2: { set_task(2.0, "delayedChangeMap", 9977+id, "de_nuke", strlen("de_nuke") + 1) g_p_exp[id]=g_p_exp[id]-c_change_map calclevel(id) } case 3: { set_task(2.0, "delayedChangeMap", 9977+id, "de_aztec", strlen("de_aztec") + 1) g_p_exp[id]=g_p_exp[id]-c_change_map calclevel(id) } case 4: { set_task(2.0, "delayedChangeMap", 9977+id, "de_cbble", strlen("de_cbble") + 1) g_p_exp[id]=g_p_exp[id]-c_change_map calclevel(id) } case 5: { set_task(2.0, "delayedChangeMap", 9977+id, "de_train", strlen("de_train") + 1) g_p_exp[id]=g_p_exp[id]-c_change_map calclevel(id) } case 6: { set_task(2.0, "delayedChangeMap", 9977+id, "de_dust", strlen("de_dust") + 1) g_p_exp[id]=g_p_exp[id]-c_change_map calclevel(id) } case 9: cmd_mymenu(id) } return PLUGIN_HANDLED } //display kick menu displayKickMenu(id, pos) { if (pos < 0) return get_players(g_menuPlayers[id], g_menuPlayersNum[id]) new menuBody[512] new b = 0 new i new name[32] new start = pos * 8 if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody, 511, g_coloredMenus ? "\y%s\R%d/%d^n\w^n" : "%s %d/%d^n^n","KICK_PLAYER?", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0))) new end = start + 8 new keys = MENU_KEY_0 if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id] for (new a = start; a < end; ++a) { i = g_menuPlayers[id][a] get_user_name(i, name, 31) if (access(i, ADMIN_IMMUNITY)) { ++b if (g_coloredMenus) len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) else len += format(menuBody[len], 511-len, "#. %s^n", name) } else { keys |= (1<<b) len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) } } if (end != g_menuPlayersNum[id]) { format(menuBody[len], 511-len, "^n9. %s...^n0. %s", "More", pos ? "Back" : "Exit") keys |= MENU_KEY_9 } else format(menuBody[len], 511-len, "^n0. %s", pos ? "Back" : "Exit") show_menu(id, keys, menuBody, -1, "KICK_PLAYER?") } //kick action public actionKickMenu(id, key) { switch (key) { case 8: displayKickMenu(id, ++g_menuPosition[id]) case 9: displayKickMenu(id, --g_menuPosition[id]) default: { new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key] new userid2 = get_user_userid(player) server_cmd("kick #%d", userid2) server_exec() new c_kick_player = get_cvar_num ("amx_m_exp_kick") g_p_exp[id] = g_p_exp[id] - c_kick_player calclevel(id) new sname[32] get_user_name(player, sname, 31) client_print(id,print_chat,"%L",id,"MESSAGE_K ICK_OK",sname) //displayKickMenu(id, g_menuPosition[id]) } } return PLUGIN_HANDLED } //display team menu public actionTeamMenu(id, key) { switch (key) { case 8: displayTeamMenu(id, ++g_menuPosition[id]) case 9: displayTeamMenu(id, --g_menuPosition[id]) default: { new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key] new CsTeams:tteam = cs_get_user_team(player) if (tteam==CS_TEAM_T){ cs_set_user_team(player,CS_TEAM_CT) } if (tteam==CS_TEAM_CT){ cs_set_user_team(player,CS_TEAM_T) } new c_change_team = get_cvar_num ("amx_m_exp_change_team") g_p_exp[id] = g_p_exp[id] - c_change_team calclevel(id) new sname[32] get_user_name(player, sname, 31) client_print(id,print_chat,"%L",id,"MESSAGE_C HANGE_PLAYER_TEAM_OK",sname) displayTeamMenu(id, g_menuPosition[id]) } } return PLUGIN_HANDLED } //team change action displayTeamMenu(id, pos) { if (pos < 0) return get_players(g_menuPlayers[id], g_menuPlayersNum[id]) new menuBody[512] new b = 0 new i new name[32] new start = pos * 8 if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody, 511, g_coloredMenus ? "\y%s\R%d/%d^n\w^n" : "%s %d/%d^n^n","Change_team?", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0))) new end = start + 8 new keys = MENU_KEY_0 if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id] for (new a = start; a < end; ++a) { i = g_menuPlayers[id][a] get_user_name(i, name, 31) if (access(i, ADMIN_IMMUNITY)) { ++b if (g_coloredMenus) len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) else len += format(menuBody[len], 511-len, "#. %s^n", name) } else { keys |= (1<<b) len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) } } if (end != g_menuPlayersNum[id]) { format(menuBody[len], 511-len, "^n9. %s...^n0. %s", "More", pos ? "Back" : "Exit") keys |= MENU_KEY_9 } else format(menuBody[len], 511-len, "^n0. %s", pos ? "Back" : "Exit") show_menu(id, keys, menuBody, -1, "Change_team?") } //action kill public actionSlayMenu(id, key) { switch (key) { case 8: displaySlayMenu(id, ++g_menuPosition[id]) case 9: displaySlayMenu(id, --g_menuPosition[id]) default: { new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key] if (is_user_alive(player)==1){ user_kill(player) new c_slay_player = get_cvar_num ("amx_m_exp_slay") g_p_exp[id] = g_p_exp[id] - c_slay_player calclevel(id) new sname[32] get_user_name(player, sname, 31) client_print(id,print_chat,"%L",id,"MESSAGE_S LAY_OK",sname) } displaySlayMenu(id, g_menuPosition[id]) } } return PLUGIN_HANDLED } //display kill menu displaySlayMenu(id, pos) { if (pos < 0) return get_players(g_menuPlayers[id], g_menuPlayersNum[id]) new menuBody[512] new b = 0 new i new name[32] new start = pos * 8 if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody, 511, g_coloredMenus ? "\y%s\R%d/%d^n\w^n" : "%s %d/%d^n^n", "Kill_a_player?", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0))) new end = start + 8 new keys = MENU_KEY_0 if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id] for (new a = start; a < end; ++a) { i = g_menuPlayers[id][a] get_user_name(i, name, 31) if (access(i, ADMIN_IMMUNITY)) { ++b if (g_coloredMenus) len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) else len += format(menuBody[len], 511-len, "#. %s^n", name) } else { keys |= (1<<b) if (is_user_alive(i)!=1){ len += format(menuBody[len], 511-len, "\d%d. %s [%L]^n\w", ++b, name,id,"MENU_WORD_DEAD") }else{ len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) } } } if (end != g_menuPlayersNum[id]) { format(menuBody[len], 511-len, "^n9. %s...^n0. %s", "More", pos ? "Back" : "Exit") keys |= MENU_KEY_9 } else format(menuBody[len], 511-len, "^n0. %s", pos ? "Back" : "Exit") show_menu(id, keys, menuBody, -1,"Kill_a_player?") } //display block menu displayBlockMenu(id, pos) { if (pos < 0) return get_players(g_menuPlayers[id], g_menuPlayersNum[id]) new menuBody[512] new b = 0 new i new name[32] new start = pos * 8 if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody, 511, g_coloredMenus ? "\y%s\R%d/%d^n\w^n" : "%s %d/%d^n^n","Block_ID?", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0))) new end = start + 8 new keys = MENU_KEY_0 if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id] for (new a = start; a < end; ++a) { i = g_menuPlayers[id][a] get_user_name(i, name, 31) if (access(i, ADMIN_IMMUNITY)) { ++b if (g_coloredMenus) len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) else len += format(menuBody[len], 511-len, "#. %s^n", name) } else { keys |= (1<<b) if(g_p_id[i]>0){ len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) }else{ len += format(menuBody[len], 511-len, "\d%d. %s [%L]^n\w", ++b, name,id,"MENU_WORD_UNREG") } } } if (end != g_menuPlayersNum[id]) { format(menuBody[len], 511-len, "^n9. %s...^n0. %s", "More", pos ? "Back" : "Exit") keys |= MENU_KEY_9 } else format(menuBody[len], 511-len, "^n0. %s", pos ? "Back" : "Exit") show_menu(id, keys, menuBody, -1,"Block_ID?") } //action block public actionBlockMenu(id, key) { switch (key) { case 8: displayBlockMenu(id, ++g_menuPosition[id]) case 9: displayBlockMenu(id, --g_menuPosition[id]) default: { if(access(id,ADMIN_BAN)){ new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key] if (g_p_id[player]>0){ blockuser(player) new sname[32] get_user_name(player, sname, 31) client_print(id,print_chat,"%L",id,"MESSAGE_B LOCK_OK",sname) } displayBlockMenu(id, g_menuPosition[id]) } } } return PLUGIN_HANDLED } //block query blockuser(id){ new q_query[1024] format(q_query,1023,"UPDATE member SET block = '1' WHERE id = '%d'",g_p_id[id]) SQL_ThreadQuery(g_DbInfo, "db_query", q_query) new userid2 = get_user_userid(id) server_cmd("kick #%d %L", userid2,id,"MESSAGE_BLOCKED") server_exec() return PLUGIN_CONTINUE } //unblock id command public cmd_unblockid(id){ if(!access(id,ADMIN_BAN)){ return PLUGIN_HANDLED } new a_id[7] read_argv ( 1, a_id,6 ) new q_query[1024] format(q_query,1023,"UPDATE member SET block = '0' WHERE id = '%s'",a_id) SQL_ThreadQuery(g_DbInfo, "db_query", q_query) client_print(id,print_chat,"%L",id,"MESSAGE_U NBLOCK_OK",a_id) return PLUGIN_HANDLED } //display add point menu displayAddPointMenu(id, pos) { if (pos < 0) return get_players(g_menuPlayers[id], g_menuPlayersNum[id]) new menuBody[512] new b = 0 new i new name[32] new start = pos * 8 if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody, 511, g_coloredMenus ? "\y%s\R%d/%d^n\w^n" : "%s %d/%d^n^n","Add_Point?", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0))) new end = start + 8 new keys = MENU_KEY_0 if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id] for (new a = start; a < end; ++a) { i = g_menuPlayers[id][a] get_user_name(i, name, 31) if (access(i, ADMIN_IMMUNITY)) { ++b if (g_coloredMenus) len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) else len += format(menuBody[len], 511-len, "#. %s^n", name) } else { keys |= (1<<b) if(g_p_id[i]>0){ len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) }else{ len += format(menuBody[len], 511-len, "\d%d. %s [%L]^n\w", ++b, name,id,"MENU_WORD_UNREG") } } } if (end != g_menuPlayersNum[id]) { format(menuBody[len], 511-len, "^n9. %s...^n0. %s", "More", pos ? "Back" : "Exit") keys |= MENU_KEY_9 } else format(menuBody[len], 511-len, "^n0. %s", pos ? "Back" : "Exit") show_menu(id, keys, menuBody, -1, "Add_Point?") } //action block public actionAddPointMenu(id, key) { switch (key) { case 8: displayAddPointMenu(id, ++g_menuPosition[id]) case 9: displayAddPointMenu(id, --g_menuPosition[id]) default: { new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key] if (g_p_id[player]>0){ g_p_point[player]=g_p_point[player] + 30 calclevel(player) new sname[32] get_user_name(player, sname, 31) client_print(id,print_chat,"%L",id,"MESSAGE_A DD_POINT_OK",sname) } displayAddPointMenu(id, g_menuPosition[id]) } } } //display my friend menu public displaymyfriendmenu(id){ if (g_p_id[id]>0){ new menu[255] format(menu, 254, "My_friend?^n") new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|M ENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|ME NU_KEY_8|MENU_KEY_9 new c_level_givemoney = get_cvar_num("amx_m_level_givemoney") new c_level_giveexp = get_cvar_num("amx_m_level_giveexp") new c_level_givepoint = get_cvar_num("amx_m_level_givepoint") if (g_p_level[id]>=c_level_givemoney){ format(menu, 254, "%s^n\w1.%L",menu,id,"MENU_FRIEND_GIVE_MONEY" ) }else{ format(menu, 254, "%s^n\d1.%L",menu,id,"MENU_FRIEND_GIVE_MONEY" ) } if (g_p_level[id]>=c_level_giveexp){ format(menu, 254, "%s^n\w2.%L",menu,id,"MENU_FRIEND_GIVE_EX P") }else{ format(menu, 254, "%s^n\d2.%L",menu,id,"MENU_FRIEND_GIVE_EX P") } if (g_p_level[id]>=c_level_givepoint){ format(menu, 254, "%s^n\w3.%L",menu,id,"MENU_FRIEND_GIVE_POINT" ) }else{ format(menu, 254, "%s^n\d3.%L",menu,id,"MENU_FRIEND_GIVE_POINT" ) } format(menu, 254, "%s^n\w0.%L",menu,id,"MENU_EXIT") show_menu(id, keys, menu) //return PLUGIN_HANDLED } } //action my friend menu public actionmyfriendmenu(id, key){ switch(key) { case 0: { new c_level_givemoney = get_cvar_num("amx_m_level_givemoney") if (g_p_id[id]>0 && g_p_level[id]>=c_level_givemoney){ displayGiveMoneyMenu(id, g_menuPosition[id] = 0) } } case 1: { new c_level_giveexp = get_cvar_num("amx_m_level_giveexp") if (g_p_id[id]>0 && g_p_level[id]>=c_level_giveexp){ displayGiveExpMenu(id, g_menuPosition[id] = 0) } } case 2: { new c_level_givepoint = get_cvar_num("amx_m_level_givepoint") if (g_p_id[id]>0 && g_p_level[id]>=c_level_givepoint){ displayGivePointMenu(id, g_menuPosition[id] = 0) } } case 9:return PLUGIN_HANDLED } return PLUGIN_HANDLED } //display give money menu displayGiveMoneyMenu(id, pos) { if (pos < 0) return get_players(g_menuPlayers[id], g_menuPlayersNum[id]) new menuBody[512] new b = 0 new i new name[32] new start = pos * 8 if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody, 511, g_coloredMenus ? "\y%s\R%d/%d^n\w^n" : "%s %d/%d^n^n","Give_money?", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0))) new end = start + 8 new keys = MENU_KEY_0 if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id] for (new a = start; a < end; ++a) { i = g_menuPlayers[id][a] get_user_name(i, name, 31) if (access(i, ADMIN_IMMUNITY)) { ++b if (g_coloredMenus) len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) else len += format(menuBody[len], 511-len, "#. %s^n", name) } else { keys |= (1<<b) len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) } } if (end != g_menuPlayersNum[id]) { format(menuBody[len], 511-len, "^n9. %s...^n0. %s", "More", pos ? "Back" : "Exit") keys |= MENU_KEY_9 } else format(menuBody[len], 511-len, "^n0. %s", pos ? "Back" : "Exit") show_menu(id, keys, menuBody, -1,"Give_money?") } //display money menu public actionGiveMoneyMenu(id, key) { switch (key) { case 8: displayGiveMoneyMenu(id, ++g_menuPosition[id]) case 9: displayGiveMoneyMenu(id, --g_menuPosition[id]) default: { new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key] if(cs_get_user_money(player)<=15000&&g_p_exp[id]>40){ cs_set_user_money(player,cs_get_user_money(pl ayer)+1000,0) new sname[32] get_user_name(id, sname, 31) client_print(player,print_chat,"%L",id,"MESSA GE_GET_MONEY",sname) new c_givemoney = get_cvar_num("amx_m_exp_givemoney") g_p_exp[id] = g_p_exp[id] - c_givemoney calclevel(id) get_user_name(player, sname, 31) client_print(id,print_chat,"%L",id,"MESSAGE_G IVE_MONEY_OK",sname) }else{ client_print(id,print_chat,"%L",id,"MESSAGE_G IVE_MONEY_FAILED") } displayGiveMoneyMenu(id, g_menuPosition[id]) } } return PLUGIN_HANDLED } //display give exp menu displayGiveExpMenu(id, pos) { if (pos < 0) return get_players(g_menuPlayers[id], g_menuPlayersNum[id]) new menuBody[512] new b = 0 new i new name[32] new start = pos * 8 if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody, 511, g_coloredMenus ? "\y%s\R%d/%d^n\w^n" : "%s %d/%d^n^n","Give_exp?", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0))) new end = start + 8 new keys = MENU_KEY_0 if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id] for (new a = start; a < end; ++a) { i = g_menuPlayers[id][a] get_user_name(i, name, 31) if (access(i, ADMIN_IMMUNITY)) { ++b if (g_coloredMenus) len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) else len += format(menuBody[len], 511-len, "#. %s^n", name) } else { keys |= (1<<b) len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) } } if (end != g_menuPlayersNum[id]) { format(menuBody[len], 511-len, "^n9. %s...^n0. %s", "More", pos ? "Back" : "Exit") keys |= MENU_KEY_9 } else format(menuBody[len], 511-len, "^n0. %s", pos ? "Back" : "Exit") show_menu(id, keys, menuBody, -1,"Give_exp?") } //action give exp public actionGiveExpMenu(id, key) { switch (key) { case 8: displayGiveExpMenu(id, ++g_menuPosition[id]) case 9: displayGiveExpMenu(id, --g_menuPosition[id]) default: { new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key] if(g_p_id[player]>0){ g_p_exp[player] = g_p_exp[player] + 50 new sname[32] get_user_name(id, sname, 31) client_print(player,print_chat,"%L",id,"MESSA GE_GIVE_EXP_OK",sname) new c_giveexp = get_cvar_num("amx_m_exp_giveexp") g_p_exp[id] = g_p_exp[id] - c_giveexp calclevel(id) get_user_name(player, sname, 31) client_print(id,print_chat,"%L",id,"MESSAGE_G ET_EXP",sname) }else{ client_print(id,print_chat,"%L",id,"MESSAGE_G IVE_EXP_FAILED") } displayGiveExpMenu(id, g_menuPosition[id]) } } return PLUGIN_HANDLED } //display add point menu displayGivePointMenu(id, pos) { if (pos < 0) return get_players(g_menuPlayers[id], g_menuPlayersNum[id]) new menuBody[512] new b = 0 new i new name[32] new start = pos * 8 if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody, 511, g_coloredMenus ? "\y%s\R%d/%d^n\w^n" : "%s %d/%d^n^n","Give_point?", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0))) new end = start + 8 new keys = MENU_KEY_0 if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id] for (new a = start; a < end; ++a) { i = g_menuPlayers[id][a] get_user_name(i, name, 31) if (access(i, ADMIN_IMMUNITY)) { ++b if (g_coloredMenus) len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) else len += format(menuBody[len], 511-len, "#. %s^n", name) } else { keys |= (1<<b) len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) } } if (end != g_menuPlayersNum[id]) { format(menuBody[len], 511-len, "^n9. %s...^n0. %s", "More", pos ? "Back" : "Exit") keys |= MENU_KEY_9 } else format(menuBody[len], 511-len, "^n0. %s", pos ? "Back" : "Exit") show_menu(id, keys, menuBody, -1, "Give_point?") } //action give point public actionGivePointMenu(id, key) { switch (key) { case 8: displayGivePointMenu(id, ++g_menuPosition[id]) case 9: displayGivePointMenu(id, --g_menuPosition[id]) default: { new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key] if(g_p_id[player]>0&&g_p_point[id]>30 ){ g_p_point[player] = g_p_point[player] + 30 new sname[32] get_user_name(id, sname, 31) client_print(player,print_chat,"%L",id,"MESSA GE_GET_POINT",sname) new c_givepoint = get_cvar_num("amx_m_exp_givepoint") g_p_exp[id] = g_p_exp[id] - c_givepoint g_p_point[id] = g_p_point[id] - 30 get_user_name(player, sname, 31) client_print(id,print_chat,"%L",id,"MESSAGE_G IVE_POINT_OK",sname) }else{ client_print(id,print_chat,"%L",id,"MESSAGE_G IVE_POINT_FAILED") } displayGivePointMenu(id, g_menuPosition[id]) } } return PLUGIN_HANDLED } //display my friend menu public cmd_myfriendmenu(id){ if (g_p_id[id]>0) displaymyfriendmenu(id) } //when the plugin stop, free the sql handle public plugin_end(){ SQL_FreeHandle(g_DbInfo) } //send a color print_chat color_message_all(message[]){ message_begin(MSG_ALL, get_user_msgid("SayText")) //message_begin(MSG_ONE, get_user_msgid("SayText"), {0,0,0}, id) write_byte(1) write_string(message) message_end() } //mark vip chat public cmd_say(id){ if(g_p_id[id]>0){ new a_text[64],p_name[32],p_message[128] read_args (a_text,63) remove_quotes(a_text) get_user_name(id,p_name,31) format(p_message,127,"^x04[VIP]^x03%s^x01:%s",p_name,a_text) color_message_all(p_message) return PLUGIN_HANDLED } return PLUGIN_CONTINUE } |
Post it in tags.
|
No1's gunna fix 1612 lines of code...
|
No, I meant the original so it retains the indentation.
|
Can you modify good script to release to come up for me?
Thanks |
Quote:
Here, to make it easier for you: POST IT WITH [ small] [ /small] TAGS OR NO ONE WILL HELP YOU |
Hmm... he's either stupid or ignorant as hell.
http://forums.alliedmods.net/showthread.php?t=29079 http://forums.alliedmods.net/showthread.php?t=29080 http://forums.alliedmods.net/showthread.php?t=29318 dingtian, a few tips to get some help: 1. Stop reposting this, keep it in one topic. 2. Read what people reply back. 3. Stop bumping your posts just asking for it to be fixed. |
| All times are GMT -4. The time now is 16:22. |
Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.