Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

limit ammo packów


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
4 odpowiedzi w tym temacie

#1 Dirr

    Pomocny

  • Użytkownik

Reputacja: 10
Początkujący

  • Postów:60
  • Imię:Jakub
  • Lokalizacja:Zawiercie
Offline

Napisano 18.04.2019 20:03

Czy dało by radę dodać w tym kodzie poniżej limit ammo packów dla zwykłego gracza i dla vipa ?

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <nVault>

#define PLUGIN "BB ammo_packs"
#define VERSION "1.0"
#define AUTHOR "G[o]Q"

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_concmd("give_ap","cmd_daj_ap",ADMIN_IMMUNITY,"<Nick> <Ilosc>")
	
	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","5")  // ile ammo_packow za kill
	pack_bonus2=register_cvar("BB_ammo_per_dmg","5") //  za ile dmg jeden ammopack
	vault=register_cvar("BB_save_ap","1") //1 zapis wlaczony , 0 zapis wylaczony
	
	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_disconnect(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]
	format(text,127,"Ammo Packi: %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_chat,"Musisz byc zywy aby korzystac ze sklepu")
		return PLUGIN_HANDLED
	}
	
	
	mKup_przedmiot = menu_create("Kup_przedmiot", "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 - Tylko dla %s ",nazwa,teams)
		else format(text,127,"%s -\y%d\w (%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,level,cid){
	if(is_user_connected(id)){
		new name[32], count[32]
		read_argv(1, name, 31)
		read_argv(2, count, 31)
	
		new ilosc=str_to_num(count)
		new player = cmd_target(id, name, CMDTARGET_ALLOW_SELF)
		
		ammo_packi[player]+=ilosc
		
	}
	return PLUGIN_HANDLED
}


  • +
  • -
  • 0

#2 Black004

    Wszechpomocny

  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 19.04.2019 13:29

.


Użytkownik Black004 edytował ten post 19.04.2019 13:44

  • +
  • -
  • 0

#3 Black004

    Wszechpomocny

  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 19.04.2019 13:29

Chyba tu wystarczy zrobić limit:

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)
}

---->

 

ADMIN_LEVEL_H, to flaga vip'a możesz ją zmienić. LIMIT_VIPA i LIMIT_GRACZA tutaj wstaw jaki ma być limit.

public DeathMsg()
{
    new kid = read_data(1)    //zabojca
    new vid = read_data(2)    // ofiara

    if(get_user_flags(id) & ADMIN_LEVEL_H && ammo_packi[kid] == LIMIT_VIPA){
    return PLUGIN_HANDLED
    }
    else
    {
    if(ammo_packi[kid] == LIMIT_GRACZA){
    return PLUGIN_HANDLED
     }
    ammo_packi[kid]+=get_pcvar_num(pack_bonus)
    if(task_exists(vid+241)) remove_task(vid+241)
}

Użytkownik Black004 edytował ten post 19.04.2019 13:41

  • +
  • -
  • 0

#4 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 19.04.2019 13:33

A w evencie od damage?

A w natywie ustawiającym AP?

 

 

chyba cos zle wstawiles bo te dwa kody sie nie roznia niczym


  • +
  • -
  • 0

#5 Dirr

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 10
Początkujący

  • Postów:60
  • Imię:Jakub
  • Lokalizacja:Zawiercie
Offline

Napisano 19.04.2019 14:20

Zmieniłem plugin i teraz używam tego do limitu ap. Działa w porządku ale potrzebuję dodać limit dla vipa może ktoś pomoże dodać. Limit dla vipa to 250 flaga ADMIN_RESERVATION

#include <amxmodx>
#include <biohazard>

enum (+= 666)
{
	TASK_CHECK = 1337,
	TASK_RECHECK
}
#define ID_CHECK (taskid - TASK_CHECK)
#define ID_RECHECK (taskid - TASK_RECHECK)
#define flag_get(%1,%2) (%1 & (1 << (%2 & 31)))
#define flag_get_boolean(%1,%2) (flag_get(%1,%2) ? true : false)
#define flag_set(%1,%2) %1 |= (1 << (%2 & 31))
#define flag_unset(%1,%2) %1 &= ~(1 << (%2 & 31))

const Float:Interval = 1.0
const MaxLimit = 150
new g_MaxPlayers, g_IsConnected
#define is_user_valid(%1) (1 <= %1 <= g_MaxPlayers)

public plugin_init()
{
	register_plugin("Limit AP", "1.0.0", "wbyokomo")
	
	g_MaxPlayers = get_maxplayers()
}

public  client_putinserver(id)
{
	flag_set(g_IsConnected,id)
	// Let all ammopack loaded first
	set_task(0.5, "TaskCheck", id+TASK_CHECK)
}

public client_disconnect(id)
{
	flag_unset(g_IsConnected,id)
	remove_task(id+TASK_CHECK)
	remove_task(id+TASK_RECHECK)
}

public TaskCheck(taskid)
{
	set_task(Interval, "TaskRecheck", ID_CHECK+TASK_RECHECK, _, _, "b")
}

public TaskRecheck(taskid)
{
	if(is_user_valid(ID_RECHECK) && flag_get(g_IsConnected,ID_RECHECK))
	{
		if(bio_get_user_ammo_packs(ID_RECHECK) > MaxLimit)
		{
			bio_set_user_ammo_packs(ID_RECHECK, MaxLimit)
		}
	}
}


  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych