From 335f40202f7de920b3f85a47bbbeb910cc65b98c Mon Sep 17 00:00:00 2001 From: turleypol Date: Sun, 19 Apr 2026 14:50:51 +0200 Subject: [PATCH] removed CChrZ since its since a few years no longer needed --- pkg/packethooks/Chat/doChat.src | 217 +++++++++--------- .../Chat/handleCreateNewConference.src | 55 ++--- pkg/packethooks/Chat/handleJoinConference.src | 56 ++--- pkg/packethooks/Chat/handleMessage.src | 45 ++-- 4 files changed, 190 insertions(+), 183 deletions(-) diff --git a/pkg/packethooks/Chat/doChat.src b/pkg/packethooks/Chat/doChat.src index bbf36b479..459204856 100644 --- a/pkg/packethooks/Chat/doChat.src +++ b/pkg/packethooks/Chat/doChat.src @@ -3,129 +3,130 @@ use os; use polsys; use unicode; -CONST TYPE_DISPLAY_USERNAME := 0X03EB; -CONST TYPE_USERNAME_ACCEPTED := 0x03ED; -CONST TYPE_JOIN_CHANNEL := 0X03E8; +const TYPE_DISPLAY_USERNAME := 0X03EB; +const TYPE_USERNAME_ACCEPTED := 0x03ED; +const TYPE_JOIN_CHANNEL := 0X03E8; include ":chat:chatIO"; include ":chat:packets"; include ":chat:functions"; include ":chat:settings"; - program doChat() - Print("INSTALLING: Chat PH..."); - - return 1; + Print( "INSTALLING: Chat PH..." ); + + return 1; endprogram -exported function handleChatMessage(character, byref packet) - if ( CH_CheckDebug() ) - Print("handleChatMessage: "+character.name+" packet: "+packet); - endif - - var type := packet.GetInt8(3); - Print("handleChatMessage type: "+type); +exported function handleChatMessage( character, byref packet ) + if ( CH_CheckDebug() ) + Print( "handleChatMessage: " + character.name + " packet: " + packet ); + endif + + var type := packet.GetInt8( 3 ); + Print( "handleChatMessage type: " + type ); endfunction -exported function handleChatText(character, byref packet) - if ( CH_CheckDebug() ) - Print("handleChatText: "+character.name+" packet: "+packet); - endif +exported function handleChatText( character, byref packet ) + if ( CH_CheckDebug() ) + Print( "handleChatText: " + character.name + " packet: " + packet ); + endif - var cmd := packet.GetInt8(3); - Print("handleChatText cmd: "+cmd); + var cmd := packet.GetInt8( 3 ); + Print( "handleChatText cmd: " + cmd ); endfunction -exported function handleOpenChatWindow(character, byref packet) - var settings := CH_GetSettingsCfgElem("Settings"); - - if ( CH_CheckDebug() ) - Print("handleOpenChatWindow: "+character.name+" packet: "+packet); - endif - - var chat_name; - if ( settings.PermChatName ) - chat_name := GetObjProperty(character, "ChatName"); - Print("Perm chat name enabled, getting chat name: "+chat_name); - endif - - if ( !chat_name ) - chat_name := CChrZ(packet.GetUnicodeString(2, 31)); - endif - - if ( chat_name ) - // Validate chat name - if ( chat_name == character.acctname ) - SendSysMessage(character, "For security reasons, you can not use your account name for your chat name."); - return 0; - endif - - // Chat names are suposed to be permenant, but for now... - SetObjProperty(character, "ChatName", chat_name); - - // Display chat - SendChatMessagePacket(character, TYPE_USERNAME_ACCEPTED, chat_name); - - // Create Add Player packet and send to character - // TODO: maybe this should be it's own function - var packet := CreatePacket(0xB2, 13 + (Len(chat_name) * 2)); - packet.SetInt16(1, 13 + (Len(chat_name) * 2)); // length - packet.SetInt16(3, 0x03EE); // add user - // 0x0030 = user, 0x0031 = moderator, 0x0032 = muted, 0x0034 = me, 0x0035 = system - packet.SetInt16(9, 0x0034); // user type - packet.SetUnicodeString(11, CAscZ(chat_name), 0); // unicode chat name - SendChatPacket(packet, character); - - // Modify packet and send it to everyone else - var user_type; - if ( character.cmdlevel ) - user_type := 0x31; - else - user_type := 0x30; - endif - packet.SetInt16(9, user_type); - - CH_AddPlayerToChat(character.serial); // add user to datafiles - SendChatPacket(packet, "", character.serial); - - // Send character the conferences - SendConferences(character); - else - SendChatMessagePacket(character, TYPE_DISPLAY_USERNAME); - endif +exported function handleOpenChatWindow( character, byref packet ) + var settings := CH_GetSettingsCfgElem( "Settings" ); + + if ( CH_CheckDebug() ) + Print( "handleOpenChatWindow: " + character.name + " packet: " + packet ); + endif + + var chat_name; + if ( settings.PermChatName ) + chat_name := GetObjProperty( character, "ChatName" ); + Print( "Perm chat name enabled, getting chat name: " + chat_name ); + endif + + if ( !chat_name ) + chat_name := packet.GetUnicodeString( 2, 31 ); + endif + + if ( chat_name ) + // Validate chat name + if ( chat_name == character.acctname ) + SendSysMessage( character, + "For security reasons, you can not use your account name for your chat name." + ); + return 0; + endif + + // Chat names are suposed to be permenant, but for now... + SetObjProperty( character, "ChatName", chat_name ); + + // Display chat + SendChatMessagePacket( character, TYPE_USERNAME_ACCEPTED, chat_name ); + + // Create Add Player packet and send to character + // TODO: maybe this should be it's own function + var packet := CreatePacket( 0xB2, 13 + ( Len( chat_name ) * 2 ) ); + packet.SetInt16( 1, 13 + ( Len( chat_name ) * 2 ) ); // length + packet.SetInt16( 3, 0x03EE ); // add user + // 0x0030 = user, 0x0031 = moderator, 0x0032 = muted, 0x0034 = me, 0x0035 = system + packet.SetInt16( 9, 0x0034 ); // user type + packet.SetUnicodeString( 11, CAscZ( chat_name ), 0 ); // unicode chat name + SendChatPacket( packet, character ); + + // Modify packet and send it to everyone else + var user_type; + if ( character.cmdlevel ) + user_type := 0x31; + else + user_type := 0x30; + endif + packet.SetInt16( 9, user_type ); + + CH_AddPlayerToChat( character.serial ); // add user to datafiles + SendChatPacket( packet, "", character.serial ); + + // Send character the conferences + SendConferences( character ); + else + SendChatMessagePacket( character, TYPE_DISPLAY_USERNAME ); + endif endfunction -function SendChatMessagePacket(targ, type, param:="") - var packet := CreatePacket(0xB2, MSGLEN_VARIABLE); - packet.SetInt16(3, type); - - case ( type ) - TYPE_DISPLAY_USERNAME: - packet.SetInt32(5, 0); // unknown - packet.SetInt32(9, 0); // unknown - break; - TYPE_USERNAME_ACCEPTED: - packet.SetInt32(5, 0); // unknown - packet.SetUnicodeString(9, CAscZ(param), 1); // chat name - packet.SetInt32(packet.GetSize() - 1, 0); // unknown - break; - TYPE_JOIN_CHANNEL: - packet.SetInt32(5, 0); // unknown - packet.SetUnicodeString(9, CAscZ(param), 1); - packet.SetInt16(packet.GetSize() - 1, 0); // unknown - packet.SetInt16(packet.GetSize() - 1, 30); // unknown - packet.SetInt16(packet.GetSize() - 1, 0); // unknown - break; - endcase - - packet.SetInt16(1, packet.GetSize()); // packet length - - if ( CH_CheckDebug() ) - Print("SendChatMessagePacket(): "+type+" "+param); - Print("Send CM: "+packet); - endif - - packet.SendPacket(targ); +function SendChatMessagePacket( targ, type, param := "" ) + var packet := CreatePacket( 0xB2, MSGLEN_VARIABLE ); + packet.SetInt16( 3, type ); + + case ( type ) + TYPE_DISPLAY_USERNAME: + packet.SetInt32( 5, 0 ); // unknown + packet.SetInt32( 9, 0 ); // unknown + break; + TYPE_USERNAME_ACCEPTED: + packet.SetInt32( 5, 0 ); // unknown + packet.SetUnicodeString( 9, CAscZ( param ), 1 ); // chat name + packet.SetInt32( packet.GetSize() - 1, 0 ); // unknown + break; + TYPE_JOIN_CHANNEL: + packet.SetInt32( 5, 0 ); // unknown + packet.SetUnicodeString( 9, CAscZ( param ), 1 ); + packet.SetInt16( packet.GetSize() - 1, 0 ); // unknown + packet.SetInt16( packet.GetSize() - 1, 30 ); // unknown + packet.SetInt16( packet.GetSize() - 1, 0 ); // unknown + break; + endcase + + packet.SetInt16( 1, packet.GetSize() ); // packet length + + if ( CH_CheckDebug() ) + Print( "SendChatMessagePacket(): " + type + " " + param ); + Print( "Send CM: " + packet ); + endif + + packet.SendPacket( targ ); endfunction diff --git a/pkg/packethooks/Chat/handleCreateNewConference.src b/pkg/packethooks/Chat/handleCreateNewConference.src index 96eddaee8..715839469 100644 --- a/pkg/packethooks/Chat/handleCreateNewConference.src +++ b/pkg/packethooks/Chat/handleCreateNewConference.src @@ -7,29 +7,32 @@ include ":chat:packets"; include ":chat:functions"; include ":chat:settings"; -program CreateNewConference(params) - var character := params[1]; - var packet := params[2]; - params := ""; - - if ( CH_CheckDebug() ) - Print("CreateNewConference: "+character.name+" "+packet); - endif - - var conference_name := CChrZ(packet.GetUnicodeString(9, (packet.GetSize() / 2) - 5)); - var conference_pass := ""; - - if ( Find(conference_name, "{", 1) ) - conference_pass := conference_name[Find(conference_name, "{", 1) + 1, Find(conference_name, "}", 1) - 2]; - conference_name := conference_name[1, Find(conference_name, "{", 1) - 1]; - endif - - Print("Recieved conference: "+conference_name+" "+conference_pass); - - // Create conference and automaticly join player (if valid) since confs are destroyed when all leave. - if ( CreateConference(conference_name, conference_pass, character) ) - AddPlayerToConference(character, conference_name, conference_pass); - endif - - return 1; -endprogram \ No newline at end of file +program CreateNewConference( params ) + var character := params[1]; + var packet := params[2]; + params := ""; + + if ( CH_CheckDebug() ) + Print( "CreateNewConference: " + character.name + " " + packet ); + endif + + var conference_name := packet.GetUnicodeString( 9, ( packet.GetSize() / 2 ) - 5 ); + var conference_pass := ""; + + if ( Find( conference_name, "{", 1 ) ) + conference_pass := conference_name[Find( conference_name, "{", 1 ) + 1, + Find( conference_name, "}", 1 ) - 2]; + conference_name := conference_name[1, Find( conference_name, "{", 1 ) - 1]; + endif + + Print( "Recieved conference: " + conference_name + " " + conference_pass ); + + // Create conference and automaticly join player (if valid) since confs are destroyed when all leave. + if ( CreateConference( conference_name, conference_pass, character ) ) + AddPlayerToConference( character, conference_name, conference_pass ); + endif + + return 1; +endprogram + + diff --git a/pkg/packethooks/Chat/handleJoinConference.src b/pkg/packethooks/Chat/handleJoinConference.src index 49c59b253..7c3abc785 100644 --- a/pkg/packethooks/Chat/handleJoinConference.src +++ b/pkg/packethooks/Chat/handleJoinConference.src @@ -7,30 +7,32 @@ include ":chat:packets"; include ":chat:functions"; include ":chat:settings"; -program JoinConference(params) - var character := params[1]; - var packet := params[2]; - params := ""; - - if ( CH_CheckDebug() ) - Print("JoinConference: "+character.name+" "+packet); - endif - - // Sent like this: "ConferenceName" password, split them up - // comeback: Shouldn't the offset be 13 and not 11?? - var conference_name := CChrZ(packet.GetUnicodeString(11, (packet.GetSize() / 2) - 5)); - conference_name := SplitWords(conference_name, CChr(0x22)); - - var conference_pass; - if ( conference_name[2] ) - conference_pass := conference_name[2]; - conference_pass := conference_pass[2, Len(conference_pass) - 2]; - endif - - conference_name := conference_name[1]; - - // AddPlayerToConference() checks password - AddPlayerToConference(character, conference_name, conference_pass); - - return 1; -endprogram \ No newline at end of file +program JoinConference( params ) + var character := params[1]; + var packet := params[2]; + params := ""; + + if ( CH_CheckDebug() ) + Print( "JoinConference: " + character.name + " " + packet ); + endif + + // Sent like this: "ConferenceName" password, split them up + // comeback: Shouldn't the offset be 13 and not 11?? + var conference_name := packet.GetUnicodeString( 11, ( packet.GetSize() / 2 ) - 5 ); + conference_name := SplitWords( conference_name, CChr( 0x22 ) ); + + var conference_pass; + if ( conference_name[2] ) + conference_pass := conference_name[2]; + conference_pass := conference_pass[2, Len( conference_pass ) - 2]; + endif + + conference_name := conference_name[1]; + + // AddPlayerToConference() checks password + AddPlayerToConference( character, conference_name, conference_pass ); + + return 1; +endprogram + + diff --git a/pkg/packethooks/Chat/handleMessage.src b/pkg/packethooks/Chat/handleMessage.src index d7204e770..bb7ea3711 100644 --- a/pkg/packethooks/Chat/handleMessage.src +++ b/pkg/packethooks/Chat/handleMessage.src @@ -7,27 +7,28 @@ include ":chat:packets"; include ":chat:functions"; include ":chat:settings"; -program Message(params) - var character := params[1]; - var packet := params[2]; - params := ""; +program Message( params ) + var character := params[1]; + var packet := params[2]; + params := ""; - if ( CH_CheckDebug() ) - Print("Message: "+character.name+" "+packet); - endif - - var message := CChrZ(packet.GetUnicodeString(9, (packet.GetSize() / 2) - 5)); - var conference := CH_GetPlayerConference(character); - - // Todo: send correct message type: 0x0025 (Message), 0x0026 (Emote), 0x0027 (OOC) - // Note sure where OOC comes from but I think emote is a different subcommand... - var type; - type := 0x0025; - if ( conference ) - SendServerMessage(conference, type, character, message); - else - SendChatClilocMessage(character, 0x000B); // must be in conf to do this - endif - - return 1; + if ( CH_CheckDebug() ) + Print( "Message: " + character.name + " " + packet ); + endif + + var message := packet.GetUnicodeString( 9, ( packet.GetSize() / 2 ) - 5 ); + var conference := CH_GetPlayerConference( character ); + + // Todo: send correct message type: 0x0025 (Message), 0x0026 (Emote), 0x0027 (OOC) + // Note sure where OOC comes from but I think emote is a different subcommand... + var type; + type := 0x0025; + if ( conference ) + SendServerMessage( conference, type, character, message ); + else + SendChatClilocMessage( character, 0x000B ); // must be in conf to do this + endif + + return 1; endprogram +