ZM VIP Remake
Scris: Mie Noi 27, 2024 1:37 pm
Descriere: Acesta e VIP-ul normal doar ca mai optimizat , aici conectarea e cu setinfo parola 1,inclusiv si unu , in consola scrii asa daca ai configs incarcat(cum iti dai seama de asta? pur si simplu iti scrie ceva in consola si nu poti sa te conectezi de asta fac si acest mic tutorial mai jos):
Descarcare: https://www.mediafire.com/file/oi0rz6b5xhnwoz6/ZM+VIP+Remake.rar/file
Nume: ZM VIP Remake
Versiune: 1.7.2 modificat
Link oficial: https://forums.alliedmods.net/showthread.php?p=1098857
Instalare:
1. Fisierul zm_vip_remake.sma il puneti in addons/amxmodx/scripting
2. Fisierul zm_vip_remake.amxx il puneti in addons/amxmodx/plugins
3. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la urma:
4. Alti pasi necesari....
Cvar-uri (se adauga in fisierul amxmodx\configs\amxx.cfg):
Creeaza un fisier vips.ini in configs si acolo iti dai VIP
Imagini: -
Cod: Selectaţi tot
setinfo rate ""
Cod: Selectaţi tot
setinfo model ""
Cod: Selectaţi tot
setinfo parolapecareopuiTU 1
Cod: Selectaţi tot
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <engine>
#include <fun>
#include <hamsandwich>
#include <zombieplague>
#define CHAT_PREFIX "[VIP]"
#define HAPPYHOURSTART 00
#define HAPPYHOURSTOP 05
// 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)
#if cellbits == 32
const OFFSET_CLIPAMMO = 51
#else
const OFFSET_CLIPAMMO = 65
#endif
const OFFSET_LINUX_WEAPONS = 4
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 }
new g_user_privileges[33]
enum _:database_items
{
auth[50],
password[50],
accessflags
}
new vips_database[database_items]
new Array:database_holder
const ZV_PLUGIN_HANDLED = 97
enum _:items
{
i_name[31],
i_description[31],
i_cost,
i_team
}
static const CONTACT[] = ""
new happy_hour_on, g_bit,g_unlimited_clip, maxplayers, g_msgSayText, g_forward_return, g_extra_item_selected, g_registered_items_count, Array:items_database, extra_items[items], g_zp_extra_item_number;
new jumpnum[33], bool:dojump[33], Float:g_damage[33], g_team[33];
public plugin_init()
{
register_plugin("ZM VIP", "1.7.2", "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")
g_unlimited_clip = register_cvar("zp_vip_unlimited_ammo", "0")
maxplayers = get_maxplayers();
g_msgSayText = get_user_msgid("SayText");
register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER);
register_dictionary("zm_vip.txt");
register_concmd("amx_reloadvips", "reload_vips", ADMIN_CFG);
reload_vips();
register_message(get_user_msgid("CurWeapon"), "message_cur_weapon")
register_clcmd("say /vm", "menu_open");
new temp[31];
formatex(temp, charsmax(temp), "%L", LANG_SERVER, "VIP_EXTRA_NAME");
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)
register_clcmd("say /vips", "print_adminlist")
register_clcmd("say /vip", "ShowMotd")
}
public message_cur_weapon(msg_id, msg_dest, msg_entity)
{
if (!get_pcvar_num(g_unlimited_clip)) return
if (!(g_user_privileges[msg_entity] & FLAG_C)) return
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)
set_pdata_int(weapon_ent, OFFSET_CLIPAMMO, MAXCLIP[weapon], OFFSET_LINUX_WEAPONS);
}
}
}
public chache_cvars()
{
g_bit = read_flags("ab");
static h, m, s;
time(h, m, s);
if(HAPPYHOURSTART <= h <= HAPPYHOURSTOP)
happy_hour_on = true;
else
happy_hour_on = false;
}
public plugin_natives()
{
register_native("zv_register_extra_item", "native_zv_register_extra_item", 1);
register_native("zv_get_user_flags", "native_zv_get_user_flags", 1);
}
public FwdHamPlayerSpawnPost(id)
{
if(!is_user_alive(id))
return HAM_IGNORED;
if(!(g_user_privileges[id] & FLAG_A))
return PLUGIN_HANDLED;
if(pev(id, pev_armorvalue) < 100)
set_pev(id, pev_armorvalue, 100.0);
return HAM_IGNORED;
}
public fw_PlayerKilled_Post(victim, attacker)
{
if(1 <= attacker <= maxplayers && g_user_privileges[attacker] & FLAG_A)
{
if(is_user_alive(attacker) && zp_get_user_zombie(attacker) && !(zp_get_user_nemesis(attacker)))
{
set_user_health(attacker, (get_user_health(attacker) + 50))
zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + 2)
}
if(happy_hour_on)
{
set_user_frags(attacker, get_user_frags(attacker) + 1);
zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + 1);
}
}
}
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(victim == attacker)
return HAM_IGNORED;
if(g_user_privileges[victim] & FLAG_A)
{
if(damage_type & DMG_FALL)
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(g_user_privileges[attacker] & FLAG_D)
{
if(150.0 > damage)
{
g_damage[attacker] += damage;
if(g_damage[attacker] > 150.0)
{
zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + 1);
g_damage[attacker] -= 150.0;
}
}
}
return HAM_IGNORED
}
public zp_user_infected_post(id, infector, nemesis)
{
setVip()
if(!(1<=infector<=maxplayers))
return;
if(g_user_privileges[infector] & FLAG_A)
{
if(is_user_alive(infector))
set_user_health(infector, (get_user_health(infector) + 50));
zp_set_user_ammo_packs(infector, zp_get_user_ammo_packs(infector) + 2)
if(happy_hour_on)
{
set_user_frags(infector, get_user_frags(infector) + 1);
zp_set_user_ammo_packs(infector, zp_get_user_ammo_packs(infector) + 1);
}
}
}
public client_authorized(id)
{
jumpnum[id] = 0;
g_damage[id] = 0.0;
dojump[id] = false;
set_flags(id);
if(g_user_privileges[id] & FLAG_A)
{
new name[32];
get_user_name(id, name, charsmax(name));
client_printcolor(0, "/g[Zombie Ultimate] /yVIP /g%s /yconnected", name );
}
else
{
static h, m, s;
time(h, m, s);
if(HAPPYHOURSTART <= h <= HAPPYHOURSTOP)
g_user_privileges[id] = read_flags("abcde")
}
}
public zp_extra_item_selected(id, item_id)
if(item_id == g_zp_extra_item_number)
menu_open(id)
public menu_open(id)
{
if(g_user_privileges[id] & FLAG_E)
vip_menu(id)
else
client_printcolor(id, "/g[Zombie Ultimate] /yYou are not a /gVIP" );
return ZP_PLUGIN_HANDLED
}
public vip_menu(id)
{
if(g_registered_items_count == 0)
{
client_printcolor(id, "/g[ZM] /yOFF" );
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(!(g_user_privileges[id] & FLAG_A))
{
client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NOT_A_VIP");
menu_destroy(menu);
return PLUGIN_HANDLED;
}
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);
menu_destroy(menu);
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);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
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 (g_user_privileges[id] & FLAG_A)
{
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], message[256], contactinfo[256], contact[112], id, count, x, len;
for(id = 1 ; id <= maxplayers ; id++)
if(is_user_connected(id))
if(g_user_privileges[id] & FLAG_A)
get_user_name(id, adminnames[count++], charsmax(adminnames[]));
len = format(message, 255, "/g[ZM] /yGold Members: /g" );
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, "%s", message);
len = format(message, 255, "");
}
}
client_printcolor(user, "%s", message);
}
else {
len += format(message[len], 255-len, "/yNo Gold Members" );
client_printcolor(user, "%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_disconnected(id)
{
jumpnum[id] = 0
g_damage[id] = 0.0
dojump[id] = false
}
public client_PreThink(id)
{
if(!is_user_alive(id) || (!(g_user_privileges[id] & FLAG_B)))
return PLUGIN_CONTINUE
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] < 1 &&
((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(!is_user_alive(id) || (!(g_user_privileges[id] & FLAG_B)))
return PLUGIN_CONTINUE;
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");
public reload_vips()
{
if(database_holder)
ArrayDestroy(database_holder);
database_holder = ArrayCreate(database_items)
new configsDir[64];
get_configsdir(configsDir, charsmax(configsDir));
formatex(configsDir, charsmax(configsDir), "%s/vips.ini", configsDir)
new File = fopen(configsDir, "r");
if (File)
{
new Text[512], AuthData[50], Privileges_Flags[32], Password[50];
while(!feof(File))
{
fgets(File,Text,sizeof(Text)-1);
trim(Text);
if(Text[0] == ';')
continue;
AuthData[0] = 0;
Privileges_Flags[0] = 0;
Password[0] = 0;
if(parse(Text, AuthData, charsmax(AuthData), Password, charsmax(Password), Privileges_Flags, charsmax(Privileges_Flags)) < 2)
continue;
vips_database[auth] = AuthData
vips_database[password] = Password
vips_database[accessflags] = read_flags(Privileges_Flags)
ArrayPushArray(database_holder, vips_database)
}
fclose(File);
}
else log_amx("Error: vips.ini file doesn't exist")
}
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();
}
}
public set_flags(id)
{
new authid[35], ip[31], name[32], index, client_password[30], size, log_flags[11];
get_user_authid(id, authid, charsmax(authid));
get_user_ip(id, ip, charsmax(ip), 1);
get_user_name(id, name, charsmax(name));
g_user_privileges[id] = 0
size = ArraySize(database_holder)
for(index=0; index < size ; index++)
{
ArrayGetArray(database_holder, index, vips_database)
if(equali(name, vips_database[auth]))
{
get_user_info(id, vips_database[password], client_password, charsmax(client_password))
if(client_password[0] == '1')
g_user_privileges[id] = vips_database[accessflags]
else
{
server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")
break;
}
get_flags(vips_database[accessflags], log_flags, 10)
log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)
break
}
}
}
public native_zv_get_user_flags(id)
return g_user_privileges[id]
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);
}
Versiune: 1.7.2 modificat
Link oficial: https://forums.alliedmods.net/showthread.php?p=1098857
Instalare:
1. Fisierul zm_vip_remake.sma il puneti in addons/amxmodx/scripting
2. Fisierul zm_vip_remake.amxx il puneti in addons/amxmodx/plugins
3. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la urma:
Cod: Selectaţi tot
zm_vip_remake.amxx
Cvar-uri (se adauga in fisierul amxmodx\configs\amxx.cfg):
Cod: Selectaţi tot
zp_vip_unlimited_ammo 1 - activare / 0 - dezactivare
Cod: Selectaţi tot
; "nume" "parola" "abcde"