Skocz do zawartości

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

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[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


  • Zamknięty Temat jest zamknięty
2 odpowiedzi w tym temacie

#1 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

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

Napisano 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

Napisano 21.06.2014 08:15   Najlepsza odpowiedź

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

Napisano 21.06.2014 14:29

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


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

 





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych