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

📄 mshare.pas

📁 原版翎风(LF)引擎(M2)源码(Delphi)
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  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 + -