Ir para conteúdo
  • 0

Como adpatar essa função c++


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
https://xtibia.com/forum/topic/236690-como-adpatar-essa-fun%C3%A7%C3%A3o-c/
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

a finalidade e seguinte eu adicionei um sistema de level no meu esse servidor 8.54(sistema aqui) so que quando usar essa função o level do pokemon vem junto ex:oddish [1] o certo e so oddish.

Link para o comentário
https://xtibia.com/forum/topic/236690-como-adpatar-essa-fun%C3%A7%C3%A3o-c/#findComment-1668079
Compartilhar em outros sites

  • 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
https://xtibia.com/forum/topic/236690-como-adpatar-essa-fun%C3%A7%C3%A3o-c/#findComment-1668084
Compartilhar em outros sites

  • 0
  Em 10/09/2015 em 19:10, izac ximenes disse:

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
https://xtibia.com/forum/topic/236690-como-adpatar-essa-fun%C3%A7%C3%A3o-c/#findComment-1668111
Compartilhar em outros sites

  • 0
  Em 11/09/2015 em 11:01, izac ximenes disse:

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
https://xtibia.com/forum/topic/236690-como-adpatar-essa-fun%C3%A7%C3%A3o-c/#findComment-1668192
Compartilhar em outros sites

  • 0
  Em 11/09/2015 em 12:03, Bruno Minervino disse:

 

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
https://xtibia.com/forum/topic/236690-como-adpatar-essa-fun%C3%A7%C3%A3o-c/#findComment-1668732
Compartilhar em outros sites

  • 0
  Em 14/09/2015 em 18:13, Bruno Minervino disse:

 

Tenta colocar no arquivo header (.h).

 

voce poderia fazer mini tutorial de como adicionar essa função pfv

Link para o comentário
https://xtibia.com/forum/topic/236690-como-adpatar-essa-fun%C3%A7%C3%A3o-c/#findComment-1668863
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
https://xtibia.com/forum/topic/236690-como-adpatar-essa-fun%C3%A7%C3%A3o-c/#findComment-1668962
Compartilhar em outros sites

  • 0
  • 0
×
×
  • Criar Novo...