Postado Dezembro 28, 2014 10 anos Bom estou aqui pra pedir um pedido que eu não achei em nenhum lugar bom é o seguinte. No meu server eu pensei em uma ideia de colocar o exiva normal e o exiva aguçado, funciona da seguinte maneira: Exiva Normal: Se o player exivado estivesse a 100 SQM's ou mais de distancia, apareceria: 10:26 Jose is too far away. Se o player exivado estivesse a 100 SQM's ou menos de distancia, apareceria: 10:26 Jose is far to the south-west. Se o player exivado estivesse a 50 SQM's ou menos de distancia, apareceria: 10:26 Jose is to the south-west. Exiva Aguçado: Se o player exivado estiver a muitos SQM's a distancia, apareceria: 10:23 Jose is very far to the north-west [724 sqm] Se o player exivado estiver a 100 SQM's ou menos de distancia, apareceria: 10:23 Jose is far to the north-west [99 sqm] Se o player exivado estiver a 50 SQM's ou menos de distancia, apareceria: 10:23 Jose is to the north-west [49 sqm] E assim vai de acordo com oque o player anda vai mudando os SQM de distancia a cada vez que usar o exiva. Bom se alguém conseguir me ajudar ficarei muito grato, acho que é um pedido grande não sei, mas oque puderem fazer pra ajudar ta valendo, se não estiver bem explicado, comentem sua duvida sobre o pedido. Editado Dezembro 28, 2014 10 anos por leonardobo (veja o histórico de edições)
Postado Dezembro 28, 2014 10 anos SearchPlayer (Find Person / exiva) é uma função usada em uma spell, que se localiza na source. Então, ela teria de ser alterada em C++. bool InstantSpell::SearchPlayer(const InstantSpell*, Creature* creature, const std::string& param) { Player* player = creature->getPlayer(); if(!player || player->isRemoved()) return false; Player* targetPlayer = NULL; ReturnValue ret = g_game.getPlayerByNameWildcard(param, targetPlayer); if(ret != RET_NOERROR || !targetPlayer || targetPlayer->isRemoved()) { player->sendCancelMessage(ret); g_game.addMagicEffect(player->getPosition(), MAGIC_EFFECT_POFF); return false; } if(targetPlayer->hasCustomFlag(PlayerCustomFlag_NotSearchable) && !player->hasCustomFlag(PlayerCustomFlag_GamemasterPrivileges)) { player->sendCancelMessage(RET_PLAYERWITHTHISNAMEISNOTONLINE); g_game.addMagicEffect(player->getPosition(), MAGIC_EFFECT_POFF); return false; } std::stringstream ss; ss << targetPlayer->getName() << " " << g_game.getSearchString(player->getPosition(), targetPlayer->getPosition(), true, true) << "."; player->sendTextMessage(MSG_INFO_DESCR, ss.str().c_str()); g_game.addMagicEffect(player->getPosition(), MAGIC_EFFECT_WRAPS_BLUE); return true; } Porém, existem outras possibilidades de se criar o que você quer, em Lua. Tenho duas em mente: Spell que localiza um target. Talkaction (pode-se configurar pra ter perda de mana no uso, exhausted, vocações, etc; como uma spell). Editado Dezembro 28, 2014 10 anos por Suicide (veja o histórico de edições) The corrupt fear us. The honest support us. The heroic join us.
Postado Dezembro 28, 2014 10 anos Autor Se voce entender sobre isso na source eu tenho as sources me diga como fazer. 0.4 tfs 1.0 Editado Dezembro 28, 2014 10 anos por leonardobo (veja o histórico de edições)
Postado Dezembro 28, 2014 10 anos Solução testa ae amigo: bool InstantSpell::SearchPlayer(const InstantSpell* spell, Creature* creature, const std::string& param) { Player* player = creature->getPlayer(); if(!player || player->isRemoved()) return false; Player* targetPlayer = NULL; ReturnValue ret = g_game.getPlayerByNameWildcard(param, targetPlayer); if(ret != RET_NOERROR || !targetPlayer || targetPlayer->isRemoved()) { player->sendCancelMessage(ret); g_game.addMagicEffect(player->getPosition(), MAGIC_EFFECT_POFF); return false; } if(targetPlayer->hasCustomFlag(PlayerCustomFlag_NotSearchable) && !player->hasCustomFlag(PlayerCustomFlag_GamemasterPrivileges)) { player->sendCancelMessage(RET_PLAYERWITHTHISNAMEISNOTONLINE); g_game.addMagicEffect(player->getPosition(), MAGIC_EFFECT_POFF); return false; } std::stringstream ss; const Position& pos = player->getPosition(); const Position& targetPos = targetPlayer->getPosition(); uint32_t distance = std::max(std::abs(pos.x - targetPos.x), std::abs(pos.y - targetPos.y)); if(pos.z != targetPos.z) distance = distance + 9 + 6; ss << targetPlayer->getName() << " " << g_game.getSearchString(player->getPosition(), targetPlayer->getPosition(), true, true) << " [" << distance << " sqm]"; player->sendTextMessage(MSG_INFO_DESCR, ss.str().c_str()); g_game.addMagicEffect(player->getPosition(), MAGIC_EFFECT_WRAPS_BLUE); return true; } Editado Dezembro 28, 2014 10 anos por Gantz (veja o histórico de edições) (18) 98134-9991 [email protected]
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.