Jump to content

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

Posted Image Posted Image

Guest Message by DevFuse
 

Photo

[ROZWIĄZANE] buyammo 1 i buyammo2


Best Answer 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()
}
Go to the full post


  • This topic is locked This topic is locked
2 replies to this topic

#1 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1,435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Posted 19.06.2014 17:55

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.. ?

 


Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#2 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Posted 21.06.2014 08:15   Best Answer

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()
}

  • +
  • -
  • 2
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#3 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1,435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Posted 21.06.2014 14:29

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


Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users