Postado Maio 17, 2015 10 anos Esse sistema faz com que existam monstros que não atacam você, se você não atacar ou usar magias antes. Então vamos ao passo-a-passo. Encontre em luascript.cpp: registerMethod("MonsterType", "isHostile", LuaScriptInterface::luaMonsterTypeIsHostile); Coloque abaixo: registerMethod("MonsterType", "isHostileOnAttack", LuaScriptInterface::luaMonsterTypeIsHostileOnAttack); Encontre em luascript.cpp: int LuaScriptInterface::luaMonsterTypeIsHostile(lua_State* L) { // monsterType:isHostile() MonsterType* monsterType = getUserdata<MonsterType>(L, 1); if (monsterType) { pushBoolean(L, monsterType->isHostile); } else { lua_pushnil(L); } return 1; } Coloque abaixo: int LuaScriptInterface::luaMonsterTypeIsHostileOnAttack(lua_State* L) { // monsterType:isHostileOnAttack() MonsterType* monsterType = getUserdata<MonsterType>(L, 1); if (monsterType) { pushBoolean(L, monsterType->isHostileOnAttack); } else { lua_pushnil(L); } return 1; } Encontre em luascript.h: static int luaMonsterTypeIsHostile(lua_State* L); Coloque abaixo: static int luaMonsterTypeIsHostileOnAttack(lua_State* L); Encontre em monster.cpp: if (isHostile() || isSummon()) { if (setAttackedCreature(creature) && !isSummon()) { g_dispatcher.addTask(createTask(std::bind(&Game::checkCreatureAttack, &g_game, getID()))); } } return setFollowCreature(creature); } Substitua por: if (isHostileOnAttack() && getHealth() >= getMaxHealth()) { return false; } else if (isHostile() || isSummon()) { if (setAttackedCreature(creature) && !isSummon()) { g_dispatcher.addTask(createTask(std::bind(&Game::checkCreatureAttack, &g_game, getID()))); } } return setFollowCreature(creature); } Encontre em monster.h: bool isHostile() const { return mType->isHostile; } Coloque abaixo: bool isHostileOnAttack() const { return mType->isHostileOnAttack; } Encontre em monsters.cpp: isHostile = true; Coloque abaixo: isHostileOnAttack = false; Encontre em monsters.cpp: } else if (strcasecmp(attrName, "hostile") == 0) { mType->isHostile = attr.as_bool(); Coloque abaixo: } else if (strcasecmp(attrName, "hostileonattack") == 0) { mType->isHostileOnAttack = attr.as_bool(); Encontre em monsters.h: bool isHostile; Coloque abaixo: bool isHostileOnAttack; Pronto, agora é só editar as flags no xml do monster que você que ataque apenas quando for atacado: <flag hostile="1"/> <flag hostileonattack="1"/> Todos os créditos são de fish04k. Editado Novembro 14, 2018 6 anos por luanluciano93 (veja o histórico de edições) STYLLER OT 2022
Postado Maio 17, 2015 10 anos Bem legal, nunca tinha parado pra pensar nisso... Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado). Tópicos: [FAQ] BBCODE [LIB] Constant [RME] Administrando bordas. [TALK] Broadcast Editável. [TALK] Sugest. [TALK] Checkpoint. [MOVE] Pântano pegajoso. [ACTION] Piggy Bank. (Cassino). [GLOBAL] Uptime Ad. [C0DE] Consertando 'Invalid Password' [PROGRAM] Quest Maker
Postado Maio 17, 2015 10 anos Grande Luan!!! será possível isso em 0.4? Precisa de ajuda? Poste a versão de seu TFS. ************************************************************************************************************* Servidores? Eu indico: Use o cupom TIBIAKING e receba 50% de desconto na primeira mensalidade! Pague menos de R$ 19,00 no primeiro mês!
Postado Maio 17, 2015 10 anos Autor @runeraserver, obg, http://www.tibiaking.com/forum/topic/28062-monstros-passivos/ STYLLER OT 2022
Postado Maio 19, 2015 10 anos Uma unica duvida: Caso um monstro qualquer soltar uma magia em area e essa magia atingir um monstro passivo ele vira agressivo?
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.