LM² - Input Action
Uma edição simples que permite separar interação com eventos do botão de ataque.
Como instalar:
Cliente:
Para instalar é bem simples, insira no módulo [VS] Configs no cliente o seguinte código.
- Código:
# Tecla de Ação
ACTION_KEY = :LETTER_E #LM² - Input Action
ACTION_TIME = 0.5
De preferencia abaixo de:
# Tecla de ataque
ATTACK_KEY = :CTRL
Vá para o script [VS] Enums, abaixo de:
NET_SWITCHES
Insira:
- Código:
PLAYER_ACTION
Vá para o script [VS] Send_Data, abaixo de:
def send_player_attack
return unless @socket
buffer = Buffer_Writer.new
buffer.write_byte(Enums::Packet::PLAYER_ATTACK)
@socket.send(buffer.to_s)
end
Insira:
- Código:
#LM² - Input Action
def send_player_action
return unless @socket
buffer = Buffer_Writer.new
buffer.write_byte(Enums::Packet::PLAYER_ACTION)
@socket.send(buffer.to_s)
end
Vá para o script [VS] Game_Player, abaixo de:
Coloque:select_nearest_enemy if Input.trigger?(Configs::SELECT_ENEMY_KEY)
- Código:
$network.send_player_action if Input.press?(Configs::ACTION_KEY) && !$game_map.interpreter.running? && !$typing #LM² - Input Action
Vá para o script [VS] Window_Message, troque:
@show_fast = true if Input.trigger?(Configs::ATTACK_KEY)
Por:
- Código:
@show_fast = true if Input.trigger?(Configs::ACTION_KEY) #LM² - Input Action
Vá até o script [VS] Sprite_Character, procure por def create_tip, troque a linha:
tip = "#{Vocab::Press} #{Configs::ATTACK_KEY.to_s.gsub('LETTER_', '').capitalize}"
Por:
- Código:
tip = "#{Vocab::Press} #{Configs::ACTION_KEY.to_s.gsub('LETTER_', '').capitalize}" #LM² - Input Action
Servidor:
Para instalar é bem simples, vá ao script handle_data.rb. Abaixo de:
when Enums::Packet::PLAYER_ATTACK
handle_player_attack(client)
Insira:
- Código:
when Enums::Packet::PLAYER_ACTION #LM² - Input Action
handle_player_action(client) #LM² - Input Action
Ainda nesse mesmo script, troque:
def handle_player_attack(client)
return if client.attacking?
if client.using_range_weapon?
client.attack_range
elsif client.using_normal_weapon?
client.attack_normal
end
# Interage com evento embaixo e em frente independentemente de
#o jogador ter atacado algum inimigo
if client.movable?
client.check_event_trigger_here([0])
client.check_event_trigger_there([0, 1, 2])
end
end
Por:
- Código:
def handle_player_attack(client)
return if client.attacking?
if client.using_range_weapon?
client.attack_range
elsif client.using_normal_weapon?
client.attack_normal
end
end
#LM² - Input Action
def handle_player_action(client)
return if client.interacting?
# Interage com evento embaixo e em frente independentemente de
#o jogador ter atacado algum inimigo
if client.movable?
client.check_event_trigger_here([0])
client.check_event_trigger_there([0, 1, 2])
end
client.interaction_time = Time.now + Configs::ACTION_TIME
end
Vá ao script game_client.rb, abaixo de:
Coloque:attr_accessor :guild
- Código:
attr_accessor :interaction_time #LM² - Input Action
Coloquedef attacking?@weapon_attack_time > Time.nowend
- Código:
#LM² - Input Action
def interacting?
@interaction_time > Time.now
end
Coloque:@weapon_attack_time = Time.now
- Código:
@interaction_time = Time.now #LM² - Input Action
Log:
22/10/2020 - Tópico Criado
19/11/2020 - Adicionado Cooldown para evitar spam.
05/04/2021 - Atualizado uma falha que poderia levar a bugs
Agradecimentos:
Valentine pelo VXA-OS.
Valentine pelo VXA-OS.
LeonM² por fazer essa modificação.
Qualquer erro ou duvida, comentar no tópico ou deixar no server do VXA-OS.
Última edição por LeonM² em Seg Abr 05, 2021 11:44 am, editado 3 vez(es)