Estou criando um projeto para meu rpg online, e corrigi inúmeros bugs, incluindo os do chat, para ativá-lo com enter, não soltar skill quando digita, etc.
Resolvi postar aqui esse chat do Valentine modificado por mim, pois a comunidade sempre me ajudou.
Como usaremos a classe "box" em vários scripts, peço que antes de começarmos substitua todos os "@box" de seu projeto por "$box". É fácil, vá no editor de scripts, pressione Ctrl+Shift+F e digite @box. Feito isso, entre na primeira e pressione Ctrl+H, e substitua "@box" por "$box". Continue até substituir todos de seu projeto.
Feito isto, vamos começar a edição do chat. Vá para o script [SC1] New Chat e logo após de:
adicione o seguinte:
Isso fará com que ao teclar "Enter", a linha do chat onde o usuário digita suas mensagens vai ser ativada, e também fará que tal linha suma ao clicar fora do chat.
Agora, para fazer com que a linha do chat suma quando o usuário envia uma mensagem, ainda no mesmo script, logo abaixo de
você verá a linha:
Cole entre o @box.text = "" e o return o seguinte código:
Devendo ficar assim:
Está quase tudo pronto, porém ao usuário teclar enter com o chat ativo sem digitar mensagem alguma, o chat ainda não some. Para arrumar isto, basta fazer o seguinte:
Ainda no mesmo script, logo abaixo da linha:
Apague a linha:
E no lugar, cole:
Devendo ficar assim:
O chat está pronto, falta apenas corrigir o bug das Hotkeys, para não soltar skill enquanto digita. Para isso, façamos o seguinte:
No script [WIN]Window_Hotkey, abaixo da linha 50 onde está:
adicione:
ficando assim:
Isso fará que caso o chat esteja ativo, o script não executará o método usehotkey
Resolvi postar aqui esse chat do Valentine modificado por mim, pois a comunidade sempre me ajudou.
Como usaremos a classe "box" em vários scripts, peço que antes de começarmos substitua todos os "@box" de seu projeto por "$box". É fácil, vá no editor de scripts, pressione Ctrl+Shift+F e digite @box. Feito isso, entre na primeira e pressione Ctrl+H, e substitua "@box" por "$box". Continue até substituir todos de seu projeto.
Feito isto, vamos começar a edição do chat. Vá para o script [SC1] New Chat e logo após de:
- Código:
elsif Input.triggerd?(Input::Letters["Q"])
$quest_list.refresh
$quest_w.refresh
$quest_list.visible = !$quest_list.visible
$quest_list.active = !$quest_list.active
$quest_w.visible = false
$quest_w.active = false
adicione o seguinte:
- Código:
elsif Input.triggerd?(Input::Enter) and $box.active = !$box.active
$box.refresh
$box.active = $box.active
$box.visible = $box.visible
return
elsif $box.active == false
$box.text = ""
$box.visible = false
Isso fará com que ao teclar "Enter", a linha do chat onde o usuário digita suas mensagens vai ser ativada, e também fará que tal linha suma ao clicar fora do chat.
Agora, para fazer com que a linha do chat suma quando o usuário envia uma mensagem, ainda no mesmo script, logo abaixo de
- Código:
if $chat_id == 2 #Global
Network::Main.socket.send("<chat>/g #{name}: #{textss}</chat>\n")
end
você verá a linha:
- Código:
@box.text = ""
return
Cole entre o @box.text = "" e o return o seguinte código:
- Código:
$box.active = !$box.active
$box.visible = !$box.visible
Devendo ficar assim:
- Código:
$box.text = ""
$box.active = !$box.active
$box.visible = !$box.visible
return
Está quase tudo pronto, porém ao usuário teclar enter com o chat ativo sem digitar mensagem alguma, o chat ainda não some. Para arrumar isto, basta fazer o seguinte:
Ainda no mesmo script, logo abaixo da linha:
- Código:
def enviando_msg
Apague a linha:
- Código:
return if @box.text == ""
E no lugar, cole:
- Código:
if $box.text == "" and $box.active = $box.active
$box.active = !$box.active
$box.visible = !$box.visible
return
end
Devendo ficar assim:
- Código:
def enviando_msg
if $box.text == "" and $box.active = $box.active
$box.active = !$box.active
$box.visible = !$box.visible
return
end
name = $game_party.actors[0].name
level = $game_party.actors[0].level
textss = $box.text
id = Network::Main.id
O chat está pronto, falta apenas corrigir o bug das Hotkeys, para não soltar skill enquanto digita. Para isso, façamos o seguinte:
No script [WIN]Window_Hotkey, abaixo da linha 50 onde está:
- Código:
def usehotkey
adicione:
- Código:
if $box.active == true
return
end
ficando assim:
- Código:
def usehotkey
if $box.active == true
return
end
for i in 1..6
if Input.trigger?(48+i)
if $hotkey[i] != 0 and $hotkey[i] != nil
if $hotkey[i] >= 0
$ABS.player_skill($hotkey[i])
else
use_item($hotkey[i]* -1, i)
end
end
end
end
end
Isso fará que caso o chat esteja ativo, o script não executará o método usehotkey
Última edição por luucastadeu em Seg Abr 22, 2013 11:24 pm, editado 3 vez(es)