📄 grobal2.~pas
字号:
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 + -