|
You last visited: Today at 12:01
Advertisement
[Help]Anyone know why?
Discussion on [Help]Anyone know why? within the CO2 Private Server forum part of the Conquer Online 2 category.
02/09/2014, 17:52
|
#1
|
elite*gold: 0
Join Date: Jan 2014
Posts: 36
Received Thanks: 1
|
[Help]Anyone know why?
Hi guys,I have a problem in Talk/Whisper/Friend/World/guild .....
the " + " dont show to others players, just show for me in Talk/Whisper/Friend/World/guild
But on BroadCasts working perfectly, show for all players '-'
Anyone know why?
See the Imgs:
sorry for my bad english!!
|
|
|
02/15/2014, 23:22
|
#2
|
elite*gold: 0
Join Date: Mar 2010
Posts: 15
Received Thanks: 0
|
i have same problem :S
|
|
|
02/15/2014, 23:49
|
#3
|
elite*gold: 12
Join Date: Jul 2011
Posts: 8,283
Received Thanks: 4,192
|
I want to say I can help, but why are you bringing problems not from our community to us? It really isn't our problem, it's a copy source from the horrible community you came from. If you used a source from this board, then you wouldn't be having these random problems. I mean, what source has "not showing the '+' character in chat" as a bug? That's just ridiculous. Maybe some attempt at changing the encoding to Arabic?
|
|
|
02/16/2014, 08:06
|
#4
|
elite*gold: 0
Join Date: Jan 2014
Posts: 36
Received Thanks: 1
|
I'm using the source Messi v11,that was posted here in this forum
my friend
you have any idea how can I solve this problem?
|
|
|
02/16/2014, 08:18
|
#5
|
elite*gold: 12
Join Date: Jul 2011
Posts: 8,283
Received Thanks: 4,192
|
Quote:
Originally Posted by KevinCOder
I'm using the source Messi v11,that was posted here in this forum
my friend
you have any idea how can I solve this problem?
|
We removed that source because of this exact reason. It started as a leaked source from one of our valued members, and was modified by many different "programmers" which broke its functionality over time. There are many good reasons why I removed the source as soon as it was posted here.
Most of our members work with normal sources or can at least give us details about the error, so here are your options. You can either provide us with details on the error (such as error messages and what you've done to try to fix it), post the problem to the forum it originated from, or hope that someone who uses the source will pay a programmer to fix it and post the results here. Why stress yourself with such a horrible source though? Why not just use a functional source from this community?
|
|
|
02/16/2014, 08:29
|
#6
|
elite*gold: 0
Join Date: Dec 2012
Posts: 1,761
Received Thanks: 950
|
It could be that you check the input of messages in the regular chat packet, but not in the broadcast packet.
|
|
|
02/17/2014, 02:53
|
#7
|
elite*gold: 0
Join Date: Jan 2014
Posts: 36
Received Thanks: 1
|
Chat:
Code:
static void Chat(Message message, Client.GameClient client)
{
message._From = client.Entity.Name;
//Console.WriteLine("[" + client.Entity.Name + "][Chat] " + message.__Message);
if (!CheckCommand(message.__Message, client))
{
if (message.ChatType != Message.Service)
{
if (client.ChatBanned)
if (DateTime.Now > client.ChatBanTime.AddMinutes(client.ChatBanLasts))
client.ChatBanned = false;
else
{
int minutes = (int)new TimeSpan((client.ChatBanTime.AddMinutes(client.ChatBanLasts) - DateTime.Now).Ticks).TotalMinutes;
client.Send(new Message("You are banned from chat. You have to wait: " + minutes + " minutes before you can speak again!", System.Drawing.Color.Green, Message.Talk));
return;
}
}
//client.Entity.KillCount /= 2;
switch (message.ChatType)
{
case Message.HawkMessage:
{
if (client.Booth != null)
{
client.Booth.HawkMessage = message;
client.SendScreen(message, true);
}
break;
}
case Message.Talk:
{
client.SendScreen(message, false);
break;
}
case Message.Whisper:
{
foreach (Client.GameClient pClient in Program.GamePool)
{
if (pClient.Entity.Name == message._To)
{
DateTime dt;
string date;
string datess;
message.Mesh = client.Entity.Mesh;
pClient.Send(message);
if (client.Account.State == Database.AccountTable.AccountState.GameMaster ||
client.Account.State == Database.AccountTable.AccountState.ProjectManager)
{
dt = DateTime.Now;
date = string.Concat(new object[] { dt.Year, "-", dt.Month, "\\" });
datess = dt.Day + "\\";
if (!Directory.Exists("gmlogs\\"))
{
Directory.CreateDirectory("gmlogs\\");
}
if (!Directory.Exists("gmlogs\\msglogs"))
{
Directory.CreateDirectory("gmlogs\\msglogs");
}
if (!Directory.Exists("gmlogs\\msglogs\\" + date))
{
Directory.CreateDirectory("gmlogs\\msglogs\\" + date);
}
if (!File.Exists(string.Concat(new object[] { "gmlogs\\msglogs\\" + date + "\\" + dt.Day + ".txt" })))
{
using (System.IO.FileStream fs = System.IO.File.Create("gmlogs\\msglogs\\" + date + "\\" + dt.Day + ".txt"))
{
fs.Close();
}
}
using (System.IO.StreamWriter file = new System.IO.StreamWriter("gmlogs\\msglogs\\" + date + "\\" + dt.Day + ".txt", true))
{
file.WriteLine(client.Entity.Name + " Talk to : [" + pClient.Entity.Name + "] Message: [" + message.__Message + "]");
}
}
return;
}
}
foreach (Game.ConquerStructures.Society.Friend friend in client.Friends.Values)
{
if (friend.Name == message._To)
{
message.__Message = message.__Message.Replace("'", "¹");
client.OnMessageBoxEventParams = new object[3];
client.OnMessageBoxEventParams[0] = client.Entity.UID;
client.OnMessageBoxEventParams[1] = friend.ID;
client.OnMessageBoxEventParams[2] = Console.TimeStamp() + message.__Message;
client.MessageOK =
delegate
{
Database.KnownPersons.UpdateMessageOnFriend(Convert.ToUInt32(client.OnMessageBoxEventParams[0]), Convert.ToUInt32(client.OnMessageBoxEventParams[1]), Convert.ToString(client.OnMessageBoxEventParams[2]));
client.Send(new Message("Message sent!", System.Drawing.Color.Green, Message.TopLeft));
};
client.MessageCancel =
delegate
{
client.OnMessageBoxEventParams = new object[0];
};
client.Send(new NpcReply(NpcReply.MessageBox, "To " + friend.Name + ": \r\n" + message.__Message + "\r\n\r\nSend? (It will replace other messages.)"));
return;
}
}
client.Send(new Message("The player is not online.", System.Drawing.Color.Orange, Message.Service));
break;
}
case (uint)COServer.Network.MsgMessageBoard.Channel.MsgTrade:
{
Message.MessageBoard.MessageInfo Info =
Message.MessageBoard.GetMsgInfoByAuthor(client.Entity.Name, (ushort)message.ChatType);
Message.MessageBoard.Delete(Info, (ushort)message.ChatType);
Message.MessageBoard.Add(client.Entity.Name, message.__Message, (ushort)message.ChatType);
break;
}
case (uint)COServer.Network.MsgMessageBoard.Channel.MsgFriend:
{
Message.MessageBoard.MessageInfo Info =
Message.MessageBoard.GetMsgInfoByAuthor(client.Entity.Name, (ushort)message.ChatType);
Message.MessageBoard.Delete(Info, (ushort)message.ChatType);
Message.MessageBoard.Add(client.Entity.Name, message.__Message, (ushort)message.ChatType);
break;
}
case (uint)COServer.Network.MsgMessageBoard.Channel.MsgTeam:
{
Message.MessageBoard.MessageInfo Info =
Message.MessageBoard.GetMsgInfoByAuthor(client.Entity.Name, (ushort)message.ChatType);
Message.MessageBoard.Delete(Info, (ushort)message.ChatType);
Message.MessageBoard.Add(client.Entity.Name, message.__Message, (ushort)message.ChatType);
break;
}
case (uint)COServer.Network.MsgMessageBoard.Channel.MsgSyn:
{
Message.MessageBoard.MessageInfo Info =
Message.MessageBoard.GetMsgInfoByAuthor(client.Entity.Name, (ushort)message.ChatType);
Message.MessageBoard.Delete(Info, (ushort)message.ChatType);
Message.MessageBoard.Add(client.Entity.Name, message.__Message, (ushort)message.ChatType);
break;
}
case (uint)COServer.Network.MsgMessageBoard.Channel.MsgOther:
{
Message.MessageBoard.MessageInfo Info =
Message.MessageBoard.GetMsgInfoByAuthor(client.Entity.Name, (ushort)message.ChatType);
Message.MessageBoard.Delete(Info, (ushort)message.ChatType);
Message.MessageBoard.Add(client.Entity.Name, message.__Message, (ushort)message.ChatType);
break;
}
case Message.Service:
{
foreach (Client.GameClient pClient in Program.GamePool)
{
if (pClient.Account.State == Database.AccountTable.AccountState.GameMaster || pClient.Account.State == Database.AccountTable.AccountState.ProjectManager)
{
message.ChatType = Message.Talk;
string _Message = "Service-> " + client.Entity.Name + " needs your help. Respond to him/her right now!!!";
message.__Message = _Message;
pClient.Send(message);
return;
}
}
break;
}
case Message.World:
{
if (client.Entity.Level >= 70 || client.Entity.Reborn != 0)
{
foreach (Client.GameClient pClient in Program.GamePool)
{
if (pClient.Entity.UID != client.Entity.UID)
pClient.Send(message);
}
}
break;
}
case Message.Guild:
{
if (client.Guild != null)
client.Guild.SendGuildMessage(message);
break;
}
case Message.Team:
{
if (client.Team != null)
{
foreach (Client.GameClient Client in client.Team.Teammates)
{
if (client.Entity.UID != Client.Entity.UID)
Client.Send(message);
}
}
break;
}
case Message.Friend:
{
foreach (Game.ConquerStructures.Society.Friend friend in client.Friends.Values)
{
if (friend.IsOnline)
friend.Client.Send(message);
}
break;
}
default:
{
client.SendScreen(message, !client.Entity.Dead);
break;
}
}
}
}
Chat/Message Packet:
Code:
#region Chat/Message (1004)
case 1004:
{
if (client.Action != 2)
return;
Message message = new Message();
message.Deserialize(packet);
if (message.__Message.Split(new string[] { "\\n" }, StringSplitOptions.RemoveEmptyEntries).Length > 0)
message.__Message = message.__Message.Split(new string[] { "\\n" }, StringSplitOptions.RemoveEmptyEntries)[0];
Chat(message, client);
break;
}
#endregion
Message.cs:
Code:
namespace Conquer_Online_Server.Network.GamePackets
{
using Conquer_Online_Server;
using Conquer_Online_Server.Client;
using Conquer_Online_Server.Interfaces;
using Conquer_Online_Server.Network;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
public class Message : IPacket
{
public string __Message;
public string _From;
public string _To;
public const uint Agate = 0x843;
public const uint study = 2024;
public const uint BroadcastMessage = 0x9c4;
public const uint Center = 0x7db;
public uint ChatType;
public const uint Clan = 0x7d6;
public System.Drawing.Color Color;
public const uint ContinueRightCorner = 0x83d;
public const uint Dialog = 0x835;
public const uint FirstRightCorner = 0x83c;
public const uint Friend = 0x7d9;
public const uint Guild = 0x7d4;
public const uint GuildAnnouncement = 0x83f;
public const uint HawkMessage = 0x838;
public uint Mesh;
public uint MessageUID1;
public uint MessageUID2;
public const uint Monster = 0xa28;
public const uint PopUP = 0x834;
public const uint Qualifier = 0x7e6;
public const uint Service = 0x7de;
public const uint SlideFromRight = 0x186a0;
public const uint SlideFromRightRedVib = 0xf4240;
public const uint System = 0x7d7;
public const uint SystemWhisper = 0x83e;
public const uint Talk = 0x7d0;
public const uint Team = 0x7d3;
public const uint Tip = 0x7df;
public const uint TopLeft = 0x7dc;
public const uint Website = 0x839;
public const uint ArenaQualifier = 2022;
public const uint Whisper = 0x7d1;
public const uint WhiteVibrate = 0x989680;
public const uint World = 0x7e5;
// private string p;
// private uint p_2;
public const uint CHISistem = 2024,
SistemaVioleta = 2115,
Middle = 2115,
kimo = 2016;
public const uint TradeBoard = 0x899,
FriendBoard = 0x89a,
TeamBoard = 0x89b,
GuildBoard = 0x89c,
OthersBoard = 0x89d;
public const uint MsgMessageBoard = 1111;
private string Mesage;
private global::System.Drawing.Color color;
private int p;
// private string Param;
// private string p_2;
// private string Words;
// private COServer.Network.MsgMessageBoard.Channel Channel;
// private int p_3;
public Message()
{
this.MessageUID1 = 0;
this.MessageUID2 = 0;
this.Mesh = 0;
}
public Message(string _Message, System.Drawing.Color _Color, uint _ChatType)
{
this.MessageUID1 = 0;
this.MessageUID2 = 0;
this.Mesh = 0;
this.__Message = _Message;
this._To = "ALL";
this._From = "SYSTEM";
this.Color = _Color;
this.ChatType = _ChatType;
}
public Message(string _Message, string __To, System.Drawing.Color _Color, uint _ChatType)
{
this.MessageUID1 = 0;
this.MessageUID2 = 0;
this.Mesh = 0;
this.__Message = _Message;
this._To = __To;
this._From = "SYSTEM";
this.Color = _Color;
this.ChatType = _ChatType;
}
public Message(string _Message, string __To, string __From, System.Drawing.Color _Color, uint _ChatType)
{
this.MessageUID1 = 0;
this.MessageUID2 = 0;
this.Mesh = 0;
this.__Message = _Message;
this._To = __To;
this._From = __From;
this.Color = _Color;
this.ChatType = _ChatType;
}
public Message(string __To, string __From, string _Message, uint _ChatType, System.Drawing.Color _Color)
{
this.MessageUID1 = 0;
this.MessageUID2 = 0;
this.Mesh = 0;
this.__Message = _Message;
this._To = "ALL";
this._From = __From;
this.Color = _Color;
this.ChatType = _ChatType;
}
public Message(string _Message, uint _ChatType)
{
this.Mesh = 0;
this.__Message = _Message;
this._To = "ALL";
this._From = "SYSTEM";
this.ChatType = _ChatType;
this.Color = Color.White;
}
public Message(string Mesage, global::System.Drawing.Color color, int p)
{
// TODO: Complete member initialization
this.MessageUID1 = 0;
this.MessageUID2 = 0;
this.Mesh = 0;
this.__Message = Mesage;
this._To = "ALL";
this._From = "SYSTEM";
this.Mesage = Mesage;
this.color = color;
this.p = p;
}
public void Deserialize(byte[] buffer)
{
this.Color = Color.FromArgb(Conquer_Online_Server.BitConverter.ToInt32(buffer, 4 + 4));
this.ChatType = Conquer_Online_Server.BitConverter.ToUInt32(buffer, 8 + 4);
this.MessageUID1 = Conquer_Online_Server.BitConverter.ToUInt32(buffer, 12 + 4);
this.MessageUID2 = Conquer_Online_Server.BitConverter.ToUInt32(buffer, 0x10 + 4);
this.Mesh = Conquer_Online_Server.BitConverter.ToUInt32(buffer, 20 + 4);
this._From = Encoding.UTF7.GetString(buffer, 0x1a, buffer[0x19 + 4]);
this._To = Encoding.UTF7.GetString(buffer, 0x1b + 4 + this._From.Length, buffer[0x1a + 4 + this._From.Length]);
this.__Message = Encoding.UTF7.GetString(buffer, (0x1d + 4 + this._From.Length) + this._To.Length, buffer[(0x1c + 4 + this._From.Length) + this._To.Length]);
}
public void Send(GameClient client)
{
client.Send(this.ToArray());
}
public byte[] ToArray()
{
byte[] buffer = new byte[(((0x20 + 4 + this._From.Length) + this._To.Length) + this.__Message.Length) + 9];
Writer.WriteUInt16((ushort)(buffer.Length - 8), 0, buffer);
Writer.WriteUInt16(0x3ec, 2, buffer);
Writer.WriteUInt32((uint)this.Color.ToArgb(), 4 + 4, buffer);
Writer.WriteUInt32(this.ChatType, 8 + 4, buffer);
Writer.WriteUInt32(this.MessageUID1, 12 + 4, buffer);
Writer.WriteUInt32(this.MessageUID2, 0x10 + 4, buffer);
Writer.WriteUInt32(this.Mesh, 20 + 4, buffer);
Writer.WriteStringList(new List<string> { this._From, this._To, "", this.__Message }, 0x18 + 4, buffer);
return buffer;
}
public class MessageBoard
{
private const Int32 TITLE_SIZE = 44;
private const Int32 LIST_SIZE = 10;
private static List<MessageInfo> TradeBoard = new List<MessageInfo>();
private static List<MessageInfo> FriendBoard = new List<MessageInfo>();
private static List<MessageInfo> TeamBoard = new List<MessageInfo>();
private static List<MessageInfo> SynBoard = new List<MessageInfo>();
private static List<MessageInfo> OtherBoard = new List<MessageInfo>();
private static List<MessageInfo> SystemBoard = new List<MessageInfo>();
public struct MessageInfo
{
public String Author;
public String Words;
public String Date;
};
public static void Add(String Author, String Words, ushort Channel)
{
MessageInfo Info = new MessageInfo();
Info.Author = Author;
Info.Words = Words;
Info.Date = DateTime.Now.ToString("yyyyMMddHHmmss");
switch (Channel)
{
case 2201:
TradeBoard.Add(Info);
break;
case 2202:
FriendBoard.Add(Info);
break;
case 2203:
TeamBoard.Add(Info);
break;
case 2204:
SynBoard.Add(Info);
break;
case 2205:
OtherBoard.Add(Info);
break;
case 2206:
SystemBoard.Add(Info);
break;
}
}
public static void Delete(MessageInfo Message, ushort Channel)
{
switch (Channel)
{
case 2201:
if (TradeBoard.Contains(Message))
TradeBoard.Remove(Message);
break;
case 2202:
if (FriendBoard.Contains(Message))
FriendBoard.Remove(Message);
break;
case 2203:
if (TeamBoard.Contains(Message))
TeamBoard.Remove(Message);
break;
case 2204:
if (SynBoard.Contains(Message))
SynBoard.Remove(Message);
break;
case 2205:
if (OtherBoard.Contains(Message))
OtherBoard.Remove(Message);
break;
case 2206:
if (SystemBoard.Contains(Message))
SystemBoard.Remove(Message);
break;
}
}
public static String[] GetList(UInt16 Index, ushort Channel)
{
MessageInfo[] Board = null;
switch (Channel)
{
case 2201:
Board = TradeBoard.ToArray();
break;
case 2202:
Board = FriendBoard.ToArray();
break;
case 2203:
Board = TeamBoard.ToArray();
break;
case 2204:
Board = SynBoard.ToArray();
break;
case 2205:
Board = OtherBoard.ToArray();
break;
case 2206:
Board = SystemBoard.ToArray();
break;
default:
return null;
}
if (Board.Length == 0)
return null;
if ((Index / 8 * LIST_SIZE) > Board.Length)
return null;
String[] List = null;
Int32 Start = (Board.Length - ((Index / 8 * LIST_SIZE) + 1));
if (Start < LIST_SIZE)
List = new String[(Start + 1) * 3];
else
List = new String[LIST_SIZE * 3];
Int32 End = (Start - (List.Length / 3));
Int32 x = 0;
for (Int32 i = Start; i > End; i--)
{
List[x + 0] = Board[i].Author;
if (Board[i].Words.Length > TITLE_SIZE)
List[x + 1] = Board[i].Words.Remove(TITLE_SIZE, Board[i].Words.Length - TITLE_SIZE);
else
List[x + 1] = Board[i].Words;
List[x + 2] = Board[i].Date;
x += 3;
}
return List;
}
public static String GetWords(String Author, ushort Channel)
{
MessageInfo[] Board = null;
switch (Channel)
{
case 2201:
Board = TradeBoard.ToArray();
break;
case 2202:
Board = FriendBoard.ToArray();
break;
case 2203:
Board = TeamBoard.ToArray();
break;
case 2204:
Board = SynBoard.ToArray();
break;
case 2205:
Board = OtherBoard.ToArray();
break;
case 2206:
Board = SystemBoard.ToArray();
break;
default:
return "";
}
foreach (MessageInfo Info in Board)
{
if (Info.Author == Author)
return Info.Words;
}
return "";
}
public static MessageInfo GetMsgInfoByAuthor(String Author, ushort Channel)
{
MessageInfo[] Board = null;
switch (Channel)
{
case 2201:
Board = TradeBoard.ToArray();
break;
case 2202:
Board = FriendBoard.ToArray();
break;
case 2203:
Board = TeamBoard.ToArray();
break;
case 2204:
Board = SynBoard.ToArray();
break;
case 2205:
Board = OtherBoard.ToArray();
break;
case 2206:
Board = SystemBoard.ToArray();
break;
default:
return new MessageInfo();
}
foreach (MessageInfo Info in Board)
{
if (Info.Author == Author)
return Info;
}
return new MessageInfo();
}
}
}
}
|
|
|
02/17/2014, 08:27
|
#8
|
elite*gold: 0
Join Date: Jan 2014
Posts: 43
Received Thanks: 12
|
change UTF7 encoding
|
|
|
02/18/2014, 01:27
|
#9
|
elite*gold: 0
Join Date: Jan 2014
Posts: 36
Received Thanks: 1
|
Thx all. Working now
but not show the Purify effect, only refinery effect why?
Img:
THXX ALOT!!!!
|
|
|
02/18/2014, 01:34
|
#10
|
elite*gold: 0
Join Date: Feb 2006
Posts: 726
Received Thanks: 271
|
Thats gonna be a packet offset...
|
|
|
All times are GMT +1. The time now is 12:02.
|
|