←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Wybuch nie zadaje obrażeń

Locked

  • +
  • -
szelbi's Photo szelbi 19.05.2014

		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.

Quote

  • +
  • -
BlackPerfum's Photo BlackPerfum 19.05.2014

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


Edited by BlackPerfum, 19.05.2014 18:24.
Quote
Locked