←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[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
Zablokowany

GT Team - zdjęcie 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.. ?

 

Odpowiedz

  • +
  • -
Najlepsza odpowiedź BlackPerfum - zdjęcie 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()
}
Odpowiedz

GT Team - zdjęcie GT Team 21.06.2014

Ty cudotwórco j!@#$%^^y :D

Odpowiedz
Zablokowany