|
You last visited: Today at 16:02
Advertisement
CSREmu
Discussion on CSREmu within the SRO PServer Guides & Releases forum part of the SRO Private Server category.
02/21/2010, 12:14
|
#1
|
elite*gold: 0
Join Date: Mar 2009
Posts: 443
Received Thanks: 597
|
CSREmu - autospawn,npcs...
Revision 22
Now the autospawn + skill use bug,... bugs SHOULD be fixed
Download
Regards
Revision 21:
It seems like csremu cant load the textdata at some/most of the pcs. thats why it crashes at levelup+ there is no autospawn. Let me find the problem, and i will try to fix it as soon as possible
Fixed the Alexandria NPC's
HOW TO:
delete your current textdata folder and extract the new one that you downloaded here.
Download:
Revision 20:
Delete your database and use the new one.
I have only 2 solutions for the Requesting.. Bug:
Restart the sro_client until it works. And dont press Enter to login click with your mouse!
Fixes:
-the bug that you can only create +1 weapons
-the crash when you pick up gold
-minor bugs
Added:
Alexandria Shops and Teleports - Thanks to Foma for collecting some infos on ISRO that i needed :
Thanks to Windrius for the new protection
Download
Regards
Revision 19:
Silkroad Version:1.252
movement - groundwalking works, sykwalking doesnt(didnt figured it out yet)
item movement - working
item usage - only capes,pots till now
autospawn - monsters,npcs,teleports(you can use the teleports to alexandria, but the npcs there wont work)
npc shop usage- except alexandria(i still need a lvl 95+ on isro to collect some packets in/around alexandria)
npc storage - not working
npc teleports - working
chat - public,party,whisper,notice
skills - working(no skill effects)
buffs - working(only imbue increase the dmg,so other buffs are useless for now)
stats - working
leveling - working(skillpoint calculation sucks, but is ok)
pvp - working ,buy capes on the grocery traders
party - working
hotkeys - working
autopotion - working, but it doesnt get saved for now
pets&horses - not working
best feature: mangyang giants! :P
csremu commands:
createuser - creates a new user in the database
clear - clears the console
notice - send a global server notice
pflow game- see the packetflow of the gameserver
pflow login- see the packetflow of the loginserver
exit - exit this application
English:
Some changes to old revisions:
- Every 20 sec new users get loaded. E.g. if you create a user wait 20 sec and you can use it
-No Europe Support. They are working like on the other version, but i will focus on Chinese
For Tutorials look at this page :
They should still work. You still need the mediapatcher and loader from the old tutorial:
Well here is the old videotutorial :
The source is closed, means only i got the newest one. If you still want to look at the old sources( i improved/changed a lot since Rev 18) :
The Download:
Finally the thanks and credits to other people how helped me:
Thanks to Eckoro,Windrius,SREMU Team,Lyzerk,Cheat Project Germany,Elitepvpers,ProjectHax,Stealthex and Drew Benton
Regards Shadowz75
Deutsch:
Ein paar kleine Änderungen:
- Jede 20 sekunden werden die user neu geladen.Wenn man z.b. einen neuen user erstellt wartet man 20 sekunden , dann kann man ihn benutzen
- Kein Euro Support(vorerst).Allerdings geht immenoch alles was man auch mit ihnen in Rev 18 machen konnte
Alle Tutorials zusammgenfasst :s.oben bei English
Man braucht immernoch den Mediapatcher:s.oben bei English
Readme s.oben bei English
Das alte Videotutorial : s.oben bei English
Die Source ist jetzt closed, dh nur ich habe sie. Die alten Sources sind immernoch verfügbar:
Download:
s.oben bei English
Finally the thanks and credits to other people how helped me:
Thanks to Eckoro,Windrius,SREMU Team,Lyzerk,Cheat Project Germany,Elitepvpers,ProjectHax,Stealthex and Drew Benton
Grüße Dickernoob
Tutorial
Quote:
CSREMU(C# Silkroad Emulator)
############################
THIS IS A PRE-ALPHA AND THERE'S STILL MUCH TO DO, SO IF YOU CAN HELP DO IT.
Video Tutorial:
Tutorial:
Download & install TortoiseSVN :
Create a new folder in your Silkroad folder. Right click->SVN Checkout .At the URL of repository use this link:
Now download those things:
Download this: Download this:
Install both.(you can use this Tutorial: )
Dump the .sql file(Database\\emulator.sql) into your database with e.g. Navicat Lite.
Configure your settings in the Binary\\Settings.txt file.
Extract the data.rar into your Binary\\ folder and a new folder ('data') will appear.
Start the GameServer.exe and then the LoginServer.exe.
Create a new user account with the UserManager.exe.
Patch your Media.pk2 with the MediaPatcher(thanks to the creator,i changed 15778 to 15779) in the Binary folder.
Then copy the Loadersremu(created by the SREmu team) and the silkhook.dll into your Silkroad Folder.
Start the Loadersremu and a errormessage will appear:OMG- Unable to patch nprotect(cause nprotect was removed,
hackshield is the new anticheat).Just press ok and Silkroad will start
Then log in and create a new Character the normal way.
Then go to your database in the character table and change the your character settings.
Use the GM Console to load Monsters/Items.(shift + ~ = american keybord)
e.g. /loadmonster MOB_ then press F2 and you see a list.
e.g. /makeitem ITEM_ then press F3 and see the list.
e.g. ~TEST = notice
Test Video:
Credits:
The SREMU Team,Eckoro,Cheat Project Germany,ProjectHax,Elitepvpers and Drew Benton
Submitting a patch:
Create a .patch File and create a new thread at
or pm me on epvpers(username Shadowz75)
Got Errors?
Go to and create a new thread.
###########
#Shadowz75#
###########[/url]
or pm me on epvpers(username Shadowz75)
Got Errors?
Go to and create a new thread.
###########
#Shadowz75#
###########
|
|
|
|
02/21/2010, 15:41
|
#2
|
elite*gold: 0
Join Date: Dec 2009
Posts: 1,425
Received Thanks: 573
|
Nice Emulator.
|
|
|
02/21/2010, 15:44
|
#3
|
elite*gold: 20
Join Date: Aug 2007
Posts: 1,710
Received Thanks: 1,609
|
Ok let me start.
What do we have here?
Changed function names, added some easy ****.
50% here is same as lyzerks emu
I'd post some examples if I had lyzerks emu decompiled atm, but look at the database. Thats the same. Code. Most functions are same.
Anyway.. Next time remember to give lyzerk credits
|
|
|
02/21/2010, 15:58
|
#4
|
elite*gold: 0
Join Date: Mar 2009
Posts: 443
Received Thanks: 597
|
Wtf, did you looked over it?I guess not. I used Lyzerks way to save skills,masteries. Thats all.Did Lyzerk used sth like this:
.Could you use europe characters on Lyzerk Source?Could you drop items and pick them up?
|
|
|
02/21/2010, 16:05
|
#5
|
elite*gold: 20
Join Date: Aug 2007
Posts: 1,710
Received Thanks: 1,609
|
Quote:
Originally Posted by Shadowz75
Wtf, did you looked over it?I guess not. I used Lyzerks way to save skills,masteries. Thats all.Did Lyzerk used sth like this:
.Could you use europe characters on Lyzerk Source?Could you drop items and pick them up?
|
No.
I didn't say you completly copied it.
I said 50% of functions are same..
Did you see this? ALMOST everything here is a rip from lyzerks emu. Hmm... what does rip mean? :/
EDIT: You even missed 1 packet just like lyzerk in OnIngameRequest
|
|
|
02/21/2010, 16:06
|
#6
|
elite*gold: 0
Join Date: Feb 2010
Posts: 76
Received Thanks: 7
|
Quote:
Originally Posted by Shadowz75
Wtf, did you looked over it?I guess not. I used Lyzerks way to save skills,masteries. Thats all.Did Lyzerk used sth like this:
.Could you use europe characters on Lyzerk Source?Could you drop items and pick them up?
|
fight dude! fight!
and dont forget to proove -.-
|
|
|
02/21/2010, 16:12
|
#7
|
elite*gold: 0
Join Date: Dec 2009
Posts: 478
Received Thanks: 75
|
lyzerk emu = full of ****
|
|
|
02/21/2010, 16:12
|
#8
|
elite*gold: 0
Join Date: Mar 2009
Posts: 443
Received Thanks: 597
|
Quote:
Originally Posted by Windrius
No.
I didn't say you completly copied it.
I said 50% of functions are same..
Did you see this? ALMOST everything here is a rip from lyzerks emu. Hmm... what does rip mean? :/
EDIT: You even missed 1 packet just like lyzerk in OnIngameRequest
|
Wtf do you mean? Cause the packets are the same? Cause if you want to get data from the database you gotta use this way:
Code:
Player.General[Index_].CharacterName = Char;
272 Player.General[Index_].CharacterID = Database.GetUInt("SELECT * FROM characters WHERE name='" + Char + "'", "id");
273 Player.General[Index_].UniqueID = Player.General[Index_].CharacterID + 300000;
274 Player.Stats[Index_].HP = Database.GetUInt("SELECT * FROM characters WHERE name='" + Char + "'", "hp");
275 Player.Stats[Index_].MP = Database.GetUInt("SELECT * FROM characters WHERE name='" + Char + "'", "mp");
276 Player.Stats[Index_].CHP = Database.GetInt("SELECT * FROM characters WHERE name='" + Char + "'", "s_hp");
277 Player.Stats[Index_].CMP = Database.GetInt("SELECT * FROM characters WHERE name='" + Char + "'", "s_mp");
278 Player.Stats[Index_].Model = Database.GetUInt("SELECT * FROM characters WHERE name='" + Char + "'", "chartype");
279 Player.Stats[Index_].Volume = Database.GetByte("SELECT * FROM characters WHERE name='" + Char + "'", "volume");
280 Player.Stats[Index_].Level = Database.GetByte("SELECT * FROM characters WHERE name='" + Char + "'", "level");
281 Player.Stats[Index_].Experience = Database.GetULong("SELECT * FROM characters WHERE name='" + Char + "'", "experience");
282 Player.Stats[Index_].Gold = Database.GetULong("SELECT * FROM characters WHERE name='" + Char + "'", "gold");
283 Player.Stats[Index_].Skillpoints = Database.GetUInt("SELECT * FROM characters WHERE name='" + Char + "'", "sp");
284 Player.Stats[Index_].Attributes = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "attribute");
285 Player.Stats[Index_].BerserkBar = Database.GetByte("SELECT * FROM characters WHERE name='" + Char + "'", "berserkbar");
286 Player.Flags[Index_].Berserk = Database.GetByte("SELECT * FROM characters WHERE name='" + Char + "'", "berserking");
287 Player.Speeds[Index_].WalkSpeed = Database.GetFloat("SELECT * FROM characters WHERE name='" + Char + "'", "walkspeed");
288 Player.Speeds[Index_].RunSpeed = Database.GetFloat("SELECT * FROM characters WHERE name='" + Char + "'", "runspeed");
289 Player.Speeds[Index_].BerserkSpeed = Database.GetFloat("SELECT * FROM characters WHERE name='" + Char + "'", "berserkspeed");
290 Player.Stats[Index_].MinPhy = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "min_phyatk");
291 Player.Stats[Index_].MaxPhy = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "max_phyatk");
292 Player.Stats[Index_].MinMag = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "min_magatk");
293 Player.Stats[Index_].MaxMag = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "max_magatk");
294 Player.Stats[Index_].PhyDef = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "phydef");
295 Player.Stats[Index_].MagDef = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "magdef");
296 Player.Stats[Index_].Hit = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "hit");
297 Player.Stats[Index_].Parry = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "parry");
298 Player.Stats[Index_].Strength = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "strength");
299 Player.Stats[Index_].Intelligence = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "intelligence");
300 Player.Stats[Index_].SkillpointBar = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "skillpointbar");
301 Player.Flags[Index_].GM = Database.GetByte("SELECT * FROM characters WHERE name='" + Char + "'", "gm");
302 Player.Flags[Index_].PvP = -1;
303 Player.Position[Index_].XSector = Database.GetByte("SELECT * FROM characters WHERE name='" + Char + "'", "xsect");
304 Player.Position[Index_].YSector = Database.GetByte("SELECT * FROM characters WHERE name='" + Char + "'", "ysect");
305 Player.Position[Index_].X = Database.GetFloat("SELECT * FROM characters WHERE name='" + Char + "'", "xpos");
306 Player.Position[Index_].Y = Database.GetFloat("SELECT * FROM characters WHERE name='" + Char + "'", "ypos");
307 Player.Position[Index_].Z = Database.GetFloat("SELECT * FROM characters WHERE name='" + Char + "'", "zpos");
308 Player.General[Index_].MaxSlots = Database.GetByte("SELECT * FROM characters WHERE name='" + Char + "'", "maxitemslot");
309
Or how would you do it?Simsalabim and the data is in your Player array?
btw here is the euro proof(i know that there is a error displayed, thats why someone sent me this picture):
|
|
|
02/21/2010, 16:16
|
#9
|
elite*gold: 0
Join Date: Feb 2010
Posts: 193
Received Thanks: 34
|
il test it its nice coz it works with the latest version of sro
|
|
|
02/21/2010, 16:17
|
#10
|
elite*gold: 20
Join Date: Aug 2007
Posts: 1,710
Received Thanks: 1,609
|
Quote:
Originally Posted by Shadowz75
Wtf do you mean? Cause the packets are the same? Cause if you want to get data from the database you gotta use this way:
Code:
Player.General[Index_].CharacterName = Char;
272 Player.General[Index_].CharacterID = Database.GetUInt("SELECT * FROM characters WHERE name='" + Char + "'", "id");
273 Player.General[Index_].UniqueID = Player.General[Index_].CharacterID + 300000;
274 Player.Stats[Index_].HP = Database.GetUInt("SELECT * FROM characters WHERE name='" + Char + "'", "hp");
275 Player.Stats[Index_].MP = Database.GetUInt("SELECT * FROM characters WHERE name='" + Char + "'", "mp");
276 Player.Stats[Index_].CHP = Database.GetInt("SELECT * FROM characters WHERE name='" + Char + "'", "s_hp");
277 Player.Stats[Index_].CMP = Database.GetInt("SELECT * FROM characters WHERE name='" + Char + "'", "s_mp");
278 Player.Stats[Index_].Model = Database.GetUInt("SELECT * FROM characters WHERE name='" + Char + "'", "chartype");
279 Player.Stats[Index_].Volume = Database.GetByte("SELECT * FROM characters WHERE name='" + Char + "'", "volume");
280 Player.Stats[Index_].Level = Database.GetByte("SELECT * FROM characters WHERE name='" + Char + "'", "level");
281 Player.Stats[Index_].Experience = Database.GetULong("SELECT * FROM characters WHERE name='" + Char + "'", "experience");
282 Player.Stats[Index_].Gold = Database.GetULong("SELECT * FROM characters WHERE name='" + Char + "'", "gold");
283 Player.Stats[Index_].Skillpoints = Database.GetUInt("SELECT * FROM characters WHERE name='" + Char + "'", "sp");
284 Player.Stats[Index_].Attributes = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "attribute");
285 Player.Stats[Index_].BerserkBar = Database.GetByte("SELECT * FROM characters WHERE name='" + Char + "'", "berserkbar");
286 Player.Flags[Index_].Berserk = Database.GetByte("SELECT * FROM characters WHERE name='" + Char + "'", "berserking");
287 Player.Speeds[Index_].WalkSpeed = Database.GetFloat("SELECT * FROM characters WHERE name='" + Char + "'", "walkspeed");
288 Player.Speeds[Index_].RunSpeed = Database.GetFloat("SELECT * FROM characters WHERE name='" + Char + "'", "runspeed");
289 Player.Speeds[Index_].BerserkSpeed = Database.GetFloat("SELECT * FROM characters WHERE name='" + Char + "'", "berserkspeed");
290 Player.Stats[Index_].MinPhy = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "min_phyatk");
291 Player.Stats[Index_].MaxPhy = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "max_phyatk");
292 Player.Stats[Index_].MinMag = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "min_magatk");
293 Player.Stats[Index_].MaxMag = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "max_magatk");
294 Player.Stats[Index_].PhyDef = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "phydef");
295 Player.Stats[Index_].MagDef = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "magdef");
296 Player.Stats[Index_].Hit = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "hit");
297 Player.Stats[Index_].Parry = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "parry");
298 Player.Stats[Index_].Strength = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "strength");
299 Player.Stats[Index_].Intelligence = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "intelligence");
300 Player.Stats[Index_].SkillpointBar = Database.GetUShort("SELECT * FROM characters WHERE name='" + Char + "'", "skillpointbar");
301 Player.Flags[Index_].GM = Database.GetByte("SELECT * FROM characters WHERE name='" + Char + "'", "gm");
302 Player.Flags[Index_].PvP = -1;
303 Player.Position[Index_].XSector = Database.GetByte("SELECT * FROM characters WHERE name='" + Char + "'", "xsect");
304 Player.Position[Index_].YSector = Database.GetByte("SELECT * FROM characters WHERE name='" + Char + "'", "ysect");
305 Player.Position[Index_].X = Database.GetFloat("SELECT * FROM characters WHERE name='" + Char + "'", "xpos");
306 Player.Position[Index_].Y = Database.GetFloat("SELECT * FROM characters WHERE name='" + Char + "'", "ypos");
307 Player.Position[Index_].Z = Database.GetFloat("SELECT * FROM characters WHERE name='" + Char + "'", "zpos");
308 Player.General[Index_].MaxSlots = Database.GetByte("SELECT * FROM characters WHERE name='" + Char + "'", "maxitemslot");
309
Or how would you do it?Simsalabim and the data is in your Player array?
btw here is the euro proof(i know that there is a error displayed, thats why someone sent me this picture):
|
I DON'T MEAN THAT OMG!!! LOOK AT THE PACKETS >_<
Quote:
writer.SetOpcode(SERVER_OPCODES.GAME_SERVER_CHARDA TA);
writer.AppendDword(Player.Stats[Index_].Model);
writer.AppendByte(Player.Stats[Index_].Volume);
writer.AppendByte(Player.Stats[Index_].Level);
writer.AppendByte(Player.Stats[Index_].Level);
writer.AppendLword(Player.Stats[Index_].Experience);
writer.AppendWord(Player.Stats[Index_].SkillpointBar);
writer.AppendWord(0);
writer.AppendLword(Player.Stats[Index_].Gold);
writer.AppendDword(Player.Stats[Index_].Skillpoints);
writer.AppendWord(Player.Stats[Index_].Attributes);
writer.AppendByte(Player.Stats[Index_].BerserkBar);
writer.AppendDword(0);
writer.AppendDword(Player.Stats[Index_].HP);
writer.AppendDword(Player.Stats[Index_].MP);
if (Player.Flags[Index_].GM == 1)
writer.AppendByte(1);
else
writer.AppendByte((byte)(Player.Stats[Index_].Level < 20 ? 1 : 0));
writer.AppendByte(0);
writer.AppendWord(0);
writer.AppendDword(0);
writer.AppendByte(0);
writer.AppendByte(Player.General[Index_].MaxSlots);
byte itemcount = 0;
for (int j = 0; j <= Player.General[Index_].MaxSlots; j++)
{
if (Database.GetUInt("SELECT * FROM items WHERE owner='" + Char + "' AND itemnumber='item" + j + "'", "itemid") != 0)
itemcount++;
}
writer.AppendByte(itemcount);
int count;
for (byte i = 0; i <= Player.General[Index_].MaxSlots; i++)
{
if (Player.Items[Index_].Item(i).model != 0)
{
writer.AppendByte(i);
writer.AppendDword(Player.Items[Index_].Item(i).model);
switch (Player.Items[Index_].Item(i).type)
{
case 0:
writer.AppendByte(Player.Items[Index_].Item(i).plusvalue);
writer.AppendLword(0);
writer.AppendDword(Player.Items[Index_].Item(i).durability);
writer.AppendByte(Player.Items[Index_].Item(i).blueamount);
count = 1;
while (count <= 9)
{
uint blue = Database.GetUInt("SELECT * FROM items WHERE slot='" + i + "'", "blue" + count);
if (blue != 0)
{
uint blueamount = Database.GetUInt("SELECT * FROM items WHERE slot='" + i + "'", "blue" + count + "amount");
writer.AppendDword(blue);
writer.AppendDword(blueamount);
}
count++;
}
break;
case 1:
writer.AppendWord(Player.Items[Index_].Item(i).quantity);
break;
case 2:
writer.AppendByte(0);
writer.AppendWord(1);
break;
}
}
}
writer.AppendByte(5);
writer.AppendByte(0);
writer.AppendByte(0);
uint[] mastery = new uint[8];
byte[] level = new byte[8];
for (uint i = 1; i <= 7; i++)
{
mastery[i] = Database.GetUInt("SELECT * FROM mastery WHERE owner='" + Char + "' AND mastery_row='mastery_" + i + "'", "mastery");
if (mastery[i] != 0)
{
level[i] = Database.GetByte("SELECT * FROM mastery WHERE owner='" + Char + "' AND mastery_row='mastery_" + i + "'", "level");
writer.AppendByte(1);
writer.AppendDword(mastery[i]);
writer.AppendByte(level[i]);
}
}
writer.AppendWord(2);
Player.Skills[Index_].SkillAmount = Database.GetInt("SELECT * FROM skills WHERE owner='" + Char + "'", "AmountSkill");
for (int i = 1; i <= Player.Skills[Index_].SkillAmount; i++)
{
Player.Skills[Index_].Skilllist[i] = Database.GetUInt("SELECT * FROM skills WHERE owner='" + Char + "'", "Skill" + i);
writer.AppendByte(1);
writer.AppendDword(Player.Skills[Index_].Skilllist[i]);
writer.AppendByte(1);
}
writer.AppendByte(2);
writer.AppendWord(1);
writer.AppendDword(0);
writer.AppendByte(0);
writer.AppendByte(0);
writer.AppendDword(Player.General[Index_].UniqueID);
writer.AppendByte(Player.Position[Index_].XSector);
writer.AppendByte(Player.Position[Index_].YSector);
writer.AppendFloat(Player.Position[Index_].X);
writer.AppendFloat(Player.Position[Index_].Z);
writer.AppendFloat(Player.Position[Index_].Y);
writer.AppendWord(0);
writer.AppendByte(0);
writer.AppendByte(1);
writer.AppendByte(0);
writer.AppendWord(0);
writer.AppendWord(0);
writer.AppendByte(Player.Flags[Index_].Berserk);
writer.AppendFloat(Player.Speeds[Index_].WalkSpeed);
writer.AppendFloat(Player.Speeds[Index_].RunSpeed);
writer.AppendFloat(Player.Speeds[Index_].BerserkSpeed);
writer.AppendByte(0);
if (Player.Flags[Index_].GM == 1)
{
string gmname = string.Format("[GM]{0}", Char);
writer.AppendWord((ushort)gmname.Length);
writer.AppendString(false, gmname);
}
else
{
writer.AppendWord((ushort)Char.Length);
writer.AppendString(false, Char);
}
writer.AppendWord(0);
writer.AppendDword(0x00000100);
writer.AppendDword(0);
writer.AppendDword(0);
writer.AppendDword(0);
writer.AppendByte(0);
writer.AppendByte((byte)Player.Flags[Index_].PvP);
writer.AppendDword(0);
writer.AppendDword(Player.General[Index_].AccountID);
writer.AppendByte(Player.Flags[Index_].GM);
writer.AppendDword(0);
writer.AppendDword(0);
writer.AppendWord(0);
writer.AppendWord(1);
writer.AppendWord(1);
writer.AppendWord(0);
ServerSocket.Send(writer.getWorkspace(), Index_);
Stats.OnStatPacket(Index_);
writer.SetOpcode(SERVER_OPCODES.GAME_SERVER_LOADIN G_END);
ServerSocket.Send(writer.getWorkspace(), Index_);
}
|
|
|
|
02/21/2010, 16:20
|
#11
|
elite*gold: 0
Join Date: Mar 2009
Posts: 443
Received Thanks: 597
|
Quote:
Originally Posted by Windrius
I DON'T MEAN THAT OMG!!! LOOK AT THE PACKETS >_<
|
its the ingame request , and?do you mean that i miss the packet including the uniqueid and another dword? this **** isnt needed
|
|
|
02/21/2010, 16:23
|
#12
|
elite*gold: 0
Join Date: Feb 2010
Posts: 193
Received Thanks: 34
|
i believe shadow, i never saw exp on lyzerk's server before.. iam downloading and installing stuff now,ty shadowz75 for this emu,we apreciate it,i thinck that windrius is jealous or something
|
|
|
02/21/2010, 16:24
|
#13
|
elite*gold: 20
Join Date: Aug 2007
Posts: 1,710
Received Thanks: 1,609
|
Quote:
Originally Posted by Shadowz75
its the ingame request , and?do you mean that i miss the packet including the uniqueid and another dword? this **** isnt needed
|
No I mean look inside.
EVERYTHING IS SAME.
omg must I show every letter here that is same?
look at attack function. Same too.
I'm telling you. This is so copied from lyzerks emu
Quote:
Originally Posted by Shadow_Soul
i believe shadow, i never saw exp on lyzerk's server before.. iam downloading and installing stuff now,ty shadowz75 for this emu,we apreciate it,i thinck that windrius is jealous or something
|
Ou mai gawd. get exp so hard to add. omfg impossible.
|
|
|
02/21/2010, 16:26
|
#14
|
elite*gold: 0
Join Date: Mar 2009
Posts: 443
Received Thanks: 597
|
Quote:
Originally Posted by Windrius
No I mean look inside.
EVERYTHING IS SAME.
omg must I show every letter here that is same?
look at attack function. Same too.
I'm telling you. This is so copied from lyzerks emu
|
funny guy, cause the packet is the same? look at the sremu c++ source and tell me and you'll see its almost the same. thats because the structure is the same.i already parsed this packet: (thanks for the quest part, eckoro)
Code:
public static void GetCharacterDat a(HandshakeApi.TPacket packet)
{
PacketReader reader = new PacketReader(new IntPtr(packet.data), packet.size);
uint model = reader.Read<uint>();
byte volume = reader.Read<byte>();
byte level = reader.Read<byte>();
byte highestlevel = reader.Read<byte>();
ulong exp = reader.Read<ulong>();
ushort xpbar = reader.Read<ushort>();
ushort spbar = reader.Read<ushort>();
ulong gold = reader.Read<ulong>();
uint sp = reader.Read<uint>();
ushort avaiblestatpoints = reader.Read<ushort>();
reader.Read<uint>();
byte berserkguage = reader.Read<byte>();
uint curhp = reader.Read<uint>();
uint curmp = reader.Read<uint>();
byte noobicon = reader.Read<byte>();
byte dailypl = reader.Read<byte>();
ushort totalpk = reader.Read<ushort>();
uint pkpenaltypoint = reader.Read<uint>();
byte rank = reader.Read<byte>();
byte maxslots = reader.Read<byte>();
byte itemcount = reader.Read<byte>();
byte[] slot = new byte[itemcount];
uint[] itemid = new uint[itemcount];
byte[] plus = new byte[itemcount];
ulong[] modifier = new ulong[itemcount];
uint[] durability = new uint[itemcount];
byte[] blueamount = new byte[itemcount];
ushort[] quantitiy = new ushort[itemcount];
uint[] blue = new uint[itemcount];
uint[] blue2 = new uint[itemcount];
byte count;
for (byte i = 0; i < itemcount; i++)
{
slot[i] = reader.Read<byte>();
itemid[i] = reader.Read<uint>();
switch (DatabaseFiles.ItemData.Item[itemid[i]].type)
{
case 0:
plus[i] = reader.Read<byte>();
modifier[i] = reader.Read<ulong>();
durability[i] = reader.Read<uint>();
blueamount[i] = reader.Read<byte>();
count = 1;
while (count <= 9)
{
if (blueamount[i] != 0)
{
blue[i] = reader.Read<uint>();
blue2[i] = reader.Read<uint>();
}
count++;
}
break;
case 1:
quantitiy[i] = reader.Read<ushort>();
break;
case 2:
reader.Read<byte>();
reader.Read<ushort>();
break;
}
}
byte avatarliststart = reader.Read<byte>();
byte avatarcount = reader.Read<byte>();
uint[] avataritemid = new uint[avatarcount];
for (byte i = 0; i < avatarcount; i++)
avataritemid[i] = reader.Read<uint>();
byte avatarlistend = reader.Read<byte>();
byte[] nextmastery = new byte[7];
uint[] mastery = new uint[7];
byte[] masterylevel = new byte[7];
for (byte i = 0; i <7 ; i++)
{
nextmastery[i] = reader.Read<byte>();
mastery[i] = reader.Read<uint>();
masterylevel[i] = reader.Read<byte>();
}
byte skillliststart = reader.Read<byte>();
byte skilllist = reader.Read<byte>();
byte[] skillstart = new byte[skilllist];
uint[] skillid = new uint[skilllist];
byte[] skillevel = new byte[skilllist];
for (byte i = 0; i < skilllist; i++)
{
skillstart[i] = reader.Read<byte>();
skillid[i] = reader.Read<uint>();
skillevel[i] = reader.Read<byte>();
}
byte skilllistend = reader.Read<byte>();
byte questliststart = reader.Read<byte>();
byte amountofcompletedquests = reader.Read<byte>();
reader.Read<uint>();
uint[] questidc = new uint[amountofcompletedquests];
for (byte i = 0; i < amountofcompletedquests; i++)
{
questidc[i] = reader.Read<uint>();
}
byte amountofpendingquests = reader.Read<byte>();
uint[] questid = new uint[amountofpendingquests];
byte[] questrepetitionamount = new byte[amountofpendingquests];
byte[] questcompletitionamount = new byte[amountofpendingquests];
byte[] questtype = new byte[amountofpendingquests];
byte[] objectiveorderno = new byte[amountofpendingquests];
byte[] status = new byte[amountofpendingquests];
ushort[] objectivereflength = new ushort[amountofpendingquests];
string[] objectiveref = new string[amountofpendingquests];
uint[] amountofitemsORkillsORnpcid = new uint[amountofpendingquests];
byte[] amountofobjecttives = new byte[amountofpendingquests];
uint[] questnpc = new uint[amountofpendingquests];
byte[] amountquestnpc = new byte[amountofpendingquests];
for (byte i = 0; i < amountofpendingquests; i++)
{
questid[i] = reader.Read<uint>();
questrepetitionamount[i] = reader.Read<byte>();
questcompletitionamount[i] = reader.Read<byte>();
questtype[i] = reader.Read<byte>();
reader.Read<byte>();
reader.Read<byte>();
objectiveorderno[i] = reader.Read<byte>();
status[i] = reader.Read<byte>();
objectivereflength[i] = reader.Read<ushort>();
byte[] tmp = new byte[objectivereflength[i]];
reader.ReadArray<byte>(tmp, tmp.Length);
objectiveref[i] = Encoding.ASCII.GetString(tmp);
switch (questtype[i])
{
case 0x18:
amountofobjecttives[i] = reader.Read<byte>();
for (int l = 0; l < amountofobjecttives[i]; l++)
amountofitemsORkillsORnpcid[i] = reader.Read<uint>();
break;
case 0x58:
amountofobjecttives[i] = reader.Read<byte>();
for (int l = 0; l < amountofobjecttives[i]; l++)
amountofitemsORkillsORnpcid[i] = reader.Read<uint>();
amountquestnpc[i] = reader.Read<byte>();
for (int l = 0; l < amountquestnpc[i]; l++)
questnpc[i] = reader.Read<uint>();
break;
}
}
byte questistend = reader.Read<byte>();
uint playerid = reader.Read<uint>();
byte xzone = reader.Read<byte>();
byte yzone = reader.Read<byte>();
float x = reader.Read<float>();
float z = reader.Read<float>();
float y = reader.Read<float>();
ushort angle = reader.Read<ushort>();
byte havedestination = reader.Read<byte>();
byte nodestination = reader.Read<byte>();
if (havedestination == 0)
{
byte nodest = reader.Read<byte>();
ushort angle2 = reader.Read<ushort>();
}
else
{
byte xzone2 = reader.Read<byte>();
byte yzone2 = reader.Read<byte>();
ushort x2 = reader.Read<ushort>();
ushort z2 = reader.Read<ushort>();
ushort y2 = reader.Read<ushort>();
}
byte deathflag = reader.Read<byte>();
byte moveementflag = reader.Read<byte>();
byte berserkermode = reader.Read<byte>();
float walkingspeed = reader.Read<float>();
float runningspeed = reader.Read<float>();
float berserkerspeed = reader.Read<float>();
byte noofbuffs = reader.Read<byte>();
uint[] buffskillid = new uint[noofbuffs];
uint[] buffduration = new uint[noofbuffs];
for (byte i = 0; i < noofbuffs; i++)
{
buffskillid[i] = reader.Read<uint>();
buffduration[i] = reader.Read<uint>();
}
ushort playernamelength = reader.Read<ushort>();
byte[] bplayername = new byte[playernamelength];
reader.ReadArray<byte>(bplayername, bplayername.Length);
string playername = Encoding.ASCII.GetString(bplayername);
ushort aliasnamelength = reader.Read<ushort>();
byte[] baliasname = new byte[aliasnamelength];
reader.ReadArray<byte>(baliasname, baliasname.Length);
string aliasname = Encoding.ASCII.GetString(baliasname);
byte joblevel = reader.Read<byte>();
byte jobtype = reader.Read<byte>();
uint currentexp = reader.Read<uint>();
uint thiefexp = reader.Read<uint>();
uint hunterexp = reader.Read<uint>();
reader.Read<byte>();
reader.Read<byte>();
reader.Read<byte>();
byte pkflag = reader.Read<byte>();
reader.Read<ushort>();
reader.Read<uint>();
reader.Read<ushort>();
uint accountid = reader.Read<uint>();
byte gmflag = reader.Read<byte>();
}
|
|
|
02/21/2010, 16:26
|
#15
|
elite*gold: 0
Join Date: Feb 2010
Posts: 193
Received Thanks: 34
|
i realy don't care if it,is at least he is open source and give us,the emu to play with,not like greedy Lyzerk....so ty a lot shdowz,and ignore windrius
|
|
|
Similar Threads
|
CSREMU help -.-
08/09/2011 - SRO Private Server - 3 Replies
Hello..
Well, I've tried searching for proper client download for CSREMU, but i can't find one.. nor can i find the proper tool's needed, since their all scattered, and impossible to detect which one is real or not.
|
CSREMU Help :S:S
10/03/2010 - SRO Private Server - 33 Replies
I know it give much threads or a extra forum but
i think its
better when i start a new thread here
my problem is
when i start all !
and load sro
stabnds the server on check omg o.o
i looked on database by navicat and i changed name
|
CSREmu
04/07/2010 - SRO Private Server - 2 Replies
CSREmu
but when I enter to silkroad the server this check!!!!!!!!
that I can do!!!!!!!!!?
pls help me! :(
|
CSREMU
02/28/2010 - SRO Private Server - 8 Replies
Can i play csremu with 1.236 client cuz when i log on i get crash -.-"
Is it beacuase of the wrong version or could it be smth else?
|
All times are GMT +2. The time now is 16:02.
|
|