📄 mshare.pas
字号:
g_boNoDarkness :Boolean;
g_nRunReadyCount :Integer; //助跑就绪次数,在跑前必须走几步助跑
g_EatingItem :TClientItem;
g_dwEatTime :LongWord; //timeout...
g_dwDizzyDelayStart :LongWord;
g_dwDizzyDelayTime :LongWord;
g_boDoFadeOut :Boolean;
g_boDoFadeIn :Boolean;
g_nFadeIndex :Integer;
g_boDoFastFadeOut :Boolean;
g_boAutoDig :Boolean; //自动锄矿
g_boSelectMyself :Boolean; //鼠标是否指到自己
//游戏速度检测相关变量
g_dwFirstServerTime :LongWord;
g_dwFirstClientTime :LongWord;
//ServerTimeGap: int64;
g_nTimeFakeDetectCount :Integer;
g_dwSHGetTime :LongWord;
g_dwSHTimerTime :LongWord;
g_nSHFakeCount :Integer; //检查机器速度异常次数,如果超过4次则提示速度不稳定
g_dwLatestClientTime2 :LongWord;
g_dwFirstClientTimerTime :LongWord; //timer 矫埃
g_dwLatestClientTimerTime :LongWord;
g_dwFirstClientGetTime :LongWord; //gettickcount 矫埃
g_dwLatestClientGetTime :LongWord;
g_nTimeFakeDetectSum :Integer;
g_nTimeFakeDetectTimer :Integer;
g_dwLastestClientGetTime :LongWord;
//外挂功能变量开始
g_dwDropItemFlashTime :LongWord = 5 * 1000; //地面物品闪时间间隔
g_nHitTime :Integer = 1400; //攻击间隔时间间隔
g_nItemSpeed :Integer = 60;
g_dwSpellTime :LongWord = 500; //魔法攻间隔时间
g_DeathColorEffect :TColorEffect = ceGrayScale;
g_boClientCanSet :Boolean = True;
g_boCanRunHuman :Boolean = False;
g_boCanRunMon :Boolean = False;
g_boCanRunNpc :Boolean = False;
g_boCanRunAllInWarZone :Boolean = False;
g_boCanStartRun :Boolean = False; //是否允许免助跑
g_boParalyCanRun :Boolean = False;//麻痹是否可以跑
g_boParalyCanWalk :Boolean = False;//麻痹是否可以走
g_boParalyCanHit :Boolean = False;//麻痹是否可以攻击
g_boParalyCanSpell :Boolean = False;//麻痹是否可以魔法
g_boShowRedHPLable :Boolean = True; //显示血条 saharah
g_boShowHPNumber :Boolean = True; //显示血量数字
g_boShowJobLevel :Boolean = True; //显示职业等级
g_boDuraAlert :Boolean = True; //物品持久警告
g_boMagicLock :Boolean = False; //魔法锁定
g_boAutoPuckUpItem :Boolean = False;
g_boShowHumanInfo :Boolean = True;
g_boShowMonsterInfo :Boolean = False;
g_boShowNpcInfo :Boolean = False;
//外挂功能变量结束
g_dwAutoPickupTick :LongWord;
g_dwAutoPickupTime :LongWord = 50; //自动捡物品间隔
g_AutoPickupList :TList;
g_MagicLockActor :TActor;
g_boNextTimePowerHit :Boolean;
g_boCanLongHit :Boolean;
g_boCanWideHit :Boolean;
g_boCanCrsHit :Boolean;
g_boCanTwnHit :Boolean;
g_boCanStnHit :Boolean;
g_boNextTimeFireHit :Boolean;
g_ShowItemList :TGList;
g_boShowAllItem :Boolean = False;//显示地面所有物品名称
g_boDrawTileMap :Boolean = True;
g_boDrawDropItem :Boolean = True;
g_nTestX:Integer = 71;
g_nTestY:Integer = 212;
DlgConf :TConfig = (
DBottom :(Image:1;Left:0;Top:0;Width:0;Height:0);
DMyState :(Image:8;Left:643;Top:61;Width:0;Height:0);
DMyBag :(Image:9;Left:682;Top:41;Width:0;Height:0);
DMyMagic :(Image:10;Left:722;Top:21;Width:0;Height:0);
DOption :(Image:11;Left:764;Top:11;Width:0;Height:0);
DBotMiniMap :(Image:130;Left:219;Top:104;Width:0;Height:0);
DBotTrade :(Image:132;Left:219 + 30; Top:104;Width:0;Height:0);
DBotGuild :(Image:134;Left:219 + 30*2; Top:104;Width:0;Height:0);
DBotGroup :(Image:128;Left:219 + 30*3; Top:104;Width:0;Height:0);
DBotPlusAbil:(Image:140;Left:219 + 30*4; Top:104;Width:0;Height:0);
DBotFriend :(Image:530;Left:219 + 30*5; Top:104;Width:0;Height:0);
DBotMemo :(Image:532;
Left:SCREENWIDTH div 2 + (SCREENWIDTH div 2 - (400 - 353)){753};
Top:204;
Width:0;
Height:0);
DBotExit :(Image:138;
Left:SCREENWIDTH div 2 + (SCREENWIDTH div 2 - (400 - 160)){560};
Top:104;
Width:0;
Height:0);
DBotLogout :(Image:136;
Left:SCREENWIDTH div 2 + (SCREENWIDTH div 2 - (400 - 160)) - 30{560};//Left:560 - 30;
Top:104;
Width:0;
Height:0);
DBelt1 :(Image:0;Left:285;Top:59;Width:32;Height:29);
DBelt2 :(Image:0;Left:328;Top:59;Width:32;Height:29);
DBelt3 :(Image:0;Left:371;Top:59;Width:32;Height:29);
DBelt4 :(Image:0;Left:415;Top:59;Width:32;Height:29);
DBelt5 :(Image:0;Left:459;Top:59;Width:32;Height:29);
DBelt6 :(Image:0;Left:503;Top:59;Width:32;Height:29);
DGold :(Image:29;Left:10;Top:190;Width:0;Height:0);
DRepairItem :(Image:26;Left:254;Top:183;Width:48;Height:22);
DClosebag :(Image:371;Left:309;Top:203;Width:14;Height:20);
DMerchantDlg :(Image:384;Left:0;Top:0;Width:0;Height:0);
DMerchantDlgClose :(Image:64;Left:399;Top:1;Width:0;Height:0);
DConfigDlg :(Image:204;Left:0;Top:0;Width:0;Height:0);
DConfigDlgOk :(Image:361;Left:514;Top:287;Width:0;Height:0);
DConfigDlgClose :(Image:64;Left:584;Top:6;Width:0;Height:0);
DMenuDlg :(Image:385;Left:138;Top:163;Width:0;Height:0);
DMenuPrev :(Image:388;Left:43;Top:175;Width:0;Height:0);
DMenuNext :(Image:387;Left:90;Top:175;Width:0;Height:0);
DMenuBuy :(Image:386;Left:215;Top:171;Width:0;Height:0);
DMenuClose :(Image:64;Left:291;Top:0;Width:0;Height:0);
DSellDlg :(Image:392;Left:328;Top:163;Width:0;Height:0);
DSellDlgOk :(Image:393;Left:85;Top:150;Width:0;Height:0);
DSellDlgClose :(Image:64;Left:115;Top:0;Width:0;Height:0);
DSellDlgSpot :(Image:0;Left:27;Top:67;Width:0;Height:0);
DKeySelDlg :(Image:620;Left:0;Top:0;Width:0;Height:0);
DKsIcon :(Image:0;Left:51;Top:31;Width:0;Height:0);
DKsF1 :(Image:232;Left:25;Top:78;Width:0;Height:0);
DKsF2 :(Image:234;Left:57;Top:78;Width:0;Height:0);
DKsF3 :(Image:236;Left:89;Top:78;Width:0;Height:0);
DKsF4 :(Image:238;Left:121;Top:78;Width:0;Height:0);
DKsF5 :(Image:240;Left:160;Top:78;Width:0;Height:0);
DKsF6 :(Image:242;Left:192;Top:78;Width:0;Height:0);
DKsF7 :(Image:244;Left:224;Top:78;Width:0;Height:0);
DKsF8 :(Image:246;Left:256;Top:78;Width:0;Height:0);
DKsConF1 :(Image:626;Left:25;Top:120;Width:0;Height:0);
DKsConF2 :(Image:628;Left:57;Top:120;Width:0;Height:0);
DKsConF3 :(Image:630;Left:89;Top:120;Width:0;Height:0);
DKsConF4 :(Image:632;Left:121;Top:120;Width:0;Height:0);
DKsConF5 :(Image:633;Left:160;Top:120;Width:0;Height:0);
DKsConF6 :(Image:634;Left:192;Top:120;Width:0;Height:0);
DKsConF7 :(Image:638;Left:224;Top:120;Width:0;Height:0);
DKsConF8 :(Image:640;Left:256;Top:120;Width:0;Height:0);
DKsNone :(Image:623;Left:296;Top:78;Width:0;Height:0);
DKsOk :(Image:621;Left:296;Top:120;Width:0;Height:0);
DChgGamePwd :(Image:621;Left:296;Top:120;Width:0;Height:0);
DChgGamePwdClose :(Image:64;Left:312;Top:1;Width:0;Height:0);
DItemGrid :(Image:0;Left:29;Top:41;Width:286;Height:162);
);
procedure InitObj();
procedure LoadWMImagesLib(AOwner: TComponent);
procedure InitWMImagesLib(DDxDraw: TDxDraw);
procedure UnLoadWMImagesLib();
function GetObjs (nUnit,nIdx:Integer):TDirectDrawSurface;
function GetObjsEx (nUnit,nIdx:Integer; var px, py: integer): TDirectDrawSurface;
function GetMonImg (nAppr:Integer):TWMImages;
function GetMonAction (nAppr:Integer):pTMonsterAction;
function GetJobName (nJob:Integer):String;
procedure ClearShowItemList();
function GetItemType(ItemType:TItemType):String;
function GetShowItem(sItemName:String):pTShowItem;
procedure LoadUserConfig(sUserName:String);
procedure SaveUserConfig(sUserName:String);
implementation
uses FState, HUtil32;
procedure LoadWMImagesLib(AOwner: TComponent);
var
I:Integer;
begin
g_WMainImages := TWMImages.Create(AOwner);
g_WMain2Images := TWMImages.Create(AOwner);
g_WMain3Images := TWMImages.Create(AOwner);
g_WChrSelImages := TWMImages.Create(AOwner);
g_WMMapImages := TWMImages.Create(AOwner);
g_WTilesImages := TWMImages.Create(AOwner);
g_WSmTilesImages := TWMImages.Create(AOwner);
g_WHumWingImages := TWMImages.Create(AOwner);
g_WBagItemImages := TWMImages.Create(AOwner);
g_WStateItemImages := TWMImages.Create(AOwner);
g_WDnItemImages := TWMImages.Create(AOwner);
g_WHumImgImages := TWMImages.Create(AOwner);
g_WHairImgImages := TWMImages.Create(AOwner);
g_WWeaponImages := TWMImages.Create(AOwner);
g_WMagIconImages := TWMImages.Create(AOwner);
g_WNpcImgImages := TWMImages.Create(AOwner);
g_WMagicImages := TWMImages.Create(AOwner);
g_WMagic2Images := TWMImages.Create(AOwner);
{$IF CUSTOMLIBFILE = 1}
//效果
g_WEventEffectImages := TWMImages.Create(AOwner);
{$IFEND}
//用0填充缓冲区
FillChar(g_WObjectArr,SizeOf(g_WObjectArr),0);
FillChar(g_WMonImagesArr,SizeOf(g_WMonImagesArr),0);
end;
procedure InitWMImagesLib(DDxDraw: TDxDraw);
var
sFileName:String;
I:Integer;
begin
g_WMainImages.DxDraw := DDxDraw;
g_WMainImages.DDraw := DDxDraw.DDraw;
g_WMainImages.FileName := MAINIMAGEFILE;
g_WMainImages.LibType := ltUseCache;
g_WMainImages.Initialize;
g_WMain2Images.DxDraw := DDxDraw;
g_WMain2Images.DDraw := DDxDraw.DDraw;
g_WMain2Images.FileName := MAINIMAGEFILE2;
g_WMain2Images.LibType := ltUseCache;
g_WMain2Images.Initialize;
g_WMain3Images.DxDraw := DDxDraw;
g_WMain3Images.DDraw := DDxDraw.DDraw;
g_WMain3Images.FileName := MAINIMAGEFILE3;
g_WMain3Images.LibType := ltUseCache;
g_WMain3Images.Initialize;
g_WChrSelImages.DxDraw := DDxDraw;
g_WChrSelImages.DDraw := DDxDraw.DDraw;
g_WChrSelImages.FileName := CHRSELIMAGEFILE;
g_WChrSelImages.LibType := ltUseCache;
g_WChrSelImages.Initialize;
g_WMMapImages.DxDraw := DDxDraw;
g_WMMapImages.DDraw := DDxDraw.DDraw;
g_WMMapImages.FileName := MINMAPIMAGEFILE;
g_WMMapImages.LibType := ltUseCache;
g_WMMapImages.Initialize;
g_WTilesImages.DxDraw := DDxDraw;
g_WTilesImages.DDraw := DDxDraw.DDraw;
g_WTilesImages.FileName := TITLESIMAGEFILE;
g_WTilesImages.LibType := ltUseCache;
g_WTilesImages.Initialize;
g_WSmTilesImages.DxDraw := DDxDraw;
g_WSmTilesImages.DDraw := DDxDraw.DDraw;
g_WSmTilesImages.FileName := SMLTITLESIMAGEFILE;
g_WSmTilesImages.LibType := ltUseCache;
g_WSmTilesImages.Initialize;
g_WHumWingImages.DxDraw := DDxDraw;
g_WHumWingImages.DDraw := DDxDraw.DDraw;
g_WHumWingImages.FileName := HUMWINGIMAGESFILE;
g_WHumWingImages.LibType := ltUseCache;
g_WHumWingImages.Initialize;
g_WBagItemImages.DxDraw := DDxDraw;
g_WBagItemImages.DDraw := DDxDraw.DDraw;
g_WBagItemImages.FileName := BAGITEMIMAGESFILE;
g_WBagItemImages.LibType := ltUseCache;
g_WBagItemImages.Initialize;
g_WStateItemImages.DxDraw := DDxDraw;
g_WStateItemImages.DDraw := DDxDraw.DDraw;
g_WStateItemImages.FileName := STATEITEMIMAGESFILE;
g_WStateItemImages.LibType := ltUseCache;
g_WStateItemImages.Initialize;
g_WDnItemImages.DxDraw:=DDxDraw;
g_WDnItemImages.DDraw:=DDxDraw.DDraw;
g_WDnItemImages.FileName:=DNITEMIMAGESFILE;
g_WDnItemImages.LibType:=ltUseCache;
g_WDnItemImages.Initialize;
g_WHumImgImages.DxDraw:=DDxDraw;
g_WHumImgImages.DDraw:=DDxDraw.DDraw;
g_WHumImgImages.FileName:=HUMIMGIMAGESFILE;
g_WHumImgImages.LibType:=ltUseCache;
g_WHumImgImages.Initialize;
g_WHairImgImages.DxDraw:=DDxDraw;
g_WHairImgImages.DDraw:=DDxDraw.DDraw;
g_WHairImgImages.FileName:=HAIRIMGIMAGESFILE;
g_WHairImgImages.LibType:=ltUseCache;
g_WHairImgImages.Initialize;
g_WWeaponImages.DxDraw:=DDxDraw;
g_WWeaponImages.DDraw:=DDxDraw.DDraw;
g_WWeaponImages.FileName:=WEAPONIMAGESFILE;
g_WWeaponImages.LibType:=ltUseCache;
g_WWeaponImages.Initialize;
g_WMagIconImages.DxDraw:=DDxDraw;
g_WMagIconImages.DDraw:=DDxDraw.DDraw;
g_WMagIconImages.FileName:=MAGICONIMAGESFILE;
g_WMagIconImages.LibType:=ltUseCache;
g_WMagIconImages.Initialize;
g_WNpcImgImages.DxDraw:=DDxDraw;
g_WNpcImgImages.DDraw:=DDxDraw.DDraw;
g_WNpcImgImages.FileName:=NPCIMAGESFILE;
g_WNpcImgImages.LibType:=ltUseCache;
g_WNpcImgImages.Initialize;
g_WMagicImages.DxDraw:=DDxDraw;
g_WMagicImages.DDraw:=DDxDraw.DDraw;
g_WMagicImages.FileName:=MAGICIMAGESFILE;
g_WMagicImages.LibType:=ltUseCache;
g_WMagicImages.Initialize;
g_WMagic2Images.DxDraw:=DDxDraw;
g_WMagic2Images.DDraw:=DDxDraw.DDraw;
g_WMagic2Images.FileName:=MAGIC2IMAGESFILE;
g_WMagic2Images.LibType:=ltUseCache;
g_WMagic2Images.Initialize;
{$IF CUSTOMLIBFILE = 1}
g_WEventEffectImages.DxDraw:=DDxDraw;
g_WEventEffectImages.DDraw:=DDxDraw.DDraw;
g_WEventEffectImages.FileName:=EVENTEFFECTIMAGESFILE;
g_WEventEffectImages.LibType:=ltUseCache;
g_WEventEffectImages.Initialize;
{$IFEND}
end;
procedure UnLoadWMImagesLib();
var
I:Integer;
begin
for I := Low(g_WObjectArr) to High(g_WObjectArr) do begin
if g_WObjectArr[I] <> nil then begin
g_WObjectArr[I].Finalize;
g_WObjectArr[I].Free;
end;
end;
for I := Low(g_WMonImagesArr) to High(g_WMonImagesArr) do begin
if g_WMonImagesArr[I] <> nil then begin
g_WMonImagesArr[I].Finalize;
g_WMonImagesArr[I].Free;
end;
end;
g_WMainImages.Finalize;
g_WMainImages.Free;
g_WMain2Images.Finalize;
g_WMain2Images.Free;
g_WMain3Images.Finalize;
g_WMain3Images.Free;
g_WChrSelImages.Finalize;
g_WChrSelImages.Free;
g_WMMapImages.Finalize;
g_WMMapImages.Free;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -