📄 main.~pas
字号:
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 + -