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