Ir para conteúdo
  • 0

função lua no c++


izac ximenes

Pergunta

Galera fiz um função no c++ para inserir level do pokemon


int32_t LuaScriptInterface::luaSetPokemonLevel(lua_State* L)
{


//setPokemonLevel(cid,level)
ScriptEnviroment* env = getEnv();
int32_t levelpoke = popNumber(L);
if(Monster* monster = env->getCreatureByUID(popNumber(L))->getMonster())
{
monster->levelsummon = levelpoke;
lua_pushboolean(L, true);
}
else
{
errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND));
lua_pushboolean(L, false);
}


return 1;
}


so que quando uso ela no lua
da esse erro no console

 attempt to call global 'setPokemonLevel' (a nil value)

como resolvo isso alguem sabe?

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Pelo fato da função não estar sendo encontrada no código Lua, significa que sua instalação não foi bem sucedida. Talvez você tenha esquecido de colocar alguma coisa em luascript.cpp/luascript.h, ou um erro tenha aparecido durante a compilação.

Em luascript.cpp, além dessa parte mostrada, você também deve colocar, em logicamente outra parte do arquivo, isso:

//setPokemonLevel(cid, level)
lua_register(m_luaState, "setPokemonLevel", LuaScriptInterface::luaSetPokemonLevel);
E em luascript.h, isso:
static int32_t luaSetPokemonLevel(lua_State* L);
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

nenhum erro

 

olha tentei melhora a função

 

int32_t LuaScriptInterface::luaSetPokemonLevel(lua_State* L)
{


//setPokemonLevel(cid,levelpoke)
int32_t levelpoke = (int32_t)popNumber(L);


ScriptEnviroment* env = getEnv();


if(Monster* monster = env->getCreatureByUID(popNumber(L))->getMonster())
{
if(monster->isSummon())
{
monster->levelsummon = levelpoke;
lua_pushboolean(L, true);
}
else
{
monster->level = levelpoke;
lua_pushboolean(L, true); 
}
}
else
{
errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND));
lua_pushboolean(L, false);
}


return 1;
}

 

Link para o comentário
Compartilhar em outros sites

  • 0

está faltando você setar um valor a essa função entao cara , tipo sei la faz com que já começe com o valor 0

txu como assim ? olha levelsummon por padrão ele começa com numero 5 ja

olha

Monster::Monster(MonsterType* _mType):
Creature()
{
isIdle = true;
isMasterInRange = false;
teleportToMaster = false;
mType = _mType;
spawn = NULL;
raid = NULL;
levelsummon = 5;

 

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

  • 0

Considerando que tudo que tu disse é verdade, e que esta usando o binario correto gerado pela compilação, a unica coisa que poderia explicar isso é que em alguma lib esta setando a variavel setPokemonLevel como nil. Dê um find in files nos arquivos do servidor e veja se acha algo semelhante

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...