Welcome to RaGEZONE - MMORPG Development Forums (sponsored by tfn.gr) Mark forums read | View Forum Leaders
RaGEZONE - MMORPG Development Forums (sponsored by tfn.gr)

Kal Development Discuss, The Information Thread at Kal Online forum; The Information Thread Topic Created By Nuklear and Content Pooped By KingIzu Links [Only Registered and Activated Users Can See ...




Reply
Thread Tools
The Information Thread
 
 
Administrator of Awesome

Rank: Alpha Member


Reply With Quote
 
Join Date: May 2006
Location: Earth
Posts: 3,423
08-14-2007, 10:18 PM
 
The Information Thread
Topic Created By Nuklear and Content Pooped By KingIzu

Links
[Only Registered and Activated Users Can See Links. Click Here To Register...] ([Only Registered and Activated Users Can See Links. Click Here To Register...])
Myths and Facts
Myth: Dungeons are placed in very high/low places where we can't see them.
Fact: They're really on a separate map. Somewhat. It's very hard to explain.

Myth: Nuklear is homosexual.
Fact: Nuklear may have sometimes gone too far on his gay jokes. But, Nuklear is not, and will never be homosexual nor bisexual.
Packets
[Server] Init
Header: 18 00 2a
Body:
PHP Code:
(byte)0x47
(byte)0xa7
(byte)0xf6
(byte)0x16
(byte)first Key // for packet encryption
(byte)0xd4
(byte)0x4c
(byte)0x7e
(byte)0x44
(byte)0x4c
(byte)0x0d
(byte)0x2d
(byte)0x45
(byte)0x61
(byte)0x1e
(byte)0x00
(byte)0x00
(byte)0x?? //I really don't know what it is.
(byte)0x00
(byte)0x00
(byte)0x00
(byte)0x01
(byte)0x12
(byte)0xfc 
[Client] Init
Header: 07 00 a3
Body:
PHP Code:
(byte)??
(
byte)??
(
byte)??
(
byte)?? 
[Client] Login
Header: ?? ?? 02
Body:
PHP Code:
(Char Array)Username
(byte)0x00
(Char Array) Password
(byte)0x00 
[Server] Login Error
Header: 04 00 2b
Body:
PHP Code:
(byteError 
Errors:
PHP Code:
        UNDEFINED     0x01,
        
WRONGID       0x02,
        
WRONG_PASS    0x03,
        
CONNECT_LATER 0x04,
        
BLOCKED       0x05,
        
ID_EXPIRED    0x06,
        
TOO_YOUNG     0x07,
        
NOT_ALLOWED   0x08
[Server] Character List
Header: ?? ?? 11
Body:
PHP Code:
(int) 0x00
(byte)0x00
(byteNumber of players

[Player Data]

(int)
0x03 
For each player:
Player Data:
PHP Code:
(int)Player ID
(Char Array) Player Name
(byte)0x00
(byte)Class
(
byte)Level
(byte)0x00 // Don't know, could be meant like that.
(byte)Strength
(byte)Health
(byte)Intelligence
(byte)Wisdom
(byte)Agility
(byte)Face
(byte)Hair
(byte)Equipment count.

[
Equipment
For each equipment:
Player Data:
PHP Code:
(short)Index 
[Server] Deleted Character List
Header: ?? ?? 19
Body:
PHP Code:
(byte)Number of deleted characters

[Deleted Character Data
For each deleted character:
Deleted Character Data:
PHP Code:
(int)Player ID
(Char Array)Name
(byte)0x00
(byte)Level//Could be class..
(byte)Class? //Could be level..
(byte)Days remaining 
I'll add more, but right now I'm hungry.

If you actually know something:

Note: I made this months ago, so all of these below may not be correct.
PHP Code:

namespace KalServer
.Connections.Packets
{
    
internal enum LoginError
    
{
        
Undefined 0x01,
        
WrongID 0x02,
        
WrongPassword 0x03,
        
TryAgain 0x04,
        
Blocked 0x05,
        
Expired 0x06,
        
Young 0x07,
        
NotAllowed 0x08,
        
NoError 0x09,
    }

    
internal enum Effects
    
{
        
TakeMedicine 0x01,
        
LevelUp 0x03,
        
Rebirth 0x04,
        
PowerImpr 0x05,
        
DamageRed 0x06,
        
EBImpr 0x07,
        
AccuImpr 0x08,
        
EvaImpr 0x09,
        
PerfectDefense 0x0A,
        
HPAbsorb 0x0B,
        
TigerClaws 0x0C,
        
BearSkin 0x0D,
        
Wisdom 0x0E,
        
Foresight 0x0F,
        
EagleWings 0x10,
        
FishingStone 0x12,
        
EXPStone 0x13,
        
WealthStone 0x14,
        
LuckyKey 0x15,
        
LuckyStone 0x16,
        
LightningBlow 0x21
    
}

    
internal enum Animation
    
{

    }

    
internal enum HitType
    
{
        
Normal 0x01,
        
Critical 0x02,
        
Miss 0x00,
    }

    
sealed class InitPacket Packet
    
{
        public 
InitPacket(byte FirstKeybyte Unknown)
            : 
base(0x2A0x0024)
        {
            
WriteData((byte)0x47);
            
WriteData((byte)0xa7);
            
WriteData((byte)0xf6);
            
WriteData((byte)0x16);
            
WriteData(FirstKey);
            
WriteData((byte)0xd4);
            
WriteData((byte)0x4c);
            
WriteData((byte)0x7e);
            
WriteData((byte)0x44);
            
WriteData((byte)0x4c);
            
WriteData((byte)0x0d);
            
WriteData((byte)0x2d);
            
WriteData((byte)0x45);
            
WriteData((byte)0x61);
            
WriteData((byte)0x1e);
            
WriteData((byte)0x00);
            
WriteData((byte)0x00);
            
WriteData(Unknown);
            
WriteData((byte)0x00);
            
WriteData((byte)0x00);
            
WriteData((byte)0x00);
            
WriteData((byte)0x01);
            
WriteData((byte)0x12);
            
WriteData((byte)0xfc);
        }
    }

    
sealed class ConfirmSelectPacket Packet
    
{
        public 
ConfirmSelectPacket()
            : 
base(0x041)
        {
            
WriteData((byte)0x00);
        }
    }

    
sealed class ELoginPacket Packet
    
{
        public 
ELoginPacket(LoginError Error)
            : 
base(0x2B,  1)
        {
            
WriteData((byte)Error);
        }
    }

    
sealed class CharacterDeletedListPacket Packet
    
{
        public 
CharacterDeletedListPacket(List<CharacterChars)
            : 
base(0x19)
        {
            
short PacketSize 1;

            foreach ( 
Character Char in Chars )
            {
                
PacketSize += 8;
                
PacketSize += Char.Name.Length;
            }

            
WriteData( (byteChars.Count );

            foreach ( 
Character Char in Chars )
            {
                
WriteData( (int)Char.ID );
                
WriteDataChar.Name.ToCharArray( ) );
                
WriteData( (byte0x00 );
                
WriteData( (byte)Char.Level );
                
WriteData( (byte)Char.Class );
                
WriteData( (byte)Char.DaysRemaining );
            }
        }
    }

    
sealed class ECreateCharacterPacket Packet
    
{
        public 
ECreateCharacterPacket()
            : 
base(0x2C,  1)
        {
            
WriteData((byte)0x04);
        }
    }

    
sealed class Check Packet
    
{
        public 
Check()
            : 
base(0x1E,  0)
        {

        }
    }

    
sealed class UnknownPacket Packet
    
{
        public 
UnknownPacket( )
            : 
base0x16,  )
        {
            
WriteData0x00 );
        }
    }

    
sealed class UnknownPacket2 Packet
    
{
        public 
UnknownPacket2( )
            : 
base0x1C,  )
        {
            
WriteData( (byte0x0b );
        }
    }

    
sealed class CharacterListPacket Packet
    
{
        public 
CharacterListPacket(List<CharacterCharacters)
            : 
base(0x11)
        {
            
short PacketSize 10;
            for (
byte i 0Characters.Counti++)
            {
                
//Saftey Measure
                
if (2)
                    break;

                
PacketSize += (short)Characters[i].Name.Length;
                
PacketSize += 19;
                
PacketSize += (short)(Characters[i].Equipment.Count 2);

            }

            
Reset(PacketSize);

            
WriteData((int)0x00);
            
WriteData((byte)0x00);
            
WriteData((byte)Characters.Count);

            for (
byte i 0Characters.Counti++)
            {
                
WriteData(Characters[i].ID);
                
WriteData(Characters[i].Name.ToCharArray());
                
WriteData((byte)0x00);
                
WriteData((byte)Characters[i].Class);
                
WriteData(Characters[i].Level);
                
WriteData((byte)0x00);
                
WriteData(Characters[i].Strength);
                
WriteData(Characters[i].Health);
                
WriteData(Characters[i].Intelligence);
                
WriteData(Characters[i].Wisdom);
                
WriteData(Characters[i].Agility);
                
WriteData((byte)Characters[i].Face);
                
WriteData((byte)Characters[i].Hair);

                
WriteData((byte)Characters[i].Equipment.Count);
                for (
byte j 0Characters[i].Equipment.Countj++)
                {
                    
//Safety Measure
                    
if (4)
                        break;

                    
WriteData(Characters[i].Equipment[j]);
                }
            }

            
WriteData((int)0x03);
            
Characters.Clear();
        }
    }

    
sealed class PlayerInfoPacket Packet
    
{
        public 
PlayerInfoPacket(Character Player )
            : 
base0x42,  54 )
        {
            
WriteDataPlayer.Job );
            
WriteData( (short0x00 );
            
WriteDataPlayer.Contribution );
            
WriteDataPlayer.Strength );
            
WriteDataPlayer.Health );
            
WriteDataPlayer.Intelligence );
            
WriteDataPlayer.Wisdom );
            
WriteDataPlayer.Agility );
            
WriteData( (shortPlayer.HP[0] );
            
WriteData( (shortPlayer.HP[1] );
            
WriteData( (shortPlayer.MP[0] );
            
WriteData( (shortPlayer.MP[1] );
            
WriteDataPlayer.OTP );
            
WriteDataPlayer.Evasion );
            
WriteDataPlayer.Defense );
            
WriteDataPlayer.Absorption );
            
WriteData( (int) Player.Exp );
            
WriteData( (int) 0x00 );
            
WriteData( (shortPlayer.PhysicalDamage[0] );
            
WriteData( (shortPlayer.PhysicalDamage[1] );
            
WriteData( (shortPlayer.MagicalDamage[0] );
            
WriteData( (shortPlayer.MagicalDamage[1] );
            
WriteDataPlayer.StatPoints );
            
WriteDataPlayer.SkillPoints );
            
WriteDataPlayer.FireResist );
            
WriteDataPlayer.IceResist );
            
WriteDataPlayer.LightningResist );
            
WriteDataPlayer.CurseResist );
            
WriteDataPlayer.NonElementResist );
            
WriteDataPlayer.Rage );

        }
    }

    
sealed class SendSkillsPacket Packet
    
{
        public 
SendSkillsPacketSkills Skills )
            : 
base0x10)
        {
            
Reset);

            
WriteData( (byte); // Skill Count

            
WriteData( (byte); // Skill ID
            
WriteData( (byte); // Skill Level
        
}

    }

    
sealed class PlayerSpawnPacket Packet
    
{
        public 
PlayerSpawnPacketCharacter Charbool IsPlayerChar )
            : 
base(0x32)
        {
            
Reset((short) (59 Char.Name.Length));

            
WriteDataChar.ID );
            
WriteDataChar.Name.ToCharArray( ) );
            
