• 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++ How to check storage in C++? tfs 1.2

majsters

New Member
Joined
Jun 7, 2010
Messages
18
Reaction score
1
As in the topic. I need help:

if (attackerPlayer && attackerPlayer->getStorageValue(uint64_t 60000) != 1 && attackerPlayer != this && skillLoss) {



/tfs/ots/src/player.cpp: In member function 'virtual uint64_t Player::getGainedExperience(Creature*) const':
/tfs/ots/src/player.cpp:3216:66: error: expected primary-expression before numeric constant
if (attackerPlayer && attackerPlayer->getStorageValue(uint64_t 60000) != 1 && attackerPlayer != this && skillLoss) {
^
CMakeFiles/tfs.dir/build.make:1175: recipe for target 'CMakeFiles/tfs.dir/src/player.cpp.o' failed
make[2]: *** [CMakeFiles/tfs.dir/src/player.cpp.o] Error 1
CMakeFiles/Makefile2:122: recipe for target 'CMakeFiles/tfs.dir/all' failed
make[1]: *** [CMakeFiles/tfs.dir/all] Error 2
Makefile:76: recipe for target 'all' failed
make: *** [all] Error 2
 
Solution
Mkalo please look, why this not working? (i work in c++ only 2 days)

uint64_t Player::getGainedExperience(Creature* attacker) const
{
if (g_config.getBoolean(ConfigManager::EXPERIENCE_FROM_PLAYERS)) {
Player* attackerPlayer = attacker->getPlayer();
if (attackerPlayer && attackerPlayer->getStorageValue(getNumber<uint32_t>(60000), int32_t value)) {
return std::max<uint64_t>(0, std::floor(getLostExperience() * getDamageRatio(attacker) * 0.75));
}
}
return 0;
}

/tfs/ots/src/player.cpp: In member function 'virtual uint64_t Player::getGainedExperience(Creature*) const':
/tfs/ots/src/player.cpp:3216:57: error: 'getNumber' was not declared in this scope
if (attackerPlayer &&...
Player::getStorageValue takes uint32_t arguments, not uint64_t
all you need is attackerPlayer->getStorageValue(60000)
 
Not working

"attackerPlayer->getStorageValue(60000)"

/tfs/ots/src/player.cpp:3216:62: error: no matching function for call to 'Play::getStorageValue(int)'
if (attackerPlayer && attackerPlayer->getStorageValue(60000)) {
^
/tfs/ots/src/player.cpp:3216:62: note: candidate is:
/tfs/ots/src/player.cpp:755:6: note: bool Player::getStorageValue(uint32_t, in2_t&) const
bool Player::getStorageValue(const uint32_t key, int32_t& value) const
^
/tfs/ots/src/player.cpp:755:6: note: candidate expects 2 arguments, 1 provid
CMakeFiles/tfs.dir/build.make:1175: recipe for target 'CMakeFiles/tfs.dir/src/ayer.cpp.o' failed
make[2]: *** [CMakeFiles/tfs.dir/src/player.cpp.o] Error 1
CMakeFiles/Makefile2:122: recipe for target 'CMakeFiles/tfs.dir/all' failed
make[1]: *** [CMakeFiles/tfs.dir/all] Error 2
Makefile:76: recipe for target 'all' failed
make: *** [all] Error 2




"attackerPlayer->getStorageValue takes uint32_t 600000, not uint64_t"

/tfs/ots/src/player.cpp: In member function 'virtual uint64_t Player::getGainedExperience(Creature*) const':
/tfs/ots/src/player.cpp:3216:41: error: invalid use of member function (did you forget the '()' ?)
if (attackerPlayer && attackerPlayer->getStorageValue takes uint32_t 600000, not uint64_t) {
^
/tfs/ots/src/player.cpp:3216:57: error: expected ')' before 'takes'
if (attackerPlayer && attackerPlayer->getStorageValue takes uint32_t 600000, not uint64_t) {
^
CMakeFiles/tfs.dir/build.make:1175: recipe for target 'CMakeFiles/tfs.dir/src/player.cpp.o' failed
make[2]: *** [CMakeFiles/tfs.dir/src/player.cpp.o] Error 1
CMakeFiles/Makefile2:122: recipe for target 'CMakeFiles/tfs.dir/all' failed
make[1]: *** [CMakeFiles/tfs.dir/all] Error 2
Makefile:76: recipe for target 'all' failed
make: *** [all] Error 2
root@vps393009:/tfs/ots/build#
 
Not working

"attackerPlayer->getStorageValue(60000)"

/tfs/ots/src/player.cpp:3216:62: error: no matching function for call to 'Play::getStorageValue(int)'
if (attackerPlayer && attackerPlayer->getStorageValue(60000)) {
^
/tfs/ots/src/player.cpp:3216:62: note: candidate is:
/tfs/ots/src/player.cpp:755:6: note: bool Player::getStorageValue(uint32_t, in2_t&) const
bool Player::getStorageValue(const uint32_t key, int32_t& value) const
^
/tfs/ots/src/player.cpp:755:6: note: candidate expects 2 arguments, 1 provid
CMakeFiles/tfs.dir/build.make:1175: recipe for target 'CMakeFiles/tfs.dir/src/ayer.cpp.o' failed
make[2]: *** [CMakeFiles/tfs.dir/src/player.cpp.o] Error 1
CMakeFiles/Makefile2:122: recipe for target 'CMakeFiles/tfs.dir/all' failed
make[1]: *** [CMakeFiles/tfs.dir/all] Error 2
Makefile:76: recipe for target 'all' failed
make: *** [all] Error 2




"attackerPlayer->getStorageValue takes uint32_t 600000, not uint64_t"

/tfs/ots/src/player.cpp: In member function 'virtual uint64_t Player::getGainedExperience(Creature*) const':
/tfs/ots/src/player.cpp:3216:41: error: invalid use of member function (did you forget the '()' ?)
if (attackerPlayer && attackerPlayer->getStorageValue takes uint32_t 600000, not uint64_t) {
^
/tfs/ots/src/player.cpp:3216:57: error: expected ')' before 'takes'
if (attackerPlayer && attackerPlayer->getStorageValue takes uint32_t 600000, not uint64_t) {
^
CMakeFiles/tfs.dir/build.make:1175: recipe for target 'CMakeFiles/tfs.dir/src/player.cpp.o' failed
make[2]: *** [CMakeFiles/tfs.dir/src/player.cpp.o] Error 1
CMakeFiles/Makefile2:122: recipe for target 'CMakeFiles/tfs.dir/all' failed
make[1]: *** [CMakeFiles/tfs.dir/all] Error 2
Makefile:76: recipe for target 'all' failed
make: *** [all] Error 2
root@vps393009:/tfs/ots/build#

forgottenserver/luascript.cpp at master · otland/forgottenserver · GitHub
 
Mkalo please look, why this not working? (i work in c++ only 2 days)

uint64_t Player::getGainedExperience(Creature* attacker) const
{
if (g_config.getBoolean(ConfigManager::EXPERIENCE_FROM_PLAYERS)) {
Player* attackerPlayer = attacker->getPlayer();
if (attackerPlayer && attackerPlayer->getStorageValue(getNumber<uint32_t>(60000), int32_t value)) {
return std::max<uint64_t>(0, std::floor(getLostExperience() * getDamageRatio(attacker) * 0.75));
}
}
return 0;
}

/tfs/ots/src/player.cpp: In member function 'virtual uint64_t Player::getGainedExperience(Creature*) const':
/tfs/ots/src/player.cpp:3216:57: error: 'getNumber' was not declared in this scope
if (attackerPlayer && attackerPlayer->getStorageValue(getNumber<uint32_t>(60000), int32_t value)) {
^
/tfs/ots/src/player.cpp:3216:75: error: expected primary-expression before '>' token
if (attackerPlayer && attackerPlayer->getStorageValue(getNumber<uint32_t>(60000), int32_t value)) {
^
/tfs/ots/src/player.cpp:3216:93: error: expected primary-expression before 'value'
if (attackerPlayer && attackerPlayer->getStorageValue(getNumber<uint32_t>(60000), int32_t value)) {
^
CMakeFiles/tfs.dir/build.make:1175: recipe for target 'CMakeFiles/tfs.dir/src/player.cpp.o' failed
make[2]: *** [CMakeFiles/tfs.dir/src/player.cpp.o] Error 1
CMakeFiles/Makefile2:122: recipe for target 'CMakeFiles/tfs.dir/all' failed
make[1]: *** [CMakeFiles/tfs.dir/all] Error 2
Makefile:76: recipe for target 'all' failed
make: *** [all] Error 2




uint64_t Player::getGainedExperience(Creature* attacker) const
{
if (g_config.getBoolean(ConfigManager::EXPERIENCE_FROM_PLAYERS)) {
Player* attackerPlayer = attacker->getPlayer();
uint32_t key = getNumber<uint32_t>(60000);
int32_t value;
if (attackerPlayer && attackerPlayer->getStorageValue(key, value)) {
return std::max<uint64_t>(0, std::floor(getLostExperience() * getDamageRatio(attacker) * 0.75));
}
}
return 0;
}

/tfs/ots/src/player.cpp: In member function 'virtual uint64_t Player::getGainedExperience(Creature*) const':
/tfs/ots/src/player.cpp:3216:19: error: 'getNumber' was not declared in this scope
uint32_t key = getNumber<uint32_t>(60000);
^
/tfs/ots/src/player.cpp:3216:37: error: expected primary-expression before '>' token
uint32_t key = getNumber<uint32_t>(60000);
^
CMakeFiles/tfs.dir/build.make:1175: recipe for target 'CMakeFiles/tfs.dir/src/player.cpp.o' failed
make[2]: *** [CMakeFiles/tfs.dir/src/player.cpp.o] Error 1
CMakeFiles/Makefile2:122: recipe for target 'CMakeFiles/tfs.dir/all' failed
make[1]: *** [CMakeFiles/tfs.dir/all] Error 2
Makefile:76: recipe for target 'all' failed
make: *** [all] Error 2
 
Mkalo please look, why this not working? (i work in c++ only 2 days)

uint64_t Player::getGainedExperience(Creature* attacker) const
{
if (g_config.getBoolean(ConfigManager::EXPERIENCE_FROM_PLAYERS)) {
Player* attackerPlayer = attacker->getPlayer();
if (attackerPlayer && attackerPlayer->getStorageValue(getNumber<uint32_t>(60000), int32_t value)) {
return std::max<uint64_t>(0, std::floor(getLostExperience() * getDamageRatio(attacker) * 0.75));
}
}
return 0;
}

/tfs/ots/src/player.cpp: In member function 'virtual uint64_t Player::getGainedExperience(Creature*) const':
/tfs/ots/src/player.cpp:3216:57: error: 'getNumber' was not declared in this scope
if (attackerPlayer && attackerPlayer->getStorageValue(getNumber<uint32_t>(60000), int32_t value)) {
^
/tfs/ots/src/player.cpp:3216:75: error: expected primary-expression before '>' token
if (attackerPlayer && attackerPlayer->getStorageValue(getNumber<uint32_t>(60000), int32_t value)) {
^
/tfs/ots/src/player.cpp:3216:93: error: expected primary-expression before 'value'
if (attackerPlayer && attackerPlayer->getStorageValue(getNumber<uint32_t>(60000), int32_t value)) {
^
CMakeFiles/tfs.dir/build.make:1175: recipe for target 'CMakeFiles/tfs.dir/src/player.cpp.o' failed
make[2]: *** [CMakeFiles/tfs.dir/src/player.cpp.o] Error 1
CMakeFiles/Makefile2:122: recipe for target 'CMakeFiles/tfs.dir/all' failed
make[1]: *** [CMakeFiles/tfs.dir/all] Error 2
Makefile:76: recipe for target 'all' failed
make: *** [all] Error 2




uint64_t Player::getGainedExperience(Creature* attacker) const
{
if (g_config.getBoolean(ConfigManager::EXPERIENCE_FROM_PLAYERS)) {
Player* attackerPlayer = attacker->getPlayer();
uint32_t key = getNumber<uint32_t>(60000);
int32_t value;
if (attackerPlayer && attackerPlayer->getStorageValue(key, value)) {
return std::max<uint64_t>(0, std::floor(getLostExperience() * getDamageRatio(attacker) * 0.75));
}
}
return 0;
}

/tfs/ots/src/player.cpp: In member function 'virtual uint64_t Player::getGainedExperience(Creature*) const':
/tfs/ots/src/player.cpp:3216:19: error: 'getNumber' was not declared in this scope
uint32_t key = getNumber<uint32_t>(60000);
^
/tfs/ots/src/player.cpp:3216:37: error: expected primary-expression before '>' token
uint32_t key = getNumber<uint32_t>(60000);
^
CMakeFiles/tfs.dir/build.make:1175: recipe for target 'CMakeFiles/tfs.dir/src/player.cpp.o' failed
make[2]: *** [CMakeFiles/tfs.dir/src/player.cpp.o] Error 1
CMakeFiles/Makefile2:122: recipe for target 'CMakeFiles/tfs.dir/all' failed
make[1]: *** [CMakeFiles/tfs.dir/all] Error 2
Makefile:76: recipe for target 'all' failed
make: *** [all] Error 2



Code:
if (attackerPlayer && attackerPlayer->getStorageValue(getNumber<uint32_t>(60000), int32_t value)) {

should be something like:
Code:
if (attackerPlayer && attackerPlayer->getStorageValue(60000, 1)) {

Not sure how storages are handled inside cpp tho..

Prolly could be also something like
Code:
int32_t value;
if (attackerPlayer && attackerPlayer->getStorageValue(60000, value)) {
 
Solution
This work
int32_t value;
if (attackerPlayer && attackerPlayer->getStorageValue(60000, value))

Thanks man :)

Small refresh. How to check GLOBAL storage value in c++? (this saved in ram, not in database)

getGlobalStorageValue (not working, i have this in compact.lua)
error: 'getGlobalStorageValue' was not declared in this scope

Game.getStorageValue (in lua 100%works)
error: 'game' was not declared in this scope
 
Last edited by a moderator:
Back
Top