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] Kod z traceline wywołuje FATAL ERROR (shutting down): Bad entity in IndexOfEdict()


Najlepsza odpowiedź Rivit , 26.01.2015 16:34

Po testach doszedłem do wniosku, że:

 

-

set_tr2(trace, TR_iHitgroup, 8)

To powoduje takie iskry jak się strzeli w coś (jak w tarcze), blokuje obrażenia skutecznie, nie da się double killa strzelić jeżeli pierwszy gracz odbije, po prostu nie przechodzi pocisk (ale na ścianie jest dziura)

 

 

 

 

-   

set_tr(TR_flFraction, 1.0)
return FMRES_SUPERCEDE

Ten kod, też skutecznie blokuje obrażenia w głowę, nie ma takich iskier, wygląda to jakby pocisk "przechodził" przez gracza, nic mu nie robiąc. Dziura w ścianie się robi, słychać dźwięk uderzenia kuli w ciało. W tym przypadku także nie da się strzelić double killa, jeśli pierwszy zablokuje.

 

 

 

 

To tyle różnic, które zaobserwowałem.

Przejdź do postu


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

#1 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 05.01.2015 18:04

Witam,

co tu może być źle? Bo perk wywołuje crash z powodem: FATAL ERROR (shutting down): Bad entity in IndexOfEdict()

 

Kod:

#include <amxmodx>
#include <fakemeta>
#include <codmod>

new bool:ma_perk[33];

public plugin_init() 
{
      new perk_name[] = "Twarda Bania";
      new perk_desc[] = "Odpornosc na strzaly w glowe";

      register_plugin(perk_name, "1.0", "QTM_Peyote");

      cod_register_perk(perk_name, perk_desc);

      register_forward(FM_TraceLine, "TraceLine");
}

public cod_perk_enabled(id, wartosc)
      ma_perk[id] = true;

public cod_perk_disabled(id)
      ma_perk[id] = false;

public TraceLine(Float:start[3], Float:end[3], conditions, id, trace)
{ 
      if(get_tr2(trace, TR_iHitgroup) != HIT_HEAD)
            return FMRES_IGNORED;

      new iHit = get_tr2(trace, TR_pHit);

      if(!is_user_connected(iHit))
            return FMRES_IGNORED;

      if(!ma_perk[iHit])
            return FMRES_IGNORED;

      set_tr2(trace, TR_iHitgroup, 8);

      return FMRES_IGNORED;
}

Ja już nie mam pomysłu :C


  • +
  • -
  • 0

#2 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 06.01.2015 09:50

https://forums.allie...ead.php?t=65785
  • +
  • -
  • 2

If you can dream it, you can do it.


#3 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 17.01.2015 17:53

Dobra, teraz znalazłem plugin na only hs (przerobiłem, że nie można w głowę) i tam jest inna metoda...

 

Czym się to różni? oO

Która jest dobra/lepsza?

public TraceLine(Float:start[3], Float:end[3], conditions, id, trace)
{
      new iHit = get_tr2(trace, TR_pHit);
      
      if(!ma_perk[iHit] || !is_user_alive(iHit) || !is_user_alive(id) || get_tr2(trace, TR_iHitgroup) != HIT_HEAD) return FMRES_IGNORED;

      set_tr2(trace, TR_iHitgroup, 8);

      return FMRES_IGNORED;
}

public forward_traceline(Float:start[3], Float:end[3], conditions, id)
{
	if(!is_user_alive(id)) return FMRES_IGNORED

	new entity2 = get_tr(TR_pHit)
	if(!is_user_alive(entity2)) return FMRES_IGNORED

	if(id == entity2) return FMRES_IGNORED

	if(get_tr(TR_iHitgroup) != 1)
	{
		set_tr(TR_flFraction, 1.0)
		return FMRES_SUPERCEDE
	}
	
	return FMRES_IGNORED
}

  • +
  • -
  • 0

#4 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 17.01.2015 23:53

Kody różnią się wyłącznie ułożeniem warunków i sposobem blokowania obrażeń. W pierwszym podmieniany jest po prostu hitzone, aby obrażenie nie miało skutku (nie wiem dokładnie za jaki hitzone odpowiada 8, ale możliwe że za tarczę). W drugim są blokowane obrażenia.

Jaka będzie różnica? Chyba wyłącznie efektem wniknięcia kuli w ciało. Pierwszy sposób da efekt odbicia pocisku, drugi nie zmodyfikuje efektu, czyli będzie efekt jakbyś kogoś trafił, ale nie zada to obrażeń. Różnica w użyciu może być też taka, że w 1 kula nie przebije się przez gracza, przez co nie zada ewentualnych obrażeń osobie stojącej za graczem na tej samej linii strzału. W drugim jeśli kula ma przebicie (np strzał z AWP) to może trafić jeszcze osobę następną. Oczywiście dotyczy to sytuacji strzału w ciało, a nie w głowę :)
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#5 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 18.01.2015 11:18

Dzięki wielkie!

Jeszcze pytanie. Dlaczego w jednym jest używane trace (5 parametr) a w drugim nie? Co to za czary oO

Edition: i czy id może być równe ofierze? Przecież sam w siebie Nie strzele, chyba że granat,Ale to nie traceline
  • +
  • -
  • 0

#6 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 18.01.2015 21:49

Są 2 funkcje: get_tr i get_tr2, jedna potrafi parametr trace pobrać sobie automatycznie z bieżącego eventu, druga nie. Ta druga może być użyta np poza eventem.
  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#7 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 26.01.2015 16:34   Najlepsza odpowiedź

Po testach doszedłem do wniosku, że:

 

-

set_tr2(trace, TR_iHitgroup, 8)

To powoduje takie iskry jak się strzeli w coś (jak w tarcze), blokuje obrażenia skutecznie, nie da się double killa strzelić jeżeli pierwszy gracz odbije, po prostu nie przechodzi pocisk (ale na ścianie jest dziura)

 

 

 

 

-   

set_tr(TR_flFraction, 1.0)
return FMRES_SUPERCEDE

Ten kod, też skutecznie blokuje obrażenia w głowę, nie ma takich iskier, wygląda to jakby pocisk "przechodził" przez gracza, nic mu nie robiąc. Dziura w ścianie się robi, słychać dźwięk uderzenia kuli w ciało. W tym przypadku także nie da się strzelić double killa, jeśli pierwszy zablokuje.

 

 

 

 

To tyle różnic, które zaobserwowałem.


  • +
  • -
  • 0

#8 radim

    Godlike

  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 26.01.2015 17:08

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !





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

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