Jump to content
Sign in to follow this  
tierrilopes

Anti Trocas/drop Com Gm

Recommended Posts

Para impedir os GM de trocar com jogadores e/ou dropar itens para o chão.

 

Ir até ao ficheiro exchange.cpp:

Procurar por:


 

Please login or register to see this code.

 

Adicionar isto debaixo:

Please login or register to see this code.

 

Ir até ao ficheiro char_item.cpp:

Procurar por:

Please login or register to see this code.

 

Adicionar isto debaixo:

Please login or register to see this code.
 
  • Like 1
  • Upvote 4

Share this post


Link to post
Share on other sites

Boas

 

Para verificar o nome das personagens GM's, para permitir só o nome indicado na source como é que tenho de fazer?

 

Obrigado

Share this post


Link to post
Share on other sites

Alternativa para verificar nome das personagens:

 

Dropar itens:

Please login or register to see this code.

 

Não permite aos GM dropar itens excepto se o nome do GM for tierrilopes.

 

Trocar itens:

Please login or register to see this code.

 

Não permite aos GM trocar itens excepto se o nome do GM for tierrilopes.

Nem os jogadores podem abrir o comercio com os GM.

  • Upvote 1

Share this post


Link to post
Share on other sites

Se fossem 2 seria?

 

std::string nNome = GetName();

if ((GetGMLevel() > GM_PLAYER && nNome != "tierrilopes") || (victim->GetGMLevel() > GM_PLAYER && nNome != "tierrilopes"))

if ((GetGMLevel() > GM_PLAYER && nNome != "kushina") || (victim->GetGMLevel() > GM_PLAYER && nNome != "kushina"))

{

ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Proibido trocar itens com GM."));

return false;

}

 

? *-*

Share this post


Link to post
Share on other sites

Eu tenho assim para duas personagens:

Please login or register to see this code.

  • Upvote 2

Share this post


Link to post
Share on other sites
Please login or register to see this quote.

 

Podia mas o mesmo iria gerar aviso devido a não estar declarado como string.

Não afeta o funcionamento mas não gosto de ter avisos nas sources.

Share this post


Link to post
Share on other sites
Please login or register to see this quote. Aconselho apenas a fazer um if

 

 

Assim :

 

if (GetGMLevel() > GM_PLAYER && GetName() != "tierrilopes") || (victim->GetGMLevel() > GM_PLAYER && GetName() != "tierrilopes" || GetGMLevel() > GM_PLAYER && GetName() != "nomedosegundo") || (victim->GetGMLevel() > GM_PLAYER && GetName() != "nomedosegundo" )

 

Assim em Adiante

Share this post


Link to post
Share on other sites

Caso queira, é possível aplicar essa função aos GM's? O que é que quero dizer com isto.. é possível aplicar apenas às personagens com " [GM] " no nome?

Share this post


Link to post
Share on other sites
Please login or register to see this quote.

Sim é possível.

 

Anti-Drop

Please login or register to see this code.

 

Não permite dropar com a personagem "[GM]Nick"

 

Anti-Troca

Please login or register to see this code.

 

Não permite a troca ao "[GM]Nick"

Nem os jogadores podem abrir o comercio com o GM.

Share this post


Link to post
Share on other sites

Muito Obrigado ^^

 

como seria para 3 GMs/Joagadores?

Share this post


Link to post
Share on other sites

Anti-Drop

 

bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)

{

std::string nNome = GetName();

if (GetGMLevel() > GM_PLAYER && nNome == "[GM]Nick")

if (GetGMLevel() > GM_PLAYER && nNome == "[GM]Nick")

if (GetGMLevel() > GM_PLAYER && nNome == "[GM]Nick")

{

ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Proibido dropar itens como GM."));

return false;

}

Anti-Troca

 

std::string nNome = GetName();

if ((GetGMLevel() > GM_PLAYER && nNome == "[GM]Nick") || (victim->GetGMLevel() > GM_PLAYER && nNome == "[GM]Nick"))

if ((GetGMLevel() > GM_PLAYER && nNome == "[GM]Nick") || (victim->GetGMLevel() > GM_PLAYER && nNome == "[GM]Nick"))

if ((GetGMLevel() > GM_PLAYER && nNome == "[GM]Nick") || (victim->GetGMLevel() > GM_PLAYER && nNome == "[GM]Nick"))

{

ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Proibido trocar itens com GM."));

return false;

}

 

seria assim?

Share this post


Link to post
Share on other sites
Please login or register to see this quote. Please login or register to see this code.

Please login or register to see this code.

Share this post


Link to post
Share on other sites

Irei testar, desde já obrigado pela paciência Please login or register to see this image. /uploads/emoticons/xenforo-smilies-sprite.png.4a4a9fa87ba1790fde78e48a590c163b.png">

Share this post


Link to post
Share on other sites

Ele queria apenas todos os personagens que tivessem [GM] no nome, contudo isso não tem lógica, é mais fácil bloquear todos e desbloquear apenas as personagens que te interessam.

  • Upvote 1

Share this post


Link to post
Share on other sites

Pelo que entendi penso que ele queira todas as personagens qe tenham essas letras e símbolos no nome, mas é mais prático e organizado fazer como o tierri fez.

Share this post


Link to post
Share on other sites
Please login or register to see this quote. Não, isso iria ser um erro, a forma correcta é adicionar deste modo:

 

if ((GetGMLevel() > GM_PLAYER && nNome == "[GM]Nick") || (victim->GetGMLevel() > GM_PLAYER && nNome == "[GM]Nick" && && nNome == "[GM]Nick2"))

 

Porque ao adicionar mais linhas de if não estás a conseguir fazer o que queres, para fazer isso adicionas um operador relacional que neste caso é um (AND) E = &&.

 

Aproveitando o assunto deixo aqui outros operadores lógicos e relacionais

> Maior do que

>= Maior ou igual a

< Menor do que

<= Menor ou igual a

== Igual a

!= Diferente de

! NOT (Não)

|| OR (OU)

&& AND (E)

Share this post


Link to post
Share on other sites
Please login or register to see this quote. Exacto, no entanto irei testar com "nomes" Please login or register to see this image. /uploads/emoticons/xenforo-smilies-sprite.png.274688e589d11cf51879e1b36985bd7d.png">

 

 

_________________________

 

Testei, O GM em si não consegue negociar, mas outros jogadores conseguem negociar com ele.

Share this post


Link to post
Share on other sites
Please login or register to see this quote.

if ((GetGMLevel() > GM_PLAYER && nNome == "[GM]Nick") || (victim->GetGMLevel() > GM_PLAYER && nNome == "[GM]Nick" && nNome == "[GM]Nick2" && nNome == "[GM]Nick3"))

 

para

Please login or register to see this code.

  • Upvote 1

Share this post


Link to post
Share on other sites
Please login or register to see this quote.

 

Acabei por usar a do tierrilopes

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.

Our website is made possible by displaying online advertisements to our visitors.
Please consider supporting us by disabling your ad blocker.
You will be able to see content when you disable your adblocker and enable javascript.