I manage to run the source sample provided here (thanks Andy and to all who was involved in making. You know who you are).
I perfectly run the server locally on my computer, bu since then i have extra 4 pcs and my friends wants to play FB, I manage to install the client to the other 4 pcs editing the server.dat on theirs to the ip on my pc locally with an ip address of 192.168.0.187 (you know Dlink DHCP ip's)
On my pc, server.dat sticks to 127.0.0.1
I edited the loginservers packerprocessor.cs and change the ip's to my pc's ip which is the 192.168.0.187
I manage to create a reg page too with those ip.
Now, when i run the client to the 4 PCs, it can't connect to my server (My Pc)
that is becaus the client doesn't accept the same IP as the host. or you play from an other pc or you just able an other servername with 127.0.0.1
you should have something like
Code:
if (ServerName == Program.SERVER_NAME)
{
if (AuthSocket.Authorize(AccountName, Key, false))
{
CSocket.Send(Packets.AuthResponse(Program.IP_Server, 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();
}
}
I manage to run the source sample provided here (thanks Andy and to all who was involved in making. You know who you are).
I perfectly run the server locally on my computer, bu since then i have extra 4 pcs and my friends wants to play FB, I manage to install the client to the other 4 pcs editing the server.dat on theirs to the ip on my pc locally with an ip address of 192.168.0.187 (you know Dlink DHCP ip's)
On my pc, server.dat sticks to 127.0.0.1
I edited the loginservers packerprocessor.cs and change the ip's to my pc's ip which is the 192.168.0.187
I manage to create a reg page too with those ip.
Now, when i run the client to the 4 PCs, it can't connect to my server (My Pc)
Anyone can help me out here?
That is NOT your ip, a normal ip starts with 8x.xx.xx.xx or 5.xx.xx.xx or soemthing similar.
first server needs to open the ports on your lan IP
database needs to connect on 127 or your lan IP
if you change the clients "server.dat" to the IP where the Client is on it won't work.
so this means you need to use 127.0.0.1 to connect the client on the same pc as the server is running on.
in order to let other ppl connect to your lan IP they need that IP
exemple
on PC1 -> IP 192.168.1.2 dns = 192.168.1.1
server running -> ports opend on 192.168.1.2
and you start a client -> 127.0.0.1 with a new server name
on pc2 -> Ip 192.168.1.3 dns 192.168.1.1
client connects on 192.168.1.2
on pc3 -> Ip 192.168.1.4 dns 192.168.1.1
client connects on 192.168.1.2
Pc 1 needs to have his own server name in server.dat
Code:
[B]server.dat[/B]
[COLOR="Lime"]for all ppl in the same network[/COLOR]
<row>
<field name="id">101</field>
<field name="ServerName">CoEmu</field>
<field name="ServerIP">[COLOR="red"]192.168.1.2[/COLOR]</field>
<field name="ServerPort">9958</field>
<field name="FlashName">CoEmu</field>
<field name="FlashIcon">Group3/server2.swf</field>
<field name="FlashHint"></field>
<field name="Child">0</field>
</row>
[COLOR="Lime"]For a client where the server is hosted[/COLOR]
<row>
<field name="id">102</field>
<field name="ServerName">LocCoEmu</field>
<field name="ServerIP">[COLOR="Red"]127.0.0.1[/COLOR]</field>
<field name="ServerPort">9958</field>
<field name="FlashName">LocCoEmu</field>
<field name="FlashIcon">Group3/server8.swf</field>
<field name="FlashHint"></field>
<field name="Child">0</field>
</row>
[B]Code from login to enable LocCoEmu[/B]
if (ServerName == "CoEmu")
{
if (AuthSocket.Authorize(AccountName, Key, false))//enable everyone else to connect
{
CSocket.Send(Packets.AuthResponse([COLOR="Red"]"192.168.1.2"[/COLOR], Key1, Key2));
}
else
{
CSocket.Disconnect();
}
}
else if (ServerName == "LocCoEmu")//enable PC1 to COnnect
{
if (AuthSocket.Authorize(AccountName, Key, false))
{
CSocket.Send(Packets.AuthResponse([COLOR="red"]"127.0.0.1"[/COLOR], Key1, Key2));
}
else
{
CSocket.Disconnect();
}
}
Thanks Again Yuko... Manage to change as per your advice... but didn't work at the moment, i'm sure later on...
Some quick questions..
1. Re: LocCoEmu <--- should i use this name? and change the server.dat's servername on PC 2 3 and 4?
2. Should i open port 9958 5816 5817 on my server pc? (thru windows firewall)
3. should i open port on the router (Virtual Server on Dlink router sort of port forwarding...
Again, Thanks much...
Yes, open all those ports by going to or something like that, logon to your router and open em up, if that doesn't work see if your router has a firewall, if it does pause it and do the same thing to your computers firewall.
here's my code on the packetprocessor on login server
/*
* 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 == "CoEmu")
{
/*if(AuthSocket.Authorize(AccountName, Key, false))
{
CSocket.Send(Packets.AuthResponse("66.187.101.86", Key1, Key2));
}
else
{
CSocket.Disconnect();
}*/
if (AuthSocket.Authorize(AccountName, Key, false))//enable everyone else to connect
{
CSocket.Send(Packets.AuthResponse("192.168.0.187", Key1, Key2));
}
else
{
CSocket.Disconnect();
}
}
else if (ServerName == "LocCoEmu")//enable PC1 to COnnect
mmm oki here we go again. gameserver
mastersocket.cs
server_ip = 192.168.0.187
site Ip = whatever
databaseconnection.cs
server = 127.0.0.1
loginserver
server_ip = 192.168.0.187
site Ip = whatever
databaseconnection.cs
server = 127.0.0.1
this is in order to host the server on the computer with the IP = 192.168.0.187
now lets say pc2 and pc3 wanna connect to pc1(192.168.0.187)
they need to connect on CoEmu (server.dat with the ip = 192.168.0.187)
now to connect pc1 to the server he needs to connect trough 127.0.0.1 wich is named LocCoEmu
and you don't have to enable any firewall on the router caus local connections are open. you only might need to disable windows firewall
else it should work perfectly
i use this system all the time
mmm oki here we go again. gameserver
mastersocket.cs
server_ip = 192.168.0.187
site Ip = whatever
databaseconnection.cs
server = 127.0.0.1
loginserver
server_ip = 192.168.0.187
site Ip = whatever
databaseconnection.cs
server = 127.0.0.1
this is in order to host the server on the computer with the IP = 192.168.0.187
now lets say pc2 and pc3 wanna connect to pc1(192.168.0.187)
they need to connect on CoEmu (server.dat with the ip = 192.168.0.187)
now to connect pc1 to the server he needs to connect trough 127.0.0.1 wich is named LocCoEmu
and you don't have to enable any firewall on the router caus local connections are open. you only might need to disable windows firewall
else it should work perfectly
i use this system all the time
OK i have a question, which ip do i use in all these places?
192.168.1.254 (DNS) or 86.149.255.50???
depends how you wanna instal the server. the guy who started the treat want his server to work in lan (Local Area Network) that usualy goes with the IP sets 192.168.x.x
if you wanna put your server on the wan network (wide area network) than you need the IP send by your modem. just hope you have a static one
if you are behind a router you'll need to do some portforward. else ppl won't be able to bypass the router
if (ServerName == "PixelEmpire")
{
if (AuthSocket.Authorize(AccountName, Key, false))
{
CSocket.Send(Packets.AuthResponse("86.149.255.50", Key1, Key2));
}
else
{
CSocket.Disconnect();
}
}
else if (ServerName == "LocCoEmu")[COLOR="Red"]// this one will ONLY work if you try to connect on this name/ip (server.dat servername)[/COLOR]
{
if (AuthSocket.Authorize(AccountName, Key, false))
{
CSocket.Send(Packets.AuthResponse("127.0.0.1", Key1, Key2));
}
else
{
CSocket.Disconnect();
}
}
that is what you need, Program is becaus i have stored everything in inifiles so if i move the source i don't have to recompil i only need to change the ini's
Need only a bit help with coemu 07/09/2009 - CO2 Private Server - 6 Replies I would up a coemu server but there come a error at the gameserver.exe and loginserver.exe the error is line 30.... and this others...
can anyone help me maybe
Help COEmu v2 06/27/2009 - CO2 Private Server - 3 Replies How to make my account GM?:)
CoEmu 06/18/2009 - CO2 Private Server - 12 Replies I keep forgeting the code, how do I make an item in CoEmu?
/item JusticeKatana 9 12 7 255 2?
[Help] CoEmu 06/02/2009 - CO2 Private Server - 0 Replies Help comands for PM charakter dont vork
Help with CoEmu v2! 05/31/2009 - CO2 Private Server - 11 Replies Hello Elitepvpers,
I can't login!
This is my error:
http://img46.imageshack.us/img46/1135/errorhxb.th .png
Can someone help me?