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

Nie do końca działająca funkcja powiększenia graczowi magazynka


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
Brak odpowiedzi do tego tematu

#1 Sniper Elite

    Master

  • Power User

Reputacja: 176
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 17.04.2014 09:02

Witam.

Zrobiłem w codzie klase i item który daje powiększenie maksymalnej ilości naboi w magazynku, jednak kod czasem działa a czasami nie, tzn. mając ten item czasami da nam standardową ilość ammo a czasami tyle ile trzeba. Jak w kod patrzyłem parę razy i niczego się nie dopatrzyłem, może ktoś z was pomoże :)

#define TASK_OFFSET 1500
const NOCLIP_WPN_BS    = ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
const SHOTGUNS_BS    = ((1<<CSW_M3)|(1<<CSW_XM1014))

const m_pPlayer               = 41
const m_iId                    = 43
const m_flTimeWeaponIdle        = 48
const m_fInReload            = 54

const m_flNextAttack = 83

stock const Float:g_fDelay[31] = {
    0.00, 2.70, 0.00, 2.00, 0.00, 0.55,   0.00, 3.15, 3.30, 0.00, 4.50,
    2.70, 3.50, 3.35, 2.45, 3.30,   2.70, 2.20, 2.50, 2.63, 4.70,
    0.55, 3.05, 2.12, 3.50, 0.00,   2.20, 3.00, 2.45, 0.00, 3.40
}

plugin_init:

    new szWeapon[17]
    for(new i=1; i<=30; i++)
    {
        if( !(NOCLIP_WPN_BS & (1<<i)) && get_weaponname(i, szWeapon, charsmax(szWeapon)) )
        {
            if( !(SHOTGUNS_BS & (1<<i)) )
            {
                RegisterHam(Ham_Weapon_Reload, szWeapon, "Weapon_Reload_Post", 1)
            }
        }
    }

Końcówka:

public Weapon_Reload_Post(iEnt)
{    
    new id = get_pdata_cbase(iEnt, m_pPlayer, 4)
    if(task_exists(id+TASK_OFFSET))
        return PLUGIN_HANDLED;
    if(klasa_gracza[id] == Strzelec || klasa_gracza[id] == Sniper || klasa_gracza[id] == Swat || klasa_gracza[id] == Poszukiwacz || player_b_ammo[id] || player_b_reload[id])
    {
        new Float:przeladowanie = 1.0
        switch(klasa_gracza[id])
        {
            case Strzelec:
            {
                if(moc_gracza1[id] == 3)
                    przeladowanie = 0.8
            }
            case Sniper:
            {
                if(moc_gracza1[id] == 3)
                    przeladowanie = 0.75
            }
        }
        if(player_b_reload[id])
            przeladowanie -= player_b_reload[id]
        new Float:fDelay = g_fDelay[get_pdata_int(iEnt, m_iId, 4)] * przeladowanie
        if( get_pdata_int(iEnt, m_fInReload, 4))
        {
            set_pdata_float(id, m_flNextAttack, fDelay, 5)
            set_pdata_float(iEnt, m_flTimeWeaponIdle, fDelay + 0.5, 4)
        }
        set_task(fDelay,"Reload",id+TASK_OFFSET);
    }
}
public Reload(id){
    
    id-=TASK_OFFSET;
    new ammo = maxClip[get_user_weapon(id)]
    switch(klasa_gracza[id])
    {
        case Strzelec:
        {
            if(moc_gracza1[id] == 3)
                ammo += 8
            else if(moc_gracza1[id] >=2)
                ammo += 5
        }
        case Sniper:
        {
            if(moc_gracza1[id] == 3)
                ammo += 12
            else if(moc_gracza1[id] == 2)
                ammo += 6
        }
        case Poszukiwacz:
        {
            if(moc_gracza1[id] == 3)
                ammo += 10
            else if(moc_gracza1[id] == 2)
                ammo += 5
        }
        case Swat:
        {
            if(moc_gracza2[id] == 2)
                ammo += 8
            else if(moc_gracza2[id] == 1)
                ammo += 4
        }
    }
    if(player_b_ammo[id])
    {
        ammo += player_b_ammo[id]
        client_print(id, print_chat, "Zwracam player_b_ammo: %i", player_b_ammo[id])
    }
    set_user_clip(id, ammo)
    
    return PLUGIN_HANDLED;

}

Dzięki za pomoc :)

Dodam jeszcze, po przeładowaniu daje zawsze tyle ammo ile powinno, ale później w ciągu ułamka sekundy zmienia na standardową ilość.


  • +
  • -
  • 0

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.





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

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