mirror of
https://github.com/ErikasKontenis/SabrehavenServer.git
synced 2025-10-13 22:34:53 +02:00
fix items, map, protocls
This commit is contained in:
135
800OTClient/modules/game_textmessage/textmessage.lua
Normal file
135
800OTClient/modules/game_textmessage/textmessage.lua
Normal file
@@ -0,0 +1,135 @@
|
||||
MessageSettings = {
|
||||
none = {},
|
||||
consoleRed = { color = TextColors.red, consoleTab='Default' },
|
||||
consoleOrange = { color = TextColors.orange, consoleTab='Default' },
|
||||
consoleBlue = { color = TextColors.blue, consoleTab='Default' },
|
||||
centerRed = { color = TextColors.red, consoleTab='Server Log', screenTarget='lowCenterLabel' },
|
||||
centerGreen = { color = TextColors.green, consoleTab='Server Log', screenTarget='highCenterLabel', consoleOption='showInfoMessagesInConsole' },
|
||||
centerWhite = { color = TextColors.white, consoleTab='Server Log', screenTarget='middleCenterLabel', consoleOption='showEventMessagesInConsole' },
|
||||
bottomWhite = { color = TextColors.white, consoleTab='Server Log', screenTarget='statusLabel', consoleOption='showEventMessagesInConsole' },
|
||||
status = { color = TextColors.white, consoleTab='Server Log', screenTarget='statusLabel', consoleOption='showStatusMessagesInConsole' },
|
||||
statusSmall = { color = TextColors.white, screenTarget='statusLabel' },
|
||||
private = { color = TextColors.lightblue, screenTarget='privateLabel' }
|
||||
}
|
||||
|
||||
MessageTypes = {
|
||||
[MessageModes.MonsterSay] = MessageSettings.consoleOrange,
|
||||
[MessageModes.MonsterYell] = MessageSettings.consoleOrange,
|
||||
[MessageModes.BarkLow] = MessageSettings.consoleOrange,
|
||||
[MessageModes.BarkLoud] = MessageSettings.consoleOrange,
|
||||
[MessageModes.Failure] = MessageSettings.statusSmall,
|
||||
[MessageModes.Login] = MessageSettings.bottomWhite,
|
||||
[MessageModes.Game] = MessageSettings.centerWhite,
|
||||
[MessageModes.Status] = MessageSettings.status,
|
||||
[MessageModes.Warning] = MessageSettings.centerRed,
|
||||
[MessageModes.Look] = MessageSettings.centerGreen,
|
||||
[MessageModes.Loot] = MessageSettings.centerGreen,
|
||||
[MessageModes.Red] = MessageSettings.consoleRed,
|
||||
[MessageModes.Blue] = MessageSettings.consoleBlue,
|
||||
[MessageModes.PrivateFrom] = MessageSettings.consoleBlue,
|
||||
|
||||
[MessageModes.GamemasterBroadcast] = MessageSettings.consoleRed,
|
||||
|
||||
[MessageModes.DamageDealed] = MessageSettings.status,
|
||||
[MessageModes.DamageReceived] = MessageSettings.status,
|
||||
[MessageModes.Heal] = MessageSettings.status,
|
||||
[MessageModes.Exp] = MessageSettings.status,
|
||||
|
||||
[MessageModes.DamageOthers] = MessageSettings.none,
|
||||
[MessageModes.HealOthers] = MessageSettings.none,
|
||||
[MessageModes.ExpOthers] = MessageSettings.none,
|
||||
|
||||
[MessageModes.TradeNpc] = MessageSettings.centerWhite,
|
||||
[MessageModes.Guild] = MessageSettings.centerWhite,
|
||||
[MessageModes.Party] = MessageSettings.centerGreen,
|
||||
[MessageModes.PartyManagement] = MessageSettings.centerWhite,
|
||||
[MessageModes.TutorialHint] = MessageSettings.centerWhite,
|
||||
[MessageModes.BeyondLast] = MessageSettings.centerWhite,
|
||||
[MessageModes.Report] = MessageSettings.consoleRed,
|
||||
[MessageModes.HotkeyUse] = MessageSettings.centerGreen,
|
||||
|
||||
[254] = MessageSettings.private
|
||||
}
|
||||
|
||||
messagesPanel = nil
|
||||
|
||||
function init()
|
||||
for messageMode, _ in pairs(MessageTypes) do
|
||||
registerMessageMode(messageMode, displayMessage)
|
||||
end
|
||||
|
||||
connect(g_game, 'onGameEnd', clearMessages)
|
||||
messagesPanel = g_ui.loadUI('textmessage', modules.game_interface.getRootPanel())
|
||||
end
|
||||
|
||||
function terminate()
|
||||
for messageMode, _ in pairs(MessageTypes) do
|
||||
unregisterMessageMode(messageMode, displayMessage)
|
||||
end
|
||||
|
||||
disconnect(g_game, 'onGameEnd', clearMessages)
|
||||
clearMessages()
|
||||
messagesPanel:destroy()
|
||||
end
|
||||
|
||||
function calculateVisibleTime(text)
|
||||
return math.max(#text * 50, 3000)
|
||||
end
|
||||
|
||||
function displayMessage(mode, text)
|
||||
if not g_game.isOnline() then return end
|
||||
|
||||
local msgtype = MessageTypes[mode]
|
||||
if not msgtype then
|
||||
return
|
||||
end
|
||||
|
||||
if msgtype == MessageSettings.none then return end
|
||||
|
||||
if msgtype.consoleTab ~= nil and (msgtype.consoleOption == nil or modules.client_options.getOption(msgtype.consoleOption)) then
|
||||
modules.game_console.addText(text, msgtype, tr(msgtype.consoleTab))
|
||||
--TODO move to game_console
|
||||
end
|
||||
|
||||
if msgtype.screenTarget then
|
||||
local label = messagesPanel:recursiveGetChildById(msgtype.screenTarget)
|
||||
label:setText(text)
|
||||
label:setColor(msgtype.color)
|
||||
label:setVisible(true)
|
||||
removeEvent(label.hideEvent)
|
||||
label.hideEvent = scheduleEvent(function() label:setVisible(false) end, calculateVisibleTime(text))
|
||||
end
|
||||
end
|
||||
|
||||
function displayPrivateMessage(text)
|
||||
displayMessage(254, text)
|
||||
end
|
||||
|
||||
function displayStatusMessage(text)
|
||||
displayMessage(MessageModes.Status, text)
|
||||
end
|
||||
|
||||
function displayFailureMessage(text)
|
||||
displayMessage(MessageModes.Failure, text)
|
||||
end
|
||||
|
||||
function displayGameMessage(text)
|
||||
displayMessage(MessageModes.Game, text)
|
||||
end
|
||||
|
||||
function displayBroadcastMessage(text)
|
||||
displayMessage(MessageModes.Warning, text)
|
||||
end
|
||||
|
||||
function clearMessages()
|
||||
for _i,child in pairs(messagesPanel:recursiveGetChildren()) do
|
||||
if child:getId():match('Label') then
|
||||
child:hide()
|
||||
removeEvent(child.hideEvent)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function LocalPlayer:onAutoWalkFail(player)
|
||||
modules.game_textmessage.displayFailureMessage(tr('There is no way.'))
|
||||
end
|
9
800OTClient/modules/game_textmessage/textmessage.otmod
Normal file
9
800OTClient/modules/game_textmessage/textmessage.otmod
Normal file
@@ -0,0 +1,9 @@
|
||||
Module
|
||||
name: game_textmessage
|
||||
description: Manage game text messages
|
||||
author: edubart
|
||||
website: https://github.com/edubart/otclient
|
||||
sandboxed: true
|
||||
scripts: [ textmessage ]
|
||||
@onLoad: init()
|
||||
@onUnload: terminate()
|
40
800OTClient/modules/game_textmessage/textmessage.otui
Normal file
40
800OTClient/modules/game_textmessage/textmessage.otui
Normal file
@@ -0,0 +1,40 @@
|
||||
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
|
Reference in New Issue
Block a user