←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[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
Zablokowany

  • +
  • -
SeeK - zdjęcie 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
Odpowiedz

  • +
  • -
Najlepsza odpowiedź SeeK - zdjęcie 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;
}
Odpowiedz
Zablokowany