• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

C++ Config.lua working with .h file

Togu

Advanced OT User
Joined
Jun 22, 2018
Messages
308
Solutions
1
Reaction score
178
Location
Brazil
I have these functions in player.h:
C++:
void updateBaseSpeed() {//CHANGED!
           if (!hasFlag(PlayerFlag_SetMaxSpeed)) {
               //baseSpeed = vocation->getBaseSpeed() + (2 * (level - 1));
               baseSpeed = vocation->getBaseSpeed() + (2 * (level - 1) + 2 * (skills[SKILL_DEXTERITY].level - 8));
               //baseSpeed = vocation->getBaseSpeed() + (2 * (level - 1) + (g_config.getNumber(ConfigManager::DEXTERITY_WALKSPEEDFACTOR) * (skills[SKILL_DEXTERITY].level - (g_config.getNumber(ConfigManager::DEXTERITY_INITIALDEXTERITY))));
           }
           else {
               baseSpeed = PLAYER_MAX_SPEED;
           }
       }

uint32_t getAttackSpeed() const {//CHANGED!
           //return vocation->getAttackSpeed
           return 2000 + 8 * 10 - skills[SKILL_DEXTERITY].level * 10;
       }

But I couldn't make it work through config.lua, just for functions located in player.cpp.

Is it possible to do this?

player.cpp (working):
C++:
if (skill == SKILL_VITALITY) {
           healthMax += g_config.getNumber(ConfigManager::VITALITY_HEALTHGAIN);
           health += g_config.getNumber(ConfigManager::VITALITY_HEALTHGAIN);
           g_game.addCreatureHealth(this);
       }

Tried include lua module, configmanager module, transfer functions to .cpp... but didnt work
 
instead of including more things in a header file use a forward declaration in the header and define it in the .cpp file
aka
.h:
C++:
void updateBaseSpeed(); // forward declaration
.cpp:
C++:
void updateBaseSpeed() {//CHANGED!
           if (!hasFlag(PlayerFlag_SetMaxSpeed)) {
               //baseSpeed = vocation->getBaseSpeed() + (2 * (level - 1));
               baseSpeed = vocation->getBaseSpeed() + (2 * (level - 1) + 2 * (skills[SKILL_DEXTERITY].level - 8));
               //baseSpeed = vocation->getBaseSpeed() + (2 * (level - 1) + (g_config.getNumber(ConfigManager::DEXTERITY_WALKSPEEDFACTOR) * (skills[SKILL_DEXTERITY].level - (g_config.getNumber(ConfigManager::DEXTERITY_INITIALDEXTERITY))));
           }
           else {
               baseSpeed = PLAYER_MAX_SPEED;
           }
       }
 
instead of including more things in a header file use a forward declaration in the header and define it in the .cpp file
aka
.h:
C++:
void updateBaseSpeed(); // forward declaration
.cpp:
C++:
void updateBaseSpeed() {//CHANGED!
           if (!hasFlag(PlayerFlag_SetMaxSpeed)) {
               //baseSpeed = vocation->getBaseSpeed() + (2 * (level - 1));
               baseSpeed = vocation->getBaseSpeed() + (2 * (level - 1) + 2 * (skills[SKILL_DEXTERITY].level - 8));
               //baseSpeed = vocation->getBaseSpeed() + (2 * (level - 1) + (g_config.getNumber(ConfigManager::DEXTERITY_WALKSPEEDFACTOR) * (skills[SKILL_DEXTERITY].level - (g_config.getNumber(ConfigManager::DEXTERITY_INITIALDEXTERITY))));
           }
           else {
               baseSpeed = PLAYER_MAX_SPEED;
           }
       }
I tried that but then in player.cpp it dont recognize many things (like "skill", cause its declard in header), i could try including more things in .cpp but i thought thats the worng way, but if you are telling thats the right way ill trust in u and will try again later. I think the solution is easy but im not a C++ expert, so its being hard to me. Anyway, thanks!
 
er my bad
in the cpp file you need to put it inside player class like so
C++:
void Player::updateBaseSpeed() {//CHANGED!
           if (!hasFlag(PlayerFlag_SetMaxSpeed)) {
               //baseSpeed = vocation->getBaseSpeed() + (2 * (level - 1));
               baseSpeed = vocation->getBaseSpeed() + (2 * (level - 1) + 2 * (skills[SKILL_DEXTERITY].level - 8));
               //baseSpeed = vocation->getBaseSpeed() + (2 * (level - 1) + (g_config.getNumber(ConfigManager::DEXTERITY_WALKSPEEDFACTOR) * (skills[SKILL_DEXTERITY].level - (g_config.getNumber(ConfigManager::DEXTERITY_INITIALDEXTERITY))));
           }
           else {
               baseSpeed = PLAYER_MAX_SPEED;
           }
       }
that should work just fine
 

Similar threads

Back
Top