WriteData( (byte0x00 );

            if ( 
IsPlayerChar )
                
WriteData( (byte0x80 | (byteChar.Class );
            else
                
WriteData( (byteChar.Class );

            
WriteDataChar.Position.PositionX );
            
WriteDataChar.Position.PositionY );
            
WriteDataChar.Position.PositionZ );
            
WriteData( (short0x02 );

            if ( 
Char.IsAlive )
                
WriteData( (byte0x00 );
            else
                
WriteData( (byte0x02 );

            
WriteData( (byte0x00 );
            
WriteData( (short0x00 );

            if ( 
Char.Inventory.Weapon != null )
                
WriteDataChar.Inventory.Weapon.Index );
            else
                
WriteData( (ushort);

            if ( 
Char.Inventory.Shield != null )
                
WriteDataChar.Inventory.Shield.Index );
            else
                
WriteData( (ushort);

            if ( 
Char.Inventory.Helmet != null )
                
WriteDataChar.Inventory.Helmet.Index );
            else
                
WriteData( (ushort);

            if ( 
Char.Inventory.Armor != null )
                
WriteDataChar.Inventory.Armor.Index );
            else
                
WriteData( (ushort);

            if ( 
Char.Inventory.Shorts != null )
                
WriteDataChar.Inventory.Shorts.Index );
            else
                
WriteData( (ushort);

            if ( 
Char.Inventory.Gloves != null )
                
WriteDataChar.Inventory.Gloves.Index );
            else
                
WriteData( (ushort);

            if ( 
Char.Inventory.Boots != null )
                
WriteDataChar.Inventory.Boots.Index );
            else
                
WriteData( (ushort);

            
WriteData( (byteChar.Face );
            
WriteData( (byteChar.Hair );

            for ( 
int i 019i++ )
                
WriteData( (byte0x00 );
        }
    }

    
sealed class DespawnObjectPacket Packet
    
{
        public 
DespawnObjectPacketint ID )
            : 
base0x38,  )
        {
            
WriteDataID );
        }

        
internal sealed class DespawnPlayerPacket Packet
        
{
            public 
DespawnPlayerPacketint ID )
                : 
base0x37,  )
            {
                
WriteDataID );
            }
        }

        
internal sealed class RemoveDropPacket Packet
        
{
            public 
RemoveDropPacketint ID )
                : 
base0x3b,  )
            {
                
WriteDataID );
            }
        }
        
    }

    
sealed class Camera Packet
    
{
        public 
CameraCharacter Playerushort ID )
            : 
base0x1b,  10 )
        {
            
WriteDataID );
            
WriteDataPlayer.Position.PositionX );
            
WriteDataPlayer.Position.PositionY );
        }
    }

    
sealed class SendInventoryPacket Packet
    
{
        public 
SendInventoryPacketInventory PlayerInventory )
            : 
base0x04)
        {
            List<
ItemInventory PlayerInventory.GetAllItems();
            
Reset( (short) ((Inventory.Count 26) + 1) );
            
WriteData((byte)Inventory.Count));

            foreach ( 
Item Slot in Inventory )
            {
                
WriteDataSlot.ID );
                
WriteDataSlot.Index );
                
WriteDataSlot.Prefix );
                
WriteDataSlot.Info );
                
WriteDataSlot.Count );
                
WriteDataSlot.MaxEndurance );
                
WriteDataSlot.CurrentEndurance );
                
WriteDataSlot.SetGem );
                
WriteDataSlot.AttackUP );
                
WriteDataSlot.MagicUP );
                
WriteDataSlot.DefenseUP );
                
WriteDataSlot.OTPUP );
                
WriteDataSlot.EvasionUP );
                
WriteDataSlot.Polished );
                
WriteDataSlot.EBLevel );
                
WriteDataSlot.EBRate );
            }
        }
    }

    abstract class 
EditValuePacket Packet
    
{
        private 
EditValuePacketshort Sizebyte ValueID )
            : 
base0x45)
        {
            
Reset((short)(Size 1));
            
WriteDataValueID );
        }

        
sealed internal class ChangeLevelPacket EditValuePacket
  &nb