Yo,potrzebuje pluginu,ktory by przy kazdym zakupie broni automatycznie dodawal naboje wliczone w cene broni ![]()
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.
|
Autokupowanie naboi przy zakupie broni
#1
Napisano 07.04.2017 19:06
#2
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;
}
#3
Napisano 09.04.2017 13:11
#4
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();
}
#5
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
Nie wiem jak zachowa się na leżących broniach na mapach typu fy_pool_day
#6
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]);
}
#7
Napisano 10.04.2017 15:41
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.
#8
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]);
}
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych


Dodatki SourceMod















