亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? clfunc.pas

?? 解元 傳奇2客戶端delphi源程序
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit ClFunc;
//輔助函數(shù)庫
interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DXDraws, DirectX, DXClass, Grobal2, ScktComp, ExtCtrls, HUtil32, EdCode;


const
   DR_0      = 0;
   DR_1      = 1;
   DR_2      = 2;
   DR_3      = 3;
   DR_4      = 4;
   DR_5      = 5;
   DR_6      = 6;
   DR_7      = 7;
   DR_8      = 8;
   DR_9      = 9;
   DR_10      = 10;
   DR_11      = 11;
   DR_12      = 12;
   DR_13      = 13;
   DR_14      = 14;
   DR_15      = 15;

type
   TDynamicObject = record
      X: integer;           //位置
      Y: integer;
      px: integer;          //shift x ,y
      py: integer;
      DSurface: TDirectDrawSurface;
   end;
   PTDynamicObject = ^TDynamicObject;
var
   DropItems: TList;  //lsit of TClientItem

function  fmStr (str: string; len: integer): string;
function  GetGoldStr (gold: integer): string;
procedure SaveBags (flname: string; pbuf: Pbyte);
procedure Loadbags (flname: string; pbuf: Pbyte);
procedure ClearBag;
function  AddItemBag (cu: TClientItem): Boolean;
function  UpdateItemBag (cu: TClientItem): Boolean;
function  DelItemBag (iname: string; iindex: integer): Boolean;
procedure ArrangeItemBag;
procedure AddDropItem (ci: TClientItem);
function  GetDropItem (iname: string; MakeIndex: integer): PTClientItem;
procedure DelDropItem (iname: string; MakeIndex: integer);
procedure AddDealItem (ci: TClientItem);
procedure DelDealItem (ci: TClientItem);
procedure MoveDealItemToBag;
procedure AddDealRemoteItem (ci: TClientItem);
procedure DelDealRemoteItem (ci: TClientItem);
function  GetDistance (sx, sy, dx, dy: integer): integer;
procedure GetNextPosXY (dir: byte; var x, y:Integer);
procedure GetNextRunXY (dir: byte; var x, y:Integer);
function  GetNextDirection (sx, sy, dx, dy: Integer): byte;
function  GetBack (dir: integer): integer;
procedure GetBackPosition (sx, sy, dir: integer; var newx, newy: integer);
procedure GetFrontPosition (sx, sy, dir: integer; var newx, newy: integer);
function  GetFlyDirection (sx, sy, ttx, tty: integer): Integer;
function  GetFlyDirection16 (sx, sy, ttx, tty: integer): Integer;
function  PrivDir (ndir: integer): integer;
function  NextDir (ndir: integer): integer;
procedure BoldTextOut (surface: TDirectDrawSurface; x, y, fcolor, bcolor: integer; str: string);
function  GetTakeOnPosition (smode: integer): integer;
function  IsKeyPressed (key: byte): Boolean;

procedure AddChangeFace (recogid: integer);
procedure DelChangeFace (recogid: integer);
function  IsChangingFace (recogid: integer): Boolean;

implementation

uses
   clMain;

//格式化字符串為指定長度(后面添空格)
function fmStr (str: string; len: integer): string;
var i: integer;
begin
try
   Result := str + ' ';
   for i:=1 to len - Length(str)-1 do
      Result := Result + ' ';
except
   Result := str + ' ';
end;
end;

//整數(shù)轉(zhuǎn)換為千位帶逗號的字符串,例如1234567轉(zhuǎn)換為“1,234,567”
//這里用于顯示金錢數(shù)量
function  GetGoldStr (gold: integer): string;
var
   i, n: integer;
   str: string;
begin
   str := IntToStr (gold);
   n := 0;
   Result := '';
   for i:=Length(str) downto 1 do begin
      if n = 3 then begin
         Result := str[i] + ',' + Result;
         n := 1;
      end else begin
         Result := str[i] + Result;
         Inc(n);
      end;
   end;
end;

//保存裝備物品到文件
procedure SaveBags (flname: string; pbuf: Pbyte);
var
   fhandle: integer;
begin
   if FileExists (flname) then
      fhandle := FileOpen (flname, fmOpenWrite or fmShareDenyNone)
   else fhandle := FileCreate (flname);
   if fhandle > 0 then begin
      FileWrite (fhandle, pbuf^, sizeof(TClientItem) * MAXBAGITEMCL);
      FileClose (fhandle);
   end;
end;

//裝載裝備物品
procedure Loadbags (flname: string; pbuf: Pbyte);
var
   fhandle: integer;
begin
   if FileExists (flname) then begin
      fhandle := FileOpen (flname, fmOpenRead or fmShareDenyNone);
      if fhandle > 0 then begin
         FileRead (fhandle, pbuf^, sizeof(TClientItem) * MAXBAGITEMCL);
         FileClose (fhandle);
      end;
   end;
end;

//清除物品
procedure ClearBag;
var
   i: integer;
begin
   for i:=0 to MAXBAGITEMCL-1 do
      ItemArr[i].S.Name := '';
end;
//添加物品
function  AddItemBag (cu: TClientItem): Boolean;
var
   i: integer;
begin
   Result := FALSE;
   //檢查要添加的物品是否已經(jīng)存在
   for i:=0 to MAXBAGITEMCL-1 do begin
      if (ItemArr[i].MakeIndex = cu.MakeIndex) and (ItemArr[i].S.Name = cu.S.Name) then begin
         exit;
      end;
   end;

   if cu.S.Name = '' then exit;
   if cu.S.StdMode <= 3 then begin               //可以使用的物品,首先放在快捷物品欄
      for i:=0 to 5 do                           //前面6格顯示在快捷物品欄上
         if ItemArr[i].S.Name = '' then begin    //找一個空檔放下
            ItemArr[i] := cu;
            Result := TRUE;
            exit;
         end;
   end;
   for i:=6 to MAXBAGITEMCL-1 do begin
      if ItemArr[i].S.Name = '' then begin
         ItemArr[i] := cu;
         Result := TRUE;
         break;
      end;
   end;
   ArrangeItembag;
end;

//用當(dāng)前的物品屬性替代已經(jīng)存在的該物品屬性
function  UpdateItemBag (cu: TClientItem): Boolean;
var
   i: integer;
begin
   Result := FALSE;
   for i:=MAXBAGITEMCL-1 downto 0 do begin
      if (ItemArr[i].S.Name = cu.S.Name) and (ItemArr[i].MakeIndex = cu.MakeIndex) then begin
         ItemArr[i] := cu;
         Result := TRUE;
         break;
      end;
   end;
end;

//刪除指定的物品
function  DelItemBag (iname: string; iindex: integer): Boolean;
var
   i: integer;
begin
   Result := FALSE;
   for i:=MAXBAGITEMCL-1 downto 0 do begin
      if (ItemArr[i].S.Name = iname) and (ItemArr[i].MakeIndex = iindex) then begin
         FillChar (ItemArr[i], sizeof(TClientItem), #0);
         Result := TRUE;
         break;
      end;
   end;
   ArrangeItembag;
end;
//整理物品包
procedure ArrangeItemBag;
var
   i, k: integer;
begin
   //吝汗等 酒撈袍撈 樂欄擱 絕矩促.
   for i:=0 to MAXBAGITEMCL-1 do begin
      if ItemArr[i].S.Name <> '' then begin
         for k:=i+1 to MAXBAGITEMCL-1 do begin  //清除相同的物品
            if (ItemArr[i].S.Name = ItemArr[k].S.Name) and (ItemArr[i].MakeIndex = ItemArr[k].MakeIndex) then begin
               FillChar (ItemArr[k], sizeof(TClientItem), #0);
            end;
         end;
         //若有移動的物品
         if (ItemArr[i].S.Name = MovingItem.Item.S.Name) and (ItemArr[i].MakeIndex = MovingItem.Item.MakeIndex) then begin
            MovingItem.Index := 0;
            MovingItem.Item.S.Name := '';
         end;
      end;
   end;

   //6樣特殊物品欄
   //啊規(guī)狼 救焊撈綽 何盒俊 樂欄擱 纏絹 棵赴促.
   for i:=46 to MAXBAGITEMCL-1 do begin
      if ItemArr[i].S.Name <> '' then begin
         for k:=6 to 45 do begin
            if ItemArr[k].S.Name = '' then begin
               ItemArr[k] := ItemArr[i];
               ItemArr[i].S.Name := '';
               break;
            end;
         end;
      end;
   end;
end;

{----------------------------------------------------------}
//添加跌落物品
procedure AddDropItem (ci: TClientItem);
var
   pc: PTClientItem;
begin
   new (pc);
   pc^ := ci;
   DropItems.Add (pc);
end;
//獲取跌落物品
function  GetDropItem (iname: string; MakeIndex: integer): PTClientItem;
var
   i: integer;
begin
   Result := nil;
   for i:=0 to DropItems.Count-1 do begin
      if (PTClientItem(DropItems[i]).S.Name = iname) and (PTClientItem(DropItems[i]).MakeIndex = MakeIndex) then begin
         Result := PTClientItem(DropItems[i]);
         break;
      end;
   end;
end;
//刪除跌落物品
procedure DelDropItem (iname: string; MakeIndex: integer);
var
   i: integer;
begin
   for i:=0 to DropItems.Count-1 do begin
      if (PTClientItem(DropItems[i]).S.Name = iname) and (PTClientItem(DropItems[i]).MakeIndex = MakeIndex) then begin
         Dispose (PTClientItem(DropItems[i]));
         DropItems.Delete (i);
         break;
      end;
   end;
end;

{----------------------------------------------------------}

procedure AddDealItem (ci: TClientItem);
var
   i: integer;
begin
   for i:=0 to 10-1 do begin
      if DealItems[i].S.Name = '' then begin
         DealItems[i] := ci;
         break;
      end;
   end;
end;

procedure DelDealItem (ci: TClientItem);
var
   i: integer;
begin
   for i:=0 to 10-1 do begin
      if (DealItems[i].S.Name = ci.S.Name) and (DealItems[i].MakeIndex = ci.MakeIndex) then begin
         FillChar (DealItems[i], sizeof(TClientItem), #0);
         break;
      end;
   end;
end;

procedure MoveDealItemToBag;
var
   i: integer;
begin
   for i:=0 to 10-1 do begin
      if DealItems[i].S.Name <> '' then
         AddItemBag (DealItems[i]);
   end;
   FillChar (DealItems, sizeof(TClientItem)*10, #0);
end;

procedure AddDealRemoteItem (ci: TClientItem);
var
   i: integer;
begin
   for i:=0 to 20-1 do begin
      if DealRemoteItems[i].S.Name = '' then begin
         DealRemoteItems[i] := ci;
         break;
      end;
   end;
end;

procedure DelDealRemoteItem (ci: TClientItem);
var
   i: integer;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产原创一区二区三区| 国产一本一道久久香蕉| 日韩无一区二区| 4438成人网| 欧美成人性战久久| 久久久91精品国产一区二区精品| 欧美一区二区在线观看| 欧美哺乳videos| 久久天堂av综合合色蜜桃网| 国产日本欧美一区二区| 亚洲国产精品av| 亚洲精品视频免费观看| 亚洲一区二区三区四区的| 日韩毛片在线免费观看| 亚洲精品成a人| 五月天激情综合| 狠狠色丁香久久婷婷综合丁香| 六月丁香婷婷色狠狠久久| 国产在线视频一区二区| av一二三不卡影片| 欧美日韩久久久久久| www欧美成人18+| 亚洲免费高清视频在线| 免费人成黄页网站在线一区二区| 精品一区二区国语对白| 色婷婷一区二区| 欧美精品一区二区三区蜜桃视频 | 亚洲国产精品一区二区尤物区| 激情深爱一区二区| 国产东北露脸精品视频| 蜜臀av一区二区在线免费观看 | 99国产欧美久久久精品| 成人高清伦理免费影院在线观看| 日本aⅴ精品一区二区三区| 国产suv一区二区三区88区| 亚洲aaa精品| 亚洲精品欧美在线| 国产精品18久久久久久久久 | 成人小视频免费在线观看| 在线观看网站黄不卡| 国产亚洲精久久久久久| 一个色在线综合| 99久久国产综合精品麻豆| 91国内精品野花午夜精品| 欧美视频一二三区| 久久婷婷综合激情| 午夜精品久久久| 在线观看www91| 亚洲国产高清在线| 国产专区综合网| 欧美成人一区二区三区片免费| 亚洲一级二级在线| 在线中文字幕一区二区| 久久久久青草大香线综合精品| 日本成人在线一区| 日韩一区二区在线观看视频 | 综合亚洲深深色噜噜狠狠网站| 国产自产高清不卡| 欧美精品一区男女天堂| 天天爽夜夜爽夜夜爽精品视频| 处破女av一区二区| 国产人伦精品一区二区| 日韩精品中文字幕在线一区| 日本欧美大码aⅴ在线播放| 亚洲精品在线网站| 不卡的电视剧免费网站有什么| 亚洲视频一区二区在线观看| 欧美日韩色综合| 国产精品911| 亚洲综合在线免费观看| 日韩女优制服丝袜电影| 成人av网站在线| 亚洲高清久久久| 国产精品久久久久久久第一福利| 欧美三日本三级三级在线播放| 捆绑变态av一区二区三区| 自拍偷拍国产亚洲| 精品免费视频一区二区| 欧美在线影院一区二区| 国产精品1区2区| 美国十次了思思久久精品导航| 日韩中文字幕亚洲一区二区va在线 | 日韩欧美国产不卡| 亚洲午夜久久久| 欧美一区二区精美| 亚洲激情图片一区| 久久久久青草大香线综合精品| 一本久久精品一区二区| 国产一区不卡在线| 日韩精品一二三四| 亚洲一区二区三区四区在线观看 | 成人天堂资源www在线| 免费在线观看一区| 天天色综合成人网| 亚洲黄色小视频| 亚洲欧洲一区二区三区| 精品国产一区二区三区av性色| 欧美精品99久久久**| 欧洲日韩一区二区三区| 欧洲中文字幕精品| 91极品美女在线| 在线亚洲欧美专区二区| 在线观看国产91| 欧美日韩中文国产| 91麻豆精品国产自产在线 | 色综合天天天天做夜夜夜夜做| 国产69精品久久久久毛片| 成人av网站大全| 99精品久久免费看蜜臀剧情介绍 | 欧美日韩mp4| 91麻豆精品国产自产在线观看一区 | 亚洲精品少妇30p| 亚洲午夜免费视频| 亚洲成av人片一区二区梦乃| 日韩成人一级大片| 精品一区二区久久| 免费观看日韩电影| 国产成人精品一区二| 91污在线观看| 91.com在线观看| 亚洲国产精品国自产拍av| 一区二区三区欧美亚洲| 另类小说一区二区三区| 粉嫩av一区二区三区在线播放 | 麻豆成人在线观看| www.综合网.com| 精品成人私密视频| 亚洲精品久久久久久国产精华液| 日本成人在线视频网站| 色哟哟亚洲精品| 国产欧美一区二区三区沐欲| 亚洲国产精品一区二区久久| 国产在线精品一区二区三区不卡| 日本高清不卡一区| 国产女人水真多18毛片18精品视频| 丝袜亚洲另类欧美综合| 九色综合狠狠综合久久| 麻豆国产欧美日韩综合精品二区| 国产电影一区二区三区| 日本韩国欧美国产| 6080午夜不卡| 26uuu亚洲婷婷狠狠天堂| 亚洲欧洲一区二区三区| 亚洲一区二区三区激情| 日本女人一区二区三区| 91美女福利视频| 国产清纯白嫩初高生在线观看91 | 色呦呦日韩精品| 精品电影一区二区三区| 久久成人麻豆午夜电影| 26uuu亚洲| 不卡一区在线观看| 一区二区三区高清在线| 欧美日韩精品二区第二页| 91在线你懂得| 五月天丁香久久| 久久网这里都是精品| 不卡av电影在线播放| 亚洲成人免费av| 欧美日韩在线播放一区| 亚洲女人小视频在线观看| 日本韩国欧美在线| 亚洲精品亚洲人成人网 | 精品中文字幕一区二区小辣椒| 91精品国产色综合久久ai换脸 | 国产一区视频导航| 日韩欧美一级片| 久草这里只有精品视频| 中文字幕欧美三区| 白白色亚洲国产精品| 亚洲在线中文字幕| 日韩视频在线永久播放| 经典一区二区三区| 国产精品国产三级国产普通话99 | 久久99蜜桃精品| 亚洲色图在线播放| 欧美一区二区三区男人的天堂| 免费成人美女在线观看.| 国产欧美日韩另类视频免费观看 | 国精品**一区二区三区在线蜜桃| 久久久欧美精品sm网站| 日本道免费精品一区二区三区| 亚洲成人免费av| 国产精品少妇自拍| 99久久精品免费| 一区二区欧美国产| 欧美一级视频精品观看| 91看片淫黄大片一级| 日韩和欧美的一区| 日韩毛片视频在线看| 欧美成人a视频| 色婷婷综合久久久久中文| 国产美女在线观看一区| 免费不卡在线观看| 亚洲精品五月天| 国产精品私房写真福利视频| 欧美大片拔萝卜| 欧美日韩情趣电影| 色欧美乱欧美15图片| 99精品国产热久久91蜜凸|