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] Czy musze sprawdzać damagebits jeżeli sprawdzam broń?


Najlepsza odpowiedź BlackPerfum , 29.06.2014 16:25

Kod na celu ma: 1/6 na natychmiastowe zabicie z p228 i +10 obrazen z niego

Powinno być lub na +10 dmg haha.gif
 

koro broń gracza to p228 to damagebits musi byd DMG_BULLET

Nie musi a rzuć HE i zmień broń na p228 następnie zobacz jakią wykryło twoją broń a jakie damagebits
 

Co zwrocic po zabiciu?

Dużej różnicy to nie robi zwracaj między 1 a 3 haha.gif Tzn wybierz sobie między:
HAM_IGNORED
HAM_HANDLED
HAM_OVERRIDE
Ale już jest różnica co zwrócisz po SetHamParamFloat. Osobiście polecam operowanie nad zmienną nagłówkową damage a dopiero na sam koniec funkcji ustawiać dmg xD Przejdź do postu


  • Zamknięty Temat jest zamknięty
17 odpowiedzi w tym temacie

#1 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 29.06.2014 15:47

Witam.

 

Czy w tym:

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!is_user_connected(idattacker))
		return HAM_IGNORED;

	if(!ma_perk[idattacker])
		return HAM_IGNORED;
		
      if(get_user_weapon(idattacker) != CSW_P228)
		return HAM_IGNORED;

	if(!random(6))
	{
		ExecuteHamB(Ham_Killed, this, idattacker, 1)
		return PLUGIN_HANDLED //CO TU ZWROCIC?
	}
	else
            SetHamParamFloat(4, damage+10)
		
	return HAM_IGNORED	
}

Kod na celu ma: 1/6 na natychmiastowe zabicie z p228 i +10 obrazen z niego

 

Skoro broń gracza to p228 to damagebits musi byd DMG_BULLET

 

+ Co zwrocic po zabiciu?


  • +
  • -
  • 0

#2 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

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

Napisano 29.06.2014 16:25   Najlepsza odpowiedź

Kod na celu ma: 1/6 na natychmiastowe zabicie z p228 i +10 obrazen z niego

Powinno być lub na +10 dmg haha.gif
 

koro broń gracza to p228 to damagebits musi byd DMG_BULLET

Nie musi a rzuć HE i zmień broń na p228 następnie zobacz jakią wykryło twoją broń a jakie damagebits
 

Co zwrocic po zabiciu?

Dużej różnicy to nie robi zwracaj między 1 a 3 haha.gif Tzn wybierz sobie między:
HAM_IGNORED
HAM_HANDLED
HAM_OVERRIDE
Ale już jest różnica co zwrócisz po SetHamParamFloat. Osobiście polecam operowanie nad zmienną nagłówkową damage a dopiero na sam koniec funkcji ustawiać dmg xD

Użytkownik BlackPerfum edytował ten post 29.06.2014 16:27

  • +
  • -
  • 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

#3 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 980
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 29.06.2014 16:32

Tak musisz sprawdzać


  • +
  • -
  • 1

#4 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 29.06.2014 18:25

Dobra wiem. Jestem debilem :) Ten HE zawsze sprawia problemy/komplikuje

@BlackPerfum
Uzywam SetHamParamFloat w srodku i co mam zwrocic? A czasem na koncu i co wtedy?
  • +
  • -
  • 0

#5 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

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

Napisano 01.07.2014 09:19

Uzywam SetHamParamFloat w srodku i co mam zwrocic? A czasem na koncu i co wtedy?

Polecam używanie tego na samym końcu gdyż nie ma się problemów z zakańczaniem na parę sposobów funkcji ;D
Najlepiej pokaż przykładowy kod
  • +
  • -
  • 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

#6 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 01.07.2014 10:06

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker)|| !ma_perk[idattacker] || get_user_weapon(idattacker) != CSW_P228 || !(damagebits & DMG_BULLET)) return HAM_IGNORED;


if(!random(6))
{
   SetHamParamFloat(4, float(get_user_health))
   return  //CO TU ZWROCIC?
}
else
{
   SetHamParamFloat(4, damage+10)
   return  //CO TU ZWROCIC?
}

return HAM_IGNORED
}
Kurde. Sam nie wiem. W tutorialu 'wplywanie na obrazenia' pisze zeby zwracac HAM_HANDLED zeby zatwierdzic zmiany. Wiec jak to jest?
  • +
  • -
  • 0

#7 szelbi

    Hero

  • Power User

Reputacja: 373
Wszechpomocny

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

Napisano 01.07.2014 10:22

Ja bym to zrobił tak, ale nie wiem czy zadziała:

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!is_user_connected(idattacker)|| !ma_perk[idattacker] || get_user_weapon(idattacker) != CSW_P228 || !(damagebits & DMG_BULLET))
	return HAM_IGNORED;
	
	if(!random(6))
	damage = float(get_user_health(id)); // zapomniales o id
	else
	damage += 10.0;

	SetHamParamFloat(4, damage);
	return HAM_IGNORED;
}

//edit

 

Tak btw. to stosując to, co napisałeś wyżej, możesz równie dobrze nic nie zwracać i powinno działać ;)


  • +
  • -
  • 1

#8 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 01.07.2014 10:27

Aaaa no tak tez mozna.

Ale jestes pewien ze obrazenia zostana dodane/ustawienie? Potem zwracasz IGNORED.

amxx.pl/topic/14829-wplywanie-na-obrazenia/
  • +
  • -
  • 0

#9 szelbi

    Hero

  • Power User

Reputacja: 373
Wszechpomocny

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

Napisano 01.07.2014 10:29

Stosuję identyczny patent w innym pluginie i tam działa bez problemu. Co do tych poradników, to ja przy pisaniu pluginów używam tylko HAM_IGNORED oraz HAM_SUPERCEDE i jakoś nigdy nie miałem problemu :D


  • +
  • -
  • 1

#10 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 01.07.2014 10:32

Do czego supercede?

Moglbys rzucic jakis kod? Przykladowy, dzialajacy plugin.
  • +
  • -
  • 0

#11 szelbi

    Hero

  • Power User

Reputacja: 373
Wszechpomocny

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

Napisano 01.07.2014 10:37

HAM_SUPERCEDE używałem w silniku JB, kiedy chciałem całkowicie zatrzymać zadawanie obrażeń, np. żeby CT nie mogło bić TT w danym przypadku itp.

public player_damage(victim, ent, attacker, Float:damage, bits)
{	
	if(victim == attacker || !is_user_connected(attacker))
	return HAM_IGNORED;
	
	/* Gracz majacy FreeDay'a nie zadaje obrazen CT */
	if(cs_get_user_team(victim) == CS_TEAM_CT && FreeDayGracz[attacker])
	return HAM_SUPERCEDE;
	
	/* CT nie zadaje obrazen TT, jesli zmienna nieaktywna */
	if(cs_get_user_team(attacker) == CS_TEAM_CT && cs_get_user_team(victim) == CS_TEAM_T && !zmienna[CT_HIT_TT])
	return HAM_SUPERCEDE;
	
	/* TT nie zadaje sobie nawzajem obrazen, jesli zmienna nieaktywna */
	if(cs_get_user_team(attacker) == CS_TEAM_T && cs_get_user_team(victim) == CS_TEAM_T && !zmienna[WALKA])
	return HAM_SUPERCEDE;
}

  • +
  • -
  • 1

#12 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 01.07.2014 10:41

Dobra.
Czyli SUPERCEDE blokuje tak ze inne pluginy nie moga tego wychwycic?

To dlaczego R3X pisal ze HANDLED zatwierdza zmiany?
Chce zeby to wylapywaly inne pluginy...
  • +
  • -
  • 0

#13 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

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

Napisano 01.07.2014 11:36

W tutorialu 'wplywanie na obrazenia' pisze zeby zwracac HAM_HANDLED zeby zatwierdzic zmiany

I dobrze tam prawią ;D
 

możesz równie dobrze nic nie zwracać i powinno działać

Tylko że pisząc wszyscy powinniśmy być pewni że nasz kod zadziała ;D
Oczywiście szansa na to że metamod czegoś nieogarnie wynosi 1/d245777abca64ece2d5d7ca0d19fddb6.png
Ale powinniśmy się bać tej malutkiej szansy i to bardzo :D

Dobra.
Czyli SUPERCEDE blokuje tak ze inne pluginy nie moga tego wychwycic?

Zawsze się w jakiś sposób da wychwycić albo po prostu info o dmg najpierw doszło do jakiegoś pluginu potem do pluginu blokującego :(
Czyli pewni nie jesteśmy że nie dojdzie ale ogułem zwrócenie tej wartości równa się z zablokowaniem funkcji

To dlaczego R3X pisal ze HANDLED zatwierdza zmiany?
Chce zeby to wylapywaly inne pluginy...

Żeby inny pluginy łapały zmienione dmg ;D
  • +
  • -
  • 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

#14 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 01.07.2014 12:13

Popatrz na kod ktory dal norbi :)

Jak tam wepchnac return HAM_HANDLED ?

Do mojego jest prosto bo dajesz miedzy klamrami.
  • +
  • -
  • 0

#15 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

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

Napisano 01.07.2014 13:15

Tam jest jeszcze prościej daj po SetHamParamFloat
  • +
  • -
  • 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

#16 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 01.07.2014 16:58

chodzi Ci o zamienienie IGNORED na HANDLED ??
  • +
  • -
  • 0

#17 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

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

Napisano 01.07.2014 17:53

Tak xD
  • +
  • -
  • 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

#18 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 01.07.2014 18:00

Hmmm ale to na pewno tak?

Chociaz faktycznie. Jesli nie spelnia warunkow to zwroci sie IGNORED a jesli spelni to SetHamParamFloat.

Dobra dzięki wam :) plusy rozdam pozniej
  • +
  • -
  • 0




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

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