📄 uusersub.pas
字号:
unit uUserSub;
interface
uses
Windows, SysUtils, Classes, Usersdb, Deftype, AnsUnit,
AnsImg2, AUtil32, uSendcls, uAnstick, uLevelexp, svClass, AnsStringCls,
uDBRecordDef, BasicObj;
const
DRUGARR_SIZE = 3;
type
TAttribClass = class
private
FBasicObject : TBasicObject;
boAddExp : Boolean;
boMan : Boolean;
boSendValues : Boolean;
boSendBase : Boolean;
boRevivalFlag : Boolean;
boEnergyFlag : Boolean;
boInPowerFlag : Boolean;
boOutPowerFlag : Boolean;
boMagicFlag : Boolean;
FFeatureState : TFeatureState;
StartTick : integer;
CheckIncreaseTick : integer; // 9 檬俊 茄锅
CheckDrugTick : integer; // 1 檬俊 茄锅
FSendClass : TSendClass;
function GetCurInPower: integer;
procedure SetCurInPower (value: integer);
function GetCurOutPower: integer;
procedure SetCurOutPower (value: integer);
function GetCurMagic: integer;
procedure SetCurMagic (value: integer);
function GetCurLife: integer;
procedure SetCurLife (value: integer);
function GetMaxLife: integer;
function GetCurHeadLife: integer;
procedure SetCurHeadLife (value: integer);
function GetCurArmLife: integer;
procedure SetCurArmLife (value: integer);
function GetCurLegLife: integer;
procedure SetCurLegLife (value: integer);
function CheckRevival: Boolean;
function CheckEnegy: Boolean;
function CheckInPower: Boolean;
function CheckOutPower: Boolean;
function CheckMagic: Boolean;
procedure SetLifeData;
public
ItemDrugArr : array [0..DRUGARR_SIZE-1] of TItemDrugData;
CurAttribData : TCurAttribData;
AttribData : TAttribData;
AttribLifeData : TLifeData;
ReQuestPlaySoundNumber : integer;
constructor Create (aBasicObject : TBasicObject; aSendClass: TSendClass);
destructor Destroy; override;
procedure Update (CurTick : integer);
function AddItemDrug (aDrugName: string): Boolean;
procedure LoadFromSdb (aCharData : PTDBRecord);
procedure SaveToSdb (aCharData : PTDBRecord);
procedure Calculate;
procedure AddAdaptive (aexp: integer);
property CurMagic : Integer read GetCurMagic write SetCurMagic;
property CurOutPower : Integer read GetCurOutPower write SetCurOutPower;
property CurInPower : Integer read GetCurInPower write SetCurInPower;
property CurLife : Integer read GetCurLife write SetCurLife;
property MaxLife : Integer read GetMaxLife;
property CurHeadLife : Integer read GetCurHeadLife write SetCurHeadLife;
property CurArmLife : Integer read GetCurArmLife write SetCurArmLife;
property CurLegLife : Integer read GetCurLegLife write SetCurLegLife;
property FeatureState : TFeatureState write FFeatureState;
property SetAddExpFlag : Boolean write boAddExp;
public
function GetAge : Integer;
end;
THaveMagicClass = class
private
FBasicObject : TBasicObject;
boAddExp : Boolean;
HaveItemType : integer;
HaveMagicArr : array [0..HAVEMAGICSIZE-1] of TMagicData;
WalkingCount : integer;
FpCurAttackMagic : PTMagicData;
FpCurBreathngMagic : PTMagicData;
FpCurRunningMagic : PTMagicData;
FpCurProtectingMagic : PTMagicData;
FpCurEctMagic : PTMagicData;
FSendClass : TSendClass;
FAttribClass : TAttribClass;
function boKeepingMagic (pMagicData: PTMagicData): Boolean;
procedure DecBreathngAttrib (pMagicData: PTMagicData);
procedure Dec5SecAttrib (pMagicData: PTMagicData);
procedure DecEventAttrib (pMagicData: PTMagicData);
procedure SetLifeData;
procedure FindAndSendMagic (pMagicData: PTMagicData);
public
DefaultMagic : array [0..10-1] of TMagicData;
HaveMagicLifeData : TLifeData;
ReQuestPlaySoundNumber : integer;
constructor Create (aBasicObject : TBasicObject; aSendClass: TSendClass; aAttribClass: TAttribClass);
destructor Destroy; override;
function Update (CurTick : integer): integer;
procedure LoadFromSdb (aCharData : PTDBRecord);
procedure SaveToSdb (aCharData : PTDBRecord);
function ViewMagic (akey: integer; aMagicData: PTMagicData): Boolean;
function ViewBasicMagic (akey: integer; aMagicData: PTMagicData): Boolean;
function AddMagic (aMagicData: PTMagicData): Boolean;
function DeleteMagic (akey: integer): Boolean;
function AddAttackExp ( atype, aexp: integer): integer;
function AddProtectExp ( atype, aexp: integer): integer;
function AddEctExp ( atype, aexp: integer): integer;
procedure SetBreathngMagic (aMagic: PTMagicData);
procedure SetRunningMagic (aMagic: PTMagicData);
procedure SetProtectingMagic (aMagic: PTMagicData);
procedure SetEctMagic (aMagic: PTMagicData);
function AddWalking: Boolean;
// function SetHaveMagicPercent (akey: integer; aper: integer): Boolean;
// function SetDefaultMagicPercent (akey: integer; aper: integer): Boolean;
function PreSelectBasicMagic (akey, aper: integer; var RetStr: string): Boolean;
function SelectBasicMagic (akey, aper: integer; var RetStr: string): integer;
// function FindBasicMagic (akey : Integer) : Integer;
function SetHaveItemMagicType (atype: integer): integer;
function PreSelectHaveMagic (akey, aper: integer; var RetStr: string): Boolean;
function SelectHaveMagic (akey, aper: integer; var RetStr: string): integer;
function ChangeMagic (asour, adest: integer): Boolean;
function ChangeBasicMagic (asour, adest: integer): Boolean;
function DecEventMagic (apmagic: PTMagicData): Boolean;
function GetUsedMagicList: string;
function GetMagicIndex(aMagicName: string): integer;
function FindHaveMagicByName (aMagicName : String) : Integer;
property pCurAttackMagic: PTMagicData read FpCurAttackMagic;
property pCurBreathngMagic: PTMagicData read FpCurBreathngMagic;
property pCurRunningMagic: PTMagicData read FpCurRunningMagic;
property pCurProtectingMagic: PTMagicData read FpCurProtectingMagic;
property pCurEctMagic: PTMagicData read FpCurEctMagic;
property SetAddExpFlag : Boolean write boAddExp;
end;
TWearItemClass = class
private
boLocked : Boolean;
FBasicObject : TBasicObject;
WearFeature : TFeature;
WearItemArr : array [ARR_BODY..ARR_WEAPON] of TItemData;
FSendClass : TSendClass;
FAttribClass : TAttribClass;
procedure SetLifeData;
public
WearItemLifeData : TLifeData;
ReQuestPlaySoundNumber : integer;
constructor Create (aBasicObject : TBasicObject; aSendClass: TSendClass; aAttribClass: TAttribClass);
destructor Destroy; override;
procedure Update (CurTick : integer);
function GetFeature : TFeature;
procedure LoadFromSdb (aCharData : PTDBRecord);
procedure SaveToSdb (aCharData : PTDBRecord);
function ViewItem (akey: integer; aItemData: PTItemData): Boolean;
function AddItem (aItemData: PTItemData): Boolean;
procedure DeleteKeyItem (akey: integer);
function ChangeItem (var aItemData: TItemData; var aOldItemData : TItemData): Boolean;
function GetWeaponType : Integer;
procedure SetFeatureState (aFeatureState : TFeatureState);
procedure SetHiddenState (aHiddenState : THiddenState);
procedure SetActionState (aActionState : TActionState);
function GetHiddenState : THiddenState;
function GetActionState : TActionState;
property Locked : Boolean read boLocked write boLocked;
end;
THaveItemClass = class
private
boLocked : Boolean;
FUserName : string;
FSendClass : TSendClass;
FAttribClass : TAttribClass;
public
HaveItemArr : array [0..HAVEITEMSIZE-1] of TItemData;
ReQuestPlaySoundNumber : integer;
constructor Create (aSendClass: TSendClass; aAttribClass: TAttribClass);
destructor Destroy; override;
procedure Update (CurTick : integer);
procedure LoadFromSdb (aCharData : PTDBRecord);
procedure SaveToSdb (aCharData : PTDBRecord);
procedure CopyFromHaveItemClass (aHaveItemClass : THaveItemClass);
procedure CopyFromHaveItem (aItemArr : PTItemData);
function FreeSpace: integer;
function ViewItem (akey: integer; aItemData: PTItemData): Boolean;
function FindItem (aItemData : PTItemData): Boolean;
function AddItem (aItemData: PTItemData): Boolean;
function AddKeyItem (akey, aCount : Integer; var aItemData: TItemData): Boolean;
function FindKindItem (akind: integer): integer;
function FindItemByMagicKind (aKind: integer): integer;
function DeletekeyItem (akey, aCount: integer; aItemData : PTItemData): Boolean;
function DeleteItem (aItemData: PTItemData): Boolean;
function ChangeItem (asour, adest: integer): Boolean;
procedure DeleteAllItem;
procedure Refresh;
property Locked : Boolean read boLocked write boLocked;
end;
implementation
uses
FSockets, svMain, uUser;
function GetPermitExp (aLevel, addvalue: integer): integer;
var n : integer;
begin
n := GetLevelMaxExp (aLevel);
if n > addvalue then n := addvalue;
Result := n;
end;
function AddPermitExp (var aLevel, aExp: integer; addvalue: integer): integer;
var n : integer;
begin
n := GetLevelMaxExp (aLevel) * 3;
if n > addvalue then n := addvalue;
inc (aExp, n);
aLevel := GetLevel (aExp);
Result := n;
{ // 沥惑
n := GetLevelMaxExp (aLevel);
if n > addvalue then n := addvalue;
inc (aExp, n);
aLevel := GetLevel (aExp);
Result := n;
}
{ // 傈何倾侩
n := GetLevelMaxExp (aLevel);
if n <> 0 then n := addvalue;
inc (aExp, n);
aLevel := GetLevel (aExp);
Result := n;
}
end;
function Get10000To100 (avalue: integer): string;
var
n : integer;
str : string;
begin
str := InttoStr (avalue div 100) + '.';
n := avalue mod 100;
if n >= 10 then str := str + IntToStr (n)
else str := str + '0'+InttoStr(n);
Result := str;
end;
function Get10000To120 (avalue: integer): string;
var
n : integer;
str : string;
begin
avalue := avalue * 12 div 10;
str := InttoStr (avalue div 100) + '.';
n := avalue mod 100;
if n >= 10 then str := str + IntToStr (n)
else str := str + '0'+InttoStr(n);
Result := str;
end;
///////////////////////////////////
// TAttribClass
///////////////////////////////////
constructor TAttribClass.Create (aBasicObject : TBasicObject; aSendClass: TSendClass);
begin
FBasicObject := aBasicObject;
boAddExp := true;
ReQuestPlaySoundNumber := 0;
FSendClass := aSendClass;
end;
destructor TAttribClass.Destroy;
begin
inherited Destroy;
end;
procedure TAttribClass.SetLifeData;
begin
FillChar (AttribLifeData, sizeof(TLifeData), 0);
AttribLifeData.damageBody := 41;
AttribLifeData.damageHead := 41;
AttribLifeData.damageArm := 41;
AttribLifeData.damageLeg := 41;
AttribLifeData.AttackSpeed := 70;
AttribLifeData.avoid := 25;
AttribLifeData.recovery := 50;
AttribLifeData.armorBody := 0;
AttribLifeData.armorHead := 0;
AttribLifeData.armorArm := 0;
AttribLifeData.armorLeg := 0;
TUserObject (FBasicObject).SetLifeData;
end;
function TAttribClass.GetAge : Integer;
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -