Zm_vip plugin

Vaata eelmist teemat Vaata järgmist teemat Go down

Heaven123
Heaven123
Juunior
Liitus : 16/01/2014
Postitusi : 11

PostitamineHeaven123 01.03.14 19:38

Tere , mull on zombie plague server.
mull on selline küsimus
mull on ainult serveris , kus töötab admin skin
kuidas panna vip skinn ainult vips?
veel mul on selline küsimus.
kuidas teha et ei ole läbi vips.ini ja läbi users.ini lisada vips komand bit
aidake palun
ma seda plugin zm_vip zombie plague otsin juba peaaegu kuu
see zm_vip mu kood

Kood:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <engine>
#include <fun>
#include <hamsandwich>
#include <zombieplague>

////////// PLUGIN SETTINGS //////////
#define MODE 3
#define CHAT_PREFIX "[VIP]"

// (Only if MODE 1 is turrned OFF. Otherwise set flags in vips.ini.) //
#define VIPACCES ADMIN_LEVEL_H
#define MJACCES ADMIN_LEVEL_H
////////// SETTINGS END //////////

// Flags
#define FLAG_A (1<<0)
#define FLAG_B (1<<1)
#define FLAG_C (1<<2)
#define FLAG_D (1<<3)
#define FLAG_E (1<<4)
#define FLAG_K (1<<10)

#define VERSION "1.7.2"

#if cellbits == 32
const OFFSET_CLIPAMMO = 51
#else
const OFFSET_CLIPAMMO = 65
#endif
const OFFSET_LINUX_WEAPONS = 4

const DMG_HEGRENADE = (1<<24)

#define set_flood(%1,%2)    (%1 |= (1<<(%2&31)))
#define clear_flood(%1,%2)    (%1 &= ~(1<<(%2&31)))
#define get_flood(%1,%2)    (%1 & (1<<(%2&31)))

#if MODE & (1<<0) || MODE & (1<<1)
new amx_password_field_string[30]
#endif
#if MODE & (1<<0)
new g_user_privileges[33]
enum _:database_items
{
 auth[50],
 password[50],
 accessflags,
 flags
}
new vips_database[database_items]
new Array:database_holder
new g_hour_flags
new g_hour
#endif
#if MODE & (1<<1)
const ZV_PLUGIN_HANDLED = 97
enum _:items
{
 i_name[31],
 i_description[31],
 i_cost,
 i_team
}
new g_register_in_zp_extra
new g_zp_extra_item_number
new g_nonvip_tease
new g_menu_close
new extra_items[items]
new Array:items_database
new g_registered_items_count
new g_forward_return
new g_extra_item_selected
new g_team[33]
#endif
#if MODE == 3
new g_vip_buy_time
new g_vip_cost_ammo
new g_vip_buy_flags
#endif
new const MAXCLIP[] = { -1, 13, -1, 10, 1, 7, -1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 }
static const CONTACT[] = ""
new g_jumps, g_allow_jump, g_armor, g_killammo, g_infectammo, g_infecthealth, g_nemhealth, g_show_vips,
g_unlimited_clip, g_fall_damage, g_damage_reward, g_damage_increase, g_happy_hour, g_happy_hour_frag, g_happy_hour_ammo
new happy_hour_on
new g_bit
new chache_g_jumps
new maxplayers, g_msgSayText
new jumpnum[33]
new bool:dojump[33]
new Float:g_damage[33]

public plugin_init() {
 
register_plugin("ZM VIP", VERSION, "aaarnas")
 RegisterHam(Ham_Spawn, "player", "FwdHamPlayerSpawnPost", 1)
 RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Post", 1)
 RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
 register_event("ResetHUD", "HUDReset", "be")
 register_event("HLTV", "chache_cvars", "a", "1=0", "2=0")
 
maxplayers = get_maxplayers()
 g_msgSayText = get_user_msgid("SayText")
 
register_message(get_user_msgid("CurWeapon"), "message_cur_weapon")
 
g_jumps = register_cvar("zp_vip_jumps", "1")
 g_allow_jump = register_cvar("zp_vip_allow_jump", "ab")
 g_armor = register_cvar("zp_vip_armor", "65")
 g_killammo = register_cvar("zp_vip_killammo", "2")
 g_infectammo = register_cvar("zp_vip_infectammo", "2")
 g_infecthealth = register_cvar("zp_vip_infecthealth", "300")
 g_nemhealth = register_cvar("zp_vip_nemextra", "1")
 g_show_vips = register_cvar("zp_vip_show", "1")
 g_unlimited_clip = register_cvar("zp_vip_unlimited_ammo", "0")
 g_fall_damage = register_cvar("zp_vip_no_fall_damage", "1")
 g_damage_reward = register_cvar("zp_vip_damage_reward", "500")
 g_damage_increase = register_cvar("zp_vip_damage_increase", "1.5")
 g_happy_hour = register_cvar("zp_vip_happy_hour", "off")
 g_happy_hour_frag = register_cvar("zp_vip_happy_hour_frag", "1")
 g_happy_hour_ammo = register_cvar("zp_vip_happy_hour_ammo", "1")
 register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER)
 register_cvar("zp_vip_version", VERSION, FCVAR_SERVER|FCVAR_SPONLY)
 set_cvar_string("zp_vip_version", VERSION)
 
#if MODE & (1<<0) || MODE & (1<<1)
 get_cvar_string("amx_password_field", amx_password_field_string, charsmax(amx_password_field_string))
 register_dictionary("zm_vip.txt")
#endif
#if MODE & (1<<0) && MODE & (1<<1)
 g_vip_cost_ammo = register_cvar("zp_vip_cost_ammo", "0")
 g_vip_buy_time = register_cvar("zp_vip_buy_time", "7")
 g_vip_buy_flags = register_cvar("zp_vip_buy_flags", "abcd")
 set_task(5.0,"check_date",0)
#endif
#if MODE & (1<<0)
 register_concmd("amx_reloadvips", "reload_vips", ADMIN_CFG)
 g_hour = register_cvar("zp_vip_hour", "off")
 g_hour_flags = register_cvar("zp_vip_hour_flags", "abe")
 reload_vips()
#endif
#if MODE & (1<<1)
 register_clcmd("say /vm", "menu_open")
 g_nonvip_tease = register_cvar("zp_vip_nonvip_tease", "1")
 g_register_in_zp_extra = register_cvar("zp_vip_register_in_zp_extra", "1")
 g_menu_close = register_cvar("zp_vip_menu_close", "1")
 
new temp[31]
 formatex(temp, 30, "%L", LANG_SERVER, "VIP_EXTRA_NAME")
 if(get_pcvar_num(g_register_in_zp_extra)) g_zp_extra_item_number = zp_register_extra_item(temp, 0, 0)
 g_extra_item_selected = CreateMultiForward("zv_extra_item_selected", ET_CONTINUE, FP_CELL, FP_CELL)
#endif
 register_clcmd("say /vips", "print_adminlist")
 register_clcmd("say /vip", "ShowMotd")
}
public plugin_cfg()
{
 new directory[31]
 get_configsdir(directory, 30)
 server_cmd("exec %s/zm_vip.cfg", directory)
}

public chache_cvars() {
 
static string[5]
 get_pcvar_string(g_allow_jump, string, charsmax(string))
 g_bit = read_flags(string)
 chache_g_jumps = get_pcvar_num(g_jumps)
 
static hours[6], hour1s[3], hour2s[3], hour1, hour2, h, m, s
 get_pcvar_string(g_happy_hour, hours, charsmax(hours))
 
if(equal(hours, "off")) {happy_hour_on = false; return; }
 
strtok(hours, hour1s, charsmax(hour1s), hour2s, charsmax(hour2s), '-')
 hour1 = str_to_num(hour1s)
 hour2 = str_to_num(hour2s)
 
time(h, m, s)
 if(hour1 <= h <= hour2) happy_hour_on = true
 else happy_hour_on = false
}
#if MODE & (1<<1) || MODE & (1<<0)
public plugin_natives() {
#if MODE & (1<<1)
 register_native("zv_register_extra_item", "native_zv_register_extra_item", 1)
#endif
#if MODE & (1<<0)
 register_native("zv_get_user_flags", "native_zv_get_user_flags", 1)
#endif
}
#endif
public FwdHamPlayerSpawnPost(id) {
 
if(!is_user_alive(id)) return HAM_IGNORED;
#if MODE & (1<<0)
 if(!(g_user_privileges[id] & FLAG_A))
#else
 if(!(get_user_flags(id) & VIPACCES))
#endif
 return PLUGIN_HANDLED;

 if(pev(id, pev_armorvalue) < get_pcvar_num(g_armor))
 set_pev(id, pev_armorvalue, float(get_pcvar_num(g_armor)))
 return HAM_IGNORED;
}

public fw_PlayerKilled_Post(victim, attacker) {
#if MODE & (1<<0)
 if(1 <= attacker <= maxplayers && g_user_privileges[attacker] & FLAG_A) {
#else
 if(1 <= attacker <= maxplayers && get_user_flags(attacker) & VIPACCES) {
#endif
if(is_user_alive(attacker) && zp_get_user_zombie(attacker) && !(zp_get_user_nemesis(attacker) && get_pcvar_num(g_nemhealth))) set_user_health(attacker, (get_user_health(attacker) + get_pcvar_num(g_infecthealth)))
 zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + get_pcvar_num(g_killammo))
 
if(happy_hour_on) {
 
static frag, ammo
 frag = get_pcvar_num(g_happy_hour_frag)
 ammo = get_pcvar_num(g_happy_hour_ammo)
 
if(frag) set_user_frags(attacker, get_user_frags(attacker)+frag)
 if(ammo) zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker)+ammo)
 }
 
}
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type) {
 
if(victim == attacker)
 return HAM_IGNORED
 
if(damage_type & DMG_HEGRENADE)
 return HAM_IGNORED
 
#if MODE & (1<<0)
 if(g_user_privileges[victim] & FLAG_A) {
#else
 if(get_user_flags(victim) & VIPACCES) {
#endif
 if(damage_type & DMG_FALL && get_pcvar_num(g_fall_damage))
 return HAM_SUPERCEDE;
 }
 
if(!is_user_connected(attacker))
 return HAM_IGNORED
 
if(zp_get_user_zombie(attacker) || zp_get_user_survivor(attacker))
 return HAM_IGNORED

#if MODE & (1<<0)
 if(g_user_privileges[attacker] & FLAG_D) {
#else
 if(get_user_flags(attacker) & VIPACCES) {
#endif
 damage *= get_pcvar_float(g_damage_increase)
 SetHamParamFloat(4, damage)
 }
 
#if MODE & (1<<0)
 if(g_user_privileges[attacker] & FLAG_D) {
#else
 if(get_user_flags(attacker) & VIPACCES) {
#endif
 if(get_pcvar_num(g_damage_reward) > 0) {
 g_damage[attacker]+=damage
 if(g_damage[attacker] > get_pcvar_float(g_damage_reward)) {
 zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker)+1)
 g_damage[attacker] -= get_pcvar_float(g_damage_reward)
 }
 }
}

 return HAM_IGNORED
}

public zp_user_infected_post(id, infector, nemesis) {
 
setVip()
 if(!(1<=infector<=maxplayers)) return;
 
#if MODE & (1<<0)
 if(g_user_privileges[infector] & FLAG_A) {
#else
 if(get_user_flags(infector) & VIPACCES) {
#endif
 if(is_user_alive(infector)) set_user_health(infector, (get_user_health(infector) + get_pcvar_num(g_infecthealth)))
 zp_set_user_ammo_packs(infector, zp_get_user_ammo_packs(infector) + get_pcvar_num(g_infectammo))
 
if(happy_hour_on) {
 
static frag, ammo
 frag = get_pcvar_num(g_happy_hour_frag)
 ammo = get_pcvar_num(g_happy_hour_ammo)
 
if(frag) set_user_frags(infector, get_user_frags(infector)+frag)
 if(ammo) zp_set_user_ammo_packs(infector, zp_get_user_ammo_packs(infector)+ammo)
 }
 }
}

public client_connect(id) {
 
jumpnum[id] = 0
 g_damage[id] = 0.0
 dojump[id] = false
#if MODE & (1<<0)
 set_flags(id)
 if(get_pcvar_num(g_show_vips) == 1 && g_user_privileges[id] & FLAG_A) {
#else
 if(get_pcvar_num(g_show_vips) == 1 && get_user_flags(id) & VIPACCES) {
#endif
 new name[100]
 get_user_name(id, name, 100)
 client_printcolor(0, "/g%L", LANG_PLAYER, "VIP_CONNECTED", name)
 }
#if MODE & (1<<0)
 else {
 static hours[6], hour1s[3], hour2s[3], hour1, hour2, h, m, s
 get_pcvar_string(g_hour, hours, charsmax(hours))
 
if(equal(hours, "off")) return;
 
strtok(hours, hour1s, charsmax(hour1s), hour2s, charsmax(hour2s), '-')
 hour1 = str_to_num(hour1s)
 hour2 = str_to_num(hour2s)
 
time(h, m, s)
 if(hour1 <= h <= hour2) {
 
new fflags[10]
 get_pcvar_string(g_hour_flags, fflags, charsmax(fflags))
 g_user_privileges[id] = read_flags(fflags)
 }
 }
#endif
}
#if MODE & (1<<1)
public zp_extra_item_selected(id, item_id)
 if(item_id == g_zp_extra_item_number)
 menu_open(id)

public menu_open(id) {
#if MODE & (1<<0)
 if(g_user_privileges[id] & FLAG_E)
 vip_menu(id)
#else
 if(get_user_flags(id) & VIPACCES)
 vip_menu(id)
#endif
#if MODE & (1<<0)
 else if(get_pcvar_num(g_vip_cost_ammo) != 0)
 get_pcvar_num(g_nonvip_tease) ? vip_menu(id) : buy_meniu(id)
#endif
 else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NOT_A_VIP")
 return ZP_PLUGIN_HANDLED
}
 
public vip_menu(id)
{
 if(g_registered_items_count == 0) {
 client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "OFF")
 return;
 }
 new holder[150], menu
 formatex(holder, charsmax(holder), "\r%L", id, "MENU_TOP")
 menu = menu_create(holder, "vip_menu_handler")
 new i, team_check, num[3], ammo_packs, check
 check = 0
 ammo_packs = zp_get_user_ammo_packs(id)
 
switch(zp_get_user_zombie(id)) {
 
case 0: {
 if(zp_get_user_survivor(id)) team_check = ZP_TEAM_SURVIVOR
 else team_check = ZP_TEAM_HUMAN
 }
 case 1: {
 if(zp_get_user_nemesis(id)) team_check = ZP_TEAM_NEMESIS
 else team_check = ZP_TEAM_ZOMBIE
 }
 }
 
if(zp_get_user_zombie(id) && !zp_get_user_nemesis(id)) team_check |= FLAG_A
 else if(!zp_get_user_zombie(id)) team_check |= FLAG_B
 else if(zp_get_user_nemesis(id)) team_check |= FLAG_C
 else if(zp_get_user_survivor(id)) team_check |= FLAG_D
 g_team[id] = team_check
 for(i=0; i < g_registered_items_count; i++) {
 ArrayGetArray(items_database, i, extra_items)
 if(extra_items[i_team] == 0 || g_team[id] & extra_items[i_team]) {
 formatex(holder, charsmax(holder), "%s \r[%s] %s[%d %L]", extra_items[i_name], extra_items[i_description], ammo_packs < extra_items[i_cost] ? "\r" : "\y", extra_items[i_cost], id, "AMMO")
 formatex(num, 2, "%d", i)
 menu_additem(menu, holder, num, 0)
 check++
 }
 }
 if(check == 0) {
 client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NO_ITEMS")
 return;
 }
 menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
 formatex(holder, charsmax(holder), "%L", id, "NEXT")
 menu_setprop(menu, MPROP_NEXTNAME, holder)
 formatex(holder, charsmax(holder), "%L", id, "BACK")
 menu_setprop(menu, MPROP_BACKNAME, holder)
 formatex(holder, charsmax(holder), "%L", id, "EXIT")
 menu_setprop(menu, MPROP_EXITNAME, holder)
 menu_display(id, menu, 0)
}
 
public vip_menu_handler(id, menu, item)
{
 if( item == MENU_EXIT )
 {
 menu_destroy(menu)
 return PLUGIN_HANDLED
 }
 
#if MODE & (1<<0)
 if(get_pcvar_num(g_nonvip_tease) && !(g_user_privileges[id] & FLAG_A)) {
#if MODE & (1<<0)
 buy_meniu(id)
#else
 client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NOT_A_VIP")
#endif
 menu_destroy(menu)
 return PLUGIN_HANDLED;
 }
#else
 if(get_pcvar_num(g_nonvip_tease) && !(get_user_flags(id) & VIPACCES)) {
#if MODE & (1<<0)
 buy_meniu(id)
#else
 client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NOT_A_VIP")
#endif
 menu_destroy(menu)
 return PLUGIN_HANDLED;
 }
#endif
 new team_check
 switch(zp_get_user_zombie(id)) {
 
case 0: {
 if(zp_get_user_survivor(id)) team_check = ZP_TEAM_SURVIVOR
 else team_check = ZP_TEAM_HUMAN
 }
 case 1: {
 if(zp_get_user_nemesis(id)) team_check = ZP_TEAM_NEMESIS
 else team_check = ZP_TEAM_ZOMBIE
 }
 }
 
if(g_team[id] != team_check) {
 
menu_destroy(menu)
 vip_menu(id)
 return PLUGIN_HANDLED;
 }
 
new data[6], iName[64], item_id, ammo_packs
 new aaccess, callback
 menu_item_getinfo(menu, item, aaccess, data,5, iName, 63, callback)
 item_id = str_to_num(data)
 ammo_packs = zp_get_user_ammo_packs(id)
 ArrayGetArray(items_database, item_id, extra_items)
 if(ammo_packs >= extra_items[i_cost]) zp_set_user_ammo_packs(id, ammo_packs - extra_items[i_cost])
 else {
 client_printcolor(id, "/g%s %L", CHAT_PREFIX, id, "MISSING_AMMO", extra_items[i_cost]-ammo_packs)
 if(g_menu_close) menu_destroy(menu)
 else vip_menu(id)
 return PLUGIN_HANDLED
 }
 item_id++
 ExecuteForward(g_extra_item_selected, g_forward_return, id, item_id)
 if (g_forward_return >= ZV_PLUGIN_HANDLED)
 zp_set_user_ammo_packs(id, ammo_packs)
 
if(!g_menu_close) vip_menu(id)
 
menu_destroy(menu)
 return PLUGIN_HANDLED
}
#endif
#if MODE & (1<<0) && MODE & (1<<1)
public buy_meniu(id)
{
 new holder[150], menu
 formatex(holder, charsmax(holder), "\r%L", id, "BUY_MENU_TOP", get_pcvar_num(g_vip_cost_ammo), get_pcvar_num(g_vip_buy_time))
 menu = menu_create(holder, "buy_menu_handler")
 new callback = menu_makecallback("_menu_callback")
 formatex(holder, charsmax(holder), "%L", id, "BUY_MENU_TYPE1")
 menu_additem(menu, holder)
 formatex(holder, charsmax(holder), "%L", id, "BUY_MENU_TYPE2")
 menu_additem(menu, holder, _, _, callback)
 formatex(holder, charsmax(holder), "%L", id, "BUY_MENU_TYPE3")
 menu_additem(menu, holder)
 
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
 formatex(holder, charsmax(holder), "%L", id, "EXIT")
 menu_setprop(menu, MPROP_EXITNAME, holder)
 menu_display(id, menu, 0)
}
 
public buy_menu_handler(id, menu, item)
{
 if( item == MENU_EXIT )
 {
 menu_destroy(menu)
 return PLUGIN_HANDLED
 }

 new ammo_packs = zp_get_user_ammo_packs(id)
 if(item > 0) {
 if(ammo_packs >= get_pcvar_num(g_vip_cost_ammo)) {
 amx_tempadmin(id, item)
 zp_set_user_ammo_packs(id, ammo_packs - get_pcvar_num(g_vip_cost_ammo))
 client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "BOUGHT_VIP", get_pcvar_num(g_vip_buy_time))
 
}
 else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "MISSING_AMMO", get_pcvar_num(g_vip_cost_ammo)-ammo_packs)
 }
 else {
 nick_buy_meniu(id)
 return PLUGIN_HANDLED
 }
 
menu_destroy(menu)
 return PLUGIN_HANDLED
}

public nick_buy_meniu(id)
{
 new buttons_string[16], menu_string[151], menu_item[81], menu, client_password[20]
 get_user_info(id, amx_password_field_string, client_password, charsmax(client_password))
 formatex(menu_string, 150, "\r%L", id, "NICK_BUY_MENU_TOP", client_password)
 menu = menu_create(menu_string, "nick_buy_menu_handler")
 
formatex(menu_item, 80, "%L", id, "NICK_BUY_MENU_TYPE1")
 menu_additem(menu, menu_item)
 formatex(menu_item, 80, "%L", id, "NICK_BUY_MENU_TYPE2")
 menu_additem(menu, menu_item)
 formatex(menu_item, 80, "%L", id, "NICK_BUY_MENU_TYPE3", get_pcvar_num(g_vip_cost_ammo) ,get_pcvar_num(g_vip_buy_time))
 menu_additem(menu, menu_item)
 
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
 formatex(buttons_string, 15, "%L", id, "BACK")
 menu_setprop(menu, MPROP_EXITNAME, buttons_string)
 menu_display(id, menu, 0)
 
}
 
public nick_buy_menu_handler(id, menu, item)
{
 if( item == MENU_EXIT )
 {
 buy_meniu(id)
 return PLUGIN_HANDLED
 }

 switch(item) {
 case 0: {
 generate_password(id)
 set_task(0.2, "menu_delay", id)
 }
 case 1: nick_buy_meniu_sec(id)
 case 2: {
 
new ammo_packs = zp_get_user_ammo_packs(id)
 if(ammo_packs >= get_pcvar_num(g_vip_cost_ammo)) {
 amx_tempadmin(id, 0)
 zp_set_user_ammo_packs(id, ammo_packs - get_pcvar_num(g_vip_cost_ammo))
 client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "BOUGHT_VIP", get_pcvar_num(g_vip_buy_time))
 
}
 else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "MISSING_AMMO", get_pcvar_num(g_vip_cost_ammo)-ammo_packs)
 
menu_destroy(menu)
 return PLUGIN_HANDLED
 }
 }
 
menu_destroy(menu)
 return PLUGIN_HANDLED
}
public nick_buy_meniu_sec(id)
{
 new holder[150], menu
 formatex(holder, charsmax(holder), "\r%L", id, "NICK_BUY_MENU_SEC_TOP")
 menu = menu_create(holder, "nick_buy_menu_sec_handler")
 
formatex(holder, charsmax(holder), "%L", id, "BACK")
 menu_additem(menu, holder)
 
menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
 menu_display(id, menu, 0)
}
 
public nick_buy_menu_sec_handler(id, menu, item)
{
 nick_buy_meniu(id)
 menu_destroy(menu)
 return PLUGIN_HANDLED;
}

public _menu_callback(id, menu, item) {
 
if(item == 1) {
 new authid[30]
 get_user_authid(id, authid, charsmax(authid))
 if(equal(authid, "STEAM_0", 7)) return ITEM_ENABLED
 else return ITEM_DISABLED
 }
 
return ITEM_ENABLED
}

public menu_delay(id) nick_buy_meniu(id)
#endif
public message_cur_weapon(msg_id, msg_dest, msg_entity)
{
 if (!get_pcvar_num(g_unlimited_clip)) return
#if MODE & (1<<0)
 if (!(g_user_privileges[msg_entity] & FLAG_C)) return
#else
 if (!(get_user_flags(msg_entity) & VIPACCES)) return
#endif
 if (!is_user_alive(msg_entity) || get_msg_arg_int(1) != 1) return
 
static weapon, clip
 weapon = get_msg_arg_int(2)
 clip = get_msg_arg_int(3)
 
if (MAXCLIP[weapon] > 2)
 {
 set_msg_arg_int(3, get_msg_argtype(3), MAXCLIP[weapon])
 
if (clip < 2)
 {
 static wname[32], weapon_ent
 get_weaponname(weapon, wname, sizeof wname - 1)
 weapon_ent = find_ent_by_owner(-1, wname, msg_entity)
 fm_set_weapon_ammo(weapon_ent, MAXCLIP[weapon])
 }
 }
}

public HUDReset()
 setVip()
 
public setVip()
{
 new players[32], pNum
 get_players(players, pNum, "a")

 for (new i = 0; i < pNum; i++)
 {
 new id = players[i]
#if MODE & (1<<0)
if (g_user_privileges[id] & FLAG_A)
#else
 if (get_user_flags(id) & VIPACCES)
#endif
 {
 message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
 write_byte(id)
 write_byte(4)
 message_end()
 }
 }
 return PLUGIN_HANDLED
}

public print_adminlist(user)
{
 new adminnames[33][32]
 new message[256]
 new contactinfo[256], contact[112]
 new id, count, x, len
 
for(id = 1 ; id <= maxplayers ; id++)
 if(is_user_connected(id))
#if MODE & (1<<0)
 if(g_user_privileges[id] & FLAG_A)
#else
 if(get_user_flags(id) & VIPACCES)
#endif
 get_user_name(id, adminnames[count++], 31)

 len = format(message, 255, "%L ", id, "VIP_STATUS")
 if(count > 0) {
 for(x = 0 ; x < count ; x++) {
 len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
 if(len > 96 ) {
 client_printcolor(user, "/g%s", message)
 len = format(message, 255, "")
 }
 }
 client_printcolor(user, "/g%s", message)
 }
 else {
 len += format(message[len], 255-len, "%L ", id, "VIP_STATUS_N")
 client_printcolor(user, "/g%s", message)
 }
 
get_cvar_string("amx_contactinfo", contact, 63)
 if(contact[0])  {
 format(contactinfo, 111, "%L ", id, "VIP_STATUS_CON", contact)
 client_printcolor(user, "/g%s", contactinfo)
 }
 
}

public client_disconnect(id)
{
 jumpnum[id] = 0
 g_damage[id] = 0.0
 dojump[id] = false
}

public client_PreThink(id)
{
#if MODE & (1<<0)
 if(!is_user_alive(id) || !g_jumps || (!(g_user_privileges[id] & FLAG_B))) return PLUGIN_CONTINUE
#else
 if(!is_user_alive(id) || !g_jumps || (!(get_user_flags(id) & MJACCES))) return PLUGIN_CONTINUE
#endif
 static nbut, obut, fflags
 nbut= get_user_button(id)
 obut = get_user_oldbutton(id)
 fflags = get_entity_flags(id)
 
if((nbut & IN_JUMP) && !(fflags & FL_ONGROUND) && !(obut & IN_JUMP))
 {
 if(jumpnum[id] < chache_g_jumps &&
((g_bit & FLAG_D && zp_get_user_nemesis(id)) ||
(g_bit & FLAG_C && zp_get_user_survivor(id)) ||
(g_bit & FLAG_A && !zp_get_user_zombie(id)) ||
 (g_bit & FLAG_B && zp_get_user_zombie(id) && !zp_get_user_nemesis(id))))
 {
 dojump[id] = true
 jumpnum[id]++
 return PLUGIN_CONTINUE
 }
 }
 if((nbut & IN_JUMP) && (fflags & FL_ONGROUND))
 {
 jumpnum[id] = 0
 return PLUGIN_CONTINUE
 }
 
return PLUGIN_CONTINUE
}

public client_PostThink(id)
{
#if MODE & (1<<0)
 if(!is_user_alive(id) || !get_pcvar_num(g_jumps) || (!(g_user_privileges[id] & FLAG_B))) return PLUGIN_CONTINUE
#else
 if(!is_user_alive(id) || !get_pcvar_num(g_jumps) || (!(get_user_flags(id) & MJACCES))) return PLUGIN_CONTINUE
#endif
 if(dojump[id] == true)
 {
 static Float:velocity[3]
entity_get_vector(id,EV_VEC_velocity,velocity)
 velocity[2] = random_float(265.0,285.0)
 entity_set_vector(id,EV_VEC_velocity,velocity)
 dojump[id] = false
 return PLUGIN_CONTINUE
 }
 return PLUGIN_CONTINUE
}

public ShowMotd(id)
 show_motd(id, "vip.txt")
#if MODE & (1<<0)
public reload_vips() {
 
if(database_holder) ArrayDestroy(database_holder)
 database_holder = ArrayCreate(database_items)
 new configsDir[64]
 get_configsdir(configsDir, 63)
 format(configsDir, 63, "%s/vips.ini", configsDir)
 
new File=fopen(configsDir,"r");
 
if (File)
 {
 static Text[512], Flags[32], AuthData[50], Privileges_Flags[32], Password[50]
 while (!feof(File))
 {
 fgets(File,Text,sizeof(Text)-1);
 
trim(Text);
 
// comment
 if (Text[0]==';')
{
 continue;
 }
 
Flags[0]=0;
 AuthData[0]=0;
 Privileges_Flags[0]=0;
 Password[0]=0;
 
// not enough parameters
 if (parse(Text,AuthData,sizeof(AuthData)-1,Password,sizeof(Password)-1,Privileges_Flags,sizeof(Privileges_Flags)-1,Flags,sizeof(Flags)-1) < 2)
 {
 continue;
 }

 vips_database[auth] = AuthData
 vips_database[password] = Password
 vips_database[accessflags] = read_flags(Privileges_Flags)
 vips_database[flags] = read_flags(Flags)
 ArrayPushArray(database_holder, vips_database)
 }
 
fclose(File);
 }
 else log_amx("Error: vips.ini file doesn't exist")
}
#endif
#if MODE & (1<<0) && MODE & (1<<1)
public check_date()
{
 new holder[20]
 new y, m ,d
 date(y, m, d)
 format(holder, charsmax(holder), "m%dd%dy%d", m, d, y)

 new configdir[200]
 get_configsdir(configdir,199)

 new configfile1[200]

 format(configfile1,199,"%s/vips.ini",configdir)
 
new text[512], len
 new pnum = file_size(configfile1,1)
 for(new i = 1; i < pnum; i++)
 {
 read_file(configfile1, i, text, 511, len)
 if ( contain(text, holder) != -1 )
{
 DeleteLine(configfile1, i)
 }
 }
 return PLUGIN_HANDLED
}

public amx_tempadmin(id, type)
{
new authid[31], ip[31], name[51], client_password[20], p_flags[21], sdate[20]
 get_pcvar_string(g_vip_buy_flags, p_flags, charsmax(p_flags))
 get_user_authid(id, authid, charsmax(authid))
 get_user_ip(id, ip, charsmax(ip), 1)
 get_user_name(id, name, charsmax(name))
 get_user_info(id, amx_password_field_string, client_password, charsmax(client_password))
 
get_date(get_pcvar_num(g_vip_buy_time), sdate, charsmax(sdate))
 
new holder[200]
 switch(type) {
 case 0: formatex(holder, charsmax(holder), "^"%s^" ^"%s^" ^"%s^" ^"b^"; Exp: %s", name, client_password, p_flags, sdate)
 case 1: formatex(holder, charsmax(holder), "^"%s^" ^"^" ^"%s^" ^"ce^"; Exp: %s", authid, p_flags, sdate)
 case 2: formatex(holder, charsmax(holder), "^"%s^" ^"^" ^"%s^" ^"de^"; Exp: %s", ip, p_flags, sdate)
 }
 
new configdir[200]
 get_configsdir(configdir, 199)
 new configfile1[200]
 format(configfile1,199,"%s/vips.ini",configdir)
 write_file(configfile1, holder, -1)
 server_cmd("amx_reloadvips")
 set_task(1.0, "set_flags", id)
 
}

DeleteLine( const szFilename[ ], const iLine )
{
 new iFile = fopen( szFilename, "rt" );
 if( !iFile )
 {
 return;
 }
 static const szTempFilename[ ] = "delete_line.txt";
 new iTempFile = fopen( szTempFilename, "wt" );
    
 new szData[ 256 ], iLineCount, bool:bReplaced = false;
 while( !feof( iFile ) )
 {
 fgets( iFile, szData, 255 );
        
 if( iLineCount++ == iLine )
 {
 bReplaced = true;
 }
 else
 {
 fputs( iTempFile, szData );
 }
 }
    
 fclose( iFile );
 fclose( iTempFile );
    
 if( bReplaced )
 {
 delete_file( szFilename );
        
 while( !rename_file( szTempFilename, szFilename, 1 ) ) { }
 }
 else
 {
 delete_file( szTempFilename );
 }
}

stock get_date(days, string[], chars) {
 
new y, m, d
 date(y, m ,d)
 
d+=days
 
new go = true
 while(go) {
 switch(m) {
 case 1,3, 5, 7, 8, 10: {
 if(d>31) { d=d-31; m++; }
 else go = false
 }
 case 2: {
 if(d>28) { d=d-28; m++; }
 else go = false
 }
 case 4, 6, 9, 11: {
 if(d>30) { d=d-30; m++; }
 else go = false
 }
 case 12: {
 if(d>31) { d=d-31; y++; m=1; }
 else go = false
 }
 }
 }
 formatex(string, chars, "m%dd%dy%d", m, d ,y)
}
#endif

stock client_printcolor(id, const message[], any:...)
{
 static buffer[512], argscount
 argscount = numargs()
 
if (!id) {
 
static players[32], num, player, i, i2
 get_players(players, num , "ch")
 
for (i = 0; i < num; i++) {
 
player = players[i]
 
static changed[5], changedcount
 changedcount = 0
 
for (i2 = 2; i2 < argscount; i2++)
 {
 if (getarg(i2) == LANG_PLAYER)
 {
 setarg(i2, 0, player)
 changed[changedcount] = i2
 changedcount++
 }
 }
 
vformat(buffer, charsmax(buffer), message, 3)
 
replace_all(buffer, charsmax(buffer), "/g", "^4")
 replace_all(buffer, charsmax(buffer), "/y", "^1")
 
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player)
 write_byte(player)
 write_string(buffer)
 message_end()
 
for (i2 = 0; i2 < changedcount; i2++)
 setarg(changed[i2], 0, LANG_PLAYER)
 }
 }
 else {
 
vformat(buffer, charsmax(buffer), message, 3)
 
replace_all(buffer, charsmax(buffer), "/g", "^4")
 replace_all(buffer, charsmax(buffer), "/y", "^1")
 
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, id)
 write_byte(id)
 write_string(buffer)
 message_end()
 }
}

stock fm_find_ent_by_owner(entity, const classname[], owner)
{
 while ((entity = engfunc(EngFunc_FindEntityByString, entity, "classname", classname)) && pev(entity, pev_owner) != owner) {}
 
return entity;
}

stock fm_set_weapon_ammo(entity, amount)
{
 set_pdata_int(entity, OFFSET_CLIPAMMO, amount, OFFSET_LINUX_WEAPONS);
}
#if MODE & (1<<0)
public set_flags(id) {
 
static authid[31], ip[31], name[51], index, client_password[30], size, log_flags[11]
 get_user_authid(id, authid, 30)
 get_user_ip(id, ip, 30, 1)
 get_user_name(id, name, 50)
 get_user_info(id, amx_password_field_string, client_password, charsmax(client_password))
 
g_user_privileges[id] = 0
 size = ArraySize(database_holder)
 for(index=0; index < size ; index++) {
 ArrayGetArray(database_holder, index, vips_database)
 if(vips_database[flags] & FLAG_D) {
 if(equal(ip, vips_database[auth])) {
 if(!(vips_database[flags] & FLAG_E)) {
 if(equal(client_password, vips_database[password]))
 g_user_privileges[id] = vips_database[accessflags]
 else if(vips_database[flags] & FLAG_A) {
 server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")
 break
 }
 }
 else g_user_privileges[id] = vips_database[accessflags]
 get_flags(vips_database[accessflags], log_flags, 10)
 log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)
 break
 }
 }
 else if(vips_database[flags] & FLAG_C) {
 if(equal(authid, vips_database[auth])) {
 if(!(vips_database[flags] & FLAG_E)) {
 if(equal(client_password, vips_database[password]))
 g_user_privileges[id] = vips_database[accessflags]
 else if(vips_database[flags] & FLAG_A) {
 server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")
 break
 }
 }
 else g_user_privileges[id] = vips_database[accessflags]
 get_flags(vips_database[accessflags], log_flags, 10)
 log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)
 break
 }
 }
 else {
 if(vips_database[flags] & FLAG_K) {
 if((vips_database[flags] & FLAG_B && contain(name, vips_database[auth]) != -1) || equal(name, vips_database[auth])) {
 if(!(vips_database[flags] & FLAG_E)) {
 if(equal(client_password, vips_database[password]))
 g_user_privileges[id] = vips_database[accessflags]
 else if(vips_database[flags] & FLAG_A) {
 server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")
 break
 }
 }
 else g_user_privileges[id] = vips_database[accessflags]
 get_flags(vips_database[accessflags], log_flags, 10)
 log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)
 break
 }
 }
 else {
 if((vips_database[flags] & FLAG_B && containi(name, vips_database[auth]) != -1) || equali(name, vips_database[auth])) {
 if(!(vips_database[flags] & FLAG_E)) {
 if(equal(client_password, vips_database[password]))
 g_user_privileges[id] = vips_database[accessflags]
 else if(vips_database[flags] & FLAG_A) {
 server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")
 break
 }
 }
 else g_user_privileges[id] = vips_database[accessflags]
 get_flags(vips_database[accessflags], log_flags, 10)
 log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)
 break
 }
 }
 }
 }
}
#endif
#if MODE & (1<<0) && MODE & (1<<1)
stock generate_password(id) {
 
new password_holder[30]
 formatex(password_holder, charsmax(password_holder), "%d%d%d%d%d", random(10), random(10), random(10), random(10), random(10))
 client_cmd(id, "setinfo %s %s", amx_password_field_string, password_holder)
}
#endif
#if MODE & (1<<0)
public native_zv_get_user_flags(id)
 return g_user_privileges[id]
#endif
#if MODE & (1<<1)
public native_zv_register_extra_item(const item_name[], const item_discription[], item_cost, item_team)
{
 if(!items_database) items_database = ArrayCreate(items)
 
param_convert(1)
 param_convert(2)
 copy(extra_items[i_name], 30, item_name)
 copy(extra_items[i_description], 30, item_discription)
 extra_items[i_cost] = item_cost
 extra_items[i_team] = item_team
 ArrayPushArray(items_database, extra_items)
 g_registered_items_count++

 return g_registered_items_count
}

public plugin_end() if(items_database) ArrayDestroy(items_database)
#endif
Breakdown
Breakdown

Zm_vip plugin Script12
Liitus : 15/02/2014
Postitusi : 3559

PostitamineBreakdown 01.03.14 19:44

Eesti keel uppus lompi ära?
Heaven123
Heaven123
Juunior
Liitus : 16/01/2014
Postitusi : 11

PostitamineHeaven123 01.03.14 19:50

ma olen paha tean eesti keelt
Kuulisalv.
Kuulisalv.
Juunior
Liitus : 26/01/2014
Postitusi : 24

PostitamineKuulisalv. 01.03.14 19:56

Omfg, kuule õpi eesti keel selgeks, siis tule tagasi siis võin sulle midagi öelda! ;)
Heaven123
Heaven123
Juunior
Liitus : 16/01/2014
Postitusi : 11

PostitamineHeaven123 01.03.14 20:13

I need help with the plugin ,to put only vip model for Vips
how to make that rhough the users.ini add vip priveleges and not though vips.ini
hel please sort it out
in many thanks in advance.
Tonight
Tonight

Zm_vip plugin Vetera11
Liitus : 19/02/2012
Postitusi : 17983

PostitamineTonight 01.03.14 20:14

Flage loeb ta vastavalt sellele reale:
Kood:
format(configsDir, 63, "%s/vips.ini", configsDir)
Muuda igal pool see vips.ini ära users.ini-ks.

Skinide asjast ei saanud eriti aru, proovi uuesti seletada.
Heaven123
Heaven123
Juunior
Liitus : 16/01/2014
Postitusi : 11

PostitamineHeaven123 01.03.14 20:43

how to make a separate VIP model for Vips?
how to make a separate Admin Model for Admins?
Heaven123
Heaven123
Juunior
Liitus : 16/01/2014
Postitusi : 11

PostitamineHeaven123 01.03.14 20:47

need to change the flag zm _vip.sma?
what flag , show plz me
Tonight
Tonight

Zm_vip plugin Vetera11
Liitus : 19/02/2012
Postitusi : 17983

PostitamineTonight 02.03.14 0:51

I will give you an example for different models :
Kood:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

public plugin_init() {
        register_plugin("VIP/Admin Skin", "1.0", "Heaven123")
        register_event("ResetHUD", "resetModel", "b")
        return PLUGIN_CONTINUE
}

public plugin_precache() {
        precache_model("models/player/admin/admin.mdl")
        precache_model("models/player/vip/vip.mdl")

        return PLUGIN_CONTINUE
}

public resetModel(id, level, cid) {
        if (get_user_flags(id) & ADMIN_KICK) {
                    cs_set_user_model(id, "admin")
                }
                else if (get_user_flags(id) & ADMIN_RESERVATION) {
                    cs_set_user_model(id, "vip")
                }
                else {
                        cs_reset_user_model(id)
                }
        }

I used:
ADMIN_RESERVATION //Flag "b" for VIP
ADMIN_KICK //Flag "c" for Admin

You have to change model folders.

zm_vip.sma flag change:
Kood:
#define VIPACCES ADMIN_LEVEL_H
#define MJACCES ADMIN_LEVEL_H
Change ADMIN_LEVEL_H.

Vaata eelmist teemat Vaata järgmist teemat Tagasi üles

Soovid vestluses osaleda?

Selleks logi sisse või tee endale kasutaja.

Liitu foorumiga

Tee endale kasutaja ning osale aruteludes.


Tee uus kasutaja

Logi sisse

Omad foorumis juba kasutajat? Logi sisse.


Logi sisse

 
Permissions in this forum:
Sa ei saa vastata siinsetele teemadele