Ir para conteúdo
  • Cadastre-se

Posts Recomendados

3 hours ago, Eduardozim said:

@xWhiteWolf, mano consegui resolver isso com a ajuda de um membro da Otland (nesse caso a ajuda foi referente a em que lugar da source eu poderia alterar para que o ghostmode identificasse que o jogador de fato deve ser atacado pois não tem acesso de gm/god

O que fiz foi o seguinte

Eu alterei a função que era para todos os players e coloquei para que somente se for god ou gm ele não possa ser atacado (em game.cpp


Na pasta src/game.cpp troque da linha 3738 até a linha 3747 por:

  Hide contents

bool Game::combatBlockHit(CombatDamage& damage, Creature* attacker, Creature* target, bool checkDefense, bool checkArmor, bool field)

{

    Player* targetPlayer = target->getPlayer();

    if (damage.primary.type == COMBAT_NONE && damage.secondary.type == COMBAT_NONE) {

        return true;

    }

 

    if (target->isInGhostMode() && targetPlayer->getAccountType() < ACCOUNT_TYPE_GAMEMASTER && targetPlayer->getAccountType() < ACCOUNT_TYPE_GOD) {

        return true;

 

Passei dias mexendo para conseguir fazer essa função funcionar, espero que seja de bom uso para quem vier aqui. Já aproveito para deixar o script que criei (funciona para tfs 1.3, to usando a base do maluco)

Lembrando que o script só deixa invisível e retira a invisbilidade (on equip e deequip) porém está sem nenhuma condition (como as que você colocou no seu script.) essa parte eu ainda irei criar para o meu ot.

Espero que seja de bom uso mano, e se puder adicionar isso ao post, acho q ajudaria muita gente.

 

  Hide contents

function onEquip(cid, item, slot)
local player = Player(cid)
    if isPlayer() then
        return true
    end
    
    local position = player:getPosition()
    local isGhost = not player:isInGhostMode()
        item:transform(2202)
        player:setGhostMode(isGhost)
        player:sendTextMessage(MESSAGE_INFO_DESCR, "You are invisible.")
        -- position.x = position.x + 1
        position:sendMagicEffect(67)
    return true
end

function onDeEquip(cid, item, slot)
local player = Player(cid)
    if isPlayer() then
        return true
    end

    local position = player:getPosition()
    local isGhost = not player:isInGhostMode()
        item:transform(2165)
        player:setGhostMode(isGhost)
        player:sendTextMessage(MESSAGE_INFO_DESCR, "You are visible again.")
        -- position.x = position.x + 1
        position:sendMagicEffect(67)
    return true
end

 

 

obrigado pela contribuição!
Outra forma sem incluir source editing poderia ser setar a outfit como a de algum item invisivel (procura algum no object builder) e dar setHiddenHealth, tem o mesmo efeito!

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
  • Respostas 47
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Fala galera do TK, criei esse anelzinho pra servers que procuram inovar..  bom, oque ele faz?? Simples, ele torna o usuário invisível. aff, mas já existe o stealth ring que faz isso! Sim mas d

eu só queria ver a cara dos players qnd eles tivessem no meio de um pvp insano e o cara desaparecesse auhuheuhauhe

escolha uma das versões e adicione num arquivo chamado stealth.lua em movements\scripts  

@xWhiteWolf alguém me falou que dessa maneira aí, seria possível enxergar usando bots (como magebot), aí eu preferi editar a source, por garantia. 
Mas valeu, seu script serviu demais para mim. 

Link para o post
Compartilhar em outros sites

@Eduardozim 

if (target->isInGhostMode() && targetPlayer->getAccountType() < ACCOUNT_TYPE_GAMEMASTER && targetPlayer->getAccountType() < ACCOUNT_TYPE_GOD) {

Tá estranho essa verificação, no caso, você está bloqueando hit para todos os players que não são GOD (e estão invisível - detalhe: targetPlayer não foi instanciado na função), não acha? Posso está enganado, mas... se quer que o hit seja bloqueado apenas para GM para cima e que estejam invisíveis, seria mais ou menos assim:

if (target->getPlayer() && target->isInGhostMode() && target->getPlayer()->getAccountType() > ACCOUNT_TYPE_SENIORTUTOR) {



 

Feliz daquele que ensina o que sabe, e aprende o que ensina.

 

               

star-wars-animated-gif-23.gif

Link para o post
Compartilhar em outros sites

@lordzetros 
Como eu postei funcionou normalmente, verifica se o jogador é god ou gm, se for então não poderá ser atacado, se for player vai poder ser atacado.

Salvo engano "target"(que foi iniciada dentro do bool) leva a "getPlayer()"

Tentei mais ou menos da maneira que você falou, mas não funcionou. 

O uso dessa função eu peguei dentro do próprio game.cpp, mas em outra linha, então só repliquei e coloquei a "player * targetPlayer = ..."

Editado por Eduardozim (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 5 weeks later...

O meu nao deu certo, podem me ajudar? uso 8.6

 

Edit 1: quero usar a primeira opçao que da 3% de dado a cada segundo

Edit 2: consegui usar, configurei tudo certinho, mas queria saber se tem como fazer o player que fica invisivel não pode atacar nada e nem usar skill

Editado por fritsche2002
Informaçoes faltando (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 1 year later...
Em 28/06/2014 em 08:16, xWhiteWolf disse:

Fala galera do TK, criei esse anelzinho pra servers que procuram inovar.. 
bom, oque ele faz??
Simples, ele torna o usuário invisível.
aff, mas já existe o stealth ring que faz isso!
Sim mas dessa vez eu digo invisível mesmo, nenhum monstro ou players conseguirá te ver.
que lixo, assim qualquer player vai poder ficar invisível e passar no meio dos monstros e players.. vai estragar o server
Aí é que vc se engana porque o anel vem uma maldição, quem usar ele vai perdendo 3% de vida por segundo (ajustável) e só vai estragar o server se vc sair distribuindo o anel pra todos os players haha

O anel em si possui duas versões, na primeira ele retira 3% de vida por segundo, na segunda ele adiciona uma condição que te deixa perdendo uma quantidade fixa de vida, CONTUDO, na segunda versão aparece uma poça de sangue cada vez que toma o dano então dá pros players te pegarem caso vc coloque o anel e resolva fugir kkkkk
Vou chamar aqui de versão 1 e 2 respectivamente.
OBS: ISSO É EM MOVEMENTS!


 

 

1ª versão (sem sangue mas que tira 3% de vida por segundo):


local invisible = createConditionObject(CONDITION_GAMEMASTER, -1, false, GAMEMASTER_INVISIBLE)
local outfit = createConditionObject(CONDITION_INVISIBLE, -1, false)
local percent = 3
local tempo = 1 -- em segundos

function onEquip(cid, item, slot)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "By using this ring you will become fully invisible and lose health over time because of it's curse.")
	function lifesteal(cid)
	steal = addEvent(lifesteal, 1000*tempo, cid)
		if isCreature(cid) then
			doSendAnimatedText(getCreaturePos(cid), "-"..math.floor((getCreatureMaxHealth(cid) * (percent/100))), 144, cid)
			doCreatureAddHealth(cid, -math.floor(getCreatureMaxHealth(cid) * (percent/100)))
		end	
	end	 
lifesteal(cid)
doAddCondition(cid, invisible)
doAddCondition(cid, outfit)
doSendMagicEffect(getCreaturePos(cid), 12)
return true
end

function onDeEquip(cid, item, slot)
doTransformItem(item.uid, 2165)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You're no longer receiving the special bonus..")
stopEvent(steal)
doRemoveCondition(cid, CONDITION_INVISIBLE)
doSendMagicEffect(getCreaturePos(cid), 12)
doRemoveCondition(cid, CONDITION_GAMEMASTER, GAMEMASTER_INVISIBLE)
return true
end
 

2ª versão (a cada 1,5 segundos ele te tira um dano configurado e deixa uma poça de sangue embaixo de vc facilitando que te identifiquem mesmo estando invisivel):


local invisible = createConditionObject(CONDITION_GAMEMASTER, -1, false, GAMEMASTER_INVISIBLE)
local outfit = createConditionObject(CONDITION_INVISIBLE, -1, false)

local condition = createConditionObject(CONDITION_PHYSICAL)
setConditionParam(condition, CONDITION_PARAM_DELAYED, TRUE)
addDamageCondition(condition, -1, 1500, -500)


function onEquip(cid, item, slot)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "By using this ring you will become fully invisible and lose health over time because of it's curse.")
doAddCondition(cid, condition)
doAddCondition(cid, invisible)
doAddCondition(cid, outfit)
doSendMagicEffect(getCreaturePos(cid), 12)
return true
end

function onDeEquip(cid, item, slot)
doTransformItem(item.uid, 2165)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You're no longer receiving the special bonus..")
doRemoveCondition(cid, CONDITION_PHYSICAL)
doRemoveCondition(cid, CONDITION_INVISIBLE)
doSendMagicEffect(getCreaturePos(cid), 12)
doRemoveCondition(cid, CONDITION_GAMEMASTER, GAMEMASTER_INVISIBLE)
return true
end

Agora edite no items.xml o stealth ring pra que ele seja infinito:


<item id="2202" article="a" name="stealth ring">
<attribute key="weight" value="100" />
<attribute key="slotType" value="ring" />
<attribute key="transformDeEquipTo" value="2165" />
</item>

e em movements.xml adicione essas linhas:


<movevent type="Equip" itemid="2202" slot="ring" event="script" value="stealth.lua"/>
<movevent type="DeEquip" itemid="2202" slot="ring" event="script" value="stealth.lua"/>

Editando:
Na primeira versão vc pode alterar as seguintes coisas que estão em colorido:
local invisible = createConditionObject(CONDITION_GAMEMASTER, -1, false, GAMEMASTER_INVISIBLE)
local outfit = createConditionObject(CONDITION_INVISIBLE, -1, false)
local percent = 3
local tempo = 1 -- em segundos

 

em vermelho é o tempo que dura a invisibilidade... -1 é infinito

em azul é a porcentagem de vida que perde por tempo
em verde é o tempo em que se perde vida.. nesse caso a cada 1 segundo perde 3%

 

Na segunda versão vc pode editar as mesmas coisas do primeiro só que o tempo e o dano pelo tempo estão na condition:

 

local condition = createConditionObject(CONDITION_PHYSICAL)
setConditionParam(condition, CONDITION_PARAM_DELAYED, TRUE)
addDamageCondition(condition, -1, 1500, -500)
 

em vermelho é o numero de vezes que vai tirar vida. Mais uma vez -1 significa infinito (infinito até remover o anel)

em azul é o dano que vc toma a cada tempo (lembre-se de deixar sempre um - na frente se não ele vai adicionar vida)
em verde é o tempo em que se perde vida.. nesse caso a cada 1 segundo e meio retira 500 de vida

 

 

Bom, é isso.. um script simples mas que vai ajudar muita gente pelo fato de usar conditions não tão comuns e de uma forma diferente haha

Meu rei, seria possível colocar alguma função (ou sei lá como chama) que impossibilita o player de usar qualquer meio de cura (poção, spell, etc) enquanto estiver usando o anel?

Link para o post
Compartilhar em outros sites
On 9/7/2020 at 8:15 PM, lolksky said:

Meu rei, seria possível colocar alguma função (ou sei lá como chama) que impossibilita o player de usar qualquer meio de cura (poção, spell, etc) enquanto estiver usando o anel?

sim, com duas modificações:
1) coloca pra ao equipar o ring setar um storage no jogador como 1 e quando remover, setar esse storage para 0
2) vc pode fazer um creaturescripts onStatsChange que verifica se o tipo de combat é Healing e se o storage for 1 vc só dá return false (pra impedir que o cara conclua essa modificação de stats)
 

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
  • 2 months later...

To tentando usar o script só com a parte de lifeSteal. Comentei o restante do código que não é necessária. Mas ainda assim, quando desequipa o ring, o soptEvent(steal) não funciona, e o player continua tomando dano até morrer. Conseguiu encontrar alguma solução?

-- local invisible = createConditionObject(CONDITION_GAMEMASTER, -1, false, GAMEMASTER_INVISIBLE)
-- local outfit = createConditionObject(CONDITION_INVISIBLE, -1, false)
local percent = 3
local tempo = 5 -- em segundos

function onEquip(cid, item, slot)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "I told you not to wear this ring..")
    function lifesteal(cid)
        steal = addEvent(lifesteal, 1000 * tempo, cid)
        if isCreature(cid) then
            doSendAnimatedText(getCreaturePos(cid), "-" .. math.floor((getCreatureMaxHealth(cid) * (percent / 100))),
                144, cid)
            doCreatureAddHealth(cid, -math.floor(getCreatureMaxHealth(cid) * (percent / 100)))
        end
    end
    lifesteal(cid)
    -- doAddCondition(cid, invisible)
    -- doAddCondition(cid, outfit)
    doSendMagicEffect(getCreaturePos(cid), 12)
    return true
end

function onDeEquip(cid, item, slot)
    doTransformItem(item.uid, 2121)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You're no longer cursed.")
    stopEvent(steal)
    -- doRemoveCondition(cid, CONDITION_INVISIBLE)
    doSendMagicEffect(getCreaturePos(cid), 12)
    -- doRemoveCondition(cid, CONDITION_GAMEMASTER, GAMEMASTER_INVISIBLE)
    return true
end

 

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.

  • Conteúdo Similar

    • Por Arkanjo39
      CUIDA, CUIDA E VEM CONHECER NOSSO SERVER. KING BAIAK ACABOU DE SER LANÇADO!!! VEM SER O TOP 1 Site com Otclient: https://kingbaiak.com/ PARA NOVOS JOGARES ADM TA DANDO AQUELA FORCINHA! SERVIDOR 8.60 COM RESETS, MONTARIAS E GOLDEN OUTFIT! INFORMAÇÕES BÁSICAS DO SERVIDOR: [+] MAPA BAIAK [+] HIGH EXP [+] RESETS COM + DAMAGE [+] AUTOLOOT AUTOMÁTICO [+] CITY DONATE [+] ROSHAMUUL, ORAMOND E NETHER [+] MONTARIAS E GOLDEN OUTFIT [+] INVASÃO DE MONSTROS AUTOMÁTICAS [+] DAILY MONSTER QUE APARECE AO LOGAR [+] MONTARIAS COM COMANDO !MOUNT [+] SISTEMA DE ROLETA ATUAL [+] CAST WATCH [+] FAST ATTACK [+] CAST ARROWS [+] PUSH CRUZADO [+] REWARD CHEST [+] WARSQUARE [+] COMBO EXP DE POTIONS [+] MINERAÇÃO COM LOJA [+] SISTEMA DE BOSS [+] CRITICAL/DODGE [500/500] [+] LIFE E MANA EM PORCENTAGEM* [+] VARIAS QUESTS [+] EVENTO DTT (AUTOMÁTICO) [+] EVENTO BATLEFIELD (AUTOMÁTICO) [+] EVENTO SNOWBALLWAR (AUTOMÁTICO) [+] EVENTO DESERT WAR (AUTOMÁTICO) [+] EVENTO ZOMBIE (AUTOMÁTICO) [+] EVENTO CAMPO MINADO (AUTOMÁTICO) [+] EVENTO TEAM BATLE (AUTOMÁTICO) [+] EVENTO CAPTURE THE FLAG (AUTOMÁTICO)
    • Por Asnan
      Fusion Games Studio, com orgulho, apresenta um servidor que o levará de volta aos dias de ouro dos jogos, onde a habilidade fazia a diferença, jogar sem bots era o padrão, cada derrota doía e cada vitória trazia uma satisfação genuína.
      Nosso servidor revive o espírito dos jogos clássicos — sem atalhos, sem trapaças, apenas pura estratégia e habilidade.
      Data de lançamento oficial: 18.10.24 15:00
      Junte-se ao Shinobi Legacy hoje!
      Site: https://www.shinobilegacy.pl
      Discord: https://discord.com/invite/ervPpDqjQt
       
      Vídeo promocional
      https://www.youtube.com/watch?v=3Z_HzIdfVjg
       
      Jogue como um dos 16 personagens do universo de Naruto.

       
      Um dos sistemas disponíveis no jogo

       
       
      Aproximamo-nos do Shinobi Legacy com total comprometimento e paixão, cuidando até dos menores detalhes. Nossos esforços e abordagem única nos diferenciam de outros servidores — isso é perceptível desde o primeiro momento em que você experimenta nosso jogo.
      Nosso mapa personalizado em Shinobi Legacy é cuidadosamente elaborado para imergir os jogadores no mundo de Naruto como nunca antes. Cada zona é projetada com detalhes, oferecendo tanto uma experiência nostálgica quanto novos desafios para jogadores de todos os níveis. Masmorras ocultas, caminhos secretos e zonas de guerra perigosas aguardam aqueles que ousam explorar!
      No Shinobi Legacy, o PvP está no coração da experiência. Nossos sistemas, como as habilidades baseadas em guildas, o sistema de adrenalina e a encantação, garantem que nenhuma batalha seja a mesma.
       
      Capturas de tela do jogo

       
       
       
    • Por BTitan
      Baiak Titan: Uma Experiência Incomparável no Universo Baiak
       
      O Baiak Titan combina a nostalgia dos antigos tempos de OTServ com a inovação e modernidade atuais. Oferecemos um mapa vasto, com mais de 100 áreas de caça para explorar, além de vocações equilibradas para um PvP justo e emocionante. Diversos eventos automáticos ocorrem diariamente, garantindo diversão constante para os jogadores. O servidor conta com vários sistemas, como por exemplo, montarias para quem utiliza o cliente exclusivo, monstros do Tibia 9.6+, sistema de mineração, entre outros!
       
      Por Que Escolher o Baiak Titan?
       
      PvP de Alta Qualidade: Embora seja um servidor Baiak, nosso mapa é cuidadosamente projetado para proporcionar ganho de experiência sem perder a seriedade do jogo, oferecendo desafios instigantes e um equilíbrio perfeito para combates épicos.
      Jogabilidade Customizada: O mapa Baiak foi exclusivamente adaptado para promover intensas batalhas de PvP, com recursos inovadores que mantêm a jogabilidade sempre fresca e emocionante.

      Detalhes do Servidor:
       
      IP: baiaktitan.com Website: https://baiaktitan.com Account Manager: 1/1
        Principais Características:
       
      Uptime 24/7, Sem Lag: Jogue a qualquer hora com a estabilidade de servidores dedicados e de alta performance. Velocidade de Ataque Equilibrada: Ajustada perfeitamente para garantir combates dinâmicos e justos. Sistema de Cast: Transmita suas jogadas ao vivo e assista aos seus amigos em ação. Cliente Exclusivo: Software personalizado com novos outfits, montarias e criaturas, enriquecendo ainda mais sua experiência no jogo. Runas, Poções e Flechas Não Infinitas: Valorizamos uma jogabilidade mais estratégica e desafiadora, onde os recursos precisam ser geridos com sabedoria.
      Eventos Automáticos:
       
      Zombie Team Battle Monster Hunter Castle (War of Emperium) Capture The Flag DOTA Corrida Arena War (O último sobrevivente ganha) Fire Storm
        Taxas do Servidor:
       
      EXP: 200x (com stages)
      Skill: 100x
      Magic: 30x
      Loot: 3x
       
      Junte-se à nossa comunidade e viva essa aventura única. O Baiak Titan espera por você!
    • Por campospkks
      Servidor muito bem otimizado, com amplo map para uma diversão imperdível. 
       
      *  Quest System
      * bugs corrigidos 90,0%
      * Client Específico (V8)
      * Mobile Adaptavel e Otimizado
      * database.sql já com (Modulo Pix) 
      * site 95,9% atualizado (Troque, pois a marca já possuí proprietário)
      * Franquia Tibia Custom baseado em armas.
       
      Site Original: soulgun.com.br
      discord.gg/cCWcaMwjuB
      Relançamento Servidor 20-09-2024
      Horario 17:00
      whatsap Grupo
      https://chat.whatsapp.com/JsAyLAmwJQyGEWgHTI4096
      Video Do Game
      https://youtu.be/N8asxdnzmGw





×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo