Two Weapons System!

jhon992
em Linguagens de Programação

jhon992

Dono JhonBot
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/06/11Posts: 631Char no Tibia: Warrior of Mort

Esse sistema serve para que você possa usar duas weapons ao mesmo tempo uma em cada slot correspondente as mãos do personagem. Com ele você pode utilizar duas sword's, dois axe's, dois club's ou etc... Esse sistema simplismente soma o attack do item que estiver no slot esquerdo com o attack do item que estiver no slot esquerdo. Aew vai os code para inserir nas sources!

 

 

 

Vá em player.ccp e procure por:

ret = RET_CANONLYUSEONEWEAPON;

 

Você ira encontrar dois "ret = RET_CANONLYUSEONEWEAPON;", substitua por:

ret = RET_NOERROR;

 

 

 

Após, localize weapons.h e procure por:

const Weapon* getWeapon(const Item* item) const;

 

Embaixo você coloca:

            static int32_t getAttackLeft;
    static int32_t getAttackRigth;
    static int32_t getLeftExtraAttack;
    static int32_t getRigthExtraAttack;

 

 

 

Depois, localize weapons.ccp e procure por:

int32_t WeaponMelee::getWeaponDamage(const Player* player, const Creature* target, const Item* item, bool maxDamage /*= false*/) const
{
int32_t attackSkill = player->getWeaponSkill(item);
int32_t attackValue = std::max((int32_t)0, (int32_t(item->getAttack() + item->getExtraAttack()) - elementDamage));
float attackFactor = player->getAttackFactor();

 

Substitua por:

int32_t WeaponMelee::getWeaponDamage(const Player* player, const Creature* target, const Item* item, bool maxDamage /*= false*/) const
{

   int32_t getAttackLeft;
   int32_t getAttackRigth;
   int32_t getLeftExtraAttack;
int32_t getRigthExtraAttack;

   getAttackLeft = 0;
   getAttackRigth = 0;
   getLeftExtraAttack = 0;
getRigthExtraAttack = 0;

   if (getAttackLeft == 0)
   { 
       if (player->getInventoryItem(SLOT_LEFT) != NULL)
       {
       getAttackLeft = player->getInventoryItem(SLOT_LEFT)->getAttack();
       getLeftExtraAttack = player->getInventoryItem(SLOT_LEFT)->getExtraAttack();
       }
       else if (player->getInventoryItem(SLOT_LEFT) == NULL)
       {
       getAttackLeft = 0;
       getLeftExtraAttack = 0;  
       }
   }  

   if (getAttackRigth == 0)
   { 
       if (player->getInventoryItem(SLOT_RIGHT) != NULL)
       {
       getAttackRigth = player->getInventoryItem(SLOT_RIGHT)->getAttack();
       getRigthExtraAttack = player->getInventoryItem(SLOT_RIGHT)->getExtraAttack();
       }
       else if (player->getInventoryItem(SLOT_RIGHT) == NULL)
       {
       getAttackRigth = 0;
       getRigthExtraAttack = 0;  
       }
   }                                                 


   int32_t attackValue = std::max((int32_t)0, (int32_t)((getAttackLeft + getLeftExtraAttack + getAttackRigth + getRigthExtraAttack) - elementDamage));                                               

   int32_t attackSkill = player->getWeaponSkill(item);
   float attackFactor = player->getAttackFactor();

 

 

Compile e pronto!

 

Leoprotons

Rock nas Veia, e nas Véia tambêm!!!
avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 14/08/10Posts: 186

Nossa bacana nunca tinha pensado numa coisa dessas.

parabens.

rep+ pra ti

otserver.png

Adriez

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 02/09/10Posts: 341Gênero: Masculino

fmz manos ?? teria como eu fazer sword rancar igual a wand eu configurar de 1 milhao ate 5 milhao so q o atak bater normal melee msm sword ?? flws fmz

EX
969ds6.gif


Firmão igual um prego na areia,
Prego, jogou o ego, dentro de um buraco,
Um Bon vivant, jamais mostra o ponto fraco,
Pergunte a Sansão quem foi Dalila...

OcruxBiel

.-._.-._.-._.-._.-.
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 27/12/10Posts: 45Char no Tibia: Ocrux

Cara eu nunca mexi em programação de tibia

so mais um scripter intermediatio.

Eu queria saber se você não explica melhor

para mim, ou mande um tutorial de alguem.

 

Obs:Entendo rapido :X

"...Por ter sido um vilão por tanto tempo, acabou se tornando o antagonista perfeito. Um psicopata em todos os sentidos da palavra."

-The Joker

LukasScott

Hellsing
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 24/06/10Posts: 87Char no Tibia: Loading...

Vc poderia colokar isso como uma opção adcional a arma de sua escolha ao enves de poder utilizar qualquer arma em conjunto , seria só alterar em weapons.xml as armas que vc uzaria em conjuto tipo só poderá ser uzada 2 spike sword se eu tentar colokar 2 armas que não se possa uzar em conjunto eu num conseguiria.

Acho que ficaria muito melhor assim.

 

Obrigado por trazer conteudo pro xtibia

 

 

loading.gif

singw.png

 

Fale bem , fale mal , mas fale de mim...

"Não sou alienado mas vivo nesse absurdo"

OcruxBiel

.-._.-._.-._.-._.-.
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 27/12/10Posts: 45Char no Tibia: Ocrux

@LukasScott

 

Também axo cara,

Dai tipo podia

deixar só com dagger da

preferencia do dono

do servidor....

 

 

[EX: 2 ASSASSIN DAGGER]

 

Edit**

 

Eu to aprendendo a mexe em

programação do tibia só para

mim coloca isso no meu serv...

 

ali no

 

"ret = RET_NOERROR;"

isso coloca no 1 ou no segundo

"ret = RET_CANONLYUSEONEWEAPON;"...

 

Coloquei nos 2 e não deu certo :neutral:

"...Por ter sido um vilão por tanto tempo, acabou se tornando o antagonista perfeito. Um psicopata em todos os sentidos da palavra."

-The Joker

jhon992

Dono JhonBot
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/06/11Posts: 631Char no Tibia: Warrior of Mort

OcruxBiel que tipo de erro ocorreu, foi na hora de compilar ou no proprio jogo? Me explica melhor que eu te ajudo, e acho dificil achar algum tutorial de alguem pois eu que criei esse sistema e esse é o unico tutorial.

 

LukasScott, eu criei desse modo pois meu problema,objetivo foi implementar exatamente esse codigo para utilização no meu otserv. E assim foi um meio pelo qual eu consegui fazer isso. E resolvi disponibilizar pra enriqueser o conteudo do :XTibia_smile: com um novo sistema. :icon1: . Se quiser modificar fique a vontade :smile_positivo:

 

Adriez, sua duvida não é relacionada a este topico. Mesmo assim irei sanar sua duvida!

 

Na pasta do seu servidor entre em \weapons\scripts, copia algum arquivo e cole, renomei essa copia para 'sword' sem as aspas. E abra,cole o code e salve:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0, -1000000, 0, -5000000)

function onUseWeapon(cid, var)
return doCombat(cid, combat, var)
end

 

Agora na pasta \weapons\ , abra o arquivo weapons.xml, adicione a tag abaixo e salve:

<melee id="id da espada" level="lvl para usar" script="sword.lua">
</melee>

 

 

Pronto, esta aew sua sword hitando estilo wand!

No arquivo sword você podera mudar '-1000000' e '-5000000' que será a variação de hits.

Na linha 'id da espada' e 'lvl para usar' da nova tag você devera mudar conforme quiser.

LukasScott

Hellsing
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 24/06/10Posts: 87Char no Tibia: Loading...

@Jhon992

 

Você tem certeza que vc que criou esse cod?ou só está trazendo conteudo?

 

Pois é simples fazer oq eu falei , se vc realmente fez esse cod sabe disso.

 

Só não vou editalo pois estou ocupado desenvolvendo um novo client para o opentibia.

loading.gif

singw.png

 

Fale bem , fale mal , mas fale de mim...

"Não sou alienado mas vivo nesse absurdo"

OcruxBiel

.-._.-._.-._.-._.-.
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 27/12/10Posts: 45Char no Tibia: Ocrux

@Jhon992

O meu erro e na hora de

copilar.

NÃO LER O WEAPONS QUE VOCÊ MANDO EDITA :lamo:

"...Por ter sido um vilão por tanto tempo, acabou se tornando o antagonista perfeito. Um psicopata em todos os sentidos da palavra."

-The Joker

jhon992

Dono JhonBot
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/06/11Posts: 631Char no Tibia: Warrior of Mort

OcruxBiel, tenta refazer passo a passo desde o inicio do tutorial. Você deve ter errado algum passo ali no weapons.h ou no weapons.ccp. Depois de refazer, se continuar dando erro, copie e cole o console de erro aqui pra min dar uma olhada! :smile_positivo:

wesleykun

Cavaleiro (warrior)
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 22/09/10Posts: 23Char no Tibia: PoYsoneR

Muito Bom.Eu precisava disso para uma vocação só tem como ??? Se tiver REP+

Meus Trabalhos

 

 

Flower City v.0.2

Pyramid 1.1

House 1.0

Flower City v 0.3 (Em breve)

Cavezinha

 

 

Patch da Flower City:

Expansion no Map

Porto

Hunts

jhon992

Dono JhonBot
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/06/11Posts: 631Char no Tibia: Warrior of Mort

paulgrande

Perceba que você é sua própria criação Você é seu próprio mestre
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 09/12/10Posts: 138Char no Tibia: Loh Pabllitooh

isso é facil de fazer e so usar fazer uma checagem na hora de equipar pode fazer isso em lua com moveevents ou na source msm

zshgs7w.png

coming soon

 

 

"Sozinho eu sou agora o meu inimigo intimo.
Lembranças más vem, pensamentos bons vai,
Me ajude, sozinho penso merda pra caralho.
Gente que acredito, gosto e admiro,
Brigava por justiça e paz levou tiro:
Malcom X, Ghandi, Lennon, Marvin Gaye,
Che Guevara, 2Pac, Bob Marley e
O evangélico Martin Luther King.
Lembrei de um truta meu falar assim:
- Não joga pérolas aos porcos irmão,
Joga lavagem eles prefere assim.

pippen

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 21/07/08Posts: 2Char no Tibia: Seromontis

Muito legal velho, nota 10 em criatividade e me ajudo muito em um projeto que estou criando =) . Rep+ pra ti button_ok.png

Kryzed

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 30/07/11Posts: 4

Dica: Após o cara estar portando 2 Weapons aumentar o Speed Attack.