Como adpatar essa função c++

izac ximenes
em Resolvidos

izac ximenes

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/04/15Posts: 26

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());

 

 

 

 

dragonfight

Sometimes I can't believe it
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 12/09/10Posts: 249

qual a finalidade? o que voce pretende fazer? nao entendi seu pedido

tumblr_mbtch9L7iC1r2wtdzo1_500.jpg

izac ximenes

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/04/15Posts: 26

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.

Felipe Moraes

Java Developer
avatar
Grão-Duque
Grão-Duque

INFOS

Grupo: Grão-DuqueRegistrado: 02/10/06Posts: 3285Gênero: Masculino

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.

~A nossa maior glória não reside no fato de nunca cairmos, mas sim em levantarmo-nos sempre depois de cada queda.~

 

 

 

 

Clique aqui para ver meus tutoriais !

 

 

 

Gamertag: cpmoraes

 

 

izac ximenes

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/04/15Posts: 26

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

Bruno

Ousadia e Alegria
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 01/05/08Posts: 2571Gênero: Masculino

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.

Atenciosamente,
Bruno Minervino

 

Tibia Clients - Downloads Window

izac ximenes

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/04/15Posts: 26

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

Bruno

Ousadia e Alegria
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 01/05/08Posts: 2571Gênero: Masculino

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.

Atenciosamente,
Bruno Minervino

 

Tibia Clients - Downloads Window

dalvorsn

õ/
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 21/12/11Posts: 750Gênero: Masculino

https://gist.github.com/dalvorsn/181968ae477debd90d2d

"A covardia coloca a questão: É seguro? O comodismo coloca a questão: É popular? A etiqueta coloca a questão: é elegante? Mas a consciência coloca a questão, É correto? E chega uma altura em que temos de tomar uma posição que não é segura, não é elegante, não é popular, mas o temos de fazer porque a nossa consciência nos diz que é essa a atitude correta."

(Martin Luther King)

izac ximenes

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/04/15Posts: 26

 

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 ?

Bruno

Ousadia e Alegria
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 01/05/08Posts: 2571Gênero: Masculino

 

como adicionio a função split na source ?

 

Tenta colocar no arquivo header (.h).

Atenciosamente,
Bruno Minervino

 

Tibia Clients - Downloads Window

izac ximenes

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/04/15Posts: 26

 

Tenta colocar no arquivo header (.h).

 

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

dalvorsn

õ/
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 21/12/11Posts: 750Gênero: Masculino

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;
}

"A covardia coloca a questão: É seguro? O comodismo coloca a questão: É popular? A etiqueta coloca a questão: é elegante? Mas a consciência coloca a questão, É correto? E chega uma altura em que temos de tomar uma posição que não é segura, não é elegante, não é popular, mas o temos de fazer porque a nossa consciência nos diz que é essa a atitude correta."

(Martin Luther King)