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

📄 main.~pas

📁 RO模拟器!!适合玩仙境传说的玩家们呦~
💻 ~PAS
📖 第 1 页 / 共 5 页
字号:
unit Main;

interface

uses
	{Delphi VCL units}
	Windows, MMSystem, Messages, SysUtils, Variants, Classes, Graphics, Controls,
	Forms, ShellApi, Dialogs, ScktComp, StdCtrls, ExtCtrls, IniFiles, WinSock,
	ComCtrls,
	{Fusion Units}
	Login, CharaSel, Script, Game, Path, Database, Common, MonsterAI, Buttons,
	SQLData, FusionSQL, Math, Game_Master, Player_Skills, WeissINI, JCon, Globals,
	{3rd Party Units}
	List32, Zip, Menus,MD5, OleCtrls, SHDocVw,Upform;

const
	REALTIME_PRIORITY_CLASS = $100;
	HIGH_PRIORITY_CLASS = $80;
	ABOVE_NORMAL_PRIORITY_CLASS = $8000;
	NORMAL_PRIORITY_CLASS = $20;
	BELOW_NORMAL_PRIORITY_CLASS = $4000;
	IDLE_PRIORITY_CLASS = $40;
	WM_NOTIFYICON  = WM_USER+333;
	htTitleBtn = htSizeLast + 1;


