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

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

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

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

> Правила раздела

Перед созданием новой темы убедитесь, не искал ли кто-нибудь подобный плагин до вас, для этого следует воспользоваться поиском.

Все вновь созданные темы, с названием типа "Помогите найти", "А что это за плагин", "Ищу плагин", "Нужен плагин", "Подскажите пожалуйста название плагина" - будут удалены.
При создании темы постарайтесь максимально понятно сформулировать её заголовок так, чтобы он соответствовал функциям плагина который Вы ищите. В том случае, если Вам не удается сформулировать мысль и правильно расписать всё в теме, воспользуйтесь графическим редактором, к примеру Paint, что бы примерно изобразить функции нужного Вам плагина.

Ограничение передачи аммо

Статус пользователя 4auka
сообщение 19.4.2017, 13:20
Сообщение #1
Стаж: 9 лет 2 месяца

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

Всем привет. На одном сервере натыкался на такую фишку, что когда была к примеру привилегия "СуперАдмин" , то каким-то образом команда "/donate" (передача аммо) была запрещена, то есть не работала, а когда была другая привилегия, то команда работала. Может кто натыкался на данный плагин или что-то видел? Помогите, пожалуйста, уж очень нужен данный плагин
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя JekaPro
сообщение 19.4.2017, 14:17
Сообщение #2


Стаж: 10 лет
Город: Одесса

Сообщений: 724
Благодарностей: 189
Полезность: 494

сделай в плагине проверку на флаг да и все)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 4auka
сообщение 19.4.2017, 20:50
Сообщение #3
Стаж: 9 лет 2 месяца

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

Цитата(JekaPro @ 19.4.2017, 15:17) *
сделай в плагине проверку на флаг да и все)


Ну смотри, к примеру у меня есть два исходных кода данного плагина:
CODE
#include <amxmodx>
#include <amxmisc>
#include <zombieplague>

#define PLUGIN "[ZP] Donate Ammo Packs"
#define VERSION "1.0"
#define AUTHOR "r1laX , PomanoB"

new g_UserTotalAmmo[33]
new g_CvarAllowDonate
new SayText

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

g_CvarAllowDonate = register_cvar("zp_stats_allow_donate", "1")

register_clcmd("say", "handleSay")
register_clcmd("say_team", "handleSay")

register_event("HLTV", "RoundStart", "a", "1=0", "2=0")
register_dictionary("donate_ap.txt")

SayText = get_user_msgid("SayText")
}

public RoundStart()
{
if (get_pcvar_num(g_CvarAllowDonate))
set_task(2.2, "MsgOnRoundStart")
}

public MsgOnRoundStart()
{
if(get_pcvar_num(g_CvarAllowDonate))
client_printcolor(0, "!y %L", LANG_PLAYER, "DONATE_INFO")
}

public handleSay(id)
{
new args[64]

read_args(args, charsmax(args))
remove_quotes(args)

new arg1[16]
new arg2[32]

strbreak(args, arg1, charsmax(arg1), arg2, charsmax(arg2))
if (get_pcvar_num(g_CvarAllowDonate) && equal(arg1,"/donate", 7))
donate(id, arg2)
}

public donate(id, arg[])
{
new to[32], count[10]
strbreak(arg, to, 31, count, 9)

if (!to[0] || !count[0])
{
client_printcolor(id, "!g[ZP]!y %L", id, "DONATE_USAGE")
return
}
new ammo_sender = zp_get_user_ammo_packs(id)
new ammo
if (equal(count, "all"))
ammo = ammo_sender
else
ammo = str_to_num(count)
if (ammo <= 0)
{
client_printcolor(id, "!g[ZP]!y %L", id, "DONATE_ERROR")
return
}
ammo_sender -= ammo
if (ammo_sender < 0)
{
ammo+=ammo_sender
ammo_sender = 0

}
new reciever = cmd_target(id, to, (CMDTARGET_ALLOW_SELF))
if (!reciever || reciever == id)
{
client_printcolor(id, "!g[ZP] %L", id, "DONATE_NOT_PLAYER", to)
return
}

zp_set_user_ammo_packs(reciever, zp_get_user_ammo_packs(reciever) + ammo)
g_UserTotalAmmo[reciever] += ammo
zp_set_user_ammo_packs(id, ammo_sender)
new aName[32], vName[32]

get_user_name(id, aName, 31)
get_user_name(reciever, vName, 31)

set_hudmessage(255, 0, 0, -1.0, 0.3, 0, 6.0, 6.0)
show_hudmessage(0, "%L", LANG_PLAYER, "DONATE_PLAYER", aName, ammo, vName)
}

