📄 main.~pas
字号:
begin
debugout.lines.add('[' + TimeToStr(Now) + '] ' + '--- 您的上网方式:Modem 连接(你的线路忙) ---');
end;
end;
end;
procedure TfrmMain.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
if UseSQL then
SQLDataSave()
else
DataSave();
end;
function DownloadFile(Source, Dest: string): Boolean;
begin
try
Result := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0;
except
Result := False;
end;
end;
procedure URLink(URL:PChar);
begin
ShellExecute(0, nil, URL, nil, nil, SW_NORMAL);
end;
function getipaddres:string; //取本机IP地址
var
ip:string;
ipstr:string;
ch:array[1..63] of char;
i:integer;
wsdata:twsadata;
myhost:phostent;
txt :textfile;
txt1:string;
begin
AssignFile(txt, AppPath + 'ip.txt');
Reset(txt);
Readln(txt,txt1);
closefile(txt);
ip:='';
ipstr:='0.0.0.0';
wsastartup(2,wsdata);
//获取IP模块
//gethostname(@ch[1],63);
//myhost:=gethostbyname(@ch[1]);
myhost:=gethostbyname(pchar(txt1));
if myhost<>nil then
begin
ipstr:='';
for i:=1 to 4 do
begin
ip:=inttostr(ord(myhost.h_addr^[i-1]));
ipstr:=ipstr+ip;
if i< 4 then ipstr:=ipstr+'.';
end;
end;
getipaddres:=ipstr;
end;
procedure memory(); //内存整理语句
var
trt : textfile;
begin
Try
AssignFile(trt, 'c:\memory.vbs');
Rewrite(trt);
Writeln(trt, 'Mystring = Space(628000)');
closefile(trt);
//内存整理语句
urlink('Wscript.exe c:\memory.vbs');
DeleteFile('c:\memory.vbs');
except
exit;
end;
end;
//==============================================================================
procedure TfrmMain.FormCreate(Sender: TObject);
var
sl :TStringList;
sl1 :TStringList;
ini :TIniFile;
PriorityClass :cardinal;
a : integer;
b : integer;
c : integer;
trt : textfile;
begin
AppPath := ExtractFilePath(ParamStr(0));
//内存整理语句
memory();
//Alex' new GM command initialization
load_commands();
Randomize;
timeBeginPeriod(1);
timeEndPeriod(1);
SetLength(TrueBoolStrs, 4);
TrueBoolStrs[0] := '1';
TrueBoolStrs[1] := '-1';
TrueBoolStrs[2] := 'true';
TrueBoolStrs[3] := 'True';
SetLength(FalseBoolStrs, 3);
FalseBoolStrs[0] := '0';
FalseBoolStrs[1] := 'false';
FalseBoolStrs[2] := 'False';
//NowAccountID := 0;
NowUsers := 0;
NowLoginID := 0;
NowItemID := 10000;
NowMobID := 1000000;
NowCharaID := 0;
NowNPCID := 50000;
NowPetID := 0;
DebugOut := txtDebug;
Caption := 'Nweiss Pro V'+ RELEASE_VERSION; //ExtractFileName(ChangeFileExt(ParamStr(0), ''));
ScriptList := TStringList.Create;
ItemDB := TIntList32.Create;
ItemDB.Sorted := true;
ItemDBName := TStringList.Create;
ItemDBName.CaseSensitive := True;
MaterialDB := TIntList32.Create;
MaterialDB.Sorted := true;
MobDB := TIntList32.Create;
MobDB.Sorted := true;
MobAIDB := TIntList32.Create;
MobAIDB.Sorted := true;
//MobAIDBAegis:= TStringList.Create;
//MobAIDBAegis.CaseSensitive := False;
MobAIDBFusion := TIntList32.Create;
MobAIDBFusion.Sorted := true;
GlobalVars := TStringList.Create;
// PharmacyDB := TIntList32.Create;
// PharmacyDB.Sorted := true;
MobDBName := TStringList.Create;
MobDBName.CaseSensitive := True;
SlaveDBName := TStringList.Create;
SlaveDBName.CaseSensitive := True;
{Arrow Creation Database}
MArrowDB := TIntList32.Create;
MArrowDB.Sorted := true;
WarpDatabase := TStringList.Create;
IDTableDB := TIntList32.Create;
IDTableDB.Sorted := true;
SkillDB := TIntList32.Create;
SkillDBName := TStringList.Create;
PlayerName := TStringList.Create;
PlayerName.CaseSensitive := True;
Player := TIntList32.Create;
CharaName := TStringList.Create;
CharaName.CaseSensitive := True;
Chara := TIntList32.Create;
CharaPID := TIntList32.Create;
PartyNameList := TStringList.Create;
PartyNameList.CaseSensitive := True;
CastleList := TStringList.Create;
CastleList.CaseSensitive := True;
TerritoryList := TStringList.Create;
TerritoryList.CaseSensitive := True;
EmpList := TStringList.Create;
EmpList.CaseSensitive := True;
ChatRoomList := TIntList32.Create;
VenderList := TIntList32.Create;
DealingList := TIntList32.Create;
PetDB := TIntList32.Create;
PetList := TIntList32.Create;
{Chrstphr 2004/04/19 -- this list is now created/loaded in the
DataLoad proc in the Database.pas module }
//SummonMobList := TIntList32.Create;
SummonMobListMVP := TStringList.Create;
SummonIOBList := TStringList.Create;//Changed for lower memory/ease of use
SummonIOVList := TStringList.Create;//Ditto
SummonICAList := TStringList.Create;//
SummonIGBList := TStringList.Create;//
SummonIOWBList := TStringList.Create;//
ServerFlag := TStringList.Create;
MapInfo := TStringList.Create;
GuildList := TIntList32.Create;
GSkillDB := TIntList32.Create;
Map := TStringList.Create;
MapList := TStringList.Create;
sl := TStringList.Create;
sl.QuoteChar := '"';
sl.Delimiter := ',';
ini := TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
sl.Clear;
ini.ReadSectionValues('Server', sl);
sl1 := TStringList.Create;
sl1.Delimiter := '.';
sl1.DelimitedText := sl.Values['IP'];
if sl1.Count = 4 then begin
ServerIP := cardinal(inet_addr(PChar(sl.Values['IP'])));
end else begin
ServerIP := cardinal(inet_addr('127.0.0.1'));
//ServerIP := $0100007f;
end;
if sl.IndexOfName('AutoIP') > -1 then begin
AutoIP := StrToBool(sl.Values['AutoIP']);
end else begin
AutoIP := False;
end;
//动态域名解析判断
if autoip= true then begin
ServerIP := cardinal(inet_addr(PChar(getipaddres)));
label17.Caption := 'IP地址:[动态IP]';
edit17.Enabled:=False;
Edit5.Enabled := True;
end;
if autoip=False then begin
label17.Caption := 'IP地址:';
edit17.Enabled := True;
Edit5.Enabled := False;
end;
//动态域名解析判断结束
if sl.IndexOfName('Name') > -1 then begin
ServerName := sl.Values['Name'];
end else begin
ServerName := 'Nweiss Pro V'+ RELEASE_VERSION;
end;
if sl.IndexOfName('NPCID') > -1 then begin
DefaultNPCID := StrToInt(sl.Values['NPCID']);
end else begin
DefaultNPCID := 50000;
end;
NowNPCID := DefaultNPCID;
if sl.IndexOfName('sv1port') > -1 then begin
sv1port := StrToInt(sl.Values['sv1port']);
end else begin
sv1port := 6900;
end;
sv1.Port := sv1port;
if sl.IndexOfName('sv2port') > -1 then begin
sv2port := StrToInt(sl.Values['sv2port']);
end else begin
sv2port := 6121;
end;
sv2.Port := sv2port;
if sl.IndexOfName('sv3port') > -1 then begin
sv3port := StrToInt(sl.Values['sv3port']);
end else begin
sv3port := 5121;
end;
sv3.Port := sv3port;
if sl.IndexOfName('WarpDebug') > -1 then begin
WarpDebugFlag := StrToBool(sl.Values['WarpDebug']);
end else begin
WarpDebugFlag := false;
end;
if sl.IndexOfName('BaseExpMultiplier') > -1 then begin
BaseExpMultiplier := StrToInt(sl.Values['BaseExpMultiplier']);
{if (BaseExpMultiplier > 999) then begin
BaseExpMultiplier := 999;
end;}
end else begin
BaseExpMultiplier := 1;
end;
if sl.IndexOfName('JobExpMultiplier') > -1 then begin
JobExpMultiplier := StrToInt(sl.Values['JobExpMultiplier']);
{if (JobExpMultiplier > 999) then begin
JobExpMultiplier := 999;
end;}
end else begin
JobExpMultiplier := 1;
end;
if sl.IndexOfName('DisableMonsterActive') > -1 then begin
DisableMonsterActive := StrToBool(sl.Values['DisableMonsterActive']);
end else begin
DisableMonsterActive := false;
end;
if sl.IndexOfName('PassMD5') > -1 then begin
PassMD5 := StrToBool(sl.Values['PassMD5']);
end else begin
PassMD5 := false;
end;
if sl.IndexOfName('AutoStart') > -1 then begin
AutoStart := StrToBool(sl.Values['AutoStart']);
end else begin
AutoStart := true;
end;
if sl.IndexOfName('DisableLevelLimit') > -1 then begin
DisableLevelLimit := StrToBool(sl.Values['DisableLevelLimit']);
end else begin
DisableLevelLimit := false;
end;
if sl.IndexOfName('EnableMonsterKnockBack') > -1 then begin
EnableMonsterKnockBack := StrToBool(sl.Values['EnableMonsterKnockBack']);
end else begin
EnableMonsterKnockBack := false;
end;
if sl.IndexOfName('DisableEquipLimit') > -1 then begin
DisableEquipLimit := StrToBool(sl.Values['DisableEquipLimit']);
end else begin
DisableEquipLimit := false;
end;
if sl.IndexOfName('ItemDropType') > -1 then begin
ItemDropType := StrToBool(sl.Values['ItemDropType']);
end else begin
ItemDropType := false;
end;
if sl.IndexOfName('ItemDropDenominator') > -1 then begin
ItemDropDenominator := StrToInt(sl.Values['ItemDropDenominator']);
end else begin
ItemDropDenominator := 10000;
end;
if sl.IndexOfName('ItemDropPer') > -1 then begin
ItemDropPer := StrToInt(sl.Values['ItemDropPer']);
end else begin
ItemDropPer := 10000;
end;
{Colus, 20031222: ItemDropMultiplier works like this:
Default value is 1.
Making it higher than 1 will make IDD = 10000/IDM (which is a xIDM drop rate)
Maximum value is 10000. Higher values become 10K. (10000x drops? Ugh...)
Values of 0 or less default to 1.
* The checking is done here so that we don't repeat it for every single drop.
* You currently can play with IDD and IDP independently. They do the same
thing...I would rather see people use one or the other, but it's their
call.
}
if sl.IndexOfName('ItemDropMultiplier') > -1 then begin
ItemDropMultiplier := StrToInt(sl.Values['ItemDropMultiplier']);
if ItemDropMultiplier <= 1 then begin
ItemDropMultiplier := 1;
end else if ItemDropMultiplier > 10000 then begin
ItemDropMultiplier := 10000;
end;
end else begin
ItemDropMultiplier := 1;
end;
if sl.IndexOfName('StealMultiplier') > -1 then begin
StealMultiplier := StrToInt(sl.Values['StealMultiplier']);
if StealMultiplier <= 0 then begin
StealMultiplier := 0;
end else if StealMultiplier > 10000 then begin
StealMultiplier := 10000;
end;
end else begin
StealMultiplier := 100;
end;
if sl.IndexOfName('EnablePetSkills') > -1 then begin
EnablePetSkills := StrToBool(sl.Values['EnablePetSkills']);
end else begin
EnablePetSkills := true;
end;
if sl.IndexOfName('EnableMonsterSkills') > -1 then begin
EnableMonsterSkills := StrToBool(sl.Values['EnableMonsterSkills']);
end else begin
EnableMonsterSkills := true;
end;
if sl.IndexOfName('EnableLowerClassDyes') > -1 then begin
EnableLowerClassDyes := StrToBool(sl.Values['EnableLowerClassDyes']);
end else begin
EnableLowerClassDyes := false;
end;
if sl.IndexOfName('DisableFleeDown') > -1 then begin
DisableFleeDown := StrToBool(sl.Values['DisableFleeDown']);
end else begin
DisableFleeDown := false;
end;
if sl.IndexOfName('DisableSkillLimit') > -1 then begin
DisableSkillLimit := StrToBool(sl.Values['DisableSkillLimit']);
end else begin
DisableSkillLimit := false;
end;
{U0x008a_fix}
if sl.IndexOfName('DefaultZeny') > -1 then begin
DefaultZeny := StrToInt(sl.Values['DefaultZeny']);
end else begin
DefaultZeny := 3000;
end;
if sl.IndexOfName('DefaultMap') > -1 then begin
DefaultMap := sl.Values['DefaultMap'];
end else begin
DefaultMap := 'new_zone01';
end;
if sl.IndexOfName('DefaultPoint_X') > -1 then begin
DefaultPoint_X := StrToInt(sl.Values['DefaultPoint_X']);
end else begin
DefaultPoint_X := 50;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -