📄 localdb.pas
字号:
//加载地图连接点
for I := 0 to LoadList.Count - 1 do begin
s30 := LoadList.Strings[I];
if (s30 <> '') and (s30[1] <> '[') and (s30[1] <> ';') then begin
s30 := GetValidStr3(s30, s34, [' ', ',', #9]);
sMapName := s34;
s30 := GetValidStr3(s30, s34, [' ', ',', #9]);
n14 := Str_ToInt(s34, 0);
s30 := GetValidStr3(s30, s34, [' ', ',', #9]);
n18 := Str_ToInt(s34, 0);
s30 := GetValidStr3(s30, s34, [' ', ',', '-', '>', #9]);
s44 := s34;
s30 := GetValidStr3(s30, s34, [' ', ',', #9]);
n1C := Str_ToInt(s34, 0);
s30 := GetValidStr3(s30, s34, [' ', ',', ';', #9]);
n20 := Str_ToInt(s34, 0);
g_MapManager.AddMapRoute(sMapName, n14, n18, s44, n1C, n20);
//sSMapNO,nSMapX,nSMapY,sDMapNO,nDMapX,nDMapY
end;
end;
LoadList.Free;
end;
end;
procedure TFrmDB.QFunctionNPC;
var
sScriptFile: string;
sScritpDir: string;
SaveList: TStringList;
sShowFile: string;
begin
try
sScriptFile := g_Config.sEnvirDir + sMarket_Def + 'QFunction-0.txt';
sShowFile := ReplaceChar(sScriptFile, '\', '/');
sScritpDir := g_Config.sEnvirDir + sMarket_Def;
if not DirectoryExists(sScritpDir) then
MkDir(PChar(sScritpDir));
if not FileExists(sScriptFile) then begin
SaveList := TStringList.Create;
SaveList.Add(';此脚为功能脚本,用于实现各种与脚本有关的功能');
SaveList.SaveToFile(sScriptFile);
SaveList.Free;
end;
if FileExists(sScriptFile) then begin
g_FunctionNPC := TMerchant.Create;
g_FunctionNPC.m_sMapName := '0';
g_FunctionNPC.m_nCurrX := 0;
g_FunctionNPC.m_nCurrY := 0;
g_FunctionNPC.m_sCharName := 'QFunction';
g_FunctionNPC.m_nFlag := 0;
g_FunctionNPC.m_wAppr := 0;
g_FunctionNPC.m_sFilePath := sMarket_Def;
g_FunctionNPC.m_sScript := 'QFunction';
g_FunctionNPC.m_boIsHide := True;
g_FunctionNPC.m_boIsQuest := False;
UserEngine.AddMerchant(g_FunctionNPC);
end else begin
g_FunctionNPC := nil;
end;
except
g_FunctionNPC := nil;
end;
end;
procedure TFrmDB.QMangeNPC();
var
sScriptFile: string;
sScritpDir: string;
SaveList: TStringList;
sShowFile: string;
begin
try
sScriptFile := g_Config.sEnvirDir + 'MapQuest_def\' + 'QManage.txt';
sShowFile := ReplaceChar(sScriptFile, '\', '/');
sScritpDir := g_Config.sEnvirDir + 'MapQuest_def\';
if not DirectoryExists(sScritpDir) then
MkDir(PChar(sScritpDir));
if not FileExists(sScriptFile) then begin
SaveList := TStringList.Create;
SaveList.Add(';此脚为登录脚本,人物每次登录时都会执行此脚本,所有人物初始设置都可以放在此脚本中。');
SaveList.Add(';修改脚本内容,可用@ReloadManage命令重新加载该脚本,不须重启程序。');
SaveList.Add('[@Login]');
SaveList.Add('#if');
SaveList.Add('#act');
// tSaveList.Add(';设置10倍杀怪经验');
// tSaveList.Add(';CANGETEXP 1 10');
SaveList.Add('#say');
SaveList.Add('飞尔世界登录脚本运行成功,欢迎进入本游戏!!!\ \');
SaveList.Add('<关闭/@exit> \ \');
SaveList.Add('登录脚本文件位于: \');
SaveList.Add(sShowFile + '\');
SaveList.Add('脚本内容请自行按自己的要求修改。');
SaveList.SaveToFile(sScriptFile);
SaveList.Free;
end;
if FileExists(sScriptFile) then begin
g_ManageNPC := TMerchant.Create;
g_ManageNPC.m_sMapName := '0';
g_ManageNPC.m_nCurrX := 0;
g_ManageNPC.m_nCurrY := 0;
g_ManageNPC.m_sCharName := 'QManage';
g_ManageNPC.m_nFlag := 0;
g_ManageNPC.m_wAppr := 0;
g_ManageNPC.m_sFilePath := 'MapQuest_def\';
g_ManageNPC.m_boIsHide := True;
g_ManageNPC.m_boIsQuest := False;
UserEngine.QuestNPCList.Add(g_ManageNPC);
end else begin
g_ManageNPC := nil;
end;
except
g_ManageNPC := nil;
end;
end;
procedure TFrmDB.RobotNPC();
var
sScriptFile: string;
sScritpDir: string;
tSaveList: TStringList;
begin
try
sScriptFile := g_Config.sEnvirDir + 'Robot_def\' + 'RobotManage.txt';
sScritpDir := g_Config.sEnvirDir + 'Robot_def\';
if not DirectoryExists(sScritpDir) then
MkDir(PChar(sScritpDir));
if not FileExists(sScriptFile) then begin
tSaveList := TStringList.Create;
tSaveList.Add(';此脚为机器人专用脚本,用于机器人处理功能用的脚本。');
tSaveList.SaveToFile(sScriptFile);
tSaveList.Free;
end;
if FileExists(sScriptFile) then begin
g_RobotNPC := TMerchant.Create;
g_RobotNPC.m_sMapName := '0';
g_RobotNPC.m_nCurrX := 0;
g_RobotNPC.m_nCurrY := 0;
g_RobotNPC.m_sCharName := 'RobotManage';
g_RobotNPC.m_nFlag := 0;
g_RobotNPC.m_wAppr := 0;
g_RobotNPC.m_sFilePath := 'Robot_def\';
g_RobotNPC.m_boIsHide := True;
g_RobotNPC.m_boIsQuest := False;
UserEngine.QuestNPCList.Add(g_RobotNPC);
end else begin
g_RobotNPC := nil;
end;
except
g_RobotNPC := nil;
end;
end;
function TFrmDB.LoadMapEvent(): Integer;
var
sFileName, tStr: string;
tMapEventList: TStringList;
I: Integer;
s18, s1C, s20, s24, s28, s2C, s30, s34, s36, s38, s40, s42, s44, s46, sRange: string;
MapEvent: pTMapEvent;
Map: TEnvirnoment;
begin
Result := 1;
sFileName := g_Config.sEnvirDir + 'MapEvent.txt';
if FileExists(sFileName) then begin
tMapEventList := TStringList.Create;
tMapEventList.LoadFromFile(sFileName);
for I := 0 to tMapEventList.Count - 1 do begin
tStr := tMapEventList.Strings[I];
if (tStr <> '') and (tStr[1] <> ';') then begin
tStr := GetValidStr3(tStr, s18, [' ', #9]);
tStr := GetValidStr3(tStr, s1C, [' ', #9]);
tStr := GetValidStr3(tStr, s20, [' ', #9]);
tStr := GetValidStr3(tStr, sRange, [' ', #9]);
tStr := GetValidStr3(tStr, s24, [' ', #9]);
tStr := GetValidStr3(tStr, s28, [' ', #9]);
tStr := GetValidStr3(tStr, s2C, [' ', #9]);
tStr := GetValidStr3(tStr, s30, [' ', #9]);
if (s18 <> '') and (s1C <> '') and (s20 <> '') and (s30 <> '') then begin
Map := g_MapManager.FindMap(s18);
if Map <> nil then begin
New(MapEvent);
FillChar(MapEvent.m_MapFlag, SizeOf(TQuestUnitStatus), 0);
FillChar(MapEvent.m_Condition, SizeOf(TMapCondition), #0);
FillChar(MapEvent.m_StartScript, SizeOf(TStartScript), #0);
MapEvent.m_sMapName := Trim(s18);
MapEvent.m_nCurrX := Str_ToInt(s1C, 0);
MapEvent.m_nCurrY := Str_ToInt(s20, 0);
MapEvent.m_nRange := Str_ToInt(sRange, 0);
s24 := GetValidStr3(s24, s34, [':', #9]);
s24 := GetValidStr3(s24, s36, [':', #9]);
MapEvent.m_MapFlag.nQuestUnit := Str_ToInt(s34, 0);
if Str_ToInt(s36, 0) <> 0 then MapEvent.m_MapFlag.boOpen := True
else MapEvent.m_MapFlag.boOpen := False;
s28 := GetValidStr3(s28, s38, [':', #9]);
s28 := GetValidStr3(s28, s40, [':', #9]);
s28 := GetValidStr3(s28, s42, [':', #9]);
MapEvent.m_Condition.nHumStatus := Str_ToInt(s38, 0);
MapEvent.m_Condition.sItemName := Trim(s40);
if Str_ToInt(s42, 0) <> 0 then MapEvent.m_Condition.boNeedGroup := True
else MapEvent.m_Condition.boNeedGroup := False;
MapEvent.m_nRandomCount := Str_ToInt(s2C, 999999);
s30 := GetValidStr3(s30, s44, [':', #9]);
s30 := GetValidStr3(s30, s46, [':', #9]);
MapEvent.m_StartScript.nLable := Str_ToInt(s44, 0);
MapEvent.m_StartScript.sLable := Trim(s46);
case MapEvent.m_Condition.nHumStatus of
1: g_MapEventListOfDropItem.Add(MapEvent);
2: g_MapEventListOfPickUpItem.Add(MapEvent);
3: g_MapEventListOfMine.Add(MapEvent);
4: g_MapEventListOfWalk.Add(MapEvent);
5: g_MapEventListOfRun.Add(MapEvent);
else begin
Dispose(MapEvent);
end;
end;
end else Result := -I;
end;
end;
end;
end;
end;
function TFrmDB.LoadMapQuest(): Integer;
var
sFileName, tStr: string;
tMapQuestList: TStringList;
I: Integer;
s18, s1C, s20, s24, s28, s2C, s30, s34: string;
n38, n3C: Integer;
boGrouped: Boolean;
Map: TEnvirnoment;
begin
Result := 1;
sFileName := g_Config.sEnvirDir + 'MapQuest.txt';
if FileExists(sFileName) then begin
tMapQuestList := TStringList.Create;
tMapQuestList.LoadFromFile(sFileName);
for I := 0 to tMapQuestList.Count - 1 do begin
tStr := tMapQuestList.Strings[I];
if (tStr <> '') and (tStr[1] <> ';') then begin
tStr := GetValidStr3(tStr, s18, [' ', #9]);
tStr := GetValidStr3(tStr, s1C, [' ', #9]);
tStr := GetValidStr3(tStr, s20, [' ', #9]);
tStr := GetValidStr3(tStr, s24, [' ', #9]);
if (s24 <> '') and (s24[1] = '"') then
ArrestStringEx(s24, '"', '"', s24);
tStr := GetValidStr3(tStr, s28, [' ', #9]);
if (s28 <> '') and (s28[1] = '"') then
ArrestStringEx(s28, '"', '"', s28);
tStr := GetValidStr3(tStr, s2C, [' ', #9]);
tStr := GetValidStr3(tStr, s30, [' ', #9]);
if (s18 <> '') and (s24 <> '') and (s2C <> '') then begin
Map := g_MapManager.FindMap(s18);
if Map <> nil then begin
ArrestStringEx(s1C, '[', ']', s34);
n38 := Str_ToInt(s34, 0);
n3C := Str_ToInt(s20, 0);
if CompareLStr(s30, 'GROUP', Length('GROUP')) then boGrouped := True
else boGrouped := False;
if not Map.CreateQuest(n38, n3C, s24, s28, s2C, boGrouped) then Result := -I;
//nFlag,boFlag,Monster,Item,Quest,boGrouped
end else Result := -I;
end else Result := -I;
end;
end;
tMapQuestList.Free;
end;
QMangeNPC();
QFunctionNPC();
RobotNPC();
end;
function TFrmDB.LoadMerchant(): Integer;
var
sFileName, sLineText, sScript, sMapName, sX, sY, sName, sFlag, sAppr, sIsCalste, sCanMove, sMoveTime, sAutoChangeColor, sAutoChangeColorTime: string;
tMerchantList: TStringList;
tMerchantNPC: TMerchant;
I: Integer;
begin
sFileName := g_Config.sEnvirDir + 'Merchant.txt';
if FileExists(sFileName) then begin
tMerchantList := TStringList.Create;
tMerchantList.LoadFromFile(sFileName);
for I := 0 to tMerchantList.Count - 1 do begin
sLineText := Trim(tMerchantList.Strings[I]);
if (sLineText <> '') and (sLineText[1] <> ';') then begin
sLineText := GetValidStr3(sLineText, sScript, [' ', #9]);
sLineText := GetValidStr3(sLineText, sMapName, [' ', #9]);
sLineText := GetValidStr3(sLineText, sX, [' ', #9]);
sLineText := GetValidStr3(sLineText, sY, [' ', #9]);
sLineText := GetValidStr3(sLineText, sName, [' ', #9]);
if (sName <> '') and (sName[1] = '"') then
ArrestStringEx(sName, '"', '"', sName);
sLineText := GetValidStr3(sLineText, sFlag, [' ', #9]);
sLineText := GetValidStr3(sLineText, sAppr, [' ', #9]);
sLineText := GetValidStr3(sLineText, sIsCalste, [' ', #9]);
sLineText := GetValidStr3(sLineText, sCanMove, [' ', #9]);
sLineText := GetValidStr3(sLineText, sMoveTime, [' ', #9]);
sLineText := GetValidStr3(sLineText, sAutoChangeColor, [' ', #9]);
sLineText := GetValidStr3(sLineText, sAutoChangeColorTime, [' ', #9]);
if (sScript <> '') and (sMapName <> '') and (sAppr <> '') then begin
tMerchantNPC := TMerchant.Create;
tMerchantNPC.m_sScript := sScript;
tMerchantNPC.m_sMapName := sMapName;
tMerchantNPC.m_nCurrX := Str_ToInt(sX, 0);
tMerchantNPC.m_nCurrY := Str_ToInt(sY, 0);
tMerchantNPC.m_sCharName := sName;
tMerchantNPC.m_nFlag := Str_ToInt(sFlag, 0);
tMerchantNPC.m_wAppr := Str_ToInt(sAppr, 0);
tMerchantNPC.m_dwMoveTime := Str_ToInt(sMoveTime, 0);
tMerchantNPC.m_dwNpcAutoChangeColorTime := Str_ToInt(sAutoChangeColorTime, 0) * 1000;
if Str_ToInt(sIsCalste, 0) <> 0 then
tMerchantNPC.m_boCastle := True;
if (Str_ToInt(sCanMove, 0) <> 0) and (tMerchantNPC.m_dwMoveTime > 0) then
tMerchantNPC.m_boCanMove := True;
if Str_ToInt(sAutoChangeColor, 0) <> 0 then
tMerchantNPC.m_boNpcAutoChangeColor := True;
UserEngine.AddMerchant(tMerchantNPC);
end;
end;
end;
tMerchantList.Free;
end;
Result := 1;
end;
function TFrmDB.LoadMinMap: Integer;
var
sFileName, tStr, sMapNO, sMapIdx: string;
tMapList: TStringList;
I, nIdx: Integer;
begin
Result := 0;
sFileName := g_Config.sEnvirDir + 'MiniMap.txt';
if FileExists(sFileName) then begin
MiniMapList.Clear;
tMapList := TStringList.Create;
tMapList.LoadFromFile(sFileName);
for I := 0 to tMapList.Count - 1 do begin
tStr := tMapList.Strings[I];
if (tStr <> '') and (tStr[1] <> ';') then begin
tStr := GetValidStr3(tStr, sMapNO, [' ', #9]);
tStr := GetValidStr3(tStr, sMapIdx, [' ', #9]);
nIdx := Str_ToInt(sMapIdx, 0);
if nIdx > 0 then
MiniMapList.AddObject(sMapNO, TObject(nIdx));
end;
end;
tMapList.Free;
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -