📄 mshare.pas
字号:
g_WTilesImages.Finalize;
g_WTilesImages.Free;
g_WSmTilesImages.Finalize;
g_WSmTilesImages.Free;
g_WHumWingImages.Finalize;
g_WHumWingImages.Free;
g_WBagItemImages.Finalize;
g_WBagItemImages.Free;
g_WStateItemImages.Finalize;
g_WStateItemImages.Free;
g_WDnItemImages.Finalize;
g_WDnItemImages.Free;
g_WHumImgImages.Finalize;
g_WHumImgImages.Free;
g_WHairImgImages.Finalize;
g_WHairImgImages.Free;
g_WWeaponImages.Finalize;
g_WWeaponImages.Free;
g_WMagIconImages.Finalize;
g_WMagIconImages.Free;
g_WNpcImgImages.Finalize;
g_WNpcImgImages.Free;
g_WMagicImages.Finalize;
g_WMagicImages.Free;
g_WMagic2Images.Finalize;;
g_WMagic2Images.Free;
{$IF CUSTOMLIBFILE = 1}
g_WEventEffectImages.Finalize;
g_WEventEffectImages.Free;
{$IFEND}
end;
//取地图图库
function GetObjs (nUnit,nIdx:Integer):TDirectDrawSurface;
var
sFileName:String;
begin
Result:=nil;
if not (nUnit in [Low(g_WObjectArr) .. High(g_WObjectArr)]) then nUnit:=0;
if g_WObjectArr[nUnit] = nil then begin
if nUnit = 0 then sFileName:=OBJECTIMAGEFILE
else sFileName:=format(OBJECTIMAGEFILE1,[nUnit+1]);
if not FileExists(sFileName) then exit;
g_WObjectArr[nUnit]:=TWMImages.Create(nil);
g_WObjectArr[nUnit].DxDraw:=g_DxDraw;
g_WObjectArr[nUnit].DDraw:=g_DxDraw.DDraw;
g_WObjectArr[nUnit].FileName:=sFileName;
g_WObjectArr[nUnit].LibType:=ltUseCache;
g_WObjectArr[nUnit].Initialize;
end;
Result:=g_WObjectArr[nUnit].Images[nIdx];
end;
//取地图图库
function GetObjsEx (nUnit,nIdx:Integer; var px, py: integer): TDirectDrawSurface;
var
sFileName:String;
begin
Result:=nil;
if not (nUnit in [Low(g_WObjectArr) .. High(g_WObjectArr)]) then nUnit:=0;
if g_WObjectArr[nUnit] = nil then begin
if nUnit = 0 then sFileName:=OBJECTIMAGEFILE
else sFileName:=format(OBJECTIMAGEFILE1,[nUnit+1]);
if not FileExists(sFileName) then exit;
g_WObjectArr[nUnit]:=TWMImages.Create(nil);
g_WObjectArr[nUnit].DxDraw:=g_DxDraw;
g_WObjectArr[nUnit].DDraw:=g_DxDraw.DDraw;
g_WObjectArr[nUnit].FileName:=sFileName;
g_WObjectArr[nUnit].LibType:=ltUseCache;
g_WObjectArr[nUnit].Initialize;
end;
Result:=g_WObjectArr[nUnit].GetCachedImage(nIdx,px,py);
end;
function GetMonImg (nAppr:Integer):TWMImages;
var
sFileName:String;
nUnit:Integer;
begin
Result:=nil;
if nAppr < 1000 then nUnit:=nAppr div 10
else nUnit:=nAppr;
if (nUnit < Low(g_WMonImagesArr)) or (nUnit > High(g_WMonImagesArr)) then nUnit:=0;
if g_WMonImagesArr[nUnit] = nil then begin
sFileName:=format(MONIMAGEFILE,[nUnit+1]);
if nUnit = 80 then sFileName:=DRAGONIMAGEFILE;
if nUnit = 90 then sFileName:=EFFECTIMAGEFILE;
if nUnit >= 1000 then sFileName:=format(MONIMAGEFILEEX,[nUnit]); //超过1000序号的怪物取新的怪物文件
g_WMonImagesArr[nUnit]:=TWMImages.Create(nil);
g_WMonImagesArr[nUnit].DxDraw:=g_DxDraw;
g_WMonImagesArr[nUnit].DDraw:=g_DxDraw.DDraw;
g_WMonImagesArr[nUnit].FileName:=sFileName;
g_WMonImagesArr[nUnit].LibType:=ltUseCache;
g_WMonImagesArr[nUnit].Initialize;
end;
Result:=g_WMonImagesArr[nUnit];
end;
function GetMonAction (nAppr:Integer):pTMonsterAction;
var
FileStream:TFileStream;
sFileName:String;
MonsterAction:TMonsterAction;
begin
Result:=nil;
sFileName:=format(MONPMFILE,[nAppr]);
if FileExists (sFileName) then begin
FileStream:=TFileStream.Create(sFileName,fmOpenRead or fmShareDenyNone);
FileStream.Read (MonsterAction, SizeOf(MonsterAction));
New(Result);
Result^:=MonsterAction;
FileStream.Free;
end;
end;
//取得职业名称
//0 武士
//1 魔法师
//2 道士
function GetJobName (nJob:Integer):String;
begin
Result:= '';
case nJob of
0:Result:=g_sWarriorName;
1:Result:=g_sWizardName;
2:Result:=g_sTaoistName;
else begin
Result:=g_sUnKnowName;
end;
end;
end;
function GetItemType(ItemType:TItemType):String;
begin
case ItemType of //
i_HPDurg :Result:='金创药';
i_MPDurg :Result:='魔法药';
i_HPMPDurg :Result:='高级药';
i_OtherDurg :Result:='其它药品';
i_Weapon :Result:='武器';
i_Dress :Result:='衣服';
i_Helmet :Result:='头盔';
i_Necklace:Result:='项链';
i_Armring :Result:='手镯';
i_Ring :Result:='戒指';
i_Belt :Result:='腰带';
i_Boots :Result:='鞋子';
i_Charm :Result:='宝石';
i_Book :Result:='技能书';
i_PosionDurg :Result:='毒药';
i_UseItem :Result:='消耗品';
i_Scroll :Result:='卷类';
i_Stone :Result:='矿石';
i_Gold :Result:='金币';
i_Other :Result:='其它';
end; // case [药品] [武器][衣服][头盔][项链][手镯][戒指][消耗品][其它]
// [药品] [武器][衣服][头盔][项链][手镯][戒指][腰带][鞋子][宝石][毒药][消耗品][其它]
end;
function GetShowItem(sItemName:String):pTShowItem;
var
I:Integer;
begin
Result:=nil;
g_ShowItemList.Lock;
try
for I := 0 to g_ShowItemList.Count - 1 do begin
if CompareText(pTShowItem(g_ShowItemList.Items[I]).sItemName,sItemName) = 0 then begin
Result:=g_ShowItemList.Items[I];
break;
end;
end;
finally
g_ShowItemList.UnLock;
end;
end;
procedure ClearShowItemList();
var
ShowItem:pTShowItem;
I:Integer;
begin
g_ShowItemList.Lock;
try
for I := 0 to g_ShowItemList.Count - 1 do begin
ShowItem:=g_ShowItemList.Items[I];
Dispose(ShowItem);
end;
g_ShowItemList.Clear;
finally
g_ShowItemList.UnLock;
end;
end;
procedure SaveUserConfig(sUserName:String);
var
ShowItem:pTShowItem;
Ini:TIniFile;
sFileName:String;
I:Integer;
sItemName,sLineText:String;
sType,sPickup,sShow,sFColor,sBColor:String;
begin
if sUserName <> '' then sFileName := format(CONFIGFILE,[sUserName])
else sFileName:=format(CONFIGFILE,['Config']);
Ini:=TIniFile.Create(sFileName);
g_ShowItemList.Lock;
try
for I := 0 to g_ShowItemList.Count - 1 do begin
ShowItem:=g_ShowItemList.Items[I];
sType:=IntToStr(Integer(ShowItem.ItemType));
if ShowItem.boAutoPickup then sPickup:='1'
else sPickup:='0';
if ShowItem.boShowName then sShow:='1'
else sShow:='0';
Ini.WriteString('Items',ShowItem.sItemName,format('%s,%s,%s,%d,%d',[sType,sPickup,sShow,ShowItem.nFColor,ShowItem.nBColor]));
end;
finally
g_ShowItemList.UnLock;
end;
Ini.Free;
end;
procedure LoadUserConfig(sUserName:String);
var
ShowItem:pTShowItem;
Ini:TIniFile;
sFileName:String;
Strings: TStringList;
I:Integer;
sItemName,sLineText:String;
sType,sPickup,sShow,sFColor,sBColor:String;
begin
sFileName:=format(CONFIGFILE,[sUserName]);
if not FileExists(sFileName) then begin
sFileName:=format(CONFIGFILE,['Config']);
end;
if FileExists(sFileName) then begin
Ini:=TIniFile.Create(sFileName);
Strings:=TStringList.Create;
g_ShowItemList.Lock;
try
Ini.ReadSection('Items',Strings);
for I := 0 to Strings.Count - 1 do begin
sItemName:=Strings.Strings[I];
if sItemName = '' then Continue;
sLineText:=Ini.ReadString('Items',sItemName,'');
sLineText:=GetValidStr3(sLineText,sType,[',']);
sLineText:=GetValidStr3(sLineText,sPickup,[',']);
sLineText:=GetValidStr3(sLineText,sShow,[',']);
sLineText:=GetValidStr3(sLineText,sFColor,[',']);
sLineText:=GetValidStr3(sLineText,sBColor,[',']);
if (sType <> '') and (sPickup <> '') and (sShow <> '') and (sFColor <> '') and (sBColor <> '') then begin
New(ShowItem);
ShowItem.sItemName:=sItemName;
ShowItem.ItemType:=TItemType(Str_ToInt(sType,0));
ShowItem.boAutoPickup:= sPickup = '1';
ShowItem.boShowName:= sShow = '1';
ShowItem.nFColor:=Str_ToInt(sFColor,0);
ShowItem.nBColor:=Str_ToInt(sBColor,0);
g_ShowItemList.Add(ShowItem);
end;
end;
finally
g_ShowItemList.UnLock;
end;
Strings.Free;
Ini.Free;
exit;
end;
end;
procedure InitObj();
begin
DlgConf.DMsgDlg.Obj :=FrmDlg.DMsgDlg;
DlgConf.DMsgDlgOk.Obj :=FrmDlg.DMsgDlgOk;
DlgConf.DMsgDlgYes.Obj :=FrmDlg.DMsgDlgYes;
DlgConf.DMsgDlgCancel.Obj :=FrmDlg.DMsgDlgCancel;
DlgConf.DMsgDlgNo.Obj :=FrmDlg.DMsgDlgNo;
DlgConf.DLogIn.Obj :=FrmDlg.DLogIn;
DlgConf.DLoginNew.Obj :=FrmDlg.DLoginNew;
DlgConf.DLoginOk.Obj :=FrmDlg.DLoginOk;
DlgConf.DLoginChgPw.Obj :=FrmDlg.DLoginChgPw;
DlgConf.DLoginClose.Obj :=FrmDlg.DLoginClose;
DlgConf.DSelServerDlg.Obj :=FrmDlg.DSelServerDlg;
DlgConf.DSSrvClose.Obj :=FrmDlg.DSSrvClose;
DlgConf.DSServer1.Obj :=FrmDlg.DSServer1;
DlgConf.DSServer2.Obj :=FrmDlg.DSServer2;
DlgConf.DSServer3.Obj :=FrmDlg.DSServer3;
DlgConf.DSServer4.Obj :=FrmDlg.DSServer4;
DlgConf.DSServer5.Obj :=FrmDlg.DSServer5;
DlgConf.DSServer6.Obj :=FrmDlg.DSServer6;
DlgConf.DNewAccount.Obj :=FrmDlg.DNewAccount;
DlgConf.DNewAccountOk.Obj :=FrmDlg.DNewAccountOk;
DlgConf.DNewAccountCancel.Obj :=FrmDlg.DNewAccountCancel;
DlgConf.DNewAccountClose.Obj :=FrmDlg.DNewAccountClose;
DlgConf.DChgPw.Obj :=FrmDlg.DChgPw;
DlgConf.DChgpwOk.Obj :=FrmDlg.DChgpwOk;
DlgConf.DChgpwCancel.Obj :=FrmDlg.DChgpwCancel;
DlgConf.DSelectChr.Obj :=FrmDlg.DSelectChr;
DlgConf.DBottom.Obj :=FrmDlg.DBottom;
DlgConf.DMyState.Obj :=FrmDlg.DMyState;
DlgConf.DMyBag.Obj :=FrmDlg.DMyBag;
DlgConf.DMyMagic.Obj :=FrmDlg.DMyMagic;
DlgConf.DOption.Obj :=FrmDlg.DOption;
DlgConf.DBotMiniMap.Obj :=FrmDlg.DBotMiniMap;
DlgConf.DBotTrade.Obj :=FrmDlg.DBotTrade;
DlgConf.DBotGuild.Obj :=FrmDlg.DBotGuild;
DlgConf.DBotGroup.Obj :=FrmDlg.DBotGroup;
DlgConf.DBotPlusAbil.Obj :=FrmDlg.DBotPlusAbil;
DlgConf.DBotFriend.Obj :=FrmDlg.DBotFriend;
DlgConf.DBotMemo.Obj :=FrmDlg.DBotMemo;
DlgConf.DBotExit.Obj :=FrmDlg.DBotExit;
DlgConf.DBotLogout.Obj :=FrmDlg.DBotLogout;
DlgConf.DBelt1.Obj :=FrmDlg.DBelt1;
DlgConf.DBelt2.Obj :=FrmDlg.DBelt2;
DlgConf.DBelt3.Obj :=FrmDlg.DBelt3;
DlgConf.DBelt4.Obj :=FrmDlg.DBelt4;
DlgConf.DBelt5.Obj :=FrmDlg.DBelt5;
DlgConf.DBelt6.Obj :=FrmDlg.DBelt6;
DlgConf.DGold.Obj :=FrmDlg.DGold;
DlgConf.DRepairItem.Obj :=FrmDlg.DRepairItem;
DlgConf.DClosebag.Obj :=FrmDlg.DClosebag;
DlgConf.DMerchantDlg.Obj :=FrmDlg.DMerchantDlg;
DlgConf.DMerchantDlgClose.Obj :=FrmDlg.DMerchantDlgClose;
DlgConf.DConfigDlg.Obj :=FrmDlg.DConfigDlg;
DlgConf.DConfigDlgOk.Obj :=FrmDlg.DConfigDlgOk;
DlgConf.DConfigDlgClose.Obj :=FrmDlg.DConfigDlgClose;
DlgConf.DMenuDlg.Obj :=FrmDlg.DMenuDlg;
DlgConf.DMenuPrev.Obj :=FrmDlg.DMenuPrev;
DlgConf.DMenuNext.Obj :=FrmDlg.DMenuNext;
DlgConf.DMenuBuy.Obj :=FrmDlg.DMenuBuy;
DlgConf.DMenuClose.Obj :=FrmDlg.DMenuClose;
DlgConf.DSellDlg.Obj :=FrmDlg.DSellDlg;
DlgConf.DSellDlgOk.Obj :=FrmDlg.DSellDlgOk;
DlgConf.DSellDlgClose.Obj :=FrmDlg.DSellDlgClose;
DlgConf.DSellDlgSpot.Obj :=FrmDlg.DSellDlgSpot;
DlgConf.DKeySelDlg.Obj :=FrmDlg.DKeySelDlg;
DlgConf.DKsIcon.Obj :=FrmDlg.DKsIcon;
DlgConf.DKsF1.Obj :=FrmDlg.DKsF1;
DlgConf.DKsF2.Obj :=FrmDlg.DKsF2;
DlgConf.DKsF3.Obj :=FrmDlg.DKsF3;
DlgConf.DKsF4.Obj :=FrmDlg.DKsF4;
DlgConf.DKsF5.Obj :=FrmDlg.DKsF5;
DlgConf.DKsF6.Obj :=FrmDlg.DKsF6;
DlgConf.DKsF7.Obj :=FrmDlg.DKsF7;
DlgConf.DKsF8.Obj :=FrmDlg.DKsF8;
DlgConf.DKsConF1.Obj :=FrmDlg.DKsConF1;
DlgConf.DKsConF2.Obj :=FrmDlg.DKsConF2;
DlgConf.DKsConF3.Obj :=FrmDlg.DKsConF3;
DlgConf.DKsConF4.Obj :=FrmDlg.DKsConF4;
DlgConf.DKsConF5.Obj :=FrmDlg.DKsConF5;
DlgConf.DKsConF6.Obj :=FrmDlg.DKsConF6;
DlgConf.DKsConF7.Obj :=FrmDlg.DKsConF7;
DlgConf.DKsConF8.Obj :=FrmDlg.DKsConF8;
DlgConf.DKsNone.Obj :=FrmDlg.DKsNone;
DlgConf.DKsOk.Obj :=FrmDlg.DKsOk;
DlgConf.DItemGrid.Obj :=FrmDlg.DItemGrid;
end;
initialization
begin
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -