Jump to content
Sign in to follow this  
Senos

Script Intermediário (Aula 5)

Recommended Posts

Script Intermediário! - 5

Lista de Aulas:

Aula 1: http://herc.ws/board/topic/199-script-intermedi%C3%A1rio-aula-1/

 
Bom, nesta aula estarei ensinando sobre o comando attachrid e detachrid, são comandos mais complexos, porém entendíveis para aqueles que tem atenção na aula e uma boa noção já de script, que já manipulam suas lógicas para fazer da maneira que acha melhor e correto. Irei iniciar então o assunto da aula, e nela criar exemplos, explicações, e explicar a sintaxe do comando.

Primeiro assunto da aula:
- Attachrid

Sintaxe do comando:
attachrid(<ID Da Conta>);

 

A função básica desta sintaxe é anexar o RID do jogador ao NPC (script), ou seja, você pode forçar o jogador a executar as funções do npc.

Vejamos um exemplo:

-	script	Olá	-1,{	OnOla:		attachrid(2000001);		mes "Olá";		mes "Você foi forçado a ver o olá do script! ^~";	close;}


Agora caso aplicarmos desta forma, teremos um problema. O jogador pode estar offline, então poderá gerar aquele erro no map-server "Player not attached (Jogador não atachado, não encontrado)". Para resolvermos esse problema, teremos que fazer uma verificação, veja:

-	script	Olá	-1,{	OnOla:		if (!attachrid(getcharid(3,"Nick_do_Jogador")) {			// O jogador está offline, logo já evitaremos o erro			// do player not attached.			end;		}		//Caso o jogador esteja online:		mes "Olá";		mes "Você foi forçado a ver o olá do script! ^~";		close;}

 

O comando attachrid retorna 0 se o jogador estiver offline e 1 para online. Pegamos no snippet feito, o account_id do jogador pelo nome/nick dele.


Esse comando é de grande utilidade pois podemos criar sistemas com tempos, no qual podemos anexar o jogador ao tempo com seu limite. Podemos criar loops em função do attachrid para anúncios, verificar se o jogador está online não, tudo isso ligado a apenas um jogador (o jogador anexado). Pegar o nome de quem matou ou morreu, aplicar um comando neste unico jogador, etc...

Alguns exemplos com attachrid:

 

1. Primeiro exemplo:

OnPCDieEvent:		set .BaseLevel, BaseLevel;	attachrid(killedrid); // Verifica todos os jogadores que matou o outro [Killerdrid = variável pronta para jogadores que matam].	set .exp, (100*.BaseLevel/BaseLevel); // No caso isso dará um bônus baseado no BaseLevel do cara multiplicado 100x.	getexp .exp, .exp;end;

 

Dará experiência a um jogador que matou o outro.

 

2. Segundo exemplo:

	mes "Gostaria de participar do evento?";	if (select("Sim:Não")==2) close;	next;	set $@rids_salvos[.i], getcharid(3);	set .i, .i +1;	warp "",0,0;	end;

 

Isso salvará o rid do jogador no script, para que possa utilizar posteriormente, caso queira limpar o rid salvo, só fazer:

OnPcLogouEvent:	set $@rids_salvos[.i], 0;end;

 

Bom, aí no caso quando o jogador deslogar a variável $@rids_salvos será zerada, e não terá mais valor. Mas aí vai de acordo como você quiser, eu coloquei para quando o jogador deslogar, você bota opcionalmente como você quiser, foi apenas um exemplo.
 

 

Segundo assunto:
- Detachrid
 

Detachrid faz o contrário do attachrid, esse dexanexa o jogador do script. Então comandos para jogadores que necessitam de attachs, não passam mais a funcionar. Como forçar o jogador a falar com o script, ou por exemplo você atachar ele ao script, e no final desanexá-lo, você terá que anexá-lo denovo para usar funções que anexam ele ao script, caso queira criar funções dos exemplos que eu fiz.

 
Não tenho muito oque dizer sobre este comando, é básicamente isso, e sintaxe dele é simplesmente:
detachrid;

 

Bom, é simplesmente isso, um abraço!
Wolf.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.