Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <sqlx>
#include <cellarray>
#include <fun>
#include <hamsandwich>
#include <engine>
#include <csx>
#define VIP ADMIN_LEVEL_H
#define ADMIN ADMIN_BAN
#define SUPER ADMIN_IMMUNITY
#define OWNER ADMIN_RCON
#define ADMIN_MENU_LEVEL ADMIN_CVAR
#define MAX_POINTS 100000000
#define KEY 0
#define CASE 1
#define SKIN 2
new SERVER_PREFIX[] = "SERVER-NAME"
//no touchies
#define LIMIT 256
#define CASES 9
#define IDS 33
////no touchies
//sql************************
new Host[] = "127.0.0.1"
new User[] = "*****"
new Pass[] = "****"
new Db[] = "***"
//sql************************
//cvars
new cvar_password_lenght, cvar_save_method//, cvar_shop_limit_admin, cvar_shop_limit_vip, cvar_shop_limit_normal
new cvar_headshot, cvar_normal_kill, cvar_normal_multiplier, cvar_vip_multiplier, cvar_admin_multiplier, cvar_super_multiplier, cvar_defuse, cvar_plant, cvar_knife, cvar_death
//end of cvars
new Handle:g_SqlTuple
new g_Error[512]
new ID[IDS]
//case opening
new Float:times[] = {0.1, 0.1, 0.1, 0.2, 0.2, 0.2, 0.3, 0.3, 0.5, 0.5, 0.6, 0.8, 0.8, 1.0}
new pulling_chest[IDS]
new chestpullable[CASES]
new RED[CASES] = {12, 12, 251, 99, 0, 255, 123, 123, 123}
new GREEN[CASES] = {12, 128, 19, 155, 255, 0, 123, 123, 123}
new BLUE[CASES] = {128, 128, 200, 11, 0, 0, 123, 123, 123}
new counter[IDS]
//case opening end
new equiped[IDS][33]
new player_weapons[IDS][LIMIT]//player_id//skin_id
new player_skins[IDS][34]//id //gun type
//csgo_weapons******************
new skin_id[LIMIT]
new weapon_name[LIMIT][32]
new model_v[LIMIT][32]
new model_p[LIMIT][32]
new model_w[LIMIT][32]
new weapon_id[LIMIT]
new cost[LIMIT]
new chances[LIMIT][CASES]
new cminmax[LIMIT][CASES][2]
new flags[LIMIT][32]
new free_flags[LIMIT][32]
new chances_sum[CASES]
//csgo_weapons end******************
//login stuff
new password[IDS][32]
new player_name[IDS][32]
new login_data[IDS][32]
new login_type[IDS]
new login_types[][] = {
"STEAM_ID",
"IP",
"STEAM_ID",
"STEAM_ID"
}
new loged[IDS]
//login stuff end
new client_settings[IDS][5]
new BEEP[] = "headshot/beep.wav"
new equipmenu[IDS]
new gunm[IDS], adminm[IDS], adminID[IDS], adminITEM[IDS]
new sh_item[IDS]
new player_menuMode[IDS]
new adminm_items[][] = {
"\ySet \wpoints",
"\yGive \wpoints",
"\ySet \witem",
"\yset \wkeys",
"\yGive \wcases",
"\yWipe \winventory",
"\yRestore \winventory \y(\din case wiped\y)"
}
new default_skins_v[][] = {
"models/v_ak47.mdl",
"models/v_m4a1.mdl",
"models/v_awp.mdl",
"models/v_scout.mdl",
"models/v_galil.mdl",
"models/v_famas.mdl",
"models/v_sg552.mdl",
"models/v_aug.mdl",
"models/v_xm1014.mdl",
"models/v_m3.mdl",
"models/v_ump45.mdl",
"models/v_mac10.mdl",
"models/v_mp5navy.mdl",
"models/v_m249.mdl",
"models/v_tmp.mdl",
"models/v_g3sg1.mdl",
"models/v_sg550.mdl",
"models/v_p90.mdl",
"models/v_deagle.mdl",
"models/v_usp.mdl",
"models/v_p228.mdl",
"models/v_tec9.mdl",
"models/v_elite.mdl",
"models/v_fiveseven.mdl",
"models/v_glock18.mdl",
"models/v_hegrenade.mdl",
"models/v_smokegrenade.mdl",
"models/v_flashbang.mdl",
"models/v_c4.mdl",
"models/v_knife.mdl",
"models/v_zeusx27.mdl"
}
new default_skins_p[][] = {
"models/p_ak47.mdl",
"models/p_m4a1.mdl",
"models/p_awp.mdl",
"models/p_scout.mdl",
"models/p_galil.mdl",
"models/p_famas.mdl",
"models/p_sg552.mdl",
"models/p_aug.mdl",
"models/p_xm1014.mdl",
"models/p_m3.mdl",
"models/p_ump45.mdl",
"models/p_mac10.mdl",
"models/p_mp5navy.mdl",
"models/p_m249.mdl",
"models/p_tmp.mdl",
"models/p_g3sg1.mdl",
"models/p_sg550.mdl",
"models/p_p90.mdl",
"models/p_deagle.mdl",
"models/p_usp.mdl",
"models/p_p228.mdl",
"models/p_tec9.mdl",
"models/p_elite.mdl",
"models/p_fiveseven.mdl",
"models/p_glock18.mdl",
"models/p_hegrenade.mdl",
"models/p_smokegrenade.mdl",
"models/p_flashbang.mdl",
"models/p_c4.mdl",
"models/p_knife.mdl",
"models/p_zeusx27.mdl"
}
new guns[][] = {
"AK47",
"M4A1",
"AWP",
"Scout",
"Galil",
"Famas",
"sg552",
"AUG",
"XM1014",
"M3",
"ump45",
"mac10",
"MP5navy",
"M249",
"TMP",
"G3SG1",
"sg550",
"P90",
"Deagle",
"Usp",
"P228",
"Tec-9",
"elite",
"FiveSeven",
"Glock18",
"He nade",
"Smoke nade",
"Flashbang",
"C4",
"Knife",
"Zeuz x27"
}
new gun_count
new gunsid[] = {28, 22, 18, 3, 14, 15, 27, 8, 5, 21, 12, 7, 19, 20, 23 ,24, 13, 30, 26, 16, 33, 1, 10, 11, 17, 4, 9, 25, 6, 29, 34}
//new gunscsw[]= {CSW_AK47, CSW_M4A1, CSW_AWP, CSW_SCOUT, CSW_GALIL, CSW_FAMAS, CSW_SG552, CSW_AUG, CSW_XM1014, CSW_M3, CSW_UMP45, CSW_MAC10, CSW_MP5NAVY, CSW_M249,
// CSW_TMP, CSW_G3SG1, CSW_SG550, CSW_P90, CSW_DEAGLE, CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_GLOCK18, CSW_HEGRENADE, CSW_SMOKEGRENADE, CSW_FLASHBANG, CSW_C4, CSW_KNIFE}
new cnames[CASES][] = {
"Gamma",
"Vanguard",
"Huntsman",
"Wildfire",
"Spectrum",
"Shadow",
"Falchion",
"Operation Bravo",
"Operation Hydra"
}
new RANKS[IDS]
new ranks[][] = {
"Unranked",
"Silver I",
"Silver II",
"Silver III",
"Silver IV",
"Silver elite",
"Silver elite master",
"Gold nova I",
"Gold nova II",
"Gold nova III",
"Gold nova Master",
"Master Guardian I",
"Master Guardian II",
"Master Guardian ELITE",
"Distinguished Master Guardian",
"Legendary Eagle",
"Legendary Eagle Master",
"Supreme Master FIRST CLASS",
"Global Elite"
}
new keys[IDS][CASES], points[IDS], kills[IDS], deaths[IDS]
new cases[IDS][CASES]
new tpoints[IDS], tid[IDS]
//configs
new case_count
new config_filename[256]
new Float:CK_multipliers[4]
new C_chances[CASES]
new K_chances[CASES]
new C_minmax[CASES][2]
new K_minmax[CASES][2]
new K_SUM
new C_SUM
//configs end
new Array:s_sellerid, Array:s_name, Array:s_price, Array:s_item, Array:s_type, Array:s_id
new nextid
new m_menu[IDS], m_item[IDS]
new case_hud_sync, point_hud_sync
public plugin_init() {
register_plugin("CS:GO mod", "1.0", "Softero")
register_dictionary("csgo_dictionary.txt")
register_event("CurWeapon", "change_model", "be", "1=1");
//cvars
cvar_password_lenght = register_cvar("minimum_password_lenght", "6")
cvar_save_method = register_cvar("default_save_method", "0")//0 steamid 1 ip 2 name
//cvar_shop_limit_admin = register_cvar("shop_items_admin", "6")
//cvar_shop_limit_vip = register_cvar("shop_items_vip", "6")
//cvar_shop_limit_normal = register_cvar("shop_items_normal", "6")
cvar_headshot = register_cvar("head_kill_points", "6")
cvar_normal_kill = register_cvar("normal_kill_points", "6")
cvar_normal_multiplier = register_cvar("normal_multiplier", "1.0")
cvar_vip_multiplier = register_cvar("vip_multiplier", "1.2")
cvar_admin_multiplier = register_cvar("admin_multiplier", "1.4")
cvar_super_multiplier = register_cvar("super_multiplier", "1.6")
cvar_defuse = register_cvar("defuse_points", "6")
cvar_plant = register_cvar("plant_points", "6")
cvar_knife = register_cvar("knife_points", "12")
// cvar_round_win = register_cvar("round_win_points", "12")
// cvar_round_loss = register_cvar("round_lose_points", "12")
cvar_death = register_cvar("death_points", "1")
//stuff
register_clcmd( "say /menu","main_menu" ); register_clcmd("team_say /menu","main_menu" )
register_clcmd("CSGOset", "set_password")
register_clcmd("CSGOinput", "adminm_menu_handler2")
register_clcmd("CSGOset_points", "input_points")
register_clcmd("CSGOshop", "input_shop")
register_clcmd("chooseteam", "mmmmmmmmm")
point_hud_sync = CreateHudSyncObj()
case_hud_sync = CreateHudSyncObj()
get_configsdir(config_filename, 90)
format(config_filename, charsmax(config_filename), "%s/csgo_setting.ini", config_filename)
if(!file_exists(config_filename)) {
new temp1[1024]
add(temp1, charsmax(temp1), ";Multipliers: (float value only) 2.0 means it`s 1/2 chance to get a drop. 1.0 means that it`s a guaranteed chance to get a key/case on kill^n")
add(temp1, charsmax(temp1), ";amount of cases. //deafult 9^n")
add(temp1, charsmax(temp1), "9^n")
add(temp1, charsmax(temp1), ";Super Admin, vip, normal //default 17.0 18.0 20.0^n")
add(temp1, charsmax(temp1), "15.0 17.0 18.0 20.0^n")
add(temp1, charsmax(temp1), ";Keys: Cases: must be integer value. 0 means unpullable^n")
add(temp1, charsmax(temp1), ";Gama ^n")
add(temp1, charsmax(temp1), "20 20 ^n")
add(temp1, charsmax(temp1), ";Vanguard ^n")
add(temp1, charsmax(temp1), "20 20^n")
add(temp1, charsmax(temp1), ";Huntsman ^n")
add(temp1, charsmax(temp1), "20 20 ^n")
add(temp1, charsmax(temp1), ";Wildfire ^n")
add(temp1, charsmax(temp1), "20 20 ^n")
add(temp1, charsmax(temp1), ";Spectrum ^n")
add(temp1, charsmax(temp1), "20 20 ^n")
add(temp1, charsmax(temp1), ";Shadow ^n")
add(temp1, charsmax(temp1), "20 20 ^n")
add(temp1, charsmax(temp1), ";Falchion ^n")
add(temp1, charsmax(temp1), "20 20^n")
add(temp1, charsmax(temp1), ";Operation Bravo ^n")
add(temp1, charsmax(temp1), "20 20^n")
add(temp1, charsmax(temp1), ";Operation Hydra ^n")
add(temp1, charsmax(temp1), "20 20^n")
write_file(config_filename, temp1)
}
new has_multipliers, has_count, num, cmax, kmax
new readdata[256], len, temp[4][16]
for (new line; line <= file_size(config_filename, 1); line++) {
read_file(config_filename, line, readdata, charsmax(readdata), len)
if(!readdata[0] || readdata[0] == ';') {
continue
}
if(!has_count) {
case_count = str_to_num(readdata)
has_count = 1
continue
}
if(!has_multipliers) {
parse(readdata, temp[0], charsmax(temp[]), temp[1], charsmax(temp[]), temp[2], charsmax(temp[]), temp[3], charsmax(temp[]))
CK_multipliers[0] = str_to_float(temp[0])
CK_multipliers[1] = str_to_float(temp[1])
CK_multipliers[2] = str_to_float(temp[2])
CK_multipliers[3] = str_to_float(temp[3])
has_multipliers = 1
continue
}
if(num == case_count)
break
parse(readdata, temp[0], charsmax(temp[]), temp[1], charsmax(temp[]))
K_chances[num] = str_to_num(temp[0])
C_chances[num] = str_to_num(temp[1])
if(K_chances[num] != 0) {
K_minmax[num][0] = kmax
K_minmax[num][1] = kmax+K_chances[num]
kmax=K_minmax[num][1]+1
}
if(C_chances[num] != 0) {
C_minmax[num][0] = cmax
C_minmax[num][1] = cmax+C_chances[num]
cmax=C_minmax[num][1]+1
}
num++
}
for(new i; i<case_count; i++) {
if(K_minmax[i][1] != 0)
K_SUM = K_minmax[i][1]
if(C_minmax[i][1] != 0)
C_SUM = C_minmax[i][1]
//log_amx("key: %i %i case: %i %i", K_minmax[i][0], K_minmax[i][1], C_minmax[i][0], C_minmax[i][1])
}
for(new i; i<case_count; i++) {
if(C_minmax[i][1] != 0) {
C_minmax[i][0] += K_SUM
C_minmax[i][1] += K_SUM
}
//log_amx("key: %i %i case: %i %i", K_minmax[i][0], K_minmax[i][1], C_minmax[i][0], C_minmax[i][1])
}
//log_amx("%i %i", K_SUM, C_SUM)
// log_amx("%i %i", K_SUM, C_SUM)
new temp2[128]
format(temp2, charsmax(temp2),"SELECT * FROM `csgo_market`")
SQL_ThreadQuery(g_SqlTuple,"Threaded_MarketLoad",temp2)
}
public mmmmmmmmm(id) {
main_menu(id)
return PLUGIN_HANDLED
}
public plugin_precache() {
MySql_Init()
precache_sound(BEEP)
new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511)
if(SqlConnection == Empty_Handle)
set_fail_state(g_Error)
new temp[128], atemp[CASES][5], lastmax[CASES]
format(temp,charsmax(temp),"SELECT * FROM `csgo_weapons` ORDER BY 'ID'")
new Handle:Query = SQL_PrepareQuery(SqlConnection, temp)
if(!SQL_Execute(Query)) {
SQL_QueryError(Query,g_Error,511)
set_fail_state(g_Error)
}
if(SQL_NumResults(Query) < 1)
return PLUGIN_CONTINUE
else
{
gun_count = SQL_AffectedRows(Query)
for(new i = 0; i < gun_count; i++) {
skin_id[i] = SQL_ReadResult(Query, 0)
SQL_ReadResult(Query, 1, weapon_name[i], charsmax(weapon_name))
SQL_ReadResult(Query, 2, model_v[i], charsmax(model_v))
SQL_ReadResult(Query, 3, model_p[i], charsmax(model_p))
SQL_ReadResult(Query, 4, model_w[i], charsmax(model_w))
weapon_id[i] = SQL_ReadResult(Query, 5)
cost[i] = SQL_ReadResult(Query, 6)
SQL_ReadResult(Query, 7, temp, charsmax(temp))
SQL_ReadResult(Query, 8, flags[i], charsmax(flags))
SQL_ReadResult(Query, 9, free_flags[i], charsmax(free_flags))
ExplodeString(atemp, sizeof(atemp), charsmax(atemp[]), temp, ' ')
for(new j; j<CASES; j++) {
chances[i][j] = str_to_num(atemp[j])
chances_sum[j]+=chances[i][j]
if(i==0) {
//log_amx("i==0")
cminmax[i][j][1] = chances[i][j]
lastmax[j]=cminmax[i][j][1]
if(chances[i][j] != 0)
chestpullable[j]=1
}
else if(chances[i][j] != 0) {
//log_amx("chances[i][j] != 0 && cminmax[i-1][j][1] == 0")
cminmax[i][j][0] = lastmax[j]+1
cminmax[i][j][1] = lastmax[j]+chances[i][j]
lastmax[j]=cminmax[i][j][1]
chestpullable[j]=1
}
//log_amx("case %i: %i %i %i", j, chances[i][j], cminmax[i][j][0], cminmax[i][j][1])
}
if(strlen(model_v[i]) > 7) {
formatex(temp, charsmax(temp), "models/headshot/%s", model_v[i])
//log_amx(temp)
precache_model(temp)
}
if(strlen(model_p[i]) > 7) {
formatex(temp, charsmax(temp), "models/headshot/%s", model_p[i])
precache_model(temp)
}
if(strlen(model_w[i]) > 7) {
formatex(temp, charsmax(temp), "models/headshot/%s", model_w[i])
precache_model(temp)
}
SQL_NextRow(Query)
}
}
SQL_FreeHandle(Query)
return PLUGIN_HANDLED
}
public set_password(id) {
new data[192], lenght = get_pcvar_num(cvar_password_lenght)
read_args(data, charsmax(data))
remove_quotes(data)
if(strlen(data) < lenght) {
format(data, charsmax(data), "^4[^3playcounter^4]^1 password is too short. Minimum %d characters", lenght)
client_print_color(id, print_chat, data)
}
else {
copy(password[id], charsmax(password[]), data)
format(data, charsmax(data), "^4[^3playcounter^4]^1 Your password is: ^4%s", password[id])
client_print_color(id, print_chat, data)
}
account_menu(id)
return PLUGIN_HANDLED
}
public main_menu(id) {
if(!loged[id]) {
//return PLUGIN_CONTINUE
}
new temp[128]
format(temp,charsmax(temp),"%L", LANG_PLAYER, "MAIN_MENU_TITLE", points[id], ranks[RANKS[id]])
new menu = menu_create( temp, "main_menu_handler" );
//new call = menu_makecallback("Call_Back");
//menu_additem( menu, "\yTapti \rSaimonu", _, _, ( g_SimonCount == 0 ) ? -1 : call )
format(temp,charsmax(temp),"%L", LANG_PLAYER, "MAIN_MENU_ITEM_1")//inventory
menu_additem( menu, temp)
format(temp,charsmax(temp),"%L", LANG_PLAYER, "MAIN_MENU_ITEM_2")//shop
menu_additem( menu, temp)
format(temp,charsmax(temp),"%L", LANG_PLAYER, "MAIN_MENU_ITEM_3")//market
menu_additem( menu, temp)
format(temp,charsmax(temp),"%L", LANG_PLAYER, "MAIN_MENU_ITEM_4")//gifts
menu_additem( menu, temp)
format(temp,charsmax(temp),"%L", LANG_PLAYER, "MAIN_MENU_ITEM_5")//settings
menu_additem( menu, temp)
if(get_user_flags(id) & ADMIN_CVAR) {
format(temp,charsmax(temp),"%L", LANG_PLAYER, "MAIN_MENU_ITEM_6")
menu_additem( menu, temp)
}
menu_display( id, menu, 0 )
return PLUGIN_CONTINUE
}
public main_menu_handler(id, menu, item) {
menu_destroy(menu)
switch(item)
{
case 0: inv_menu(id)
case 1: shop_menu(id)
case 2: market_menu(id)
case 3: gift_menu(id)
case 4: account_menu(id)
case 5: admin_menu(id)
default: return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public account_menu(id) {
new temp[128]
switch(login_type[id]) {
case 0: get_user_authid(id, login_data[id], charsmax(login_data[]))
case 1: get_user_ip(id, login_data[id], charsmax(login_data[]), 1)
case 2: get_user_name(id, login_data[id], charsmax(login_data[]))
}
//formatex(temp,charsmax(temp),"\wSave type: \r%s^n\wYour \r%s: \y%s^n\wYour unique \yID:\r %i^n\yPassword: \r%s", login_types[login_type[id]], login_types[login_type[id]], login_data[id], ID[id], password[id])
formatex(temp,charsmax(temp),"%L", LANG_PLAYER, "ACC_MENU_TITLE", login_types[login_type[id]], login_types[login_type[id]], login_data[id], ID[id], password[id])
new menu = menu_create( temp, "account_menu_handler" )
//new call = menu_makecallback("Call_Back")
format(temp,charsmax(temp), "\wchange save type \y(\d%s\y)", login_types[login_type[id]+1])//change save type
menu_additem( menu, temp)
//format(temp,charsmax(temp), "\wset password \y(\dname only\y)", login_types[login_type[id]+1])//set_password
//menu_additem( menu, temp)
(client_settings[id][0]) ? format(temp,charsmax(temp), "\wCase sounds \y(\rON\y)") : format(temp,charsmax(temp), "\wCase sounds \y(\dOFF\y)")
menu_additem( menu, temp)
menu_display( id, menu, 0 )
return PLUGIN_CONTINUE
}
public account_menu_handler(id, menu, item) {
menu_destroy(menu)
switch(item)
{
case MENU_EXIT: main_menu(id)
case 0: {
login_type[id]+=1
if(login_type[id] > 1)
login_type[id] = 0
account_menu(id)
}
case 1: {
(client_settings[id][0]) ? (client_settings[id][0]=0) : (client_settings[id][0]=1)
account_menu(id)
return PLUGIN_CONTINUE
}
default: return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public inv_menu(id) {
new temp[512], c, k
for(new i; i<CASES; i++) {
c+=cases[id][i]
k+=keys[id][i]
}
format(temp,charsmax(temp),"%L", LANG_PLAYER, "INV_MENU_TITLE")
new menu = menu_create( temp, "inv_menu_handler" )
//new call = menu_makecallback("Call_Back");
//menu_additem( menu, "\yTapti \rSaimonu", _, _, ( g_SimonCount == 0 ) ? -1 : call )
format(temp,charsmax(temp),"%L", LANG_PLAYER, "INV_MENU_ITEM_1")//equip
menu_additem( menu, temp)
format(temp,charsmax(temp),"%L", LANG_PLAYER, "INV_MENU_ITEM_2", k, c)//open
menu_additem( menu, temp)
menu_display( id, menu, 0 )
return PLUGIN_CONTINUE
}
public inv_menu_handler(id, menu, item) {
menu_destroy(menu)
switch(item)
{
case 0: equip_menu(id)
default: main_menu(id)
}
return PLUGIN_HANDLED
}
public equip_menu(id) {
new temp[512]
format(temp,charsmax(temp),"%L", LANG_PLAYER, "EQUIP_MENU_TITLE", points[id])
new menu = menu_create( temp, "equip_menu_handler" )
new call = menu_makecallback("Call_Back")
//menu_additem( menu, "\yTapti \rSaimonu", _, _, ( g_SimonCount == 0 ) ? -1 : call )
format(temp,charsmax(temp),"%L", LANG_PLAYER, "EQUIP_MENU_ITEM_1")//rifles
menu_additem( menu, temp)
format(temp,charsmax(temp),"%L", LANG_PLAYER, "EQUIP_MENU_ITEM_2")//pistols
menu_additem( menu, temp)
format(temp,charsmax(temp),"%L", LANG_PLAYER, "EQUIP_MENU_ITEM_3")//knife
menu_additem( menu, temp, _, _, (player_skins[id][gunsid[29]] > 0 ) ? -1 : call )
format(temp,charsmax(temp),"%L", LANG_PLAYER, "EQUIP_MENU_ITEM_4")//nades
menu_additem( menu, temp)
menu_display( id, menu, 0 )
return PLUGIN_CONTINUE
}
public equip_menu_handler(id, menu, item) {
menu_destroy(menu)
if(item == MENU_EXIT) {
inv_menu(id)
return PLUGIN_HANDLED
}
equipmenu[id]=item
equip_weapons_menu(id)
return PLUGIN_HANDLED
}
public equip_weapons_menu(id) {
new temp[512], data[6]
new call = menu_makecallback("Call_Back");
switch(equipmenu[id])
{
case 0:{
format(temp,charsmax(temp),"%L", LANG_PLAYER, "EQUIP_WEAPONS_TITLE_RIFLES")
new menu = menu_create( temp, "equip_weapons_menu_handler")
for(new i=0; i<=17; i++) {
format(temp,charsmax(temp),"%s", guns[i])
formatex(data, charsmax(data), "%i", i)
menu_additem( menu, temp, data, _, (player_skins[id][gunsid[i]] > 0 ) ? -1 : call )
}
menu_display( id, menu, 0 )
return PLUGIN_CONTINUE
}
case 1:{
format(temp,charsmax(temp),"%L", LANG_PLAYER, "EQUIP_WEAPONS_TITLE_PISTOLS")
new menu = menu_create( temp, "equip_weapons_menu_handler")
for(new i=18; i<=24; i++) {
format(temp,charsmax(temp),"%s", guns[i])
formatex(data, charsmax(data), "%i", i)
menu_additem( menu, temp, data, _, (player_skins[id][gunsid[i]] > 0 ) ? -1 : call )
}
menu_display( id, menu, 0 )
return PLUGIN_CONTINUE
}
case 2: {
gunm[id]=29
equip_sub_menu(id)
return PLUGIN_HANDLED
}
case 3: {
format(temp,charsmax(temp),"%L", LANG_PLAYER, "EQUIP_WEAPONS_TITLE_EXPLOSIVES")
new menu = menu_create( temp, "equip_weapons_menu_handler")
for(new i=25; i<=28; i++) {
format(temp,charsmax(temp),"%s", guns[i])
formatex(data, charsmax(data), "%i", i)
menu_additem(menu, temp, data, _, (player_skins[id][gunsid[i]] > 0 ) ? -1 : call )
}
menu_display( id, menu, 0 )
return PLUGIN_CONTINUE
}
}
return PLUGIN_CONTINUE
}
public equip_weapons_menu_handler(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu)
equip_menu(id)
return PLUGIN_HANDLED
}
new data[6], _dummy
menu_item_getinfo(menu, item, _dummy, data, charsmax(data), .callback = _dummy)
gunm[id] = str_to_num(data)
menu_destroy(menu)
equip_sub_menu(id)
return PLUGIN_HANDLED
}
public equip_sub_menu(id) {
static temp[512], i
new data[32]
formatex(temp,charsmax(temp),"\w[\rCSGO\w]\w %s skins:", guns[gunm[id]])
new menu = menu_create( temp, "equip_sub_menu_handler" )
new call = menu_makecallback("Call_Back")
menu_additem( menu, "reset skin")
for(i=0; i<gun_count; i++) {
if(weapon_id[i] == gunsid[gunm[id]]) {
formatex(temp,charsmax(temp),"\w%s \y(\r%d\y)", weapon_name[i], player_weapons[id][i])
formatex(data, charsmax(data), "%d", i)
menu_additem( menu, temp, data, _, (player_weapons[id][i]>0 && equiped[id][gunm[id]]!=-1) ? -1 : call )
}
}
menu_display( id, menu, 0 )
return PLUGIN_HANDLED
}
public equip_sub_menu_handler(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu)
if(gunm[id]==29) {
equip_menu(id)
return PLUGIN_HANDLED
}
equip_weapons_menu(id)
return PLUGIN_HANDLED
}
if(item == 0) {
equiped[id][gunsid[gunm[id]]] = 0
if(get_user_weapon(id) == gunsid[gunm[id]]) {
set_pev(id, pev_viewmodel2, default_skins_v[gunm[id]])
set_pev(id, pev_weaponmodel2, default_skins_p[gunm[id]])
}
equip_sub_menu(id)
return PLUGIN_HANDLED
}
new data[6], szName[64]
new _access, item_callback
menu_item_getinfo(menu, item, _access, data,charsmax(data), szName,charsmax(szName), item_callback)
new i = str_to_num(data)
equiped[id][gunsid[gunm[id]]] =i+1
if(get_user_weapon(id) == gunsid[gunm[id]]) {
new temp[64]
if(strlen(model_v[i]) > 7) {
formatex(temp, charsmax(temp), "models/headshot/%s", model_v[i])
set_pev(id, pev_viewmodel2, temp)
}
else
set_pev(id, pev_viewmodel2, default_skins_v[gunm[id]])
if(strlen(model_p[i]) > 7) {
formatex(temp, charsmax(temp), "models/headshot/%s", model_p[i])
set_pev(id, pev_weaponmodel2, temp)
}
else
set_pev(id, pev_weaponmodel2, default_skins_p[gunm[id]])
}
menu_destroy(menu)
equip_sub_menu(id)
return PLUGIN_CONTINUE
}
public MySql_Init() {
g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db)
new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error))
if(SqlConnection == Empty_Handle)
set_fail_state(g_Error)
new Handle:Queries[5]
Queries[0] = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS `csgo_players` (`ID` INT AUTO_INCREMENT PRIMARY KEY, `player_id` varchar(32), `player_password` varchar(32), `player_name` varchar(32), `chests` varchar(56), `keys` varchar(56), `points` INT(15), `kills` INT(7), `deaths` INT(7), `rank` INT(3), `settings` varchar(30))")
Queries[1] = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS `csgo_weapons` (`skin_id` INT AUTO_INCREMENT PRIMARY KEY, `weapon_name` varchar(32), `model_v` varchar(32), `model_p` varchar(32), `model_w` varchar(32), `weapon_id` INT(2), `cost` INT(11), `chance` varchar(32), `flags` varchar(32), `free_flag` varchar(32))")
Queries[2] = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS `csgo_player_weapons` (`ID` INT AUTO_INCREMENT PRIMARY KEY, `player_id` INT(15), `skin_id` INT(15), `active` INT(1), `count` INT(5), `weapon_id` INT(3))")
Queries[3] = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS `csgo_market` (`itemID` INT AUTO_INCREMENT PRIMARY KEY, `player_ID` INT(11), `player_name` varchar(32), `item_type` INT(11), `skin-case_id` INT(11), `cost` INT(11))")
Queries[4] = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS `csgo_logs` (`ID` INT AUTO_INCREMENT PRIMARY KEY, `date` INT(11), `info` varchar(256))")
for(new i=0; i<5; i++) {
if(!SQL_Execute(Queries[i])) {
SQL_QueryError(Queries[i],g_Error,charsmax(g_Error))
set_fail_state(g_Error)
}
SQL_FreeHandle(Queries[i])
}
SQL_FreeHandle(SqlConnection)
}
public MySql_LoadNormal(id) {
new temp[512], data[1]
data[0] = id
switch(login_type[id]) {
case -1: {
login_type[id] = 0
get_user_authid(id, login_data[id], charsmax(login_data[]))
format(temp, charsmax(temp),"SELECT * FROM `csgo_players` WHERE (`player_id` = '%s')", login_data[id])
}
case 0: {
login_type[id] = 1
get_user_ip(id, login_data[id], charsmax(login_data[]), 1)
format(temp, charsmax(temp),"SELECT * FROM `csgo_players` WHERE (`player_id` = '%s')", login_data[id])
}
case 1: {
login_type[id] = 2
get_user_name(id, login_data[id], charsmax(login_data[]))
format(temp, charsmax(temp),"SELECT * FROM `csgo_players` WHERE (`player_id` = '%s')", login_data[id])
}
}
SQL_ThreadQuery(g_SqlTuple,"Threaded_PlayerLoad",temp,data,1)
}
public MySql_LoadRegister(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) {
if(FailState == TQUERY_CONNECT_FAILED)
log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error)
else if(FailState == TQUERY_QUERY_FAILED)
log_amx("Load Query failed. [%d] %s", Errcode, Error)
SQL_FreeHandle(Query)
new temp[512], id = Data[0]
switch(get_pcvar_num(cvar_save_method)) {
case 0: get_user_authid(id, login_data[id], 31)
case 1: get_user_ip(id, login_data[id], 31, 1)
case 2: get_user_name(id, login_data[id], 31)
}
format(temp, charsmax(temp),"SELECT * FROM `csgo_players` WHERE (`player_id` = '%s')", login_data[id])
SQL_ThreadQuery(g_SqlTuple,"Threaded_PlayerLoadRegister",temp,Data,1)
}
public Threaded_PlayerLoad(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) {
if(FailState == TQUERY_CONNECT_FAILED)
log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error)
else if(FailState == TQUERY_QUERY_FAILED)
log_amx("Load Query failed. [%d] %s", Errcode, Error)
new id = Data[0]
if(SQL_NumResults(Query) < 1 && login_type[id] == 2) {
new temp[256]
switch(get_pcvar_num(cvar_save_method)) {
case 0: get_user_authid(id, login_data[id], 31)
case 1: get_user_ip(id, login_data[id], 31, 1)
case 2: get_user_name(id, login_data[id], 31)
}
login_type[id] = get_pcvar_num(cvar_save_method)
format(temp,charsmax(temp),"INSERT INTO `csgo_players` (`player_id`, `player_password`, `chests`, `keys`, `points`, `kills`, `deaths`, `rank`, `settings`) VALUES ('%s',' ','0 0 0 0 0 0 0 0 0','0 0 0 0 0 0 0 0 0','0','0','0','0','1 1 1 1 1')",login_data[id])
SQL_ThreadQuery(g_SqlTuple,"MySql_LoadRegister",temp)
return PLUGIN_HANDLED
}
if(SQL_NumResults(Query) < 1 && login_type[id] != 2) {
MySql_LoadNormal(id)
return PLUGIN_HANDLED
}
if (SQL_NumResults(Query) > 0) {
new temp[56], ctemp[CASES][12]
ID[id] = SQL_ReadResult(Query, 0)
SQL_ReadResult(Query, 2, password[id], charsmax(password[]))
SQL_ReadResult(Query, 3, player_name[id], charsmax(player_name[]))
SQL_ReadResult(Query, 4, temp, charsmax(temp))
ExplodeString(ctemp, sizeof(ctemp), charsmax(ctemp[]), temp, ' ')
for(new i; i<CASES; i++)
cases[id][i]=str_to_num(ctemp[i])
SQL_ReadResult(Query, 5, temp, charsmax(temp))
ExplodeString(ctemp, sizeof(ctemp), charsmax(ctemp[]), temp, ' ')
for(new i; i<CASES; i++)
keys[id][i]=str_to_num(ctemp[i])
points[id] = SQL_ReadResult(Query, 6)
kills[id] = SQL_ReadResult(Query, 7)
deaths[id] = SQL_ReadResult(Query, 8)
RANKS[id] = SQL_ReadResult(Query, 9)
SQL_ReadResult(Query, 10, temp, charsmax(temp))
ExplodeString(ctemp, sizeof(ctemp), charsmax(ctemp[]), temp, ' ')
for(new i; i<5; i++)
client_settings[id][i]=str_to_num(ctemp[i])
MySql_load_player_skins(id)
}
return PLUGIN_HANDLED
}
public Threaded_PlayerLoadRegister(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) {
if(FailState == TQUERY_CONNECT_FAILED)
log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error)
else if(FailState == TQUERY_QUERY_FAILED)
log_amx("Load Query failed. [%d] %s", Errcode, Error)
new temp[256], id = Data[0]
if (SQL_NumResults(Query) > 0) {
ID[id] = SQL_ReadResult(Query, 0)
for(new i=0; i<gun_count; i++) {
format(temp,charsmax(temp),"INSERT INTO `csgo_player_weapons` ( `player_id`,`skin_id`, `active`, `count`, `weapon_id`) VALUES ('%i','%i','0','0','%i');",ID[id], skin_id[i], weapon_id[i])
SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",temp)
}
}
else {
login_type[id] = -1
MySql_LoadNormal(id)
}
return PLUGIN_HANDLED
}
public MySql_load_player_skins(id) {
new szTemp[156]
new Data[1]
Data[0] = id
format(szTemp,charsmax(szTemp),"SELECT * FROM `csgo_player_weapons` WHERE (`player_id` = '%i') ORDER BY 'skin_id'", ID[id])
SQL_ThreadQuery(g_SqlTuple,"Threaded_SkinsLoad",szTemp,Data,1)
}
public Threaded_SkinsLoad(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) {
if(FailState == TQUERY_CONNECT_FAILED)
log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error)
else if(FailState == TQUERY_QUERY_FAILED)
log_amx("Load Query failed. [%d] %s", Errcode, Error)
new id = Data[0]
new rows = SQL_AffectedRows(Query)
for(new i; i < rows; i++) {
player_weapons[id][SQL_ReadResult(Query, 2)-1] = SQL_ReadResult(Query, 4)
player_skins[id][SQL_ReadResult(Query, 5)]+=1
if(SQL_ReadResult(Query, 3)>0)
equiped[id][SQL_ReadResult(Query, 5)] = i+1
SQL_NextRow(Query)
}
new check[256]
if(gun_count != rows) {
new Temp[256]
for(new i; i < gun_count; i++) {
SQL_Rewind(Query)
for(new I; I < rows; I++) {
if(skin_id[i] == SQL_ReadResult(Query, 2))
check[i] = 1
SQL_NextRow(Query)
}
if(!check[i]) {
format(Temp,charsmax(Temp),"INSERT INTO `csgo_player_weapons` ( `player_id`,`skin_id`, `active`, `count`, `weapon_id`) VALUES ('%i','%i','0','0','%i');",ID[id], skin_id[i], weapon_id[i])
SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",Temp)
}
}
}
SQL_FreeHandle(Query)
return PLUGIN_HANDLED
}
public Threaded_SkinCheck(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) {
if(FailState == TQUERY_CONNECT_FAILED)
log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error)
else if(FailState == TQUERY_QUERY_FAILED)
log_amx("Load Query failed. [%d] %s", Errcode, Error)
}
public MySql_save_player_skins(id) {
new temp[512]
for(new i; i<gun_count; i++) {
new equip
for(new I; I<gun_count; I++)
if(i == equiped[id][weapon_id[I]]-1)
equip=1
format(temp,charsmax(temp), "UPDATE `csgo_player_weapons` SET `active` = '%i', `count` = '%i' WHERE `csgo_player_weapons`.`player_id` = '%i' AND `skin_id` = '%i'", equip, player_weapons[id][i], ID[id], skin_id[i])
console_print(0, "%i %i %i %i", equiped[id][weapon_id[i]], player_weapons[id][i], ID[id], skin_id[i])
SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",temp)
}
return PLUGIN_HANDLED
}
public MySql_save_player_data(id) {
new temp[512]
new ktemp[56], ctemp[56], settings[16]
format(ktemp, charsmax(ktemp), "%i %i %i %i %i %i %i %i %i", keys[id][0], keys[id][1], keys[id][2], keys[id][3], keys[id][4], keys[id][5], keys[id][6], keys[id][7], keys[id][8])
format(ctemp, charsmax(ctemp), "%i %i %i %i %i %i %i %i %i", cases[id][0], cases[id][1], cases[id][2], cases[id][3], cases[id][4], cases[id][5], cases[id][6], cases[id][7], cases[id][8])
format(settings, charsmax(settings), "%i %i %i %i %i", client_settings[id][0], client_settings[id][1], client_settings[id][2], client_settings[id][3], client_settings[id][4])
switch(login_type[id]) {
case 0: get_user_authid(id, login_data[id], charsmax(login_data[]))
case 1: get_user_ip(id, login_data[id], charsmax(login_data[]), 1)
case 2: get_user_name(id, login_data[id], charsmax(login_data[]))
}
get_user_name(id, temp, 31)
format(temp,charsmax(temp),"UPDATE `csgo_players` SET `chests` = '%s', `keys` = '%s', `points` = '%i', `kills` = '%i', `player_id` = '%s', `player_password` = '%s', `player_name` = '%s', `settings` = '%s' WHERE `ID` = '%i'", ctemp, ktemp, points[id], kills[id], login_data[id], password[id], temp, settings, ID[id])
SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",temp)
return PLUGIN_HANDLED
}
public IgnoreHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) {
SQL_FreeHandle(Query)
return PLUGIN_HANDLED
}
public open_chest(id) {
new chest = pulling_chest[id]
new wpn = find_skin_by_chance(random(chances_sum[chest]), id)
set_hudmessage(RED[chest], GREEN[chest], BLUE[chest], -1.0, 0.24, 0, 6.0, 3.0)
ShowSyncHudMsg(id, case_hud_sync, "Opening %s case...^n%s", cnames[chest], weapon_name[wpn])
if(client_settings[id][0]) {
client_cmd(0, "spk %s", BEEP)
console_print(0, "beep")
}
if(counter[id] != sizeof(times)-1) {
set_task(times[counter[id]], "open_chest", id)
counter[id]++
return
}
new temp[128]
format(temp, charsmax(temp), "^4[^3%s^4] ^3You ^1got ^4%s ^1from ^4%s ^1case", SERVER_PREFIX, weapon_name[wpn], cnames[pulling_chest[id]])
client_print_color(id, id, temp)
get_user_name(id, temp, 31)
format(temp, charsmax(temp), "^4[^3%s^4] ^3%s ^1got ^4%s ^1from ^4%s ^1case", SERVER_PREFIX, temp, weapon_name[wpn], cnames[pulling_chest[id]])
client_print_but_player(id, temp)
pulling_chest[id] = -1
player_weapons[id][wpn]++
ps_update(id, wpn, 1)
counter[id] = 0
case_menu(id)
return
}
public client_connect(id) {
loged[id] = 0
login_type[id] = -1
points[id] = 0
pulling_chest[id] = -1
counter[id]=0
MySql_LoadNormal(id)
}
public client_disconnected(id) {
MySql_save_player_data(id)
MySql_save_player_skins(id)
}
public change_model(id) {
new wpn = get_user_weapon(id)
new i=equiped[id][wpn]
i-=1
if(i < 0) {
return PLUGIN_CONTINUE
}
if(!player_weapons[id][i] && (strlen(free_flags[i]) == 0 && has_all_flags(id, free_flags[i])) || (strlen(free_flags[i]) > 0 && !has_all_flags(id, free_flags[i]))) {
equiped[id][wpn]=0
i = Array_Find(wpn, gunsid, sizeof(gunsid))
set_pev(id, pev_viewmodel2, default_skins_v[i])
set_pev(id, pev_weaponmodel2, default_skins_p[i])
return PLUGIN_CONTINUE
}
new temp[64]
if(strlen(model_v[i]) > 7) {
formatex(temp, charsmax(temp), "models/headshot/%s", model_v[i])
set_pev(id, pev_viewmodel2, temp)
}
if(strlen(model_p[i]) > 7) {
formatex(temp, charsmax(temp), "models/headshot/%s", model_p[i])
set_pev(id, pev_weaponmodel, model_p[i])
}
return PLUGIN_CONTINUE
}
public Call_Back(id, menu, item) {
return ITEM_DISABLED
}
public plugin_end() {
new ErrorCode, Handle:SqlConnection = SQL_Connect(g_SqlTuple, ErrorCode, g_Error, 511)
if(SqlConnection == Empty_Handle)
set_fail_state(g_Error)
new temp[256]
format(temp,charsmax(temp),"TRUNCATE `csgo_market`")
new Handle:Query = SQL_PrepareQuery(SqlConnection, temp)
if(!SQL_Execute(Query)) {
SQL_QueryError(Query,g_Error,511)
}
SQL_FreeHandle(Query)
new adata[4]
for(new i; i<ArraySize(s_id); i++) {
ArrayGetString(s_name, i, temp, 32)
adata[0] = ArrayGetCell(s_sellerid, i)
adata[1] = ArrayGetCell(s_type, i)
adata[2] = ArrayGetCell(s_item, i)
adata[3] = ArrayGetCell(s_price, i)
new temp[256]
format(temp,charsmax(temp), "INSERT INTO `csgo_market` (`player_ID`, `player_name`, `item_type`, `skin-case_id`, `cost`) VALUES ('%i','%s','%i','%i','%i')", adata[0], temp, adata[1], adata[2], adata[3])
Query = SQL_PrepareQuery(SqlConnection, temp)
SQL_Execute(Query)
}
SQL_FreeHandle(Query)
SQL_FreeHandle(SqlConnection)
SQL_FreeHandle(g_SqlTuple)
ArrayDestroy(s_id)
ArrayDestroy(s_sellerid)
ArrayDestroy(s_name)
ArrayDestroy(s_type)
ArrayDestroy(s_item)
ArrayDestroy(s_price)
}
public plugin_natives() {
register_native("csgo_set_user_points","set_user_points")
register_native("csgo_get_user_points","get_user_points")
}
public set_user_points(plugin, params) {
if(params != 2)
return PLUGIN_CONTINUE
new id = get_param(1)
if(!id)
return PLUGIN_CONTINUE
points[id] = get_param(2)
return PLUGIN_HANDLED
}
public get_user_points(plugin, params) {
if(params != 1)
return PLUGIN_CONTINUE
new id = get_param(1)
if(!id)
return PLUGIN_CONTINUE
return points[id]
}
public client_death(killer, victim, wpn, part, TK) {
if(killer == victim || !is_user_connected(killer) || !is_user_connected(victim))
return PLUGIN_CONTINUE
points[victim]+=get_pcvar_num(cvar_death)
new bonus, Float:n = float(C_SUM+K_SUM)
if(part == HIT_HEAD)
bonus+=get_pcvar_num(cvar_headshot)
else
bonus+=get_pcvar_num(cvar_normal_kill)
if(wpn == CSW_KNIFE)
bonus+=get_pcvar_num(cvar_knife)
switch(get_user_flags(killer)) {
case SUPER: {
bonus = floatround(bonus * get_pcvar_float(cvar_super_multiplier), floatround_round)
n *= CK_multipliers[0]
}
case ADMIN: {
bonus = floatround(bonus * get_pcvar_float(cvar_admin_multiplier), floatround_round)
n *= CK_multipliers[1]
}
case VIP: {
bonus = floatround(bonus * get_pcvar_float(cvar_vip_multiplier), floatround_round)
n *= CK_multipliers[2]
}
default: {
bonus = floatround(bonus * get_pcvar_float(cvar_normal_multiplier), floatround_round)
n *= CK_multipliers[3]
}
}
points[killer]+=bonus
log_amx( "%i", n)
new item = find_ck_by_chance(random(floatround(n)))
log_amx( "%i", item)
if(item == -1)
return PLUGIN_CONTINUE
new temp[128]
get_user_name(killer, temp, 31)
if(item >= 100) {
item -= 100
keys[killer][item]++
format(temp, charsmax(temp), "^4[^3%s^4] ^3You ^1got ^4%s key", SERVER_PREFIX, cnames[item])
client_print_color(killer, killer, temp)
get_user_name(killer, temp, 31)
format(temp, charsmax(temp), "^4[^3%s^4] ^3%s ^1got ^4%s key", SERVER_PREFIX, temp, cnames[item])
client_print_but_player(killer, temp)
}
else {
cases[killer][item]++
format(temp, charsmax(temp), "^4[^3%s^4] ^3You ^1got ^4%s case", SERVER_PREFIX, cnames[item])
client_print_color(killer, killer, temp)
get_user_name(killer, temp, 31)
format(temp, charsmax(temp), "^4[^3%s^4] ^3%s ^1got ^4%s case", SERVER_PREFIX, temp, cnames[item])
client_print_but_player(killer, temp)
}
if(part == HIT_HEAD && wpn == CSW_KNIFE) {
set_hudmessage(255, 1, 1, 0.01, 0.68, 1, 6.0, 3.0)
ShowSyncHudMsg(killer, point_hud_sync, "+%i points for knife HeadShot", bonus)
}
else if(part == HIT_HEAD) {
set_hudmessage(150, 1, 1, 0.01, 0.68, 1, 6.0, 3.0)
ShowSyncHudMsg(killer, point_hud_sync, "+%i points for HeadShot", bonus)
}
else if(wpn == CSW_KNIFE) {
set_hudmessage(1, 100, 1, 0.01, 0.68, 1, 6.0, 3.0)
ShowSyncHudMsg(killer, point_hud_sync, "+%i points for knife kill", bonus)
}
else {
set_hudmessage(6, 9, 186, 0.01, 0.68, 1, 6.0, 3.0)
ShowSyncHudMsg(killer, point_hud_sync, "+%i points for kill", bonus)
}
return PLUGIN_CONTINUE
}
stock ExplodeString( p_szOutput[][], p_nMax, p_nSize, p_szInput[], p_szDelimiter ) {
new nIdx = 0, l = strlen(p_szInput)
new nLen = (1 + copyc( p_szOutput[nIdx], p_nSize, p_szInput, p_szDelimiter ))
while( (nLen < l) && (++nIdx < p_nMax) )
nLen += (1 + copyc( p_szOutput[nIdx], p_nSize, p_szInput[nLen], p_szDelimiter ))
return
}
stock client_print_but_player(id, message[]) {
new players[32], num, p
get_players(players, num)
for(new i; i<num; i++) {
p=players[i]
if(p==id) continue
client_print_color(p, id, message)
}
return
}
stock find_skin_by_chance(chance, id) {
for(new i; i<gun_count; i++)
if(cminmax[i][pulling_chest[id]][0] <= chance && chance <= cminmax[i][pulling_chest[id]][1] && cminmax[i][pulling_chest[id]][1] > 0)
return i
find_skin_by_chance(random(chances_sum[pulling_chest[id]]), id)
return -1
}
stock find_ck_by_chance(chance) {
for(new i; i<case_count; i++)
if(C_minmax[i][0] <= chance && chance <= C_minmax[i][1] && C_minmax[i][1] > 0)
return i
for(new i; i<case_count; i++)
if(K_minmax[i][0] <= chance && chance <= K_minmax[i][1] && K_minmax[i][1] > 0)
return i+100
return -1
}
stock Array_Find(item, array[], size) {
for(new i; i<size; i++)
if(array[i] == item)
return i
return -1
}
stock ps_update(id, item, amount) {
player_skins[id][weapon_id[item]]+=amount
}