📄 localdb.~pas
字号:
QuestNPC.m_boIsQuest:=False;
UserEngine.QuestNPCList.Add(QuestNPC);
Result:=QuestNPC;
end;
procedure LoadSubMapInfo(LoadList:TStringList;sFileName:String);
var
I: Integer;
sFilePatchName,sFileDir:String;
LoadMapList:TStringList;
begin
sFileDir:=g_Config.sEnvirDir + 'MapInfo\';
if not DirectoryExists(sFileDir) then begin
CreateDir(sFileDir);
end;
sFilePatchName:=sFileDir + sFileName;
if FileExists(sFilePatchName) then begin
LoadMapList:=TStringList.Create;
LoadMapList.LoadFromFile(sFilePatchName);
for I := 0 to LoadMapList.Count - 1 do begin
LoadList.Add(LoadMapList.Strings[I]);
end;
LoadMapList.Free;
end;
end;
var
sFileName:String;
LoadList:TStringList;
i:Integer;
s30,s34,s38,sMapName,s44,sMapDesc,s4C,sReConnectMap:String;
n14,n18,n1C,n20:Integer;
nServerIndex:Integer;
mirrorname:string;
MapFlag:TMapFlag;
QuestNPC:TMerchant;
sMapInfoFile:String;
SweatherEffect:String;
Smapfunction :string;
stype,sgotolabel:string;
begin
Result:= -1;
sFileName:=g_Config.sEnvirDir + 'MapInfo.txt';
if FileExists(sFileName) then begin
LoadList:=TStringList.Create;
LoadList.LoadFromFile(sFileName);
if LoadList.Count < 0 then begin
LoadList.Free;
exit;
end;
I:=0;
while (True) do begin
if I >= LoadList.Count then break;
if CompareLStr('loadmapinfo',LoadList.Strings[I],Length('loadmapinfo')) then begin
sMapInfoFile:=GetValidStr3(LoadList.Strings[I], s30, [' ', #9]);
LoadList.Delete(I);
if sMapInfoFile <> '' then begin
LoadSubMapInfo(LoadList,sMapInfoFile);
end;
end;
Inc(I);
end;
Result:=1;
//加载地图设置
for i:=0 to LoadList.Count -1 do begin
s30:=LoadList.Strings[i];
if (s30 <> '') and (s30[1] = '[') then begin
sMapName:='';
MapFlag.boSAFE:=False;
s30:=ArrestStringEx(s30,'[',']',sMapName);
sMapDesc:=GetValidStrCap(sMapName,sMapName,[' ', ',', #9]);
if (sMapDesc <> '') and (sMapDesc[1] = '"') then
ArrestStringEx(sMapDesc,'"','"',sMapDesc);
s4C:=Trim(GetValidStr3(sMapDesc,sMapDesc,[' ', ',', #9]));
nServerIndex:=Str_ToInt(s4C,0);
if sMapName = '' then Continue;
///////////////////
//地图 和景象地图名称
mirrorname:='';
if pos('>',sMapName) >0 then
sMapName:= ArrestStringEx(sMapName,'<','>',mirrorname);
/////////////////
FillChar(MapFlag,SizeOf(TMapFlag),#0);
MapFlag.nL:=1;
QuestNPC:=nil;
MapFlag.nNEEDSETONFlag:= -1;
MapFlag.nNeedONOFF:= -1;
MapFlag.mirrorname:= mirrorname ;
while (True) do begin
if s30 = '' then break;
s30:=GetValidStr3(s30,s34,[' ', ',', #9]);
// s30:=UpperCase(s30);
if s34 = '' then break;
MapFlag.nMUSICID:=-1;
s34:=UpperCase(s34);
if CompareText(s34,'SAFE') = 0 then begin
MapFlag.boSAFE:=True;
Continue;
end;
if CompareText(s34,'CANHORSE') = 0 then begin
MapFlag.boCANHORSE:=True;
Continue;
end;
if CompareText(s34,'CANUSELF') = 0 then begin
MapFlag.boCanUseLF:=True;
Continue;
end;
if CompareText(s34,'NOYS') = 0 then begin
MapFlag.boNOYS:=True;
Continue;
end;
if CompareText(s34,'NOQB') = 0 then begin
MapFlag.boNOQB:=True;
Continue;
end;
if CompareText(s34,'NOBATFLY') = 0 then begin
MapFlag.boNOBATFLY:=True;
Continue;
end;
if POS('WEATHER',s34) > 0 then begin
s34:= ArrestStringEx(s34,'(',')',SweatherEffect);
MapFlag.m_weatherEffect:=STR_toint(SweatherEffect,0);
Continue;
end;
// m_nQfunction
if POS('MAPFUNC',s34) > 0 then begin
s34:= ArrestStringEx(s34,'(',')',Smapfunction);
MapFlag.m_nQfunction:=STR_toint(Smapfunction,0);
Continue;
end;
// m_skillbyhumlabel:string[20];
// m_skillbymonlabel:string[20];
// m_skillhumlabel:string[20];
// m_skillmonlabel:string[20];
// m_slevelupgotolabel:string[20];
if POS('KILLBYHUM',s34) > 0 then begin
s34:= ArrestStringEx(s34,'(',')',sgotolabel);
MapFlag.m_skillbyhumlabel:=sgotolabel;
Continue;
end;
if POS('KILLBYMON',s34) > 0 then begin
s34:= ArrestStringEx(s34,'(',')',sgotolabel);
MapFlag.m_skillbymonlabel:=sgotolabel;
Continue;
end;
if POS('KILLHUM',s34) > 0 then begin
s34:= ArrestStringEx(s34,'(',')',sgotolabel);
MapFlag.m_skillhumlabel:=sgotolabel;
Continue;
end;
if POS('KILLMON',s34) > 0 then begin
s34:= ArrestStringEx(s34,'(',')',sgotolabel);
MapFlag.m_skillmonlabel:=sgotolabel;
Continue;
end;
if POS('LEVELUP',s34) > 0 then begin
s34:= ArrestStringEx(s34,'(',')',sgotolabel);
MapFlag.m_slevelupgotolabel:=sgotolabel;
Continue;
end;
if CompareText(s34,'DARK') = 0 then begin
MapFlag.boDARK:=True;
Continue;
end;
if CompareText(s34,'FIGHT') = 0 then begin
MapFlag.boFIGHT:=True;
Continue;
end;
if CompareText(s34,'FIGHT3') = 0 then begin
MapFlag.boFIGHT3:=True;
Continue;
end;
if CompareText(s34,'DAY') = 0 then begin
MapFlag.boDAY:=True;
Continue;
end;
if CompareText(s34,'QUIZ') = 0 then begin
MapFlag.boQUIZ:=True;
Continue;
end;
if CompareLStr(s34,'NORECONNECT',length('NORECONNECT')) then begin
MapFlag.boNORECONNECT:=True;
ArrestStringEx(s34,'(',')',sReConnectMap);
MapFlag.sReConnectMap:=sReConnectMap;
if MapFlag.sReConnectMap = '' then Result:= -11;
Continue;
end;
if CompareLStr(s34,'CHECKQUEST',length('CHECKQUEST')) then begin
ArrestStringEx(s34,'(',')',s38);
QuestNPC:=LoadMapQuest(s38);
Continue;
end;
if CompareLStr(s34,'NEEDSET_ON',length('NEEDSET_ON')) then begin
MapFlag.nNeedONOFF:=1;
ArrestStringEx(s34,'(',')',s38);
MapFlag.nNEEDSETONFlag:=Str_ToInt(s38,-1);
Continue;
end;
if CompareLStr(s34,'NEEDSET_OFF',length('NEEDSET_OFF')) then begin
MapFlag.nNeedONOFF:=0;
ArrestStringEx(s34,'(',')',s38);
MapFlag.nNEEDSETONFlag:=Str_ToInt(s38,-1);
Continue;
end;
if CompareLStr(s34,'MUSIC',length('MUSIC')) then begin
MapFlag.boMUSIC:=True;
ArrestStringEx(s34,'(',')',s38);
MapFlag.nMUSICID:=Str_ToInt(s38,-1);
Continue;
end;
if CompareLStr(s34,'EXPRATE',length('EXPRATE')) then begin
MapFlag.boEXPRATE:=True;
ArrestStringEx(s34,'(',')',s38);
MapFlag.nEXPRATE:=Str_ToInt(s38,-1);
Continue;
end;
if CompareLStr(s34,'PKWINLEVEL',length('PKWINLEVEL')) then begin
MapFlag.boPKWINLEVEL:=True;
ArrestStringEx(s34,'(',')',s38);
MapFlag.nPKWINLEVEL:=Str_ToInt(s38,-1);
Continue;
end;
if CompareLStr(s34,'PKWINEXP',length('PKWINEXP')) then begin
MapFlag.boPKWINEXP:=True;
ArrestStringEx(s34,'(',')',s38);
MapFlag.nPKWINEXP:=Str_ToInt(s38,-1);
Continue;
end;
if CompareLStr(s34,'PKLOSTLEVEL',length('PKLOSTLEVEL')) then begin
MapFlag.boPKLOSTLEVEL:=True;
ArrestStringEx(s34,'(',')',s38);
MapFlag.nPKLOSTLEVEL:=Str_ToInt(s38,-1);
Continue;
end;
if CompareLStr(s34,'PKLOSTEXP',length('PKLOSTEXP')) then begin
MapFlag.boPKLOSTEXP:=True;
ArrestStringEx(s34,'(',')',s38);
MapFlag.nPKLOSTEXP:=Str_ToInt(s38,-1);
Continue;
end;
if CompareLStr(s34,'DECHP',length('DECHP')) then begin
MapFlag.boDECHP:=True;
ArrestStringEx(s34,'(',')',s38);
MapFlag.nDECHPPOINT:=Str_ToInt(GetValidStr3(s38,s38,['/']),-1);
MapFlag.nDECHPTIME:=Str_ToInt(s38,-1);
Continue;
end;
if CompareLStr(s34,'INCHP',length('INCHP')) then begin
MapFlag.boINCHP:=True;
ArrestStringEx(s34,'(',')',s38);
MapFlag.nINCHPPOINT:=Str_ToInt(GetValidStr3(s38,s38,['/']),-1);
MapFlag.nINCHPTIME:=Str_ToInt(s38,-1);
Continue;
end;
if CompareLStr(s34,'DECGAMEGOLD',length('DECGAMEGOLD')) then begin
MapFlag.boDECGAMEGOLD:=True;
ArrestStringEx(s34,'(',')',s38);
MapFlag.nDECGAMEGOLD:=Str_ToInt(GetValidStr3(s38,s38,['/']),-1);
MapFlag.nDECGAMEGOLDTIME:=Str_ToInt(s38,-1);
Continue;
end;
if CompareLStr(s34,'DECGAMEPOINT',length('DECGAMEPOINT')) then begin
MapFlag.boDECGAMEPOINT:=True;
ArrestStringEx(s34,'(',')',s38);
MapFlag.nDECGAMEPOINT:=Str_ToInt(GetValidStr3(s38,s38,['/']),-1);
MapFlag.nDECGAMEPOINTTIME:=Str_ToInt(s38,-1);
Continue;
end;
if CompareLStr(s34,'INCGAMEGOLD',length('INCGAMEGOLD')) then begin
MapFlag.boINCGAMEGOLD:=True;
ArrestStringEx(s34,'(',')',s38);
MapFlag.nINCGAMEGOLD:=Str_ToInt(GetValidStr3(s38,s38,['/']),-1);
MapFlag.nINCGAMEGOLDTIME:=Str_ToInt(s38,-1);
Continue;
end;
if CompareLStr(s34,'INCGAMEPOINT',length('INCGAMEPOINT')) then begin
MapFlag.boINCGAMEPOINT:=True;
ArrestStringEx(s34,'(',')',s38);
MapFlag.nINCGAMEPOINT:=Str_ToInt(GetValidStr3(s38,s38,['/']),-1);
MapFlag.nINCGAMEPOINTTIME:=Str_ToInt(s38,-1);
Continue;
end;
if CompareLStr(s34,'RUNHUMAN',length('RUNHUMAN')) then begin
MapFlag.boRUNHUMAN:= True;
Continue;
end;
if CompareLStr(s34,'RUNMON',length('RUNMON')) then begin
MapFlag.boRUNMON:= True;
Continue;
end;
if CompareLStr(s34,'NEEDHOLE',length('NEEDHOLE')) then begin
MapFlag.boNEEDHOLE := True;
Continue;
end;
if CompareLStr(s34,'NORECALL',length('NORECALL')) then begin
MapFlag.boNORECALL := True;
Continue;
end;
if CompareLStr(s34,'NOGUILDRECALL',length('NOGUILDRECALL')) then begin
MapFlag.boNOGUILDRECALL := True;
Continue;
end;
if CompareLStr(s34,'NODEARRECALL',length('NODEARRECALL')) then begin
MapFlag.boNODEARRECALL := True;
Continue;
end;
if CompareLStr(s34,'NOMASTERRECALL',length('NOMASTERRECALL')) then begin
MapFlag.boNOMASTERRECALL := True;
Continue;
end;
if CompareLStr(s34,'NORANDOMMOVE',length('NORANDOMMOVE')) then begin
MapFlag.boNORANDOMMOVE := True;
Continue;
end;
if CompareLStr(s34,'NODRUG',length('NODRUG')) then begin
MapFlag.boNODRUG := True;
Continue;
end;
if CompareLStr(s34,'MINE',length('MINE')) then begin
MapFlag.boMINE := True;
Continue;
end;
if CompareLStr(s34,'NOPOSITIONMOVE',length('NOPOSITIONMOVE')) then begin
MapFlag.boNOPOSITIONMOVE := True;
Continue;
end;
if CompareLStr(s34, 'FIGHTPK', Length('FIGHTPK')) then begin //PK可以爆装备不红名
MapFlag.boFIGHTPK := True;
Continue;
end;
if CompareLStr(s34, 'NOTALLOWUSEMAGIC', Length('NOTALLOWUSEMAGIC')) then begin //增加不允许使用魔法
MapFlag.boNOTALLOWUSEMAGIC := True;
ArrestStringEx(s34, '(', ')', s38);
MapFlag.sUnAllowMagicText := Trim(s38);
Continue;
end;
if CompareLStr(s34, 'NOALLOWUSEITEMS', Length('NOALLOWUSEITEMS')) then begin //增加不允许使用物品
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -