1. Firewall
İlk önce bilgisayarımızda bulunan bütün firewalları kapatıyoruz. Bunlardan bir tanesi modeminizin ayarından diğeri ise ağ bağlantılarınızda bulunur.
Modemdekini kapatmak için komut istemini açın, ipconfig yazarak entera basın, çıkan sonuçlardan en sondakini internet explorera yazın. Modeminizin kullanıcı adı ve şifresini girin. Orada firewall gibi bir bölüm olması gerekir. Oraya girin ve firawallı kapatın (disabled)
Ağ bağlantılarındakini kapatmak için Başlat/Araçlar/Denetim Masası/Ağ Bağlantılarım daki yerel ağ bağlantısına sağ tıklayıp özelliklere giriniz. Gelişmiş sekmesine girin ve oradaki kutucuk seçili ise kaldırın kaydedin ve çıkın.(sizde kutucuk şeklinde bir şey yoksa anlayın ki bilgisayarınız fat32 sürümünde çalışıyor. Yani bu adımı fat32 ciler atlayabilir) Firewall hakkında bazı programlar kullanıyorsanız onları da kapatınız.
2. Port Forwarding
Bu işlemi en kolay yoldan yapmak için https://www.portforward.com adresine gidin. Forwardinge tıkladıktan sonra modem markanızı seçin. (modem markanız yoksa bir benzerini tıklayın. Çoğunlukla aynı özellikler vardır)
3. Serverlist.cs
Modem ile ilgili işleri bitirdikten sonra sıra runuo'nun ipimizi tanımasını sağlamalıyız.
using System;
using System.Net;
using System.Net.Sockets;
using Server;
using Server.Network;
namespace Server.Misc
{
public class ServerList
{
/* Address:
*
* The default setting, a value of 'null', will attempt to detect your IP address automatically:
* private const string Address = null;
*
* This detection, however, does not work for servers behind routers. If you're running behind a router, put in your IP:
* private const string Address = "12.34.56.78";
*
* If you need to resolve a DNS host name, you can do that too:
* private const string Address = "shard.host.com";
*/
public const string Address = "216.160.107.16";
public const string ServerName = "Shard's Name";
public static void Initialize()
{
Listener.Port = 2593;
EventSink.ServerList += new ServerListEventHandler( EventSink_ServerList );
}
public static void EventSink_ServerList( ServerListEventArgs e )
{
try
{
IPAddress ipAddr;
if ( Resolve( Address != null && !IsLocalMachine( e.State ) ? Address : Dns.GetHostName(), out ipAddr ) )
e.AddServer( ServerName, new IPEndPoint( ipAddr, Listener.Port ) );
else
e.Rejected = true;
}
catch
{
e.Rejected = true;
}
}
public static bool Resolve( string addr, out IPAddress outValue )
{
try
{
outValue = IPAddress.Parse( addr );
return true;
}
catch
{
try
{
IPHostEntry iphe = Dns.Resolve( addr );
if ( iphe.AddressList.Length > 0 )
{
outValue = iphe.AddressList[iphe.AddressList.Length - 1];
return true;
}
}
catch
{
}
}
outValue = IPAddress.None;
return false;
}
private static bool IsLocalMachine( NetState state )
{
Socket sock = state.Socket;
IPAddress theirAddress = ((IPEndPoint)sock.RemoteEndPoint).Address;
if ( IPAddress.IsLoopback( theirAddress ) )
return true;
bool contains = false;
IPHostEntry iphe = Dns.Resolve( Dns.GetHostName() );
for ( int i = 0; !contains && i < iphe.AddressList.Length; ++i )
contains = theirAddress.Equals( iphe.AddressList[i] );
return contains;
}
}
} Burdaki kodu bir txt dosyasına yazdıktan sonra kaydedin ve adını serverlist.cs olarak değiştirin ve Scripts/misc klasöründe serverlist.cs dosyası ile değiştirin.. Gerekli ayarlamaları yapın (ismini ve portunu kendi istediğiniz şekilde ayarlayın.)Herşey temiz olsun diye modeminize save&reboot yapın, bilgisayarınıza da bir restart çekin. Server.exe'yi çalıştırın vermiş olduğu ipi arkadaşlarınıza verip güle güle oynayın



serverlist'e bi çözüm bulsak harika olacak :( Prof. shard kurma niyetinde değilim. 3-5 arkadaş beraber takılabileceğimiz birşey olsun istedik. Lütfen serverlist.cs'e bir el atalım
Serverlist.cs hata verio :S