Como me perguntaram como se alterava as rates no metin sem usar o codigo giv_empire, eu decidi criar este tópico.
Como alterar rates:
1º Vão ao Navicat, e seleccionam na pasta player, o mob_proto.txt;
2º cliquem em "Query Table";
3º Depois de estarem numa espécie de console, colocam estes comandos:
UPDATE player.mob_proto SET exp = exp * 10;UPDATE player.mob_proto SET min_gold = min_gold *2; UPDATE player.mob_proto SET max_gold=max_gold*3;
4º Verificam se na tabela, o numero da exp e o yang está mais alto.
5º Reiniciam o Server e pronto!
Se tudo correr bem, aumentaram as rates corretamente! :D
As files foram tornadas públicas pelo SZC, então os créditos são totalmente dele.
Apenas foram colocadas em FreeBSD 9.3 e Mysql 5.6. E não tem erros a correr as servefiles. ( o que é diferente de bugs nas serverfiles, que obviamente, terão alguns!)
As serverfiles encontram-se em cd /usr/game. Então os comandos de start serão:
- cd /usr/game
- sh start.sh
Ou se quiserem com vrunner (sistema responsável por reiniciar um core, caso o mesmo vá abaixo)
- cd /usr/game
- sh run.sh
Este é o método sugerido!
Características relevantes:
- Costumes (armas incluídas)
- Lojas Offline (acredito que seja o sistema do ken publico, e por isso tem alguns bugs mínimos e visuais, funciona razoavelmente)
- Bloquear o Karma (permite defenir no ficheiro "CONFIG" o mapa x, para os jogadores não poderem perder ou ganhar karma)
- Bloquear certos Itens (mediante um .txt pré-configurado impede certos itens de ser usados)
- Bloquear Reinos (permite bloquear a criação de personagens no reino X, para evitar o excesso de população em algum reino)
Comandos: /disable 1, 2 ou 3 (consoante o reino pretendido) e /enable 1,2 ou 3 (consoante o reino pretendido)
- Ver todos as personagens registadas no reino X
Comandos: /total 1,2 ou 3 (consoante o reino pretendido)
- 3 Inventários
- Menu de inventários com os sistemas básicos (Ver print em baixo)
- Sistema de transmutações configurável (Tem até às últimas armas, armaduras e acessórios do oficial)
- Guerra de reinos, evento de bosses e evento de metins automático (mediante configuração)
- Trade duel V2 (Não testei, mas segundo consta, é um sistema de aposta em duelos)
- Sistema de penteados (embutidos na criação do personagem)
- Xploits conhecidos corrigidos
- Sistema Vrunner (para evitar que um canal fique off, reiniciando-o automaticamente)
- Algumas funções de Mysql adicionadas à source para maior fluidez
- Sistema de Md´s no inventário 100% C++
- E as outras coisas normais que devem funcionar num servidor normal (PET´S, Montadas, Cintos, Mapas do Beta, etc...)
Screenshots:
Dados do VDI
ID: root
PW: catarina
Dados do MYSQL
ID: root
PW: Vla%Lord%v1
(Esta password não foi mudada porque isso implicaria mudar a password em todos os CONFIG's para o servidor correr sem dar erros)
Dados da conta GM:
ID: vladcristian
PW: catarina
NOTA: Não vou andar a corrigir bugs ou a ajudar a instalar a files. Já postei em .vdi para ser só montar a máquina e ser acessível a todos.
Quem gostar das files e achar que vale a pena investir tempo, tem a respetiva source também no DOWNLOAD, para corrigir possíveis erros/bugs.
É necessário correr a máquina com 3/4G de memória RAM, para o FreeBSD não dar problemas, pelo que sistemas de 32bits estão logo excluídos!
Ficheiro .TXT com os links de donwload:
DONWLOAD
Caso tenha sido útil, um reputação up ou agracimento. Qualquer dúvida que possa ajudar, comentários.
Cumprimentos,
Val3rio
Está aqui o reupload de Serverfiles aleatórias que já estiveram / estão na Cyber-Gamers.
Apenas descompactei e comprimi novamente com uma compressão mais eficiente para que ficassem mais pequenas, não foram editadas de qualquer forma. Algumas estão dentro de um .vdi, outras não.
Não me perguntem coisas relacionadas às Serverfiles porque não faço a menor ideia. Apenas estou a libertar espaço no meu disco.
Algum tempo atrás, eu havia criado um tópico na Cyber para passar um método de inserir bots no MT2-GO, porém eu não passava o método para todos pois não queria que bloqueassem o mesmo ( de qualquer forma, ainda funciona também ). Porém, hoje venho postar alguns arquivos que basta inserir na pasta do GO e já não vão precisar fazer mais nada.
Quais bots foram inseridos? m2k-Mod - PServer Version
Screenshot - Prova
Download
Senha do Arquivo - +1 No Tópico
Como usar?
1. Mova os arquivos "root.eix" e "root.epk" para a pasta pack e troque-os pelos originais.
2. Mova a pasta "m2kmod" para a pasta principal do jogo.
3. Abra o jogo e entre com seu personagem para o bot aparecer.
4. Be Happy!
Importante: faça todo o processo e lembre-se que você deve fechar todas abas de navegador que falem de bots, cheats, hacks e etc. Se você não fechar, o ant-cheat fechará o jogo, mas isso é normal, mesmo que você não tenha mudado nada na pasta do mesmo. Exemplo: se tentar abrir o jogo com este tópico aberto, o ant-cheat vai fechar o jogo.
VirusTotal
Não esqueçam de agradecer, pois ainda demorei um pouco para fazer umas mudanças necessárias no m2k-Mod original, isso visto que o bot normal gerava alguns erros pela forma em que foi inserido no jogo.
***URGENTE*** - Procura-se Professor Dedicado para Ensinar Aluno Deficiente
Teste Diagnóstico:
[18:16] ⇨⋆▀▄▀JØИИЧČ▀▄▀⋆⇦: How you about?
[18:19] ⇨⋆▀▄▀JØИИЧČ▀▄▀⋆⇦: How you about, please you need a classes urgently
[18:20] ⇨⋆▀▄▀JØИИЧČ▀▄▀⋆⇦: Yes Sure, you brother it's scared from the classes.
[18:21] ⇨⋆▀▄▀JØИИЧČ▀▄▀⋆⇦: Pérolas, WHAT you About!!!!!!!!!!!!
[18:21] ⇨⋆▀▄▀JØИИЧČ▀▄▀⋆⇦: i Dont KNOW
[18:21] ⇨⋆▀▄▀JØИИЧČ▀▄▀⋆⇦: yes sure
[18:22] ⇨⋆▀▄▀JØИИЧČ▀▄▀⋆⇦: what you about?
[18:22] ⇨⋆▀▄▀JØИИЧČ▀▄▀⋆⇦: a need a razon.
[18:22] ⇨⋆▀▄▀JØИИЧČ▀▄▀⋆⇦: my english is bad, my brother is a love gay's
[18:23] ⇨⋆▀▄▀JØИИЧČ▀▄▀⋆⇦: Hum, you like a job?
[18:26] ⇨⋆▀▄▀JØИИЧČ▀▄▀⋆⇦: noooooooooooooooooooooo pleasee look's my suck's balls
Quem poder ajudar que avise o mais rápido possível. Obrigado desde já.
TuT
.Apagam a pasta HShield
.Copiam tudo prá pasta
Obrigado ao João por ter filmado...
BTW, eu adicionei no .rar o ClientStarter (metin2client2.exe) só porque como vi que eles tiveram tanto trabalho a esconde-lo, achei engraçado posta-lo '-'. Se abrirem normalmente também dá.
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:
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 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:
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.
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:
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
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.
Olá pessoal.Bom a pedido de muitos membros que estão a usar as serverfiles que eu criei em 15 dias fiz a quest que dar itens para os jogadores quando eles logarem pela primeira vez no servidor.Crie um arquivo de texto com o nome premium_overgame e a extensão .quest e depois cole o codigo abaixo:
quest premium_overgame begin state start begin when login or levelup with pc.get_level() == 1 begin set_state(bem_vindo_premio) end end state bem_vindo_premio begin when letter begin send_letter("Bem-vindo ao Overgame.") end when button or info begin say_title("Bem-vindo "..pc.name..".") say("") say("Olá, o administrador Rancoroso") say("deseja a você um bom jogo e que") say("você faça muitos amigos e amigas.") say("") say("Espero que você seja um jogado ou") say("jogadora de alto nível e faça seu") say("reino ser o mas forte de todos os") say("reinos.") say("") wait() say_title("Parabéns! "..pc.name..".") 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) if pc.job == 0 then say("") say("Equipamento para guerreiro.") say("") pc.give_item2(19, 1) pc.give_item2(3009, 1) pc.give_item2(11209, 1) pc.give_item2(12209, 1) set_state(premio_player) elseif pc.job == 1 then say("") say("Equipamento para ninja.") say("") pc.give_item2(1009, 1) pc.give_item2(11409, 1) pc.give_item2(12349, 1) set_state(premio_player) elseif pc.job == 2 then say("") say("Equipamento para shura.") say("") pc.give_item2(19, 1) pc.give_item2(11609, 1) pc.give_item2(12489, 1) set_state(premio_player) elseif pc.job == 3 then say("") say("Equipamento para shaman.") say("") pc.give_item2(5009, 1) pc.give_item2(7009, 1) pc.give_item2(11809, 1) pc.give_item2(12629, 1) set_state(premio_player) end end end state premio_player begin when letter begin send_letter("Presente Overgame.") end when button or info begin say_title("Boa sorte "..pc.name..".") say("") local nation = { "Shinsu","Chunjo","Jinno" } if pc.get_sex() == 0 then horse.set_level(21) horse.ride ( ) pc.give_item2(50053) pc.give_item2(50056, 200) pc.give_item2(72725, 5) pc.give_item2(72729, 5) pc.give_item2(50082, 1) pc.give_item2(70038, 200) pc.give_item2(71033, 1) pc.set_skill_level("124", "59") pc.set_skill_level("121", "59") pc.set_skill_level("129", "59") pc.set_skill_level("126", "59") pc.set_skill_level("127", "59") pc.set_skill_level("128", "59") pc.set_skill_level("122", "59") pc.set_skill_level("131", "10") pc.set_skill_level("137", "20") pc.set_skill_level("138", "20") pc.set_skill_level("139", "20") pc.set_skill_level("140", "20") notice_all("Jogador "..pc.name.." do reino "..nation[pc.getempire()].."") notice_all("Começou agora e está nível "..pc.level..".") clear_letter() set_state(complete) q.done() else horse.set_level(21) horse.ride ( ) pc.give_item2(50053) pc.give_item2(50056, 200) pc.give_item2(72725, 5) pc.give_item2(72729, 5) pc.give_item2(50082, 1) pc.give_item2(70038, 200) pc.give_item2(71033, 1) pc.set_skill_level("124", "59") pc.set_skill_level("121", "59") pc.set_skill_level("129", "59") pc.set_skill_level("126", "59") pc.set_skill_level("127", "59") pc.set_skill_level("128", "59") pc.set_skill_level("122", "59") pc.set_skill_level("131", "10") pc.set_skill_level("137", "20") pc.set_skill_level("138", "20") pc.set_skill_level("139", "20") pc.set_skill_level("140", "20") notice_all("Jogadora "..pc.name.." do reino "..nation[pc.getempire()].."") notice_all("Começou agora e está nível "..pc.level..".") clear_letter() set_state(complete) q.done() end end end state complete begin endendAgora so instalar a quest premium_overgame e ser feliz.Créditos: Rancoroso.
Como toda gente sabe e deve fazer aqueles trabalhos de seca que os prof´s manda fazer ... eu arranjei um modo de pelo menos terem mais 1 ou dois dias para o fazer
Então abrem o word ( quando estiver aberto digitam qualquer coisa neste caso nada a ver com o trabalho)
exemplo xD:
Depois disso guardam o trabalho
Já guardado clicam nele do lado direito do rato e metem abrir como Bloco de notas e abrem xD
Vai vos parecer algo do género disto
Depois seleccionam uma pequena parte deste texto e eliminam :D
Fecham e guardam e depois vão de volta ao trabalho no word clicam 2 vezes em cima como fosse para abrir
e *tambores * *tambores*
Vais vos aparecer isto
isto depois de enviar para o mail do sor e ele ao o tentar abrir vai lhe dizer isso ai n ve o trabalho xD Na conclusão tenham mais tempo para fazer o trabalho até ele vos dizer que n conseguiu abrir o trabalho que lhe mandaram xd
Espero que tenham gostado xd
P.s ( hoje ando com os "depois" xDD)
é no item proto do cliente, pois é lá que se descide se a arma é uma mao, duas maos etc... no navicat está certo porque está a equipar XD, nao lembro a coluna mas é onde escolhe se é arco, espada no item_proto do cliente XD
http://cyber-gamers.org/public/style_emoticons/default/268839.gif olha tu so ao fazeres shutdown ja iras fazer que as pessoas nao percam itens2º podes fazer uma quest de aviso que vais dar reboot em 10 minutos assim os jogadores nao reclamam se perdem itens ou nao3º na virtualbox normal que fica igual pois so deste shutdown a base de dados e ao login de jogo pra desligares tens de mandar rebootcumprimentos e espero que te tenha ajudado
olá, eu estava usando as files do rancoroso, que eu acho que a mainquest_lv1 era com o nome de overgame.bem_vindo... pois, fiz algumas merd#s e depois apaguei tudo para nao dar merd#....Agora queria saber como adicionar mainquest_lv1 do 0 pois quero colocar para ganhar itens ao logar pela 1ª vez...Por favor, tudo de passo a passo.Obrigado e http://cyber-gamers.org/public/style_emoticons/default/451960.gif pra quem me ajudar