mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-07-13 15:34:42 +00:00
Add and fill out proper ChatMessageTypes (#48)
This commit is contained in:
parent
05a0239e22
commit
c50f78948a
4 changed files with 383 additions and 72 deletions
|
|
@ -7,6 +7,16 @@ import net.psforever.types.ChatMessageType
|
||||||
import scodec.Codec
|
import scodec.Codec
|
||||||
import scodec.codecs._
|
import scodec.codecs._
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instructs client to display and/or process a chat message/command when sent server to client.
|
||||||
|
* Instructs server to route and/or process a chat message/command when sent client to server.
|
||||||
|
*
|
||||||
|
* @param messagetype the type of the chat message (CMT)
|
||||||
|
* @param has_wide_contents whether the contents contains wide characters or not
|
||||||
|
* @param recipient identifies the recipient of the message, such as in a tell (occasionally used as "sender" instead i.e. /note)
|
||||||
|
* @param contents the textual contents of the message
|
||||||
|
* @param note_contents only present when the message is of note type
|
||||||
|
*/
|
||||||
final case class ChatMsg(messagetype : ChatMessageType.Value,
|
final case class ChatMsg(messagetype : ChatMessageType.Value,
|
||||||
has_wide_contents : Boolean,
|
has_wide_contents : Boolean,
|
||||||
recipient : String,
|
recipient : String,
|
||||||
|
|
@ -25,6 +35,6 @@ object ChatMsg extends Marshallable[ChatMsg] {
|
||||||
("recipient" | PacketHelpers.encodedWideStringAligned(7)) ::
|
("recipient" | PacketHelpers.encodedWideStringAligned(7)) ::
|
||||||
newcodecs.binary_choice(has_wide_contents_value, ("contents" | PacketHelpers.encodedWideString), ("contents" | PacketHelpers.encodedString))
|
newcodecs.binary_choice(has_wide_contents_value, ("contents" | PacketHelpers.encodedWideString), ("contents" | PacketHelpers.encodedString))
|
||||||
}) :+
|
}) :+
|
||||||
conditional(messagetype_value == ChatMessageType.Note, ("note_contents" | PacketHelpers.encodedWideString))
|
conditional(messagetype_value == ChatMessageType.CMT_NOTE, ("note_contents" | PacketHelpers.encodedWideString))
|
||||||
}).as[ChatMsg]
|
}).as[ChatMsg]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,76 +8,374 @@ import scodec.codecs._
|
||||||
* ChatMessageTypes were reversed by:
|
* ChatMessageTypes were reversed by:
|
||||||
* Checking the type in the packet upon receipt by server while using slash commands
|
* Checking the type in the packet upon receipt by server while using slash commands
|
||||||
* Replaying the ChatMsg packet back to the sender after modifying the messagetype value
|
* Replaying the ChatMsg packet back to the sender after modifying the messagetype value
|
||||||
|
* Shaql magic
|
||||||
|
* english.str references to the type names
|
||||||
*
|
*
|
||||||
* Some other unchecked commands, if they actually exist as message types:
|
* Message type names that are not based on actual names are prefixed with U_
|
||||||
* Reply (/r), BattleGroup (/bg), CSRReply (/gmreply)
|
* Message type names that are completely unknown are named UNK_#
|
||||||
|
*
|
||||||
|
* Some un-assigned names (probably not all of them):
|
||||||
|
* CMT_METAGAME, CMT_SPEEDHACK, CMT_DUMPBUILDINGTREE, CMT_CLIENT_BATCH
|
||||||
|
* CMT_COMMAND_ZONE96, CMT_COMMAND_ZONE97, CMT_COMMAND_ZONE98, CMT_COMMAND_ZONE99
|
||||||
*/
|
*/
|
||||||
object ChatMessageType extends Enumeration {
|
object ChatMessageType extends Enumeration {
|
||||||
type Type = Value
|
type Type = Value
|
||||||
val Unk0, // ??? Appears in top chat pane
|
val UNK_0, // ???
|
||||||
Unk1, // ??? Appears in top chat pane
|
CMT_ALLIANCE, // ??? unused
|
||||||
Unk2, // ??? Appears in top chat pane
|
CMT_BATTLEGROUP, // /bg (not working???)
|
||||||
Broadcast, // /b
|
CMT_BROADCAST, // /broadcast OR /b
|
||||||
Command, // /c
|
CMT_COMMAND, // /command OR /c
|
||||||
Global, // /comall
|
CMT_COMMAND_ALLZONES, // /comall
|
||||||
SituationReport, // /sitrep
|
CMT_COMMAND_REPORT, // /sitrep OR /situationreport
|
||||||
SanctuaryAll, // /comsan
|
CMT_COMMAND_SANCTUARY, // /comsanctuary OR /comsan
|
||||||
OrbitalStationAll, // No slash command???
|
CMT_COMMAND_STATION, // ??? unused
|
||||||
SupaiAll, // /comsu
|
CMT_COMMAND_CAVERN1, // /comsu OR /comsupai
|
||||||
HunhauAll, // /comhu
|
CMT_COMMAND_CAVERN2, // /comhu OR /comhunhau
|
||||||
AdlivunAll, // /comad
|
CMT_COMMAND_CAVERN3, // /comad OR /comadlivun
|
||||||
ByblosAll, // /comby
|
CMT_COMMAND_CAVERN4, // /comby OR /combyblos
|
||||||
AnnwnAll, // /coman
|
CMT_COMMAND_CAVERN5, // /coman OR /comannwn
|
||||||
DrugaskanAll, // /comdr
|
CMT_COMMAND_CAVERN6, // /comdr OR /comdrugaskan
|
||||||
SolsarAll, // /comso
|
CMT_COMMAND_ZONE1, // /comso OR /comsolsar
|
||||||
HossinAll, // /comho
|
CMT_COMMAND_ZONE2, // /comho OR /comhossin
|
||||||
CyssorAll, // /comcy
|
CMT_COMMAND_ZONE3, // /comcy OR /comcyssor
|
||||||
IshundarAll, // /comis
|
CMT_COMMAND_ZONE4, // /comis OR /comishundar
|
||||||
ForseralAll, // /comfo
|
CMT_COMMAND_ZONE5, // /comfo OR /comforseral
|
||||||
CeryshenAll, // /comce
|
CMT_COMMAND_ZONE6, // /comce OR /comceryshen
|
||||||
EsamirAll, // /comes
|
CMT_COMMAND_ZONE7, // /comes OR /comesamir
|
||||||
OshurAll, // /comos
|
CMT_COMMAND_ZONE8, // /comos OR /comoshur
|
||||||
OshurPrimeAll, // /compr
|
CMT_COMMAND_ZONE8_PRIME, // /compr OR /comoshurprime
|
||||||
SearhusAll, // /comse
|
CMT_COMMAND_ZONE9, // /comse OR /comsearhus
|
||||||
AmerishAll, // /comam
|
CMT_COMMAND_ZONE10, // /comam OR /comamerish
|
||||||
Local, // /l
|
CMT_OPEN, // /local OR /l
|
||||||
Outfit, // /o
|
CMT_OUTFIT, // /outfit OR /o
|
||||||
Platoon, // /p
|
CMT_PLATOON, // /platoon OR /p
|
||||||
SquadLeaders, // /pl
|
CMT_PLATOONLEADER, // /platoonleader OR /pl
|
||||||
Squad, // /s
|
CMT_SQUAD, // /squad OR /s
|
||||||
SquadCommand, // /sl
|
CMT_SQUADLEADER, // /sl
|
||||||
Tell, // /t
|
CMT_TELL, // /tell OR /t
|
||||||
BlackOps, // No slash command???
|
U_CMT_BLACKOPS_CHAT, // ??? No slash command?
|
||||||
CSRBroadcast, // /gmbroadcast
|
CMT_GMBROADCAST, // /gmbroadcast
|
||||||
CSRBroadcastNC, // /ncbroadcast
|
CMT_GMBROADCAST_NC, // /ncbroadcast
|
||||||
CSRBroadcastTR, // /trbroadcast
|
CMT_GMBROADCAST_TR, // /trbroadcast
|
||||||
CSRBroadcastVS, // /vsbroadcast
|
CMT_GMBROADCAST_VS, // /vsbroadcast
|
||||||
CSRWorldBroadcast, // /worldbroadcast || /wb
|
CMT_GMBROADCASTWORLD, // /worldbroadcast OR /wb
|
||||||
CSR, // /gmlocal
|
CMT_GMOPEN, // /gmlocal
|
||||||
CSRTell, // /gmtell (actually causes normal /tell 0x20 when not a gm???)
|
CMT_GMTELL, // /gmtell (actually causes normal /tell 0x20 when not a gm???)
|
||||||
Note, // /note
|
CMT_NOTE, // /note
|
||||||
CSRWorldBroadcastPopup, // /gmpopup
|
CMT_GMBROADCASTPOPUP, // /gmpopup
|
||||||
CSRTellTo, // Recipient of /gmtell
|
U_CMT_GMTELLFROM, // ??? Recipient of /gmtell?
|
||||||
TellTo, // Recipient of /t
|
U_CMT_TELLFROM, // ??? Recipient of /t?
|
||||||
Unk45, // ??? Looks like local?
|
UNK_45, // ??? empty
|
||||||
Unk46, // ??? This actually causes the client to ping back to the server with some stringified numbers "80 120" (with the same 46 chatmsg causing infinite loop?) - may be incorrect decoding
|
CMT_CULLWATERMARK, // ??? This actually causes the client to ping back to the server with some stringified numbers "80 120" (with the same 46 chatmsg causing infinite loop?) - may be incorrect decoding
|
||||||
PopupInstantAction, // Sent when Instant Action invoked
|
CMT_INSTANTACTION, // /instantaction OR /ia
|
||||||
PopupRecallSanctuary, // Sent when Recall To Sanctuary invoked
|
CMT_RECALL, // /recall
|
||||||
Unk49, // ???
|
CMT_OUTFIT_RECALL, // /outfitrecall
|
||||||
Unk50, // ???
|
CMT_SQUAD_REMATRIX, // ???
|
||||||
Unk51, // ???
|
CMT_OUTFITRENAME_USER, // /outfitrename
|
||||||
Unk52, // ???
|
CMT_RENAME_USER, // /rename
|
||||||
Unk53, // ???
|
CMT_REPORTUSER, // /report
|
||||||
Unk54, // ???
|
CMT_VOICE, // quickchat (v-- commands)
|
||||||
Unk55, // ???
|
CMT_WHO, // /who
|
||||||
Unk56, // ???
|
CMT_WHO_CSR, // /whocsr OR /whogm
|
||||||
Unk57, // ???
|
CMT_WHO_PLATOONLEADERS, // /whoplatoonleaders OR /whopl
|
||||||
Unk58, // ???
|
CMT_WHO_SQUADLEADERS, // /whosquadleaders OR /whosl
|
||||||
Unk59, // ???
|
CMT_WHO_TEAMS, // /whoteams OR /whoempires
|
||||||
Unk60, // ???
|
CMT_WHO_CR, // /who cr<#>
|
||||||
PopupQuit // Sent when Quit invoked
|
CMT_QUIT, // /quit OR /q
|
||||||
// Could be more types
|
CMT_HIDE_HELMET, // /hide_helmet OR /helmet
|
||||||
|
CMT_TOGGLE_HAT, // /hat
|
||||||
|
CMT_TOGGLE_SHADES, // /shades
|
||||||
|
CMT_TOGGLE_EARPIECE, // /earpiece
|
||||||
|
CMT_TOGGLE_GM, // /gmtoggle
|
||||||
|
CMT_ANONYMOUS, // /anon OR /anonymous
|
||||||
|
CMT_DESTROY, // /destroy
|
||||||
|
CMT_KICK, // /worldkick
|
||||||
|
CMT_KICK_BY_ID, // /worldkickid
|
||||||
|
UNK_71, // ??? empty (though the game elsewhere handles it similarly to 69!)
|
||||||
|
CMT_LOCKSERVER, // /lockserver
|
||||||
|
CMT_UNLOCKSERVER, // /unlockserver
|
||||||
|
CMT_CAPTUREBASE, // /capturebase
|
||||||
|
CMT_CREATE, // /create
|
||||||
|
CMT_HACK_DOORS, // /hackdoors
|
||||||
|
CMT_OUTFITCLAIM, // /outfitclaim
|
||||||
|
CMT_OUTFITUNCLAIM, // /outfitunclaim
|
||||||
|
CMT_SETBASERESOURCES, // /setbaseresources
|
||||||
|
U_CMT_SETHEALTH_TARGET, // /sethealth t
|
||||||
|
U_CMT_SETARMOR_TARGET, // /setarmor t
|
||||||
|
CMT_SETVEHICLERESOURCES, // /setvehicleresources
|
||||||
|
CMT_SUPER_CREATE, // /supercreate OR /sc
|
||||||
|
CMT_VORTEX_MODULE, // /vortex OR /vtx
|
||||||
|
U_CMT_RESPAWNAMS, // /respawnams ("Create AMS Resp")
|
||||||
|
CMT_ADDBATTLEEXPERIENCE, // /addbep
|
||||||
|
CMT_ADDCERTIFICATION, // /certadd
|
||||||
|
CMT_ADDCOMMANDEXPERIENCE, // /addcep
|
||||||
|
CMT_ADDIMPLANT, // /addimplant
|
||||||
|
CMT_ARMOR, // /armor
|
||||||
|
CMT_ENABLEIMPLANT, // /enableimplant
|
||||||
|
CMT_EXPANSIONS, // /expansions
|
||||||
|
CMT_FIRST_TIME_EVENTS, // /firsttime OR /fte
|
||||||
|
CMT_INVENTORYLAYOUT, // /inventory
|
||||||
|
CMT_REMOVECERTIFICATION, // /certrm
|
||||||
|
CMT_REMOVEIMPLANT, // /removeimplant
|
||||||
|
CMT_SAVE, // /save
|
||||||
|
CMT_SETBATTLEEXPERIENCE, // /setbep
|
||||||
|
CMT_SETBATTLERANK, // /setbr
|
||||||
|
CMT_SETCAPACITANCE, // /setcapacitance
|
||||||
|
CMT_SETCOMMANDEXPERIENCE, // /setcep
|
||||||
|
CMT_SETCOMMANDRANK, // /setcr
|
||||||
|
CMT_SETFAVORITE, // /setfavorite
|
||||||
|
CMT_SETHEALTH, // /sethealth
|
||||||
|
CMT_SETARMOR, // /setarmor
|
||||||
|
CMT_SETIMPLANTSLOTS, // /setimplantslots
|
||||||
|
CMT_SETSTAMINA, // /setstamina
|
||||||
|
CMT_SUICIDE, // /suicide
|
||||||
|
CMT_USEFAVORITE, // /favorite
|
||||||
|
CMT_TOGGLERESPAWNPENALTY, // /togglerespawnpenalty
|
||||||
|
CMT_SETAMMO, // /setammo
|
||||||
|
CMT_AWARD_QUALIFY, // /award_qualify
|
||||||
|
CMT_AWARD_PROGRESS, // /award_progress
|
||||||
|
CMT_AWARD_ADD, // /award_add
|
||||||
|
CMT_AWARD_REMOVE, // /award_remove
|
||||||
|
CMT_STAT_ADD, // /stat_add
|
||||||
|
CMT_BFR_SETCAVERNCAPS, // /bfr_setcaverncaps
|
||||||
|
CMT_BFR_SETCAVERNKILLS, // /bfr_setcavernkills
|
||||||
|
CMT_BFR_IMPRINT, // /bfr_imprint
|
||||||
|
CMT_BFR_DAMAGE, // /bfrdamage
|
||||||
|
CMT_BFR_DAMAGEWEAPON, // /bfrdamageweapon
|
||||||
|
CMT_RESETPURCHASETIMERS, // /resetpurchasetimers
|
||||||
|
CMT_EVENTPLAYTIME, // /eventplaytime
|
||||||
|
CMT_SETTIME, // /settime
|
||||||
|
CMT_SETTIMESPEED, // /settimespeed
|
||||||
|
CMT_SNOOP, // /snoop
|
||||||
|
CMT_SOULMARK, // /soulmark
|
||||||
|
CMT_FLY, // /fly
|
||||||
|
CMT_SPEED, // /speed
|
||||||
|
CMT_TOGGLESPECTATORMODE, // /spectator
|
||||||
|
CMT_INFO, // /info
|
||||||
|
CMT_SHOWZONES, // /showzones
|
||||||
|
CMT_SYNC, // /sync
|
||||||
|
CMT_SECURITY, // /security
|
||||||
|
CMT_FIND, // /find
|
||||||
|
CMT_OUTFITCONFIRM, // /outfitconfirm
|
||||||
|
CMT_OUTFITDELETE, // /outfitdelete
|
||||||
|
CMT_OUTFITRENAME_GM, // /outfitrenamegm
|
||||||
|
CMT_OUTFITLEADER, // /outfitleader
|
||||||
|
CMT_OUTFITPOINTS, // /outfitpoints
|
||||||
|
CMT_OUTFITPOINTS_CHARACTER, // /giveop
|
||||||
|
CMT_OUTFITCREDITS, // /outfitcredits
|
||||||
|
CMT_RENAME_GM, // /renamegm
|
||||||
|
CMT_SETGRIEF, // /setgrief
|
||||||
|
CMT_SILENCE, // /silence
|
||||||
|
CMT_SILENCE_OUTFIT, // /silenceoutfit
|
||||||
|
CMT_COMMAND_SILENCE, // /commandsilence
|
||||||
|
CMT_COMMAND_SILENCE_OUTFIT, // /commandsilenceoutfit
|
||||||
|
CMT_COMMAND_SILENCE_EMPIRE, // /commandsilenceempire
|
||||||
|
CMT_SUMMON, // /summon
|
||||||
|
CMT_AWARD, // /award
|
||||||
|
U_CMT_AWARD_ZONE, // /award
|
||||||
|
CMT_AWARD_REVOKE, // /award_revoke
|
||||||
|
U_CMT_AWARD_REVOKE_ZONE, // /award_revoke
|
||||||
|
CMT_RESET_CERTS, // /resetcerts
|
||||||
|
U_CMT_SETBATTLERANK_OTHER, // /setbr <player_name>
|
||||||
|
U_CMT_SETCOMMANDRANK_OTHER, // /setcr <player_name>
|
||||||
|
CMT_GIVE_XP, // /givexp
|
||||||
|
CMT_BLACKOPS, // /blackops
|
||||||
|
CMT_GRANT_BFR_IMPRINT, // /grant_bfr_imprint
|
||||||
|
CMT_WARP, // /warp
|
||||||
|
CMT_SETPOPULATIONCAP, // /popcap
|
||||||
|
U_CMT_SHUTDOWN, // /shutdown "Shutdown"
|
||||||
|
CMT_MEMORYLOG, // /memorylog
|
||||||
|
U_CMT_ZONEROTATE, // /zonerotate
|
||||||
|
CMT_SHIFTER_ENABLE, // /shifteron
|
||||||
|
CMT_SHIFTER_DISABLE, // /shifteroff
|
||||||
|
CMT_SHIFTER_CREATE, // /shiftercreate
|
||||||
|
CMT_SHIFTER_CLEAR, // /shifterclear
|
||||||
|
CMT_MODULE_SPAWN_STAGGER, // /modulespawnstagger OR /stagger
|
||||||
|
CMT_MODULE_SPAWN_POP, // /modulespawnpop OR /pop
|
||||||
|
CMT_PROPERTY_OVERRIDE, // /setprop
|
||||||
|
CMT_PROPERTY_OVERRIDE_ZONE, // /setpropzone
|
||||||
|
CMT_SET_EMPIRE_BENEFIT, // /setempirebenefit
|
||||||
|
CMT_REMOVE_EMPIRE_BENEFIT, // /removeempirebenefit
|
||||||
|
CMT_SET_DEFCON_LEVEL, // /setdefconlevel
|
||||||
|
GET_DEFCON_TIME, // /get_defcon_time
|
||||||
|
CMT_RELOAD_ACTOFGOD_INFO, // /reload_actofgod
|
||||||
|
CMT_SET_DEFCON_WEIGHT, // /setdefconweight
|
||||||
|
CMT_SET_DEFCON_EVENT_NAME, // /setdefconeventname
|
||||||
|
CMT_EARTHQUAKE, // /earthquake
|
||||||
|
CMT_METEOR_SHOWER, // /meteor_shower
|
||||||
|
CMT_SPAWN_MONOLITH, // /spawn_monolith
|
||||||
|
CMT_PKG, // /pkg
|
||||||
|
CMT_ZONECOMMAND, // /zcommand
|
||||||
|
CMT_ZONESTART, // /zstart
|
||||||
|
CMT_ZONESTOP, // /zstop
|
||||||
|
CMT_ZONELOCK, // /zlock
|
||||||
|
CMT_BOLOCK, // /bolock
|
||||||
|
CMT_TRAINING_ZONE, // /train
|
||||||
|
CMT_ZONE, // /zone
|
||||||
|
CMT_SHOWDAMAGE, // /showdamage
|
||||||
|
CMT_EMPIREINCENTIVES, // /empireincentives
|
||||||
|
CMT_MINE, // /mine
|
||||||
|
CMT_BATTLEPLANPUBLISH, // /publish
|
||||||
|
CMT_BATTLEPLANUNPUBLISH, // /unpublish
|
||||||
|
CMT_BATTLEPLANSUBSCRIBE, // /subscribe
|
||||||
|
CMT_BATTLEPLANUNSUBSCRIBE, // /unsubscribe
|
||||||
|
CMT_TEST_BLDG_MODULES, // /testmodule
|
||||||
|
CMT_SQUAD_TEST, // /squadtest
|
||||||
|
CMT_HOTSPOT, // /hotspot OR /hot
|
||||||
|
CMT_SHIFTER_SAVE, // /shiftersave
|
||||||
|
CMT_SHIFTER_LOAD, // /shifterload
|
||||||
|
CMT_LIST_ASSETS, // /listassets
|
||||||
|
CMT_CHECK_PROPERTIES, // /checkprops
|
||||||
|
CMT_PROPERTY_QUERY, // /queryprop
|
||||||
|
CMT_INACTIVITYTIMEOUT, // /inactivitytimeout
|
||||||
|
CMT_SHOW_XPSPLIT, // /xpsplit
|
||||||
|
CMT_XPDIST, // /xpdist
|
||||||
|
CMT_SHOWXPDIST, // /showxpdist
|
||||||
|
CMT_ENTITYREPORT, // /entityreport
|
||||||
|
CMT_START_MISSION, // /startmission
|
||||||
|
CMT_RESET_MISSION, // /resetmission
|
||||||
|
CMT_CANCEL_MISSION, // /cancelmission
|
||||||
|
CMT_COMPLETE_MISSION, // /completemission
|
||||||
|
CMT_GOTO_MISSION_STEP, // /gotomissionstep
|
||||||
|
CMT_SHOW_MISSION_TRIGGERS, // /showmissiontriggers
|
||||||
|
CMT_ADD_VANUMODULE, // /moduleadd
|
||||||
|
CMT_REMOVE_VANUMODULE, // /moduleremove OR /modulerm
|
||||||
|
CMT_DEBUG_MASSIVE, // /debugmassive
|
||||||
|
CMT_WARP_TO_NEXT_BILLBOARD, // ???
|
||||||
|
UNK_222, // ??? "CTF Flag stolen"
|
||||||
|
UNK_223, // ??? "CTF Flag lost"
|
||||||
|
UNK_224, // ??? "Vehicle Dismount"
|
||||||
|
UNK_225, // ??? empty
|
||||||
|
UNK_226, // ??? empty
|
||||||
|
UNK_227, // ??? empty
|
||||||
|
UNK_228, // ??? empty
|
||||||
|
UNK_229, // ??? empty
|
||||||
|
UNK_230, // ??? "Vehicle Mount"
|
||||||
|
UNK_231, // ??? empty
|
||||||
|
UNK_232, // ??? empty
|
||||||
|
CMT_ALARM, // /alarm
|
||||||
|
CMT_APPEAL, // /appeal
|
||||||
|
CMT_BUGREPORT, // /bug
|
||||||
|
CMT_CHATLOG, // /log
|
||||||
|
CMT_CREATE_MACRO, // /macro
|
||||||
|
CMT_EMOTE, // /emote OR /em
|
||||||
|
CMT_FILTER, // /filter
|
||||||
|
CMT_FRIENDS, // /friends
|
||||||
|
CMT_IGNORE, // /ignore
|
||||||
|
CMT_HELP, // /help OR /gm
|
||||||
|
CMT_LOC, // /loc
|
||||||
|
CMT_REPLY, // /reply OR /r
|
||||||
|
CMT_TIME, // /time
|
||||||
|
CMT_TIMEDHELP, // /timedhelp
|
||||||
|
CMT_TOGGLE_STATS, // /stats
|
||||||
|
CMT_VERSION, // /version
|
||||||
|
CMT_INCENTIVES, // /incentives
|
||||||
|
CMT_HIDESPECTATOR, // /hidespectator
|
||||||
|
CMT_HUMBUG, // /humbug
|
||||||
|
CMT_SOUND_HORNS, // /horns
|
||||||
|
CMT_SQUADINVITE, // /invite OR /squadinvite
|
||||||
|
CMT_SQUADKICK, // /kick
|
||||||
|
CMT_SQUADACCEPTINVITATION // /accept OR /yes
|
||||||
|
|
||||||
|
/* TODO: Past this point, the types overflow 8 bits, so need a way to either map them for ChatMsg or just take them completely out
|
||||||
|
|
||||||
|
CMT_SQUADREJECTINVITATION, // /reject OR /no
|
||||||
|
CMT_SQUADCANCELINVITATION, // /cancel
|
||||||
|
CMT_SQUADPROMOTE, // /promote
|
||||||
|
CMT_SQUADDISBAND, // /disband
|
||||||
|
CMT_SQUADLEAVE, // /leave
|
||||||
|
CMT_SQUADPROXIMITY, // /proximity
|
||||||
|
CMT_PLATOONINVITE, // /pinvite
|
||||||
|
CMT_PLATOONKICK, // /pkick
|
||||||
|
CMT_PLATOONACCEPTINVITATION, // /paccept
|
||||||
|
CMT_PLATOONREJECTINVITATION, // /preject
|
||||||
|
CMT_PLATOONCANCELINVITATION, // /pcancel
|
||||||
|
CMT_PLATOONDISBAND, // /pdisband
|
||||||
|
CMT_PLATOONLEAVE, // /pleave
|
||||||
|
CMT_OUTFITCREATE, // /outfitcreate
|
||||||
|
CMT_OUTFITCREATEFROMSQUAD, // /outfitform
|
||||||
|
CMT_OUTFITINVITE, // /outfitinvite
|
||||||
|
CMT_OUTFITKICK, // /outfitkick
|
||||||
|
CMT_OUTFITACCEPTINVITATION, // /outfitaccept
|
||||||
|
CMT_OUTFITREJECTINVITATION, // /outfitreject
|
||||||
|
CMT_OUTFITCANCELINVITATION, // /outfitcancel
|
||||||
|
CMT_OUTFITPROMOTE, // ???
|
||||||
|
CMT_OUTFITLEAVE, // /outfitleave
|
||||||
|
CMT_OUTFITTEST, // /outfittest
|
||||||
|
CMT_BENEFITPING, // /benefitping
|
||||||
|
CMT_BENEFITTEXT, // /benefittext
|
||||||
|
CMT_VOICE_DEBUG, // /voice_debug
|
||||||
|
CMT_VOICE_HOST, // /voice_host
|
||||||
|
CMT_VOICE_REMOTEHOST, // /voice_remote
|
||||||
|
CMT_VOICE_KILLHOST, // /voice_killhost
|
||||||
|
CMT_VOICE_CONNECT, // /voice_connect
|
||||||
|
CMT_VOICE_DISCONNECT, // /voice_disconnect
|
||||||
|
CMT_VOICE_ISCONNECTED, // /voice_isconnected
|
||||||
|
CMT_VOICE_ENABLEVOX, // /voice_enablevox
|
||||||
|
CMT_VOICE_SETVOXLEVEL, // /voice_voxlevel
|
||||||
|
CMT_VOICE_SETVOXDELAY, // /voice_voxdelay
|
||||||
|
CMT_VOICE_ENABLELOOPBACK, // /voice_enableloopback
|
||||||
|
CMT_VOICE_AMPLIFYIN, // /voice_amplifyin
|
||||||
|
CMT_VOICE_AMPLIFYOUT, // /voice_amplifyout
|
||||||
|
CMT_VOICE_WHO, // /voice_who
|
||||||
|
CMT_VOICE_SETCODEC, // /voice_setcodec
|
||||||
|
CMT_GMREPLY, // /gmreply
|
||||||
|
CMT_SETWARPGATEEMPIRE, // /swe
|
||||||
|
U_CMT_SHOWPROFILE, // /showprofile
|
||||||
|
U_CMT_SHOWTERRAINMAP, // /showterrainmap
|
||||||
|
U_CMT_TACTICAL, // /tactical
|
||||||
|
U_CMT_CLIENTEXPERIMENTAL1, // /clientexperimental1
|
||||||
|
U_CMT_CLIENTEXPERIMENTAL2, // /clientexperimental2
|
||||||
|
CMT_UPLINKFRIENDLY, // /showfriendly
|
||||||
|
CMT_UPLINKENEMY, // /showenemy
|
||||||
|
CMT_UPLINKEMPBLAST, // /emp
|
||||||
|
CMT_UPLINKRESETTIMERS, // /resetuplinktimers
|
||||||
|
CMT_PAINTBALL, // /paintball
|
||||||
|
U_CMT_DUMPANIMCACHE, // /dumpanimcache
|
||||||
|
U_CMT_SLASH, // /
|
||||||
|
UNK_310, // ??? empty
|
||||||
|
UNK_311, // ??? empty
|
||||||
|
UNK_312, // ??? empty
|
||||||
|
UNK_313, // ??? empty
|
||||||
|
UNK_314 // ??? empty
|
||||||
|
// Could be more types?
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
= Value
|
= Value
|
||||||
|
|
||||||
implicit val codec = PacketHelpers.createEnumerationCodec(this, uint8L)
|
implicit val codec = PacketHelpers.createEnumerationCodec(this, uint8L)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Additional comments from shaql:
|
||||||
|
IDs other than the ones tested already:
|
||||||
|
(ones that are actually checked by the client)
|
||||||
|
|
||||||
|
54
|
||||||
|
225
|
||||||
|
94
|
||||||
|
238
|
||||||
|
26
|
||||||
|
226
|
||||||
|
230
|
||||||
|
224
|
||||||
|
145: chat_prefix_gmtell, target of /silence <character> [minutes]
|
||||||
|
69, 71: uses text "Enabled = false\nParent.Cancel.Enabled\nui_hidedialog" (maybe /hidespectator?)
|
||||||
|
92: /expansions <id> [on|off] (free play being 46 or so?)
|
||||||
|
66: does something about on/off, "basic_string" (which seems like a generic thing)
|
||||||
|
46: very similar to 66
|
||||||
|
72:chat_prefix_gm, shows an OK-dialog, uses '@ERRNoWCharToCharConversion'
|
||||||
|
45
|
||||||
|
221
|
||||||
|
47-50, 61
|
||||||
|
192: /showdamage [on|off]
|
||||||
|
231
|
||||||
|
222, 223, 229: something about "_sound"; in some cases ends up in the 'default' ID. could be anything...
|
||||||
|
228
|
||||||
|
232
|
||||||
|
130: something about on, but no off (and no .str checking), and something about a 1.0 float
|
||||||
|
128
|
||||||
|
129: similar to 130
|
||||||
|
33 is handled similarly to 4-25
|
||||||
|
*/
|
||||||
|
|
|
||||||
|
|
@ -174,7 +174,7 @@ class GamePacketTest extends Specification {
|
||||||
"decode" in {
|
"decode" in {
|
||||||
PacketCoding.DecodePacket(string_local).require match {
|
PacketCoding.DecodePacket(string_local).require match {
|
||||||
case ChatMsg(messagetype, has_wide_contents, recipient, contents, note_contents) =>
|
case ChatMsg(messagetype, has_wide_contents, recipient, contents, note_contents) =>
|
||||||
messagetype mustEqual ChatMessageType.Local
|
messagetype mustEqual ChatMessageType.CMT_OPEN
|
||||||
has_wide_contents mustEqual true
|
has_wide_contents mustEqual true
|
||||||
recipient mustEqual ""
|
recipient mustEqual ""
|
||||||
contents mustEqual "abc"
|
contents mustEqual "abc"
|
||||||
|
|
@ -185,7 +185,7 @@ class GamePacketTest extends Specification {
|
||||||
|
|
||||||
PacketCoding.DecodePacket(string_tell).require match {
|
PacketCoding.DecodePacket(string_tell).require match {
|
||||||
case ChatMsg(messagetype, has_wide_contents, recipient, contents, note_contents) =>
|
case ChatMsg(messagetype, has_wide_contents, recipient, contents, note_contents) =>
|
||||||
messagetype mustEqual ChatMessageType.Tell
|
messagetype mustEqual ChatMessageType.CMT_TELL
|
||||||
has_wide_contents mustEqual true
|
has_wide_contents mustEqual true
|
||||||
recipient mustEqual "def"
|
recipient mustEqual "def"
|
||||||
contents mustEqual "abc"
|
contents mustEqual "abc"
|
||||||
|
|
@ -196,12 +196,12 @@ class GamePacketTest extends Specification {
|
||||||
}
|
}
|
||||||
|
|
||||||
"encode" in {
|
"encode" in {
|
||||||
val msg_local = ChatMsg(ChatMessageType.Local, true, "", "abc", None)
|
val msg_local = ChatMsg(ChatMessageType.CMT_OPEN, true, "", "abc", None)
|
||||||
val pkt_local = PacketCoding.EncodePacket(msg_local).require.toByteVector
|
val pkt_local = PacketCoding.EncodePacket(msg_local).require.toByteVector
|
||||||
|
|
||||||
pkt_local mustEqual string_local
|
pkt_local mustEqual string_local
|
||||||
|
|
||||||
val msg_tell = ChatMsg(ChatMessageType.Tell, true, "def", "abc", None)
|
val msg_tell = ChatMsg(ChatMessageType.CMT_TELL, true, "def", "abc", None)
|
||||||
val pkt_tell = PacketCoding.EncodePacket(msg_tell).require.toByteVector
|
val pkt_tell = PacketCoding.EncodePacket(msg_tell).require.toByteVector
|
||||||
|
|
||||||
pkt_tell mustEqual string_tell
|
pkt_tell mustEqual string_tell
|
||||||
|
|
|
||||||
|
|
@ -166,10 +166,13 @@ class WorldSessionActor extends Actor with MDCContextAware {
|
||||||
//log.info("PlayerState: " + msg)
|
//log.info("PlayerState: " + msg)
|
||||||
|
|
||||||
case msg @ ChatMsg(messagetype, has_wide_contents, recipient, contents, note_contents) =>
|
case msg @ ChatMsg(messagetype, has_wide_contents, recipient, contents, note_contents) =>
|
||||||
log.info("Chat: " + msg)
|
// TODO: Prevents log spam, but should be handled correctly
|
||||||
|
if (messagetype != ChatMessageType.CMT_TOGGLE_GM) {
|
||||||
|
log.info("Chat: " + msg)
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: handle this appropriately
|
// TODO: handle this appropriately
|
||||||
if(messagetype == ChatMessageType.PopupQuit) {
|
if(messagetype == ChatMessageType.CMT_QUIT) {
|
||||||
sendResponse(DropCryptoSession())
|
sendResponse(DropCryptoSession())
|
||||||
sendResponse(DropSession(sessionId, "user quit"))
|
sendResponse(DropSession(sessionId, "user quit"))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue