Ir para conteúdo
  • 0

Como adpatar essa função c++


izac ximenes

Pergunta

galera queria adaptar essa função

int32_t LuaScriptInterface::luaGetCreatureName(lua_State* L)
{
//getCreatureName(cid)
ScriptEnviroment* env = getEnv();
if(Creature* creature = env->getCreatureByUID(popNumber(L)))
lua_pushstring(L, creature->getName().c_str());
else
{
errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND));
lua_pushboolean(L, false);
}


return 1;
}

eu queria que quando essa função foce usada em um montros essa linha:

 

lua_pushstring(L, creature->getName().c_str());

 

foce substituída por:

 

lua_pushstring(L, monster->nomereal.c_str());

 

 

 

 

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Ao que parece, vendo o código lá, você só tem que alterar essa linha, em seu map.cpp

monster->name = monster->getName() + " [" + itoa(level, buffer, 10) + "]";

Altere para

monster->name = monster->getName();

O monstro continuará com o level, mas não será exibido ao clicar sobre ele.

Link para o comentário
Compartilhar em outros sites

  • 0

Serio? tipo vai aparece ele do lado do pokemon tipo assim oddish [1] mais na descrição nao? e assim que tu quer dizer?

Isso mesmo, faça essa alteração que o pokemon não irá parecer com o level na frente, embora ainda continuará com o level.

Link para o comentário
Compartilhar em outros sites

  • 0

num tem uma forma do level aparece?sem causa erro getcreaturaname()

 

Eu não sei se você tem a função split, mas é uma solução:

vector<string> split(const string &s, char delim) {
    stringstream ss(s);
    string item;
    vector<string> tokens;
    while (getline(ss, item, delim)) {
        tokens.push_back(item);
    }
    return tokens;
}

Ai você usa assim:

std::vector<std::string> name = split(creature->getName().c_str(), '[');

Ficando assim:

int32_t LuaScriptInterface::luaGetCreatureName(lua_State* L)
{
	//getCreatureName(cid)
	ScriptEnviroment* env = getEnv();
	std::vector<std::string> name = split(creature->getName().c_str(), '[');
	if(Creature* creature = env->getCreatureByUID(popNumber(L)))
		lua_pushstring(L, name[1]);
	else
	{
		errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND));
		lua_pushboolean(L, false);
	}
	return 1;
}

Lembrando: Não testei e nem sei se vai funcionar, como não tenho como testar aqui, faz ai o teste.

Link para o comentário
Compartilhar em outros sites

  • 0

 

Eu não sei se você tem a função split, mas é uma solução:

vector<string> split(const string &s, char delim) {
    stringstream ss(s);
    string item;
    vector<string> tokens;
    while (getline(ss, item, delim)) {
        tokens.push_back(item);
    }
    return tokens;
}

Ai você usa assim:

std::vector<std::string> name = split(creature->getName().c_str(), '[');

Ficando assim:

int32_t LuaScriptInterface::luaGetCreatureName(lua_State* L)
{
	//getCreatureName(cid)
	ScriptEnviroment* env = getEnv();
	std::vector<std::string> name = split(creature->getName().c_str(), '[');
	if(Creature* creature = env->getCreatureByUID(popNumber(L)))
		lua_pushstring(L, name[1]);
	else
	{
		errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND));
		lua_pushboolean(L, false);
	}
	return 1;
}

Lembrando: Não testei e nem sei se vai funcionar, como não tenho como testar aqui, faz ai o teste.

 

como adicionio a função split na source ?

Link para o comentário
Compartilhar em outros sites

  • 0

Precisa disso não vei, é so acessar o nome do monsterType, que é o que carrega quando da load no monster

 

int32_t LuaScriptInterface::luaGetCreatureName(lua_State* L) {
    //getCreatureName(cid)
    ScriptEnviroment* env = getEnv();
    if(Creature* creature = env->getCreatureByUID(popNumber(L))) {
        if(Monster* monster = creature->getMonster())
                    lua_pushstring(L, monster->getMonsterType()->name.c_str() );
            else
                    lua_pushstring(L, creature->getName().c_str());
        } else {
        errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND));
        lua_pushboolean(L, false);
    }
    return 1;
}
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...