Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Помогите с vip

Статус пользователя Andrey777best
сообщение 21.4.2015, 16:28
Сообщение #1


Стаж: 13 лет
Город: Харьков

Сообщений: 1191
Благодарностей: 144
Полезность: 1

Всем привет есть вип меню с дамагером, когда включаешь дамагер у некоторых игроков бывает что тоже включается, может у всех, сказали только двое, потом пропадает.
Можете глянуть что ту поправить?
Скрытый текст
Код:
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <hamsandwich>

#define VIP_FLAG ADMIN_LEVEL_H

new bool: g_bDamage[33]
new g_MsgSync, g_MaxPlayers
new round_number, g_round
new bool: has_used[32]

new const weapon_name[][] = { "Deagle", "USP", "AK47", "M4a1", "FAMAS", "AWP", "SCOUT" }

#define is_user_valid_connected(%1) (1 <= %1 <= g_MaxPlayers && is_user_connected(%1))

public plugin_init()
{
register_plugin("VIP Weapons", "1.1", "Player")

g_round = register_cvar("amx_vip_give", "3")

register_clcmd("vipmenu", "showWeaponMenu")

register_clcmd("say /adminka", "ShowMotdADM")

register_event("HLTV", "event_RoundStart", "a", "1=0", "2=0")
register_logevent("event_RestartRound", 2, "1&Restart_Round_")
register_event("Damage", "event_Damage", "b", "2!0", "3=0", "4!0")

RegisterHam(Ham_Spawn, "player", "fw_PlayerRespawn", 1)

g_MsgSync = CreateHudSyncObj()
g_MaxPlayers = get_maxplayers()
}

public client_authorized(id)
{
if(!(get_user_flags(id) & VIP_FLAG))
return

client_cmd(id, "bind ^"F5^" ^"vipmenu^"")
}

public showWeaponMenu(id)
{
if(!(get_user_flags(id) & VIP_FLAG))
{
ChatColor(id, "^3[^4|+18>>Сервер^3]^1 Только для ^3V.I.P^1 персон!")
return PLUGIN_HANDLED
}

new menu = menu_create("\w[\yV.I.P\w] \rОружейка:", "giveWeapon")

new szIteamName[64]

for(new i = 0; i < sizeof(weapon_name); i++)
{
formatex(szIteamName, charsmax(szIteamName), "\r[\y%s\r]", weapon_name[i])
menu_additem(menu, szIteamName)
}

menu_addblank(menu, 0)

formatex(szIteamName, charsmax(szIteamName), "Дамагер \r[%sключен\r]", g_bDamage[id] ? "\yВ" : "\dВы")
menu_additem(menu, szIteamName)

menu_addblank(menu, 1)

menu_setprop(menu, MPROP_PERPAGE, 0)
menu_additem(menu, "Выход")
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)

menu_display(id, menu)

return PLUGIN_HANDLED
}

public giveWeapon(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}

if(item != 7)
{
if(!is_user_alive(id))
{
ChatColor(id, "^3[^4|+18>>Сервер^3]^1 Вы мертвы!")
return PLUGIN_HANDLED
}

if(round_number < get_pcvar_num(g_round))
{
ChatColor(id, "^3[^4|+18>>Сервер^3]^1 Доступно с %d раунда!", get_pcvar_num(g_round))
return PLUGIN_HANDLED
}

if(has_used[id])
{
ChatColor(id, "^3[^4|+18>>Сервер^3]^1 Вы уже использовали! Подождите...")
return PLUGIN_HANDLED
}

has_used[id] = true

switch(item)
{
case 0:
{
DropSecondaryWeapons(id)
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id , CSW_DEAGLE, 35)
}
case 1:
{
DropSecondaryWeapons(id)
give_item(id, "weapon_usp")
cs_set_user_bpammo(id , CSW_USP, 100)
}
case 2:
{
DropPrimaryWeapons(id)
give_item(id, "weapon_ak47")
cs_set_user_bpammo(id , CSW_AK47, 90)
}
case 3:
{
DropPrimaryWeapons(id)
give_item(id, "weapon_m4a1")
cs_set_user_bpammo(id , CSW_M4A1, 90)
}
case 4:
{
DropPrimaryWeapons(id)
give_item(id, "weapon_famas")
cs_set_user_bpammo(id , CSW_FAMAS, 90)
}
case 5:
{
DropPrimaryWeapons(id)
give_item(id, "weapon_awp")
cs_set_user_bpammo(id , CSW_AWP, 30)
}
case 6:
{
DropPrimaryWeapons(id)
give_item(id, "weapon_scout")
cs_set_user_bpammo(id , CSW_SCOUT, 90)
}
}
}
else
{
g_bDamage[id] = !g_bDamage[id]

showWeaponMenu(id)
}
return PLUGIN_HANDLED
}

public fw_PlayerRespawn(id)
{
if(!is_user_alive(id) || !(get_user_flags(id) & VIP_FLAG))
return

DropSecondaryWeapons(id)

give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 35)

give_item(id,"weapon_hegrenade")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_smokegrenade")
give_item(id,"item_assaultsuit")
give_item(id, "item_thighpack")

message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
write_byte(id)
write_byte(4)
message_end()
}

public ShowMotdADM(id)
show_motd(id, "adminka.txt", "Покупка - Админки!")

public ShowMotdVIP(id)
show_motd(id, "vip.txt", "Покупка - |+18>>Сервер!")

public event_RoundStart()
{
round_number++
arrayset(has_used, false, 32)
}

public event_RestartRound()
round_number = 0

public event_Damage(id)
{
if(!is_user_valid_connected(id))
return

static attacker; attacker = get_user_attacker(id)
static damage; damage = read_data(2)

if(is_user_valid_connected(attacker) && g_bDamage[attacker])
{
set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
ShowSyncHudMsg(attacker, g_MsgSync, "%i", damage)
}
}

stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)

replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color
replace_all(msg, 190, "!team2", "^0") // Team2 Color

if(id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}

stock DropPrimaryWeapons(id)
{
static weapons[32], num;
const PRIMARY_WEAPONS_BIT_SUM = ((1<<3)|(1<<5)|(1<<7)|(1<<8)|(1<<12)|(1<<13)|(1<<14)|(1<<15)|(1<<18)|(1<<19)|(1<<20)|(1<<21)|(1<<22)|(1<<23)|(1<<24)|(1<<27)|(1<<28)|(1<<30));
get_user_weapons(id, weapons, num);

for (new i = 0; i < num; i++)
if((1<<weapons[i]) & PRIMARY_WEAPONS_BIT_SUM)
fm_strip_user_gun(id, weapons[i])
}

stock DropSecondaryWeapons(id)
{
static weapons[32], num;
const SECONDARY_WEAPONS_BIT_SUM = ((1<<1)|(1<<10)|(1<<11)|(1<<16)|(1<<17)|(1<<26));
get_user_weapons(id, weapons, num);

for (new i = 0; i < num; i++)
if((1<<weapons[i]) & SECONDARY_WEAPONS_BIT_SUM)
fm_strip_user_gun(id, weapons[i])
}

stock bool:fm_strip_user_gun(index, wid = 0, const wname[] = "")
{
new ent_class[32];
if (!wid && wname[0])
copy(ent_class, sizeof ent_class - 1, wname);
else
{
new weapon = wid, clip, ammo;
if (!weapon && !(weapon = get_user_weapon(index, clip, ammo)))
return false;

get_weaponname(weapon, ent_class, sizeof ent_class - 1);
}

new ent_weap = fm_find_ent_by_owner(-1, ent_class, index);
if (!ent_weap)
return false;

engclient_cmd(index, "drop", ent_class);

new ent_box = pev(ent_weap, pev_owner);
if (!ent_box || ent_box == index)
return false;

dllfunc(DLLFunc_Think, ent_box);

return true;
}

stock fm_find_ent_by_owner(index, const classname[], owner, jghgtype = 0)
{
new strtype[11] = "classname", ent = index;
switch (jghgtype) {
case 1: strtype = "target";
case 2: strtype = "targetname";
}

while ((ent = engfunc(EngFunc_FindEntityByString, ent, strtype, classname)) && pev(ent, pev_owner) != owner) {}

return ent;
}

Прикрепленный файл  vip_weapons_v1.1.sma ( 7,14 килобайт ) Кол-во скачиваний: 4
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Andrey777best
сообщение 22.4.2015, 17:31
Сообщение #2


Стаж: 13 лет
Город: Харьков

Сообщений: 1191
Благодарностей: 144
Полезность: 1

Могу заплатить, если так не хотите помочь)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя georgeml
сообщение 22.4.2015, 17:51
Сообщение #3
Стаж: 12 лет

Сообщений: 1467
Благодарностей: 439
Полезность: 423

Цитата(Andrey777best @ 22.4.2015, 18:31) *
Могу заплатить, если так не хотите помочь)

Скрытый текст
Код:
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <hamsandwich>

#define VIP_FLAG ADMIN_LEVEL_H

new bool: g_bDamage[33]
new g_MsgSync, g_MaxPlayers
new round_number, g_round
new bool: has_used[32]

new const weapon_name[][] = { "Deagle", "USP", "AK47", "M4a1", "FAMAS", "AWP", "SCOUT" }

#define is_user_valid_connected(%1) (1 <= %1 <= g_MaxPlayers && is_user_connected(%1))

public plugin_init()
{
register_plugin("VIP Weapons", "1.1", "Player")

g_round = register_cvar("amx_vip_give", "3")

register_clcmd("vipmenu", "showWeaponMenu")

register_clcmd("say /adminka", "ShowMotdADM")

register_event("HLTV", "event_RoundStart", "a", "1=0", "2=0")
register_logevent("event_RestartRound", 2, "1&Restart_Round_")
register_event("Damage", "event_Damage", "b", "2!0", "3=0", "4!0")

RegisterHam(Ham_Spawn, "player", "fw_PlayerRespawn", 1)

g_MsgSync = CreateHudSyncObj()
g_MaxPlayers = get_maxplayers()
}

public client_authorized(id)
{
if(!(get_user_flags(id) & VIP_FLAG))
return

client_cmd(id, "bind ^"F5^" ^"vipmenu^"")
}

public showWeaponMenu(id)
{
if(!(get_user_flags(id) & VIP_FLAG))
{
ChatColor(id, "^3[^4|+18>>Сервер^3]^1 Только для ^3V.I.P^1 персон!")
return PLUGIN_HANDLED
}

new menu = menu_create("\w[\yV.I.P\w] \rОружейка:", "giveWeapon")

new szIteamName[64]

for(new i = 0; i < sizeof(weapon_name); i++)
{
formatex(szIteamName, charsmax(szIteamName), "\r[\y%s\r]", weapon_name[i])
menu_additem(menu, szIteamName)
}

menu_addblank(menu, 0)

formatex(szIteamName, charsmax(szIteamName), "Дамагер \r[%sключен\r]", g_bDamage[id] ? "\yВ" : "\dВы")
menu_additem(menu, szIteamName)

menu_addblank(menu, 1)

menu_setprop(menu, MPROP_PERPAGE, 0)
menu_additem(menu, "Выход")
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)

menu_display(id, menu)

return PLUGIN_HANDLED
}

public giveWeapon(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}

if(item != 7)
{
if(!is_user_alive(id))
{
ChatColor(id, "^3[^4|+18>>Сервер^3]^1 Вы мертвы!")
return PLUGIN_HANDLED
}

if(round_number < get_pcvar_num(g_round))
{
ChatColor(id, "^3[^4|+18>>Сервер^3]^1 Доступно с %d раунда!", get_pcvar_num(g_round))
return PLUGIN_HANDLED
}

if(has_used[id])
{
ChatColor(id, "^3[^4|+18>>Сервер^3]^1 Вы уже использовали! Подождите...")
return PLUGIN_HANDLED
}

has_used[id] = true

switch(item)
{
case 0:
{
DropSecondaryWeapons(id)
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id , CSW_DEAGLE, 35)
}
case 1:
{
DropSecondaryWeapons(id)
give_item(id, "weapon_usp")
cs_set_user_bpammo(id , CSW_USP, 100)
}
case 2:
{
DropPrimaryWeapons(id)
give_item(id, "weapon_ak47")
cs_set_user_bpammo(id , CSW_AK47, 90)
}
case 3:
{
DropPrimaryWeapons(id)
give_item(id, "weapon_m4a1")
cs_set_user_bpammo(id , CSW_M4A1, 90)
}
case 4:
{
DropPrimaryWeapons(id)
give_item(id, "weapon_famas")
cs_set_user_bpammo(id , CSW_FAMAS, 90)
}
case 5:
{
DropPrimaryWeapons(id)
give_item(id, "weapon_awp")
cs_set_user_bpammo(id , CSW_AWP, 30)
}
case 6:
{
DropPrimaryWeapons(id)
give_item(id, "weapon_scout")
cs_set_user_bpammo(id , CSW_SCOUT, 90)
}
}
}
else
{
g_bDamage[id] = !g_bDamage[id]

showWeaponMenu(id)
}
return PLUGIN_HANDLED
}

