📄 localdb.pas
字号:
LoadList.LoadFromFile(s14);
for i:=0 to LoadList.Count -1 do begin
s1C:=LoadList.Strings[i];
if (s1C <> '') and (s1C[1] <> ';') then begin
if (s1C[1] = '[') and (length(s1C) > 2) then begin
if s18 = '' then begin
ArrestStringEx(s1C,'[',']',s18);
QDDinfoList:=TList.Create;
New(QDDinfo);
QDDinfo.n00:=nC;
QDDinfo.s04:=s18;
QDDinfo.sList:=TStringList.Create;
QDDinfoList.Add(QDDinfo);
bo2D:=True;
end else begin
if s1C[1] <> '@' then begin
s1C:=GetValidStr3(s1C,s20,[' ',#9]);
ArrestStringEx(s20,'[',']',s20);
New(QDDinfo);
QDDinfo.n00:=Str_ToInt(s20,0);
QDDinfo.s04:=s1C;
QDDinfo.sList:=TStringList.Create;
QDDinfoList.Add(QDDinfo);
bo2D:=True;
end else bo2D:=False;
end;
end else begin //00489AFD
if bo2D then QDDinfo.sList.Add(s1C);
end;
end;//00489B11
end;
LoadList.Free;
end;//00489B25
if QDDinfoList <> nil then QuestDiaryList.Add(QDDinfoList)
else QuestDiaryList.Add(nil);
Inc(nC);
if nC >= 105 then break;
end;
end;
//00488EF0
function TFrmDB.LoadStartPoint(): Integer;
var
i:Integer;
sMap:String;
StartPoint:pTStartPoint;
ResourceString
sSQLString = 'SELECT * FROM TBL_STARTPOINT';
begin
Result:= -1;
EnterCriticalSection(ProcessHumanCriticalSection);
try
Query.SQL.Clear;
Query.SQL.Add(sSQLString);
try
Query.Open;
finally
Result:= -2;
end;
try
g_StartPoint.Lock;
for I := 0 to g_StartPoint.Count - 1 do begin
Dispose(pTStartPoint(g_StartPoint.Items[I]));
end;
g_StartPoint.Clear;
for i:=0 to Query.RecordCount -1 do begin
sMap := Query.FieldByName('FLD_MAPNAME').AsString;
if (sMap <> '') then begin
New(StartPoint);
StartPoint.sMapName := sMap;
StartPoint.nX := Query.FieldByName('FLD_X').AsInteger;
StartPoint.nY := Query.FieldByName('FLD_Y').AsInteger;
StartPoint.Envir := g_MapManager.FindMap(sMap);
StartPoint.btJob := 99;
StartPoint.dwWhisperTick := GetTickCount();
g_StartPoint.Add(StartPoint);
Result:=1;
end;
Query.Next;
end;
finally
g_StartPoint.UnLock;
end;
Query.Close;
finally
LeaveCriticalSection(ProcessHumanCriticalSection);
end;
end;
//00489240
function TFrmDB.LoadUnbindList(): Integer;
var
sFileName,tStr,sData,s20:String;
tUnbind:pTUnbindInfo;
LoadList:TStringList;
i:Integer;
n10:Integer;
begin
Result:=0;
sFileName:=g_Config.sEnvirDir + 'UnbindList.txt';
if FileExists(sFileName) then begin
LoadList:=TStringList.Create;
LoadList.LoadFromFile(sFileName);
for i:=0 to LoadList.Count -1 do begin
tStr:=LoadList.Strings[i];
if (tStr <> '') and (tStr[1] <> ';') then begin
//New(tUnbind);
tStr:=GetValidStr3(tStr, sData, [' ', #9]);
tStr:=GetValidStrCap(tStr, s20, [' ', #9]);
if (s20 <> '') and (s20[1] = '"') then
ArrestStringEx(s20,'"','"',s20);
n10:=Str_ToInt(sData,0);
if n10 > 0 then g_UnbindList.AddObject(s20,TObject(n10))
else begin
Result:=-i; //需要取负数
break;
end;
end;
end;
LoadList.Free;
end;
end;
function TFrmDB.LoadNpcScript(NPC: TNormNpc; sPatch,
sScritpName: String): Integer; //0048C4D8
begin
if sPatch = '' then sPatch:=sNpc_def;
Result:=LoadScriptFile(NPC,sPatch,sScritpName,False);
end;
function TFrmDB.LoadScriptFile(NPC: TNormNpc; sPatch, sScritpName: String;
boFlag: Boolean): Integer; //0048B684
var
nQuestIdx,I,n1C,n20,n24,nItemType,nPriceRate: Integer;
n6C,n70:Integer;
sScritpFileName,s30,s34,s38,s3C,s40,s44,s48,s4C,s50:String;
LoadList:TStringList;
DefineList:TList;
s54,s58,s5C,s74:String;
DefineInfo:pTDefineInfo;
bo8D:Boolean;
Script:pTScript;
SayingRecord:pTSayingRecord;
SayingProcedure:pTSayingProcedure;
QuestConditionInfo:pTQuestConditionInfo;
QuestActionInfo:pTQuestActionInfo;
Goods:pTGoods;
function LoadCallScript(sFileName,sLabel:String;List:TStringList):Boolean; //00489BD4
var
I: Integer;
LoadStrList:TStringList;
bo1D:Boolean;
s18:String;
begin
Result:=False;
if FileExists(sFileName) then begin
LoadStrList:=TStringList.Create;
LoadStrList.LoadFromFile(sFileName);
DeCodeStringList(LoadStrList);
sLabel:='[' + sLabel + ']';
bo1D:=False;
for I := 0 to LoadStrList.Count - 1 do begin
s18:=Trim(LoadStrList.Strings[i]);
if s18 <> '' then begin
if not bo1D then begin
if (s18[1] = '[') and (CompareText(s18,sLabel) = 0) then begin
bo1D:=True;
List.Add(s18);
end;
end else begin //00489CBF
if s18[1] <> '{' then begin
if s18[1] = '}' then begin
bo1D:=False;
Result:=True;
break;
end else begin //00489CD9
List.Add(s18);
end;
end;
end;
end; //00489CE4 if s18 <> '' then begin
end; // for I := 0 to LoadStrList.Count - 1 do begin
LoadStrList.Free;
end;
end;
procedure LoadScriptcall(LoadList:TStringList); //0048B138
var
I: Integer;
s14,s18,s1C,s20,s34:String;
begin
for I := 0 to LoadList.Count - 1 do begin
s14:=Trim(LoadList.Strings[i]);
if (s14 <> '') and (s14[1] = '#') and (CompareLStr(s14,'#CALL',length('#CALL'))) then begin
s14:=ArrestStringEx(s14,'[',']',s1C);
s20:=Trim(s1C);
s18:=Trim(s14);
s34:=g_Config.sEnvirDir + 'QuestDiary\' + s20;
if LoadCallScript(s34,s18,LoadList) then begin
LoadList.Strings[i]:='#ACT';
LoadList.Insert(i + 1,'goto ' + s18);
end else begin
MainOutMessage('script error, load fail: ' + s20 + s18);
end;
end;
end;
end;
function LoadDefineInfo(LoadList:TStringList;List:TList):String; //0048B35C
var
I: Integer;
s14,s28,s1C,s20,s24:String;
DefineInfo:pTDefineInfo;
LoadStrList:TStringList;
begin
for I := 0 to LoadList.Count - 1 do begin
s14:=Trim(LoadList.Strings[i]);
if (s14 <> '') and (s14[1] = '#') then begin
if CompareLStr(s14,'#SETHOME',length('#SETHOME')) then begin
Result:=Trim(GetValidStr3(s14,s1C,[' ',#9]));
LoadList.Strings[i]:='';
end;
if CompareLStr(s14,'#DEFINE',length('#DEFINE')) then begin
s14:=(GetValidStr3(s14,s1C,[' ',#9]));
s14:=(GetValidStr3(s14,s20,[' ',#9]));
s14:=(GetValidStr3(s14,s24,[' ',#9]));
New(DefineInfo);
DefineInfo.sName:=UpperCase(s20);
DefineInfo.sText:=s24;
List.Add(DefineInfo);
LoadList.Strings[i]:='';
end; //0048B505
if CompareLStr(s14,'#INCLUDE',length('#INCLUDE')) then begin
s28:=Trim(GetValidStr3(s14,s1C,[' ',#9]));
s28:=g_Config.sEnvirDir + 'Defines\' + s28;
if FileExists(s28) then begin
LoadStrList:=TStringList.Create;
LoadStrList.LoadFromFile(s28);
Result:=LoadDefineInfo(LoadStrList,List);
LoadStrList.Free;
end else begin
MainOutMessage('script error, load fail: ' + s28);
end;
LoadList.Strings[i]:='';
end;
end;
end;
end;
function MakeNewScript():pTScript; //00489D74
var
ScriptInfo:pTScript;
begin
New(ScriptInfo);
ScriptInfo.boQuest:=False;
FillChar(ScriptInfo.QuestInfo,SizeOf(TQuestInfo),#0);
nQuestIdx:=0;
ScriptInfo.RecordList:=TList.Create;
NPC.m_ScriptList.Add(ScriptInfo);
Result:=ScriptInfo;
end;
function QuestCondition(sText:String;QuestConditionInfo:pTQuestConditionInfo):Boolean; //00489DDC
var
sCmd,sParam1,sParam2,sParam3,sParam4,sParam5,sParam6:String;
nCMDCode:Integer;
Label L001;
begin
Result:=False;
sText:=GetValidStrCap(sText,sCmd,[' ',#9]);
sText:=GetValidStrCap(sText,sParam1,[' ',#9]);
sText:=GetValidStrCap(sText,sParam2,[' ',#9]);
sText:=GetValidStrCap(sText,sParam3,[' ',#9]);
sText:=GetValidStrCap(sText,sParam4,[' ',#9]);
sText:=GetValidStrCap(sText,sParam5,[' ',#9]);
sText:=GetValidStrCap(sText,sParam6,[' ',#9]);
sCmd:=UpperCase(sCmd);
nCMDCode:=0;
if sCmd = sCHECK then begin
nCMDCode:=nCHECK;
ArrestStringEx(sParam1,'[',']',sParam1);
if not IsStringNumber(sParam1) then nCMDCode:=0;
if not IsStringNumber(sParam2) then nCMDCode:=0;
Goto L001;
end;
if sCmd = sCHECKOPEN then begin
nCMDCode:=nCHECKOPEN;
ArrestStringEx(sParam1,'[',']',sParam1);
if not IsStringNumber(sParam1) then nCMDCode:=0;
if not IsStringNumber(sParam2) then nCMDCode:=0;
Goto L001;
end;
if sCmd = sCHECKUNIT then begin
nCMDCode:=nCHECKUNIT;
ArrestStringEx(sParam1,'[',']',sParam1);
if not IsStringNumber(sParam1) then nCMDCode:=0;
if not IsStringNumber(sParam2) then nCMDCode:=0;
Goto L001;
end;
if sCmd = sCHECKPKPOINT then begin
nCMDCode:=nCHECKPKPOINT;
Goto L001;
end;
if sCmd = sCHECKGOLD then begin
nCMDCode:=nCHECKGOLD;
Goto L001;
end;
if sCmd = sCHECKLEVEL then begin
nCMDCode:=nCHECKLEVEL;
Goto L001;
end;
if sCmd = sCHECKJOB then begin
nCMDCode:=nCHECKJOB;
Goto L001;
end;
if sCmd = sRANDOM then begin //00489FB2
nCMDCode:=nRANDOM;
Goto L001;
end;
if sCmd = sCHECKITEM then begin
nCMDCode:=nCHECKITEM;
Goto L001;
end;
if sCmd = sGENDER then begin
nCMDCode:=nGENDER;
Goto L001;
end;
if sCmd = sCHECKBAGGAGE then begin
nCMDCode:=nCHECKBAGGAGE;
Goto L001;
end;
if sCmd = sCHECKNAMELIST then begin
nCMDCode:=nCHECKNAMELIST;
Goto L001;
end;
if sCmd = sSC_HASGUILD then begin
nCMDCode:=nSC_HASGUILD;
Goto L001;
end;
if sCmd = sSC_ISGUILDMASTER then begin
nCMDCode:=nSC_ISGUILDMASTER;
Goto L001;
end;
if sCmd = sSC_CHECKCASTLEMASTER then begin
nCMDCode:=nSC_CHECKCASTLEMASTER;
Goto L001;
end;
if sCmd = sSC_ISNEWHUMAN then begin
nCMDCode:=nSC_ISNEWHUMAN;
Goto L001;
end;
if sCmd = sSC_CHECKMEMBERTYPE then begin
nCMDCode:=nSC_CHECKMEMBERTYPE;
Goto L001;
end;
if sCmd = sSC_CHECKMEMBERLEVEL then begin
nCMDCode:=nSC_CHECKMEMBERLEVEL;
Goto L001;
end;
if sCmd = sSC_CHECKGAMEGOLD then begin
nCMDCode:=nSC_CHECKGAMEGOLD;
Goto L001;
end;
if sCmd = sSC_CHECKGAMEPOINT then begin
nCMDCode:=nSC_CHECKGAMEPOINT;
Goto L001;
end;
if sCmd = sSC_CHECKNAMELISTPOSITION then begin
nCMDCode:=nSC_CHECKNAMELISTPOSITION;
Goto L001;
end;
if sCmd = sSC_CHECKGUILDLIST then begin
nCMDCode:=nSC_CHECKGUILDLIST;
Goto L001;
end;
if sCmd = sSC_CHECKRENEWLEVEL then begin
nCMDCode:=nSC_CHECKRENEWLEVEL;
Goto L001;
end;
if sCmd = sSC_CHECKSLAVELEVEL then begin
nCMDCode:=nSC_CHECKSLAVELEVEL;
Goto L001;
end;
if sCmd = sSC_CHECKSLAVENAME then begin
nCMDCode:=nSC_CHECKSLAVENAME;
Goto L001;
end;
if sCmd = sSC_CHECKCREDITPOINT then begin
nCMDCode:=nSC_CHECKCREDITPOINT;
Goto L001;
end;
if sCmd = sSC_CHECKOFGUILD then begin
nCMDCode:=nSC_CHECKOFGUILD;
Goto L001;
end;
if sCmd = sSC_CHECKPAYMENT then begin
nCMDCode:=nSC_CHECKPAYMENT;
Goto L001;
end;
if sCmd = sSC_CHECKUSEITEM then begin
nCMDCode:=nSC_CHECKUSEITEM;
Goto L001;
end;
if sCmd = sSC_CHECKBAGSIZE then begin
nCMDCode:=nSC_CHECKBAGSIZE;
Goto L001;
end;
if sCmd = sSC_CHECKLISTCOUNT then begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -