Duda - actores.
#1

Hola,
bбsicamente estoy realizando un sistema de zombies con los actores, pero no sй como realizar la operaciуn matemбtica para hacer caminar (teletransportar) al zombie hacia al jugador

A lo que me refiero es asignar (por timer obviamente) el SetActorPos y la rotaciуn SetActorFacingAngle, es decir, que cuando un jugador estй cerca del бrea del actor zombie йste comenzarнa a teletransportarse (con el timer) de poco a poco hacia el jugador, lo que no sй es como realizar la funciуn para hacer que se teletransporte de a poco hacia el jugador. Gracias, espero que me entendieran la idea.
Reply
#2

Tienes que hacer que se teletransporten de a poco.
Reply
#3

Lo sй, pero como te digo, lo que no sй es como hacer para obtener las coordenadas para que teletransporte de a poco hacia al jugador, y obtener las coordenadas para que el actor mire a su " victima ".

+ Rep el que me ayude.
Reply
#4

lamentablemente no se puede, SetActorFacingAngle esta bug y no funciona.

saludos.
Reply
#5

No me interesa mucho la rotaciуn, pero el movimiento sн.
Reply
#6

PHP код:
new Float:x,Float:y,Float:z,Float:a;
GetPlayerPos(playeridx,y,z);
GetPlayerFacingAngle(playerida);
-= (floatsin(-adegrees));
-= (floatcos(-adegrees));
SetActorPos(actoridx,y,z);
SetActorFacingAngle(actorida); 
Reply
#7

Quote:
Originally Posted by OTACON
Посмотреть сообщение
PHP код:
new Float:x,Float:y,Float:z,Float:a;
GetPlayerPos(playeridx,y,z);
GetPlayerFacingAngle(playerida);
-= (floatsin(-adegrees));
-= (floatcos(-adegrees));
SetActorPos(actoridx,y,z);
SetActorFacingAngle(actorida); 
Gracias por tъ ayuda OTACON, el problema es que esa funciуn no toma en cuenta la posiciуn original del actor, por tanto, se teletransporta detrбs de su vнctima, la funciуn que necesito consistirнa en comparar posiciones de la vнctima tanto como el actor zombie; asн teletransportandolo lentamente hacia el jugador desde su posiciуn original.
Reply
#8

No recomendarнa usar actores para los zombies, de hecho, nunca deberнa ser usado como substituto de los NPC. La razуn por la que los actores solo se quedan parados, sirviendo como personajes estбticos en tiendas, cuerpos tirados, etc. es que no se envнa cierta informaciуn al servidor, es decir estos no estбn sincronizados. No digo que sea imposible utilizarlos, siempre puedes hacer un timer de 50ms en donde se calcule a donde tiene que "caminar" cada actor, pero aъn asн, usar NPC es mucho mбs eficiente.
Reply
#9

Hola Latin, me acuerdo de tu servidor de Zombies hace tiempo, buenos inicios, en fin, el otro dia me puse a experimentar e iba a subirte el cуdigo pero no tenнa conexiуn, esto es lo que quedу..

Код:
new Float:as[2],Float:bs[2],Float:cs[2];
forward Siguelo(Seguidor, Seguido);
public Siguelo(Seguidor, Seguido)
{
	new Float:xa, Float:xb, Float:xc;
		 GetPlayerPos(Seguido, as[0],bs[0],cs[0]);
         GetPlayerPos(Seguidor, as[1],bs[1],cs[1]);


			if( as[0] >  as[1])
			{
			xa = as[1] + 1.0;
			}
			else
			{
			xa = as[1] - 1.0;
			 }
			if( bs[0] >  bs[1] )
			{
			xb = bs[1] + 1.0;
			}
			else
			{
			xb = bs[1] - 1.0;
			}

			SetPlayerPos(Seguidor, xa, xb,cs[0]);

	    return 1;
	}
Ejemplo:

Код:
	if(strcmp(cmd, "/sigueme", true) == 0)
	{
 SetTimerEx("Siguelo", 500, 1, "id", ZombieID, playerid);
 SendClientMessage(playerid, -1, "Voy a comerte");
	    return 1;
	}
Saludos
Reply
#10

Quote:
Originally Posted by LeonardoEscobar
Посмотреть сообщение
Hola Latin, me acuerdo de tu servidor de Zombies hace tiempo, buenos inicios, en fin, el otro dia me puse a experimentar e iba a subirte el cуdigo pero no tenнa conexiуn, esto es lo que quedу..

Код:
new Float:as[2],Float:bs[2],Float:cs[2];
forward Siguelo(Seguidor, Seguido);
public Siguelo(Seguidor, Seguido)
{
	new Float:xa, Float:xb, Float:xc;
		 GetPlayerPos(Seguido, as[0],bs[0],cs[0]);
         GetPlayerPos(Seguidor, as[1],bs[1],cs[1]);


			if( as[0] >  as[1])
			{
			xa = as[1] + 1.0;
			}
			else
			{
			xa = as[1] - 1.0;
			 }
			if( bs[0] >  bs[1] )
			{
			xb = bs[1] + 1.0;
			}
			else
			{
			xb = bs[1] - 1.0;
			}

			SetPlayerPos(Seguidor, xa, xb,cs[0]);

	    return 1;
	}
Ejemplo:

Код:
	if(strcmp(cmd, "/sigueme", true) == 0)
	{
 SetTimerEx("Siguelo", 500, 1, "id", ZombieID, playerid);
 SendClientMessage(playerid, -1, "Voy a comerte");
	    return 1;
	}
Saludos
Bueno, ya no me harб falta el cуdigo.., me quedarй con NPCґs (RNPC), 100 zombies y va todo bien por ahora.

PD: La V2 no se parece en nada a la 1
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)