public fw_PlayerRespawn(id)
{
if(!is_user_alive(id) || !(get_user_flags(id) & VIP_FLAG))
return

DropSecondaryWeapons(id)

give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 35)

give_item(id,"weapon_hegrenade")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_smokegrenade")
give_item(id,"item_assaultsuit")
give_item(id, "item_thighpack")

message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
write_byte(id)
write_byte(4)
message_end()
}

public ShowMotdADM(id)
show_motd(id, "adminka.txt", "Покупка - Админки!")

public ShowMotdVIP(id)
show_motd(id, "vip.txt", "Покупка - |+18>>Сервер!")

public event_RoundStart()
{
round_number++
arrayset(has_used, false, 32)
}

public event_RestartRound()
round_number = 0

public event_Damage(id)
{
if(!is_user_valid_connected(id) && !(get_user_flags(id) & VIP_FLAG))
return

static attacker; attacker = get_user_attacker(id)
static damage; damage = read_data(2)

if(g_bDamage[attacker])
{
set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
ShowSyncHudMsg(attacker, g_MsgSync, "%i", damage)
}
}

stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)

replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color
replace_all(msg, 190, "!team2", "^0") // Team2 Color

if(id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}

stock DropPrimaryWeapons(id)
{
static weapons[32], num;
const PRIMARY_WEAPONS_BIT_SUM = ((1<<3)|(1<<5)|(1<<7)|(1<<8)|(1<<12)|(1<<13)|(1<<14)|(1<<15)|(1<<18)|(1<<19)|(1<<20)|(1<<21)|(1<<22)|(1<<23)|(1<<24)|(1<<27)|(1<<28)|(1<<30));
get_user_weapons(id, weapons, num);

for (new i = 0; i < num; i++)
if((1<<weapons[i]) & PRIMARY_WEAPONS_BIT_SUM)
fm_strip_user_gun(id, weapons[i])
}

stock DropSecondaryWeapons(id)
{
static weapons[32], num;
const SECONDARY_WEAPONS_BIT_SUM = ((1<<1)|(1<<10)|(1<<11)|(1<<16)|(1<<17)|(1<<26));
get_user_weapons(id, weapons, num);

for (new i = 0; i < num; i++)
if((1<<weapons[i]) & SECONDARY_WEAPONS_BIT_SUM)
fm_strip_user_gun(id, weapons[i])
}

stock bool:fm_strip_user_gun(index, wid = 0, const wname[] = "")
{
new ent_class[32];
if (!wid && wname[0])
copy(ent_class, sizeof ent_class - 1, wname);
else
{
new weapon = wid, clip, ammo;
if (!weapon && !(weapon = get_user_weapon(index, clip, ammo)))
return false;

get_weaponname(weapon, ent_class, sizeof ent_class - 1);
}

new ent_weap = fm_find_ent_by_owner(-1, ent_class, index);
if (!ent_weap)
return false;

engclient_cmd(index, "drop", ent_class);

new ent_box = pev(ent_weap, pev_owner);
if (!ent_box || ent_box == index)
return false;

dllfunc(DLLFunc_Think, ent_box);

return true;
}

stock fm_find_ent_by_owner(index, const classname[], owner, jghgtype = 0)
{
new strtype[11] = "classname", ent = index;
switch (jghgtype) {
case 1: strtype = "target";
case 2: strtype = "targetname";
}

while ((ent = engfunc(EngFunc_FindEntityByString, ent, strtype, classname)) && pev(ent, pev_owner) != owner) {}

return ent;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: