elnelson
Lunaria World Dev
Hello, otlanders. i found a code patch for tfs 0.4 but when i try to compile it i got this error lines:
these are the instructions:
im using TFS 0.4 r12 trunk 3777, hope somene could help me to use these functions i really need them.
Lua:
In member function 'virtual void LuaInterface::registerFunctions()':
1709 D:\OTS\trunk.3777.r12\sources\luascript.cpp 'luaDoAbsorbCombatPercentage' is not a member of 'LuaInterface'
1709 D:\OTS\trunk.3777.r12\sources\luascript.cpp At global scope:
4943 D:\OTS\trunk.3777.r12\sources\luascript.cpp expected initializer before 'int32_t'
4943 D:\OTS\trunk.3777.r12\sources\luascript.cpp *** [obj//luascript.o] Error 1
these are the instructions:
player.cpp, after :
paste this
At the bottom of player.cpp paste:
at player.h after
paste
After:
paste
in game.cpp, after:
paste:
THIS IS WHERE MY DOUBT START: I HAVE LUAINTERFACE on my srcs INSTEAD OF LUASCRIPTINFERFACE,
btw, tried to modify to fit like others but i failed too...
in luascript.cpp after:
paste:
after
paste
in luascript.h, after
paste
Lua:
editListId = maxWriteLen = windowTextId = rankId = 0;
Lua:
firePercent = energyPercent = earthPercent = icePercent = holyPercent = eathPercent = physicalPercent = lifeDrainPercent = manaDrainPercent = drownPercent = 0;
Lua:
void Player::setAbsorbedPercent(const CombatType_t combatType, int32_t percent)
{
if(percent < 0)
percent = 0;
if(percent > 100)
percent = 100;
switch((CombatType_t)combatType)
{
case COMBAT_FIREDAMAGE:
firePercent = percent;
break;
case COMBAT_ENERGYDAMAGE:
energyPercent = percent;
break;
case COMBAT_EARTHDAMAGE:
earthPercent = percent;
break;
case COMBAT_ICEDAMAGE:
icePercent = percent;
break;
case COMBAT_HOLYDAMAGE:
holyPercent = percent;
break;
case COMBAT_DEATHDAMAGE:
deathPercent = percent;
break;
case COMBAT_PHYSICALDAMAGE:
physicalPercent = percent;
break;
case COMBAT_LIFEDRAIN:
lifeDrainPercent = percent;
break;
case COMBAT_MANADRAIN:
manaDrainPercent = percent;
break;
case COMBAT_DROWNDAMAGE:
drownPercent = percent;
break;
default:
break;
}
}
Lua:
void setSex(uint16_t);
Lua:
int32_t getAbsorbedPercent(CombatType_t combatType) const
{
switch(combatType)
{
case COMBAT_FIREDAMAGE:
return firePercent;
case COMBAT_ENERGYDAMAGE:
return energyPercent;
case COMBAT_EARTHDAMAGE:
return earthPercent;
case COMBAT_ICEDAMAGE:
return icePercent;
case COMBAT_HOLYDAMAGE:
return holyPercent;
case COMBAT_DEATHDAMAGE:
return deathPercent;
case COMBAT_PHYSICALDAMAGE:
return physicalPercent;
case COMBAT_LIFEDRAIN:
return lifeDrainPercent;
case COMBAT_MANADRAIN:
return manaDrainPercent;
case COMBAT_DROWNDAMAGE:
return drownPercent;
default:
break;
}
return 0;
}
void setAbsorbedPercent(const CombatType_t combatType, int32_t percent);
Lua:
int32_t shootRange;
Lua:
int32_t firePercent;
int32_t energyPercent;
int32_t earthPercent;
int32_t icePercent;
int32_t holyPercent;
int32_t deathPercent;
int32_t physicalPercent;
int32_t lifeDrainPercent;
int32_t manaDrainPercent;
int32_t drownPercent;
in game.cpp, after:
Lua:
damage = std::min(target->getHealth(), damage);
Lua:
Player* player = target->getPlayer();
int32_t percent, total;
if(player)
{
percent = player->getAbsorbedPercent(combatType);
total = damage * percent / (int32_t)100;
}
if(total > 0)
damage -= total;
btw, tried to modify to fit like others but i failed too...
in luascript.cpp after:
Lua:
lua_register(m_luaState, "doPlayerRemoveMoney", LuaScriptInterface::luaDoPlayerRemoveMoney);
Lua:
//doAbsorbCombatPercentage(cid, combat, percent)
lua_register(m_luaState, "doAbsorbCombatPercentage", LuaScriptInterface::luaDoAbsorbCombatPercentage);
//getCombatPercentageAbsorbed(cid, combat)
lua_register(m_luaState, "getCombatPercentageAbsorbed", LuaScriptInterface::luaGetCombatPercentageAbsorbed);
Lua:
int32_t LuaScriptInterface::luaDoPlayerRemoveMoney(lua_State* L)
Lua:
int32_t LuaScriptInterface::luaDoAbsorbCombatPercentage(lua_State *L)
{
ScriptEnviroment* env = getEnv();
int32_t percent = popNumber(L);
CombatType_t combat = (CombatType_t)popNumber(L);
if(!combat)
{
errorEx(getError(LUA_ERROR_COMBAT_NOT_FOUND));
lua_pushboolean(L, false);
return 1;
}
Player* player = env->getPlayerByUID(popNumber(L));
if(player)
{
player->setAbsorbedPercent(combat, percent);
lua_pushnumber(L, true);
}
else
{
errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));
lua_pushnumber(L, false);
}
return 1;
}
int32_t LuaScriptInterface::luaGetCombatPercentageAbsorbed(lua_State *L)
{
ScriptEnviroment* env = getEnv();
CombatType_t combat = (CombatType_t)popNumber(L);
if(!combat)
{
errorEx(getError(LUA_ERROR_COMBAT_NOT_FOUND));
lua_pushboolean(L, false);
return 1;
}
if(Player* player = env->getPlayerByUID(popNumber(L)))
{
lua_pushnumber(L, player->getAbsorbedPercent(combat));
}
else
{
errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));
lua_pushnumber(L, false);
}
return 1;
}
Lua:
static int32_t luaDoPlayerRemoveMoney(lua_State* L);
Lua:
static int32_t luaDoCombatAbsorbPercentage(lua_State* L);
static int32_t luaGetCombatPercentageAbsorbed(lua_State* L);
im using TFS 0.4 r12 trunk 3777, hope somene could help me to use these functions i really need them.