Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte ao desenvolvimento de jogos


    LM² - No PvP Zone/Region (2.1.4)

    Votação

    Funcionou em seu servidor?

    [ 1 ]
    LM² - No PvP Zone/Region (2.1.4) 1101050%LM² - No PvP Zone/Region (2.1.4) 31010 [50%] 
    [ 1 ]
    LM² - No PvP Zone/Region (2.1.4) 1101050%LM² - No PvP Zone/Region (2.1.4) 31010 [50%] 

    Total de votos: 2
    FraN
    FraN
    Novato
    Novato


    Mensagens : 1
    Créditos : 0

    LM² - No PvP Zone/Region (2.1.4) Empty LM² - No PvP Zone/Region (2.1.4)

    Mensagem por FraN Sex Abr 09, 2021 7:25 pm



    LM² - No PvP Zone/Region




    Alteração simples para criar uma zona não pvp dentro de um mapa pvp.

    Impede que jogadores ataquem ou sejam atacados dentro das zonas.


    Como meu pc está com problemas não tenho como gifar ou gravar um vídeo.






    Como instalar:


    Para instalar é bem simples, insira no módulo [VS] Configs no cliente e no configs.ini do servidor(esse passo é opcional segundo Val, porém melhor garantir) o seguinte código.





    Código:


    # No PvP Zone (53 = ID da zona, marque o mapa com este ID de zona)
      NO_PVP_ZONE = 53


    Sendo 53 a region/região no mapa. Recomendo não alterar a menos que saiba o que esta fazendo.



    No cliente, vá no [VS] Game_Player e procure por: def can_attack_normal? abaixo do trecho: return false




        elsif !$game_map.pvp
          $error_msg = Vocab::NonPvP
          return false

    Adicione esse código:



    Código:


      # NO PvP Zone
        elsif $game_map.pvp && $game_map.region_id(@x, @y) == Configs::NO_PVP_ZONE
          $error_msg = Vocab::NonPvP
          return false
        elsif $game_map.pvp && $game_map.region_id(x, y) == Configs::NO_PVP_ZONE
          $error_msg = Vocab::NonPvP
          return false



    No mesmo procure por: def valid_target?(range, aoe = 0) e add o código abaixo do trecho: return false

    :

            elsif @target.admin?

                $error_msg = Vocab::AttackAdmin

          return false

    Adicione esse código:


    Código:


       # NO PvP Zone
        elsif @target.is_a?(Game_NetPlayer) && $game_map.pvp && $game_map.region_id(@x, @y) == Configs::NO_PVP_ZONE
          $error_msg = Vocab::NonPvP
          return false   
        elsif @target.is_a?(Game_NetPlayer) && $game_map.pvp && $game_map.region_id(@target.x, @target.y) == Configs::NO_PVP_ZONE
          $error_msg = Vocab::NonPvP
          return false


    No cliente é apenas isso.

    Agora no servidor abra o game_client.rb dentro da subpasta Combat, que fica dentro da pasta Scripts

    Procure por def attack_normal, abaixo do trecho:


      next if !client&.in_game? || client.map_id != @map_id || !in_front?(client) || client.admin?

    Adicione esse código:
            

    Código:


          #No PvP Zone
          return if $network.maps[@map_id].region_id(client.x, client.y) == NO_PVP_ZONE
          return if $network.maps[@map_id].region_id(@x, @y) == NO_PVP_ZONE


    No mesmo(após a alteração acima), abaixo do trecho:

            
                
    return unless target && in_range?(target, Configs::RANGE_WEAPONS[weapon_id][:range])
            
    Adicione esse código:
            
    Código:

        #No PvP Zone
        return if @target.type == Constants::TARGET_PLAYER && $network.maps[@map_id].region_id(target.x, target.y) == NO_PVP_ZONE
        return if @target.type == Constants::TARGET_PLAYER && $network.maps[@map_id].region_id(@x, @y) == NO_PVP_ZONE


    Isso é tudo.


    Agradecimentos:

    Valentine pelo VXA-OS.
    FraN

    LeonM² por fazer essa modificação.

    Quem sugeriu esse sistema no server do discord do VXA-OS que eu não lembro.


    Qualquer erro ou duvida, comentar no tópico ou deixar no server do VXA-OS.



    Editado:
    Atualizado para a versão 2.1.4.

    Valentine e FraN gostam desta mensagem


      Data/hora atual: Seg maio 06, 2024 9:24 pm