⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grobal2.~pas

📁 在网上有很多传奇源程序DELPHI
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
  ET_DIGOUTZOMBI =0;
  ET_PILESTONES = 1;
  ET_HOLYCURTAIN = 2;
  ET_FIRE= 3;
  ET_SCULPEICE = 4;

  STATE_STONE_MODE =0;
  STATE_OPENHEATH = 1;

  MAXBAGITEM = 52;

  DR_UP=0;
  DR_UPRIGHT =1;
  DR_RIGHT =2;
  DR_DOWNRIGHT =3;
  DR_DOWN =4;
  DR_DOWNLEFT =5;
  DR_LEFT =6;
  DR_UPLEFT =7;

type

 {
  +0 Recog:  dword
  +4 Ident:  word
  +6 Param:  word;
  +8 Tag:    word;
  +A Series: word;
 }
{    //这是原来的定义:
  TDefaultMessage=packed record  //Size=12
    Ident :word;
    Recog :integer;  //识别码
    Param :smallint;
    Tag   :smallint;
    Series:smallint;
  end;
}
//这是新的定义
  TDefaultMessage=packed record  //Size=12
    Recog :integer;  //识别码
    Ident :word;
    Param :smallint;
    Tag   :smallint;
    Series:smallint;
  end;


  //Ident=SM_DAYCHANGING
  //   Param=DayBright
  //   Tag=雾的浓度:0,1,2,3

  TUserInfo = packed Record
     Name:String[32];
     Looks:integer;
     StdMode:Integer;
     Shape:Integer;
  end;

  {
  TStdItem=record
     Name:String[16];   //物品名称
     Looks:integer;     //外观,即Items.WIL中的图片索引
     StdMode:integer;   //0/1/2/3:药, 5/6:武器,10/11:盔甲,15:头盔,22/23:戒指,24/26:手镯,19/20/21:项链
     Shape:integer;
     AC:Integer;
     MAC:integer;
     Weight:integer;
     DuraMax:integer;
     NeedIdentify:byte;
     DC,MC,SC:Integer;
     Source:integer;
     Need:integer;
     NeedLevel:integer;
  end;
   }


 //应当有44字节
 TSTDITEM = packed record
//    Num:byte;     //名字的有效个数//源程序中这里应为name:array[0..14] of char;
//    Name: array[0..13] of char;
    Name: String[14];
    Shape: BYTE;//Word        //外形
    StdMode: Byte;      //物品种类(<=3时可以在快捷栏上显示)
    Weight: Word;       //重量
    Source: Word;//
    AniCount: Word;//BYTE;     //
    Looks: Word;//Integer;        //

//    SpecialPower: BYTE; //特殊用途
    NeedIdentify: BYTE; //需要鉴别

    DuraMax: Word;//Integer;      //最大持久
    AC: Word;           //防
    MAC: Word;          //魔防
    DC: Word;           //攻击
    MC: Word;           //魔
    SC: Word;           //道
    Need: BYTE;         //
    NeedLevel: BYTE;    //需要等级
    Price: Integer;     //价格

  end;



{
  TClientItem=Record
     s:TStdItem;
     MakeIndex:Integer;
     Dura:Integer;
     DuraMax:Integer;
  end;
 }
 PTClientItem=^TClientItem;
  TCLIENTITEM = packed record
    s: TSTDITEM;
    MakeIndex: Integer; //
    Dura: Word;         //持久
    DuraMax: Word;      //最大持久
  end;



  TAbility= packed record
     MP,MaxMP:Integer;
     HP,MaxHP:integer;
     Exp,MaxExp:Integer;
     Level:Integer;
     Weight,MaxWeight:Integer;
     WearWeight,MaxWearWeight:Integer;
     HandWeight,MaxHandWeight:Integer;
     AC:Integer;
     MAC:Integer;
     DC:Integer;
     MC,SC:Integer;
  end;

  PTChrMsg=^TChrMsg;

  TChrMsg= packed Record
     Ident:integer;
     Dir:Integer;
     X,Y:Integer;
     State:integer;
     feature:integer;
     saying:string;
     Sound:integer;
  end;

{
  TChrMsg=Record
     Ident:Word;
     Dir:Word;
     X,Y:Word;
     State:Word;
     feature:Word;
     saying:string;
     Sound:Word;
  end;
 }


  TUserStateInfo= packed Record
     UserName:String[32];
     GuildName:String[32];
     GuildRankName:String[32];
     NameColor:Integer;
     Feature:integer;
     UseItems:Array[0..127] of TClientItem;
  end;

  TUserCharacterInfo= packed Record
     Name:String;
     Job:byte;
     Hair:smallint;
     level:Integer;
     Sex:byte;
  end;

  TUserEntryInfo= packed Record
     LoginId:String[16];
     Password:String[16];
     UserName:String[32];
     SSNo:String[18];
     Quiz:String[32];
     Answer:String[32];
     Phone:String[15];
     EMail:String[64];
     
  end;

  TUserEntryAddInfo= packed Record
     Quiz2:String[32];
     Answer2:String[32];
     MobilePhone:String[15];
     BirthDay:String[16];
  end;

  PTDropItem=^TDropItem;
  TDropItem= packed record
     Id:Integer;
     X,Y:Integer;
     Looks:integer;
     FlashTime:LongInt;
     Name:String[16];
     BoFlash:Boolean;
     FlashStepTime:LongInt;
     FlashStep:Integer;
  end;
{
  TDef=Record
    Spell:integer;
    DefSpell:integer;
    EffectType:Integer;
    MagicId:Integer;
    Effect:Integer;
    DelayTime:Integer;
    MagicName:String[16];
    MaxTrain:Array [0..255] of integer;
  end;
 }
  PTClientMagic=^TClientMagic;
{
  TClientMagic=Record
     Key:Char;
     Def:TDef;
     Level:Integer;
     CurTrain:Integer;
  end;
 }
  TSTANDARDMAGIC = packed record   //魔法
    MagicID: Word;          //编号
    Num:byte;          //这里应为MagicName:Array[0..13] of char //num 是我自己加的,表示后面名字的有效字符数.
    MagicName: Array[0..12] of Char;   //名称 12
    EffectType: BYTE;
    Effect: BYTE;    //效果
    Spell: Word;     //魔法
    MinPower: Word;  //
    Need: Array[0..3] of BYTE;     //升级需要的等级
    MaxTrain: Array[0..3] of Integer; //锻炼
    MaxTrainLevel: BYTE;           //最大锻炼等级
    Job: BYTE;
    DelayTime: Integer;   //延迟时间
    DefSpell: BYTE;       //默认
    DefMinPower: BYTE;
    MaxPower: Word;
    DefMaxPower: BYTE;
    szDesc: Array[0..15] of Char;
  end;

  TCLIENTMAGIC = packed record    //魔法
    Key: Char;          //按键
    level:byte;            //等级
    CurTrain:integer;     //当前经验
    Def: TSTANDARDMAGIC;
  end;



  TNakedAbility=packed Record
     DC,MC,SC,AC,MAC:Integer;
     HP,MP:Integer;
     Hit:integer;
     Speed:integer;
  end;
{
  TShortMessage=Record
     Ident:Integer;
  end;
}
  TShortMessage=packed record
     Ident :WORD;
     Msg   :WORD;
  end;


  TCharDesc= packed Record
     Feature:Integer;
     Status:Integer;
  end;


{//lorran modi 2004-07-12
  TMessageBodyW=Record
     Param1:integer;
     Param2:integer;
     Tag1:integer;
     Tag2:integer;
  end;
}
  TMESSAGEBODYW = packed record
    Param1: Word;
    Param2: Word;
    Tag1: Word;
    Tag2: Word;
  end ;


  TMessageBodyWL=packed Record
     lParam1,lParam2:longint;
     lTag1,lTag2:longint;
  end;



  PTClientGoods=^TClientGoods;
  TClientGoods=packed record
     Name:string[16];
     SubMenu:Integer;
     Price:Integer;
     Stock:integer;
     Grade:integer;
  end;

type
  TFEATURE = packed record
    Gender: BYTE;
    Weapon: BYTE;
    Dress: BYTE;
    Hair: BYTE;
  end;


function  MakeDefaultMsg (msg:smallint; Recog:integer; param, tag, series:smallint):TDefaultMessage;
function  UpInt(i:double):integer;

Function  RACEfeature(Feature:Integer):byte;
Function  WEAPONfeature(Feature:Integer):byte;
Function  HAIRfeature(Feature:Integer):byte;
Function  DRESSfeature(Feature:Integer):byte;
Function  APPRfeature(Feature:Integer):Word;


//Function  RACEfeature(Feature:Word):smallint;
//Function  HAIRfeature(Feature:Word):byte;
//Function  DRESSfeature(Feature:Word):byte;
//Function  APPRfeature(Feature:Word):byte;
//Function  WEAPONfeature(Feature:Word):byte;

function  MakeFeature(Race:byte;Appr,Hair,Dress,Weapon:byte):Integer;
implementation

{
  TDefaultMessage=packed record  //Size=12
    Ident :word;
    Recog :integer;  //识别码
    Param :smallint;
    Tag   :smallint;
    Series:smallint;
  end;

  +0 Recog:  dword
  +4 Ident:  word
  +6 Param:  word;
  +8 Tag:    word;
  +A Series: word;
 }
function  MakeDefaultMsg (msg:smallint; Recog:integer; param, tag, series:smallint):TDefaultMessage;
begin
    result.Ident:=Msg;
    result.Param:=Param;
    result.Tag:=Tag;
    result.Series:=Series;
    result.Recog:=Recog;
end;

function  UpInt(i:double):integer;
begin
  result:=Ceil(i);
end;


//人物Feature属性的分解和合成,共32位,高16位为Race和Appr,
//   低16位中,最左四位表示Hair,接下来6位表示Dress,最右6位表示Weapon。
//   当Race=0时,Dress mod 2 表示性别
//   Race=0时武器也分男女,男的武器应该是偶数,女的是奇数
//*******对Feature的解释可以自己定义,但Race取值至少0..90,Appr:0..9
//*******Hair最多有6种发型(3600幅图片,每600幅图片一种发型),男女各3
//*******Dress的数量好象在Hum.WIL中表示,有多少种图片就有多少种服装,Hum.WIL可以扩展
//*******Weapon的数量见Weapon.WIL,有数万幅图片,同样的,每600幅对应一个Appr,分男女
//*********例如40800幅对应68种武器(男女合计)

{ //???????
  TFEATURE = record
    Race: BYTE;
    Weapon: BYTE;
    Hair: BYTE;
    Dress: BYTE;
  end;
}

//$0602 1600 =100800000
Function  RACEfeature(Feature:Integer):byte;
begin
  result:=(LoByte(Loword(Feature)) and $3F);
end;

Function  WEAPONfeature(Feature:Integer):byte;
begin
  result:=HiByte(LoWord(Feature));
end;



Function  HAIRfeature(Feature:Integer):byte;
begin
    result:=LoByte(HiWord(Feature));
end;


Function  DRESSfeature(Feature:Integer):byte;
begin
  result:=HiByte(HiWord(Feature));
end;


Function  APPRfeature(Feature:Integer):Word;
begin
  result:=hiword(Feature) ;
//  result:=Loword(Feature) ;
end;

function  MakeFeature(Race:byte;Appr,Hair,Dress,Weapon:byte):Integer;
begin
  result:=MakeLong( MakeWord(Race,weapon),MakeWord(Hair,Dress));
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -