First here's how's you set it up.
Download it from
.
And the client from
.
Open the folder, for me its Fixed Source.
Place the folder OldCODB in your C:/ drive.
Then you open OldCODB.
Then in OldCODB open up config.ini.
Edit config.ini to your settings.
Then go to your sources debug folder, for me its Fixed Source\rikardo updated\bin\Debug and double click NewestCOServer.exe.
And when the Cmd prompt opens up type in
For example:
Then login with that account and you're good to go.
.And the client from
.Open the folder, for me its Fixed Source.
Place the folder OldCODB in your C:/ drive.
Then you open OldCODB.
Then in OldCODB open up config.ini.
Edit config.ini to your settings.
Then go to your sources debug folder, for me its Fixed Source\rikardo updated\bin\Debug and double click NewestCOServer.exe.
And when the Cmd prompt opens up type in
PHP Code:
/newacc username password [PM]
PHP Code:
/newacc test 123 [PM]
Then login with that account and you're good to go.
FAQ:
Q.How do I clear the nobility table?
A.You go to your OldCODB and open Nobility.dat. Erase everything in it, then start up your server. In the console type in /exit then start your server up again and the nobility chart will be cleared.
Q.Is the MySQL information in the config.ini required?
A.Yes it is. I've realized if the information is wrong then you cannot create characters.
Q.Why can't GM's pk, trade, or drop items?
A.It is a system made by Tanel to keep the GM's from abusing their powers.
Q.How come once I make a character after I log in my client closes itself?
A.One possibility is you have a special character in your name.
Q.Where can I change the experience rates?
A.In World.cs look search for public uint ExperienceRate and change that to the number of your desire. That rate goes for character leveling as well as proficiency and spell leveling.
Q.How come I when I add new weapons I they are invisible?
A.I don't know too much on this topic, but from what is said by a lot of people, TQ uses a DBC file so a lot of stuff cannot be changed.
Q.I'm getting this error:How do I fix it?
A.

Q.Everything is setup right, why is my client crashing whenever I try to login?
A.This happens if you are using 127.0.0.1 as the GameServerIP.
Q.I'm getting an error saying the database folder does not exist, how do I fix this?
A.That means your OldCODB is not in the C:/ drive.
Q.How do I make a map a pkfreemap?
A.Search for public static ArrayList FreePKMaps and add the Mapid there.
Q.I barely opened the source and there are already errors!
A.

Commands:
/cps - Gives you CPs.(Max 999,999,999)
Ex: /cps 999999999
/silvers - Gives you silvers.(Max 999,999,999)
Ex: /silvers 999999999
/level - Makes you a level of your choice(Max 255)
Ex: /level 255
/job - Makes you a certain profession.
Ex:/Job 55
Jobs Id's:
10,InternTrojan
11,Trojan
12,VeteranTrojan
13,TigerTrojan
14,DragonTrojan
15,TrojanMaster
20,InternWarrior
21,Warrior
22,BrassWarrior
23,SilverWarrior
24,GoldWarrior
25,WarriorMaster
40,InternArcher
41,Archer
42,EagleArcher
43,TigerArcher
44,DragonArcher
45,ArcherMaster
50,InternNinja
51,Ninja
52,MiddleNinja
53,DarkNinja
54,MysticNinja
55,NinjaMaster
100,InternTaoist
101,Taoist
132,WaterTaoist
133,WaterWizard
134,WaterMaster
135,WaterSaint
142,FireTaoist
143,FireWizard
144,FireMaster
145,FireSaint
190,InternTaoist
11,Trojan
12,VeteranTrojan
13,TigerTrojan
14,DragonTrojan
15,TrojanMaster
20,InternWarrior
21,Warrior
22,BrassWarrior
23,SilverWarrior
24,GoldWarrior
25,WarriorMaster
40,InternArcher
41,Archer
42,EagleArcher
43,TigerArcher
44,DragonArcher
45,ArcherMaster
50,InternNinja
51,Ninja
52,MiddleNinja
53,DarkNinja
54,MysticNinja
55,NinjaMaster
100,InternTaoist
101,Taoist
132,WaterTaoist
133,WaterWizard
134,WaterMaster
135,WaterSaint
142,FireTaoist
143,FireWizard
144,FireMaster
145,FireSaint
190,InternTaoist
/prof - Weapon proficiency of your choice.
Ex: /prof 410 20
Proficiency ID's:
000,Boxing
410,Blade
420,Sword
421,Backsword
430,Hook
440,Whip
441,Mace
450,Axe
460,Hammer
470,Crutch
480,Club
481,Scepter
490,Dagger
491,Prod
492,Fan
493,Flute
510,Glaive
511,Saber
520,Epee
521,Zither
522,Lute
530,Poleaxe
540,LongHammer
550,Scythe
560,Spear
562,Pickaxe
570,Spade
580,Halberd
561,Wand
500,Bow
601,Katana
700,Boxing
710,Blade
720,Sword
721,MagicSword
730,Hook
740,Whip
741,Mace
750,Axe
760,Hammer
770,Crutch
780,Club
781,Scepter
790,Dagger
791,Prod
792,Fan
793,Flute
900,Shield
422,Other
410,Blade
420,Sword
421,Backsword
430,Hook
440,Whip
441,Mace
450,Axe
460,Hammer
470,Crutch
480,Club
481,Scepter
490,Dagger
491,Prod
492,Fan
493,Flute
510,Glaive
511,Saber
520,Epee
521,Zither
522,Lute
530,Poleaxe
540,LongHammer
550,Scythe
560,Spear
562,Pickaxe
570,Spade
580,Halberd
561,Wand
500,Bow
601,Katana
700,Boxing
710,Blade
720,Sword
721,MagicSword
730,Hook
740,Whip
741,Mace
750,Axe
760,Hammer
770,Crutch
780,Club
781,Scepter
790,Dagger
791,Prod
792,Fan
793,Flute
900,Shield
422,Other
/item - Rewards you with the item of your choice.
Ex: /item ConquestArmor 12 7 255 13 13
12-Plus
7-Bless
255-Enchant
13-GemID
13-GemID
Problems:
Expball:Unlimited Times a day.
Pots:Now cannot be used when MP/HP is already full.
Ladyluck:With this code you can do the lottery unlimited times.
Nearly Perfect Expball Calculations.
Code:
#region ExpBall
case 723700://This is for the expball 10 Times a day. This code makes it so you can use it as many times as you want. Replace your old expball code with this one.
{
if (Level < 137)
{
IncreaseExp(ExpBallExp, false);
RemoveItem(I);
}
else
{
MyClient.LocalMessage(2000, "You are already the highest level.");
}
break;
}
#endregion
Code:
#region MP Pots//Replace your entire potion code with mine.
case 1001000:
{
if (CurMP < MaxMP)
{
CurMP += 70;
RemoveItem(I);
}
else
{
MyClient.LocalMessage(2005, "You MP is currently full.");
}
break;
}
case 1001010:
{
if (CurMP < MaxMP)
{
CurMP += 200;
RemoveItem(I);
}
else
{
MyClient.LocalMessage(2005, "You MP is currently full.");
}
break;
}
case 1001020:
{
if (CurMP < MaxMP)
{
CurMP += 450;
RemoveItem(I);
}
else
{
MyClient.LocalMessage(2005, "You MP is currently full.");
}
break;
}
case 1001030:
{
if (CurMP < MaxMP)
{
CurMP += 1000;
RemoveItem(I);
}
else
{
MyClient.LocalMessage(2005, "You MP is currently full.");
}
break;
}
case 1001040:
{
if (CurMP < MaxMP)
{
CurMP += 2000;
RemoveItem(I);
}
else
{
MyClient.LocalMessage(2005, "You MP is currently full.");
}
}
break;
case 1002030:
{
if (CurMP < MaxMP)
{
CurMP += 3000;
RemoveItem(I);
}
else
{
MyClient.LocalMessage(2005, "You MP is currently full.");
}
break;
}
case 1002040:
{
if (CurMP < MaxMP)
{
CurMP += 4500;
RemoveItem(I);
}
else
{
MyClient.LocalMessage(2005, "You MP is currently full.");
}
break;
}
#endregion
#region HP Pots
case 1000000:
{
if (CurHP < MaxHP)
{
CurHP += 70;
RemoveItem(I);
}
else
{
MyClient.LocalMessage(2005, "You HP is currently full.");
}
break;
}
case 1000010:
{
if (CurHP < MaxHP)
{
CurHP += 150;
RemoveItem(I);
}
else
{
MyClient.LocalMessage(2005, "You HP is currently full.");
}
break;
}
case 1000020:
{
if (CurHP < MaxHP)
{
CurHP += 250;
RemoveItem(I);
}
else
{
MyClient.LocalMessage(2005, "You HP is currently full.");
}
break;
}
case 1000030:
{
if (CurHP < MaxHP)
{
CurHP += 500;
RemoveItem(I);
}
else
{
MyClient.LocalMessage(2005, "You HP is currently full.");
}
break;
}
case 1002000:
{
if (CurHP < MaxHP)
{
CurHP += 800;
RemoveItem(I);
}
else
{
MyClient.LocalMessage(2005, "You HP is currently full.");
}
break;
}
case 1002010:
{
if (CurHP < MaxHP)
{
CurHP += 1200;
RemoveItem(I);
}
else
{
MyClient.LocalMessage(2005, "You HP is currently full.");
}
break;
}
case 1002020:
{
if (CurHP < MaxHP)
{
CurHP += 2000;
RemoveItem(I);
}
else
{
MyClient.LocalMessage(2005, "You HP is currently full.");
}
break;
}
case 1002050:
{
if (CurHP < MaxHP)
{
CurHP +=3000;
RemoveItem(I);
}
else
{
MyClient.LocalMessage(2005, "You HP is currently full.");
}
break;
}
#endregion
Code:
case 923:
{
if (Control == 0)
{
GC.AddSend(Packets.NPCSay(("Welcome to the Lottery Center! There are meny LuckyBoxes which have innumerable treasure such as super gems,two-socket gears, up to 500,000,000 silvers etc. in them. If you are level 70 or above, you are allowed to enter the Lottery Center as much as you want.")));
GC.AddSend(Packets.NPCSay(("And I charge you only 27 CPs for each admission.Come on, Try your luck right now!")));
GC.AddSend(Packets.NPCLink("Wow, good deal!", 1));
GC.AddSend(Packets.NPCLink("May I know the rules first?", 2));
GC.AddSend(Packets.NPCLink("No Thanks!", 255));
GC.AddSend(Packets.NPCSetFace(N.Avatar));
GC.AddSend(Packets.NPCFinish());
}
else if (Control == 1)
{
GC.MyChar.Teleport(700, 40, 50);
return;
}
if (GC.MyChar.Level >= 70)
{
if (GC.MyChar.Inventory.Count < 40)
{
if (GC.MyChar.CPs >= 27)
{
GC.MyChar.Teleport(700, 40, 50);
GC.MyChar.CPs -= 27;
GC.MyChar.Lottery = true;
}
else
{
GC.AddSend(Packets.NPCSay("I'm sorry you do not have the required CPs."));
GC.AddSend(Packets.NPCLink("Okay, I will be back when I have 27 CPs.", 255));
GC.AddSend(Packets.NPCSetFace(N.Avatar));
GC.AddSend(Packets.NPCFinish());
}
}
else
{
GC.AddSend(Packets.NPCSay("Please make some room in your item box first."));
GC.AddSend(Packets.NPCLink("Okay...", 255));
GC.AddSend(Packets.NPCSetFace(N.Avatar));
GC.AddSend(Packets.NPCFinish());
}
}
else
{
GC.AddSend(Packets.NPCSay("I'm sorry you do not have the required Level 70."));
GC.AddSend(Packets.NPCLink("Okay...", 255));
GC.AddSend(Packets.NPCSetFace(N.Avatar));
GC.AddSend(Packets.NPCFinish());
}
}
if (Control == 2)
{
GC.AddSend(Packets.NPCSay("You will be teleported to Lottery Center where there are many LuckyBoxes after you pay me 27 CPs. You may choose one box to try your luck at your will."));
GC.AddSend(Packets.NPCSay("Remeber you have only one chance to open a LuckyBox every time. If you want to open another box, you have to leave the room to re-enrol in Market."));
GC.AddSend(Packets.NPCLink("Okay...", 255));
GC.AddSend(Packets.NPCSetFace(N.Avatar));
GC.AddSend(Packets.NPCFinish());
}
break;
}
Code:
public uint ExpBallExp
{
get
{
if (Level < 30)
return (uint)(15000 + Level * 430);
else if (Level < 50)
return (uint)(40000 + Level * 430);
else if (Level < 80)
return (uint)(30000 + Level * 500);
else if (Level < 80)
return (uint)(30000 + Level * 600);
else if (Level < 100)
return (uint)(30000 + Level * 700);
else if (Level < 110)
return (uint)(30000 + Level * 900);
else if (Level < 120)
return (uint)(30000 + Level * 1100);
else if (Level < 125)
return (uint)(30000 + Level * 1500);
else if (Level < 130)
return (uint)(30000 + Level * 1000);
else
return (uint)(30000 + Level * 1000);
}
}
Need to knows
First I will teach you how to read/write from certain files in the OldCODB.
NPCs.txt
4358 is the NPC ID.
9927 is the NPC type, meaning the mesh used for this npc.
1 is the flag. The flag is used to decide whether the npc is a dialog npc, a shop npc, a face change npc, a stake, a scarecrow, etc.
0 is the avatar. Meaning the picture that pops up in the npc dialog box. If the npc is a flag other than 2, 3, 4, 10 ,15, or 27 then you will set this as 0.
1000 is the map you will set the npc on.
467 is the X coordinate of the NPC's location.
633 is the Y coordinate of the NPC's location.
MobInfos.txt
1 is the MobID.
Bull is the Mob's name.
1 is the type, meaning behavior. It can be set to 1, 2, 3, 4, or 6.
-If the behavior is set to 1, then it just hunts players.
-If the behavior is set to 2, then it just hunts other mobs.
-If the behavior is set to 3, then it hunts others mobs and players.
-If the behavior is set to 4, then it just hunts bluenames.
-If the behavior is set to 6, then is hunts mobs and bluenames. This is the behavior Guards are set to.
235 is the Mob's mesh.
1 is the Mob's level.
33 is the Mob's MaxHP.
0 is the Mob's defense.
0 is the Mob's magic defense.
0 is the Mob's magic attack.
5 is the Mob's minimum attack.
6 is the Mob's maximum attack.
1 is the Mob's damage reduce time.
36 is the Mob's dodge.
2 is the Mob's attack type. The attack type can be set to 2 or 21.
-If the attack type is set to 2, then the Mob uses melee attacks.
-If the attack type is set to 21, then the Mob uses magic attacks.
True is the boolean statement regarding if the Mob drops or doesn't drop.
2 is the Mob's attack distance. Meaning how far away the Mob can be and still attack.
1 is the minimum amount of silvers the mob can drop.
50 is the maximum amount of silvers the mob can drop.
1000 is the Mob's move speed.
12 is the Mob's spawn speed.
True is the boolean statement regarding level damage difference.
MobSpawns.txt
Lets take an example out of MobSpawns.txt
1 is the ID of the Mob you are creating a spawn for.
75 is the amount of Mob's you are spawning.
1002 is the map which you are spawning the Mob's in.
454 is X-Starting point of the spawn.
455 is the Y-Starting point of the spawn.
474 is the X-Ending point of the spawn.
470 is the Y-Ending point of the spawn.
Portals.txt
Lets take an example out of Portals.txt
1511 is the MapID in which the portal is located.
51 is the X-Coordinate in which the portal is located.
73 is the Y-Coordinate in which the portal is located.
1002 is the MapID of the Map the portal is taking you to.
439 is the X-Coordinate in which the portal is taking you to.
385 is the Y-Coordinate in which the portal is taking you to.
ItemAdd.ini
Lets take an example out of ItemAdd.ini
150130 is the ItemID.
9 is the Plus.
0 is the AdditionalHP.
256 is the Additional MinAttack.
256 is the Additional MaxAttack.
0 is the Additional Defense.
0 is the Additional MagicAttack
0 is the Additional MagicDefense.
0 is the Additional Dexterity/Agility.
0 is the Additional Dodge.
Companions.txt
Lets take an example out of Companions.txt
9000 is the type;
-9000-9003 is the reborn guard summon set.
-9005-9008 is the ghostbat summon set.
-9010-9013 is the ghostbatboss summon set.
-9015-9018 is the EvilBatA/B/C/D summon set.
-9020-9023 is the FireRatA/B/C/D summon set.
-9025-9028 is the SkeletonA/B/C/D summon set
3500 is the Companion's minimum attack.
3500 is the Companion's maximum attack.
90 is the Companion's level.
1000 is the SkillID of the Skill that the Companion uses; in this case, thunder.
10000 is the Companion's MaxHP.
268 is the Companion's mesh.
DarkGuard is the Companion's name.
Nobility.dat
Lets take an example out of my Nobility.dat
Looks like a bunch of nonsense right?
It's normal text encoded into binary.
Really simple to decode. If you take a look into the Empire.Info.ReadThis method you see this:
From this you know its string, ulong, uint by looking at the definitions above.
I did something really simple to decode this.
I went to the ReadThis method right below this and under
I put this
Program.WriteLine(Name + " " + Donation + " " + ID);
That writes the name, donation, and UID of the player on the console. Now you just /exit and close the console, open your debug file that writes everytime you exit the server and you will see your decoded Nobility.dat.
For me it writes:
And thats Nobility.dat for you.
You can do the same for KOBoard.dat.
Different methods to use through NPC's
There are different things you can do with NPC's, first I will teach you the basics.
How to teleport:
The action used to teleport is GC.MyChar.Teleport(Mapid, X, Y); That's the way to teleport. For example, if you want the npc to teleport the character to the center of Twin City it would be
GC.MyChar.Teleport(1002, 438, 377);
How to give a character an item:
There are a few different method for giving characters items. In character.cs you will see a couple of listed voids and they are:
public void AddItem(uint ID)
-which is just using giving them item with no extra bonuses.
public void AddItem(uint ID, byte Plus)
-which is the itemid then then plus amount.
I think its pretty simple on how to use them
GC.MyChar.AddItem(410339);
GC.MyChar.AddItem(410339, 12);
NPCs.txt
Code:
[COLOR="Blue"]4358 [/COLOR][COLOR="Red"]9927[/COLOR] [COLOR="SeaGreen"]1[/COLOR] [COLOR="Orange"]0[/COLOR] [COLOR="DarkOrchid"]1000[/COLOR] [COLOR="Magenta"]467[/COLOR] [COLOR="Olive"]633[/COLOR]
9927 is the NPC type, meaning the mesh used for this npc.
1 is the flag. The flag is used to decide whether the npc is a dialog npc, a shop npc, a face change npc, a stake, a scarecrow, etc.
0 is the avatar. Meaning the picture that pops up in the npc dialog box. If the npc is a flag other than 2, 3, 4, 10 ,15, or 27 then you will set this as 0.
1000 is the map you will set the npc on.
467 is the X coordinate of the NPC's location.
633 is the Y coordinate of the NPC's location.
MobInfos.txt
Code:
1 Bull 1 235 1 33 0 0 0 5 6 1 36 2 True 2 1 50 1000 12 True
Bull is the Mob's name.
1 is the type, meaning behavior. It can be set to 1, 2, 3, 4, or 6.
-If the behavior is set to 1, then it just hunts players.
-If the behavior is set to 2, then it just hunts other mobs.
-If the behavior is set to 3, then it hunts others mobs and players.
-If the behavior is set to 4, then it just hunts bluenames.
-If the behavior is set to 6, then is hunts mobs and bluenames. This is the behavior Guards are set to.
235 is the Mob's mesh.
1 is the Mob's level.
33 is the Mob's MaxHP.
0 is the Mob's defense.
0 is the Mob's magic defense.
0 is the Mob's magic attack.
5 is the Mob's minimum attack.
6 is the Mob's maximum attack.
1 is the Mob's damage reduce time.
36 is the Mob's dodge.
2 is the Mob's attack type. The attack type can be set to 2 or 21.
-If the attack type is set to 2, then the Mob uses melee attacks.
-If the attack type is set to 21, then the Mob uses magic attacks.
True is the boolean statement regarding if the Mob drops or doesn't drop.
2 is the Mob's attack distance. Meaning how far away the Mob can be and still attack.
1 is the minimum amount of silvers the mob can drop.
50 is the maximum amount of silvers the mob can drop.
1000 is the Mob's move speed.
12 is the Mob's spawn speed.
True is the boolean statement regarding level damage difference.
MobSpawns.txt
Lets take an example out of MobSpawns.txt
Code:
[COLOR="Red"]1[/COLOR] [COLOR="Blue"]75[/COLOR] [COLOR="Orange"]1002[/COLOR] [COLOR="DarkOrchid"]454[/COLOR] [COLOR="SeaGreen"]455[/COLOR] [COLOR="Magenta"]474[/COLOR] [COLOR="Sienna"]470[/COLOR]
75 is the amount of Mob's you are spawning.
1002 is the map which you are spawning the Mob's in.
454 is X-Starting point of the spawn.
455 is the Y-Starting point of the spawn.
474 is the X-Ending point of the spawn.
470 is the Y-Ending point of the spawn.
Portals.txt
Lets take an example out of Portals.txt
Code:
[COLOR="Red"]1511[/COLOR] [COLOR="Blue"]51[/COLOR] [COLOR="Orange"]73[/COLOR] [COLOR="DarkOrchid"]1002[/COLOR] [COLOR="Magenta"]439[/COLOR] [COLOR="Sienna"]385[/COLOR]
51 is the X-Coordinate in which the portal is located.
73 is the Y-Coordinate in which the portal is located.
1002 is the MapID of the Map the portal is taking you to.
439 is the X-Coordinate in which the portal is taking you to.
385 is the Y-Coordinate in which the portal is taking you to.
ItemAdd.ini
Lets take an example out of ItemAdd.ini
Code:
150130 9 0 256 256 0 0 0 0 0
9 is the Plus.
0 is the AdditionalHP.
256 is the Additional MinAttack.
256 is the Additional MaxAttack.
0 is the Additional Defense.
0 is the Additional MagicAttack
0 is the Additional MagicDefense.
0 is the Additional Dexterity/Agility.
0 is the Additional Dodge.
Companions.txt
Lets take an example out of Companions.txt
Code:
9000 3500 3500 90 1000 10000 268 DarkGuard
-9000-9003 is the reborn guard summon set.
-9005-9008 is the ghostbat summon set.
-9010-9013 is the ghostbatboss summon set.
-9015-9018 is the EvilBatA/B/C/D summon set.
-9020-9023 is the FireRatA/B/C/D summon set.
-9025-9028 is the SkeletonA/B/C/D summon set
3500 is the Companion's minimum attack.
3500 is the Companion's maximum attack.
90 is the Companion's level.
1000 is the SkillID of the Skill that the Companion uses; in this case, thunder.
10000 is the Companion's MaxHP.
268 is the Companion's mesh.
DarkGuard is the Companion's name.
Nobility.dat
Lets take an example out of my Nobility.dat
Code:
Hadise¿�È; „-î ~FearMe~ eÍ žûA Sun_TzuÀˆ º0 ShinobIÀIn
T¼ .Š*ü ØÚ sheep1`¢Ü ê@Ž CipiÀÂÚ ü¦! whoops¿¹� zæh ~Seth~ ê2 —à ^Yang^ÀŒl #Á# TheNinjaäA ôÈ… ~^A.r.u.r.u.u^~Àzò 1;Q Laura^^ ´Ä ½H€ ~Blaze~ÀVþ P Ú Mjoao@þ® ÞÇ ^Dark^^moon^€ðú §{ _Gamma_€ðú ¡P� SaRaH@¥® :× ShinobI€Þ€ ¤Y ~Laura~ Zb Cî
Black.WolfÀS ¼ karen÷j$
'� NewDream€ÃÉ Ë�† Oakley@x} .A¿ ~!ARWEN!~€±O ó˜ö ~Gods~of~hell~à‚ì K<M Apollon@]Æ dc¶ moon · ¨¬î X_Ninja · ,´î timetodie R¦ �‹ Wesleey.(x)*7* L=… Sexy*****€–˜ }ƒ
s2Shkiras2€–˜ ¿3ÿ Malvious€–˜ ÎÂ7
johnalex10 |’ Z° ~Baby~ z ü× $un$h!n3`Vl Œ6 SadnesSÀÏj ˆú ~D4ng3rÀÏj ?¦À
Pro~NiNjahà;f ÛM Raven@µd Crú FailasinÀš^ ƒ X~NinjaÀš^ v) RyuzukiNajAizen€�[ xÜõ RavenSkye€�[ —) goldenarrow@KL êÞÛ ~SaLLy~@KL 5£ 5£
It's normal text encoded into binary.
Really simple to decode. If you take a look into the Empire.Info.ReadThis method you see this:
Code:
public void WriteThis(System.IO.BinaryWriter BW)
{
if (Name == null)
Name = "";
BW.Write(Name.Length);
BW.Write(Encoding.ASCII.GetBytes(Name));
BW.Write(Donation);
BW.Write(ID);
}
I did something really simple to decode this.
I went to the ReadThis method right below this and under
Code:
ID = BR.ReadUInt32();
Program.WriteLine(Name + " " + Donation + " " + ID);
That writes the name, donation, and UID of the player on the console. Now you just /exit and close the console, open your debug file that writes everytime you exit the server and you will see your decoded Nobility.dat.
For me it writes:
PHP Code:
Hadise 1002999999 15609220
~FearMe~ 500000000 4324254
Sun_Tzu 203000000 19970592
ShinobI 175000000 17415252
. 134000010 14342169
sheep1 131900000 9322730
Cipi 115000000 2205436
whoops 110999999 6874746
~Seth~ 104000000 18407575
^Yang^ 91000000 2343203
TheNinja 86000100 8767732
~^A.r.u.r.u.u^~ 83000000 5323569
Laura^^ 80000000 8407229
~Blaze~ 67000000 14295120
Mjoao 61800000 13098513
^Dark^^moon^ 50000000 8062631
_Gamma_ 50000000 10309793
SaRaH 45000000 9945914
ShinobI 42000000 17389988
~Laura~ 40000000 18935363
Black.Wolf 39000000 17833404
karen 35941111 8464138
NewDream 30000000 8818891
Oakley 25000000 12534062
~!ARWEN!~ 22000000 16161011
~Gods~of~hell~ 15500000 5061707
Apollon 13000000 11952996
moon 12000000 15641768
X_Ninja 12000000 15643692
timetodie 10900000 9114255
Wesleey.(x) 10500000 8731980
Sexy***** 10000000 1475453
s2Shkiras2 10000000 16724927
Malvious 10000000 3654350
johnalex10 9600000 11538010
~Baby~ 8000000 14096380
$un$h!n3 7100000 16856716
SadnesS 7000000 16392072
~D4ng3r 7000000 12625471
Pro~NiNjah 6700000 5051611
Raven 6600000 16413251
Failasin 6200000 17990418
X~Ninja 6200000 2688630
RyuzukiNajAizen 6000000 16112760
RavenSkye 6000000 1321367
goldenarrow 5000000 14409450
~SaLLy~ 5000000 18391861
You can do the same for KOBoard.dat.
Different methods to use through NPC's
There are different things you can do with NPC's, first I will teach you the basics.
How to teleport:
The action used to teleport is GC.MyChar.Teleport(Mapid, X, Y); That's the way to teleport. For example, if you want the npc to teleport the character to the center of Twin City it would be
GC.MyChar.Teleport(1002, 438, 377);
How to give a character an item:
There are a few different method for giving characters items. In character.cs you will see a couple of listed voids and they are:
public void AddItem(uint ID)
-which is just using giving them item with no extra bonuses.
public void AddItem(uint ID, byte Plus)
-which is the itemid then then plus amount.
I think its pretty simple on how to use them
GC.MyChar.AddItem(410339);
GC.MyChar.AddItem(410339, 12);
Little add-on:
Just as a little notice, use the function "search this thread", before asking any questions in top of this post.
Huseby






