Entre para seguir isso  
Seguidores 0
Like it

Usar efeito como sprite de NPC

20 posts neste tópico

Eu não tinha visto o tópico, apesar de está um tempo sem respostas...

 

Não entendi muito bom, dê-me um exemplo visualmente especifico se tiver como, ou uma explicação mais clara.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cria um NPC de sprite invisível e coloca ele para chamar o efeito repetidas vezes (o npc oficial do rAthena que é a placa que gerencia a WoE faz isso).

Pode ser que ele toque o som o efeito tambem, se tocar não sei como arrumar não e.e

Você tambem pode converter o efeito em npc, mudando o spr e act para a pasta npc (pode ser necessário editar um pouco o arquivo), e adicionando manualmente o ID e a sprite_name nas lua files e no emulador.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 2017-5-11 at 19:59, Hyroshima disse:

Eu não tinha visto o tópico, apesar de está um tempo sem respostas...

 

Não entendi muito bom, dê-me um exemplo visualmente especifico se tiver como, ou uma explicação mais clara.

 

Em 2017-5-11 at 22:43, fxfreitas disse:

Cria um NPC de sprite invisível e coloca ele para chamar o efeito repetidas vezes (o npc oficial do rAthena que é a placa que gerencia a WoE faz isso).

Pode ser que ele toque o som o efeito tambem, se tocar não sei como arrumar não e.e

Você tambem pode converter o efeito em npc, mudando o spr e act para a pasta npc (pode ser necessário editar um pouco o arquivo), e adicionando manualmente o ID e a sprite_name nas lua files e no emulador.

Por algum motivo, que eu não sei qual é... o fórum não está notificando e nem mostrando quando um tópico é atualizado. Ou seja, eu não tinha visto o post de vcs até agora, me desculpem...

O que eu estou pensando em fazer era criar algumas armadilhas, mas eu gostaria que elas ficassem apenas com a sprite da habilidade "pintar armadilha" de renegado, que não é uma sprite de npc e sim sprite de habilidade... ou melhor, um efeito.

Pintar Armadilha.gif

@fxfreitas é esse script que vc falou? Se for, eu fiz o inverso e não deu certo. Veja:

prontera,155,155,4	script	nome	HIDDEN_NPC,{
		while(agitcheck() == 0 && agitcheck2() == 0){
		specialeffect EF_BEGINSPELL6;
		sleep 425;
		}
	end;
}

 

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se não me engano da pra usar os efeitos das skills somente o visual delas não? com o especialeffect/especialeffect2 ?

0

Compartilhar este post


Link para o post
Compartilhar em outros sites
13 minutos atrás, Hyroshima disse:

Se não me engano da pra usar os efeitos das skills somente o visual delas não? com o especialeffect/especialeffect2 ?

É o que estou tentando... (Veja meu script do último post.)

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

O trecho que usou, tem a condição while agit check e agitcheck2, quer dizer que só funciona durante a guerra (acredito eu, levando em conta que os comandos para ativar e desativar a mesma são agitstart e agitend)...

Tente remover essa linha e ver o que acontece.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites
55 minutos atrás, fxfreitas disse:

O trecho que usou, tem a condição while agit check e agitcheck2, quer dizer que só funciona durante a guerra (acredito eu, levando em conta que os comandos para ativar e desativar a mesma são agitstart e agitend)...

Tente remover essa linha e ver o que acontece.

Man, eu testei sem while, mas o problema não é ele. White significa enquanto, então enquanto agitcheck e agitcheck2 forem 0, será executado. Em outras palavras, enquanto a GDE estiver desligada, o efeito será chamado, entendeu? foi proposital isso.

@edit

Descobri o real problema. Na vdd o npc não tem erro, o problema é que alguém precisa clica-lo para que então o efeito seja exibido, e como  a armadilha ficará em lugares aleatórios (ficará se teletransportando), a "sprite" do efeito não será mostrado enquanto ngm cair na armadilha, entendeu?

Editado por Like it
0

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 minutos atrás, Hyroshima disse:

então é só usar trigger/OnTouch que resolve xD

Man, vc não entendeu... Ao usar OnTouch, eu só vou ver a animação do efeito após cair na armadilha, ai não será útil em nada o efeito, entendeu?

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

há mals, no caso vc quer q o efeito esteja sempre ativo? 

Se for isso, você pode por um Init no código e fazer um loop infinito ou até uma determinada ação.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites
28 minutos atrás, Hyroshima disse:

há mals, no caso vc quer q o efeito esteja sempre ativo? 

Se for isso, você pode por um Init no código e fazer um loop infinito ou até uma determinada ação.

Isso, para que o jogador consiga ver armadilha antes de acontecer algo. Entendeu? Pois da forma que está o jogador vai cair na armadilha e ele só vai ver o efeito na armadilha depois que já estiver no buraco. 

Pode me dar um exemplo?

0

Compartilhar este post


Link para o post
Compartilhar em outros sites
prontera,155,155,4	script	nome	HIDDEN_NPC,{ end;

OnInit:
	while(1)
	{
		specialeffect EF_BEGINSPELL6;
		sleep 500;
	}
end;

}

Prontinho, abaixo você pode ver como ficou, com 1 e 0,5 de segundos.



1 Segundo:

https://streamable.com/r7k0y

 

0,5 de segundos:

https://streamable.com/jrvm2

Obs: deu uma trava aqui no note kkk na hora q tava gravando esse de 0,5 da pra perceber quando parece q houve uma pausa, mas não eve pausa.


Espero que seja o que queria!

 

 

1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Man, muitoooooo obrigado! Vc me ajudou resolver uma parte. Porém, agora to tentando resolver a outra... Eu estava pensando e fiquei em dúvida sobre como iria proceder nessa parte. Eu gostaria que assim que o jogador "cair na armadilha", a armadilha se teleportasse para uma coordenada aleatória no mapa. Eu achei um script bem parecido com o que eu quero, mas o NPC se teleporta pra coordenadas estipuladas... Então tentei juntar e alterar para que o NPC se teleportasse pra coordenadas aleatórias, mas não deu mto certo... Não há nenhum erro no map serve, mas ao passar pelo OnTouch não ta mais acontecendo nada e ele não se movimenta pra coordenadas aleatórias após alguém já ter caído na armadilha. Dê uma olhada como ficou...

guild_vs1,49,50,4	script	nome	100,{
end;

	OnInit:
	// Runes Duration in Seconds
	set .duration,60;

	// Name of Each Runes.
	setarray .name$[0],
		"Double Damage",	//	2 x ATK Rate
		"Invisibility",		//	Cloaking
		"Regeneration",		//	HP / SP Regeneration
		"Self Clone",		//	Create 2 Clones
		"Unlimit Haste";	//	Improve Movement Speed

	// npc sprite switching if any.
	setarray .npc_sprite,
		62;
		
	// Random Coordinate where NPC will Shown Again
	setarray .CoordinateX[0],50;
	setarray .CoordinateY[0],50;
	
	.rune_size = getarraysize( .name$ );
	.coordinate_size = getarraysize( .CoordinateX );
	.npc_name$ = strnpcinfo(0);
	callsub( OnAssign );

	while(1){
	specialeffect EF_BEGINSPELL6;
	sleep 1000;
	}

OnTouch:
switch( rand(5) ) {
		case 0:
			// 2x ATK / MATK
			sc_start SC_INCATKRATE,( .duration * 1000 ),100;
			sc_start SC_INCMATKRATE,( .duration * 1000 ),100;
			break;
		case 1:
			// Invisible
			skill "AS_CLOAKING",10,1;
			sc_start SC_CLOAKING,( .duration * 1000 ),10;
			break;
		case 2:
			// Restore
			sc_start4 SC_REGENERATION,( .duration * 1000 ),-10,1,0,0;
			break;
		case 3:
			// Clone
			getmapxy( .@map$,.@x,.@y,0,strcharinfo(0) );
			clone .@map$,.@X,.@y,"",getcharid(0),getcharid(0),"",1,.duration;
			clone .@map$,.@X,.@y,"",getcharid(0),getcharid(0),"",1,.duration;
			break;
		case 4:
			// Haste
			sc_start SC_SpeedUp1,( .duration * 1000 ),0;
			break;
		default: end;
	}
	mapannounce "guild_vs1", "O jogador "+strcharinfo(0)+" foi surpreendido com "+.name$[.runes]+".",bc_map,00FF00;
//	*mapannounce("<map name>", "<text>", <flag>{, <fontColor>{, <fontType>{, <fontSize>{, <fontAlign>{, <fontY>}}}}}})
	hideonnpc .npc_name$;
	delwaitingroom;
	.runes = -1;
	attachnpctimer;
	initnpctimer;
	specialeffect2 EF_PROVIDENCE;
	end;
	
OnTimer6000:
	sc_end SC_CLOAKING;
	sc_end SC_REGENERATION;
OnTimerQuit:
	stopnpctimer;
	callsub( OnAssign );
	end;

OnAssign:
	.random = rand( .coordinate_size );
	movenpc .npc_name$,.CoordinateX[ .random ],.CoordinateY[ .random ];
	hideoffnpc .npc_name$;
	if( .runes < 0 ) 
		.runes = rand( .rune_size );
	if( .npc_sprite[.runes] )
		setnpcdisplay( .npc_name$,.name$[.runes],.npc_sprite[.runes] );
	delwaitingroom;
	waitingroom "   "+.name$[.runes],0;
	return;
}

O NPC original é esse

//Buffs aleatórios para mapa
//http://rathena.org/board/topic/57784-request-dota-runes/page__fromsearch__1

prontera,1,1,5	script	Runes	757,1,1,{
dispbottom "Walkthrough to get Runes.";
end;

OnTouch:
	switch( .runes ){
		case 0:
			// 2x ATK / MATK
			sc_start SC_INCATKRATE,( .duration * 1000 ),100;
			sc_start SC_INCMATKRATE,( .duration * 1000 ),100;
			break;
		case 1:
			// Invisible
			skill "AS_CLOAKING",10,1;
			sc_start SC_CLOAKING,( .duration * 1000 ),10;
			break;
		case 2:
			// Restore
			sc_start4 SC_REGENERATION,( .duration * 1000 ),-10,1,0,0;
			break;
		case 3:
			// Clone
			getmapxy( .@map$,.@x,.@y,0,strcharinfo(0) );
			clone .@map$,.@X,.@y,"",getcharid(0),getcharid(0),"",1,.duration;
			clone .@map$,.@X,.@y,"",getcharid(0),getcharid(0),"",1,.duration;
			break;
		case 4:
			// Haste
			sc_start SC_SpeedUp1,( .duration * 1000 ),0;
			break;
		default: end;
	}
	announce "[Rune]  "+strcharinfo(0)+" gained "+.name$[.runes]+".",bc_self,0x00FF00;
	hideonnpc .npc_name$;
	delwaitingroom;
	.runes = -1;
	attachnpctimer;
	initnpctimer;
	specialeffect2 EF_PROVIDENCE;
	end;
	
OnTimer6000:
	sc_end SC_CLOAKING;
	sc_end SC_REGENERATION;
OnTimerQuit:
	stopnpctimer;
	callsub( OnAssign );
	end;

OnAssign:
	.random = rand( .coordinate_size );
	movenpc .npc_name$,.CoordinateX[ .random ],.CoordinateY[ .random ];
	hideoffnpc .npc_name$;
	if( .runes < 0 ) 
		.runes = rand( .rune_size );
	if( .npc_sprite[.runes] )
		setnpcdisplay( .npc_name$,.name$[.runes],.npc_sprite[.runes] );
	delwaitingroom;
	waitingroom "   "+.name$[.runes],0;
	return;

OnInit:
	// Runes Duration in Seconds
	set .duration,60;

	// Name of Each Runes.
	setarray .name$[0],
		"Double Damage",	//	2 x ATK Rate
		"Invisibility",		//	Cloaking
		"Regeneration",		//	HP / SP Regeneration
		"Self Clone",		//	Create 2 Clones
		"Unlimit Haste";	//	Improve Movement Speed

	// npc sprite switching if any.
	setarray .npc_sprite,
		112,
		113,
		114,
		115,
		116;
		
	// Random Coordinate where NPC will Shown Again
	setarray .CoordinateX[0],150,155;
	setarray .CoordinateY[0],175,175;
	
	.rune_size = getarraysize( .name$ );
	.coordinate_size = getarraysize( .CoordinateX );
	.npc_name$ = strnpcinfo(0);
	callsub( OnAssign );
	end;
}

Editado por Like it
0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz algumas modificações, o npc teleporta após 6 segundos conforme o código original que vc postou, eu fiquei meio-confuso ainda kk mas está funcionando como vc flw, o ruim é q o player q cair no trap pode acabar caindo mais de uma vez brugando o código e dando crash no emulador, no código original tem um hiddeonnpc para evitar isso, se tentar usar isso com o seu npc não vai funcionar pq ele já usa uma sprite hidden_npc e tem o efeito q enrega onde está.

 

prontera,155,155,0	script	nome	HIDDEN_NPC,1,1,{

end;

OnTouch:

	switch(rand(0,4))
	{
		case 0:
			// 2x ATK / MATK
			sc_start SC_INCATKRATE,( .duration * 1000 ),100;
			sc_start SC_INCMATKRATE,( .duration * 1000 ),100;
			break;
		case 1:
			// Invisible
			skill "AS_CLOAKING",10,1;
			sc_start SC_CLOAKING,( .duration * 1000 ),10;
			set .runes,1;
			break;
		case 2:
			// Restore
			sc_start4 SC_REGENERATION,( .duration * 1000 ),-10,1,0,0;
			set .runes,2;
			break;
		case 3:
			// Clone
			getmapxy( .@map$,.@x,.@y,0,strcharinfo(0) );
			clone .@map$,.@X,.@y,"",getcharid(0),getcharid(0),"",1,.duration;
			clone .@map$,.@X,.@y,"",getcharid(0),getcharid(0),"",1,.duration;
			set .runes,3;
			break;
		case 4:
			// Haste
			sc_start SC_SpeedUp1,( .duration * 1000 ),0;
			set .runes,4;
			break;
		default: end;
	}

	mapannounce ""+strcharinfo(3)+"", "O jogador "+strcharinfo(0)+" foi surpreendido com "+.name$[.runes]+".",bc_map,0x00FF00;
	attachnpctimer;
	initnpctimer;
	specialeffect2 EF_PROVIDENCE;
	end;

OnTimer6000:
	sc_end SC_CLOAKING;
	sc_end SC_REGENERATION;
	end;

OnTimerQuit:
	stopnpctimer;
	movenpc strnpcinfo(3),0,0;
	end;


OnInit:

	// Runes Duration in Seconds
	set .duration,60;

	// Name of Each Runes.
	setarray .name$[0],
		"Double Damage",	//	2 x ATK Rate
		"Invisibility",		//	Cloaking
		"Regeneration",		//	HP / SP Regeneration
		"Self Clone",		//	Create 2 Clones
		"Unlimit Haste";	//	Improve Movement Speed

	while(1)
	{
		specialeffect EF_BEGINSPELL6;
		sleep 1000;
	}

end;
}

 

0

Compartilhar este post


Link para o post
Compartilhar em outros sites
17 minutos atrás, Hyroshima disse:

Fiz algumas modificações, o npc teleporta após 6 segundos conforme o código original que vc postou, eu fiquei meio-confuso ainda kk mas está funcionando como vc flw, o ruim é q o player q cair no trap pode acabar caindo mais de uma vez brugando o código e dando crash no emulador, no código original tem um hiddeonnpc para evitar isso, se tentar usar isso com o seu npc não vai funcionar pq ele já usa uma sprite hidden_npc e tem o efeito q enrega onde está.

 


prontera,155,155,0	script	nome	HIDDEN_NPC,1,1,{

end;

OnTouch:

	switch(rand(0,4))
	{
		case 0:
			// 2x ATK / MATK
			sc_start SC_INCATKRATE,( .duration * 1000 ),100;
			sc_start SC_INCMATKRATE,( .duration * 1000 ),100;
			break;
		case 1:
			// Invisible
			skill "AS_CLOAKING",10,1;
			sc_start SC_CLOAKING,( .duration * 1000 ),10;
			set .runes,1;
			break;
		case 2:
			// Restore
			sc_start4 SC_REGENERATION,( .duration * 1000 ),-10,1,0,0;
			set .runes,2;
			break;
		case 3:
			// Clone
			getmapxy( .@map$,.@x,.@y,0,strcharinfo(0) );
			clone .@map$,.@X,.@y,"",getcharid(0),getcharid(0),"",1,.duration;
			clone .@map$,.@X,.@y,"",getcharid(0),getcharid(0),"",1,.duration;
			set .runes,3;
			break;
		case 4:
			// Haste
			sc_start SC_SpeedUp1,( .duration * 1000 ),0;
			set .runes,4;
			break;
		default: end;
	}

	mapannounce ""+strcharinfo(3)+"", "O jogador "+strcharinfo(0)+" foi surpreendido com "+.name$[.runes]+".",bc_map,0x00FF00;
	attachnpctimer;
	initnpctimer;
	specialeffect2 EF_PROVIDENCE;
	end;

OnTimer6000:
	sc_end SC_CLOAKING;
	sc_end SC_REGENERATION;
	end;

OnTimerQuit:
	stopnpctimer;
	movenpc strnpcinfo(3),0,0;
	end;


OnInit:

	// Runes Duration in Seconds
	set .duration,60;

	// Name of Each Runes.
	setarray .name$[0],
		"Double Damage",	//	2 x ATK Rate
		"Invisibility",		//	Cloaking
		"Regeneration",		//	HP / SP Regeneration
		"Self Clone",		//	Create 2 Clones
		"Unlimit Haste";	//	Improve Movement Speed

	while(1)
	{
		specialeffect EF_BEGINSPELL6;
		sleep 1000;
	}

end;
}

 

Cara, vc simplificou bem, ficou bem mais simples o código pra eu que sou leigo entender, mto obrigado. Mas o NPC não está teleportando após alguém cair na armadilha... Vc testou com o emulador eAthena? Pois aqui não teve nenhum crash e nem pode ter, pois eu pretendo colocar meu servidor online futuramente...

Eu conferi o comando movenpc e só estava sem aspas, não vi nenhum erro... no Map-server tbm não.

OBS: Lembrando eu uso a versão mais recente do Hercules.

Editado por Like it
0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Altere:

movenpc strnpcinfo(3),0,0;

Para:

movenpc "nome",0,0;   //nome do npc e coodenadas x,y


o npc teleporta após 6 segundos conforme:

OnTimer6000:

 


@Obs:

Lembrando que os testes que fiz foi em uma rev. antiga do eA kkk, mês que vem tem novidade na comunidade brA bem legal que estou pretendendo fazer mais um amigo e quem tiver interesse, mas em breve contarei mais.

Editado por Hyroshima
0

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 horas atrás, Hyroshima disse:

Altere:


movenpc strnpcinfo(3),0,0;

Para:


movenpc "nome",0,0;   //nome do npc e coodenadas x,y


o npc teleporta após 6 segundos conforme:


OnTimer6000:

 


@Obs:

Lembrando que os testes que fiz foi em uma rev. antiga do eA kkk, mês que vem tem novidade na comunidade brA bem legal que estou pretendendo fazer mais um amigo e quem tiver interesse, mas em breve contarei mais.

Man, eu já tinha testado ontem desse jeito e mesmo assim não deu certo. Ele não teleporta de jeito nenhum. Eu queria que ele teleportasse pra coordenadas aleatória, mas mesmo especificando coordenadas o npc não é teleportado... Eu sei que vc deve gostar do eAthena e tal, mas é um emulador mto antigo... por que vc não troca para um mais atualizado?

0

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Like it disse:

Man, eu já tinha testado ontem desse jeito e mesmo assim não deu certo. Ele não teleporta de jeito nenhum. Eu queria que ele teleportasse pra coordenadas aleatória, mas mesmo especificando coordenadas o npc não é teleportado... Eu sei que vc deve gostar do eAthena e tal, mas é um emulador mto antigo... por que vc não troca para um mais atualizado?

 

KKK é um projeto meu de oldtime xD, como falei sobre as novidades q venho trazer mês q vem é relativamente relacionado a guias e tutoriais em vídeo com emulador brA.

Consegue fazer um video com o fraps pra que eu possa observar enquanto vc usa o npc? é só uma questão de visão minha.

 

@Edit

No momento é meio complicado fazer isso com meu equipamento atual kkk mas mês q vem vou poder fazer isso.

Editado por Hyroshima
0

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Hyroshima disse:

 

KKK é um projeto meu de oldtime xD, como falei sobre as novidades q venho trazer mês q vem é relativamente relacionado a guias e tutoriais em vídeo com emulador brA.

Consegue fazer um video com o fraps pra que eu possa observar enquanto vc usa o npc? é só uma questão de visão minha.

 

@Edit

No momento é meio complicado fazer isso com meu equipamento atual kkk mas mês q vem vou poder fazer isso.

Entendi, que legal cara e que chato pra mim haha Mas o importante é a comunidade em geral !

Segue o vídeo em anexo, não consegui postar no msm site que vc... 

brathena.rrf

@edit Libere suas mensagens.

Editado por Like it
0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora
Entre para seguir isso  
Seguidores 0