Aula 1
A pedido do leon vou ensinar mais um pouco sobre os packets, e o que você pode fazer com eles.
Quem leu a primeira aula já deve saber que para enviar um packet global para todos online basta chamar o script:
- Código:
Network::Main.socket.send("<23> função </23>\n")
Você pode receber um pacote em um método, como é utlizado no script [ABS] Evento Global do Valentine.
Nessa aula faremos métodos globais que são executados no computador de todos jogando o jogo, adicionando o nome dos administradores online!
Primeiro, vamos criar o método:
- Código:
def admin_on(nome)
$admins = [] if $admins.nil?#inicia a array, caso seja nula
#Verifica se o nome já foi adicionado, caso não, adiciona
if $admins.include?(nome) == false
$admins.push nome
end
end
- Código:
def add_admin
if Network::Main.group == 'admin'
Network::Main.socket.send("<23> admin_on(#{$game_party.actors[0].name})</23>\n")
end
end
Agora basta chamar esse script: add_admin quando algum jogador entrar, para testar deixe em processo paralelo, e você verá que se for admin, irá adicionar na var $admins o seu nome, no jogo de todos.
Para verificar os jogadores admin apenas chame o script: print($admins), Você pode até mesmo criar uma window e escrever nela os nomes(como eu fiz na lista de amigos).
Mas agora, e se o admin sair do jogo? Ele continuará na array '-' então vamos resolver isso.
Criaremos um método para remover o admin da array.
- Código:
def remove_admin(nome)
if $admins.nil? == false #verifica se a var não é nil, para evitar erros
$admins.delete(nome)
end
end
Agora vamos por para chamar esse método quando o jogo for fechado, então vão no script Network, na linha 700 +/-, procure por esse código:
- Código:
def self.close_socket
return if @socket == nil
@socket.send("<9>#{self.id}</9>\n")
Pronto! Fizemos um sistema global, bem simples, mas com essa base vocês poderão fazer algo melhor, como lista de jogadores online, ou jogadores em um mapa só, jogadores Vip, Lista de amigos!
Dúvidas postem abaixo, eu fiz todos os código aqui mesmo e não testei, mas creio que está tudo certo.
Script Completo:
- Código:
=begin
No script Network, na linha 700 +/-, procure por esse código:
def self.close_socket
return if @socket == nil
Em baixo cole esse, ele irá mandar deletar o nome da variável
quando o admin sair:
if Network::Main.group == 'admin'
Network::Main.socket.send("<23> remove_admin(#{$game_party.actors[0].name})</23>\n")
end
=end
#Adiciona o nome do Admin na variável
def admin_on(nome)
$admins = [] if $admins.nil?#inicia a array, caso seja nula
#Verifica se o nome já foi adicionado, caso não, adiciona
if $admins.include?(nome) == false
$admins.push nome
end
end
#Verifica se a pessoa é admin e chama o método para adicionar o nome na variável
def add_admin
if Network::Main.group == 'admin'
Network::Main.socket.send("<23> admin_on(#{$game_party.actors[0].name})\n")
end
end
#Remove o nome do Admin da variável
def remove_admin(nome)
if $admins.nil? == false #verifica se a var não é nil, para evitar erros
$admins.delete(nome)
end
end
Créditos: RD12
Última edição por RD12 em Dom Jul 01, 2012 12:36 pm, editado 1 vez(es)