Jump to content
Sign in to follow this  
virtualmaster

[7.6]Colocando fast atk em um servidor

Recommended Posts

fuinhamaligna    0
fuinhamaligna

Cara ta blz o tutorial mas meu neverland 4.0 n tem as sourcer e n consegui em lugar nenhum para baxar =S

Share this post


Link to post
Keys    0
Keys

Legal, eu sabia que tinha como por FA em 7.6 mas não sabia como.. ajudou bastante, mas prefiro pegar um 8.1+ que é bem mais pratico colocar fa...

 

@Keys~

Share this post


Link to post
kaijr    0
kaijr

OMG Prefiro o velho vocations.xml :S dos ot's novos :P

Share this post


Link to post
Monkey D. Luffy    0
Monkey D. Luffy

O GMP foi deletado, alguem poderia hospedar por gentileza? ;)

Share this post


Link to post
netfear    0
netfear

Kra se nao for pedir muito pelo amor de Tudo oq é mais sagrado eu quero compila na Base do Yurots 0.94D tem como me passa os links das libs todas que precisa eu baxo kra se fizer isso te do meus ot coins que tenho eu sei q é poko mais ajuda né xD

Share this post


Link to post
netfear    0
netfear
OMG Prefiro o velho vocations.xml :S dos ot's novos :P

é você prefere mais o meu pc é vei quer dizer a placa mae é muito ruim nao abre depois do 7.6

da erro no RSA-Key

:S

Dou Meus OTCoin Pra Quem me ensinar certinho como faço pra compila o Yurots 0.94d 7.6.

as Libs e Tudo Nescessario

Obrigado (:

Share this post


Link to post
Ruquan    2
Ruquan

naum intendi uyasduashd.... complicado uasdhasu

Share this post


Link to post
lehdarkangel    0
lehdarkangel
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
[size=2]{[/size]
[size=2][b]public:[/b][/size]
[size=2]   LuaScript();[/size]
[size=2]   ~LuaScript();[/size]

Acrescente logo abaixo deste código o seguinte trecho:

 

[b]double[/b] NOVOC_SPEED;
[size=2]   [b]double[/b] SORC_SPEED;[/size]
[size=2]   [b]double[/b] DRUID_SPEED;[/size]
[size=2]   [b]double[/b] PALLY_SPEED;[/size]
[size=2]   [b]double [/b]KNIGHT_SPEED;[/size]

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!

 

 

Em Game.H «~~ Declare... Abaixo de " void creatureTurn(Creature *creature, Direction dir); " sem as aspas.. para achar mais rapido precione CTRL+F.. abaixo disso adicione ~

 

" static double NOVOC_SPEED, SORC_SPEED, DRUID_SPEED, PALLY_SPEED, KNIGHT_SPEED; "

 

Use Rebuild All. Obrigado ~

Share this post


Link to post
magopoter    0
magopoter

muito bom

Share this post


Link to post
gustavoitalia    0
gustavoitalia

o Server Tem q ter esse Speedy (no conf.lua)..... ou não precisa ?

 

Valeu

Share this post


Link to post
xCanabiis    0
xCanabiis

Bem, legal mas não entendi a parte de compilar.

Share this post


Link to post
Vulcom    0
Vulcom

tbm naum

e o link q vc passou nao abre :/

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
  • Recently Browsing   0 members

    No registered users viewing this page.

×