Така, не знам защо, обаче всички играчи могат да си дават ammo с командата bb_give_ammo , което ми притеснява, ако може добавете метод, чрез който мога аз сам да избера кой флаг може да дава ammo, примерно първоначалното нека е ADMIN_BAN , аз ако искам ще се го настроя, благодаря. А и също, когато някой си даде ammo да изпише в чата:
!t[ADMIN]!g Nick!n dade!g 200!n ammo packs na!g Nick. , и да се сложи команда: bb_take_ammo (количество) за премахане на ammo и пак да изпише: !t[ADMIN]!g Nick!n premahna!g 200!n ammo packs ot!g Nick.
Преработка на Ammo Packs System
Преработка на Ammo Packs System
- Прикачени файлове
-
- bb_ammopacks.sma
- (7.32 KiB) Свалено 117 пъти
- bb_ammopacks.sma
- (7.32 KiB) Свалено 117 пъти
The Best Deathrun Server: 79.124.49.91:27019
The Best Respawn Server: 79.124.49.88:27021
The Best Respawn Server: 79.124.49.88:27021
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Преработка на Ammo Packs System
Флаг си има, ама човекът който е писал плъгина явно не знае как се слага проверка за въпросния флаг. Няма нужда да се добавя bb_take_ammo, просто ползвай bb_give_ammo с отрицателни числа.
Код за потвърждение: Избери целия код
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <nvault>
#include <basebuilder>
#define CC_COLORS_TYPE CC_COLORS_SHORT
#include <cromchat>
#define PLUGIN "BB ammo_packs"
#define VERSION "1.0"
#define AUTHOR "G[o]Q" // Edit by OciXCrom
new mKup_przedmiot // Menu
new mcbKup_przedmiot // Menu Callback
const AP_HANDLED=120
new ammo_packi[33]
new liczba_itemow
new pack_bonus,pack_bonus2,vault
new Array:nazwy_itemow
new Array:teamy_itemow
new Array:koszta_itemow
new kup_item
new g_vault
new nazwa_gracza[33][64]
public plugin_init() {
register_clcmd("say /buy","pokaz_menu")
register_clcmd("say /item","pokaz_menu")
register_clcmd("say /items","pokaz_menu")
register_clcmd("say /shop","pokaz_menu")
register_clcmd("say /market","pokaz_menu")
register_clcmd("say /ammoshop","pokaz_menu")
register_clcmd("say /shop2","pokaz_menu")
register_concmd("bb_give_ammo","cmd_daj_ap",ADMIN_RCON,"<Nick> <Ilosc>") // za davane ammo
register_clcmd("","use_command_4_item")
register_clcmd("say","use_command_4_item")
nazwy_itemow=ArrayCreate(64,1);
teamy_itemow=ArrayCreate(1,1);
koszta_itemow=ArrayCreate(1,1);
cache_comands_first()
//cache_comands_second()
set_task(1.0,"cache_comands_second")
register_event("DeathMsg", "DeathMsg", "a")
register_event("Damage", "Damage", "b", "2!=0")
//RegisterHam(Ham_Spawn,"player","spwn")
pack_bonus=register_cvar("BB_ammo_per_kill","1") //
pack_bonus2=register_cvar("BB_ammo_per_dmg","500") //
vault=register_cvar("BB_save_ap","1")
if(get_pcvar_num(vault))
g_vault=nvault_open("Base_Builder")
kup_item = CreateMultiForward("wybrano_item", ET_CONTINUE, FP_CELL, FP_CELL) //wybrano_item(id,item_id)
}
public cache_comands_first(){
new linijka=0,text[128],chars
static configdir[64],plik[128]
get_configsdir(configdir,63)
formatex(plik,127,"%s/bb-commands.ini",configdir)
do{
linijka = read_file(plik,linijka,text,127,chars)
if((text[0]==';') || !chars) continue
register_clcmd(text,"pokaz_menu")
}
while(linijka!=0)
}
public cache_comands_second(){
new name_item[33]
new komenda[33]
new size=ArraySize(teamy_itemow)
for(new i=0;i<size;i++){
ArrayGetString(nazwy_itemow,i,name_item,32)
replace_all(name_item,32,"+","")
register_clcmd(name_item,"use_command_4_item")
format(komenda,33,"say %s",name_item)
register_clcmd(komenda,"use_command_4_item")
}
return PLUGIN_CONTINUE
}
public use_command_4_item(id){
new param[3][33],name_item[33]
new result,team
read_argv(0, param[0], 32)
read_argv(1, param[1], 32)
new size=ArraySize(teamy_itemow)
for(new i=0;i<size;i++){
ArrayGetString(nazwy_itemow,i,name_item,32)
replace_all(name_item,32,"+","")
team=ArrayGetCell(teamy_itemow,i)
if((equal(param[1],name_item)) || (equal(param[0],name_item))){
if(!team || team==get_user_team(id)){
ExecuteForward(kup_item, result, id, i);
if(result>=AP_HANDLED){
return PLUGIN_HANDLED
}
new koszt =ArrayGetCell(koszta_itemow,i)
kup(id,koszt)
}
}
}
return PLUGIN_CONTINUE
}
public client_connect(id){
get_user_name(id,nazwa_gracza[id],63)
if(get_pcvar_num(vault)==1)
wczytaj_dane(id)
}
public client_disconnected(id){
if(get_pcvar_num(vault)==1)
zapisz_dane(id)
ammo_packi[id]=0
}
public DeathMsg()
{
new kid = read_data(1) //zabojca
new vid = read_data(2) // ofiara
ammo_packi[kid]+=get_pcvar_num(pack_bonus)
if(task_exists(vid+241)) remove_task(vid+241)
}
public Damage(id)
{
new damage = read_data(2)
new kid = get_user_attacker(id) // Gracz atakujacy
if(kid==id || !kid || !is_user_alive(kid)) return PLUGIN_HANDLED
while(damage>=get_pcvar_num(pack_bonus2)){
damage-=get_pcvar_num(pack_bonus2)
ammo_packi[kid]+=1
}
return PLUGIN_CONTINUE
}
public pokaz_packi(id){
id-=241
new text[128]
set_hudmessage(0, 200, 0, 0.0, 0.90, 0, 6.0, 12.0)
show_hudmessage(id, "Ammo: %d", ammo_packi[id])
message_begin(MSG_ONE,get_user_msgid("StatusText"),{0,0,0}, id)
write_byte(0)
write_string(text)
message_end()
}
public spwn(id){
if(task_exists(id+241)) remove_task(id+241)
set_task(0.6,"pokaz_packi",id+241,_,_,"b")
}
public dodaj_item(const nazwa[],koszt,team){ //team 1 - TT 2 - CT
param_convert(1)
ArrayPushString(nazwy_itemow, nazwa);
ArrayPushCell(teamy_itemow, team);
ArrayPushCell(koszta_itemow,koszt);
liczba_itemow++
return liczba_itemow-1
}
public pokaz_menu(id){
if(!is_user_alive(id)){
client_print(id,print_center,"You have to be alive activated users the shop!")
return PLUGIN_HANDLED
}
static title[128]
format(title,127,"\d[\r BaseBuilder\d ] \wShop Items Menu^n\yAmmo Packs:\r %d^n\yPage:\r", ammo_packi[id])
mKup_przedmiot = menu_create(title, "mh_Kup_przedmiot")
mcbKup_przedmiot = menu_makecallback("mcb_Kup_przedmiot")
new size=ArraySize(koszta_itemow)
for(new i=0;i<size;i++){
static text[128],nazwa[33],koszt,team,teams[16]
ArrayGetString(nazwy_itemow,i,nazwa,32)
koszt=ArrayGetCell(koszta_itemow,i)
team=ArrayGetCell(teamy_itemow,i)
switch(team){
case 0:{
teams="ALL"
}
case 1:{
teams="ZOMBIE"
}
case 2:{
teams="HUMAN"
}
}
if(team!=get_user_team(id) && team!=0)
format(text,127,"%s - \wAmmo: \r%d [%s ONLY]\w ",nazwa, koszt,teams)
else format(text,127,"%s - \wAmmo: \r%d \y[%s]",nazwa,koszt,teams)
menu_additem(mKup_przedmiot, text,"ma_Kup_prezdmiot", ADMIN_ALL, mcbKup_przedmiot)
}
menu_display(id, mKup_przedmiot, 0)
return PLUGIN_CONTINUE
}
public kup(id,koszt){
ammo_packi[id]-=koszt
}
public mh_Kup_przedmiot(id, menu, item) {
new result
if(item>-1){
ExecuteForward(kup_item, result, id, item);
if(result>=AP_HANDLED){
menu_destroy(menu)
return PLUGIN_HANDLED
}
new koszt =ArrayGetCell(koszta_itemow,item)
kup(id,koszt)
menu_destroy(menu)
}
return PLUGIN_CONTINUE
}
public ma_Kup_prezdmiot(id){}
public mcb_Kup_przedmiot(id, menu, item) {
new team=ArrayGetCell(teamy_itemow,item)
if(ammo_packi[id]<ArrayGetCell(koszta_itemow,item) || (get_user_team(id)!=team && team>0)) return ITEM_DISABLED
return ITEM_ENABLED
}
public plugin_natives(){
register_native("dodaj_extra_item", "dodaj_item", 1)
register_native("BB_get_user_ap", "get_ap",1)
register_native("BB_set_user_ap", "set_ap",1)
}
public get_ap(id){
return ammo_packi[id]
}
public set_ap(id,ammount){
ammo_packi[id]=ammount
}
public zapisz_dane(id){
new vaultkey[64],vaultdata[64]
format(vaultkey,63,"%s-bb",nazwa_gracza[id])
format(vaultdata,63,"%d",ammo_packi[id])
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
public wczytaj_dane(id){
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-bb",nazwa_gracza[id])
format(vaultdata,255,"%d",ammo_packi[id])
nvault_get(g_vault,vaultkey,vaultdata,255) // pobieramy dane
ammo_packi[id]=str_to_num(vaultdata)
return PLUGIN_CONTINUE
}
public cmd_daj_ap(id, iLevel, iCid)
{
if(!cmd_access(id, iLevel, iCid, 3))
return PLUGIN_HANDLED
new szPlayer[32]
read_argv(1, szPlayer, charsmax(szPlayer))
new iPlayer = cmd_target(id, szPlayer, CMDTARGET_ALLOW_SELF)
if(!iPlayer)
return PLUGIN_HANDLED
new szName[2][32], szAmount[8]
get_user_name(id, szName[0], charsmax(szName[]))
get_user_name(iPlayer, szName[1], charsmax(szName[]))
read_argv(2, szAmount, charsmax(szAmount))
new iAmount = str_to_num(szAmount)
if(iAmount >= 0)
CC_LogMessage(0, _, "!t[ADMIN]!g%s !ndade !g%i !nammo packs na !g%s", szName[0], iAmount, szName[1])
else
CC_LogMessage(0, _, "!t[ADMIN]!g%s !npremahna !g%i !nammo packs ot !g%s", szName[0], iAmount, szName[1])
ammo_packi[iPlayer] += iAmount
return PLUGIN_HANDLED
}
Преработка на Ammo Packs System
Благодаря ти, работи. Надявам се да погледнеш и последната ми заявка. Lock
The Best Deathrun Server: 79.124.49.91:27019
The Best Respawn Server: 79.124.49.88:27021
The Best Respawn Server: 79.124.49.88:27021
-
- Подобни теми
- Отговори
- Преглеждания
- Последно мнение
-
- 0 Отговори
- 1039 Преглеждания
-
Последно мнение от patrik_96
-
- 5 Отговори
- 1083 Преглеждания
-
Последно мнение от AfterLife
-
- 2 Отговори
- 356 Преглеждания
-
Последно мнение от Gaming2
-
- 1 Отговори
- 399 Преглеждания
-
Последно мнение от illusion
-
- 6 Отговори
- 823 Преглеждания
-
Последно мнение от AfterLife
-
- 4 Отговори
- 914 Преглеждания
-
Последно мнение от Stilex
-
- 3 Отговори
- 818 Преглеждания
-
Последно мнение от OciXCrom
Кой е на линия
Потребители разглеждащи този форум: 0 регистрирани и 15 госта