Suporte no desenvolvimento de jogos


    EO 2.0 - Healar NPC

    EpicMelanie
    EpicMelanie
    Novato
    Novato

    Mensagens : 12
    Créditos : 5
    Cash : 0

    EO 2.0 - Healar NPC Empty EO 2.0 - Healar NPC

    Mensagem por EpicMelanie em Qua Abr 06, 2016 4:46 pm

    [OBS: Não é uma "correção" mas sim uma forma de evitar que isso aconteça.]
    Bug: Quando alguém usa magias de cura no NPC, o "HP Base" dele aumenta. por exemplo, um npc possui 100/100, se eu usar uma magia que cure 100 ele ficará com 200/200.

    Solução: Impedir o lançamento de magias de cura em npcs.
    Método:
    ~Server Side~

    No Modcombat, em SpellNpc_Effect procure por:
     

    Código:
    SendAnimation mapNum, Spell(spellnum).SpellAnim, 0, 0, TARGET_TYPE_NPC, index
            SendActionMsg mapNum, sSymbol & Damage, Colour, ACTIONMSG_SCROLL, MapNpc(mapNum).Npc(index).x * 32, MapNpc(mapNum).Npc(index).y * 32




    E Substitua por:

    Código:
     SendAnimation mapNum, Spell(SpellNum).SpellAnim, 0, 0, TARGET_TYPE_NPC, Index
            SendActionMsg mapNum, "Falhou", Colour, ACTIONMSG_SCROLL, MapNpc(mapNum).NPC(Index).x * 32, MapNpc(mapNum).NPC(Index).y * 32

    Isso fará com que a animação de cura, e o texto exibindo o dano não sejam enviados. No lugar disso, o client exibirá uma mensagem: "Falhou!".

    Agora,um pouco abaixo você encontrará:

    Código:
    If increment Then
                MapNpc(mapNum).Npc(index).Vital(Vital) = MapNpc(mapNum).Npc(index).Vital(Vital) + Damage
                If Spell(spellnum).Duration > 0 Then
                    AddHoT_Npc mapNum, index, spellnum
                End If
            ElseIf Not increment Then
                MapNpc(mapNum).Npc(index).Vital(Vital) = MapNpc(mapNum).Npc(index).Vital(Vital) - Damage
            End If
        End If


    Substitua por:

    Código:
     If increment Then
            PlayerMsg Index, "Você não pode curar um NPC.", BrightRed
            ElseIf Not increment Then
                MapNpc(mapNum).NPC(Index).Vital(Vital) = MapNpc(mapNum).NPC(Index).Vital(Vital) - Damage
            End If
        End If


    Isso cancelará a cura e exibirá uma mensagem no chat do jogador:
    "Você não pode curar um NPC"
    Profane ~
    Profane ~
    Moderador Global
    Moderador Global

    Mensagens : 782
    Créditos : 128
    Cash : 0

    EO 2.0 - Healar NPC Empty Re: EO 2.0 - Healar NPC

    Mensagem por Profane ~ em Dom Abr 10, 2016 2:37 pm

    Boa analise!

    Porém a NpcSpawn, ao gerar o Npc ele seta usando o HpTo o valor X de Hp do npc, contido em seu ID.

    Não seria melhor dar continuidade nisso e apenas analisar o valor base, e caso seja maior apenas definir o valor base novamente? xD Fica a dica para quando estiver desenvolvendo.

    Não tentar modificar bruscamente algo so porque existe uma pequena falha >< corrigir ela sempre será melhor ><.


    _________________
    "Mistress of shattered hopes and forever broken dreams"

      Data/hora atual: Sex Dez 13, 2019 9:54 pm