Ir para conteúdo
  • Cadastre-se

(Resolvido)[Pedido] Exiva Normal & Exiva Aguçado


Ir para solução Resolvido por Gantz,

Posts Recomendados

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 por leonardobo (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

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 por Suicide (veja o histórico de edições)

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites

Se voce entender sobre isso na source eu tenho as sources me diga como fazer.

 

q8Ov72q.jpg

 

0.4 tfs 1.0

Editado por leonardobo (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 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 por Gantz (veja o histórico de edições)

whatsapp-4in.png (18) 98134-9991

 

icon-skype.png [email protected]

 

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo