[ROZWIĄZANE] Ham_Touch - jak wykryć id broni
Najlepsza odpowiedź SeeK 12.09.2014 00:41
Okej udało mi się wszystko pozbierać do kupy. Może się to kiedyś komuś przyda.
public armouryTouch(weapon, id) { return weaponTouch(id, cs_get_armoury_type(weapon)); } public weaponboxTouch(ent, id) { static const m_rgpPlayerItems[6] = {34, 35, ...} const m_pNext = 42 new weapon, weaponID; for(new i = 0; i < sizeof m_rgpPlayerItems; i++) { weapon = get_pdata_cbase(ent, m_rgpPlayerItems[i], 4) while (weapon > 0) { weaponID = cs_get_weapon_id(weapon); if( weaponID ) return weaponTouch(id, weaponID); weapon = get_pdata_cbase(weapon, m_pNext, 4) } } return HAM_IGNORED; } weaponTouch(id,weapon) { if( !is_user_alive(id) ) return HAM_IGNORED; if( weapon == CSW_AWP ) return HAM_IGNORED; return HAM_SUPERCEDE; }Przejdź do postu
SeeK
11.09.2014
Łapię sobie dwa takie wydarzenia:
RegisterHam(Ham_Touch, "armoury_entity", "weaponTouch", false); RegisterHam(Ham_Touch, "weaponbox", "weaponTouch", false);
Jako argumenty funkcji mam id weaponboxa lub armoury_entity oraz id enta który je dotknął. Jak teraz sprawdzić, co to jest za broń? No bo to mi nie zwraca typu broni, tylko id tej broni jako enta A w necie nie ma nic działającego, albo ja się przynajmniej nie natknąłem na taki kawałek kodu.
PS: Sprawdzanie po modelu w ostateczności, wolałbym inne rozwiązanie.
Użytkownik SeeK edytował ten post 11.09.2014 23:04
Najlepsza odpowiedź
SeeK
12.09.2014
Okej udało mi się wszystko pozbierać do kupy. Może się to kiedyś komuś przyda.
public armouryTouch(weapon, id) { return weaponTouch(id, cs_get_armoury_type(weapon)); } public weaponboxTouch(ent, id) { static const m_rgpPlayerItems[6] = {34, 35, ...} const m_pNext = 42 new weapon, weaponID; for(new i = 0; i < sizeof m_rgpPlayerItems; i++) { weapon = get_pdata_cbase(ent, m_rgpPlayerItems[i], 4) while (weapon > 0) { weaponID = cs_get_weapon_id(weapon); if( weaponID ) return weaponTouch(id, weaponID); weapon = get_pdata_cbase(weapon, m_pNext, 4) } } return HAM_IGNORED; } weaponTouch(id,weapon) { if( !is_user_alive(id) ) return HAM_IGNORED; if( weapon == CSW_AWP ) return HAM_IGNORED; return HAM_SUPERCEDE; }