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

Autokupowanie naboi przy zakupie broni


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

#1 SteelSeries

    Nowy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:7
Offline

Napisano 07.04.2017 19:06

Yo,potrzebuje pluginu,ktory by przy kazdym zakupie broni automatycznie dodawal naboje wliczone w cene broni ;P


  • +
  • -
  • 0

#2 d0naciak

    Godlike

  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 09.04.2017 07:43

Spróbuj

@edit to testowane, śmiga

 

#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
 
new const CSW_MAXAMMO[]= {-2, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100, -1, -1}
 
public plugin_init() {
 
new const nazwy_broni[][] = {
"weapon_scout", "weapon_mac10", "weapon_aug", "weapon_ump45", 
"weapon_sg550", "weapon_galil", "weapon_famas", "weapon_awp", 
"weapon_mp5navy", "weapon_m249", "weapon_m4a1", "weapon_tmp", 
"weapon_g3sg1", "weapon_sg552", "weapon_ak47", "weapon_p90",
"weapon_p228", "weapon_xm1014", "weapon_elite", "weapon_fiveseven", 
"weapon_usp", "weapon_glock18",  "weapon_deagle"
}
register_plugin("CSGO Mod: Ammo", "1.0", "donaciak"); 
 
for(new i = 0; i < sizeof nazwy_broni; i++) {
RegisterHam(Ham_Item_AddToPlayer, nazwy_broni[i], "fw_DostalBron_Post", 1);
}
}
 
public fw_DostalBron_Post(iEnt, id) {
if(!pev_valid(iEnt) || !is_user_alive(id)) {
return HAM_IGNORED;
}
 
if(!pev(iEnt, pev_owner)) {
new bron = cs_get_weapon_id(iEnt);
cs_set_user_bpammo(id, bron, CSW_MAXAMMO[bron]);
}
 
return HAM_IGNORED;
}

  • +
  • -
  • 1

#3 SteelSeries

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:7
Offline

Napisano 09.04.2017 13:11

dzięki,do zamkniecia
  • +
  • -
  • 0

#4 Linux'

    Pan Pomocny

  • Power User

Reputacja: 550
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 09.04.2017 16:41

@donaciak a co z wyrzucaniem i podnoszeniem broni? Nie testowałem tego ale wydaje mi się, że w takim wypadku najpewniej przywróci graczowi całkowitą amunicję.

 

Ten będzie dobry

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta_util>
#include <hamsandwich>

new last_message[33],
	last_weap_pickup[33];

new last_message_id,
	last_message_type,
	message_weap_pickup,
	message_ammo_pickup,
	message_money;

new clip_size[31] = {0, 13, 0, 10, 0, 7, 0, 30, 30, 0, 30, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 0, 7, 30, 30, 0, 50};
new max_bpammo[31] = {0, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100};
new ammo_type[31] = {0, 9, 0, 2, 12, 5, 14, 6, 4, 13, 10, 7,  6, 4, 4, 4, 6, 10, 1, 10, 3, 5, 4, 10, 2, 11, 8, 4, 2, 0, 7};
new ammo_name[15][] = {"", "ammo_338magnum", "ammo_762nato", "ammo_556natobox", "ammo_556nato", "ammo_buckshot", "ammo_45acp", "ammo_57mm", "ammo_50ae", "ammo_357sig", "ammo_9mm", "", "", "", ""};

public plugin_init()
{
	register_plugin("Auto add ammo", "1.0", "Linux`");
	RegisterHam(Ham_Spawn, "player", "SpawnPlayerPost", 1);
	register_forward(FM_MessageBegin, "MessageBegin", 1);
	register_forward(FM_WriteByte, "WriteByte", 1);

	message_weap_pickup = get_user_msgid("WeapPickup");
	message_ammo_pickup = get_user_msgid("AmmoPickup");
	message_money = get_user_msgid("Money");
}
public SpawnPlayerPost(id)
{
	if(!is_user_connected(id))
		return HAM_IGNORED;
	
	set_task(0.1, "ammo_spawn", id);
	last_message[id] = 0;
	last_weap_pickup[id] = 0;
	return HAM_IGNORED;
}
public MessageBegin(msg_dest, msg_type, const Float:origin[3], id)
{
	if(!is_user_connected(id))
		return FMRES_IGNORED;

	if(msg_type == message_money && last_message[id] == message_weap_pickup)
	{
		new arg[2];
		arg[0] = id;
		arg[1] = last_weap_pickup[last_message_id];
		set_task(0.1, "do_weapon_buy", _, arg, 2);
	}

	last_message_id = id;
	last_message_type = msg_type;
	last_message[id] = msg_type;
	return FMRES_IGNORED;
}
public WriteByte(value)
{
	if(last_message_type == message_weap_pickup)
		last_weap_pickup[last_message_id] = value;

	return FMRES_IGNORED;
}
public ammo_spawn(id)
{
	if(!is_user_connected(id))
		return PLUGIN_CONTINUE;

	new weapids[32], numweaps, weapid;
	get_user_weapons(id, weapids, numweaps);
	for(new i = 0; i < numweaps; i++)
	{
		weapid = weapids[i];
		if(fill_weapon(id, weapid))
			fill_bpammo_show(id, weapid);
	}

	return PLUGIN_CONTINUE;
}
public do_weapon_buy(arg[])
{
	new id = arg[0];
	new weapon = arg[1];
	if(!is_user_connected(id))
		return PLUGIN_CONTINUE;

	if(fill_weapon(id, weapon))
		fill_bpammo_show(id, weapon);

	return PLUGIN_CONTINUE;
}
stock bool:fill_weapon(id, weapid)
{
	new clip = clip_size[weapid];
	if(clip != 0)
	{
		new weapname[32];
		get_weaponname(weapid, weapname, charsmax(weapname));
		new wpn = fm_find_ent_by_owner(-1, weapname, id);
		if(wpn != 0)
		{
			cs_set_weapon_ammo(wpn, clip);
			return true;
		}
	}

	return false;
}
public bool:fill_bpammo_show(id, weapid)
{
	new given = max_bpammo[weapid];
	if(weapon_has_ammo(weapid))
		given -= cs_get_user_bpammo(id, weapid);

	if(fill_bpammo(id, weapid))
	{
		show_given_bpammo(id, weapid, given);
		return true;
	}

	return false;
}
stock bool:weapon_has_ammo(weapid)
{
	return ammo_name[ammo_type[weapid]][0] != 0;
}
stock bool:fill_bpammo(id, weapid)
{
	new ammo = max_bpammo[weapid];
	if(weapon_has_ammo(weapid))
	{
		cs_set_user_bpammo(id, weapid, ammo);
		return true;
	}

	return false;
}
stock show_given_bpammo(id, weapid, ammount)
{
	if(!ammount)
		return PLUGIN_CONTINUE;

	message_begin(MSG_ONE, message_ammo_pickup, {0, 0, 0}, id);
	write_byte(ammo_type[weapid]);
	write_byte(ammount);
	return message_end();
}

  • +
  • -
  • 0

