|
You last visited: Today at 05:34
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.
09/18/2015, 16:50
|
#1
|
elite*gold: 0
Join Date: Nov 2011
Posts: 78
Received Thanks: 22
|
New open source silkroad emulator
...
|
|
|
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.
|
|
|
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.
|
|
|
09/18/2015, 20:58
|
#4
|
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.
|
|
|
09/19/2015, 00:57
|
#5
|
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
|
|
|
09/19/2015, 02:22
|
#6
|
elite*gold: 0
Join Date: Nov 2011
Posts: 78
Received Thanks: 22
|
Hmm t.y for reply.
|
|
|
09/20/2015, 00:50
|
#7
|
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 ****.
|
|
|
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();
*/
}
|
|
|
09/20/2015, 03:53
|
#9
|
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.
|
|
|
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.
|
|
|
09/20/2015, 13:48
|
#11
|
elite*gold: 60
Join Date: Feb 2012
Posts: 3,942
Received Thanks: 6,474
|
Quote:
Originally Posted by Maho09
lol.I'm just trying to help.
|
No offense but what Royalblade posted was taken directly from Elamidas Emulator which was tested yesterday.
|
|
|
09/20/2015, 18:10
|
#12
|
elite*gold: 0
Join Date: Nov 2011
Posts: 78
Received Thanks: 22
|
Up
Quote:
Originally Posted by Iwa13
Hmm t.y for reply.
|
??
|
|
|
 |
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.
|
|