deniska21233
Пользователь
- Регистрация
- 28 Июн 2017
- Сообщения
- 101
- Симпатии
- 3
- Пол
- Мужской
Код:
#include amxmodx
#include cstrike
/***********************************************************************
Позволяет без проблем добавить оружия или предметы из Zombie модов
Команда zpshop открывает меню с добавленными оружиями,
оружия добавляются автоматически.
Плагин регистрирует основные нативы ZP, при желании можете добавить
свои, если знаете как. Вам не нужно формировать меню, достаточно в
своих новых оружиях изменить цены или оставить такими как есть и
вперед играть на сервере.
Можете легко добавить новые функции "allFuncForwards" и регистрировать
native в функции "array_registrs"
***********************************************************************/
new Array:ZP_ItemName, Array:ZP_ItemCost, Array:ZP_ItemTeam, ZP_ItemResult
/***********************************************************************
CreateMultiForward - не буду описывать долго, и скажу кратко,
это отлов функции в другом плагине, например в другом плагине
есть функция zp_extra_item_selected(id, itemid) и мы его отлавливаем
В zp 5.0 почему то отлавливались zp_fw_items_select_pre и zp_fw_items_select_post
Решил перестраховаться и сюда добавил :))))
О новых функциях прошу сообщить мне, поможем остальным vk.com/fixlink
***********************************************************************/
new const allFuncForwards[] = {
"zp_extra_item_selected",
"zp_fw_items_select_pre",
"zp_fw_items_select_post"
}
const sizeforward = sizeof allFuncForwards
/**************Нативы для регистрации Extra Item***************/
new const array_registrs[] = {
"zp_register_extra_item",
"zm_register_extra_item"
}
const sizeregistrs = sizeof array_registrs
new ZP_ItemForward[sizeforward]
public plugin_init()
{
register_plugin("ZP EXTRA SHOP", "0.1", "pro100web")
register_clcmd("say /zpshop", "ZP_extrashop")
register_clcmd("say zpshop", "ZP_extrashop")
register_clcmd("say_team /zpshop", "ZP_extrashop")
for(new i = 0; i < sizeforward; i++){
ZP_ItemForward[i] = CreateMultiForward(allFuncForwards[i], ET_CONTINUE, FP_CELL, FP_CELL, FP_CELL)
}
}
public ZP_extrashop(id, page){
new ZPMenu[96], szName[64], ZPKey[3]
new zpextra_sz = ArraySize(ZP_ItemName)
if(zpextra_sz<=0){
ChatColor(id, "^3[^4Extra Items^3] ^1Магазин пуст");
return 0
}
format(ZPMenu, charsmax(ZPMenu), "ZP Extra Items")
new sz_ExtraMenu = menu_create(ZPMenu, "ZP_extrashop_func")
for(new i = 0; i < zpextra_sz; i++){
format(ZPKey, charsmax(ZPKey),"%i",i)
ArrayGetString(ZP_ItemName, i, szName, charsmax(szName))
formatex(ZPMenu, charsmax(ZPMenu), "%s \y[%i$]", szName, ArrayGetCell(ZP_ItemCost, i))
menu_additem(sz_ExtraMenu, ZPMenu, ZPKey)
}
menu_setprop(sz_ExtraMenu, MPROP_NEXTNAME, "Дальше")
menu_setprop(sz_ExtraMenu, MPROP_BACKNAME, "Назад")
menu_setprop(sz_ExtraMenu, MPROP_EXITNAME, "Выход")
menu_display(id, sz_ExtraMenu, page)
return 1
}
public ZP_extrashop_func(id, ZPMenu, szItem)
{
if(szItem == MENU_EXIT)
return menu_destroy(ZPMenu)
new szData[3]
new szDummy
new szCost, szMoney = cs_get_user_money(id)
menu_item_getinfo(ZPMenu, szItem, szDummy, szData, charsmax(szData), _, _, szDummy)
szItem = str_to_num(szData)
szCost = ArrayGetCell(ZP_ItemCost, szItem)
menu_destroy(ZPMenu)
cs_set_user_money(id, szMoney - szCost, 1)
extrabuyitem(id, szItem)
return 1
}
extrabuyitem(id, szItem, ignorecost = 0){ // Если не покупается оружие, то сообщите мне vk.com/fixlink или добавьте форвард в ZP_ItemForward
for(new i = 0; i < sizeforward; i++){
ExecuteForward(ZP_ItemForward[i], ZP_ItemResult, id, szItem, ignorecost)
if(ZP_ItemResult>=1) break;
}
}
public plugin_precache(){
ZP_ItemName = ArrayCreate(64, 1)
ZP_ItemCost = ArrayCreate(1, 1)
ZP_ItemTeam = ArrayCreate(1, 1)
}
public plugin_natives(){
for(new i = 0; i < sizeregistrs; i++) register_native(array_registrs[i], "nativezp_register_extra_item", 1);
register_native("zp_get_user_zombie", "native_zp_get_user_zombie", 1);
register_native("zp_get_user_survivor", "native_zp_get_user_survivor", 1);
return 1;
}
public nativezp_register_extra_item(const Name[], const Cost, const Team){
param_convert(1)
ArrayPushString(ZP_ItemName, Name)
ArrayPushCell(ZP_ItemCost, Cost)
ArrayPushCell(ZP_ItemTeam, Team)
return (ArraySize(ZP_ItemName) - 1)
}
public native_zp_get_user_zombie(id) return 0;
public native_zp_get_user_survivor(id) return 0;
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();
}
}
}
}
Здравствуйте , помоигите пожалуйста дополнить плагин
1Й Если закончились деньги то плагин выдает стволы бесплатно и дает деньги от их цены (Надо бы исправить чтобы плагин не давал стволы бесплатно)
2Й Чтобы магазин закрывался и не открывался если игрок мёртв