Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Silkroad Online > SRO Coding Corner
You last visited: Today at 05:34

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Developing new open source silkroad emulator

Discussion on Developing new open source silkroad emulator within the SRO Coding Corner forum part of the Silkroad Online category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Nov 2011
Posts: 78
Received Thanks: 22
New open source silkroad emulator

...
Maho09 is offline  
Thanks
4 Users
Old 09/18/2015, 18:36   #2
 
elite*gold: 0
Join Date: Jan 2009
Posts: 314
Received Thanks: 686
First off, I like your idea to bring emulator development back these days. The release of server files kinda narrowed our view onto editing those because it's less work. But creating an emulator has always been the thrill of creating something unique. I'm still amazed by the creativity of .




However your project and those I linked above (most likely the same) share the same code base. That's initially not a bad thing to do, because designing a structure for such a huge project in the first place is complex and very important. But your title says "Developing new open source silkroad emulator".

The code base is outright awful. Almost everything is static, improper use of partial classes where abstract classes would suit wonderful, database code within packet parsing/building, etc. etc. ...

You should make sure if that code base really suits your ideas of an "new open source silkroad emulator" or not.
DaxterSoul is offline  
Thanks
2 Users
Old 09/18/2015, 20:07   #3
 
elite*gold: 0
Join Date: Nov 2011
Posts: 78
Received Thanks: 22
Hmm t.y for reply.I'm going to fix them in time. Still I'm working hard on it.
Maho09 is offline  
Old 09/18/2015, 20:58   #4
 
Royalblade*'s Avatar
 
elite*gold: 85
Join Date: Feb 2014
Posts: 1,056
Received Thanks: 1,643
I like the amount of work you've put in. I assume it's alright for me to use some of packets that you've already parsed.

The Elamidas Team + Torque guy are working together to create something similar, but not going as far as creating a STANDALONE emulator. We're doing it in hybrid with srv files.

Saves tons of extra work and its easy to change stuff. If you'd like to contribute(more packets?) and be rewarded in a monetary fashion, I'm sure we can work something out.

Hit me ip on Skype: Akasch93.

EASY VERSION:
You give packets.
You get money.
You message me on skype: Akasch93.
Royalblade* is offline  
Thanks
1 User
Old 09/19/2015, 00:57   #5

 
sarkoplata's Avatar
 
elite*gold: 166
Join Date: Apr 2009
Posts: 2,339
Received Thanks: 2,661
Ok, well I've always loved packet-based silkroad development.
But to be honest, there is not much you can achieve by creating an emulator, if the client will be the same. Tell me an important thing that you can achieve with emulator but not server files?
Currently alot of things are achieved just using a proxy between server files and the user.
I wouldn't suggest you to waste your time on re-inventing the wheel.
Instead, if you really want to work on that, some project like Akasch's would make more sense. Atlelast you're not coding stuff that 100% work.
Sorry for not being useful and discouraging but this is the truth xD
sarkoplata is offline  
Thanks
1 User
Old 09/19/2015, 02:22   #6
 
elite*gold: 0
Join Date: Nov 2011
Posts: 78
Received Thanks: 22
Hmm t.y for reply.
Maho09 is offline  
Old 09/20/2015, 00:50   #7
 
Royalblade*'s Avatar
 
elite*gold: 85
Join Date: Feb 2014
Posts: 1,056
Received Thanks: 1,643
Code:
                        uint refItemID = BaseData.Data.silkShopList[silkIndex].refItemID;
                        packet.ReadUInt8Array(5);
                        byte countItemsBought = packet.ReadUInt8();
                        for(int i = 0; i < countItemsBought; i++)
                        {
                            byte slot = packet.ReadUInt8();
                            int invIndex = user.Inventory.FindIndex(s => s.slot == slot);
                            int itemIndex = BaseData.Data.itemList.FindIndex(s => s.itemID == refItemID);
                            byte typeID = BaseData.Data.itemList[itemIndex].typeid;

                            user.Inventory[invIndex].refItemID = refItemID;

                            if (typeID != 1 && typeID != 2 && typeID != 7) //equip, Avatar, Cos scroll etc
                                user.Inventory[invIndex].optLvl = BaseData.Data.itemList[itemIndex].maxStack;
                            else
                                user.Inventory[invIndex].optLvl = 0;

                            if (debug)
                                await PacketUtility.SendMessage(user, "Item Mall to Inventory. Bought item: " + user.latestSilkItemPackage);
                        }
                        //ushort countExtraBytes = packet.ReadUInt16(); // Same as item count. Not stack. dunnow wat the **** is for since its zeros only.
                        //for(int i = 0; i < countExtraBytes; i++)
                        //{
                        //    packet.ReadUInt8Array(4);
                        //}
You needed type 24 @ B034 (7034 reply). Itemmovement ****.
Royalblade* is offline  
Old 09/20/2015, 03:41   #8
 
elite*gold: 0
Join Date: Nov 2011
Posts: 78
Received Thanks: 22
WHAT? THIS IS FALSE

TRUE this

Code:
[C -> S][7034]
18          				-> 24	->	MOVE_TYPE (BYTE)                                   
1B 04                       -> 1051 ->  UNKNOW(WORD)                  
02                          -> 2    ->  UNKNOW (BYTE) 
01                          -> 1	->  UNKNOW (BYTE)    
0A                          -> 10	->  UNKNOW (BYTE)  
2A 00                       -> 42	-> ITEM_NAME_LENGTH (WORD)                  
50 41 43 4B 41 47 45 5F 49 54 45 4D 5F 4D 41 4C 4C 5F 52 45 54 55 52 4E 5F 53 43 52 4F 4C 4C 5F 48 49 47 48 5F 53 50 45 45 44  -> PACKAGE_ITEM_MALL_RETURN_SCROLL_HIGH_SPEED  -> ITEM_NAME (STRING)                 
01 00   					-> 1	->  UNKNOW(WORD)                                     
00 00 00 00 00 00 00 00     -> 0 	->  UNKNOW(LWORD)                 
FD 01 00 00                	-> 509	->  UNKNOW(DWORD)     
                 
