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

📄 cmain.pas

📁 传奇的登陆器!也是在网上搜索的!不知道好不好用
💻 PAS
📖 第 1 页 / 共 5 页
字号:
unit CMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ComCtrls, ExtCtrls, Buttons, JSocket, StdCtrls, Share,
  RzButton, Grobal2, ObjectBase, OleCtrls, ShockwaveFlashObjects_TLB;
const
  MAXBAGITEMCL = 52;

type
  TConnectionStep = (cnsLogin, cnsSelChr, cnsReSelChr, cnsPlay);
  TSceneType = (stIntro, st_NewAccount, stLogin, stSelectServer, stSelectCountry, stSelectChr, stNewChr, stLoading,
    stLoginNotice, stPlayGame);
  TScene = (s_None, s_Intro, s_NewAccount, s_Login, s_SelectServer, s_SelectChr, s_LoginNotice, s_Play);
  TTimerCommand = (tcSoftClose, tcReSelConnect, tcFastQueryChr, tcQueryItemPrice);
  TUserCharacterInfo = record
    sName: string[19];
    btJob: Byte;
    btHair: Byte;
    wLevel: Word;
    btSex: Byte;
  end;
  TSelChar = record
    boValid: Boolean;
    UserChr: TUserCharacterInfo;
    boSelected: Boolean;
    boFreezeState: Boolean; //TRUE:倔篮惑怕 FALSE:踌篮惑怕
    boUnfreezing: Boolean; //踌绊 乐绰 惑怕牢啊?
    boFreezing: Boolean; //倔绊 乐绰 惑怕?
    nAniIndex: Integer; //踌绰(绢绰) 局聪皋捞记
    nDarkLevel: Integer;
    nEffIndex: Integer; //瓤苞 局聪皋捞记
    dwStartTime: LongWord;
    dwMoretime: LongWord;
    dwStartefftime: LongWord;
  end;
  TPlayScene = class
    m_MySelf: THumActor;
    m_TargetCret: TActor;
    m_FocusCret: TActor;
    m_MagicTarget: TActor;
    m_MsgList: TList;
    m_ActorList: TList;
    m_FreeActorList: TList;
    m_ChangeFaceReadyList: TList;
  private

  public
    constructor Create;
    destructor Destroy; override;
    procedure SendMsg(nIdent, nChrID, nX, nY, nDir, nFeature, nState: Integer; sMsg: string);
    function FindActor(nChrID: Integer): TActor; overload;
    function FindActor(sName: string): TActor; overload;
    function FindActorXY(nX, nY: Integer): TActor;
    function IsValidActor(Actor: TActor): Boolean;
    function NewActor(nChrID: Integer; wX, wY, wDir: Word; nFeature, nState: Integer): TActor;
    procedure ActorDied(Actor: TObject);
    procedure SetActorDrawLevel(Actor: TObject; nLevel: Integer);
    procedure ClearActors;
    procedure ClearObjects();
    function DeleteActor(nChrID: Integer): TActor;
    procedure DelActor(Actor: TObject);
    function IsChangingFace(nRecogID: Integer): Boolean;
  end;
  TfrmCMain = class(TForm)
    MainMenu1: TMainMenu;
    MENU_CONTROL: TMenuItem;
    MENU_CONTROL_EXIT: TMenuItem;
    TimerMain: TTimer;
    StatusBar: TStatusBar;
    PanelMenu: TPanel;
    PanelTitle: TPanel;
    PanelClient: TPanel;
    CSocket: TClientSocket;
    PanelUserLogin: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    ButtonLoginClose: TSpeedButton;
    EditUserAccount: TEdit;
    EditUserPassword: TEdit;
    ButtonStart: TRzButton;
    PanelMessageDlg: TPanel;
    MsgBoxClose: TSpeedButton;
    MsgBoxOK: TRzButton;
    MsgBoxCancel: TRzButton;
    MsgBoxYes: TRzButton;
    MsgBoxNo: TRzButton;
    MsgBoxLabel: TLabel;
    PanelSelectServer: TPanel;
    ButtonSelectServerClose: TSpeedButton;
    ButtonServer1: TRzButton;
    ButtonServer2: TRzButton;
    ButtonServer3: TRzButton;
    ButtonServer4: TRzButton;
    ButtonServer5: TRzButton;
    ButtonServer6: TRzButton;
    ButtonServer7: TRzButton;
    ButtonServer8: TRzButton;
    CmdTimer: TTimer;
    SelChrWaitTimer: TTimer;
    PanelSelectChr: TPanel;
    ButtonSelectChrClose: TSpeedButton;
    GroupBox1: TGroupBox;
    Label3: TLabel;
    EditSelectChrName1: TEdit;
    Label4: TLabel;
    EditSelectChrJob1: TEdit;
    Label5: TLabel;
    EditSelectChrLevel1: TEdit;
    Label6: TLabel;
    EditSelectChrSex1: TEdit;
    ButtonSelectChr1: TRzButton;
    GroupBox2: TGroupBox;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    EditSelectChrName2: TEdit;
    EditSelectChrJob2: TEdit;
    EditSelectChrLevel2: TEdit;
    EditSelectChrSex2: TEdit;
    ButtonSelectChr2: TRzButton;
    GroupBox3: TGroupBox;
    EditSelectChrCurChr: TEdit;
    ButtonSelectChrStartPlay: TRzButton;
    ButtonSelectChrNewChr: TRzButton;
    ButtonSelectChrDelChr: TRzButton;
    WaitMsgTimer: TTimer;
    PanelPlayGame: TPanel;
    MinTimer: TTimer;
    Panel1: TPanel;
    EditChat: TEdit;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SpeedButton5: TSpeedButton;
    SpeedButton6: TSpeedButton;
    SpeedButton7: TSpeedButton;
    SpeedButton8: TSpeedButton;
    SpeedButton9: TSpeedButton;
    SpeedButton13: TSpeedButton;
    SpeedButton17: TSpeedButton;
    ButtonPlayGameClose: TSpeedButton;
    LabelPlayGameHP: TLabel;
    LabelPlayGameMP: TLabel;
    ListBoxActor: TListBox;
    LabelPlayGameLevel: TLabel;
    PanelCreateNewChr: TPanel;
    ButtonCreateNewChr: TSpeedButton;
    GroupBox4: TGroupBox;
    ButtonCreateNewChrWarr: TRzButton;
    ButtonCreateNewChrWizard: TRzButton;
    ButtonCreateNewChrTaos: TRzButton;
    ButtonCreateNewChrFemale: TRzButton;
    ButtonCreateNewChrMale: TRzButton;
    ButtonCreateNewChrOK: TRzButton;
    GroupBox5: TGroupBox;
    Label11: TLabel;
    EditCreateNewChrName: TEdit;
    EditCreateNewChrSex: TEdit;
    Label13: TLabel;
    EditCreateNewChrJob: TEdit;
    Label14: TLabel;
    ListBoxChat: TListBox;
    PopupMenu: TPopupMenu;
    POPMENU_AUTOSCROLL: TMenuItem;
    ButtonNewAccount: TRzButton;
    PanelNewAccount: TPanel;
    ButtonPanelNewAccountClose: TSpeedButton;
    LabelStatus: TLabel;
    GroupBox6: TGroupBox;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    EditPassword: TEdit;
    EditAccount: TEdit;
    EditConfirm: TEdit;
    EditYourName: TEdit;
    EditSSNo: TEdit;
    EditBirthDay: TEdit;
    EditQuiz1: TEdit;
    EditAnswer1: TEdit;
    EditQuiz2: TEdit;
    EditAnswer2: TEdit;
    MemoHelp: TMemo;
    EditPhone: TEdit;
    EditMobPhone: TEdit;
    EditEMail: TEdit;
    ButtonPanelNewAccountOK: TRzButton;
    PanelPlay: TPanel;
    GroupBox7: TGroupBox;
    CheckBoxAutoLogin: TCheckBox;
    ButtonChr1: TRadioButton;
    ButtonChr2: TRadioButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure TimerMainTimer(Sender: TObject);
    procedure MENU_CONTROL_EXITClick(Sender: TObject);
    procedure CSocketConnect(Sender: TObject; Socket: TCustomWinSocket);
    procedure CSocketConnecting(Sender: TObject; Socket: TCustomWinSocket);
    procedure CSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket);
    procedure CSocketError(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure CSocketLookup(Sender: TObject; Socket: TCustomWinSocket);
    procedure CSocketRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure PanelUserLoginMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure EditUserAccountKeyPress(Sender: TObject; var Key: Char);
    procedure ButtonStartClick(Sender: TObject);
    procedure MsgBoxOKClick(Sender: TObject);
    procedure ButtonServer1Click(Sender: TObject);
    procedure CmdTimerTimer(Sender: TObject);
    procedure ButtonSelectChr1Click(Sender: TObject);
    procedure EditChatKeyPress(Sender: TObject; var Key: Char);
    procedure ListBoxActorDblClick(Sender: TObject);
    procedure ListBoxActorDrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    procedure ListBoxChatDblClick(Sender: TObject);
    procedure POPMENU_AUTOSCROLLClick(Sender: TObject);
    procedure ListBoxChatClick(Sender: TObject);
    procedure EditAccountEnter(Sender: TObject);
    procedure ButtonPanelNewAccountOKClick(Sender: TObject);
    procedure CheckBoxAutoLoginClick(Sender: TObject);
    function GetRGB(c256: Byte): TColor;
  private
    m_boTimerMainBusy: BOOL;
    m_boOpened: BOOL;
    m_dwOpenTick: LongWord;
    m_dwMinTick: LongWord;
    m_sSockText: string;
    m_sBufferText: string;
    m_sLoginAccount: string;
    m_sLoginPasswd: string;
    m_nCertification: Integer;
    m_TimerCmd: TTimerCommand;
    m_sCharName: string;
    m_CharMsgList: TStringList;
    m_CharBkColorList: TList;
    m_nChatBoardTop: Integer;
    m_GuildChatMsgList: TStringList;
    m_sWhisperName: string;
    m_dwRunOneTick: LongWord;
    m_boChatAutoScroll: BOOL;
    dwOKTick: LongWord;
    m_boAutoLogin: BOOL;
    m_nAutoChr: Integer;
    g_PlayScene: TPlayScene;
    g_nMySpeedPoint: Integer; //敏捷
    g_nMyHitPoint: Integer; //准确
    g_nMyAntiPoison: Integer; //魔法躲避
    g_nMyPoisonRecover: Integer; //中毒恢复
    g_nMyHealthRecover: Integer; //体力恢复
    g_nMySpellRecover: Integer; //魔法恢复
    g_nMyAntiMagic: Integer; //魔法躲避
    g_nMyHungryState: Integer; //饥饿状态


    g_boNextTimePowerHit: BOOL; //打开攻杀
    g_boCanLongHit: BOOL; //打开刺杀
    g_boCanWideHit: BOOL; //打开半月
    g_boCanCrsHit: BOOL;
    g_boCanTwnHit: BOOL;
    g_boCanStnHit: BOOL;
    g_boNextTimeFireHit: BOOL;

    g_dwLatestFireHitTick: LongWord;

    g_sGoldName: string;
    g_sGameGoldName: string;
    g_sGamePointName: string;
    g_btCode: Byte;
    g_boSendLogin: BOOL;
    g_boServerConnected: BOOL;
    g_SoftClosed: BOOL;
    g_ConnectionStep: TConnectionStep; //当前游戏网络连接步骤
    g_CurrentScene: TScene; //当前界面状态
    g_boServerChanging: BOOL;
    g_boMapMoving: BOOL;
    g_sWaitingStr: string;
    g_WaitingMsg: TDefaultMessage;
    g_boMapMovingWait: BOOL;
    g_ServerList: TStringList;
    g_sServerMiniName: string;
    g_sServerName: string;
    g_wAvailIDDay: Word;
    g_wAvailIDHour: Word;
    g_wAvailIPDay: Word;
    g_wAvailIPHour: Word;

    g_boDoFastFadeOut: BOOL;
    g_dwFirstServerTime: LongWord;
    g_dwFirstClientTime: LongWord;

    g_sSelChrAddr: string;
    g_nSelChrPort: Integer;
    g_sRunServerAddr: string;
    g_nRunServerPort: Integer;

    g_ChrArr: array[0..1] of TSelChar;
    g_ChangeFaceReadyList: TList;
    g_FreeActorList: TList;

    g_nTargetX: Integer;
    g_nTargetY: Integer;
    g_sMapTitle: string;
    g_sMapName: string;
    g_nMapMusic: Integer;
    g_MagicList: TList;
    g_UseItems: array[0..12] of TClientItem;
    g_ItemArr: array[0..MAXBAGITEMCL - 1] of TClientItem;
    g_boBagLoaded: BOOL;

    g_boAllowGroup: BOOL;

    g_boActionLock: BOOL;

    g_nReceiveCount: Integer;
    NewIdRetryUE: TUserEntry;
    NewIdRetryAdd: TUserEntryAdd;
    m_sMakeNewId: string;
    procedure WaitAndPass(dwMsec: LongWord);
    procedure ActiveCmdTimer(Cmd: TTimerCommand);
    procedure SetTopOrder(Control: TControl);
    function MessageDlg(sMsg: string; DlgButtons: TMsgDlgButtons): TModalResult;
    procedure CloseScene;
    procedure OpenScene();
    procedure ChangeScene(SceneType: TSceneType);
    procedure ProcessMsg(Msg: Pointer);
    procedure ShowSelectServer;
    procedure ActionFailed();
    procedure CheckSpeedHack(dwTime: LongWord);
    procedure DecodeMessagePacket(sDataBlock: string);
    procedure ClientNewIDSuccess();

    procedure ClientNewIDFail(nFailCode: Integer);
    procedure ClientLoginFail(nFailCode: Integer);
    procedure ClientGetPasswordOK(DefMsg: TDefaultMessage; sData: string);
    procedure ClientGetPasswdSuccess(sData: string);
    procedure ClientGetReceiveChrs(sData: string);
    procedure ClientQueryChrFail(nFailCode: Integer);
    procedure ClientNewChrFail(nFailCode: Integer);
    procedure ClientDelChrFail(nFailCode: Integer);
    procedure ClientGetStartPlay(sData: string);
    procedure ClientStartPlayFail();
    procedure ClientVersionFail();
    procedure ClientGetSendNotice(sData: string);
    procedure ClientGetNewMap(DefMsg: TDefaultMessage; sData: string);
    procedure ClientGetReconnect(sData: string);
    procedure ClientGetAreaState(nAreaState: Integer);
    procedure ClientGetMapDescription(DefMsg: TDefaultMessage; sData: string);
    procedure ClientGetGameGoldName(DefMsg: TDefaultMessage; sData: string);
    procedure ClientGetAdjustBonus(nBonusPoint: Integer; sData: string);
    procedure ClientGetMyStatus(DefMsg: TDefaultMessage);
    procedure ClientGetObjTurn(DefMsg: TDefaultMessage; sData: string);
    procedure ClientGetBackStep(DefMsg: TDefaultMessage; sData: string);
    procedure ClientGetAbility(DefMsg: TDefaultMessage; sData: string);
    procedure ClientGetSubAbility(DefMsg: TDefaultMessage);
    procedure ClientGetDayChanging(DefMsg: TDefaultMessage);
    procedure ClientGetWinExp(DefMsg: TDefaultMessage);
    procedure ClientGetLevelUp(DefMsg: TDefaultMessage);
    procedure CliengGetHealthSpellChaged(DefMsg: TDefaultMessage);
    procedure ClientGetStruck(DefMsg: TDefaultMessage; sData: string);

    procedure ClientGetUserLogin(DefMsg: TDefaultMessage; sData: string);
    procedure ClientGetMessage(DefMsg: TDefaultMessage; sData: string);
    procedure ClientHearMsg(DefMsg: TDefaultMessage; sData: string);
    procedure ClientGetUserName(DefMsg: TDefaultMessage; sData: string);
    procedure ClientGetUserNameColor(DefMsg: TDefaultMessage);
    procedure ClientGetHideObject(DefMsg: TDefaultMessage);
    procedure ClientObjDigup(DefMsg: TDefaultMessage; sData: string);
    procedure ClientObjDigDown(DefMsg: TDefaultMessage);
    procedure ClientGetAddItem(sData: string);
    procedure ClientGetBagItmes(sData: string);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -