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

Wybuch nie zadaje obrażeń


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

#1 szelbi

    Hero

  • Power User

Reputacja: 373
Wszechpomocny

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

Napisano 19.05.2014 17:18

		new Float:fOrigin[3];
		entity_get_vector(id, EV_VEC_origin, fOrigin);

		new iOrigin[3];
		for(new i=0;i<=2;i++)
		iOrigin[i] = floatround(fOrigin[i]);

		message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
		write_byte(TE_EXPLOSION);
		write_coord(iOrigin[0]);
		write_coord(iOrigin[1]);
		write_coord(iOrigin[2]);
		write_short(sprite_blast);
		write_byte(32);
		write_byte(20);
		write_byte(0);
		message_end();
		
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY, iOrigin);
		write_byte(TE_BEAMCYLINDER);
		write_coord(iOrigin[0] );
		write_coord(iOrigin[1] );
		write_coord(iOrigin[2] );
		write_coord(iOrigin[0] );
		write_coord(iOrigin[1] + 200 );
		write_coord(iOrigin[2] + 200 );
		write_short(sprite_white );
		write_byte(0);
		write_byte(0);
		write_byte(10);
		write_byte(10);
		write_byte(255);
		write_byte(255);
		write_byte(100);
		write_byte(100);
		write_byte(128);
		write_byte(0);
		message_end();

		new entlist[33];
		new numfound = find_sphere_class(id, "player", 200.0 , entlist, 32);
		
		for(new i=0; i <=numfound; i++)
		{	
			new pid = entlist[i];

			if(is_user_alive(pid) && get_user_team(id) != get_user_team(pid))		
			ExecuteHam(Ham_TakeDamage, pid, 0, id, float(get_user_health(pid)+1));
		}

Kod powyżej nie zadaje obrażeń. Co może być źle?

 

ID to osoba, która została zabita.


  • +
  • -
  • 0

#2 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

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

Napisano 19.05.2014 18:20

*
Popularny

Zacznijmy od tego że nie chcesz tu nikomu zabierać dmg.

 

Po prostu zabij:

new team = get_user_team(id)
for(new i=0; i <=numfound; i++)
{	
    new dead = entlist[i];
    if(is_user_alive(dead) && team != get_user_team(dead))
    {
        ExecuteHam(Ham_Killed, dead, id, 1);
    }
}

A dlaczego nie zabiera dmg? Bo w:

ExecuteHam(Ham_TakeDamage, pid, 0, id, float(get_user_health(pid)+1));

Trzeci argument nie może być zerem (gdy 4 argument też nim nie jest) gdyż to jest id bytu który zadaje dmg. + o jeden argument za mało

 

Tak by działało:

(Ale tylko w pre Ham_Killed w post nie podziała (chyba))

ExecuteHam(Ham_TakeDamage, pid, id, id, float(get_user_health(pid)+1), 2);

Sharkowy no poza tym że walnie error w konsoli serwera i nic dmg nikomu nie zada to wszystko jest okey


Użytkownik BlackPerfum edytował ten post 19.05.2014 18:24

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




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

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