Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <nvault>
- #include <amxmisc>
- #include <csx>
- #include <engine>
- #include <fakemeta>
- new const PLUGIN [] = "Money"
- new const VERSION [] = "0.3"
- new const AUTHOR [] = "Aknamal"
- new cvs[8];
- new xmoney[33];
- new Data[64];
- new toplevels[33];
- new topnames[33][33];
- enum Color
- {
- NORMAL = 1, // clients scr_concolor cvar color
- YELLOW = 1, // NORMAL alias
- GREEN, // Green Color
- TEAM_COLOR, // Red, grey, blue
- GREY, // grey
- RED, // Red
- BLUE, // Blue
- }
- new TeamName[][] =
- {
- "",
- "TERRORIST",
- "CT",
- "SPECTATOR"
- }
- new p_vault;
- public plugin_init()
- {
- register_plugin(PLUGIN,VERSION,AUTHOR)
- register_event("TextMsg", "bomb_planted", "a", "2&%!MRAD_BOMBPL")
- register_event("TextMsg", "bomb_defused", "a", "2&%!MRAD_BOMBDEF")
- register_event("TextMsg", "bomb_explode", "a", "2&#Target_B")
- register_event("DeathMsg", "hk_die", "a");
- p_vault = nvault_open("money_vault");
- cvs[0] = register_cvar("money_plant","3000");
- cvs[1] = register_cvar("money_defuse","5000");
- cvs[2] = register_cvar("money_explode","10000");
- cvs[3] = register_cvar("money_lost","1");
- cvs[4] = register_cvar("money_lost_value","800");
- cvs[5] = register_cvar("money_hs","4500");
- cvs[6] = register_cvar("money_kill","2000");
- cvs[7] = register_cvar("money_knife","500");
- register_clcmd("say /bani","xBani");
- register_clcmd("say_team /bani","xBani");
- register_clcmd("say /topbani","sayTopLevel");
- register_clcmd("say_team /topbani","sayTopLevel");
- register_concmd("amx_bani", "b_cmd", ADMIN_LEVEL_H, "amx_bani <NICK> <NUMARUL DE LEVEL>")
- register_concmd("amx_resetbani","concmdReset_Top");
- register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged")
- get_datadir(Data, 63);
- read_top();
- }
- public xBani(id)
- {
- ColorChat(id, TEAM_COLOR, "^1[ ^4BANI^1 ] Ai ^3%i^1 $ !",xmoney[id]);
- return 1
- }
- public b_cmd(id,level,cid)
- {
- if(!cmd_access(id,level,cid,3))
- return PLUGIN_HANDLED;
- new arg[33], amount[220]
- read_argv(1, arg, 32)
- new target = cmd_target(id, arg, 7)
- read_argv(2, amount, charsmax(amount) - 1)
- new exp = str_to_num(amount)
- if(!target)
- {
- return 1
- }
- xmoney[target] = exp
- checkandupdatetop(target,xmoney[target])
- SaveData(target)
- return 0
- }
- public plugin_natives()
- {
- register_native("get_player_money","_get")
- register_native("set_player_money","_set");
- }
- public _get(param)
- {
- return xmoney[get_param(1)];
- }
- public _set(param, value)
- {
- new id = get_param( 1 );
- new value = get_param( 2 );
- if(is_user_connected(id))
- {
- xmoney[id] = value;
- return 0
- }
- else
- {
- return 1
- }
- return 0
- }
- public ClientUserInfoChanged(id)
- {
- static const name[] = "name"
- static szOldName[32], szNewName[32]
- pev(id, pev_netname, szOldName, charsmax(szOldName))
- if( szOldName[0] )
- {
- get_user_info(id, name, szNewName, charsmax(szNewName))
- if( !equal(szOldName, szNewName) )
- {
- set_user_info(id, name, szOldName)
- return FMRES_HANDLED
- }
- }
- return FMRES_IGNORED
- }
- public save_top() {
- new path[128];
- formatex(path, 127, "%s/Bani.dat", Data);
- if( file_exists(path) ) {
- delete_file(path);
- }
- new Buffer[256];
- new f = fopen(path, "at");
- for(new i = 0; i < 15; i++)
- {
- formatex(Buffer, 255, "^"%s^" ^"%d^"^n",topnames[i],toplevels[i] );
- fputs(f, Buffer);
- }
- fclose(f);
- }
- public concmdReset_Top(id) {
- if( !(get_user_flags(id) & read_flags("abcdefghijklmnopqrstu"))) {
- return PLUGIN_HANDLED;
- }
- new path[128];
- formatex(path, 127, "%s/Bani.dat", Data);
- if( file_exists(path) ) {
- delete_file(path);
- }
- static info_none[33];
- info_none = "";
- for( new i = 0; i < 15; i++ ) {
- formatex(topnames[i], 31, info_none);
- toplevels[i]= 0;
- }
- save_top();
- new aname[32];
- get_user_name(id, aname, 31);
- ColorChat(0, TEAM_COLOR,"^1[^3 BANI^1 ] Adminul ^4%s^1 a resetat top bani!", aname);
- return PLUGIN_CONTINUE;
- }
- public plugin_precache() {
- new Entity = create_entity("info_map_parameters");
- DispatchKeyValue(Entity, "buying", "3");
- DispatchSpawn(Entity);
- }
- public pfn_keyvalue(Entity) {
- new ClassName[20], Dummy[2];
- copy_keyvalue(ClassName, charsmax(ClassName), Dummy, charsmax(Dummy), Dummy, charsmax(Dummy));
- if(equal(ClassName, "info_map_parameters")) {
- remove_entity(Entity);
- return PLUGIN_HANDLED;
- }
- return PLUGIN_CONTINUE;
- }
- public checkandupdatetop(id, levels) {
- new name[32];
- get_user_name(id, name, 31);
- for (new i = 0; i < 15; i++)
- {
- if( levels > toplevels[i] )
- {
- new pos = i;
- while( !equal(topnames[pos],name) && pos < 15 )
- {
- pos++;
- }
- for (new j = pos; j > i; j--)
- {
- formatex(topnames[j], 31, topnames[j-1]);
- toplevels[j] = toplevels[j-1];
- }
- formatex(topnames[i], 31, name);
- toplevels[i]= levels;
- ColorChat(0, TEAM_COLOR,"^1[^3 BANI^1 ] Jucatorul ^4%s^1 a intrat pe locul ^4%i^1 in top bani !", name,(i+1));
- if(i+1 == 1) {
- client_cmd(0, "spk vox/doop");
- } else {
- client_cmd(0, "spk buttons/bell1");
- }
- save_top();
- break;
- }
- else if( equal(topnames[i], name))
- break;
- }
- }
- public read_top() {
- new Buffer[256],path[128];
- formatex(path, 127, "%s/Bani.dat", Data);
- new f = fopen(path, "rt" );
- new i = 0;
- while( !feof(f) && i < 15+1)
- {
- fgets(f, Buffer, 255);
- new lvls[25];
- parse(Buffer, topnames[i], 31, lvls, 24);
- toplevels[i]= str_to_num(lvls);
- i++;
- }
- fclose(f);
- }
- public sayTopLevel(id) {
- static buffer[2368], name[131], len, i;
- len = formatex(buffer, 2047, "<body bgcolor=#FFFFFF><table width=100%% cellpadding=2 cellspacing=0 border=0>");
- len += format(buffer[len], 2367-len, "<tr align=center bgcolor=#52697B><th width=10%% > # <th width=45%%> Nume <th width=45%%>Bani");
- for( i = 0; i < 15; i++ ) {
- if( toplevels[i] == 0) {
- len += formatex(buffer[len], 2047-len, "<tr align=center%s><td> %d <td> %s <td> %s",((i%2)==0) ? "" : " bgcolor=#A4BED6", (i+1), "-", "-");
- //i = NTOP
- }
- else {
- name = topnames[i];
- while( containi(name, "<") != -1 )
- replace(name, 129, "<", "<");
- while( containi(name, ">") != -1 )
- replace(name, 129, ">", ">");
- len += formatex(buffer[len], 2047-len, "<tr align=center%s><td> %d <td> %s <td> %d",((i%2)==0) ? "" : " bgcolor=#A4BED6", (i+1), name,toplevels[i]);
- }
- }
- len += format(buffer[len], 2367-len, "</table>");
- len += formatex(buffer[len], 2367-len, "<tr align=bottom font-size:11px><Center><br><br><br><br>by BACON</body>");
- static strin[20];
- format(strin,33, "Top Level");
- show_motd(id, buffer, strin);
- }
- public bomb_planted(id)
- {
- xmoney[id] = xmoney[id] + get_pcvar_num(cvs[0]);
- checkandupdatetop(id,xmoney[id])
- SaveData(id)
- }
- public bomb_defused(id)
- {
- xmoney[id] = xmoney[id] + get_pcvar_num(cvs[1]);
- checkandupdatetop(id,xmoney[id])
- SaveData(id)
- }
- public bomb_explode(id)
- {
- xmoney[id] = xmoney[id] + get_pcvar_num(cvs[2]);
- checkandupdatetop(id,xmoney[id])
- SaveData(id)
- }
- public hk_die()
- {
- new vct = read_data( 2 );
- new atk = read_data( 1 );
- new hitplace,weapon = get_user_weapon(atk, weapon, hitplace);
- if(!atk || atk == vct || !is_user_alive(atk))
- {
- return 1;
- }
- if(get_pcvar_num(cvs[3]))
- {
- xmoney[vct] = xmoney[vct] - get_pcvar_num(cvs[4]);
- checkandupdatetop(vct,xmoney[vct])
- SaveData(vct)
- return 0
- }
- if(weapon == CSW_KNIFE)
- {
- xmoney[atk] = xmoney[atk] + get_pcvar_num(cvs[7]);
- checkandupdatetop(atk,xmoney[atk])
- SaveData(atk)
- return 0
- }
- if(hitplace == HIT_HEAD)
- {
- xmoney[atk] = xmoney[atk] + get_pcvar_num(cvs[5]);
- checkandupdatetop(atk,xmoney[atk])
- SaveData(atk)
- return 0
- }else{
- xmoney[atk] = xmoney[atk] + get_pcvar_num(cvs[6]);
- checkandupdatetop(atk,xmoney[atk])
- SaveData(atk)
- return 0
- }
- return 0
- }
- public SaveData(id)
- {
- new PlayerName[35];
- get_user_name(id,PlayerName,34);
- new vaultkey[64],vaultdata[256];
- format(vaultkey,63,"%s",PlayerName);
- format(vaultdata,255,"%i",xmoney[id]);
- nvault_set(p_vault,vaultkey,vaultdata);
- return PLUGIN_CONTINUE;
- }
- public LoadData(id)
- {
- new PlayerName[35];
- get_user_name(id,PlayerName,34);
- new vaultkey[64],vaultdata[256];
- format(vaultkey,63,"%s",PlayerName);
- format(vaultdata,255,"%i",xmoney[id]);
- nvault_get(p_vault,vaultkey,vaultdata,255);
- replace_all(vaultdata, 255, "`", " ");
- new playerlevel[32];
- parse(vaultdata, playerlevel, 31);
- xmoney[id] = str_to_num(playerlevel);
- return PLUGIN_CONTINUE;
- }
- public client_disconnect(id)
- {
- SaveData(id)
- }
- public client_putinserver(id)
- {
- LoadData(id)
- }
- ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
- {
- new message[256];
- switch(type)
- {
- case NORMAL: // clients scr_concolor cvar color
- {
- message[0] = 0x01;
- }
- case GREEN: // Green
- {
- message[0] = 0x04;
- }
- default: // White, Red, Blue
- {
- message[0] = 0x03;
- }
- }
- vformat(message[1], 251, msg, 4);
- // Make sure message is not longer than 192 character. Will crash the server.
- message[191] = '^0';
- new team, ColorChange, index, MSG_Type;
- if(id)
- {
- MSG_Type = MSG_ONE;
- index = id;
- } else {
- index = FindPlayer();
- MSG_Type = MSG_ALL;
- }
- team = get_user_team(index);
- ColorChange = ColorSelection(index, MSG_Type, type);
- ShowColorMessage(index, MSG_Type, message);
- if(ColorChange)
- {
- Team_Info(index, MSG_Type, TeamName[team]);
- }
- }
- ShowColorMessage(id, type, message[])
- {
- static get_user_msgid_saytext;
- if(!get_user_msgid_saytext)
- {
- get_user_msgid_saytext = get_user_msgid("SayText");
- }
- message_begin(type, get_user_msgid_saytext, _, id);
- write_byte(id)
- write_string(message);
- message_end();
- }
- Team_Info(id, type, team[])
- {
- static bool:teaminfo_used;
- static get_user_msgid_teaminfo;
- if(!teaminfo_used)
- {
- get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
- teaminfo_used = true;
- }
- message_begin(type, get_user_msgid_teaminfo, _, id);
- write_byte(id);
- write_string(team);
- message_end();
- return 1;
- }
- ColorSelection(index, type, Color:Type)
- {
- switch(Type)
- {
- case RED:
- {
- return Team_Info(index, type, TeamName[1]);
- }
- case BLUE:
- {
- return Team_Info(index, type, TeamName[2]);
- }
- case GREY:
- {
- return Team_Info(index, type, TeamName[0]);
- }
- }
- return 0;
- }
- FindPlayer()
- {
- new i = -1;
- static iMaxPlayers;
- if( !iMaxPlayers )
- {
- iMaxPlayers = get_maxplayers( );
- }
- while(i <= iMaxPlayers)
- {
- if(is_user_connected(++i))
- return i;
- }
- return -1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement