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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? clfunc.pas

?? 解元 傳奇2客戶端delphi源程序
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit ClFunc;
//輔助函數庫
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;

//整數轉換為千位帶逗號的字符串,例如1234567轉換為“1,234,567”
//這里用于顯示金錢數量
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;
   //檢查要添加的物品是否已經存在
   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;

//用當前的物品屬性替代已經存在的該物品屬性
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樣特殊物品欄
   //啊規狼 救焊撈綽 何盒俊 樂欄擱 纏絹 棵赴促.
   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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久成人久久鬼色| 亚洲va欧美va人人爽| 国产精品夜夜爽| 久久综合久久久久88| 国产剧情一区二区三区| 久久精品亚洲国产奇米99| 国产成人av电影在线| 国产精品二三区| 91蝌蚪国产九色| 午夜免费久久看| 欧美一区二区三区四区高清| 日本三级亚洲精品| 久久久精品免费免费| eeuss鲁一区二区三区| 亚洲黄色免费电影| 日韩丝袜情趣美女图片| 国产精品一区在线观看你懂的| 国产性色一区二区| 欧洲精品中文字幕| 麻豆一区二区99久久久久| 久久久九九九九| 一本大道久久精品懂色aⅴ| 香蕉加勒比综合久久| 欧美va亚洲va| 97久久精品人人爽人人爽蜜臀| 亚洲国产一区二区三区| 精品99久久久久久| 99久久99久久久精品齐齐| 日韩成人伦理电影在线观看| 久久精品人人爽人人爽| 欧美视频中文字幕| 国产精品77777| 一区二区三区欧美| 精品国产凹凸成av人导航| 91在线视频播放地址| 日本中文字幕一区| 国产精品国产三级国产aⅴ原创| 欧美日韩精品欧美日韩精品| 国产激情一区二区三区| 亚洲一区精品在线| 国产精品拍天天在线| 717成人午夜免费福利电影| 91亚洲大成网污www| 成人av在线网站| 日本不卡123| 亚洲日穴在线视频| 国产网站一区二区| 欧美一二三四区在线| 91久久精品一区二区二区| 国产盗摄视频一区二区三区| 日本伊人色综合网| 亚洲精品乱码久久久久久日本蜜臀| 亚洲精品在线电影| 91精品国产全国免费观看| 91色.com| www.在线成人| 成人午夜视频福利| 国产乱码精品一区二区三区av | av资源网一区| 国产在线国偷精品产拍免费yy| 午夜精品久久久久久久蜜桃app| 国产精品动漫网站| 欧美国产日韩亚洲一区| 精品国产一区二区三区久久久蜜月| 欧美偷拍一区二区| 一本色道久久综合亚洲aⅴ蜜桃| 成人激情文学综合网| 国内精品伊人久久久久影院对白| 日韩电影在线观看网站| 亚洲妇女屁股眼交7| 亚洲一区在线看| 一区二区不卡在线播放 | 久久天堂av综合合色蜜桃网| 91精品国产综合久久小美女| 欧美日韩国产色站一区二区三区| 91在线一区二区| 成人精品鲁一区一区二区| 国产精品自在欧美一区| 国产综合久久久久久久久久久久 | 一区二区激情视频| 一区二区在线观看免费视频播放| 成人免费视频在线观看| 亚洲日本va午夜在线电影| 欧美国产精品专区| 国产精品福利av| 亚洲狠狠丁香婷婷综合久久久| 亚洲免费观看高清| 亚洲一区二区在线观看视频| 亚洲福利电影网| 青青青伊人色综合久久| 激情亚洲综合在线| 国产精品18久久久久久vr| 成人精品gif动图一区| www.视频一区| 欧美日韩在线不卡| 国产精品久久福利| 亚洲精品日日夜夜| 午夜一区二区三区在线观看| 日本免费在线视频不卡一不卡二| 免费成人在线视频观看| 国产原创一区二区| 99久久综合精品| 欧美久久一二区| 久久久亚洲精品一区二区三区| 国产精品久久久久永久免费观看| 亚洲乱码国产乱码精品精98午夜 | 国产婷婷色一区二区三区| 国产精品成人一区二区艾草 | 亚洲天堂福利av| 亚洲不卡一区二区三区| 激情久久五月天| 99久久久精品| 日韩欧美成人一区| 国产精品美女久久久久久2018| 一级精品视频在线观看宜春院| 美日韩一级片在线观看| gogo大胆日本视频一区| 欧美一区二区在线免费观看| 欧美激情综合五月色丁香| 亚洲一级二级三级在线免费观看| 久久机这里只有精品| 91麻豆福利精品推荐| 精品成人一区二区| 亚洲影院免费观看| 成人综合婷婷国产精品久久| 欧美色成人综合| 国产精品萝li| 久久精品国产在热久久| 日本高清不卡视频| 久久一区二区三区国产精品| 亚洲国产色一区| 成人高清免费在线播放| 日韩欧美一卡二卡| 亚洲一区二区四区蜜桃| 丁香婷婷综合色啪| 欧美一级欧美三级| 国产精品自拍三区| 4438成人网| 一区二区视频在线看| 国产一区二区三区不卡在线观看| 欧美日韩中字一区| 亚洲乱码国产乱码精品精的特点| 韩国成人精品a∨在线观看| 欧美乱妇20p| 一区二区三区日韩| 91视频精品在这里| 欧美激情一区二区三区全黄 | 亚洲v精品v日韩v欧美v专区 | 91激情五月电影| 亚洲国产高清在线| 国产剧情一区在线| 日韩精品一区二区三区三区免费 | 国产一区二区三区美女| 日韩一区二区精品葵司在线| 亚洲国产欧美一区二区三区丁香婷| 国产成人夜色高潮福利影视| 欧美不卡一区二区| 久久精品久久久精品美女| 欧美一区二区三区日韩| 亚洲国产中文字幕| 欧美日韩综合在线| 偷拍自拍另类欧美| 91超碰这里只有精品国产| 亚洲高清免费观看高清完整版在线观看 | 国产福利91精品一区| 久久久亚洲精华液精华液精华液| 蜜桃一区二区三区在线| 日韩三级电影网址| 久久丁香综合五月国产三级网站| 欧美一区三区四区| 青娱乐精品视频| 精品va天堂亚洲国产| 国产成人日日夜夜| 国产精品美女久久久久高潮| a亚洲天堂av| 一区二区三区精品在线| 欧美在线观看禁18| 午夜精品成人在线| 日韩欧美电影一二三| 国产美女视频91| 亚洲欧洲日韩女同| 欧美亚洲国产一区在线观看网站 | 看国产成人h片视频| 久久综合久久鬼色| 不卡影院免费观看| 夜夜精品视频一区二区 | 日韩天堂在线观看| 国产成人精品网址| 最好看的中文字幕久久| 欧美性猛交xxxx乱大交退制版| 日韩国产精品91| 国产三级精品视频| 色噜噜狠狠成人网p站| 午夜婷婷国产麻豆精品| 久久人人爽人人爽| 色一情一伦一子一伦一区| 日韩国产欧美视频| 欧美国产综合色视频| 色国产精品一区在线观看| 免费成人结看片|