Ir para conteúdo
  • 0

Como usar um metodo de uma outra classe?


akira021

Pergunta

Olá pessoal, eu sou novato em programação, eu estou com uma grande duvida, como eu faço para usar um metodo de outra classe na source do tibia?

 

Vou explicar direto o que eu quero, eu quero que o valor que vá encher de hp retorne o valor de uma skill ou seja, o tanto de HP que vai encher no player vai depender de quanto ele tem de X skill.

 

Eu achei onde modificar, mas não estou conseguindo usar o metodo getSkill(), importe o player.h para dentro da classe, mas não consigo usar, ele dar erro.

 

Está é a linha que eu estou modificando, tento usar o metodo getSkill() apontando a classe que ela pertence que é a player, mas não consigo usar, estou fazendo algo errado ou é outra coisa?

 

 

if(readXMLInteger(p, "gainhpamount", intValue) || readXMLInteger(p, "gainhealthamount", intValue))

 

voc->setGainAmount(GAIN_HEALTH, player->getSkill(SKILL_FIST, SKILL_LEVEL));

 

Erro que está dando:

 

function `bool Vocations::parseVocationNode(xmlNode*)':

vocation.cpp `player' was not declared in this scope

dev-cpp\Makefile.win [build Error] [obj//vocation.o] Error 1

 

Obrigado desde de já

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

O objeto player não foi declarado nesta função. Logo, chamar um método nele não vai funcionar.

Se você analisar o código da função, poderá reparar que ela tem como objetivo criar os valores padrões de uma vocação.

Alterações dinâmicas nesses valores, eu particularmente faria no arquivo responsável pelo login do personagem.

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

 

 

Olá pessoal, eu sou novato em programação, eu estou com uma grande duvida, como eu faço para usar um metodo de outra classe na source do tibia? Vou explicar direto o que eu quero, eu quero que o valor que vá encher de hp retorne o valor de uma skill ou seja, o tanto de HP que vai encher no player vai depender de quanto ele tem de X skill. Eu achei onde modificar, mas não estou conseguindo usar o metodo getSkill(), importe o player.h para dentro da classe, mas não consigo usar, ele dar erro. Está é a linha que eu estou modificando, tento usar o metodo getSkill() apontando a classe que ela pertence que é a player, mas não consigo usar, estou fazendo algo errado ou é outra coisa?

 

Também sou iniciante, mas...

 

 

Você tem que usar um:

#include "arquivo.h"

acho que ele fica em weapons.h

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Tu ta alterando dentro de vocations querendo chamar a classe player? ta doido cara, a classe vocations vai alterar pra todos os players, e teoricamente no load do xml da vocação o server nem ligou, nao existe player, mesmo que quisesse instanciar nao ia dar certo

Tu nao tem que alterar isso ai, tem que alterar é na classe player, dai por la tu faz um if pelo id da vocação e etc e faz os calculos que quiser

é na função void Player::addExperience(uint64_t exp)

Fc6ao9s.png

Link para o comentário
Compartilhar em outros sites

  • 0

Tu ta alterando dentro de vocations querendo chamar a classe player? ta doido cara, a classe vocations vai alterar pra todos os players, e teoricamente no load do xml da vocação o server nem ligou, nao existe player, mesmo que quisesse instanciar nao ia dar certo

Tu nao tem que alterar isso ai, tem que alterar é na classe player, dai por la tu faz um if pelo id da vocação e etc e faz os calculos que quiser

é na função void Player::addExperience(uint64_t exp)

Fc6ao9s.png

Mas ai ele vai aumentar o HP maximo, nao? Eu quero mexer soh na regen de hp, eu testei la na vocation alterando pelo um valor int e deu certo, o problema eh que eu nao to conseguindo usar o metodo pra retornar o valor da skill, o getSkill()

 

Realmente o servidor nao abre, ele buga ns hora de carregar o vocation kkk

 

Fica em player.h nao? Eu olhei la e vi o metodo...

 

Dalvorsn, eu quero mexer soh na regen de hp, essa parte que voce mostrou ela eh quando o player upa o lvl, certo? Eu tenho que modificar o valor da regen e como eu falei antes eu modificando o getSkill por um valor int deu certo, nao tem uma maneira pra mim usar o getSkill la? Ou modificar outra parte que retorne o valor da regen?

 

Obs: eu quero que essa alteraçao seja para todas as vocaçoes, que o regen de hp tome base o configurado pelo xml e adicionado os valores da skill.

 

Desculpe se eu falei alguma besteira.

 

Vlw por estarem me ajudando.

 

Desde de ja OBRIGADO!!!

Editado por Akira
Link para o comentário
Compartilhar em outros sites

  • 0

Hm, vi aqui, me parece ser no momento que seta vocação ele inicia uma condition no player.

 

Lembrando que como tu ta dentro da classe, tu nao usa o "player->" é so chamar direto pelo nome dela 'getSkill(skilltype, skill_level)'. Cuidado com a tipagem.

 

on1iH2W.png

Link para o comentário
Compartilhar em outros sites

  • 0

Hm, vi aqui, me parece ser no momento que seta vocação ele inicia uma condition no player.

 

Lembrando que como tu ta dentro da classe, tu nao usa o "player->" é so chamar direto pelo nome dela 'getSkill(skilltype, skill_level)'. Cuidado com a tipagem.

 

on1iH2W.png

Hmm...

Nao tinha visto isso, to no trampo, quando chegar em casa eu olho e comento aqui, Vlw Dalvosn.

 

Obrigado!

Dalvorsn, consegui fazer a modificação, você estava certo, deu para fazer na classe Player, mas foi na função

 

void Player::addDefaultRegeneration(uint32_t addTicks)

Nela eu coloquei os valores da regen, como ela está dentro da classe Player, deu para usar o getSkill() ^^

 

Pelo o que eu percebi existe duas funções que retornam o regen do player, eu uso o 0.3.6, não entendi muito bem as duas, mas essa é responsavel pelo regen natural do player, talvez a outra seja equivalente a condition regen, bom eu consegui fazer a modificação.

 

Muito obrigado a todos, Vlw msm Dalvorsn ^^ Rep+

 

Podem fechar o tópico.

 

Vlw gente! =]

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...