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] 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


  • Zamknięty Temat jest zamknięty
1 odpowiedź w tym temacie

#1 SeeK

    Wszechobecny

  • Użytkownik

Reputacja: 192
Profesjonalista

  • Postów:438
Offline

Napisano 11.09.2014 23:02

Ł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

  • +
  • -
  • 0
https://sklep-sms.pl - Sklep SMS pozwala zarabiać na swoich serwerach gier opartych o silniki AMX Mod X oraz SOURCEMOD
https://nalunch.com - A Ty, gdzie pójdziesz dziś na lunch?

#2 SeeK

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 192
Profesjonalista

  • Postów:438
Offline

Napisano 12.09.2014 00:41   Najlepsza odpowiedź

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;
}

  • +
  • -
  • 0
https://sklep-sms.pl - Sklep SMS pozwala zarabiać na swoich serwerach gier opartych o silniki AMX Mod X oraz SOURCEMOD
https://nalunch.com - A Ty, gdzie pójdziesz dziś na lunch?




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

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