Jump to content


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

Posted Image Posted Image

Guest Message by DevFuse
 

[ROZWIĄZANE] Gracza o danym ID można zabić tylko w głowę


Best Answer Gość_21977_* , 20.05.2014 17:35

RegisterHam(Ham_TraceAttack, "player", "Ham_TraceAttack_playerPre", 0);
public Ham_TraceAttack_playerPre(
	vid,			// victim id	// ofiara (moze nie byc graczem)
	id,			// id		// zabojca (jest graczem (klasa "player" przy RegisterHam)
	Float:damage,				// obrazenia
	Float:dir[3],				// wektor ataku
	tr,					// trace result
	damagebits
){
	if(
			is_user_alive(vid)			// czy gracz żyje
//		&&	WARUNEK					// vid == 
		&&	damagebits & DMG_BULLET			// czy obrażenia zadane pocikiem
		&&	get_tr2(tr, TR_iHitgroup) != HIT_HEAD	// czy miejsce uderzenia to głowa
	){
		SetHamParamFloat(3, 0.0);			// zmieniamy wartość obrażeń na 0
		return HAM_HANDLED;				// HANDLED!
	}
	
	return HAM_IGNORED;
}

Edit.

damagebits & DMG_BULLET
jest istotne z uwagi na możliwość zadania obrażeń "w głowę" przez upadek, kolizję, granat a nawet wybuchającą bombę (niestety, ale doświadczenie wymaga, by ten warunek dodać, dlatego szynka wydaje mi się tutaj lepszym rozwiązaniem). Go to the full post


  • This topic is locked This topic is locked
4 replies to this topic

#1 szelbi

    Hero

  • Power User

  • Reputacja: 373
    Wszechpomocny

  • Postów:1,032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Posted 20.05.2014 16:09

Tak jak w temacie. Szukam funkcji, która umożliwi ustawienie, że gracza o danym ID można zabić tylko w głowę. Próbowałem już dwóch sposobów, ale żaden z nich nie działał. Z góry dzięki za pomoc.


  • +
  • -
  • 0

#2 BlackPerfum

    Pseudo interakcja??

  • Power User

  • Reputacja: 459
    Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Posted 20.05.2014 17:01

Zabić czy zadac obrażenia to jest duża różnica? Bo mozna kogoś ubić by miał 1 hp (uderzając nie w głowę) ale go nie zabijać


  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#3 szelbi

    Hero

  • Autor tematu
  • Power User

  • Reputacja: 373
    Wszechpomocny

  • Postów:1,032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Posted 20.05.2014 17:03

Nie można zadawać obrażeń ani zabić gracza w inną część ciała niż głowa.


  • +
  • -
  • 0

#4 BlackPerfum

    Pseudo interakcja??

  • Power User

  • Reputacja: 459
    Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Posted 20.05.2014 17:28

Czyli najzwyklejsze wyeliminowanie dmg. Nic prostszego.

public plugin_init()
{
/*
.
.
.*/
    register_forward(FM_TraceLine,"Tr");
}


public Tr(Float:Start[3],Float:End[3],IM,id,tr)
{
    if(!is_user_alive(id) || ~pev(id,pev_button) & IN_ATTACK)	return FMRES_IGNORED;
	
    if(get_tr2(tr, TR_iHitgroup) != HIT_HEAD)	return FMRES_SUPERCEDE
	
    return FMRES_IGNORED;
}

Nigdy tym zbytnio się nie bawiłem bo nie miałem powodów ale raczej działa


  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#5 Gość_21977_*

  • Gość

  • Reputacja: 0

Offline

Posted 20.05.2014 17:35   Best Answer

RegisterHam(Ham_TraceAttack, "player", "Ham_TraceAttack_playerPre", 0);
public Ham_TraceAttack_playerPre(
	vid,			// victim id	// ofiara (moze nie byc graczem)
	id,			// id		// zabojca (jest graczem (klasa "player" przy RegisterHam)
	Float:damage,				// obrazenia
	Float:dir[3],				// wektor ataku
	tr,					// trace result
	damagebits
){
	if(
			is_user_alive(vid)			// czy gracz żyje
//		&&	WARUNEK					// vid == 
		&&	damagebits & DMG_BULLET			// czy obrażenia zadane pocikiem
		&&	get_tr2(tr, TR_iHitgroup) != HIT_HEAD	// czy miejsce uderzenia to głowa
	){
		SetHamParamFloat(3, 0.0);			// zmieniamy wartość obrażeń na 0
		return HAM_HANDLED;				// HANDLED!
	}
	
	return HAM_IGNORED;
}

Edit.

damagebits & DMG_BULLET
jest istotne z uwagi na możliwość zadania obrażeń "w głowę" przez upadek, kolizję, granat a nawet wybuchającą bombę (niestety, ale doświadczenie wymaga, by ten warunek dodać, dlatego szynka wydaje mi się tutaj lepszym rozwiązaniem).

Edited by 21977, 20.05.2014 17:39.





  


1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users

Coinsy CSGOPolygon Za SMS, PSC , Przelew - CoinSell.pro
Skiny do CS:GO za SMS, PSC, Przelew - CSGOPaka.com
Automatyczny Bot Levelowania Steam - LVLUPSteam.com
CSGO Gambling Sites and Free Betting Codes - DreamCodes.gg

Sign In