antiblock
https://arwen2.global/

Scooter

Membro
  • Content Count

    56
  • Joined

  • Last visited


Reputation Activity

  1. Upvote
    Scooter got a reaction from igorguerreiro in Inicio Por Pergamino By Portmap   
    Gracias por compartirhttp://cyber-gamers.org/public/style_emoticons/default/451960.gif
  2. Upvote
    Scooter got a reaction from NoName? in Site completo [M2M]   
    Como ainda estamos num pais livre vou fazer o meu comentario.Pelo trabalho que toda a equipa teve a construir o servidor, eles demoraram bem mais de 2 ou 3 anos ... não é como meia duzia de servers que é sacar sv files e está a andar.Agora já tem as server files e o site deles na net para todos ?Nahh não gosto porque eu joguei no servidor e acho o servidor 5*
  3. Upvote
    Scooter got a reaction from proximobest in [Tutorial]"Criar" E Colocar Autopatcher A Funcionar   
    Obrigado muito obrigado era disso que estava há esperalevas http://cyber-gamers.org/public/style_emoticons/default/451960.gif
  4. Downvote
    Scooter got a reaction from LuisPro97 YT in [Tutorial]Traduzir Cliente By Omega!   
    Muito bom mesmo http://cyber-gamers.org/public/style_emoticons/default/espi28.gifLevas um http://cyber-gamers.org/public/style_emoticons/default/451960.gif
  5. Downvote
    Scooter got a reaction from LuisPro97 YT in [Tutorial]Traduzir Cliente By Omega!   
    Muito bom mesmo http://cyber-gamers.org/public/style_emoticons/default/espi28.gifLevas um http://cyber-gamers.org/public/style_emoticons/default/451960.gif
  6. Downvote
    Scooter got a reaction from Str0nd3r in Adicionar Mapas ao Servidor Privado de Metin2   
    Pois, é que eu adicionei tudo e o mapa que fiz o download ainda vem com coisas para adicionar em:ETCPROPERTYZONEvem com isso e nao adicionei ...
  7. Upvote
    Scooter reacted to ʍ૮ʍi૮ђ૯ℓ in Pack De Personalisaçao   
    Aqui vai meu pack de personalisaçao
    Tem temas
    Wallpapers[Os melhores]
    Windows 7Conifier [serve para mudar os icons da barra de tarefas ]
    Skins para iconpackeger [Tem la umas muito lindas no print tou a usar iLeopard Eu acho as mais lindas]
    Orbits
    Efeito agua[O cursor fica com efeito agua]
    Cursores
    Prints:
    http://desmond.imageshack.us/Himg856/scaled.php?server=856&filename=printl.jpg&res=landing
    http://desmond.imageshack.us/Himg823/scaled.php?server=823&filename=print2bn.jpg&res=landing
    Dowload:http://www.mediafire...65sx5njfr5icukq
  8. Upvote
    Scooter reacted to Ŧá๒i๏ รilvค™ in Classes E Objectos   
    Uma classe é um conjunto de variáveis e funções relacionadas com essas variáveis. A vantagem da sua utilização é poder usufruir do recurso de encapsulamento de informação. Com o encapsulamento o utilizador de uma classe não precisa saber como é que ela é implementada, bastando para a utilização conhecer a interface, ou seja, as funções disponíveis. Uma classe é um tipo, e portanto não pode ser atribuída a uma variável. Para definir uma classe, deve-se utilizar a seguinte sintaxe:
    class Nome_da_classe {
    var $variavel1;
    var $variavel2;
    function funcao1 ($parametro) {
    /* === corpo da função === */
    }
    }
    Objecto
    Como foi dito anteriormente, classes são tipos, e não podem ser atribuídas a variáveis. Variáveis do tipo classe são chamadas objectos, e devem ser criadas utilizando o operador new, seguindo o exemplo abaixo:
    $variavel = new $nome_da_classe;
    Para utilizar as funções definidas na classe, deve ser utilizado o operador "->", como no exemplo:
    $variavel->funcao1()
    A variável $this
    Na definição de uma classe, pode-se utilizar a variável $this, que é o próprio objecto. Assim, quando uma classe é instanciada num objecto, e uma função desse objecto na definição da classe utiliza a variável $this, essa variável significa o objecto que estamos a utilizar.
    Como exemplo da utilização de classes e objectos, podemos utilizar a classe conta, que define uma conta bancária bastante simples, com funções para ver saldo e fazer um crédito.
    class conta {
    var $saldo;
    function saldo() {
    return $this->saldo;
    }
    function credito($valor) {
    $this->saldo += $valor;
    }
    }
    $minhaconta = new conta;
    $minhaconta->saldo(); //a variavel interna não foi inicializada, e não contém nenhum valor
    $minhaconta->credito(50);
    $minhaconta->saldo(); // retorna 50
    SubClasses
    Uma classe pode ser uma extensão de outra. Isso significa que ela herdará todas as variáveis e funções da outra classe, e ainda terá as que forem adicionadas pelo programador. Em PHP não é permitido utilizar herança múltipla, ou seja, uma classe pode ser extensão de apenas uma outra.Para criar uma classe extendida, ou derivada de outra, deve ser utilizada a palavra reservada extends, como pode ser visto no exemplo seguinte:
    class novaconta extends conta {
    var $numero;
    function numero() {
    return $this->numero;
    }
    }
    A classe acima é derivada da classe conta, tendo as mesmas funções e variáveis, com a adição da variável $numero e a função numero().
    Construrores
    Um construtor é uma função definida na classe que é automaticamente chamada no momento em que a classe é instanciada (através do operador new). O construtor deve ter o mesmo nome que a classe a que pertence. Veja o exemplo:
    class conta {
    var $saldo;
    function conta () {
    $this.saldo = 0;
    }
    function saldo() {
    return $this->saldo;
    }
    function credito($valor) {
    $this->saldo += $valor;
    }
    }
    Podemos perceber que a classe conta, possui um construtor, que inicializa a variável $saldo com o valor 0.
    Um construtor pode conter argumentos, que são opcionais, o que torna esta ferramenta mais poderosa. No exemplo acima, o construtor da classe conta pode receber como argumento um valor, que seria o valor inicial da conta.
    Vale observar que para classes derivadas, o construtor da classe pai não é automaticamente herdado quando o construtor da classe derivada é chamado.
  9. Downvote
    Scooter got a reaction from Str0nd3r in Adicionar Mapas ao Servidor Privado de Metin2   
    Pois, é que eu adicionei tudo e o mapa que fiz o download ainda vem com coisas para adicionar em:ETCPROPERTYZONEvem com isso e nao adicionei ...
  10. Upvote
    Scooter reacted to V¡®u§ in Como Fazer Seu Keylogger 100% Fud   
    Neste Topico eu estou indo dar breve descrição de deixar indetectavel um KL(dedico ao -JσασGσмєs'), pois agora e mais difícil obter um crypter FUD free e na maioria das crypter não são free, edição Então Hex é a única maneira de fazer o nosso arquivo de keylogger totalmente undectable (FUD ).


    O que é Hexing?

    Hexing é o processo de modificação de arquivos de aplicativos usando editores Hex (softwares usados ​​para editar arquivos em formato hexadecimal).

    Como Antivirus funciona?

    Antivirus funciona de forma bastante complexa. Para resumir seu trabalho, antivírus tem as definições de vírus (também chamado de assinaturas) armazenados em seu banco de dados. Ao digitalizar um arquivo, pesquisas de antivírus para estas definições de vírus ou assinaturas em um arquivo e, se encontrar estas assinaturas em um arquivo, ele sinaliza esses arquivos como vírus.

    Como tornar o vírus indetectável?

    Quando você criou o arquivo de vírus, basta abrir o arquivo trojan vírus no editor Hex e busca de assinatura que Antivirus tem sinalizado como de definição de vírus. Temos de mudar essa assinatura de tal forma que isso não afetará o funcionamento da nossa vírus trojan. Depois de ter alterado com êxito esta assinatura, o antivírus não vai detectar o vírus, tornando ele FUD .
    Coisas que são necessários para Hexing
    File Splitter : http://www.dekabyte....r/download.html
    Hex Editing Software : http://www.hhdsoftwa...free-hex-editor
    Keylogger (A sua preferencia)
    Agora siga os seguintes passos para fazer ele indetectavel para antivírus

    Primeiro faça servidor de arquivos (file Keylog) usando keylogger depois que servidor servidor em uma pasta. Aqui eu criei pasta "A" e colocar esse servidor (Meu nome é servidor test.exe).
    Ok, agora depois de ter colocado o servidor na pasta permite digitalizá-lo.

    Aqui meu arquivo test.exe está infectado.


    Agora, abra o File Splitter para dividir o arquivo.


    No divisor de arquivo, navegue até o arquivo test.exe que você quer dividir e escolher a opção de tamanho personalizado.
    Agora File Splitter me diz que este é exatamente test.exe 53.495 bytes e eu quero dividi-lo em 4 pedaços. Então eu dividi 53.495 por 4, agora colocar o número que você tem depois de dividi-la e colocá-lo na caixa de tamanho divisor de costume que tenho no fundo. Agora clique em Split.

    Agora você vai obter os arquivos subdivididas no mesmo diretório como eu fiz abaixo que está na pasta "A".


    Agora escanear cada um deles para descobrir qual arquivo está infectado e depois que nós temos que dividir esse arquivo infectado novamente. Agora, depois de ter descoberto que o arquivo infectado, faça uma nova pasta na mesma pasta. Aqui eu tenho test.exe.3 arquivo infectado, então eu vou fazer uma nova pasta com o nome de "3".


    Agora, novamente dividir essa infectado arquivo test.exe.3 arquivo em 4 pedaços e mudar a pasta de saída a 3 como eu tenho na imagem abaixo.

    Agora você vai ficar dividido arquivos dentro da pasta chamada "3".

    Agora verificar todos os arquivos para descobrir qual arquivo está infectado e depois que nós temos que dividir esse arquivo infectado novamente.


    Agora, depois de ter descoberto que o arquivo infectado, faça uma nova pasta na mesma pasta. Aqui eu tenho test.exe.3.3 arquivo infectado, então eu vou fazer uma nova pasta com o nome de "3" de novo na pasta "3". Uma vez que você fez nova pasta chamada "3", mais uma vez abrir divisor de arquivo e navegue até o arquivo que tem detectado, o meu era test.exe.3.3 e selecione o diretório de saída para a pasta que acabou de fazer o que era a pasta chamada "3" que está na pasta chamada "3".


    Agora abra essa nova pasta, que é "3" e digitalizar todos os arquivos. Agora, depois de ter descoberto que o arquivo infectado, faça uma nova pasta na mesma pasta. Aqui eu tenho test.exe.3.3.4 arquivo infectado, então eu vou fazer uma nova pasta e nomeie-o "4".


    Agora em arquivo divisor escolher o arquivo que foi detectado que era test.exe.3.3.4 para mim e para escolher a nova pasta que fizemos com o nome "4".

    Agora vamos verificar todos os arquivos novos e ver qual foi detectado. Uma vez que encontramos o arquivo infectado, abra o arquivo infectado com o editor hexadecimal e ver se a sua ainda grande demais para descobrir o que precisamos mudar....

    Ok, então aqui é test.3.3.4.1 que precisamos editar,abri-lo com o editor hexadecimal,


    Agora, a assinatura de vírus é aqui no editor hexadecimal e não é muito difícil agora para encontrá-lo para fora. Eu dedo para fora procurando por algo que se destaca ou guesssing. Depois que você tem que fazer é mudar uma letra do capital para o menor caso. aqui no meu exemplo eu mudei a palavra D para uma minúscula do DLLHOOKSTRUCT .


    Agora salve e saia e digitalizá-lo. Deve estar indetectável.


    Finalmente FUD .. Agora você precisa fazer compilá-lo e digitalizá-lo mais uma vez e executá-lo para testar.

    Como Complile: Aqui eu vou mostrar-lhe um exemplo e depois que você pode descobrir o resto por conta própria.

    Agora você verá o ícone de divisão dentro da sua pasta, aqui no meu exemplo é create_test.exe.3.3, clique sobre ele e ele irá recompilar o arquivo, e criar um arquivo mais. Aqui no meu exemplo, criar o arquivo "test.exe.3.3.4"


    Agora copie o arquivo recém-criado, que é "test.exe.3.3.4" e voltar um diretório e passado, então ele irá pedir para substituí-lo clique em sim e continue fazendo isso até você voltar ao primeiro diretório.
    Depois de verificar que mais uma vez para verificar se o seu FUD ou não.


    Update: Se você quer hackear senhas de contas do Gmail, Orkut e outros e-mail, por favor use os melhores Softwares Hacking, espero que agora você pode facilmente fazer seu arquivo keylog (servidor) totalmente indetectavel usando esta técnica Hexing sem usar qualquer keylogger PAGO!.
  11. Upvote
    Scooter reacted to proestrela in [Server Modding]Como Instalar Catacumbas   
    Bom pessoal depois de 24h em frente ao PC consegui finalmente implementar o mapa das catacombas então vamos lá!!!
    (Atenção esse mapa foi implementado nas files do daroo de 2010)...
    (Atenção esse mapa foi implementado nas files do Ivan Santos de 2010)
    (Atenção é recomendado que usem o Cliente que foi publicado por mim Clique Aqui para ver o Tópico)...
    servermodding: metin2_map_devilcatacomb
    ---------------------------------------------------------------------------------------------------------------------------------------
    servermodding Files 2010 Ivan Santos
    Depois de fazer o download do mapa metin2_map_devilscatacomb extrair no seu ambiente de trabalho e arrastar a pasta para o seguinte directório:
    /metin2/locale/germany/map
    depois disso no mesmo directório editar a index e adicionar o seguinte na ultima linha:
    193 metin2_map_devilscatacomb
    depois editar o CONFIG dos seguintes directórios:
    /metin2/conf/channel1_2
    /metin2/conf/channel2_2
    /metin2/conf/channel3_2
    /metin2/conf/channel4_2
    /metin2/conf/channel99_1
    E adicionar 193 exemplo:
    /metin2/conf/channel1_2
    ANTES:
    DEPOIS:
    /metin2/conf/channel2_2
    ANTES:
    DEPOIS:
    /metin2/conf/channel3_2
    ANTES:
    DEPOIS:
    /metin2/conf/channel4_2
    ANTES:
    DEPOIS:
    /metin2/conf/channel99_1
    ANTES:
    DEPOIS:
    ---------------------------------------------------------------------------------------------------------------------------------------
    servermodding Files 2010 daroo (daroonator)
    Depois de fazer o download do mapa metin2_map_devilscatacomb extrair no seu ambiente de trabalho e arrastar a pasta para o seguinte directório:
    /usr/home/game/share/locale/germany/map
    E apagar o metin2_map_dd
    depois disso no mesmo directório editar a index e adicionar o seguinte:
    e procuram pelo 220 metin2_map_dd
    se existir essa linha substituam por 193 metin2_map_devilscatacomb
    depois editar o CONFIG dos seguintes directórios:
    /usr/home/game/channel1
    /usr/home/game/channel2
    /usr/home/game/game99
    e adicionar 193 exemplo:
    /usr/home/game/channel1
    ANTES:
    DEPOIS:
    /usr/home/game/channel2
    ANTES:
    DEPOIS:
    /usr/home/game/game99
    ANTES:
    DEPOIS:
    (SE REPARAREM O 220 FOI RETIRADO)
    ---------------------------------------------------------------------------------------------------------------------------------------
    Tutorial parte do cliente
    ---------------------------------------------------------------------------------------------------------------------------------------
    Credits do Tópico 100% de {ƿэ∂я๏}™
    Credits do Mapa: Daroonator (Daroo)
  12. Upvote
    Scooter reacted to Cђ๏รєPєтภคร in Como Criar Um Servidor Metin2 [ZonHub]   
    Boas pessoal,venho fazer um tutorial como criar um servidor metin2 com router ZonHUB.
    Este topico será essencial,pois há muita gente que tem este router e não conseguem abrir as portas.

    Material necessário :
    Virtual Box :https://www.virtualbox.org/wiki/Downloads
    Navicat :http://www.baixaki.com.br/download/navicat-for-mysql.htm
    PortMap : http://www.4shared.com/zip/XhGmjUto/PortMap_153_-_By_Revedery__The.html?
    WinSCP : http://www.baixaki.com.br/download/winscp.htm
    Xampp : http://www.baixaki.com.br/download/xampp.htm
    No-IP : http://www.no-ip.com/
    Serverfiles + client : http://cyber-gamers.org/index.php?/topic/795-serverfiles-client-by-fuuton97-v1/
    Site : http://www.4shared.com/account/home.jsp?sId=kLSCIOIqbAXk996p&&fau=1&ausk=4TneqFz0X4fMx1m4&hlfid=1359368992
    [Atenção] - Neste tutorial eu irei usar serverfiles do Fuuton97.
    Tutorial :
    Primeiro lugar - Saquem tudo,instalem e extraiam.
    Segundo lugar - Abram o virtualbox e carreguem em novo :

    Terceiro lugar - Carregue Next :

    Quarto lugar - Depois de carregar Next irá aparecer a imagem a cima e meta Sistema Operativo : BSD e Versão : FreeBSD.
    Onde diz "Aqui Meta Um Nome Qualquer" meta mesmo um nome qualquer http://cyber-gamers.org/public/style_emoticons/default/laugh.png.
    Quinto lugar - Carregue Next :

    Sexto lugar - Insira alguns "GB ou MB" tendo em conta a capacidade do computador.
    Sétimo lugar - Carregue Next :

    Oitavo lugar - Meta Usar Disco Rigido existente e carregue naquela pastinha e selecione o ficheiro que extraíram das files que neste caso se chama :
    "Files 20120 By Fuuton97"
    Nono lugar - carregue Next e Create e irá aparecer isto :

    Décimo lugar - Irá aparecer o "arquivo" na virtualbox e vocês seleccionem esse arquivo e carregam em definições e Irá aparecer isto :

    Décimo primeiro lugar - Deixem ficar assim e vão a executar,escrevam hdwwiz e irá aparecer o que está atrás de executar :

    Décimo segundo lugar - Carreguem Seguinte e Metam a 2 opção como está representada na imagem seguinte:

    Décimo terceiro lugar - Carreguem Seguinte,e seleccionem a Placa de Redes :

    Décimo quarto lugar - Carreguem Seguinte,e depois em Fabricante metam Microsoft e em Placa de redes metam Microsoft adaptador Loopback:

    Décimo quinto lugar - Carregam Seguinte,irá fazer umas "coisas" e depois carreguem Concluir :

    [Agora um a Parte]
    Primeiro lugar - Ir ao Icon da net cá em baixo e carregar "Abrir o centro de rede e Partilha"

    Segundo lugar - Fazer o que está nas imagens abaixo http://cyber-gamers.org/public/style_emoticons/default/laugh.png

    Continuando ...
    Décimo sexto lugar - Vão ao VirtualBox e vão a definições e metam Rede e metam as "coisas" como estão na imagem a seguir :

    Décimo sétimo lugar - Carreguem OK,seleccionem o vosso arquivo criado no virtualbox,e metam iniciar :

    Décimo oitavo lugar - Quando chegar ao local da imagem seguinte,façam o login :

    Décimo nono lugar - Antes de fazer "sysinstall",vão ao site do no-ip e criem conta : http://www.no-ip.com/newUser.php?utm_source=account_funnel_v1&utm_medium=sign_up_button&utm_campaign=free
    Vigésimo lugar - Entrem na conta e vão a Hosts/Redirects e Carreguem Add Host :

    Vigésimo primeiro lugar - Em Hostname metam o que quiser que fique no inicio por exemplo meta "servidormetin2" e onde diz zapto.org escolha um dominio gratis e depois o IP será : servidormetin2.zapto.org por exemplo.

    Vigésimo segundo lugar - Não mexam em mais nada,e carreguem em "Create Host".
    Vigésimo terceiro lugar - Abram o DUC 3.0 e Select Host's e seleccionem o vosso host e carreguem Save.
    Vigésimo quarto lugar - Vão á virtualbox e escrevam sysinstall --> Configure --> Networking --> Interfaces --> No --> No e irá aparecer isto :

    Vigésimo quinto lugar - Metam igual á imagem acima,depois onde diz "IP do No-IP" metam aquele que criaram no no-ip e depois onde diz Dominio do Duc é onde vocês escolheram tipo "zapto.org".
    Vigésimo sexto lugar - Carreguem OK e façam ESC até chegar a uma parte que para e escrevam "/etc/rc.d/netif restart",depois "ifconfig" e pelo fim escrevam "reboot".
    Vigésimo oitavo lugar - Enquanto ele faz o reboot vamos ao nosso router ZonHUB.
    Vigésimo nono lugar - IP do router : 192.168.1.1 e metam o Nome de Utilizador : home e Password : zonnet e carregam OK.

    Trigésimo lugar - Vamos a serviços --> Firewall --> Encaminhamento de Portas.

    Trigésimo primeiro lugar - Carreguem nova entrada --> Anfitrião local metam seleccionem o vosso computador e em Protocolo metem "Definido Pelo Utilizador".

    Trigésimo segundo lugar - Em "Nome de Serviço" Colocem um nome qualquer e carreguem Novas Portas de Servidor :

    Trigésimo segundo lugar - Metam como está na imagem acima e Carreguem OK!
    Trigésimo terceiro lugar - Depois disso,carreguem "Novas Portas do Servidor" e metam igual a imagem acima,mas em Protocolo metam UDP http://cyber-gamers.org/public/style_emoticons/default/tongue.png
    Trigésimo quarto lugar - Carreguem OK --> OK .
    Trigésimo quinto lugar - Vão ao VirtualBox,façam login e escrevam cd /home/game && sh start.sh,depois disso escrevem "1" e façam "Enter".
    Trigésimo sexto lugar - Depois de acabar de iniciar o virtualbox,façam "/etc/rc.d/netif restart".
    Trigésimo sétimo lugar - Vamos ao Navicat,vão a Connection e a Mysql e metam como está a imagem abaixo :

    Trigésimo oitavo lugar - Connection name : Metam o nome que quiserem,e como está acima e depois na password metam sasuke e carregam OK e liguem a conexão criada.
    Trigésimo nono lugar - Abrimos o WinSCP e carregamos em New e metemos como a imagem abaixo a (Pass é sasuke) :

    Quadragésimo lugar - Carreguem Login e Vamos ao Xampp --> htcods e metemos os arquivos config.php e index.php.
    Quadragésimo primeiro lugar - Abrem o config.php e metem como a imagem abaixo :

    Quadragésimo segundo lugar - Abram o Xampp e liguem o Apache e Mysql.
    Quadragésimo terceiro lugar - Abrem o vosso Broswer e colocem o IP do DUC para testar se o site está operacional e criem conta.
    Quadragésimo quarto lugar - Vamos ao PortMap,carregamos 2 vezes em cada rede e trocamos o IP que está la por 192.168.5.100,caso já tenham não mexam e liguem as portas.
    Quadragésimo quinto lugar - Vamos ao client,e mudamos o serverinfo do client,abrem e metem o IP do DUC(não é o serverinfo dos root's cuidado!).
    Quadragésimo sexto lugar - Abram o client e inserem a conta criada.
    Quadragésimo sétimos lugar - Testem tudo a ver se está a funfar.
    Qualquer coisa,que queiram basta pedir.
    Se precisas de ajudar add skype : burnnightworld.
    Espero que tenham gostado.
    Cumprimentos,ChosePetras
  13. Upvote
    Scooter reacted to Andre in [Galeria] Andre   
    Vo aqui deixar signs e trabalhos feitos por mim Se gostarem deem http://cyber-gamers.org/public/style_emoticons/default/451960.gif sfv :D












  14. Upvote
    Scooter reacted to ʍ૮ʍi૮ђ૯ℓ in Cave Das Aranhas 3   
    Prints:



    Dowload; http://www.mediafire.com/?wr56igdqgqkd32b
    Creditos: by
    TrueHero
  15. Upvote
    Scooter reacted to p0w3r0ff in 42 Armas do Servidor Metin2 Extasis   
    42 Armas novas do Servidor Metin2 Extasis.
    Que Ficheiros tem no Winrar?


    Creditos: inforge
    Upload por PowerOff
  16. Upvote
    Scooter reacted to portmap in Colocar Levantamiento De Login   
    No universojuegos.esHola hoy les enseñare a colocar levantamiento de login empesemos:crearemos un archivo que se llame auto.sh en las carpetas ch1 ch2 game99adentro de ese archivo pergaremos lo siguiente:##############################################################################mt2_blackstorm c 2012####################################################################################################################################SERVER_NAME=./gamewhile ( : ) do DATE=`date` echo "autogame starting game $DATE" >> syslog echo "running" $SERVER_NAME >> syslog# cp -f $SERVER_NAME $SERVER_NAME.current $SERVER_NAME rm cores/core.1 mv cores/cores.2 cores/cores.1 mv cores/cores.3 cores/cores.2 mv cores/cores.4 cores/cores.3 mv cores/cores.5 cores/cores.4 mv cores/cores.6 cores/cores.5 mv $SERVER_NAME.cores cores/cores.6 if [ ! -r .fastboot ]; then sleep 3 else rm .fastboot sleep 3 fi if [ -r .killscript ]; then DATE=`date`; echo "autoscript killed $DATE" >> syslog rm .killscript exit fi while [ -r pause ]; do sleep 60 donedoneahora en autch asemos el mismo archivo pero de esta forma:##############################################################################mt2_blackstorm c 2012####################################################################################################################################SERVER_NAME=./authwhile ( : ) do DATE=`date` echo "autogame starting game $DATE" >> syslog echo "running" $SERVER_NAME >> syslog# cp -f $SERVER_NAME $SERVER_NAME.current $SERVER_NAME rm cores/core.1 mv cores/cores.2 cores/cores.1 mv cores/cores.3 cores/cores.2 mv cores/cores.4 cores/cores.3 mv cores/cores.5 cores/cores.4 mv cores/cores.6 cores/cores.5 mv $SERVER_NAME.cores cores/cores.6 if [ ! -r .fastboot ]; then sleep 3 else rm .fastboot sleep 3 fi if [ -r .killscript ]; then DATE=`date`; echo "autoscript killed $DATE" >> syslog rm .killscript exit fi while [ -r pause ]; do sleep 60 donedoney ahora en db de esta forma##############################################################################mt2_blackstorm c 2012####################################################################################################################################SERVER_NAME=./dbwhile ( : ) do DATE=`date` echo "autogame starting game $DATE" >> syslog echo "running" $SERVER_NAME >> syslog# cp -f $SERVER_NAME $SERVER_NAME.current $SERVER_NAME rm cores/core.1 mv cores/cores.2 cores/cores.1 mv cores/cores.3 cores/cores.2 mv cores/cores.4 cores/cores.3 mv cores/cores.5 cores/cores.4 mv cores/cores.6 cores/cores.5 mv $SERVER_NAME.cores cores/cores.6 if [ ! -r .fastboot ]; then sleep 3 else rm .fastboot sleep 3 fi if [ -r .killscript ]; then DATE=`date`; echo "autoscript killed $DATE" >> syslog rm .killscript exit fi while [ -r pause ]; do sleep 60 donedoneLuego de eso en cada una de esas carpetas crearemos una carpeta llamada "cores" adentro de esa carpeta cores crearemos 6 carpetas mas llamadas "cores.1" ------- "cores.2" ---------- "cores.3" así hasta el 6 acuerdense que a todo hay que darle permisos 777.Luego abriremos el script start.sh y lo modificaremos para que inicie con auto.sh les deve quedar asi:http://puu.sh/O4nsBueno espero averlos ayudado cualquier cosa en skype el cual es santysacred http://cyber-gamers.org/public/style_emoticons/default/451960.gif
  17. Upvote
    Scooter reacted to Ŧá๒i๏ รilvค™ in Lista De Id´s Dos Extras   
    '0' =>'Sem Bonus',
    '1' =>'Maximo HP',
    '2' =>'Maximo MP',
    '3' =>'VIT',
    '4' =>'INT',
    '5' =>'FOR',
    '6' =>'DES',
    '7' =>'Velocidade de Ataque',
    '8' =>'Velocidade de Movimento',
    '9' =>'Velocidade de Skill',
    '10' =>'Regeneração de HP',
    '11' =>'Regeneração de MP',
    '12' =>'Envenenar',
    '13' =>'Atordoar',
    '14' =>'Lentidão',
    '15' =>'Critico',
    '16' =>'Perfurar',
    '17' =>'Humanoide',
    '18' =>'Bonus Animais',
    '19' =>'Bonus Contra Orks',
    '20' =>'Bonus Contra Fanatico',
    '21' =>'Bonus Contra Morto Vivo',
    '22' =>'Bonus Contra Demonios',
    '23' =>'Absorver HP',
    '24' =>'Absorver MP',
    '25' =>'Recuperar HP',
    '26' =>'Recuperar MP',
    '27' =>'Bloqueio de Ataque Fisico',
    '28' =>'Esquiva de Flecha',
    '29' =>'Resistencia a Espadas',
    '30' =>'Registencia a Espada de 2 mãos',
    '31' =>'Resistencia a Adaga',
    '32' =>'Resistencia a Sino',
    '33' =>'Resistencia a Leque',
    '34' =>'Resistencia a Arco',
    '35' =>'Resistencia a Fogo',
    '36' =>'Resistencia a Relampago',
    '37' =>'Resistencia a Magia',
    '38' =>'Resistencia a Vento',
    '39' =>'Refletir Ataque',
    '40' =>'Refletir Magia',
    '41' =>'Resistencia Veneno',
    '42' =>'Chance Restaurar MP',
    '43' =>'EXP Bonus',
    '44' =>'Gold Bonus',
    '45' =>'Item Drop',
    '46' =>'Bonus Poções',
    '47' =>'restaurar HP',
    '48' =>'Ant Atordoamento',
    '49' =>'Ant Lentidao',
    '50' =>'Ant Enfraquecimento',
    '52' =>'Alçance do Arco',
    '53' =>'Poder de Ataque',
    '54' =>'Defesa',
    '55' =>'Ataque Magico',
    '56' =>'Proteção Magica',
    '58' =>'Max. Resistencia',
    '59' =>'Bonus Contra Guerreiro',
    '60' =>'Bonus Contra Ninja',
    '61' =>'Bonus Contra Sura',
    '62' =>'Bonus Contra Shamãn',
    '63' =>'Bonus ContraMonstro',
    '64' =>'Ataque %',
    '65' =>'Experiencia 1%',
    '66' =>'EXP 1%',
    '67' =>'Drop Item',
    '68' =>'Drop Gold',
    '71' =>'Dano de skill 1%',
    '72' =>'Dano Médio 1%',
    '73' =>'Resistencia a Skill 1%',
    '74' =>'Defesa 1#',
    '76' =>'Rate 1%',
    '77' =>'Drop 1%',
    '78' =>'Resistencia a Guerreiro',
    '79' =>'Resistencia a Ninja',
    '80' =>'Resistencia a Sura',
    '81' =>'Resistencia a Shamã'

    Alguns iniciantes irão perguntar para que serve isto?
    R:Com isto podes dar bonus as armas
    Gostaste?
    http://cyber-gamers.org/public/style_emoticons/default/451960.gif
  18. Upvote
    Scooter reacted to AnonimoHSG in Comandos Quest   
    Olá pessoal da Cyber-Gamers, esse é um tópico é direcionado para os comandos que ajudaram vocês a realizar missões entre outras coisas basta criatividade, sabendo o que o comando irá realizar, esse tópico é meio grande, por isso peço desculpas pela tamanho.São eles :affect.add ( Id do Apply ( ou texto que está no questlib.lua ex: apply.ATTACK_SPEED ) , Quantidade de Bónus( entre 1 e 250 ), Duração do Bónus(em segundos ) )-- Resultado : é dado um bónus ao jogador, no entanto, se o jogador já tiver esse próprio bónus não terá efeito, para isso há outro comandoaffect.add_collect_point( Id do Apply ( ou texto que está no questlib.lua ex: apply.ATTACK_SPEED ) , Quantidade de Bónus( entre 1 e 250 ), Duração do Bónus(em segundos ) )-- Resultado : Adiciona a Quantidade de bónus desejada ao Jogador, mesmo que já há o bónus adicionado.affect.add_collect( Id do Apply ( ou texto que está no questlib.lua ex: apply.ATTACK_SPEED ) , Quantidade de Bónus( entre 1 e 250 ), Duração do Bónus(em segundos ) )-- Resultado : Adiciona a Quantidade de bónus desejada ao Jogador, mesmo que já há o bónus adicionado.affect.add_hair ??????????affect.remove_hair () --- Resultado : Remove o Penteado do Jogadoraffect_remove_good ()-- Resultado : Remove todos Bónus bons no Jogadoraffect.remove_bad ()-- Resultado : Remove todos os Bónus maus no Jogadoraffect.remove ( Id do Apply ( ou texto que está no questlib.lua ex: apply.ATTACK_SPEED ))-- Resultado : Remove todos os pontos de um Bónus ( !CUIDADO!)affect_remove_all_collect ()-- Resultado : Remove todos os Bónus que foram adicionados através de .quest=============================================================================arena.start_duel ( name , rounds )--name = Nome de jogador em String . Ex : "ReBirTH"-- rounds = Quantidade de Rondas para eles Duelarem . Ex : 5arena.is_in_arena ( Pid )-- PID = Player_ID do jogador ( MYSQL : db : player , tabela : player )-- Devolve 1 Se o jogador estiver num mapa arena, devolve 0 se não estiver.arena_add_observer ()-- Incompletoarena_get_duel_list ()-- Incompletoquest__arena_add_map ( Map_Index , start_x , start_y , end_x , end_y )-- Map_Index = Index do Mapa que querem adicionar á lista de Mapas da Arena ( numero )-- Start_x = A Coordenada X do Inicio da Arena ( numero )-- Start_y = A Coordenada Y do Inicio da Arena ( numero )-- End_x = A Coordenada X do Fim da Arena ( numero )-- End_y = A Cooordenada Y do Fim da Arena ( numero )=============================================================================ba.start ( number )-- Battle Arena.-- number = Index do Mapa a Ser Criado (?)=============================================================================building_reconstruct ()building_set_land_ownerbuilding_get_land_infobuilding_get_land_idbuilding_has_land=============================================================================dance_event.go_home()Se o Jogador Estiver no Mapa Com Index 115, é teleportado para a Cidade 1=============================================================================d.getf( "string" )-- string = O Nome da Flag ( As flag's são valores virtuais que podem ser alterados através de função, o valor de uma flag que não tenha sido declarada é 0 )d.setf ( "string" , valor )-- string = O Nome da Flag que desejamos, não importa qual for o valor dela, pode sempre ser alterada.-- valor = O valor que desejamos que a Flag receba.d.notice( "Mensagem" )-- Mensagem = A Mensagem que desejamos que seja recebida como uma Notice que só será vista por quem estiver no d.d.purge ( "???????????" )d.kill_all ()-- Resultado: Mata todos os monstros no Piso/dd.exit_all()-- Faz com que todos que estejam no d, sejam teleportados para a entrada.d.exit ()-- Teleporta o Jogador para a Cidade.d.join ( numero )-- Resultado : O Jogador junta-se a um d, e se for lider da Party, os membros são teleportados tambémd.spawn_group ( numero , numero , numero , numero , boolean ( true or false ) , numero )-- Incompletod.count_monster ()-- Resultado : Assume o valor dos monstros que estão vivos no d ( local monstrosvivos = dcount_monster () )d.all_near_to ( numero , numero )-- Incompletad.select(get_server_timer_arg())d.set_warp_at_eliminate ( Delay , Map_Index , X , Y , "regen_file" )-- Delay = Tempo em Segundos até serem teleportados quando todos os monstros forem mortos-- Map_Index = Index do d para o qual vai ser teleportado-- X = A Coordenada X para a qual vai ser teleportado-- Y = A Coordenada Y para a qual vai ser teleportado-- regen_file = Ficheiro de Regen dos Monstros a contar do game . Ex : "data/d/regent1.txt"d.set_exit_all_at_eliminate( Delay )-- Delay = Tempo em Segundos até serem teleportados quando todos os monstros forem mortos.d.check_eliminated ()-- Resultado : Verifica se todos os monstros no d estão mortosd.clear_regen ()-- Pará o Regen dos Monstros e destrói os Vivosd.set_regen_file ( "locale/regenfile.txt" )-- locale/regenfiles.txt é o directório do Regen que desejam ser activado no d ( O dírectório apartir da localização do 'game' )d.regen_file ("locale/regenfile.txt" )-- locale/regenfiles.txt é o directório do Regen que desejam ser activado no d ( O dírectório apartir da localização do 'game' )d.get_map_index ()-- Resultado : Assume o Index do Mapa do d Actual . Ex: local Actual_Index = d.get_map_index ()d.spawn_goto_mob-- Incompletad.spawn_mob ( ID , X , Y )-- ID = ID do Mob/NPC-- X = A Coordenada X para o qual o Monstro vai ser Spawnado. ( Coordenadas Locais )-- Y= A Coordenada Y para o qual o Monstro vai ser Spawnado. ( Coordenadas Locais )d.set_unique ( "nomedounique" , vid )-- nomedounique = O nome que desejam 'dar' ao Monstro(Este Especifico)-- vid = A Vid(é como o ADN de um Monstro, nunca é igual de monstro para monstro, mesmo que seja o mesmo ID, o VID é diferente )-- A Maneira de descobrir o vid : « local vid = d.spawn_mob ( ID , X , Y ) »d.spawn ( "string" , Incompleta )/* Incompleta */d.spawn_unique ( "nome_do_unique" , vnum , "string" )-- Invoca um Monstro com ID de vnumd.spawn_move_unique ( )-- Incompleto=============================================================================game.web_mall() --Acede á Cash Shop / Item Shopgame.drop_item_with_ownership ( ID , Quantidade ) -- Dropa um Item cujo dono é quem activou o Quest Event.game.drop_item( ID , Quantidade ) -- Dropa um Item sem Dono.game.open_mall() -- Abre o Armazém-Mallgame.open_safebox() -- Abre o Armazém.game.set_safebox_level( Nivel ) -- Altera o Nível do Armazém do Jogador ( Slots ).game.get_safebox_level() -- Recebe o valor do Armazém do jogador ( usar como variável ).game.request_make_guild() --Envia pedido para criar Guild.=============================================================================oxevent.give_item ( vnum , quantidade ) -- Dá um Item ao Vencedor do OXoxevent.end_event_force () -- Termina o OX ( Colocando Status a 0 ) no istanteoxevent.get_attender () -- Devolve o Vencedor do OXoxevent.quiz( numero , numero ) -- Activa uma Pergunta de OXoxevent.close() -- Os jogadores deixam de poder entrar e começa o OX ( Status 2 )oxevent.open() -- Abre o OX para os jogadores poderem entrar ( Status 1 )-- Devolve o Valor de 0 caso o ficheiro oxquiz.lua não existir e o valor de 1 caso o oxquiz.lua existir.oxevent.end_event() -- Termina o OX com um intervalo de 5 * passes_per_second. ( Status 0 )=============================================================================find_pc_cond( -level , +level , job ) -- Devolve o VID de um jogador que esteja no mesmo mapa que quem activar-- com o nível entre -level e +level e cuja Classe seja job .find_pc ( "nomedojogador" ) -- VID do Jogador ( selecionar através de pc.select_vid() )find_npc_by_vnum ( vnum ) -- Devolve o VID do NPC ( Só usar para Target.vid ( "target_name" , vid , "" )pc.select_vid ( VID ) -- Devolve o VID do Jogador que activar esta qf . E seleciona o jogador através de VID.pc.select_pid ( PID ) -- Devolve o PID do Jogador que activar esta qf . E seleciona o jogador através de PID.=============================================================================server_timer ( "name" , time ) -- Activa um Temporizador no Servidor que será activado passado time(em segundos )-- deve ser usado desta maneira -> when name.server_timer begintimer( "nomedotimer" , tempo ) -- Activa um Temporizador ligado ao jogador , com o nome de "nomedotimer" e com duração de tempo.timer ( tempo ) -- Activa um Temporizador ligado ao jogador com duração de tempo.server_loop_timer ( "nomedotemporizador" , tempo ) -- Server Timer que se repete de tempo em tempo segundos.loop_timer ( "nomedotemporizador", tempo ) -- Timer que se repete de tempo em tempo segundos.=============================================================================oh.transfer2("nomedoplayer")-- Transfere ou é transferido para a localização do jogador.oh.bless()-- MonarchHealGold é a event flag que define o preço , caso seja 0, o valor é de 2.000.000 ou ( 2kk ) . Comando : /e MonarchHealGold 1000000 Caso queira que o preço seja 1.000.000 ( 1kk )-- Dá Heal aos jogadores do Reino.oh.powerup() -- Bónus de Ataque aos jogadores do Reino. ( Preço : 5.000.000 ( 5kk ) )oh.defenseup() -- Bónus de Defesa aos jogadores do Reino ( Preço : 5.000.000 ( 5kk ) )empire_info() -- Manda um Chat sobre as Informações dos Imperadores dos Reinos .frog_to_empire_money -- Evento de Castelo.spawn_guard -- Guarda ( Evento do Castelo ).oh.defenseup() -- Bónus de Defesa ( Preço : 5.000.000 ( 5kk ) ).oh.notice("texto") -- Envia um Notice para todos os jogadores do Reino.oh.warp("nomedoplayer") -- Custa 10.000 ( 10k )-- Teleporta o Imperador para a localização do Player.oh.transfer()takemonarchmoney( quantidade / 10000 ) -- Devemos colocar o quociente da quantidade que queremos por 10000.-- Visto que o valor que for colocado entre os () , é depois multiplicado por 10.000 e removido do Monarch, portanto para evitar-- erros de cálculos, dividam a quantidade que desejam retirar por 10000 e coloquem-na correctamente.-- P.S : O Dinheiro vai ser removido ao Imperador do Reino do Jogador que executar esta função.-- Portanto se o jogador que a executar for do reino Vermelho(Shinsoo) o dinheiro será removido ao Imperador-- do Reino Shinsoo.=============================================================================pc.get_name() -- Devolve o Nome do Jogador ( em "" ) Ex : "ReBirTH"pc.get_money() -- Devolve o Valor de Yang do Jogador.pc.get_alignment() -- Devolve o Alignment do Jogador.pc.get_empire() -- Devolve o Império do Jogador ( 1 - Shinsoo(Vermelho) , 2 - Chunjo(Amarelo) , 3 - Jinno (Azul) ).pc.get_level() -- Devolve o Nível do Jogador.pc.get_job() -- Devolve a Profissão do Jogador ( 0 = Warrior/Guerreiro , 1 = Ninja, 2 = Shura/Sura , 3 = Shaman )pc.get_max_sp() -- Devolve o SP Max do Jogador.pc.get_sp() -- Devolve o SP Actual do Jogador.pc.get_weapon() -- Devolve o ID ( vnum ) do Item na Posição da Arma.pc.get_armor() -- Devolve o ID ( vnum ) do Item na Posição da Armadura.pc.get_exp() -- Devolve experiencia a um jogadorpc.get_vid() -- Devolve o VID do Jogador.pc.get_playtime() -- Devolve o Tempo de Jogo do Jogador.pc.count_item(ID) -- Devolve a Quantidade do ID no Inventário/Equipamento do Jogador.pc.isguildmaster() -- Devolve o Valor caso o jogador seja Mestre da Guild ou não.pc.is_horse_alive() -- Devolve o Valor se o Cavalo Está Vivo ou Não.pc.get_horse_level() -- Devolve o Nível do Cavalo.pc.is_clear_skill_group() -- Devolve o Valor caso o jogador tenha algum ramo de skills escolhidos 1 , caso não, 0.pc.is_dead() -- Devolve o Valor caso o jogador estiver Morto ou não.pc.get_dx() -- Devolve o Valor de Dex do Jogador.pc.get_st() -- Devolve o Valor de STR do Jogador.pc.get_iq() -- Devolve o Valor de INT do Jogador.pc.get_ht() -- Devolve o Valor de STA do Jogador.pc.is_gm() -- Devolve caso o jogador seja GM .pc.get_player_id() -- Devolve o PID do Jogador ( MySQL : player->player . ID )pc.get_empty_inventory_count() -- Devolve a Quantidade de Espaços Vazios no Inventário.pc.get_sex() -- Devolve o Sexo da Personagem. ( 1 - MALE , 2 - FEMALE )pc.reset_point() -- Remove todos os pontos Status do Jogador, e permite redistribui-los.pc.mount( ID , Tempo(Opcional) -- Permite ao jogador montar o NPC ID durante Tempo( caso não seja incluido, é permanente ) .pc.give_exp2( EXP ) -- O Jogador recebe EXP de Experiência.( Não é percentagem ).pc.change_money( Yang_variable ) -- Aumenta ou altera o yang do jogador para Yang_variable( usar -Yang_variable caso deseja remover dinheiro ).pc.destroy_guild() -- Destroi a Guild do Jogador Actual ( só usar caso o Jogador seja Mestre da Guild ).pc.warp( x00 , y00 ) -- Teleporta o Jogador para as coordenadas x00 e y00 , devem substituir o x e o y pelas coordenadas para fazer /warp.-- Ex : pc.warp ( 999900 , 999900 ) .pc.give_item2( Vnum , Quantidade ) -- Dá um Item ao Jogador cujo Id seja VNUM e com a quantidade de Quantidade.pc.enough_inventory( vnum ) -- Verifica se o jogador tem espaço para o Item - vnum . Devolve 0 caso não tenha, devolove 1 caso tenha.pc.remove_from_guild() -- Remove o Próprio Jogador da Guild.pc.change_name("nome") -- Altera o nome do jogador para nome ( deve ser usado as "" ) . é necessário relogar.pc.change_empire(empire) -- Altera o Império do Jogador para empire.pc.set_skill_level( id_da_skill , nivel_desejado ) -- Altera o Nível da Skill - id_da_skill para nivel_desejado.pc.teleport("nome_do_player") -- Teleporta o Jogador actual para a localização do jogador . Necessário "" .pc.reset_status( ID ) -- Reseta os Valores de um Stat ( 0 -- STA, 1 -- Int , 2 -- STR , 3 -- DEX )pc.clear_sub_skill() -- Redistribui os Pontos de Skills e remove os pontos todos. O Ramo de Skills continua a ser o mesmo.pc.clear_skill() -- Remove o Ramo de Skills . Possiblitando a escolha de um Ramo de Skills Diferentes .pc.setqf("name" , counter ) -- Altera o Valor do Contador com nome de name ( com "" )-- E coloca-o a valor counter. ( O Valor de um Contador não declarado, é 0 )pc.getqf("name") -- Devolve o Valor do Contador com nome de name ( com as "" ).pc.change_alignment( valor ) -- Altera o Alignment do Player para valor.=============================================================================horse.get_name() -- Devolve o Nome do Cavalo ( Com "" )horse.set_name( "nome" ) -- Altera o Nome do Cavalo para name .-- Devolve 2 se o nome for alterado.-- Devolve 1 se o nome já estiver em uso.-- Devolve 0 caso a Personagem não tenha cavalo.horse.feed() -- Alimenta o Cavalo.horse.revive() -- Resusita o Cavalo.horse.is_dead() -- Devolve o Valor de 1 caso o cavalo esteja morto, e valor de 0 caso não esteja.horse.is_mine() -- Devolve o Valor de 1 caso o cavalo for deste Player, devolve 0 caso não seja.horse.unsummon() -- Manda o Cavalo para o Estábulo.horse.summon() -- Invoca o Cavalo ( Sem montar ) .horse.unride() -- Desmonta do Cavalohorse.ride() -- Monta o Cavalohorse.is_summon() -- Devolve 1 caso o Cavalo esteja visivel, e 0 caso não esteja.horse.is_riding() -- Devolve 1 caso o jogador estiver a Montar no Cavalo, e 0 caso não esteja.horse.get_grade() -- Devolve o Grade do Cavalo ( 1 -- Iniciante, 2 -- Armado, 3 -- Militar )horse.advance() -- Aumenta 1 Nível ao Cavalo.horse.get_level() -- Devolve o Nível do Cavalo.Exemplo : Bom pessoal se colocar pc.warp( x00 , y00 ) tem de por as coordenadas inteiras, assim, podendo colocar um say, say_title, antes para informar ao player onde ele irá teleportar colocando ali como exemplo 999900, 999900, assim podendo criar já um teleportador, também poderá adicionar level para teleportar para o mapa usando uma condição.Espero ter ajudado.
  19. Upvote
    Scooter reacted to luiscarlosgraca in Relatório do Projecto de Programação de Sistemas Informáticos [Metin2 Servidor Privado]   
    A professora pediu-nos que fizessemos um projecto e eu como gosto de Metin2 desenvolvi isto:
    Ver este Tutorial em PDF

    Espero que gostem
    E s c o l a S e c u n d á r i a D r . J o r g e C o r r e i a
    por: Paulo Gonçalves
    Aluno nº19 da turma TGPSI
    De 24/04/2012 a 08/05/2012
    Relatório do Projecto de Programação de Sistemas Informáticos
    1
    Paulo Gonçalves – Projecto de PSI
    Índice
    Índice 1
    Introdução 2
    Objectivos 3
    Desenvolvimento do Projecto 4
    Ponto 1 – Instalação e configuração dos Ficheiros do Servidor 4
    Ponto 2 – Instalação e configuração dos programas de acesso ao servidor 7
    Parte I – Instalação e configuração do Navicat 7
    Parte II - instalação e configuração do Filezilla 7
    Ponto 3 – Criação de uma conta e tornar o nosso personagem GameMaster (administrador) 8
    Parte I – Criação de uma conta. 8
    Parte II – Tornar o nosso personagem GameMaster (administrador) 9
    Ponto 4 – Ligar o cliente ao servidor. 10
    Ponto 5 – Estudo das bases de Dados. 11
    Parte I – Estudo da Base de Dados Accounts. 11
    Parte II – Base de Dados common . 12
    Parte III – Base de Dados Player. 13
    Ponto 6 – Implementação de itens, NPCS e monstros(mobs) 15
    Parte I – Implementação de itens. 15
    Parte II – Implementação de NPCS. 20
    Parte III – Implementação de monstros(mobs). 22
    Dificuldades Sentidas. 25
    Conclusão. 26
    Girias utilizadas neste documento e no mundo dos jogos. 27
    Bibliografia e Netgrafia. 28
    2
    Paulo Gonçalves – Projecto de PSI
    Introdução
    Neste módulo foi proposto pela professora desenvolvermos-mos um projecto individual sobre algo aprendido na disciplina de Programação de Sistemas de Informação e propus-me a desenvolver e explicar o processo de instalação e configuração de um servidor de jogos,
    Metin2, e ainda conectar as bases de dados do servidor com o cliente de jogo. Escolhi este projecto porque engloba várias áreas da informática, nomeadamente Sistemas Operativos, Arquitectura de Computadores, Redes de Comunicações e Programação de Sistemas de Informação.
    Para tal efeito utilizei os seguintes programas:
    -Navicat 10.0;
    -Notepad++;
    -Filezilla;
    -Virtual PC 2007;
    -M2 extractor;
    -Portmap;
    -DUC Client No-ip;
    -Ficheiros do Servidor;
    -GIMP 2.8
    -Cliente.
    O servidor como requer bibliotecas somente disponibilizadas pelo sistema operativo FreeBSD toda a configuração e instalação foi feita numa máquina virtual. Os ficheiros do servidor assim como as bases de dados foram criados por outras pessoas sendo o meu objectivo apenas o de
    melhorar os aspectos defeituosos deixados pelos criadores. Todo o conhecimento que adquiri sobre este assunto foi nos fóruns da Internet, Youtube e na
    escola, tendo tido muito trabalho de pesquisa antes de poder fazer qualquer alteração.
    3
    Paulo Gonçalves – Projecto de PSI
    Objectivos
    Este projecto tem como objectivos principais:
    -Instalação e Configuração do Servidor de Metin2;
    -Instalação e Configuração dos programas de acesso;
    -Criar uma conta e tornar o nosso personagem GameMaster (administrador);
    -Ligar o cliente ao servidor;
    -Estudo das Bases de Dados;
    -Implementação de novos itens, NPCS e monstros (mobs).
    -Desenvolvimento de um programa para fazer a transferência dos arquivos mais recentes e
    actualizados em relação ao servidor (Patcher).
    4
    Paulo Gonçalves – Projecto de PSI
    Imagem 1 - Escolha da placa de rede
    Desenvolvimento do Projecto
    Ponto 1 – Instalação e configuração dos Ficheiros do Servidor
    Primeiro comecei por fazer a instalação de uma nova placa de rede. Para este passo fui no menu Iniciar do Windows, depois na pesquisa escrevi hdwwiz. Carreguei no botão Seguinte, seleccionei o ponto Instalar o hardware que eu seleccionar manualmente a partir de uma lista e carreguei no botão
    Seguinte. Nesta lista seleccionei a aba placas de rede e cliquei no botão seguinte. Na aba fabricante escolhi Microsoft e depois
    Microsoft Adaptor Loopback. Depois Seguinte, Seguinte e ele instala. Quando a placa de rede for instalada cliquei em concluir.

    Depois segue-se a configuração da placa de rede. Para este passo fui ao Menu Iniciar, Painel de Controlo, Centro de rede e partilha e no
    meu caso cliquei na conexão local 3. Fui as propriedades e editei as configurações IP v4. Pus
    para atribuir um IP fixo com as seguintes configurações.

    Ilustração 2 - Propriedade do Protocolo IP v4
    Pus um visto no Validar Definições ao Sair e OK.
    5
    Paulo Gonçalves – Projecto de PSI

    Feito isto tive que fazer três transferências.
    Ficheiros do Servidor + Maquina Virtual: http://depositfiles....files/g1o5m24f6
    Virtual PC 2007:http://www.microsoft.com/en-us/download/details.aspx?id=4580
    Portmap: http://www.mediafire...v1fvn8e62f8zb4a

    Extrai o Portmap e os ficheiros do Servidor e instalei como um programa normal o virtual PC.
    A senha dos ficheiros do servidor é “cyber-gamers.org”.

    De seguida abri o Virtual PC e cliquei no botão New...,
    Next, Create a Virtual Machine, Next, Next. No Operating System coloquei Others, Next, Adjusting the RAM, pus 1024MB de RAM e Next.
    Escolhi a opção An existing Virtual Hard Disk e Next.
    Coloquei a localização dos ficheiros do Servidor extraÍdos (um ficheiro .vhd) e cliquei Next.
    Tendo feito isto seleccionei a máquina e cliquei em Settings. Na aba Networking seleccionei o Microsoft Adaptor Loopback.
    Depois cliquei Finish. Seleccionei a minha máquina e cliquei Start.
    O programa Virtual PC vai iniciar um sistema operativo virtual. O utilizador que usamos é o root com a password mcncc.com
    (pode ser mudada posteriormente). Depois de colocar o login e a password na consola escrevi sysinstall. Depois escolhi a opção configure



    e depois Networking, Interfaces. Optei pela opção de0 e carreguei em No, No e coloquei as seguintes configurações:



    Ok, Yes, Esc, Esc. Outra configuração que fiz neste menu foi a configuração do Teclado. Para isso fui à opção Keymap e escolhi Portuguese (accent).
    Feito isto carreguei ESC e escrevi na linha de comandos /etc/rc.d/netif restart para reiniciar as configurações de rede.
    Depois escrevi reboot para reiniciar a máquina.
    Quando a máquina reiniciou inseri o login e password e escrevi na linha de comandos ./start para iniciar o servidor.
    Depois liguei o Portmap abrindo o programa.
    Chegando ao fim da instalação e configuração da máquina fui configurar os programas de acesso.
    7
    Paulo Gonçalves – Projecto de PSI

    Ponto 2 – Instalação e configuração dos programas de acesso ao servidor
    Parte I – Instalação e configuração do Navicat Primeiro transferi o programa. http://www.mediafire...s82q276b8gd8wtd
    Extrai e instalei normalmente. Quando me pediu para inserir o Serial abri o programa encontrado na pasta
    LZ0 (keygen.exe). Colei o serial e registei o programa. Abri o navicat e fui configurar uma nova ligação.
    Para isto cliquei na opção connect e escolhi mysql.


    Ilustração 5 - Nova ligação SQL

    Depois no connection name pus um nome à minha escolha
    (metin2). No host name coloquei 192.168.5.100. O port fica igual (3306). O utilizador fica root e a password é
    123456. Pus um visto no Save Password e Cliquei no OK.
    A parte da ligação à base de dados está feita.
    Parte II - instalação e configuração do Filezilla Efectuei a transferência no site:
    http://filezilla-project.org/
    Instalei como um programa normal e procedi a configuração. Para tal fui a aba Ficheiro, Gestor de Sitios, Novo sitio.


    Ilustração 6 - Novo Sitio

    No anfitrião coloquei 192.168.5.100, na Porta 22, no protocolo SFTPD – SSH File Transfer Protocol. Na parte
    do tipo de inÍcio de sessão coloquei normal e no utilizador root com a palavra passe mcncc.com.
    Feito isto cliquei em OK e a configuração do Filezilla está feita.
    8
    Paulo Gonçalves – Projecto de PSI

    Ponto 3 – Criação de uma conta e tornar o nosso personagem GameMaster (administrador)
    Parte I – Criação de uma conta.
    Este passo é indispensável pois sem uma conta não é possÍvel fazer a ligação ao servidor através de um cliente. Neste caso usei o navicat, mas de futuro usarei uma página criada por mim, para qualquer pessoa ter acesso e poder criar uma conta.
    Para tal efeito abri o navicat e acedi à ligação previamente configurada. Seleccionei a base de dados account e abri a tabela accounts.
    Na coluna id coloquei um número que ainda não foi usado(neste caso 2) e no login o nome usado para efectuar o login no cliente.


    Ilustração 7 - Adicionar uma conta

    A password utiliza uma encriptação por tive que fazer uma consulta antes, de modo que, fui a parte query, New Query, e escrevi
    SELECT PASSWORD(‘123456’);

    Ilustração 8 – Query para gerar a password encriptada

    Cliquei em run e copiei o valor obtido e colei na coluna password.
    Depois no real_name pus o nome verdadeiro, social_id o código para apagar as personagens, e no email o meu email.
    Feito isto a conta estava criada.
    9
    Paulo Gonçalves – Projecto de PSI

    Parte II – Tornar o nosso personagem GameMaster (administrador)
    Agora com a conta criada deveremos nos tornar administradores do jogo para que possamos fazer testes e outras coisas.
    No navicat abri a base de dados common e a tabela gmlist. Lá inseri um novo registo e coloquei os seguintes valores:
    mID: um número que ainda não fosse utilizado;
    mAccount: o login da conta que foi criada anteriormente;
    mName: o nome que o personagem irá ter;
    mAuthority: IMPLEMENTOR.


    Ilustração 9 - Adicionar uma personagem à tabela dos GMs

    Quando acabei este passo ao fazer ligação com aquela conta e ao criar um personagem com o nome escolhido, este se tornava GameMaster.
    10
    Paulo Gonçalves – Projecto de PSI

    Ponto 4 – Ligar o cliente ao servidor
    Após as configurações anteriores tive que criar o personagem e testar se o servidor estava a funcionar correctamente.
    Para isso fiz as configurações necessárias no cliente para poder ligarme ao servidor.
    Para efectuar a transferência do cliente acedi a este link:
    http://uploaded.to/file/jlxzczc8
    Extrai, abri o ficheiro serverimfo.py com o notepad++ , e coloquei o ip da máquina virtual (192.168.5.100).
    Abri o programa metin2_2010.exe cliquei em START e pus as minhas credências da conta.


    Ilustração 10 - Metin2_2010.exe


    Ilustração 11 - Inserir as credenciais de conta

    Fiz a ligação ao servidor e cliquei no botão criar. Escolhi a classe e o sexo (Guerreiro e Masculino),


    Ilustração 13 - Criar o Personagem

    o nome foi aquele que coloquei previamente na tabela de gmlist e escolhi a cor que desejava que o equipamento fosse (cor 2).
    Cliquei em criar e depois quando me apareceu para escolher o personagem cliquei em começar.
    Esperei o loading e apreceu o meu personagem com o simbolo GM acima da cabeça (significando que é GameMaster).


    Ilustração 12 - Personagem no Mundo do Jogo

    Como conseguimos jogar, o servidor estava funcional.
    11
    Paulo Gonçalves – Projecto de PSI

    Ponto 5 – Estudo das bases de Dados
    Existem 3 bases de dados que são fundamentais à execução do servidor.
    Elas são Accounts, Common e Player.
    Dentro das mesmas existem tabelas que exigem a nossa compreenção. Sem saber para que serve um campo em questão uma alteração na base de dados pode
    compremeter todo o funcionamento do servidor, desde dar erro ao escolher a personagem a o servidor nem ligar.
    Parte I – Estudo da Base de Dados Accounts
    Esta base de dados serve para guardar as contas que são criadas.
    Dentro desta existe apenas uma tabela que se precisa compreender, accounts, que tem os seguintes campos:

    Id, login, password, real_name, social_id, email, phone1, phone2, zipcode, adress,
    create_time, question1, answer1, question2, answer2, is_testor, status, securitycode,
    newsletter, empire, name_checked, availDt, cash, gold_expire, silver_expire, safebox_expire,
    autoloot_expire, fish_mind_expire, marriage_fast_expire, money_drop_rate_expire,
    ttl_cash, ttl_mileage, channel_company, last_play.
    Destes todos apenas precisei de compreender o funcionamento dos seguintes:
    Id, login, password, real_name, social_id, email, phone1, phone2, zipcode, adress, question1,
    answer1, question2, answer2, status, gold_expire, silver_expire, safebox_expire,
    autoloot_expire, fish_mind_expire, marriage_fast_expire e money_drop_rate_expire.

    Destes apenas os seguintes não podem ser nulos:
    Id, login, password, social_id

    Após estudar o funcionamento de cada campo cheguei a conclusão de que os campos actuam segundo o seguinte:
    Id, é uma chave primária. Serve para identificar a que conta os personagens pertencem.
    Este campo é auto increment por isso não precisamos de especificar um valor.
    Login, é o nome utilizado para se fazer o login no cliente. Este campo tem que ser único.
    Password, é a password utilizada para se fazer o login no cliente. Este campo utiliza a
    encriptação de Password do MySQL. Este processo é irreversivel, portanto só se pode encriptar
    e não se pode desencriptar fazendo com que seja uma palavra passe muito segura.
    Social_id, é o código que vai ser utilizado ao eliminar uma personagem, fazendo assim com
    que a personagem só possa ser eliminada pelo criador da conta.
    Real_name, é o nome real do dono da conta.
    Email, é o email a que a conta está associada. Se usarmos num site uma recuperação da
    password por email, este campo torna-se essencial.
    Phone1, phone2, é um campo para que se coloque o número de telemóvel.
    Não tem muito interesse pois o utilizador nunca vai ser contactado via telemovel e no jogo não há nada que seja feito a partir do telemovel.

    Zipcode, adress, Informações relactivamente a morada. Não tem muita utilidade nesta base de dados.
    Question1, question2, São as perguntas de segurança. Se for feito a reposição de password com perguntas secretas estes campos tornam-se essenciais.
    Answer1, answer2, São as respostas as perguntas de segurança.
    Se for feito a reposição de password com perguntas secretas estes campos tornam-se essenciais.
    Status, Quando o valor deste campo for OK, poderemos fazer o login no cliente normalmente.
    Este campo é de extrema utilidade se utilizarmos algum método de validação por email.
    gold_expire, silver_expire, safebox_expire, autoloot_expire, fish_mind_expire, marriage_fast_expire e money_drop_rate_expire,
    bónus do jogo, são do tipo data e guardam
    até que dia estes bónus estão activos. São extremamente uteis caso queiramos fazer um sistema VIP.
    Feito este estudo cheguei a conclusão de que a query óptima para acrescentar uma nova conta é:

    INSERT INTO accounts(login, password, social_id, email, question1, question2, answer1,answer2, status, gold_expire, silver_expire, safebox_expire, autoloot_expire,fish_mind_expire, marriage_fast_expire e money_drop_rate_expire) VALUES (‘login’,PASSWORD(‘password’), ‘código de apagar a personagem’, ‘email’, ‘questão 1’, ‘questão2’,‘resposta1’, ‘resposta2’, ‘OK’, ‘data de hoje mais dez dias’, data de hoje mais dez dias’, datade hoje mais dez dias’, data de hoje mais dez dias’, data de hoje mais dez dias’, data de hojemais dez dias’, data de hoje mais dez dias’); Parte II – Base de Dados common
    Esta base de dados serve para guardar as coisas comuns ao servidor.
    Uma das tabelas é a gmlist, que serve para guardar os GameMasters que o servidor tem.
    Esta tem os seguintes campos: mID, mAccount, mName, mAuthority, mContactIP, mServerIP
    Destes apenas os seguintes não podem ser nulos:
    mID, mAccount, mName, mAuthority Depois de estudar esta tabela cheguei à conclusão que:
    O campo mID é a chave primária e guarda o número do GM.
    O campo mAccount serve para dizer a que conta o GM pertence, para que se for criado um
    personagem com o mesmo nome do GM este não ter poderes de administração.
    O campo mName é o nome do personagem que é GM.
    O campo mAuthority é onde se designa que tipo de GM ele é, Implementor, que tem acesso a
    tudo ou apenas um Wizard, que pode só fazer apenas algumas coisas.


    13
    Paulo Gonçalves – Projecto de PSI

    Com isto cheguei a conclusão que a query optima é:

    INSERT INTO gmlist(mID, mAccount, mName, mAuthority, mServerIP) VALUES (‘id’, ‘nome daconta’, ‘nome do personagem’, ‘IMPLEMENTOR’, ‘ALL’); Parte III – Base de Dados Player
    Esta base de dados guarda todos os dados relactivamente ao jogo.
    Todas as tabelas são deveras importantes, embora para atingir o meu objectivo só precisei compreender as tabelas
    item_proto e mob_proto. Outras tabelas importantes são a player que guarda os registos dos
    personagems, guild, que guarda todas as alianças feitas no jogo, land, que guarda os terrenos das alianças, item, que guarda a quem pertence tal item, item_atrr, que guarda os especiais e quantidades que podem ser aplicados nos items, shop, que designa a determinado NPC uma
    loja e shop_item que determina que lojas vendem determinado item e que quantidades.
    Vou começar por falar da tabela item_proto.
    Ao estudar a tabela vi que tem os seguintes campos:

    Vnum, name, locale_name,type, subtype, weight, size, antiflag, flag, wearflag, immuneflag,
    gold, shop_buy_price, refined_vnum, refine_set, refine_set2, magic_pct, limittype0,
    limitvalue0, limittype1, limitvalue1, applytype0, applyvalue0, applytype1, applyvalue1,
    applytype2, applyvalue2, value0, value1, value2, value3, value4, value5, socket0, socket1,
    socket2, socket3, socket4, socket5, specular, socket_pct, addon_type.

    Vnum serve para identificar o id do item.
    Name serve para identificar o nome do item nos ficheiros do servidor.
    Locale_name serve para identificar os nomes dos itens no cliente.
    Type, subtype, servem para identificar qual o tipo de item (espada, leque, poção, item normal,).
    Size, o tamanho que ocupa no inventario.
    Antiflag, flag, wearflag, immuneflag, Restrições de raça, se pode ser vendido e se se pode deixar cair.
    Shop_buy_price, preço ao vender o item numa loja do jogo.
    Refined_vnum, refine_set, refine_set2, informações sobre a refinação do item.
    limittype0, limitvalue0, limittype1, limitvalue1, restrições de nivel.
    applytype0, applyvalue0, applytype1, applyvalue1, applytype2, applyvalue2, bonus daquela arma.
    value0, value1, value2, value3, value4, value5, valores referentes ao tipo de item que é.
    E depois estudei a tabela mob_proto que tem os seguintes campos:

    14
    Paulo Gonçalves – Projecto de PSI

    vnum, name, locale_name, rank, type, battle_type, level, size, ai_flag, mount_capacity,
    setRaceFlag, setImmuneFlag, empire, folder, on_click, st, dx, ht, iq, damage_min,
    damage_max, max_hp, regen_cycle, regen_percent, gold_min, gold_max, exp, def,
    attack_speed, move_speed, aggressive_hp_pct, aggressive_sight, attack_range, drop_item,
    resurrection_vnum, enchant_curse, enchant_slow, enchant_poison, enchant_stun,
    enchant_critical, enchant_penetrate, resist_sword, resist_twohand, resist_dagger, resist_bell,
    resist_fan, resist_bow, resist_fire, resist_elect, resist_magic, resist_wind, resist_poison,
    dam_multiply, summon, drain_sp, mob_color, polymorph_item, skill_level0, skill_vnum0,
    skill_level1, skill_vnum1, sp_berserk, sp_stoneskin, sp_godspeed, sp_deathblow, sp_revive,
    skill_level2, skill_vnum2, skill_level3, skill_vnum3, skill_level4, skill_vnum4

    vnum, o id que identifica o mob.
    Name, o nome que identifica nos ficheiros do servidor.
    Locale_name, o numero que identifica no cliente.
    Rank, o nivel de dificuldade.
    Type, o tipo de mob que é.
    Level, o nivel do mob.
    Ai_flag, como o mob se comporta.
    Empire, o império ao qual pertence o moob.
    On_click, o que o mob faz quando se clica nele.
    St, dx, ht, iq, status do mob.
    Damage_min, damage_max, dam_multiply, valores de dano do mob.
    skill_level1, skill_vnum1, skill_level2, skill_vnum2, skill_level3, skill_vnum3, skill_level4, skill_vnum4, que habilidades o moob tem.
    resist_sword, resist_twohand, resist_dagger, resist_bell, resist_fan, resist_bow, resist_fire, resist_elect, resist_magic, resist_wind, resist_poison, resistencias aos personagens que o mob tem.

    15
    Paulo Gonçalves – Projecto de PSI

    Ponto 6 – Implementação de itens, NPCS e monstros(mobs)
    Para concluir este passo já é preciso descompactar ficheiros do servidor. Para tal usamos a ferramenta do M2 Extractor.
    Como já é uma ferramenta antigo que eu possuo e não aencontro já disponibilizada na internet eu próprio fiz o upload.
    Primeiro fiz a transferência do M2 Extractor http://www.mediafire.com/?jxao19gjw5oboqa
    Depois copiei para o caminho C:m2 e extrai. Fiquei com um programa chamado m2.exe.
    Este programa trabalha com os ficheiros .eix e .epk do cliente através de ficheiros .xml.
    Para o usar tive que ir à linha de comandos do Windows (Menu Iniciar e na pesquisa escrever cmd) e ir para a pasta do programa (cd c:m2).
    Feito isto tive que criar um ficheiro .xml e copiar o arquivo que desejo descompactar do cliente.
    Depois escrevi na consola m2 ficheiro.xml e ele extraiu-me os ficheiros para a pasta Source.Depois tive que ir através do navegador do Windows (explorer) ir a pasta c:m2source e lá encontravam-se todos os ficheiros que estavam dentro do ficheiro .epk.
    Parte I – Implementação de itens.
    Nesta parte adicionei 3 itens comuns que irão fazer parte de uma missão. O nome desses itens
    são, Chave de Azurite, Cabeça Encolhida e Totem do Resto. Todos estes itens têm um Ícone. Os Ícones podem ser encontrados nestes links:
    Chave de Azurite
    Cabeça Encolhida
    Totem do Resto
    Guardei as 3 imagens no meu computador.
    De seguida criei 4 ficheiros XML, icon.xml, root.xml, locale_de.xml, item_proto.xml em que os conteúdos eram os seguintes:
    icon.xml

    <Buildfile version="1.1"><Action type="extract" archivePath="C:m2icon" outputPath="Source" extractAll="YES"createXML="YES" xmlPath="iconpack.xml" /></Buildfile>16
    Paulo Gonçalves – Projecto de PSI

    locale_de.xml
    item_proto.xml
    De seguida copiei os ficheiros icon.epk, icon.eix, locale_de.epk, locale_de.eix da pasta pack do cliente para a pasta c:m2 e os ficheiros criados para a pasta c:m2.
    Abri a consola e fui para a pasta m2. Escrevi m2 root.xml. O programa extraiu sem quaisquer erros.
    Ilustração 14 - Linha de comandos Windows

    Fiz o mesmo para o ficheiro icon.xml e locale_de.xml. Foi criado a pasta Source, o ficheiro
    rootpack.xml,o ficheiro locale_depack.xml e o ficheiro iconpack.xml.
    No explorador do Windows fui à pasta c:m2Source e lá tinha os ficheiros todos que estavam dentro dos ficheiros .epk.
    Feito isto editei as imagens no GIMP para passar de png para tga, o formato de imagem do metin2.
    Para efectuar este passo abri as imagens no GIMP e na
    aba ficheiro -> exportar selecionei a extensão .tga.

    Ilustração 15 - Edição das imagens no GIMP

    Primeiro copiei as três imagens editadas para a pasta c:m2sourceiconitem

    <Buildfile version="1.1"><Action type="extract" archivePath="C:m2locale_de" outputPath="Source" extractAll="YES"createXML="YES" xmlPath="locale_depack.xml" /></Buildfile><Buildfile version="1.1"><Action type="item_proto_extract" path="item_proto" output="item_proto_dump.xml" /></Buildfile>17
    Paulo Gonçalves – Projecto de PSI

    Depois abri o ficheiro c:m2sourcelocaledeitemlist.txt com o notepad++.
    Efectuei uma pesquisa (CTRL + F) com o número 30311, 30312 e 30319 para verificar se já existiam entradas
    desse número nesse ficheiro. Como não existia entrada para esses números eu fui acrescentar estas linhas:
    Depois editei o ficheiro c:m2sourcelocaledeitem_desc.txt com o notepad++. Efectuei uma
    pesquisa (CTRL + F) com o número 30311, 30312 e 30319 para verificar se já existiam entradas
    desse número nesse ficheiro. Como não existia adicionei as seguintes linhas:
    Agora copiei o ficheiro c:m2Sourcelocaledeitem_proto para a pasta c:m2. Executei na
    consola do Windows, na pasta c:m2, o comando m2 item_proto.xml. Isto criou o ficheiro item_proto_dump.xml.
    Editei esse ficheiro. Fiz a pesquisa acima referida, e mais uma vez como não existia adicionei as seguintes linhas:

    30311 ETC icon/item/30311.tga30312 ETC icon/item/30312.tga30319 ETC icon/item/30319.tga30311 Chave de Azurite Esta delicada chave, com uma pedra de Azurite, abre a
    passagem para o 2º Andar das Catacumbas do Demónio.
    30312 Totem de Rosto Este pedaço de madeira com um rosto cravado serve como
    chave para o 6º Andar das Catacumbas do Demónio.
    30319 Cabeça Encolhida Esta cabeça de demónio encolhida abre o selo para o 3º Andar das Catacumbas do Demónio. Este item é negociável.

    <Item vnum="30311" name="Chave de Azurite" gb2312name="Chave de Azurite" type="5" subtype="0"weight="0" size="1" antiflag="0" flag="4" wearflag="0" immuneflag="0" gold="0" buy_price="0" limittype0="0"limitvalue0="0" limittype1="0" limitvalue1="0" applytype0="0" applyvalue0="0" applytype1="0" applyvalue1="0"applytype2="0" applyvalue2="0" value0="0" value1="0" value2="0" value3="0" value4="0" value5="0" socket0="0"socket1="64944" socket2="127" socket3="65008" socket4="21631" socket5="4855" refine_vnum="0" refine_set="0"magic_pct="0" specular="0" socket_pct="0" /><Item vnum="30312" name="Totem do Resto" gb2312name="Totem do Resto" type="5" subtype="0" weight="0"size="1" antiflag="0" flag="4" wearflag="0" immuneflag="0" gold="0" buy_price="0" limittype0="0" limitvalue0="0"limittype1="0" limitvalue1="0" applytype0="0" applyvalue0="0" applytype1="0" applyvalue1="0" applytype2="0"applyvalue2="0" value0="0" value1="0" value2="0" value3="0" value4="0" value5="0" socket0="0" socket1="64944"socket2="127" socket3="65008" socket4="21631" socket5="4855" refine_vnum="0" refine_set="0" magic_pct="0"specular="0" socket_pct="0" /><Item vnum="30319" name="Cabeça Encolhida" gb2312name="Cabeça Encolhida" type="5" subtype="0"weight="0" size="1" antiflag="0" flag="4" wearflag="0" immuneflag="0" gold="0" buy_price="0" limittype0="0"limitvalue0="0" limittype1="0" limitvalue1="0" applytype0="0" applyvalue0="0" applytype1="0" applyvalue1="0"applytype2="0" applyvalue2="0" value0="0" value1="0" value2="0" value3="0" value4="0" value5="0" socket0="0"socket1="64944" socket2="127" socket3="65008" socket4="21631" socket5="4855" refine_vnum="0" refine_set="0"magic_pct="0" specular="0" socket_pct="0" />18
    Paulo Gonçalves – Projecto de PSI

    Agora compactei os arquivos de novo para colocar no cliente.
    Para tal o que eu fiz primeiro foi a criacção de um outro ficheiro .xml, item_protopack.xml com o seguinte conteudo:
    Ainda acrescentei no ficheiro iconpack.xml as seguintes linhas:
    Executei na consola do Windows, na pasta c:m2, o comando m2 item_protopack.xml.
    Isto criou o ficheiro item_proto. Copiei o item_proto para a pasta c:m2Sourcelocalede e
    Voltei a compactar tudo com os seguintes comandos:
    m2 locale_depack.xml
    m2 iconpack.xml
    Copiei os ficheiros icon.epk, icon.eix, locale_de.epk e locale_de.eix para a pasta pack do cliente.
    Abri o navicat, liguei-me a ligação ahamachi(nome escolhido anteriormente), escolhi a base de dados player e em new query inseri a seguinte query:

    <Buildfile version="1.1"><Action type="item_proto_create" path="item_proto_dump.xml" output="item_proto" /></Buildfile>INSERT INTO item_proto VALUES ('30311', 'Chave de Azurite', 'Chave de Azurite', '5', '0', '0', '1','0', '4', '0', '', '0','0', '0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0', '-1', '-1', '-1', '-1','-1', '-1', '0', '0', '0');INSERT INTO item_proto VALUES ('30312', 'Totem do Resto', 'Totem do Resto', '5', '0', '0', '1','0', '4', '0', '', '0','0', '0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0', '-1', '-1', '-1', '-1','-1', '-1', '0', '0', '0');INSERT INTO item_proto VALUES ('30319', 'Cabeça Encolhida', 'Cabeça Encolhida', '5', '0', '0', '1','0', '4', '0', '', '0','0', '0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0', '-1', '-1', '-1', '-1','-1', '-1', '0', '0', '0');<File archivedPath="icon/item/30311.tga"type="1"><![CDATA[Sourceiconitem30311.tga]]></File><File archivedPath="icon/item/30312.tga"type="1"><![CDATA[Sourceiconitem30312.tga]]></File><File archivedPath="icon/item/30319.tga"type="1"><![CDATA[Sourceiconitem30319.tga]]></File>19
    Paulo Gonçalves – Projecto de PSI

    Feito isto fui ao cliente, fiz login, escolhi a personagem e no chat escrevi /reload p para fazer um recarregamento as tabelas _proto.
    Depois no chat fiz /i 30311. Verifiquei se apareceu o item. Repeti o mesmo passo para os items 30312 e 30319.
    Ilustração 16 - Os três novos itens

    20
    Paulo Gonçalves – Projecto de PSI

    Parte II – Implementação de NPCS.
    Nesta parte foi adicionado um NPC (Non Playable Character), para fazer o teletransporte para dentro uma nova zona implementada.
    Para isso usei um modelo já existente de NPC (um ficheiro .gr2).
    As únicas coisas que fiz foi a instrução SQL e integrar o NPC com o cliente para que o possamos visionar.
    O primeiro passo que tomei foi extrair o ficheiro root.epk, e para tal efeito criei o ficheiro root.xml.
    Nele escrevi o seguinte:
    Copiei os ficheiros root.epk e root.eix, executei o seguinte comando na pasta c:m2: m2 root.xml e o programa descompactou os ficheiros contidos dentro do ficheiro root.
    Editei o documento c:m2sourcenpclist.txt com o notepad++ e pesquisei para ver se existe a linha 20133.
    Como não existia adicionei a seguinte linha nesse mesmo ficheiro:
    Feito isto guardei o documento e na consola executei o comando m2 rootpack.xml.
    Copiei o root.epk e root.eix gerados e colei dentro da pasta pack do cliente.

    Ilustração 17 - Modelo do NPC

    <Buildfile version="1.1"><Action type="extract" archivePath="C:m2root"outputPath="Source" extractAll="YES" createXML="YES"xmlPath="rootpack.xml" /></Buildfile>20133 jinno_patrol_spear21
    Paulo Gonçalves – Projecto de PSI

    Depois fiz a query SQL:
    Fiz login no jogo, digitei no chat /reload p e depois /m 20133.
    Ilustração 18 - NPC adicionado

    INSERT INTO mob_proto VALUES (20133, 'Guardião das Catacumbas', 'Guardião dasCatacumbas', '5', '1', '0', '120', '', 'NOMOVE', '0', '', 'STUN,SLOW,CURSE,TERROR', '0', '', '2','0','0','0','0','0','0', '120', '3', '1', '0','0', '100', '4', '100', '100', '0', '2000', '150', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', null, null, null, null, null, null);[/center][center]22
    Paulo Gonçalves – Projecto de PSI

    Parte III – Implementação de monstros(mobs).
    O cliente que fiz a transferência já tem todos os monstros que quero inserir implementados,
    portanto só precisei de trabalhar as querys SQL que foram as seguintes:
    INSERT INTO `mob_proto` VALUES ('2501', 'zombie_diseased_kid', 0x48F66C6C656E7175616C6C65, '1', '0', '0', '100', '', 'AGGR', '0', 'HUMAN', '', '0', '', '0','30', '40', '200', '10', '300', '450', '15000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2502', 'zombie_diseased_dog', 0x48F66C6C656E68756E64, '1', '0', '0', '98', '', 'AGGR', '0', 'HUMAN', '', '0', '', '0', '33','40', '200', '10', '300', '450', '15000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2503', 'Zombie', 0x48F66C6C656E6F6666697A696572, '2', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', '', '0', '', '0', '34', '40','200', '10', '300', '450', '15000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2504', 'zombie_diseased_sword', 0x48F66C6C656E6F6666697A696572, '2', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', '', '0','', '0', '40', '40', '200', '10', '300', '450', '15000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2505', 'zombie_diseased_spear', 0x48F66C6C656E77E46368746572, '2', '0', '0', '110', '', 'AGGR', '0', 'HUMAN','SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '120', '40', '150', '10', '300', '700', '50000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100','5000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2506', 'zombie_diseased_bow', 0x5A7765696B6F70662D48F66C6C656E736368FC747A65, '2', '0', '0', '105', '', 'AGGR','0', 'HUMAN', '', '0', '', '0', '43', '40', '200', '10', '300', '450', '15000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2507', 'zombie_diseased_boss', 0x48F66C6C656E67726569666572, '4', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', '', '0', '','0', '47', '40', '200', '10', '300', '450', '15000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2508', 'zombie_soldier_scythe', 0x48F66C6C656E6B726965676572, '3', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', '', '0', '','0', '65', '40', '200', '10', '600', '800', '150000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '11974', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2509', 'zombie_soldier_bow', 0x48F66C6C656E736368FC747A65, '3', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', '', '0', '', '0','59', '40', '200', '10', '300', '450', '30000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2510', 'zombie_soldier_spear', 0x48F66C6C656E73706565726BE46D70666572, '3', '0', '0', '105', '', 'AGGR', '0','HUMAN', '', '0', '', '0', '70', '40', '200', '10', '300', '450', '30000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2511', 'zombie_magician', 0x48F66C6C656E7072696573746572, '3', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', '', '0', '', '0','80', '40', '200', '10', '300', '450', '30000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2512', 'zombie_bigboss', 0x48F66C6C656E6D616A6F72, '4', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', '', '0', '', '0', '80', '40','200', '10', '300', '450', '30000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2513', 'zombie_ghost', 0x48F66C6C656E6D65747A6C6572, '2', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', '', '0', '', '0', '67','40', '200', '10', '300', '450', '30000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2514', 'zombie_general', 0x48F66C6C656E67656E6572616C, '4', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', '', '0', '', '0', '86','40', '200', '10', '300', '450', '30000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');23
    Paulo Gonçalves – Projecto de PSI

    INSERT INTO `mob_proto` VALUES ('2541', 'zombie_soldier_scy', 0x42F67365722048F66C6C656E6B726965676572, '4', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', '', '0', '', '0', '81', '40', '200', '10', '600','800', '150000', '3', '3', '8500000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '11973', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2542', 'zombie_soldier_bow', 0x42F67365722048F66C6C656E736368FC747A65, '2', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', '', '0', '', '0', '66', '40', '200', '10', '300','450', '50000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2543', 'zombie_soldier_spear', 0x42F67365722048F66C6C656E73706565726BE46D70666572, '2', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', '', '0', '', '0', '70', '40', '200','10', '300', '450', '50000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2544', 'zombie_magician', 0x42F67365722048F66C6C656E7072696573746572, '2', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', '', '0', '', '0', '59', '40', '200', '10', '300','450', '50000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2545', 'zombie_bigboss', 0x42F67365722048F66C6C656E6D616A6F72, '4', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', '', '0', '', '0', '76', '40', '200', '10', '300', '450','50000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2546', 'zombie_ghost', 0x42F67365722048F66C6C656E6D65747A6C6572, '3', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', '', '0', '', '0', '80', '40', '200', '10', '300', '450','50000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2547', 'zombie_general', 0x42F67365722048F66C6C656E67656E6572616C, '5', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', 'SLOW,FALL,CURSE,POISON,TERROR', '0', '','0', '90', '40', '200', '10', '300', '450', '50000', '3', '3', '5000000', '5000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2591', 'zombie_king', 0x5461727461726F73, '5', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', 'SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '90', '40', '200', '10', '450','800', '200000', '3', '3', '12000000', '12000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2592', 'zombie_king', 0x48F66C6C656E62617374617264, '5', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', 'SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '90', '40', '200','10', '450', '800', '200000', '3', '3', '12000000', '12000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2593', 'zombie_king', 0x48F66C6C656E62617374617264, '5', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', 'SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '90', '40', '200','10', '450', '800', '200000', '3', '3', '12000000', '12000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2594', 'zombie_king', 0x48F66C6C656E62617374617264, '5', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', 'SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '90', '40', '200','10', '450', '800', '200000', '3', '3', '14000000', '14000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2595', 'zombie_king', 0x457265626F73, '5', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', 'SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '90', '40', '200', '10', '450', '800','200000', '3', '3', '14000000', '14000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2596', 'zombie_king', 0x417A7261656C732042727574, '5', '0', '0', '105', '', 'AGGR', '0', 'HUMAN', 'SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '90', '40', '200', '10','700', '900', '200000', '3', '3', '14000000', '14000000', '350000', '70', '100', '100', '100', '2000', '120', '11972', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2597', 'zombie_god', 0x436861726F6E, '5', '0', '0', '120', '', 'AGGR', '0', 'HUMAN', 'SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '90', '40', '200', '10', '700', '800','200000', '3', '3', '16000000', '16000000', '350000', '70', '100', '100', '100', '2000', '120', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('2598', 'zombie_god', 0x417A7261656C, '5', '0', '0', '120', '', 'AGGR', '0', 'HUMAN', 'SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '120', '40', '150', '10', '800', '1000','250000', '3', '3', '16000000', '16000000', '600000', '70', '100', '100', '100', '5000', '120', '11971', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0');24
    Paulo Gonçalves – Projecto de PSI

    Tendo efectuado as querys foi ao cliente, fiz /reload p e expirimentei evocar todos os mobs que adicionei tendo sido eles:

    2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2541,
    2542, 2543, 2544, 2545, 2546, 2547, 2591, 2592, 2593, 2594, 2595, 2596, 2507, 2598, 30101,
    30102, 30103, 30104, 30111, 30112, 30113, 30114, 30115, 30116, 30117, 30118, 30119.
    Ilustração 19 - Monstros implementados

    INSERT INTO `mob_proto` VALUES ('30101', '?????', 0x53746174756520646573204B7564, '5', '1', '0', '70', '', 'NOMOVE', '0', '', 'STUN,SLOW,CURSE,TERROR', '0', '', '2', '0', '0', '0', '0', '0', '0', '3954','3', '1', '0', '0', '562', '79', '100', '100', '0', '2000', '150', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('30102', '?????', 0x426173616C742D4F62656C69736B, '5', '1', '0', '70', '', 'NOMOVE', '0', '', 'STUN,SLOW,CURSE,TERROR', '0', '', '2', '0', '0', '0', '0', '0', '0', '3954','3', '1', '0', '0', '562', '79', '100', '100', '0', '2000', '150', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('30103', '?????', 0x536368696C646B72F674656E66656C73, '5', '1', '0', '70', '', 'NOMOVE', '0', '', 'STUN,SLOW,CURSE,TERROR', '0', '', '2', '0', '0', '0', '0', '0', '0','3954', '3', '1', '0', '0', '562', '79', '100', '100', '0', '2000', '150', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0','0', '0');INSERT INTO `mob_proto` VALUES ('30104', '?????', 0x52756E656E706661686C, '5', '1', '0', '70', '', 'NOMOVE', '0', '', 'STUN,SLOW,CURSE,TERROR', '0', '', '2', '0', '0', '0', '0', '0', '0', '3954', '3', '1', '0','0', '562', '79', '100', '100', '0', '2000', '150', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('30111', 'zombie_ghost_door', 0x312E20546F72206465722056657264616D6D6E6973, '5', '0', '0', '120', '', 'AGGR', '0', 'HUMAN','SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '120', '40', '150', '10', '800', '1000', '250000', '3', '3', '16000000', '16000000', '600000', '70', '100', '100', '100', '5000', '120', '11971', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('30112', 'zombie_ghost_door', 0x322E20546F72206465722056657264616D6D6E6973, '5', '0', '0', '120', '', 'AGGR', '0', 'HUMAN','SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '120', '40', '150', '10', '800', '1000', '250000', '3', '3', '16000000', '16000000', '600000', '70', '100', '100', '100', '5000', '120', '11971', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('30113', 'zombie_ghost_door', 0x332E20546F72206465722056657264616D6D6E6973, '5', '0', '0', '120', '', 'AGGR', '0', 'HUMAN','SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '120', '40', '150', '10', '800', '1000', '250000', '3', '3', '16000000', '16000000', '600000', '70', '100', '100', '100', '5000', '120', '11971', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('30114', 'zombie_ghost_door', 0x342E20546F72206465722056657264616D6D6E6973, '5', '0', '0', '120', '', 'AGGR', '0', 'HUMAN','SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '120', '40', '150', '10', '800', '1000', '250000', '3', '3', '16000000', '16000000', '600000', '70', '100', '100', '100', '5000', '120', '11971', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('30115', 'zombie_ghost_door', 0x352E20546F72206465722056657264616D6D6E6973, '5', '0', '0', '120', '', 'AGGR', '0', 'HUMAN','SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '120', '40', '150', '10', '800', '1000', '250000', '3', '3', '16000000', '16000000', '600000', '70', '100', '100', '100', '5000', '120', '11971', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('30116', 'zombie_ghost_door', 0x362E20546F72206465722056657264616D6D6E6973, '5', '0', '0', '120', '', 'AGGR', '0', 'HUMAN','SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '120', '40', '150', '10', '800', '1000', '250000', '3', '3', '16000000', '16000000', '600000', '70', '100', '100', '100', '5000', '120', '11971', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('30117', 'zombie_ghost_door', 0x372E20546F72206465722056657264616D6D6E6973, '5', '0', '0', '120', '', 'AGGR', '0', 'HUMAN','SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '120', '40', '150', '10', '800', '1000', '250000', '3', '3', '16000000', '16000000', '600000', '70', '100', '100', '100', '5000', '120', '11971', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('30118', 'zombie_ghost_door', 0x382E20546F72206465722056657264616D6D6E6973, '5', '0', '0', '120', '', 'AGGR', '0', 'HUMAN','SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '120', '40', '150', '10', '800', '1000', '250000', '3', '3', '16000000', '16000000', '600000', '70', '100', '100', '100', '5000', '120', '11971', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');INSERT INTO `mob_proto` VALUES ('30119', 'zombie_ghost_door', 0x392E20546F72206465722056657264616D6D6E6973, '5', '0', '0', '120', '', 'AGGR', '0', 'HUMAN','SLOW,FALL,CURSE,POISON,TERROR', '0', '', '0', '120', '40', '150', '10', '800', '1000', '250000', '3', '3', '16000000', '16000000', '600000', '70', '100', '100', '100', '5000', '120', '11971', '0', '0', '0', '0','0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.2', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');25
    Paulo Gonçalves – Projecto de PSI

    Dificuldades Sentidas
    Uma das dificuldades que senti no desenvolvimento deste projecto foi o de encontrar uns ficheiros de servior funcionais,
    pois todas as transferências que efectuei davam erros de configuração.
    Outra dificuldade foi o tempo que tive para a concretização do mesmo.

    26
    Paulo Gonçalves – Projecto de PSI

    Conclusão
    Diverti-me a realizar este projecto pois é uma coisa de que gosto muito.
    Embora não tenha conseguido concretizar todos os objectivos por falta de tempo, penso que o tempo foi bem
    distribuido para as tarefas, e consegui fazer o máximo que o tempo me permitia.
    Passei grandes momentos a fazer pesquisas, falar com outras pessoas sobre problemas encontrados
    nos ficheiros do servidor e a publicar tuturiais de minha autoria sobre este assunto.
    Tive ajuda do meu irmão Luis Carlos Graça, pois ele me disponibilizou um computador para montar os ficheiros de servidor,
    embora esteja a usar o meu computador de momento por falhas de configurações.
    No futuro desejo abrir o servidor ao público para que mais pessoas possam disfrutar do meu
    trabalho e desenvolver os objectivos que me faltam. Desejo ainda implementar mais coisas a
    nivel de missões, profissões, masmorras e campos de batalha.
    Para concluir espero que este relatório seja objectivo e de fácil compreensão.
    Paulo Gonçalves

    27
    Paulo Gonçalves – Projecto de PSI

    Girias utilizadas neste documento e no mundo dos jogos
    Download – Transferência;
    Upload – Alojar o ficheiro num servidor;
    Cliente – Programa que estabelece a ligação entre o utilizador e o servidor;
    NPC – Non Playable Character – Personagem comandada pelo computador;
    Mob – NPC com o qual o jogador luta para adquirir experiência, bens e dinheiro;
    Masmorras – Mapa que se tem de fazer determinadas condições para ir passando para a
    próxima área, normalmente precisa-se de um grupo para conseguir completar uma masmorra;
    Campo de Batalha – Mapa em que os jogadores se defrontam com o objectivo de marcar mais
    pontos. Cada morte de um jogador equivale a um ponto;
    Alianças – Uniões feitas entre jogadores com os mesmos ideais ou fins;
    Grupo – Junção temporário de Vários jogadores com o fim de atingir determinado objectivo;
    HP – Health Points – Pontos de Vida, é o tanto de vida que um jogador tem;
    SP – Spirit Points – Pontos de Espirito, é o tanto de mana que o jogador tem para executar as habilidades;
    Skills – Habilidades – Ataques especiais que só podem ser executados por determinada raça;
    Noob – Jogador novato, sem experiência de jogo;
    Leet – Jogador experiente, já jogou bastantes horas o jogo de forma que aprendeu muitos
    truques e dicas para fazer o máximo dinheiro e/ou experiência;
    Experiência – Quando se chega a uns determinados pontos de experiência o jogador sobe um nÍvel.
    Dinheiro – Moeda de troca no jogo.

    28
    Paulo Gonçalves – Projecto de PSI

    Bibliografia e Netgrafia
    http://cyber-gamers.org/ - Tutoriais escritos em português
    http://www.youtube.com/user/mt2tuguinha - Tutoriais em Video
    http://newmetin2.net/2010/02/02/codigos-gm-pt-pt/ - Códigos utilizados pelos GMs
    http://www.elitepvpers.com/forum/metin2-pserver-discussions-questions/ - Tutoriais escritos em alemão.
  20. Upvote
    Scooter reacted in [Exclusivo]5Armadura By Origin   
    Partilho hoje com vocês o pack de armaduras 50 - 99 !
    Criadas por mim para o servidor "CyberMt2" e "AddictMt2"


    http-~~-//www.youtube.com/watch?v=gmChS0o1TOM&feature=player_embedded


    Pack:
    -locale-
    -Icon-
    -Pc-
    -Pc2--root-
    -Query's-

    ID's:
    Warrior
    42050 - 42059
    42060 - 42069
    42070 - 42079
    42080 - 42089
    42090 - 42099

    Ninja
    44050 - 44059
    44060 - 44069
    44070 - 44079
    44080 - 44089
    44090 - 44099

    Sura
    46050 - 46059
    46060 - 46069
    46070 - 46079
    46080 - 46089
    46090 - 46099

    Shaman
    48050 - 48059
    48060 - 48069
    48070 - 48079
    48080 - 48089
    48090 - 48099

    Disfrutem !



    http://www.mediafire...9q6mtpobeq5okbc

    Créditos:
    Origin - Cyber-Gamers.Org
  21. Upvote
    Scooter reacted to ƤāƱŁѲ ƒēƦƦēƗƦā in [Tutorial]Criar Launcher Para Servidor De Metin!   
    Bem pessoal, como o launcher deste autopatcher http://cyber-gamers....er-a-funcionar/ tá noutra lingua, eu decidi criar um video tutorial de como criar apenas o launcher !
    Aqui se segue o tutorial:


    http-~~-//www.youtube.com/watch?v=hS2P3dRj6Xw&feature=youtu.be

    Qualquer dúvida relacionada com o tutorial, contactem me!
    Código utilizado:

    Créditos: 100% feitos por mim!
    Cumprimentos.
  22. Upvote
    Scooter reacted to Valenza in Adicionar armas / armaduras / itens na files e cliente metin2   
    Boas Familia Cyber,
    Hoje, venho ensinar de uma forma mais clara de como implementar as armas, armaduras e itens em geral nos files e cliente de metin2,
    Como meter no cliente (para que possa ser visto e usado)
    Simples... Siga abaixo o tutorial que não tem erro!
    Ps: Importante fazer back up dos seus arquivos eix e epk que estarão sendo modificados, para caso faça algo de errado, não tenha que recomeçar seu projeto novamente...
    Vamos lá:
    --> Icons: (são aqueles desenhos que ficam no seu inventário [em relação a itens])
    Uma imagem para mostrar o que eu digo:

    Como exemplo, isso são icones , agora vamos para o proximo passo:
    - No seu cliente, abra a pasta Pack e dentro dele , procure o arquivo icon.eix e icon.epk e descompacte-o (ver tutorial do Origin caso não saiba descompactar arquivos Eix e Epk [ se me permite postar ] http://cyber-gamers....ctador-eix-epk/ )
    - Depois de descompactado entre na pasta icon / item e jogue todos os icons das suas armaduras que queira implementar.
    - Após fazer este passo, compacte e jogue no seu cliente.
    -->Modelos e texturas:
    - No seu cliente, abra a pasta Pack e dentro dele , procure o arquivo item.eix e item.epk e descompacte-o
    - Depois de descompactado entre na pasta ymir work/item/weapon e jogar as texturas e os modelos pra lá
    - Após fazer este passo, compacte e jogue no seu cliente.
    --> Item Proto , sao nada mais que a leitura dos itens para isso veja como fazer abaixo:
    - no seu cliente , abra a pasta Pack e dentro dele , procure o arquivo locale_de.eix e locale_de.epk e descompacte-o ( a parte do _de vai depender de cada cliente , pode ser _br _it , etc)
    - Depois de descompactado, procure um arquivo chamado Item Proto e descompacte este arquivo (não é como descompactar os arquivos eix e epk, para isso usa este programa aqui >> http://www.mediafire...d2o2abj888d245b << )
    PS: O programa não é dificil entender , mas caso precise de alguma ajuda, peça por PM aqui na Cyber mesmo , ou via Skype adicionado ao meu perfil
    - Após o item proto descompactado, adicionar os nomes ao item proto ( geralmente os autores dos itens já deixam pronto para adicionar, copie e cole e pronto, mas caso nao tenha , existe software que cria esses itens proto , o que agora nao tenho para download )
    Veja um modelo do item proto (varia de cada item)

    <Item vnum="19" name="'µµ+9'" gb2312name=" Espada+9" type="1" subtype="0" weight="0" size="2" antiflag="32" flag="1" wearflag="16" immuneflag="0" gold="100" buy_price="750" limittype0="1" limitvalue0="0" limittype1="0" limitvalue1="0" applytype0="7" applyvalue0="22" applytype1="0" applyvalue1="0" applytype2="0" applyvalue2="0" value0="0" value1="15" value2="19" value3="13" value4="15" value5="63" socket0="0" socket1="64992" socket2="127" socket3="64976" socket4="21631" socket5="4855" refine_vnum="0" refine_set="0" magic_pct="15" specular="100" socket_pct="1" /> - agora, nesta mesma pasta onde encontrou o Item proto ( locale eix e epk descompactado ) , localize o arquivo item_list.txt , e lá coloque o diretorio do Icone, um exemplo que eu peguei do meu servidor: Esclarescendo:
    29110 e é o numero que segue na sequencia do anterior, no qual 29109 vinha anteriormente
    Weapon , é o tipo do item (acho que seja apenas para entendimento , mas sempre é bom especificar em inglês)
    icon/item/11000.tga , é o diretorio, no qual tem que esta no formato Pasta primaria (Icon) , pasta secundaria (item) , nome do icone (ex:11000) e a extensão dele ( .tga )
    Geralmente os autores dos itens já facilitam e deixam ja prontos para adicionar, mas caso nao esteja faça como base o meu modelo acima.
    -> Para o ServerFiles:
    Ir no navicat, logar no seu servidor, entrar na aba player / queries , e clicar em New Query , colocar sua query la e apertar em Run e fechar (caso queira deixar visivel este query para futuramente modificar, aperte em Save As e coloque um nome que você saiba identificar o que é e logo que toda vez que entrar na aba queries, vai estar la para editar)
    se caso não saiba criar queries, baixe este programa criado pelo BiffJunior e upado para um novo host por mim http://www.mediafire...rnvp4qw01n515ng , la é só pegar seu item proto (do seu item que quer adicionar), colocar na janela de cima , clicar para converter, e por fim, copiar o que ele gerou, (mas geralmente vem com query, mas sempre tem uma excessão, rs)
    Imagem abaixo:
    Um modelo de query para que não se confundam ( cada query tem seu status , portanto toma-se isto como exemplo ) :

    INSERT INTO player.item_proto VALUES (3230, 'Espada do Valenza+0', 'Espada do Valenza+0', 1, 0, 0, 2, 32, 1, 16, 0, 10000, 10000, 3231, 0, 0, 15, 1, 85, 0, 0, 7, 10, 9, 10, 3, 2, 0, 280, 310, 400, 450, 22, -1, -1, -1, -1, -1, -1, 0, 3, -1);INSERT INTO player.item_proto VALUES (3231, 'Espada d oValenza+1', 'Espada do Valenza+1', 1, 0, 0, 2, 32, 1, 16, 0, 10000, 10000, 3232, 0, 0, 15, 1, 85, 0, 0, 7, 12, 9, 12, 3, 4, 0, 280, 310, 400, 450, 34, -1, -1, -1, -1, -1, -1, 0, 3, -1);INSERT INTO player.item_proto VALUES (3232, 'Espada doValenza+2', 'Espada do Valenza+2', 1, 0, 0, 2, 32, 1, 16, 0, 10000, 10000, 3233, 0, 0, 15, 1, 86, 0, 0, 7, 13, 9, 13, 3, 6, 0, 280, 310, 400, 450, 46, -1, -1, -1, -1, -1, -1, 0, 3, -1);INSERT INTO player.item_proto VALUES (3233, 'Espada do Valenza+3', 'Espada doValenza+3', 1, 0, 0, 2, 32, 1, 16, 0, 10000, 10000, 3234, 0, 0, 15, 1, 86, 0, 0, 7, 14, 9, 14, 3, 8, 0, 280, 310, 400, 450, 58, -1, -1, -1, -1, -1, -1, 0, 3, -1);INSERT INTO player.item_proto VALUES (3234, 'Espada do Valenza+4', 'Espada do Valenza+4', 1, 0, 0, 2, 32, 1, 16, 0, 10000, 10000, 3235, 0, 0, 15, 1, 87, 0, 0, 7, 16, 9, 16, 3, 10, 0, 280, 310, 400, 450, 60, -1, -1, -1, -1, -1, -1, 0, 3, -1);INSERT INTO player.item_proto VALUES (3235, 'Espada do Valenza+5', 'Espada do Valenza+5', 1, 0, 0, 2, 32, 1, 16, 0, 10000, 10000, 3236, 0, 0, 15, 1, 87, 0, 0, 7, 17, 9, 17, 3, 12, 0, 280, 310, 400, 450, 82, -1, -1, -1, -1, -1, -1, 0, 3, -1);INSERT INTO player.item_proto VALUES (3236, 'Espada do Valenza+6', 'Espada do Valenza+6', 1, 0, 0, 2, 32, 1, 16, 0, 10000, 10000, 3237, 0, 0, 15, 1, 88, 0, 0, 7, 18, 9, 18, 3, 14, 0, 280, 310, 400, 450, 94, -1, -1, -1, -1, -1, -1, 0, 3, -1);INSERT INTO player.item_proto VALUES (3237, 'Espada do Valenza+7', 'Espada do Valenza+7', 1, 0, 0, 2, 32, 1, 16, 0, 10000, 10000, 3238, 0, 0, 15, 1, 88, 0, 0, 7, 20, 9, 20, 3, 16, 0, 280, 310, 400, 450, 106, -1, -1, -1, -1, -1, -1, 0, 3, -1);INSERT INTO player.item_proto VALUES (3238, 'Espada do Valenza+8', 'Espada da Valenza+8', 1, 0, 0, 2, 32, 1, 16, 0, 10000, 10000, 3239, 0, 0, 15, 1, 88, 0, 0, 7, 22, 9, 22, 3, 18, 0, 280, 310, 400, 450, 118, -1, -1, -1, -1, -1, -1, 0, 3, -1);INSERT INTO player.item_proto VALUES (3239, 'Espada do Valenza+9', 'Espada do Valenza+9', 1, 0, 0, 2, 32, 1, 16, 0, 10000, 10000, 0, 0, 0, 15, 1, 89, 0, 0, 7, 25, 9, 25, 3, 20, 0, 280, 310, 400, 450, 130, -1, -1, -1, -1, -1, -1, 0, 3, -1); e pronto, dê reboot e testem , o fim disto tudo é claro, muita perfeição e beleza! vejam um video de como que fica (não é tutorial de como implementar mas o resultado)

    http-~~-//www.youtube.com/watch?v=A_0i031LgIQ&feature=player_embedded
    Acho que não falta mais nada http://cyber-gamers.org/public/style_emoticons/default/laugh.png
    Créditos Valenza
    Cumprimentos,
  23. Upvote
    Scooter reacted to ƤāƱŁѲ ƒēƦƦēƗƦā in [*Hot*]Server Files Oldschool!   
    Bem, encontrei estas files e decidi postar, até porque são boas e 100% oldschool!
    Bem comecemos!
    Imagens set inicial:
    Imagens Lojas:
    Transmutações!
    Upar Aços Azuis de +6 até +9!
    Transmutações de armas:
    Itens de Azurite:
    Sapatos:
    Drops dos Bosses:
    Quest's das catacumbas:

    Como instalar as server files:
    1º Fazer download disto: http://www.mediafire...bswudxy71y6jso7 e disto: http://www.mediafire...37g95k560b3x21i
    2º Colocar as Files.tar.gz na directoria /usr;
    3º Colocar o Mysql.tar.gz na directoria /var/db;
    4º Escrever na máquina virtual isto:

    cd /usr
    rm -rf game
    cd /var/db
    rm -rf mysql
    cd /usr
    tar zxvf Files.tar.gz
    cd /var/db
    tar zxvf Mysql.tar.gz
    reboot
    5º Ligar o server, fazer login com a conta root e a pass; 6ª Para ligar o servidor escrevem:

    cd /usr/game
    sh baslat.sh
    Não costuma dar Operation Time Out, se der só dá 1 vez. PS: As server files contêm 2 CH's operacionais.
    PS2: Peço desculpa pelas imagens que não se vir não dava para colocar mais xD, carreguem no link! :)
    Ajudei? Agradeçam. :)
    Cumprimentos.
  24. Upvote
    Scooter reacted to portmap in Quest Duelpoints By Portmap Y Keko!   
    Hola amigos escribo en español por que no se portugues espero que me entiendan hoy les traigo esta quest que ise con keko de metin2zone que la disfruten!
    quest sist beginstate start begin when kill with npc.is_pc() and pc.level >= 1 and pc.level < 250 and npc.get_empire() ~= pc.get_empire() begin local ciao = pc . getqf ( "DuelPoint" ) pc . setqf ( "DuelPoint" , pc . getqf ( "DuelPoint" ) + 1 ) chat("Ha ganado un duel point!") chat("Ahora usted tiene " .. ciao.. " DuelPoint") chat("Usted debe alcanzar el 10 DuelPoint para elegir los premios ") end when 20094.chat."Canjear DuelPoints" begin say_title("Canjeador de puntos") say("") say("Hola jugador, si tienes duel points") say("aqui puedes canjearlos") say("por items.") say("") say_reward("Obten tus premios") local s = select ("Canjear" , "Ahora no") if s == 1 then if pc.getqf ("DuelPoint") >= 10 then say_title ("DuelPoint") local newton = select ("Cofre orco", "Annulla") if newton == 1 then pc . setqf ( "DuelPoint" , pc . getqf ( "DuelPoint" ) - 15 ) say ("Cofre orco") pc . give_item2 ( "50070" , 1 ) return end end elseif s == 2 then return end endendendahora explicare por si la quieren acomodar: pc . setqf ( "DuelPoint" , pc . getqf ( "DuelPoint" ) + 1 )esto marca que da 1 punto a matar un personaje. when kill with npc.is_pc() and pc.level >= 1 and pc.level < 250 and npc.get_empire() ~= pc.get_empire()esto nos dice que la quest vale solo con personajes de lvl 1 asta el 250. when 20094.chat."Canjear DuelPoints" beginesto nos marca que aparece en la npc 20094. local newton = select ("Cofre orco", "Annulla") if newton == 1 then pc . setqf ( "DuelPoint" , pc . getqf ( "DuelPoint" ) - 15 ) say ("Cofre orco") pc . give_item2 ( "50070" , 1 ) returnesto nos marca el premio para agregar mas tienen que seguir como esta eso.Bueno espero que la disfruten!
  25. Upvote
    Scooter reacted to portmap in Inicio Por Pergamino By Portmap   
    Hola hoy les traigo esta quest que lo que hace es no trabarte cuando inicias a jugar!
    ------------------------------------------------ Quest creada por santy-- para http://area-player.net----------------------------------------------quest portmap beginstate start begin when login with pc.get_level() == 1 begin set_state(info) endendstate info begin when letter begin send_letter("equipo de inicio") end when button or info begin say_title("Bienvenido") pc . give_exp2 ( ) set_quest_state ( "levelup" , "run" ) pc . change_money ( 10000 ) pc . give_item2 ( "27003" , 200 ) pc . give_item2 ( "27003" , 200 ) pc . give_item2 ( "27003" , 200 ) pc . give_item2 ( "27003" , 200 ) pc . give_item2 ( "27003" , 200 ) pc . give_item2 ( "27006" , 200 ) pc . give_item2 ( "27006" , 200 ) pc . give_item2 ( "71050" , 200 ) pc . give_item2 ( "72702" , 1 ) pc . give_item2 ( "50051" , 1 ) pc . give_item2 ( "72701" , 1 ) say ( "Recibes level 1." ) say ( "Recibes 10000 yang." ) say ( "Recibes 1000 Pociones Rojas(G)." ) say ( "Recibes 400 Pociones Azules(G)." ) say ( "Recibes Equipo basico." ) say ( "Recibes varios cabos valor" ) say ( "Recibes zapatos de velocidad" ) if pc . job == 0 then pc . give_item2 ( "19" , 1 ) pc . give_item2 ( "3009" , 1 ) pc . give_item2 ( "11209" , 1 ) pc . give_item2 ( "12209" , 1 ) pc . give_item2 ( "13009" , 1 ) pc . give_item2 ( "14009" , 1 ) pc . give_item2 ( "15009" , 1 ) pc . give_item2 ( "16009" , 1 ) pc . give_item2 ( "17009" , 1 ) say_reward ( "Has Recibido Set de Guerrero!" ) elseif pc . job == 1 then pc . give_item2 ( "1009" , 1 ) pc . give_item2 ( "19" , 1 ) pc . give_item2 ( "2009" , 1 ) pc . give_item2 ( "8009" , 200 ) pc . give_item2 ( "8009" , 200 ) pc . give_item2 ( "8009" , 200 ) pc . give_item2 ( "8009" , 200 ) pc . give_item2 ( "11409" , 1 ) pc . give_item2 ( "12349" , 1 ) pc . give_item2 ( "13009" , 1 ) pc . give_item2 ( "14009" , 1 ) pc . give_item2 ( "15009" , 1 ) pc . give_item2 ( "16009" , 1 ) pc . give_item2 ( "17009" , 1 ) say_reward ( "Has Recibido Set de Ninja!" ) elseif pc . job == 2 then pc . give_item2 ( "19" , 1 ) pc . give_item2 ( "11609" , 1 ) pc . give_item2 ( "12489" , 1 ) pc . give_item2 ( "13009" , 1 ) pc . give_item2 ( "14009" , 1 ) pc . give_item2 ( "15009" , 1 ) pc . give_item2 ( "16009" , 1 ) pc . give_item2 ( "17009" , 1 ) say_reward ( "Has Recibido Set de Sura!" ) elseif pc . job == 3 then pc . give_item2 ( "5009" , 1 ) pc . give_item2 ( "7009" , 1 ) pc . give_item2 ( "11809" , 1 ) pc . give_item2 ( "12629" , 1 ) pc . give_item2 ( "13009" , 1 ) pc . give_item2 ( "14009" , 1 ) pc . give_item2 ( "15009" , 1 ) pc . give_item2 ( "16009" , 1 ) pc . give_item2 ( "17009" , 1 ) say_reward ( "Has Recibido Set de Chaman!" ) end end end state __COMPLETE__ begin when enter begin q.done() end endendcreditos yo santy=portmap http://cyber-gamers.org/public/style_emoticons/default/451960.gif