В първия пример ще ползваме проста команда, която добавя по 15 кръв на играча когато е използвана. Целта е да направим командата да може да се ползва само три пъти при едно прераждане.
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <fun>
#include <hamsandwich>
// Тук задаваме колко пъти командата ще може да се ползва.
new const g_iLimit = 3
// Този масив ще държи броя на използвания на въпросната команда за всеки играч.
new g_iUses[33]
public plugin_init()
{
register_plugin("Command Limit Example", "1.0", "iPlay.bg (OciXCrom)")
// Регистрираме командата.
register_clcmd("say /health", "cmdHealth")
register_clcmd("say_team /health", "cmdHealth")
// Регистрираме евента, при който играчът бива съживен, тъй като искаме лимитът му да се рестартира при прераждане.
RegisterHam(Ham_Spawn, "player", "OnPlayerSpawn", 1)
}
public cmdHealth(id)
{
// Добавяме проверка, с която ще блокираме командата в случай, че лимитът е достигнат.
// В случая проверката я правим като провериме дали броя на използвания е по-малък от лимита.
if(g_iUses[id] < g_iLimit)
{
// Ако лимитът не е достигнат, добавяме кръв на играча и изпращаме съобщение.
set_user_health(id, get_user_health(id) + 15)
client_print(id, print_chat, "* Zaredi kruvta si!")
// Добавяме +1 към броя на използвания.
g_iUses[id]++
// Горният ред е едно и също с g_iUses[id] += 1 или g_iUses[id] = g_iUses[id] + 1
}
else
{
// Ако лимитът е достигнат, изпращаме съобщение, че командата не може да бъде ползвана.
client_print(id, print_chat, "* Dostignal si limita za polzvane na tazi komanda prez tozi rund!")
}
// Скриваме командата в чата.
return PLUGIN_HANDLED
}
public OnPlayerSpawn(id)
{
// Когато играчът е съживен, рестартираме неговия лимит.
g_iUses[id] = 0
}
По същия начин можете да добавите лимит на каквото пожелате.
Следващият код е възможно най-простия начин, по който можете да добавите проверка за лимит:
Код за потвърждение: Избери целия код
new g_iUses[33]
new const g_iLimit = 3
public myFunction(id)
{
if(g_iUses[id]++ >= g_iLimit)
client_print(id, print_chat, "* Limitut e dostignat!")
else
{
set_user_health(id, 100)
client_print(id, print_chat, "* Poluchi 100% kruv!")
}
return PLUGIN_HANDLED
}
Долният код е пример как да добавите лимит за всеки различен предмет в дадено меню.
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <hamsandwich>
new const g_iLimit = 5
new g_iUses[33][33]
// Първото [33] ще държи id-то на играча, а второто id-то на предмета в менюто.
public plugin_init()
{
register_plugin("Item Limit Example", "1.0", "iPlay.bg (OciXCrom)")
RegisterHam(Ham_Spawn, "player", "OnPlayerSpawn", 1)
register_clcmd("say /menu", "cmdMenu")
register_clcmd("say_team /menu", "cmdMenu")
}
public cmdMenu(id, iPage)
{
new iMenu = menu_create("My Cool Menu", "handlerMenu")
menu_additem(iMenu, "Purva opciq")
menu_additem(iMenu, "Vtora opciq")
menu_additem(iMenu, "Treta opciq")
menu_display(id, iMenu, iPage)
return PLUGIN_HANDLED
}
public handlerMenu(id, iMenu, iItem)
{
if(iItem != MENU_EXIT)
{
if(g_iUses[id][iItem]++ >= g_iLimit)
client_print(id, print_chat, "* Dostignat e limitut za polzvane na tazi opciq ot menuto.")
else
client_print(id, print_chat, "* Uspeshno izpolzva opciqta #%i ot menuto.", iItem)
}
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
public OnPlayerSpawn(id)
arrayset(g_iUses[id], 0, sizeof(g_iUses[]))