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

📄 main.~pas

📁 RO模拟器!!适合玩仙境传说的玩家们呦~
💻 ~PAS
📖 第 1 页 / 共 5 页
字号:
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 + -