Ir para conteúdo
Entre para seguir isso  
virtualmaster

[7.6]Colocando fast atk em um servidor

Recommended Posts

virtualmaster    0
virtualmaster

Esta é uma questão muito frequente aqui no fórum da OtServNetworks. Estou aqui para tentar passar um pouco de conhecimento para vocês, visto que não existe tutorial sobre isso no forum.

 

[I. Apresentação]

É essencialmente necessario primeiro de tudo, saber quando utilizaremos a técnica que ensinarei a seguir. Para isso, basta sabermos se seu servidor 7.6 suporta Fast Attack.

 

Abra o arquivo config.lua de seu servidor, procure por speed.

Caso encontre alguma coisa : ), meus parabéns, seu servidor suporta Fast Attack, deve estar aparecendo assim:

 

[b]speed[/b] = {"3", "0.9 ", "0.9", "0.7", "0.4"}

Porém, muitos dos servidores suportantes desta "tecnologia" não são muito confiaveis, tem muitos bugs ou caem muito. Então qual é a ideia do tutorial? utilizar um servidor estavel como o Neverland 4.0 ou o YurOts 0.94d e adapta-lo para suportar o Fast ATK.

 

[I. Iniciando]

Você pode fazer isso com qualquer servidor 7.6, desde que você possua seus sources.

 

Vá a pasta onde se localizam as sources de seu otserver.

Abra o arquivo luascript.H <~ .H [ponto aga] cuidado abrir o arquivo errado

 

Desça um pouco a barra de rolagem no arquivo até encontrar algo parecido com isso:

 

[b]class[/b] LuaScript
{
[b]public:[/b]
   LuaScript();
   ~LuaScript();

Acrescente logo abaixo deste código o seguinte trecho:

 

[b]double[/b] NOVOC_SPEED;
   [b]double[/b] SORC_SPEED;
   [b]double[/b] DRUID_SPEED;
   [b]double[/b] PALLY_SPEED;
   [b]double [/b]KNIGHT_SPEED;

Exatamente para quê fizemos isso? =X

Pelo simples e unico motivo que, toda a propriedade no config.lua deve ser declarada no luascript.h para que quando o otserver for ligado essas informações do config.lua fiquem armazenadas na memória ram. Toda a propriedade do config.lua desde maxplayers até expmul esta declarada em luascript.cpp .

Isso é necessario sim, pois como eu já disse ao carregar o server as configurações precisam ser armazenadas na memória RAM, e para tanto precisamos "reservar" um espaço para elas.

 

 

Devemos ter em mente que, não basta apenas "reservar" um espaço para as configurações que implementaremos, precisamos também "captura-las" do config.lua como também é feito com as outras propriedades (expmul,serversave,antiafk,motd,loginmsg,etc...)

Para tanto abra o arquivo luascript.CPP <~ .CPP EHIN! PELO AMOR DE DEUS VAI ERRAR ISSO NÃO ~>

 

Com o arquivo aberto, desça um pouco com a barra de rolagem até encontrar:

 

[b]int[/b] LuaScript::OpenFile([b]const char[/b] *filename)
{
   luaState = lua_open();

   [b]if[/b] (lua_dofile(luaState, filename))
       [b]return false[/b];

Exatamente após este trecho de código acima, adicione:

NOVOC_SPEED = atof(getGlobalStringField("speed", 1, "2.0").c_str());
   SORC_SPEED = atof(getGlobalStringField("speed", 2, "2.0").c_str());
   DRUID_SPEED = atof(getGlobalStringField("speed", 3, "2.0").c_str());
   PALLY_SPEED = atof(getGlobalStringField("speed", 4, "2.0").c_str());
   KNIGHT_SPEED = atof(getGlobalStringField("speed", 5, "2.0").c_str());

Este código é o responsavel por capturar cada propriedade do fast atk, a velocidade para no-vocation , sorcerer , druid , paladin e knight .

 

Concluidos os passos acima, podemos passar para a função fast atk em si.

[II. Fast Attack em Si]

Abra o arquivo Game.cpp.

 

Procure por:

creature->eventCheckAttacking = addEvent

Você deve ter encontrado algo assim:

    creature->eventCheckAttacking = addEvent(makeTask([color=Red]2000[/color], std::bind2nd(std::mem_fun(&Game::checkCreatureAttacking), id)));

Este é o código responsavél pelo ataque (de armas, crossbows/bows, rods/wands) do server. O número 2000 indica a velocidade do ataque (pode ser que o server que você esta usando não seja especialmente 2000) em milisegundos, 2000 = 2segundos. Para um fast atk o ideal seria uns 550.

 

Porém, como nós queremos fazer uma coisa muito bem feita, não deixaremos a mesma velocidade para todas as vocações.

Como ja explicado no inicio do tutorial, em nosso config.lua será adicionada uma linha semelhante a outros servidores:

[b]speed[/b] = {"3", "0.9 ", "0.9", "0.7", "0.4"}

Faremos então somente a seguinte verificação:

Se vocação = 0 use a velocidade de no-vocation definida no config.lua

Se vocação = 1 use a velocidade de sorcerer definida no config.lua

Se vocação = 2 use a velocidade de druid definida no config.lua

Se vocação = 3 use a velocidade de paladin definida no config.lua

Se vocação = 4 use a velocidade de knight definida no config.lua

 

Para tanto selecione o código:

    creature->eventCheckAttacking = addEvent(makeTask(2000, std::bind2nd(std::mem_fun(&Game::checkCreatureAttacking), id)));

E em seu lugar cole:

Player* player = dynamic_cast<Player*>(creature);
                   if (player->vocation == 0) {
                                        int speed = int(g_config.NOVOC_SPEED * 1000);
                                        creature->eventCheckAttacking = addEvent(makeTask(speed, std::bind2nd(std::mem_fun(&Game::checkCreatureAttacking), id)));
                                        }
                   else if (player->vocation == 1) {
                                        int speed = int(g_config.SORC_SPEED * 1000);
                                        creature->eventCheckAttacking = addEvent(makeTask(speed, std::bind2nd(std::mem_fun(&Game::checkCreatureAttacking), id)));
                                        }
                   else if (player->vocation == 2) {
                                        int speed = int(g_config.DRUID_SPEED * 1000);
                                        creature->eventCheckAttacking = addEvent(makeTask(speed, std::bind2nd(std::mem_fun(&Game::checkCreatureAttacking), id)));
                                        }
                   else if (player->vocation == 3) {
                                        int speed = int(g_config.PALLY_SPEED * 1000);
                                        creature->eventCheckAttacking = addEvent(makeTask(speed, std::bind2nd(std::mem_fun(&Game::checkCreatureAttacking), id)));
                                        }
                   else if (player->vocation == 4) {
                                        int speed = int(g_config.KNIGHT_SPEED * 1000);
                                        creature->eventCheckAttacking = addEvent(makeTask(speed, std::bind2nd(std::mem_fun(&Game::checkCreatureAttacking), id)));
                                        }
                   else { //change the 2000 to whatever you want; 2000 = 2 seconds per attack
                                        creature->eventCheckAttacking = addEvent(makeTask(3000, std::bind2nd(std::mem_fun(&Game::checkCreatureAttacking), id)));
                                        }

[III. Compilando seu código (7.6)]

Aqui na otservNetworks existem varios tutoriais de compilação, mas nenhum perfeito para especificamente o 7.6... Quando fui testar meus códigos tive que adaptar bastante coisa e procurar outros tutoriais, inclusive em inglês...

Então, para que você não passe nenhum aperto como eu passei, agora vou dar uma explicada rapida sobre como compilar um yurots 0.94d (que foi o que eu usei, e sinceramente, ficou demais =D)

 

 

Primeiro baixe o dev c++, será nosso compilador

http://www.bloodshed.net/dev/devcpp.html

 

Instale-o normalmente

 

Abra em uma nova janela o link abaixo:

http://forums.otserv.com.br/showthread.php?t=3893

 

É um tutorial daqui mesmo que podemos aproveitar bastante coisa.

O link que passei acima (o do tutorial), primeiramente tem as libs necessarias para download no capitulo 2.2

Depois de baixar todas as libs, va a pagina do tutorial que eu pedi para abrir, va até o capitulo 4.2 e veja como você pode instala-las.

 

Depois siga o passo 4.4.

Voce pode notar na hora que o tutorial pede para adicionar as sources, que existem alguns arquivos que ele pede para que não adicione. Nem se preocupe em ficar procurando os arquivos que se pede, procure apenas não adicionar os arquivos database.cpp / database.h porque aquele tutorial se refere a compilar um servidor mais novo, e o 7.6 não tem aqueles arquivos então RELAXE! apenas nao adicione database.cpp e database.h

 

Terminado de cumprir o passo 4.4 do tutorial, volte a Opçoes de projeto, na aba parametros, em Compilador C++ ou C++ compiler você colocou:

[size=2]-D__WINDOWS__[/size]
[size=2]-D__EXCEPTION_TRACER__[/size]
[size=2]-D__SKULLSYSTEM__[/size]

Por favor, delete tudo isso! isso esta errado, não é possivel compilar um 7.6 assim. Vá a sua pasta sources e procure por um arquivo chamado !compiling.txt ou c++ compiler.txt (na maioria das vezes é !compiling) lá estão os parametros corretos para colocar na caixa de texto compilador c++.

Feito isso, dê um ok, e compile seu server!

 

Espero ter ajudado com meu tutorial!

Compartilhar este post


Link para o post
Marcin    1
Marcin

Tutorial aprovado.

 

Movido

 

Obrigado ;)

 

Até.

Compartilhar este post


Link para o post
Zehzinhoh    0
Zehzinhoh

Ta meio complicado de fazer, mas ta bom o tutorial, ta ajudando muito!

Compartilhar este post


Link para o post
GekO    0
GekO

Realmente complicado, porém muito bom tutorial (aprovado_)

Compartilhar este post


Link para o post
savity    1
savity

Complicadinho mesmo ashuash

Irá ajudar muito a quem intender.

Parabéns.

Compartilhar este post


Link para o post
Mithees    0
Mithees

Ae gostei vlws :D

:bye:

Compartilhar este post


Link para o post
Mithees    0
Mithees

Depois se tiver como poderia me manda um e-mail me ensinando como corrigirr bugs de clonar e como cria npc ?vlwws

(Y)

Compartilhar este post


Link para o post
GM_Elnight    0
GM_Elnight

muito bom esse tutorial... apesar que eu pensava que nen tinha mais 7,6 on hsausahus

apesar de ser a melhor versão na minha opnião.....

Compartilhar este post


Link para o post
skyline3005    0
skyline3005

Bom, mas a maioria dos servers voce configura isso nas vocations.xml

Compartilhar este post


Link para o post
virtualmaster    0
virtualmaster
Bom, mas a maioria dos servers voce configura isso nas vocations.xml

 

skyline3005 caso seja inexperiente, não precisa se expressar, precisa primeiro pesquisar e aprender que em 7.6 não existe VOCATIONS.XML

 

CyA

Compartilhar este post


Link para o post
Homer_Simpson    0
Homer_Simpson

e tnussa mais esse tipo de progamaçao tb funciona no 8.1 ou so no 7.6?????

Compartilhar este post


Link para o post
virtualmaster    0
virtualmaster
e tnussa mais esse tipo de progamaçao tb funciona no 8.1 ou so no 7.6?????

 

só no 7.6, porque com 8.0 + (eu acho, não sei si 7.9 ja tem) da pra editar a velocidade do atk pelo vocations.xml

Compartilhar este post


Link para o post
Mayara    0
Mayara

tah legal

Compartilhar este post


Link para o post
Tagner    0
Tagner

Meio antiga essa texcnica

Compartilhar este post


Link para o post
grigor    0
grigor

Obrigado Pela Ajuda !

Compartilhar este post


Link para o post
Thiagobobloko    0
Thiagobobloko

Ridculo kkk

Vocations.xml em 7.6 -.-

 

Tutorial MUITO confuso porque ele da o tutorial de compilar o bagui e depois fala que ta tudo errado que é pra deleta realmente não entendi nada.

espero que eu esteja errado, em si tutorial aprovado muito bom.

 

Eu to com um bug no otservlist adicionei meu ot (7.6) la e tal mais aparece que ta offline e nem aparece na lista quem puder me ajudar http://forums.otserv.com.br/showthread.php?p=509926#post509926

posta ai no topico que eu criei

agradeço

Compartilhar este post


Link para o post
yuri135    0
yuri135

Mtu Bom MAs meu NeverLand 4.0 N possui as Sources.Mas Vlws Msm Assim.

Compartilhar este post


Link para o post
netfear    0
netfear

~kra me ajuda pq sempre da erro nos arquivos com o seguinte erro:

erro: openlua_loadlib

erro: lua_loadlib algumas coisa assim

pow to tentando ja vi em todos os tipos de sites possivel e nao consegui alguem pode me ajudar

[email protected]

nun consigo :/

fikaria muito feliz se alguiem me ajudasse :yes:

Compartilhar este post


Link para o post
virtualmaster    0
virtualmaster
~kra me ajuda pq sempre da erro nos arquivos com o seguinte erro:

erro: openlua_loadlib

erro: lua_loadlib algumas coisa assim

pow to tentando ja vi em todos os tipos de sites possivel e nao consegui alguem pode me ajudar

[email protected]

nun consigo :/

fikaria muito feliz se alguiem me ajudasse :yes:

 

primeiro precisa verificar se vc baixou e instalou corretamentes as libs"!

Compartilhar este post


Link para o post
xXGriloXx    0
xXGriloXx

bom tutorial...pena que eu não jogo 7.6 faz teeeeeeeeeemmpoooooo...

 

mas vlw

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×