[S -> C][B034]
01      -> UNKNOW -> 1 -> BYTE                                          
18      -> TYPE -> 24 -> BYTE                                          
1B 04   ->  UNKNOW -> 1051 -> WORD                                          
02      -> UNKNOW -> 2 -> BYTE                                           
01      -> UNKNOW -> 1 -> BYTE                                           
0A      -> UNKNOW -> 10 -> BYTE 
01      -> UNKNOW -> 1 -> BYTE                                      
20     	-> SLOT -> 32 -> BYTE                                           
01 00   -> UNKNOW -> 1 -> WORD                                          
00 00 00 00   -> UNKNOW -> 0 -> DWORD      

// my fixed codes

uint refItemID = BaseData.Data.silkShopList[silkIndex].refItemID;
byte r_MoveType = packet.ReadUInt8();
ushort r_Unknow1 = packet.ReadUInt16();
byte[] r_UnknowBytes = packet.ReadUInt8Array(3);
ushort r_ItemNameLength = packet.ReadUInt16();
string r_ItemName = packet.ReadString(r_ItemNameLength); 

// slot is not client generating auto

	
	byte slot = GetSlot();
	int invIndex = user.Inventory.FindIndex(s => s.slot == slot);
	int itemIndex = BaseData.Data.itemList.FindIndex(s => s.itemID == refItemID);
	byte typeID = BaseData.Data.itemList[itemIndex].typeid; // ??? TYPEID1,TYPEID2,TYPEID3,TYPEID4 which? :D

	user.Inventory[invIndex].refItemID = refItemID;

	if (typeID != 1 && typeID != 2 && typeID != 7) //equip, Avatar, Cos scroll etc
		user.Inventory[invIndex].optLvl = BaseData.Data.itemList[itemIndex].maxStack;
	else
		user.Inventory[invIndex].optLvl = 0;

	if (debug)
		await PacketUtility.SendMessage(user, "Item Mall to Inventory. Bought item: " + user.latestSilkItemPackage);

public byte GetSlot()
{
	// Read 0xB034 packet
	/*
		packet.ReadUInt8Array(7);
		return packet.ReadUInt8();
	*/
}
Maho09 is offline  
Old 09/20/2015, 03:53   #9
 
LastThief*'s Avatar
 
elite*gold: 60
Join Date: Feb 2012
Posts: 3,942
Received Thanks: 6,474
You classified everything as unknown and you are calling it "true" lol.
LastThief* is offline  
Thanks
1 User
Old 09/20/2015, 03:56   #10
 
elite*gold: 0
Join Date: Nov 2011
Posts: 78
Received Thanks: 22
lol.I'm just trying to help.
Maho09 is offline  
Old 09/20/2015, 13:48   #11
 
LastThief*'s Avatar
 
elite*gold: 60
Join Date: Feb 2012
Posts: 3,942
Received Thanks: 6,474
Quote:
Originally Posted by Maho09 View Post
lol.I'm just trying to help.
No offense but what Royalblade posted was taken directly from Elamidas Emulator which was tested yesterday.
LastThief* is offline  
Old 09/20/2015, 18:10   #12
 
elite*gold: 0
Join Date: Nov 2011
Posts: 78
Received Thanks: 22
Up

Quote:
Originally Posted by Iwa13 View Post
Hmm t.y for reply.
??
Maho09 is offline  
Reply

Tags
coding corner, emulation, project, silkroad online


Similar Threads Similar Threads
Archlord2 Emulator Open source project
06/29/2018 - Archlord - 21 Replies
As we know Archlord2 its owned by webzen.Like other games from webzen,all are pay2win. Here we are with a new sourcecode owned by "karyzir" / "Necroz" developer!For the moment the emulator has the loginserver finished,a simple login launcher,and the packetviewer tool.The actual serverfiles use the latest client from Webzen. Server its build in C#.Latest version.Mysql DB. source code: https://archlord2openproject.codeplex.com/SourceCo ntrol/latest Source code changesets: ...
[OPEN SOURCE] Private Server Emulator
06/12/2016 - DarkOrbit - 29 Replies
Hi, Its now my first open source update for Private Server =) ! And i hope you enjoy this ! Before ask a question please read readme in folder of project. You need to use the CMS by XdR (0.6.1) Last Release : 0.6.3.1 Change log :
[Searching] Latest open source emulator (Silkroad)
03/11/2014 - SRO Coding Corner - 2 Replies
hello guys; i have been working with sro since 2010 And now interested to make an emulator server but the main problem is i don't have source code of emu if anyone have any version of emu and source code could you please share with me regards.
Aion 2.5 Open Source Emulator
06/28/2011 - Aion Private Server - 3 Replies
I would like to inform you that we have started a new project under the GPL3 license terms. It will be open source like it's predecessors. The main idea is to maintain a big community of users and a community maintained code. The new project's name is Open-Aion 2.5 You are welcome to be a part of the Community, to contribute and support our common work. Open-Aion 2.5 Emulator is a custom release based of one of the last ZettaCore release, distributed in basic form, from Open-Aion.org. ...



All times are GMT +1. The time now is 05:35.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.