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 = 55 #LM² - No PvP Zone
Sendo 55 a region/região no mapa. Recomendo não alterar a menos que saiba o que esta fazendo.
No cliente, vá no script [VS] Game_Player na linha 114 abaixo do trecho acima do end:
Adicione esse código:
elsif !$game_map.pvp
$windows[:chat].write_message(Vocab::NonPvP, Configs::ERROR_COLOR)
return false
- Código:
#LM² - NO PvP Zone
elsif $game_map.pvp && $game_map.region_id(@x, @y) == Configs::NO_PVP_ZONE
$windows[:chat].write_message(Vocab::NonPvP, Configs::ERROR_COLOR)
return false
elsif $game_map.pvp && $game_map.region_id(x, y) == Configs::NO_PVP_ZONE
$windows[:chat].write_message(Vocab::NonPvP, Configs::ERROR_COLOR)
return false
end
No mesmo script vá até a linha 163(Após adicionar o código acima) abaixo do trecho acima do end:
Adicione esse código:elsif @target.admin?
$windows[:chat].write_message(Vocab::AttackAdmin, Configs::ERROR_COLOR)
return false
- Código:
#LM² - NO PvP Zone
elsif @target.is_a?(Game_NetPlayer) && $game_map.pvp && $game_map.region_id(@x, @y) == Configs::NO_PVP_ZONE
$windows[:chat].write_message(Vocab::NonPvP, Configs::ERROR_COLOR)
return false
elsif @target.is_a?(Game_NetPlayer) && $game_map.pvp && $game_map.region_id(@target.x, @target.y) == Configs::NO_PVP_ZONE
$windows[:chat].write_message(Vocab::NonPvP, Configs::ERROR_COLOR)
return false
No cliente é apenas isso.
Agora no servidor abra o script game_battle.rb.
Procure por def attack_normal, na linha 176, abaixo do trecho:
Adicione esse código:next if !client&.in_game? || client.map_id != @map_id || !in_front?(client) || client.admin?
- Código:
#LM² - No PvP Zone
return if $server.maps[@map_id].region_id(client.x, client.y) == NO_PVP_ZONE
return if $server.maps[@map_id].region_id(@x, @y) == NO_PVP_ZONE
No mesmo script, linha 191(após a alteração acima), abaixo do trecho:
Adicione esse código:return unless target && in_range?(target, range)
- Código:
#LM² - No PvP Zone
return if @target.type == Constants::TARGET_PLAYER && $server.maps[@map_id].region_id(target.x, target.y) == NO_PVP_ZONE
return if @target.type == Constants::TARGET_PLAYER && $server.maps[@map_id].region_id(@x, @y) == NO_PVP_ZONE
Isso é tudo.
Agradecimentos:
Valentine pelo VXA-OS.
Valentine pelo VXA-OS.
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.
Edit:
Adicionei imagens de como é para ficar o código, para ilustrar bem a instalação.