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
CoD Nowy

Problem z natychmiastowym zabiciem z granatu (SetHamParamFloat)

cod nowy

Najlepsza odpowiedź ex0, 13.08.2014 21:41

Tak, np. niewidzialność dla wszystkich, bądź odrodzenie się . 

 

@ Temat rozwiązany = Zastosowałem Cod_Inflict - Dzięki dla Goldena.

Przejdź do postu


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

#1 ex0

    Wolny strzelec.

  • Power User

Reputacja: 383
Wszechpomocny

  • Postów:1 127
  • GG:
  • Imię:Kacper
  • Lokalizacja:Żywiec
Offline

Napisano 12.08.2014 12:41

Jak w temacie, mam problem z natychmiastowym zabiciem z granatu korzystając z funkcji SetHamParamFloat(parametr,wartość) 

Może mi ktoś wyjaśnić na przykładzie klasy którą podam dlaczego nie działa?
Pewnie chodzi o brak dodania funkcji z granatu HEGRENADE 1<24?

Nie mądrkuje bo nie wiem, dlatego pytam.
Kod zamieszczam poniżej.

Spoiler



Dziękuję za wyjaśnienie : )


  • +
  • -
  • 0

TWORZENIE FOR SPOŁECZNOŚCIOWYCH | ZARZĄDZANIE STRONAMI INTERNETOWYMI
WSPARCIE TECHNICZNE SERWERÓW HLDS | MODERNIZACJA, OPTYMALIZACJA, ZABEZPIECZENIA


Zapraszam do mojego profilu ;)


#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 12.08.2014 12:43

if(damagebits & DMG_BULLET)

 

Obrażenia z granatu to nie bullet

 

new weapon = get_user_weapon(idattacker);

 

Pobierasz broń którą ma obecnie gracz ,  rzucony granat to napewno nie jest bo to jednak rzucony granat ;)

 

Temat już wałkowany kilka razy poszukaj

HEGRENADE 1<24?

jesteś bliżej rozwiązania


  • +
  • -
  • 1

#3 ex0

    Wolny strzelec.

  • Autor tematu
  • Power User

Reputacja: 383
Wszechpomocny

  • Postów:1 127
  • GG:
  • Imię:Kacper
  • Lokalizacja:Żywiec
Offline

Napisano 12.08.2014 12:54

 

if(damagebits & DMG_BULLET)

 

Obrażenia z granatu to nie bullet

Czyli mam zastosować tutaj if(damagebits & DMG_HEGRENADE) tak? 

 

 

 

new weapon = get_user_weapon(idattacker);

 

Pobierasz broń którą ma obecnie gracz ,  rzucony granat to na pewno nie jest bo to jednak rzucony granat ;)

 

Czyli tak samo jak wyżej nie stosuje tego tylko 

new_weapon = CSW_HEGRENADE ?

  • +
  • -
  • 0

TWORZENIE FOR SPOŁECZNOŚCIOWYCH | ZARZĄDZANIE STRONAMI INTERNETOWYMI
WSPARCIE TECHNICZNE SERWERÓW HLDS | MODERNIZACJA, OPTYMALIZACJA, ZABEZPIECZENIA


Zapraszam do mojego profilu ;)


#4 kakus002

    (-.(-.(-.-).-).-)

  • Zbanowany

Reputacja: 164
Profesjonalista

  • Postów:209
  • Lokalizacja:OS
Offline

Napisano 12.08.2014 13:05

 

 

if(damagebits & DMG_BULLET)

 

Obrażenia z granatu to nie bullet

Czyli mam zastosować tutaj if(damagebits & DMG_HEGRENADE) tak? 

 

 

new weapon = get_user_weapon(idattacker);

 

Pobierasz broń którą ma obecnie gracz ,  rzucony granat to na pewno nie jest bo to jednak rzucony granat ;)

 

Czyli tak samo jak wyżej nie stosuje tego tylko 

new_weapon = CSW_HEGRENADE ?

 

dajesz define, pod includy:

#define DMG_BULLET (1<<1)
#define DMG_HEGRENADE (1<<24)

A public TakeDamage zamieniasz na ten:

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
    if(!is_user_connected(idattacker))
        return HAM_IGNORED;
    
    if(!ma_klase[idattacker])
        return HAM_IGNORED;
    
    
    if(damagebits & DMG_BULLET)
    {
        new weapon = get_user_weapon(idattacker);
        if(weapon == CSW_MP5NAVY)
            cod_inflict_damage(idattacker, this, 5.0, 0.5, idinflictor, damagebits);    
    }
    
    if(damagebits & DMG_HEGRENADE)
        SetHamParamFloat(4, float(get_user_health(this)));
    
    return HAM_IGNORED;
}

Powinno zadziałać, ale lepiej do zabijania użyj funkcji killplayer : ] -> http://amxx.pl/topic...zanie-broniami/



#5 ex0

    Wolny strzelec.

  • Autor tematu
  • Power User

Reputacja: 383
Wszechpomocny

  • Postów:1 127
  • GG:
  • Imię:Kacper
  • Lokalizacja:Żywiec
Offline

Napisano 13.08.2014 20:15

 

 

 

if(damagebits & DMG_BULLET)

 

Obrażenia z granatu to nie bullet

Czyli mam zastosować tutaj if(damagebits & DMG_HEGRENADE) tak? 

 

 

new weapon = get_user_weapon(idattacker);

 

Pobierasz broń którą ma obecnie gracz ,  rzucony granat to na pewno nie jest bo to jednak rzucony granat ;)

 

Czyli tak samo jak wyżej nie stosuje tego tylko 

new_weapon = CSW_HEGRENADE ?

 

dajesz define, pod includy:

#define DMG_BULLET (1<<1)
#define DMG_HEGRENADE (1<<24)

A public TakeDamage zamieniasz na ten:

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
    if(!is_user_connected(idattacker))
        return HAM_IGNORED;
    
    if(!ma_klase[idattacker])
        return HAM_IGNORED;
    
    
    if(damagebits & DMG_BULLET)
    {
        new weapon = get_user_weapon(idattacker);
        if(weapon == CSW_MP5NAVY)
            cod_inflict_damage(idattacker, this, 5.0, 0.5, idinflictor, damagebits);    
    }
    
    if(damagebits & DMG_HEGRENADE)
        SetHamParamFloat(4, float(get_user_health(this)));
    
    return HAM_IGNORED;
}

Powinno zadziałać, ale lepiej do zabijania użyj funkcji killplayer : ] -> http://amxx.pl/topic...zanie-broniami/

 

Wszakże nadal nie działa :| 


  • +
  • -
  • 0

TWORZENIE FOR SPOŁECZNOŚCIOWYCH | ZARZĄDZANIE STRONAMI INTERNETOWYMI
WSPARCIE TECHNICZNE SERWERÓW HLDS | MODERNIZACJA, OPTYMALIZACJA, ZABEZPIECZENIA


Zapraszam do mojego profilu ;)


#6 kakus002

    (-.(-.(-.-).-).-)

  • Zbanowany

Reputacja: 164
Profesjonalista

  • Postów:209
  • Lokalizacja:OS
Offline

Napisano 13.08.2014 20:41


Wszakże nadal nie działa :|

 

Mi niestety ten kod działa bo testowałem : ]

 

Zobacz z tym kodem:

 

public TakeDamage(id, ent, attacker, Float:damage, damagebits)
{
    if(!is_user_alive(id) || !is_user_connected(attacker) || !ma_klase[attacker] || get_user_team(id) == get_user_team(attacker))    return HAM_IGNORED
    
    if(damagebits & DMG_BULLET && ent == attacker && get_user_weapon(attacker) == CSW_MP5NAVY)
    {
        SetHamParamFloat(4,ddamage+5.0+float(cod_get_user_intelligence(attacker,1,1,1))*0.5)
        return HAM_HANDLED
    }
    else if(damagebits & DMG_HEGRENADE && ent != attacker)    KillPlayer(id,ent,attacker,CSW_HEGRENADE,HIT_GENERIC,0,DMG_HEGRENADE)
    
    return HAM_IGNORED
}

KillPlayer(id,inflictor,attacker,weapon,body,shouldgib,damagebits)
{
    if(weapon > 30 || !is_user_alive(id) || !is_user_connected(attacker))    return
    
    const GrenadeWeapon = 1<<CSW_HEGRENADE | 1<<CSW_C4 | 1<<CSW_SMOKEGRENADE | 1<<CSW_FLASHBANG
    const m_LastHitGroup = 75
    const m_bitsDamageType = 76
    const m_fHasTakenHighDamage = 107
    static DeathMsgId
    new msgblock,weaponname[32],effect
    if (!DeathMsgId)    DeathMsgId = get_user_msgid("DeathMsg")
    
    set_pdata_int(id,m_LastHitGroup,body,5)
    set_pdata_int(id,m_bitsDamageType,damagebits,5)
    set_pdata_int(id,m_fHasTakenHighDamage,1,5)
    set_pev(id,pev_dmg_inflictor,inflictor)
    msgblock = get_msg_block(DeathMsgId)
    set_msg_block(DeathMsgId, BLOCK_SET)
    ExecuteHamB(Ham_Killed,id,attacker,shouldgib)
    set_msg_block(DeathMsgId, msgblock)
    effect = pev(id,pev_effects)
    if(effect & 128)    set_pev(id,pev_effects,effect-128)
    
    new len
    if(get_weaponname(weapon,weaponname,31))
    {
        if(~GrenadeWeapon & 1<<weapon) len = 7
        else weaponname = "grenade"
    }
    else if(weapon == 2)    weaponname = "tracktrain"
    else    weaponname = "world"
    
    emessage_begin(MSG_ALL, DeathMsgId)
    ewrite_byte(attacker)
    ewrite_byte(id)
    ewrite_byte(body == HIT_HEAD ? 1:0)
    ewrite_string(weaponname[len])
    emessage_end()
}


#7 ex0

    Wolny strzelec.

  • Autor tematu
  • Power User

Reputacja: 383
Wszechpomocny

  • Postów:1 127
  • GG:
  • Imię:Kacper
  • Lokalizacja:Żywiec
Offline

Napisano 13.08.2014 20:43

 


Wszakże nadal nie działa :|

 

Mi niestety ten kod działa bo testowałem : ]

 

Zobacz z tym kodem:

public TakeDamage(id, ent, attacker, Float:damage, damagebits)
{
    if(!is_user_alive(id) || !is_user_connected(attacker) || !ma_klase[attacker] || get_user_team(id) == get_user_team(attacker))    return HAM_IGNORED
    
    if(damagebits & DMG_BULLET && ent == attacker && get_user_weapon(attacker) == CSW_MP5NAVY)
    {
        SetHamParamFloat(4,ddamage+5.0+float(cod_get_user_intelligence(attacker,1,1,1))*0.5)
        return HAM_HANDLED
    }
    else if(damagebits & DMG_HEGRENADE && ent != attacker)    KillPlayer(id,ent,attacker,CSW_HEGRENADE,HIT_GENERIC,0,DMG_HEGRENADE)
    
    return HAM_IGNORED
}

KillPlayer(id,inflictor,attacker,weapon,body,shouldgib,damagebits)
{
    if(weapon > 30 || !is_user_alive(id) || !is_user_connected(attacker))    return
    
    const GrenadeWeapon = 1<<CSW_HEGRENADE | 1<<CSW_C4 | 1<<CSW_SMOKEGRENADE | 1<<CSW_FLASHBANG
    const m_LastHitGroup = 75
    const m_bitsDamageType = 76
    const m_fHasTakenHighDamage = 107
    static DeathMsgId
    new msgblock,weaponname[32],effect
    if (!DeathMsgId)    DeathMsgId = get_user_msgid("DeathMsg")
    
    set_pdata_int(id,m_LastHitGroup,body,5)
    set_pdata_int(id,m_bitsDamageType,damagebits,5)
    set_pdata_int(id,m_fHasTakenHighDamage,1,5)
    set_pev(id,pev_dmg_inflictor,inflictor)
    msgblock = get_msg_block(DeathMsgId)
    set_msg_block(DeathMsgId, BLOCK_SET)
    ExecuteHamB(Ham_Killed,id,attacker,shouldgib)
    set_msg_block(DeathMsgId, msgblock)
    effect = pev(id,pev_effects)
    if(effect & 128)    set_pev(id,pev_effects,effect-128)
    
    new len
    if(get_weaponname(weapon,weaponname,31))
    {
        if(~GrenadeWeapon & 1<<weapon) len = 7
        else weaponname = "grenade"
    }
    else if(weapon == 2)    weaponname = "tracktrain"
    else    weaponname = "world"
    
    emessage_begin(MSG_ALL, DeathMsgId)
    ewrite_byte(attacker)
    ewrite_byte(id)
    ewrite_byte(body == HIT_HEAD ? 1:0)
    ewrite_string(weaponname[len])
    emessage_end()
}

Zaraz sprawdzę i edytuje ten post.
Powiedz mi, jest możliwe że jedna klasa może bugować umiejętności innych klas przez swój nieoptymalny kod / błędy? (errorlogów brak, ale jeszcze taki pomysł mi znajomy podsunął). 


  • +
  • -
  • 0

TWORZENIE FOR SPOŁECZNOŚCIOWYCH | ZARZĄDZANIE STRONAMI INTERNETOWYMI
WSPARCIE TECHNICZNE SERWERÓW HLDS | MODERNIZACJA, OPTYMALIZACJA, ZABEZPIECZENIA


Zapraszam do mojego profilu ;)


#8 kakus002

    (-.(-.(-.-).-).-)

  • Zbanowany

Reputacja: 164
Profesjonalista

  • Postów:209
  • Lokalizacja:OS
Offline

Napisano 13.08.2014 20:58


Powiedz mi, jest możliwe że jedna klasa może bugować umiejętności innych klas przez swój nieoptymalny kod / błędy?

Bugować czyli ? Chodzi o to że po zmianie klasy um. zostają?



#9 ex0

    Wolny strzelec.

  • Autor tematu
  • Power User

Reputacja: 383
Wszechpomocny

  • Postów:1 127
  • GG:
  • Imię:Kacper
  • Lokalizacja:Żywiec
Offline

Napisano 13.08.2014 21:41   Najlepsza odpowiedź

Tak, np. niewidzialność dla wszystkich, bądź odrodzenie się . 

 

@ Temat rozwiązany = Zastosowałem Cod_Inflict - Dzięki dla Goldena.


  • +
  • -
  • 0

TWORZENIE FOR SPOŁECZNOŚCIOWYCH | ZARZĄDZANIE STRONAMI INTERNETOWYMI
WSPARCIE TECHNICZNE SERWERÓW HLDS | MODERNIZACJA, OPTYMALIZACJA, ZABEZPIECZENIA


Zapraszam do mojego profilu ;)






Również z jednym lub większą ilością słów kluczowych: cod nowy

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

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