Ok thanks Im gonna try this now But heres a Thanks for explaining all this to me =)
Np figured it out
EDIT1: I take that back no i haven't...
Code:
if (ServerName == Program."PixelEmpire")
{
if (AuthSocket.Authorize(AccountName, Key, false))
{
CSocket.Send(Packets.AuthResponse(Program."86.149.255.50", Key1, Key2));
}
else
{
CSocket.Disconnect();
}
}
else if (ServerName == "LocCoEmu")
{
if (AuthSocket.Authorize(AccountName, Key, false))
{
CSocket.Send(Packets.AuthResponse("127.0.0.1", Key1, Key2));
}
else
{
CSocket.Disconnect();
}
}
Do i need to delete "Program." because I don't get errors if its deleted but i get them when its there
EDIT2: Now when I load client with this Server.Dat
Code:
<?xml version="1.0"?>
<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<database name="cq2">
<table_structure name="outenserver">
<field Field="id" Type="smallint(1) unsigned zerofill" Null="NO" Key="PRI" Default="0" Extra="" />
<field Field="ServerName" Type="varchar(32)" Null="YES" Key="" Extra="" />
<field Field="ServerIP" Type="varchar(15)" Null="YES" Key="" Extra="" />
<field Field="ServerPort" Type="int(1) unsigned" Null="YES" Key="" Extra="" />
<field Field="FlashName" Type="varchar(32)" Null="YES" Key="" Extra="" />
<field Field="FlashIcon" Type="varchar(32)" Null="YES" Key="" Extra="" />
<field Field="FlashHint" Type="varchar(128)" Null="YES" Key="" Extra="" />
<field Field="Child" Type="tinyint(1) unsigned zerofill" Null="NO" Key="" Default="0" Extra="" />
<key Table="outenserver" Non_unique="0" Key_name="id" Seq_in_index="1" Column_name="id" Collation="A" Cardinality="97" Null="" Index_type="BTREE" Comment="" />
<options Name="outenserver" Engine="MyISAM" Version="10" Row_format="Dynamic" Rows="97" Avg_row_length="58" Data_length="5644" Max_data_length="281474976710655" Index_length="2048" Data_free="0" Create_time="2008-11-26 08:33:09" Update_time="2008-12-18 08:39:35" Collation="latin1_swedish_ci" Create_options="" Comment="" />
</table_structure>
<table_data name="outenserver">
<row>
<field name="id">0</field>
<field name="ServerName"></field>
<field name="ServerIP"></field>
<field name="ServerPort">0</field>
<field name="FlashName"></field>
<field name="FlashIcon"></field>
<field name="FlashHint"></field>
<field name="Child">1</field>
</row>
<row>
<field name="id">101</field>
<field name="ServerName">PixelEmpire</field>
<field name="ServerIP">86.149.255.50</field>
<field name="ServerPort">9958</field>
<field name="FlashName">PixelEmpire</field>
<field name="FlashIcon">Group3/server2.swf</field>
<field name="FlashHint"></field>
<field name="Child">0</field>
</row>
<row>
<field name="id">102</field>
<field name="ServerName">UnderConstruction</field>
<field name="ServerIP">127.0.0.1</field>
<field name="ServerPort">9958</field>
<field name="FlashName">UnderConstruction</field>
<field name="FlashIcon">Group3/server8.swf</field>
<field name="FlashHint"></field>
<field name="Child">0</field>
</row>
</table_data>
</database>
</mysqldump>
and this packet Processor
Code:
/*
* Created by SharpDevelop.
* User: sams
* Date: 3/8/2009
* Time: 12:38 PM
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using CoEmu_v2_LoginServer.Connections;
using CoEmu_v2_LoginServer.Database;
namespace CoEmu_v2_LoginServer
{
/// <summary>
/// Allows for handling of packets from the client->loginserver or client->gameserver.
/// </summary>
public static class PacketProcessor
{
public static void ProcessPacket(byte[] Data, ClientSocket CSocket)
{
int Type = (Data[3] << 8) + Data[2];
switch(Type)
{
case 1086:
{
RequestLogin(Data, CSocket);
break;
}
default:
{
Console.WriteLine("[LoginServer] Unknown packet type: " + Type);
break;
}
}
}
public static void RequestLogin(byte[] Data, ClientSocket CSocket)
{
string AccountName = "";
string Password = "";
string ServerName = "";
if(Data.Length >= 276)
{
for (int i = 4; i < 0x114; i++)
{
if (i >= 0x14 && i < 0xf9)
{
if(Data[i] != 0x00)
Password += (Convert.ToString(Data[i], 16)).PadLeft(2, '0');
}
if (i < 0x14)
if (Data[i] != 0x00)
AccountName += Convert.ToChar(Data[i]);
if (i > 0xfa)
if (Data[i] != 0x00)
ServerName += Convert.ToChar(Data[i]);
}
}
else
{
return;
}
/* if(AccountName != "dsfreak")
{
CSocket.Disconnect();
return;
}*/
System.Random Random = new System.Random();
Console.WriteLine("[LoginServer] " + AccountName + " logging in to " + ServerName);
string DBPass = Database.Database.Password(AccountName);
//TODO: Check for ban.
if(DBPass != "ERROR")
{
if(DBPass == Password)
{
//OKAY to login!
uint Key = (uint)(Random.Next(10000000) << 32);
Key = Key << 32;
Key = (uint)(Key | (uint)Random.Next(10000000));
byte[] Key1 = new byte[4];
byte[] Key2 = new byte[4];
Key1[0] = (byte)(((ulong)Key & 0xff00000000000000L) >> 56);
Key1[1] = (byte)((Key & 0xff000000000000) >> 48);
Key1[2] = (byte)((Key & 0xff0000000000) >> 40);
Key1[3] = (byte)((Key & 0xff00000000) >> 32);
Key2[0] = (byte)((Key & 0xff000000) >> 24);
Key2[1] = (byte)((Key & 0xff0000) >> 16);
Key2[2] = (byte)((Key & 0xff00) >> 8);
Key2[3] = (byte)(Key & 0xff);
if (ServerName == "PixelEmpire")
{
if (AuthSocket.Authorize(AccountName, Key, false)) // Enable Public
{
CSocket.Send(Packets.AuthResponse("86.149.255.50", Key1, Key2));
}
else
{
CSocket.Disconnect();
}
}
else if (ServerName == "UnderConstruction")
{
if (AuthSocket.Authorize(AccountName, Key, false)) //Enable Andrew
{
CSocket.Send(Packets.AuthResponse("127.0.0.1", Key1, Key2));
}
else
{
CSocket.Disconnect();
}
}
else if(ServerName == "CoEmu.Nano")
{
if(AuthSocket.Authorize(AccountName, Key, true))
{
CSocket.Send(Packets.AuthResponse("86.149.255.50", Key1, Key2));
}
else
{
CSocket.Disconnect();
}
}
}
else if(DBPass == "")
{
Console.WriteLine("[LoginServer](Diagnostic) Set password for " + AccountName);
Database.Database.SetPass(AccountName, Password);
//OKAY to login!
uint Key = (uint)(Random.Next(10000000) << 32);
Key = Key << 32;
Key = (uint)(Key | (uint)Random.Next(10000000));
byte[] Key1 = new byte[4];
byte[] Key2 = new byte[4];
Key1[0] = (byte)(((ulong)Key & 0xff00000000000000L) >> 56);
Key1[1] = (byte)((Key & 0xff000000000000) >> 48);
Key1[2] = (byte)((Key & 0xff0000000000) >> 40);
Key1[3] = (byte)((Key & 0xff00000000) >> 32);
Key2[0] = (byte)((Key & 0xff000000) >> 24);
Key2[1] = (byte)((Key & 0xff0000) >> 16);
Key2[2] = (byte)((Key & 0xff00) >> 8);
Key2[3] = (byte)(Key & 0xff);
if(ServerName == "PixelEmpire")
{
/*if(AuthSocket.Authorize(AccountName, Key, false))
{
CSocket.Send(Packets.AuthResponse("127.0.0.1", Key1, Key2));
}
else
{
CSocket.Disconnect();
}*/
if (AuthSocket.Authorize(AccountName, Key, false))
{
CSocket.Send(Packets.AuthResponse("127.0.0.1", Key1, Key2));
}
else
{
CSocket.Disconnect();
}
}
else if(ServerName == "CoEmu.Nano")
{
if(AuthSocket.Authorize(AccountName, Key, true))
{
CSocket.Send(Packets.AuthResponse("127.0.0.1", Key1, Key2));
}
else
{
CSocket.Disconnect();
}
}
}
else
{
CSocket.Send(Packets.WrongPass());
CSocket.Disconnect();
}
}
else
{
Console.WriteLine("DBPass equals ERROR: " + DBPass);
CSocket.Disconnect();
}
}
}
}
I get this
[Only registered and activated users can see links. Click Here To Register...]
and also an error that says it cant read Server.dat
Help Pleaseee