qual a finalidade? o que voce pretende fazer? nao entendi seu pedido
- Fórum
- OTServ
- Suporte
- Resolvidos
- Como adpatar essa função c++
info
Grupo: Barão
Registrado: 12/09/10
Posts: 249
Reputação: +53

info
Grupo: Campones
Registrado: 12/04/15
Posts: 26
Reputação: +2

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.
info
Grupo: Grão-Duque
Registrado: 02/10/06
Posts: 3.3k
Reputação: +151
Gê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.
info
Grupo: Campones
Registrado: 12/04/15
Posts: 26
Reputação: +2

Serio? tipo vai aparece ele do lado do pokemon tipo assim oddish [1] mais na descrição nao? e assim que tu quer dizer?
info
Grupo: Herói
Registrado: 01/05/08
Posts: 2.6k
Reputação: +536
Gê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.
info
Grupo: Campones
Registrado: 12/04/15
Posts: 26
Reputação: +2

num tem uma forma do level aparece?sem causa erro getcreaturaname()
info
Grupo: Herói
Registrado: 01/05/08
Posts: 2.6k
Reputação: +536
Gê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.
info
Grupo: Campones
Registrado: 12/04/15
Posts: 26
Reputação: +2

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 ?
info
Grupo: Herói
Registrado: 01/05/08
Posts: 2.6k
Reputação: +536
Gênero: Masculino

como adicionio a função split na source ?
Tenta colocar no arquivo header (.h).
info
Grupo: Campones
Registrado: 12/04/15
Posts: 26
Reputação: +2

Tenta colocar no arquivo header (.h).
voce poderia fazer mini tutorial de como adicionar essa função pfv
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;
}
Mano eu ja dei pra vc a diga sobre arrumar isso no seu outro topico?
info
Grupo: Marquês
Registrado: 03/02/13
Posts: 1.2k
Reputação: +254
Gênero: Masculino
Char no Tibia: Partiu Baladinha

Tópico Movido
Este tópico foi movido de "OTServ → Suporte OTServ → Suporte Programação"
para "OTServ → Suporte OTServ → Suporte Programação → Pedidos e dúvidas resolvidos - Programação".






info
Grupo: Campones
Registrado: 12/04/15
Posts: 26
Reputação: +2
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());