[ROZWIĄZANE] buyammo 1 i buyammo2
Najlepsza odpowiedź BlackPerfum 21.06.2014 08:15
Możesz użyć czegoś w tym stylu:
#include <amxmodx> #include <hamsandwich> #include <fakemeta> public plugin_init() { register_plugin("...","Beta","BlackPerfum") register_clcmd("buyammo1", "cmdBuyAmmo1") register_clcmd("buyammo2", "cmdBuyAmmo2") } new const giMaxAmmo[] = { -1, 52, -1, 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, -1, 100 } const m_iId = 43 const m_iPrimaryAmmoType = 49 const m_iMoney = 115 const m_fWeapon = 351 const m_pLastPrimaryItem = 368 const m_pLastSecondaryItem = 369 const m_rgAmmo = 376 public cmdBuyAmmo1(id) { if(!is_user_alive(id)) return Set_user_ammo(id,get_pdata_cbase(id,m_pLastPrimaryItem,5),120) } public cmdBuyAmmo2(id) { if(!is_user_alive(id)) return Set_user_ammo(id,get_pdata_cbase(id,m_pLastSecondaryItem,5),50) } Set_user_ammo(id,Wid,koszt) { if(pev_valid(Wid) != 2) return new CSW_id,MyAmmo,Money,AmmoType AmmoType = get_pdata_int(Wid,m_iPrimaryAmmoType,4) CSW_id = get_pdata_int(Wid,m_iId,4) MyAmmo = get_pdata_int(id,m_rgAmmo+AmmoType,5) Money = get_pdata_int(id,m_iMoney,5) if(MyAmmo >= giMaxAmmo[CSW_id] || Money < koszt) return MyAmmo = MyAmmo+12 > giMaxAmmo[CSW_id] ? giMaxAmmo[CSW_id] : MyAmmo+12 set_pdata_int(id,m_rgAmmo+AmmoType,MyAmmo,5) fm_set_user_money(id,Money-koszt) set_pdata_int(id,m_fWeapon,0,5) client_cmd(id, "spk weapons/reload1") } fm_set_user_money( id, Money ) { static s_msgMoney if(!s_msgMoney) s_msgMoney = get_user_msgid("Money") set_pdata_int( id, m_iMoney, Money ) emessage_begin( MSG_ONE, s_msgMoney, _, id ) ewrite_long( Money ) ewrite_byte( 1 ) emessage_end() }Przejdź do postu
GT Team 19.06.2014
mam o to takie funkcje
new const gszPrimaryWeapons[][] = { "weapon_scout", "weapon_xm1014", "weapon_mac10", "weapon_aug", "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas", "weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_sg552", "weapon_ak47", "weapon_p90" } new const gszSecondaryWeapons[][] = { "weapon_p228", "weapon_elite", "weapon_fiveseven", "weapon_usp", "weapon_glock18", "weapon_deagle" } register_clcmd("buyammo1", "cmdBuyAmmo1") register_clcmd("buyammo2", "cmdBuyAmmo2") .... public cmdBuyAmmo1(id) { if(!userHasSecondary(id)) return if(!is_user_alive(id)) return new weapon, is for(new i = 0; i < sizeof gszSecondaryWeapons; i++) { weapon = get_weaponid(gszSecondaryWeapons[i]) if(!user_has_weapon(id, weapon)) continue if(cs_get_user_bpammo(id,weapon) == giMaxAmmo[weapon]) return; if(cs_get_user_bpammo(id,weapon)+12 >=giMaxAmmo[weapon]) { is++ cs_set_user_bpammo(id,weapon, giMaxAmmo[weapon]) break; } is++ cs_set_user_bpammo(id, weapon, cs_get_user_bpammo(id, weapon)+12) } if(is) { client_cmd(id, "spk weapons/reload1") cs_set_user_money(id, cs_get_user_money(id)-50) } is = 0 } public cmdBuyAmmo2(id) { if(!userHasPrimary(id)) return if(!is_user_alive(id)) return new weapon, is for(new i = 0; i < sizeof gszPrimaryWeapons; i++) { weapon = get_weaponid(gszPrimaryWeapons[i]) if(cs_get_user_bpammo(id,weapon) == giMaxAmmo[weapon]) return; if(cs_get_user_bpammo(id,weapon)+12 >=giMaxAmmo[weapon]) { is++ cs_set_user_bpammo(id,weapon, giMaxAmmo[weapon]) break; } is++ cs_set_user_bpammo(id, weapon, cs_get_user_bpammo(id, weapon)+12) } if(is) { client_cmd(id, "spk weapons/reload1") cs_set_user_money(id, cs_get_user_money(id)-120) } is = 0 }
Jak mam zamiar kupic ammo do pistoletow (buyammo1 ?) to kupuje bezproblemowo, jednak przy amunicji dla karabinow, dzieja sie dziwne rzeczy, raz dziala, raz nie, raz kupuje, gdy jest buyammo2 - buyammo1, idzie szału dostać, czy jest to problem gry, czy jak.. ?
Najlepsza odpowiedź
BlackPerfum
21.06.2014
Możesz użyć czegoś w tym stylu:
#include <amxmodx> #include <hamsandwich> #include <fakemeta> public plugin_init() { register_plugin("...","Beta","BlackPerfum") register_clcmd("buyammo1", "cmdBuyAmmo1") register_clcmd("buyammo2", "cmdBuyAmmo2") } new const giMaxAmmo[] = { -1, 52, -1, 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, -1, 100 } const m_iId = 43 const m_iPrimaryAmmoType = 49 const m_iMoney = 115 const m_fWeapon = 351 const m_pLastPrimaryItem = 368 const m_pLastSecondaryItem = 369 const m_rgAmmo = 376 public cmdBuyAmmo1(id) { if(!is_user_alive(id)) return Set_user_ammo(id,get_pdata_cbase(id,m_pLastPrimaryItem,5),120) } public cmdBuyAmmo2(id) { if(!is_user_alive(id)) return Set_user_ammo(id,get_pdata_cbase(id,m_pLastSecondaryItem,5),50) } Set_user_ammo(id,Wid,koszt) { if(pev_valid(Wid) != 2) return new CSW_id,MyAmmo,Money,AmmoType AmmoType = get_pdata_int(Wid,m_iPrimaryAmmoType,4) CSW_id = get_pdata_int(Wid,m_iId,4) MyAmmo = get_pdata_int(id,m_rgAmmo+AmmoType,5) Money = get_pdata_int(id,m_iMoney,5) if(MyAmmo >= giMaxAmmo[CSW_id] || Money < koszt) return MyAmmo = MyAmmo+12 > giMaxAmmo[CSW_id] ? giMaxAmmo[CSW_id] : MyAmmo+12 set_pdata_int(id,m_rgAmmo+AmmoType,MyAmmo,5) fm_set_user_money(id,Money-koszt) set_pdata_int(id,m_fWeapon,0,5) client_cmd(id, "spk weapons/reload1") } fm_set_user_money( id, Money ) { static s_msgMoney if(!s_msgMoney) s_msgMoney = get_user_msgid("Money") set_pdata_int( id, m_iMoney, Money ) emessage_begin( MSG_ONE, s_msgMoney, _, id ) ewrite_long( Money ) ewrite_byte( 1 ) emessage_end() }