b35020692_qesnxqa.png


#5 d0naciak

    Godlike

  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 09.04.2017 16:57

Jak kupuje to owner jest równy 0, jak podnosi to owner jest rózny od 0, jest od tego warunek - mówiłem że testowane :P Nie wiem jak zachowa się na leżących broniach na mapach typu fy_pool_day


  • +
  • -
  • 0

#6 Asiap

    Wszechpomocny

  • Girl

Reputacja: 172
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 09.04.2017 22:56

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

new g_iWeaponMaxAmmo[31] = { 0, 52, 0, 90, 1, 31, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 31, 90, 120, 90, 2, 35, 90, 90, 0, 100 };

public plugin_init()
{
	register_plugin("Auto Add Bpammo", "1.0", "Asiap");

	new i = CSW_P228, szName[24];
	for(; i <= CSW_P90; i++)
	{
		if(~(1<<CSW_KNIFE|1<<CSW_C4|1<<CSW_HEGRENADE|1<<CSW_SMOKEGRENADE|1<<CSW_FLASHBANG) & 1<<i && get_weaponname(i, szName, 23))
		{
			RegisterHam(Ham_AddPlayerItem, szName[i], "AddPlayerItem", 1);
		}
	}
}

public AddPlayerItem(id, iWeapon)
{
	if(!pev_valid(iWeapon) || !is_user_alive(id))
	{
		return;
	}

	iWeapon = get_pdata_int(iWeapon, 43, 4);
	set_pdata_int(id, 376 + get_pdata_int(iWeapon, 49, 4), g_iWeaponMaxAmmo[iWeapon]);
}

  • +
  • -
  • 0

#7 d0naciak

    Godlike

  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 10.04.2017 15:41

Asiap

1. Cytując: "a co z wyrzucaniem i podnoszeniem broni?"

2. Jak przez Ham_AddPlayerItem to tak:

RegisterHam(Ham_AddPlayerItem, "player", "AddPlayerItem", 1);

Problem w tym tutaj też jest nóż, granaty i bomba, trzeba by było chyba jednak więcej sprawdzania.


  • +
  • -
  • 0

#8 Asiap

    Wszechpomocny

  • Girl

Reputacja: 172
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 11.04.2017 19:40

Fakt zle zarejestrowalam :) Ham_AddPlayerItem reaguje na podnoszenie i 'dawanie' itemu graczowi przez przez np. give_item 

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

new g_iWeaponMaxAmmo[31] = { 0, 52, 0, 90, 1, 31, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 31, 90, 120, 90, 2, 35, 90, 90, 0, 100 };

public plugin_init()
{
	register_plugin("Auto Add Bpammo", "1.0", "Asiap");
 
	RegisterHam(Ham_AddPlayerItem, "player", "AddPlayerItem", 1);
}

public AddPlayerItem(id, iWeapon)
{
	if(!pev_valid(iWeapon) || !is_user_alive(id))
	{
		return;
	}

	iWeapon = get_pdata_int(iWeapon, 43, 4);

	if((1<<CSW_KNIFE|1<<CSW_C4|1<<CSW_HEGRENADE|1<<CSW_SMOKEGRENADE|1<<CSW_FLASHBANG) & 1<<iWeapon)
	{
		return;
	}

	set_pdata_int(id, 376 + get_pdata_int(iWeapon, 49, 4), g_iWeaponMaxAmmo[iWeapon]);
}

  • +
  • -
  • 1




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

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