Implement message modes for 9.6

Fix possible crash when closing otclient
Fix private messages
Fix messages in 9.6
This commit is contained in:
Eduardo Bart
2012-07-30 09:29:13 -03:00
parent 1281b04a6a
commit 59b6abfa09
22 changed files with 95 additions and 42 deletions

View File

@@ -1,4 +1,5 @@
SpeakTypesSettings = {
none = {},
say = { speakType = MessageModes.Say, color = '#FFFF00' },
whisper = { speakType = MessageModes.Whisper, color = '#FFFF00' },
yell = { speakType = MessageModes.Yell, color = '#FFFF00' },
@@ -31,6 +32,11 @@ SpeakTypes = {
[MessageModes.ChannelHighlight] = SpeakTypesSettings.channelOrange,
[MessageModes.MonsterSay] = SpeakTypesSettings.monsterSay,
[MessageModes.MonsterYell] = SpeakTypesSettings.monsterYell,
-- ignored types
[MessageModes.Spell] = SpeakTypesSettings.none,
[MessageModes.BarkLow] = SpeakTypesSettings.none,
[MessageModes.BarkLoud] = SpeakTypesSettings.none,
}
SayModes = {
@@ -454,16 +460,21 @@ function onTalk(name, level, mode, message, channelId, creaturePos)
speaktype = SpeakTypes[mode]
if not speaktype then
perror('unhandled onTalk message mode ' .. mode)
perror('unhandled onTalk message mode ' .. mode .. ': ' .. message)
return
end
if speaktype == SpeakTypesSettings.none then return end
if speaktype.hideInConsole then return end
local composedMessage = applyMessagePrefixies(name, level, message)
if speaktype.private then
addPrivateText(composedMessage, speaktype, name, false, name)
if Options.getOption('showPrivateMessagesOnScreen') and speaktype.speakType ~= SpeakPrivateNpcToPlayer then
modules.game_textmessage.displayPrivateMessage(name .. ':\n' .. message)
end
else
local channel = tr('Default')
if not defaultMessage then

View File

@@ -1,4 +1,5 @@
MessageSettings = {
none = {},
consoleRed = { color = TextColors.red, consoleTab='Default' },
consoleOrange = { color = TextColors.orange, consoleTab='Default' },
consoleBlue = { color = TextColors.blue, consoleTab='Default' },
@@ -24,6 +25,25 @@ MessageTypes = {
[MessageModes.Red] = MessageSettings.consoleRed,
[MessageModes.Blue] = MessageSettings.consoleBlue,
[MessageModes.PrivateFrom] = MessageSettings.consoleBlue,
[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.PartyManagement] = MessageSettings.centerWhite,
[MessageModes.TutorialHint] = MessageSettings.centerWhite,
[MessageModes.Market] = MessageSettings.centerWhite,
[MessageModes.BeyondLast] = MessageSettings.centerWhite,
[MessageModes.Report] = MessageSettings.consoleRed,
[MessageModes.HotkeyUse] = MessageSettings.centerGreen,
[254] = MessageSettings.private
}
@@ -37,7 +57,6 @@ end
function terminate()
disconnect(g_game, 'onTextMessage', displayMessage)
disconnect(g_game, 'onPrivateTalk', onPrivateTalk)
disconnect(g_game, 'onGameEnd',clearMessages)
clearMessages()
messagesPanel:destroy()
@@ -53,10 +72,12 @@ function displayMessage(mode, text)
local msgtype = MessageTypes[mode]
if not msgtype then
perror('unhandled onTextMessage message mode ' .. mode)
perror('unhandled onTextMessage message mode ' .. mode .. ': ' .. text)
return
end
if msgtype == MessageSettings.none then return end
if msgtype.consoleTab ~= nil and (msgtype.consoleOption == nil or Options.getOption(msgtype.consoleOption)) then
modules.game_console.addText(text, msgtype, tr(msgtype.consoleTab))
--TODO move to game_console
@@ -72,6 +93,10 @@ function displayMessage(mode, text)
end
end
function displayPrivateMessage(text)
displayMessage(254, text)
end
function displayStatusMessage(text)
displayMessage(MessageModes.Status, text)
end
@@ -88,9 +113,3 @@ function clearMessages()
end
end
end
function onPrivateTalk(code, text, speaker, speakerlevel, statmentid)
if Options.getOption('showPrivateMessagesOnScreen') then
displayMessage(254, speaker .. ':\n' .. text)
end
end