type
	TfrmMain = class(TForm)
		sv1          :TServerSocket;
		sv2          :TServerSocket;
		sv3          :TServerSocket;
		cmdStart     :TButton;
		cmdStop      :TButton;
		lbl00        :TLabel;
		txtDebug     :TMemo;
		DBsaveTimer  :TTimer;
		Edit1: TEdit;
		Button1: TButton;
		StatusBar1: TStatusBar;
		BackupTimer: TTimer;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    MainMenu1: TMainMenu;
    Exit1: TMenuItem;
    Server1: TMenuItem;
    Start1: TMenuItem;
    Stop1: TMenuItem;
    TabSheet3: TTabSheet;
    ListBox1: TListBox;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit3: TEdit;
    Label3: TLabel;
    Edit4: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    Edit6: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Button3: TButton;
    Button4: TButton;
    PageControl2: TPageControl;
    TabSheet4: TTabSheet;
    TabSheet5: TTabSheet;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Edit17: TEdit;
    Edit18: TEdit;
    Edit19: TEdit;
    Edit20: TEdit;
    Edit21: TEdit;
    Edit22: TEdit;
    Button5: TButton;
    Label23: TLabel;
    Label24: TLabel;
    Edit23: TEdit;
    Edit24: TEdit;
    Label25: TLabel;
    Edit25: TEdit;
    Label26: TLabel;
    Edit26: TEdit;
    Label27: TLabel;
    ComboBox1: TComboBox;
    Label28: TLabel;
    Label29: TLabel;
    Label30: TLabel;
    Label31: TLabel;
    Label32: TLabel;
    Label33: TLabel;
    Edit29: TEdit;
    Edit30: TEdit;
    Edit31: TEdit;
    Label34: TLabel;
    Label35: TLabel;
    Label36: TLabel;
    Label37: TLabel;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    ComboBox4: TComboBox;
    ComboBox5: TComboBox;
    ComboBox6: TComboBox;
    ComboBox7: TComboBox;
    ComboBox8: TComboBox;
    ComboBox17: TComboBox;
    Label38: TLabel;
    MinimizetoTray2: TMenuItem;
    Database1: TMenuItem;
    Save1: TMenuItem;
    Backup1: TMenuItem;
    Button6: TButton;
    ComboBox15: TComboBox;
    ComboBox18: TComboBox;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    SendMessage1: TMenuItem;
    Timer1: TTimer;
    Label60: TLabel;
    ComboBox19: TComboBox;
    Label61: TLabel;
    Edit5: TEdit;
    H1: TMenuItem;
    H2: TMenuItem;
    A1: TMenuItem;
    text7: TEdit;
    Combobox21: TComboBox;
    ComboBox20: TComboBox;
    ComboBox14: TComboBox;
    ComboBox13: TComboBox;
    ComboBox12: TComboBox;
    ComboBox11: TComboBox;
    ComboBox10: TComboBox;
    ComboBox9: TComboBox;
    Edit35: TEdit;
    Edit33: TEdit;
    Edit32: TEdit;
    Edit34: TEdit;
    Edit45: TEdit;
    Edit44: TEdit;
    Edit43: TEdit;
    Edit28: TEdit;
    Edit27: TEdit;
    Edit42: TEdit;
    Edit40: TEdit;
    Edit39: TEdit;
    Edit38: TEdit;
    Edit37: TEdit;
    Button2: TButton;
    ComboBox16: TComboBox;
    Label64: TLabel;
    Label63: TLabel;
    Label62: TLabel;
    Label48: TLabel;
    Label46: TLabel;
    Label42: TLabel;
    Label41: TLabel;
    Label40: TLabel;
    Label39: TLabel;
    Label47: TLabel;
    Label54: TLabel;
    Label59: TLabel;
    Label58: TLabel;
    Label57: TLabel;
    Label56: TLabel;
    Label55: TLabel;
    Label53: TLabel;
    Label52: TLabel;
    Label51: TLabel;
    Label50: TLabel;
    Label49: TLabel;
    Label45: TLabel;
    Label44: TLabel;
    Label43: TLabel;
    ComboBox24: TComboBox;
    Label86: TLabel;
    N1: TMenuItem;
    TabSheet6: TTabSheet;
    ComboBox23: TComboBox;
    ComboBox22: TComboBox;
    Button18: TButton;
    Button17: TButton;
    Button16: TButton;
    Edit50: TEdit;
    Edit49: TEdit;
    Edit36: TEdit;
    Edit46: TEdit;
    Edit16: TEdit;
    Edit15: TEdit;
    Edit14: TEdit;
    Edit13: TEdit;
    Edit12: TEdit;
    Edit11: TEdit;
    Edit10: TEdit;
    Edit9: TEdit;
    Edit8: TEdit;
    Edit7: TEdit;
    ListBox2: TListBox;
    Label78: TLabel;
    Label84: TLabel;
    Label83: TLabel;
    Label82: TLabel;
    Label81: TLabel;
    Label77: TLabel;
    Label80: TLabel;
    Label79: TLabel;
    Label76: TLabel;
    Label75: TLabel;
    Label74: TLabel;
    Label73: TLabel;
    Label72: TLabel;
    Label71: TLabel;
    Label70: TLabel;
    Label69: TLabel;
    Label68: TLabel;
    Label67: TLabel;
    Label66: TLabel;
    Label65: TLabel;
    U1: TMenuItem;
    N2: TMenuItem;

		procedure FormResize(Sender: TObject); overload;
		procedure DBsaveTimerTimer(Sender: TObject);

		procedure FormCreate(Sender: TObject);
		procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
		procedure MonsterSpawn(tm:TMap; ts:TMob; Tick:cardinal);
		procedure MobSpawn(tm:TMap; ts:TMob; Tick:cardinal);
		procedure MonsterDie(tm:TMap; tc:TChara; ts:TMob; Tick:cardinal);

		procedure StatCalc1(tc:TChara; ts:TMob; Tick:cardinal);
		procedure StatCalc2(tc:TChara; tc1:TChara; Tick:cardinal);
		function  CharaMoving(tc:TChara;Tick:cardinal) : boolean;
		procedure CharaSplash(tc:TChara;Tick:cardinal);
		procedure CharaSplash2(tc:TChara;Tick:cardinal);
		procedure CharaAttack(tc:TChara;Tick:cardinal);
		procedure CharaAttack2(tc:TChara;Tick:cardinal);
		procedure CharaPassive(tc:TChara;Tick:cardinal);
		procedure SkillPassive(tc:TChara;Tick:Cardinal);
		procedure PetPassive(tc:TChara; _Tick:Cardinal);

		function  NPCAction(tm:TMap;tn:TNPC;Tick:cardinal;tc:TChara) : Integer;

		procedure MobAI(tm:TMap;ts:TMob;Tick:cardinal);
		procedure MobMoveL(tm:TMap;Tick:cardinal);

		function  MobMoving(tm:TMap;ts:TMob;Tick:cardinal) : Integer;  //Spirit Sphere by Darkhelmet

		procedure MobAttack(tm:TMap;ts:TMob;Tick:cardinal);
		procedure StatEffect(tm:TMap; ts:TMob; Tick:Cardinal);

		procedure CreateField(tc:TChara; Tick:Cardinal);
		function DamageOverTime(tm: TMap; var tc: TChara; Tick: cardinal; skill: word; useLV: byte; count: integer): boolean;
		{Pet Moving}
		procedure PetMoving( tc:TChara; _Tick:cardinal );

		{Damage Calculations}
		procedure DamageCalc1(tm:TMap; tc:TChara; ts:TMob; Tick:cardinal; Arms:byte = 0; SkillPer:integer = 0; AElement:byte = 0; HITFix:integer = 0);
		procedure DamageCalc2(tm:TMap; tc:TChara; ts:TMob; Tick:cardinal; SkillPer:integer = 0; AElement:byte = 255; HITFix:integer = 0);
		procedure DamageCalc3(tm:TMap; tc:TChara; tc1:TChara; Tick:cardinal; Arms:byte = 0; SkillPer:integer = 0; AElement:byte = 0; HITFix:integer = 0);

		{Damage Processes}
		function  DamageProcess1(tm:TMap; tc:TChara; ts:TMob; Dmg:integer; Tick:cardinal;isBreak:Boolean = True) : Boolean;
		function  DamageProcess2(tm:TMap; tc:TChara; tc1:TChara; Dmg:integer; Tick:cardinal;isBreak:Boolean = True) : Boolean;
		procedure KnockBackLiving(tm:TMap; tc:TChara; tv:TLiving; dist:byte; ktype: byte = 0);

		procedure sv1ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
		procedure sv1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
		procedure sv1ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
		procedure sv1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
		procedure sv2ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
		procedure sv2ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
		procedure sv2ClientRead(Sender: TObject; Socket: TCustomWinSocket);
		procedure sv2ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
		procedure sv3ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
		procedure sv3ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
		procedure sv3ClientRead(Sender: TObject; Socket: TCustomWinSocket);
		procedure sv3ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
		procedure cmdStartClick(Sender: TObject);
		procedure cmdStopClick(Sender: TObject);
		procedure Button1Click(Sender: TObject);
		procedure Edit1KeyPress(Sender: TObject; var Key: Char);
		procedure CMClickIcon(var msg: TMessage); message WM_NOTIFYICON;
		procedure BackupTimerTimer(Sender: TObject);
    procedure Start1Click(Sender: TObject);
    procedure Stop1Click(Sender: TObject);
    procedure Exit1Click(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);

    procedure PriorityUpdate(prioramount : Integer);
    procedure PageControl2Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure MinimizetoTray2Click(Sender: TObject);
    procedure Save1Click(Sender: TObject);
    procedure Backup1Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Clic(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure SendMessage1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure H2Click(Sender: TObject);
    procedure WMSysCommand(var msg: TMessage);message wm_syscommand;
    procedure N1Click(Sender: TObject);
    procedure A1Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
    procedure ListBox2Click(Sender: TObject);
    procedure U1Click(Sender: TObject);
    procedure WMQueryEndSession(var Message: TWMQueryEndSession); message WM_QUERYENDSESSION;
    procedure Button17Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
		private

	public
		{ Public 愰尵 }
		// AlexKreuz Online Timer
		OnlineTime, ElapsedT: integer;

//		ElapsedD, ElapsedH, ElapsedM, ElapsedS: double;
		ElapsedD, ElapsedH, ElapsedM, ElapsedS: DWORD;
		// AlexKreuz Online Timer


		DelPointX       :array[0..999] of cardinal;  // mf
		DelPointY       :array[0..999] of cardinal;  // mf
		DelID           :array[0..999] of cardinal;  // mf
		DelWait         :array[0..999] of cardinal;  // mf

	end;



var
	frmMain       :TfrmMain;

	Priority      :cardinal;
	TickCheckCnt  :byte;

//ChrstphrR 2004/06/01 - if I find out who the SOB is that made THESE global
// variables I'll run them through.
//	i             :integer;
//	j             :integer;
	w             :word;
	TickCheck     :array[0..9] of cardinal;
	dmg           :array[0..7] of integer;

	//Skill variables

	spbonus       :integer;
	//Icon
	TrayIcon      : TNotifyIconData;



implementation

{$R *.dfm}
     uses
	Skills,wininet,UrlMon;
Function ConnectionKind :boolean;//判断线路连接方式
var flags: dword;
begin 
Result := InternetGetConnectedState(@flags, 0); 
if Result then 
begin 
if (flags and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then 
begin
debugout.lines.add('[' + TimeToStr(Now) + '] ' + '--- 您的上网方式:Modem 连接(需动态域名) ---');
end;
if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then
begin
debugout.lines.add('[' + TimeToStr(Now) + '] ' + '--- 您的上网方式:Lan 连接(可能是内网) ---');
end;
if (flags and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then
begin 
debugout.lines.add('[' + TimeToStr(Now) + '] ' + '--- 您的上网方式:PROXY 连接(不能做私服) ---');
end;
if (flags and INTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSY then

⌨️ 快捷键说明

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