Senos 54 Posted February 24, 2013 Script Intermediário! - 5 Lista de Aulas: Aula 1: http://herc.ws/board/topic/199-script-intermedi%C3%A1rio-aula-1/ Aula 2: http://herc.ws/board/topic/200-script-intermedi%C3%A1rio-aula-2/ Aula 3: http://herc.ws/board/topic/201-script-intermedi%C3%A1rio-aula-3/ Aula 4: http://herc.ws/board/topic/203-script-intermedi%C3%A1rio-aula-4/ Aula 5: http://herc.ws/board/topic/213-script-intermedi%C3%A1rio-aula-5/ Aula 6: http://herc.ws/board/topic/228-queries-sql-aula-6/ Aula 7: http://herc.ws/board/topic/239-script-intermedi%C3%A1rio-aula-7/ 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:- AttachridSintaxe 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. 4 Schrwaizer, Like it~*, JulioCF and 1 other reacted to this Quote Share this post Link to post Share on other sites
JulioCF 105 Posted February 24, 2013 Obrigado pela contribuição, parabéns. Quote Share this post Link to post Share on other sites
Senos 54 Posted February 25, 2013 Obrigado Julio, se tiver ideias para outras aulas, diga-me para que eu possa elaborar! Quote Share this post Link to post Share on other sites