Hoje venho trazer um sistema que pode deixar seu servidor com um diferencial dos demais, espero que vocês possam aprender algo com esse sistema e criar outros tipos de personalização nas mensagens.
O que seria essa personalização?
Seria uma personalização da mensagem do broadcast, em vez de ficar aquela mensagem vermelha no meio da tela, você pode escolher sua própria cor para a mensagem, no fim do tópico demonstrarei com imagens para que você possa entender melhor.
Script:
Procure pela pasta no seu otclient em modules/game_textmessage e abra o arquivo textmessage.otui e substitua por esse:
TextMessageLabel < UILabel font: verdana-11px-rounded text-align: center text-wrap: true text-auto-resize: true margin-bottom: 2 visible: false Panel anchors.fill: gameMapPanel focusable: false Panel id: centerTextMessagePanel layout: type: verticalBox fit-children: true width: 360 anchors.centerIn: parent TextMessageLabel id: highCenterLabel TextMessageLabel id: middleCenterLabel TextMessageLabel id: lowCenterLabel TextMessageLabel id: privateLabel anchors.top: parent.top anchors.bottom: centerTextMessagePanel.top anchors.horizontalCenter: parent.horizontalCenter text-auto-resize: false width: 275 TextMessageLabel id: statusLabel anchors.bottom: parent.bottom anchors.left: parent.left anchors.right: parent.right TextMessageLabel id: customMessage height: 32 anchors.top: parent.top anchors.horizontalCenter: parent.horizontalCenter background-color: #00000890 border: 1 #cc0c0c margin-top: 80 text-auto-resize: false text-wrap: false
Agora na mesma pasta abra o arquivo textmessage.lua e procure pela função displayMessage e debaixo de:
if msgtype == MessageSettings.none then return end
Coloque o seguinte script:
if mode == MessageModes.Warning then local label = messagesPanel:recursiveGetChildById('customMessage') local color = msgtype.color if ( text:find('|') ) then color = text:explode('|')[1] text = text:explode('|')[2] end label:setText(text) label:setColor(color) label:setBorderColor(color) label:setWidth(label:getTextSize().width+110) label:show() addEvent(function() g_effects.fadeIn(label, 250) end) removeEvent(label.hideEvent) label.hideEvent = scheduleEvent(function() addEvent(function() g_effects.fadeOut(label, 250) end) scheduleEvent(function() label:hide() end, 250) end, calculateVisibleTime(text)) return end
Feito essas alterações a personalização já deve estar funcionando, para testar você pode utilizar o seguinte comando:
/bc green | O torneio mundial da Elite Four se iniciará em 15min.
→ Onde /bc é o comando broadcast
→ green é a cor que deseja personalizar, pode ser tanto em hexa como o nome da cor
→ mensagem qualquer
→ É necessário colocar o pipeline | caso queira colocar uma outra cor, senão ele assumirá como padrão a cor vermelha do broadcast.
Caso você não tenha o script do broadcast, porem é impossivel não ter já que é padrão nos servidores, vou deixar disponível aqui:
Coloque na pasta do seu servidor em talkaction com o nome de broadocast.lua e coloque o seguinte:
function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end local t = string.explode(param, " ", 1) doBroadcastMessage(param) return true end
Coloque a tag no arquivo talkaction.xml:
<talkaction log="yes" words="/bc" access="4" event="script" value="broadcastclass.lua"/>
Imagens de como fica in-game:
Eai, vai ficar de fora?
Implemente já essa personalização e torne-se um servidor diferenciado dos demais.