stock client_printcolor(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, "!t", "^3") // Team 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, SayText, _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}

и
CODE
#include < amxmodx >
#include < amxmisc >
#include < fakemeta >

const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MEN
U_KEY_8|MENU_KEY_9|MENU_KEY_0

native zp_set_user_money(id, set)
native zp_get_user_money(id)

new g_player[33]

new g_menu_data[33][1]
#define MENU_PAGE_PLAYERS g_menu_data[id][0]

public plugin_init( )
{
register_clcmd( "say /donate" , "DonateMenu" )

register_clcmd( "Donate" , "DonateAmmo" )

register_menu("Don Menu", KEYSMENU, "menu_game")
}

public plugin_natives()
{
register_native("donate_show", "DonateMenu",1)
}

show_menu_player_list(id)
{
static menu[256], player_name[32]
new menuid, player, buffer[2]

// Title
formatex(menu, charsmax(menu), "\r[ \y~ \dПеревед аммо \y~ \r]^n^n")
menuid = menu_create(menu, "menu_player_list_don")
//formatex(menu, charsmax(menu), "\r[ \y~ \dУ вас: \r%d \dаммо \y~ \r]", zp_get_user_money(id))
//menu_addtext(menuid, menu, 0);

// Player List
for (player = 0; player <= 32; player++)
{
// Skip if not connected
if (!is_user_connected(player)||player==id)
continue;

// Get player's name
get_user_name(player, player_name, charsmax(player_name))

// Format text depending on the action to take
formatex(menu, charsmax(menu), "%s \r[ %d аммо ]", player_name, zp_get_user_money(player))

// Add player
buffer[0] = player
buffer[1] = 0
menu_additem(menuid, menu, buffer)
}

// Back - Next - Exit
formatex(menu, charsmax(menu), "%L", id, "MENU_BACK")
menu_setprop(menuid, MPROP_BACKNAME, menu)
formatex(menu, charsmax(menu), "%L", id, "MENU_NEXT")
menu_setprop(menuid, MPROP_NEXTNAME, menu)
formatex(menu, charsmax(menu), "%L", id, "MENU_EXIT")
menu_setprop(menuid, MPROP_EXITNAME, menu)

// If remembered page is greater than number of pages, clamp down the value
MENU_PAGE_PLAYERS = min(MENU_PAGE_PLAYERS, menu_pages(menuid)-1)

// Fix for AMXX custom menus
set_pdata_int(id, 205, 0)
menu_display(id, menuid, MENU_PAGE_PLAYERS)
}

public menu_player_list_don(id, menuid, item)
{
// Menu was closed
if (item == MENU_EXIT)
{
MENU_PAGE_PLAYERS = 0
menu_destroy(menuid)
return PLUGIN_HANDLED;
}

// Remember player's menu page
MENU_PAGE_PLAYERS = item / 7

// Retrieve player id
new buffer[2], dummy, player
menu_item_getinfo(menuid, item, dummy, buffer, charsmax(buffer), _, _, dummy)
player = buffer[0]

// Make sure it's still connected
if (is_user_connected(player))
{
show_select_donate(id, player)
}

menu_destroy(menuid)
return PLUGIN_HANDLED;
}

public DonateMenu( pPlayer )
{
if(!is_user_connected(pPlayer))
return PLUGIN_HANDLED

show_menu_player_list(pPlayer)
return PLUGIN_HANDLED
}

public DonateAmmo(pPlayer)
{
if(!is_user_connected(pPlayer))
return PLUGIN_HANDLED

static g_param[6]
read_argv(2, g_param, charsmax(g_param))

for (new p; p < strlen(g_param); p++)
{
if(!isdigit(g_param[p]))
{
client_print(pPlayer, print_center, "Ошибка перевода аммо")
return 0
}
}

static g_Amount ; g_Amount = str_to_num(g_param)

static g_Ammo ; g_Ammo = zp_get_user_money(pPlayer)

if (g_Ammo < g_Amount)
{
client_print(pPlayer, print_center, "Недостаточно аммо")
return 0
}

read_argv(1, g_param, charsmax(g_param))
static g_Player ; g_Player = str_to_num(g_param)
if(!is_user_connected(g_Player)) return 0

static pAmmo; pAmmo = zp_get_user_money(g_Player)

zp_set_user_money(pPlayer, g_Ammo - g_Amount)
zp_set_user_money(g_Player, pAmmo + g_Amount)

static names[2][32]

get_user_name(pPlayer, names[0], 31)
get_user_name(g_Player, names[1], 31)

client_printcolor( 0, "^x04[ZP]^x01 ^x04%s^x01 перевел [ ^x04%d аммо^x01 ] на счет^x04%s^x01." , names[0] , g_Amount , names [1] )

return 0
}

stock client_printcolor(const pPlayer, const input[], any:...)
{
static szMsg[191]
vformat(szMsg, charsmax(szMsg), input, 3)

if(pPlayer)
{
message_begin(MSG_ONE_UNRELIABLE, 76, _, pPlayer)
write_byte(pPlayer)
write_string(szMsg)
message_end()
}
else
{
static player
for (player = 1; player <= 32; player++)
{
if (!is_user_connected(player))
continue;

message_begin(MSG_ONE_UNRELIABLE, 76, _, player)
write_byte(player)
write_string(szMsg)
message_end()
}
}
}

public show_select_donate(id, player)
{
g_player[id]=player

static menu[1024], len
len = 0

// Title
len += formatex(menu[len], charsmax(menu) - len, "\r[ \y~ \dУ вас: \r%d \dаммо \y~ \r]^n^n", zp_get_user_money(id))

len += formatex(menu[len], charsmax(menu) - len, "\r[\y1\r] \wПеревести аммо \r(\y100\r)^n")
len += formatex(menu[len], charsmax(menu) - len, "\r[\y2\r] \wПеревести аммо \r(\y500\r)^n")
len += formatex(menu[len], charsmax(menu) - len, "\r[\y3\r] \wПеревести аммо \r(\y1000\r)^n^n")

len += formatex(menu[len], charsmax(menu) - len, "\r[\y4\r] \yСвоя сумма^n^n")

len += formatex(menu[len], charsmax(menu) - len, "\r[\y8\r]\w Назад^n")
len += formatex(menu[len], charsmax(menu) - len, "\r[\y0\r]\w Выход")

show_menu(id, KEYSMENU, menu, -1, "Don Menu")
}

public menu_game(id, key)
{
switch (key)
{
case 0: client_cmd(id, "^"Donate %i 100^"", g_player[id])
case 1: client_cmd(id, "^"Donate %i 500^"", g_player[id])
case 2: client_cmd(id, "^"Donate %i 1000^"", g_player[id])
case 3: // Buy Weapons
{
client_cmd(id, "messagemode ^"Donate %i^"", g_player[id])
}
}
}

Помоги вклинить данную проверку, т.к. не получается у меня. В интернете пошарил, как делать проверку, но что-то не доходит.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя WhiteShadow
сообщение 19.4.2017, 23:45
Сообщение #4
Стаж: 9 лет

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

4auka, на какой флаг СуперАдмин?

Можно сделать вот так:
Код:
#include amxmodx

public plugin_init() register_clcmd("say /donate", "cDonate");

public cDonate(id)
{
if(~get_user_flags(id) & ADMIN_IMMUNITY)
{
return 1;
}
}


ставить плагин выше плагина /Donate
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 4auka
сообщение 20.4.2017, 13:30
Сообщение #5
Стаж: 9 лет 2 месяца

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

Цитата(WhiteShadow @ 20.4.2017, 0:45) *
4auka, на какой флаг СуперАдмин?

Можно сделать вот так:
Код:
#include amxmodx

public plugin_init() register_clcmd("say /donate", "cDonate");

public cDonate(id)
{
if(~get_user_flags(id) & ADMIN_IMMUNITY)
{
return 1;
}
}


ставить плагин выше плагина /Donate

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