Jump to content

Recommended Posts

Posted

Script Intermediário! - 5

 
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.
  • Upvote 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...