📄 clmain.pas
字号:
unit ClMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DXDraws, DirectX, DXClass, DrawScrn, IntroScn, PlayScn, MapUnit, WIL, Grobal2,
Actor, DIB, StdCtrls, CliUtil, ScktComp, ExtCtrls, HUtil32, EdCode,
DWinCtl, ClFunc, magiceff, SoundUtil, DXSounds, clEvent, Wave, IniFiles;
const
BO_FOR_TEST = FALSE;
// EnglishVersion = FALSE; //TRUE;
EnglishVersion = TRUE;
BoNeedPatch = TRUE;
// LocalLanguage: TImeMode = imSHanguel;
LocalLanguage: TImeMode = imChinese;
SERVERADDR: string = '202.103.176.108';//'211.174.174.130'; //'194.153.73.54'; //'210.121.143.205';
TESTSERVERADDR = '202.103.176.108';//'211.174.174.250';
kornetworldaddress = '202.103.176.108';//'211.48.62.250'; //内齿岿靛
NEARESTPALETTEINDEXFILE = 'Data\npal.idx';
SCREENWIDTH = 800;
SCREENHEIGHT = 600;
MAXBAGITEMCL = 52;
ENEMYCOLOR = 69;
MAXFONT = 8;
{ FontArr: array[0..MAXFONT-1] of string = (
'官帕眉',
'奔覆眉',
'泵辑眉',
'蹈框眉',
'Courier New',
'Arial',
'MS Sans Serif',
'Microsoft Sans Serif'
);
}
FontArr: array[0..MAXFONT-1] of string = (
'Arial',
'Courier New',
'MS Sans Serif',
'Microsoft Sans Serif',
'Courier New',
'Arial',
'MS Sans Serif',
'Microsoft Sans Serif'
);
CurFont: integer = 0;
CurFontName: string = '楷体';//'奔覆眉';
type
TKornetWorld = record
CPIPcode: string;
SVCcode: string;
LoginID: string;
CheckSum: string;
end;
TOneClickMode = (toNone, toKornetWorld);
TTimerCommand = (tcSoftClose, tcReSelConnect, tcFastQueryChr, tcQueryItemPrice);
TChrAction = (caWalk, caRun, caHit, caSpell, caSitdown);
TConnectionStep = (cnsLogin, cnsSelChr, cnsReSelChr, cnsPlay);
TMovingItem = record
Index: integer; //ItemArr狼 Index
Item: TClientItem;
end;
PTMovingItem = ^TMovingItem;
TFrmMain = class(TDxForm)
DXDraw1: TDXDraw;
WTiles: TWMImages;
WObjects1: TWMImages;
WSmTiles: TWMImages;
WHumImg: TWMImages;
WProgUse: TWMImages;
CSocket: TClientSocket;
Timer1: TTimer;
MouseTimer: TTimer;
WMonImg: TWMImages;
DWinMan: TDWinManager;
WHairImg: TWMImages;
WBagItem: TWMImages;
WWeapon: TWMImages;
WStateItem: TWMImages;
WDnItem: TWMImages;
WaitMsgTimer: TTimer;
SelChrWaitTimer: TTimer;
WMagic: TWMImages;
CmdTimer: TTimer;
WNpcImg: TWMImages;
WMagIcon: TWMImages;
WChrSel: TWMImages;
MinTimer: TTimer;
WMon2Img: TWMImages;
WMon3Img: TWMImages;
WMMap: TWMImages;
WMon4Img: TWMImages;
DXSound: TDXSound;
WMon5Img: TWMImages;
WMon6Img: TWMImages;
WEffectImg: TWMImages;
WObjects2: TWMImages;
WObjects3: TWMImages;
WObjects4: TWMImages;
WObjects5: TWMImages;
WObjects6: TWMImages;
WObjects7: TWMImages;
WMon7Img: TWMImages;
WMon8Img: TWMImages;
WMon9Img: TWMImages;
WMon10Img: TWMImages;
WMon11Img: TWMImages;
WMon12Img: TWMImages;
WMon13Img: TWMImages;
WMon14Img: TWMImages;
WMon15Img: TWMImages;
WMon16Img: TWMImages;
SpeedHackTimer: TTimer;
WMon17Img: TWMImages;
WMon18Img: TWMImages;
WMagic2: TWMImages;
WProgUse2: TWMImages;
procedure DXDraw1Initialize(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DXDraw1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure DXDraw1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure DXDraw1Finalize(Sender: TObject);
procedure CSocketConnect(Sender: TObject; Socket: TCustomWinSocket);
procedure CSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure CSocketError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure CSocketRead(Sender: TObject; Socket: TCustomWinSocket);
procedure Timer1Timer(Sender: TObject);
procedure DXDraw1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure MouseTimerTimer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DXDraw1DblClick(Sender: TObject);
procedure WaitMsgTimerTimer(Sender: TObject);
procedure SelChrWaitTimerTimer(Sender: TObject);
procedure DXDraw1Click(Sender: TObject);
procedure CmdTimerTimer(Sender: TObject);
procedure MinTimerTimer(Sender: TObject);
procedure CheckHackTimerTimer(Sender: TObject);
procedure SendTimeTimerTimer(Sender: TObject);
procedure SpeedHackTimerTimer(Sender: TObject);
private
myrecstr:TStringList;
mysendstr:TStringList;
g_bIsShowPacket:Boolean;//是否显示封包
SocStr, BufferStr: string;
WarningLevel: integer;
TimerCmd: TTimerCommand;
MakeNewId: string; //瘤陛父甸妨绊窍绰 酒捞叼
ActionLockTime: longword;
LastHitTime: longword;
ActionFailLock: Boolean;
FailAction, FailDir: integer;
ActionKey: word;
CursorSurface: TDirectDrawSurface;
mousedowntime: longword;
WaitingMsg: TDefaultMessage;
WaitingStr: string;
WhisperName: string;
procedure ProcessKeyMessages;
procedure ProcessActionMessages;
procedure CheckSpeedHack (rtime: Longword);
procedure DecodeMessagePacket (datablock: string);
procedure ActionFailed;
function GetMagicByKey (Key: char): PTClientMagic;
procedure UseMagic (tx, ty: integer; pcm: PTClientMagic);
procedure UseMagicSpell (who, effnum, targetx, targety, magic_id: integer);
procedure UseMagicFire (who, efftype, effnum, targetx, targety, target: integer);
procedure UseMagicFireFail (who: integer);
procedure CloseAllWindows;
procedure ClearDropItems;
procedure ResetGameVariables;
procedure ChangeServerClearGameVariables;
procedure _DXDrawMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure AttackTarget (target: TActor);
function CheckDoorAction (dx, dy: integer): Boolean;
procedure ClientGetPasswdSuccess (body: string);
procedure ClientGetNeedUpdateAccount (body: string);
procedure ClientGetSelectServer;
procedure ClientGetReceiveChrs (body: string);
procedure ClientGetStartPlay (body: string);
procedure ClientGetReconnect (body: string);
procedure ClientGetMapDescription (body: string);
procedure ClientGetAdjustBonus (bonus: integer; body: string);
procedure ClientGetAddItem (body: string);
procedure ClientGetUpdateItem (body: string);
procedure ClientGetDelItem (body: string);
procedure ClientGetDelItems (body: string);
procedure ClientGetBagItmes (body: string);
procedure ClientGetDropItemFail (iname: string; sindex: integer);
procedure ClientGetShowItem (itemid, x, y, looks: integer; itmname: string);
procedure ClientGetHideItem (itemid, x, y: integer);
procedure ClientGetSenduseItems (body: string);
procedure ClientGetAddMagic (body: string);
procedure ClientGetDelMagic (magid: integer);
procedure ClientGetMyMagics (body: string);
procedure ClientGetMagicLvExp (magid, maglv, magtrain: integer);
procedure ClientGetDuraChange (uidx, newdura, newduramax: integer);
procedure ClientGetMerchantSay (merchant, face: integer; saying: string);
procedure ClientGetSendGoodsList (merchant, count: integer; body: string);
procedure ClientGetSendMakeDrugList (merchant: integer; body: string);
procedure ClientGetSendUserSell (merchant: integer);
procedure ClientGetSendUserRepair (merchant: integer);
procedure ClientGetSendUserStorage (merchant: integer);
procedure ClientGetSaveItemList (merchant: integer; bodystr: string);
procedure ClientGetSendDetailGoodsList (merchant, count, topline: integer; bodystr: string);
procedure ClientGetSendNotice (body: string);
procedure ClientGetGroupMembers (bodystr: string);
procedure ClientGetOpenGuildDlg (bodystr: string);
procedure ClientGetSendGuildMemberList (body: string);
procedure ClientGetDealRemoteAddItem (body: string);
procedure ClientGetDealRemoteDelItem (body: string);
procedure ClientGetReadMiniMap (mapindex: integer);
procedure ClientGetChangeGuildName (body: string);
procedure ClientGetSendUserState (body: string);
public
LoginId, LoginPasswd, CharName: string;
Certification: integer;
ActionLock: Boolean;
//MainSurface: TDirectDrawSurface;
function GetObjs (wunit, idx: integer): TDirectDrawSurface;
function GetObjsEx (wunit, idx: integer; var px, py: integer): TDirectDrawSurface;
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
procedure ProcOnIdle;
procedure AppOnIdle (Sender: TObject; var Done: Boolean);
procedure AppLogout;
procedure AppExit;
procedure PrintScreenNow;
procedure EatItem (idx: integer);
procedure SendClientMessage (msg, Recog, param, tag, series: integer);
procedure SendLogin (uid, passwd: string);
procedure SendNewAccount (ue: TUserEntryInfo; ua: TUserEntryAddInfo);
procedure SendUpdateAccount (ue: TUserEntryInfo; ua: TUserEntryAddInfo);
procedure SendSelectServer (svname: string);
procedure SendChgPw (id, passwd, newpasswd: string);
procedure SendNewChr (uid, uname, shair, sjob, ssex: string);
procedure SendQueryChr;
procedure SendDelChr (chrname: string);
procedure SendSelChr (chrname: string);
procedure SendRunLogin;
procedure SendSay (str: string);
procedure SendActMsg (ident, x, y, dir: integer);
procedure SendSpellMsg (ident, x, y, dir, target: integer);
procedure SendQueryUserName (targetid, x, y: integer);
procedure SendDropItem (name: string; itemserverindex: integer);
procedure SendPickup;
procedure SendTakeOnItem (where: byte; itmindex: integer; itmname: string);
procedure SendTakeOffItem (where: byte; itmindex: integer; itmname: string);
procedure SendEat (itmindex: integer; itmname: string);
procedure SendButchAnimal (x, y, dir, actorid: integer);
procedure SendMagicKeyChange (magid: integer; keych: char);
procedure SendMerchantDlgSelect (merchant: integer; rstr: string);
procedure SendQueryPrice (merchant, itemindex: integer; itemname: string);
procedure SendQueryRepairCost (merchant, itemindex: integer; itemname: string);
procedure SendSellItem (merchant, itemindex: integer; itemname: string);
procedure SendRepairItem (merchant, itemindex: integer; itemname: string);
procedure SendStorageItem (merchant, itemindex: integer; itemname: string);
procedure SendGetDetailItem (merchant, menuindex: integer; itemname: string);
procedure SendBuyItem (merchant, itemserverindex: integer; itemname: string);
procedure SendTakeBackStorageItem (merchant, itemserverindex: integer; itemname: string);
procedure SendMakeDrugItem (merchant: integer; itemname: string);
procedure SendDropGold (dropgold: integer);
procedure SendGroupMode (onoff: Boolean);
procedure SendCreateGroup (withwho: string);
procedure SendWantMiniMap;
procedure SendDealTry; //菊俊 荤恩捞 乐绰瘤 八荤
procedure SendGuildDlg;
procedure SendCancelDeal;
procedure SendAddDealItem (ci: TClientItem);
procedure SendDelDealItem (ci: TClientItem);
procedure SendChangeDealGold (gold: integer);
procedure SendDealEnd;
procedure SendAddGroupMember (withwho: string);
procedure SendDelGroupMember (withwho: string);
procedure SendGuildHome;
procedure SendGuildMemberList;
procedure SendGuildAddMem (who: string);
procedure SendGuildDelMem (who: string);
procedure SendGuildUpdateNotice (notices: string);
procedure SendGuildUpdateGrade (rankinfo: string);
procedure SendSpeedHackUser; //SpeedHaker 荤侩磊甫 辑滚俊 烹焊茄促.
procedure SendAdjustBonus (remain: integer; babil: TNakedAbility);
function TargetInSwordLongAttackRange (ndir: integer): Boolean;
function TargetInSwordWideAttackRange (ndir: integer): Boolean;
procedure OnProgramException (Sender: TObject; E: Exception);
procedure SendSocket (sendstr: string);
function ServerAcceptNextAction: Boolean;
function CanNextAction: Boolean;
function CanNextHit: Boolean;
function IsUnLockAction (action, adir: integer): Boolean;
procedure ActiveCmdTimer (cmd: TTimerCommand);
function IsGroupMember (uname: string): Boolean;
end;
function CheckMirProgram: Boolean;
procedure PomiTextOut (dsurface: TDirectDrawSurface; x, y: integer; str: string);
procedure WaitAndPass (msec: longword);
function GetRGB (c256: byte): integer;
procedure DebugOutStr (msg: string);
var
FrmMain: TFrmMain;
DScreen: TDrawScreen;
IntroScene: TIntroScene;
LoginScene: TLoginScene;
SelectChrScene: TSelectChrScene;
PlayScene: TPlayScene;
LoginNoticeScene: TLoginNotice;
DropedItemList: TList;
Sound: TSoundEngine;
ChangeFaceReadyList: TList;
MainParam1, MainParam2, MainParam3, MainParam4, MainParam5, MainParam6: string;
SoundList: TStringList;
//DObjList: TList; //官蹿俊 函版等 瘤屈狼 钎泅
EventMan: TClEventManager;
KornetWorld: TKornetWorld;
ServerName: string;
ServerMiniName: string;
MapTitle: string;
GuildName: string; //家加巩颇狼 捞抚
GuildRankName: string; //巩颇俊辑狼 流氓捞抚
Map: TMap;
MySelf: THumActor;
MyDrawActor: THumActor;
UseItems: array[0..8] of TClientItem;
ItemArr: array[0..MAXBAGITEMCL-1] of TClientItem;
DealItems: array[0..9] of TClientItem;
DealRemoteItems: array[0..19] of TClientItem;
SaveItemList: TList;
MenuItemList: TList;
DealGold, DealRemoteGold: integer;
BoDealEnd: Boolean;
DealWho: string; //芭贰窍绰 惑措祈
MagicList: TList;
MouseItem, MouseStateItem, MouseUserStateItem: TClientItem; //泅犁 付快胶啊 啊府虐绊 乐绰 酒捞袍
FreeActorList: TList; //
BoServerChanging: Boolean;
BoBagLoaded: Boolean;
FirstServerTime: longword;
FirstClientTime: longword;
//ServerTimeGap: int64;
TimeFakeDetectCount: integer;
SHGetTime: longword;
SHTimerTime: longword;
SHFakeCount: integer;
LatestClientTime2: longword;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -