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

[HamSandwich] Ham_Killed a zabicie z granata


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
4 odpowiedzi w tym temacie

#1 ogieR8

    Wszechmogący

  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 23.03.2017 04:09

Witam, wróciłem !

 

Analizując tematy:

https://amxx.pl/topi...na-obrażeniach/

oraz

https://amxx.pl/topi...brażenia/page-2

wiem jak działać w evencie ham_TakeDamage, ale naszło mnie coś kilka dni temu, wróciłem do Notepad'a i chciałbym to zrealizować - ale w kanapce. Załóżmy, że dla przykładu chciałbym zliczać zabójstwa z HE do zmiennej globalnej. Jak w evencie ham_Killed wykryć zabicie z granatu ? Nie ma tutaj parametru idinflictor etc. aby wykluczyć inne możliwości śmierci od podłączonego gracza.

 

Doszukałem się jedynie na allienach czegoś:

https://forums.allie...p/t-167351.html

ale rozwiązanie nawet ConnorMcLeod nie pomogły.

 

Jakieś sugestie ?

 

Pozdrawiam,

Mariusz K.


  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#2 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 23.03.2017 11:09

Z fakemetą (ze wspomnianego postu z allied'ów):

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <fun>

#define m_bitsDamageType 76
#define DMG_GRENADE (1<<24)
#define DMG_BULLET (1<<1)

public plugin_init() 
{
	register_plugin("HamKilled Test","1.0","...");
	
	RegisterHam(Ham_Killed, "player", "HamKilled");
}


public HamKilled(iVictim, iAttacker, shouldgib) 
{
	give_item(iAttacker, "weapon_hegrenade"); //W celu szybkich testow
	
	if ( get_pdata_int( iVictim , m_bitsDamageType ) & DMG_BULLET ) 
		return HAM_IGNORED;
		
	if ( get_pdata_int( iVictim , m_bitsDamageType ) & DMG_GRENADE ) 
		client_print(0, 3, "Zabicie z granata...");
		
	return HAM_IGNORED;
} 

Jak wspomniał Bugsy, metoda powyżej działa, ale jak też wspomniał ( :D) Connor, bity typów obrażeń się sumują.

Podczas testów, zauważyłem, iż sumują się tylko w sytuacji gdy następuje zabicie z broni palnej (gracz ma ustawione bity obrażeń DMG_GRENADE | DMG_BULLET).

W sytuacji śmierci od obrażeń granata, wszystko jest ustawione prawidłowo.

Nie wiem do końca, jak jest z innymi bitami obrażeń, musiałbyś sprawdzić, żeby uniknąć niespodzianek.

Potestuj powyższy kod i zobacz, czy o to Ci chodziło.


Użytkownik _McHappy edytował ten post 23.03.2017 11:18

  • +
  • -
  • 1

#3 rzeznik9871

    Wszechwidzący

  • Użytkownik

Reputacja: 80
Zaawansowany

  • Postów:260
Offline

Napisano 23.03.2017 20:38

hmm ale czemu musi to byc w kanapce? przeciez duzo latwiej zrobic to w deathmsg


  • +
  • -
  • 1

Cześć


#4 ogieR8

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 26.03.2017 03:42

I jeden i drugi ma rację, wiem.. niestety zależy mi na granacie co prawda, ale nie tylko, bity faktycznie sumuje i gdy strzelaliśmy do kolesia z kałasza i zabiliśmy go granatem, kod wrzuca zabójstwo i do tej.. i do tej broni :D

 

Poddając się skorzystałem z rady rzeznika, chociaż bardzo chciałem tego uniknąć i ostatecznie w client_death to puściłem. Temat można zamknąć, chyba że ktoś coś poczaruje jeszcze. :D + poleciały


  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#5 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 26.03.2017 14:43

Mam coś takiego (w kanapce), ale tak jak wspomniałem, nie jestem pewien co do flag innych niż zabicie z broni palnej.

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <fun>

#define m_bitsDamageType 76

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

public plugin_init() 
{
	register_plugin("HamKilled Test", "1.0", "...");
	
	RegisterHam(Ham_Killed, "player", "HamKilled");
}


public HamKilled(iVictim, iAttacker, shouldgib) 
{
	give_item(iAttacker, "weapon_hegrenade"); //W celach szybkich testow
	
	if (!(get_pdata_int(iVictim , m_bitsDamageType) & DMG_BULLET) && get_pdata_int(iVictim , m_bitsDamageType) & DMG_GRENADE)
	{
		client_print(0, 3, "Zabicie z granata...");
	}
	else
	{
		new weapon_name[16];
		new wid = get_user_weapon(iAttacker);
		get_weaponname(wid, weapon_name, charsmax(weapon_name));
		
		client_print(0, 3, "Zabicie z %s...", weapon_name);
	}
	
	return HAM_IGNORED;
} 

  • +
  • -
  • 0




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

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