?? localdb.pas
字號:
LoadList.Free;
end;
if QDDinfoList <> nil then QuestDiaryList.Add(QDDinfoList)
else QuestDiaryList.Add(nil);
Inc(nC);
if nC >= 105 then Break;
end;
end;
function TFrmDB.LoadStartPoint(): Integer;
var
sFileName, tStr, s18, s1C, s20, s22, s24, s26, s28, s30: string;
LoadList: TStringList;
I: Integer;
StartPoint: pTStartPoint;
begin
Result := 0;
sFileName := g_Config.sEnvirDir + 'StartPoint.txt';
if FileExists(sFileName) then begin
try
g_StartPointList.Lock;
g_StartPointList.Clear;
LoadList := TStringList.Create;
LoadList.LoadFromFile(sFileName);
for I := 0 to LoadList.Count - 1 do begin
tStr := Trim(LoadList.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, s22, [' ', #9]);
tStr := GetValidStr3(tStr, s24, [' ', #9]);
tStr := GetValidStr3(tStr, s26, [' ', #9]);
tStr := GetValidStr3(tStr, s28, [' ', #9]);
tStr := GetValidStr3(tStr, s30, [' ', #9]);
if (s18 <> '') and (s1C <> '') and (s20 <> '') then begin
New(StartPoint);
StartPoint.m_sMapName := s18;
StartPoint.m_nCurrX := Str_ToInt(s1C, 0);
StartPoint.m_nCurrY := Str_ToInt(s20, 0);
StartPoint.m_boNotAllowSay := Boolean(Str_ToInt(s22, 0));
StartPoint.m_nRange := Str_ToInt(s24, 0);
StartPoint.m_nType := Str_ToInt(s26, 0);
StartPoint.m_nPkZone := Str_ToInt(s28, 0);
StartPoint.m_nPkFire := Str_ToInt(s30, 0);
g_StartPointList.AddObject(s18, TObject(StartPoint));
//g_StartPointList.AddObject(s18, TObject(MakeLong(Str_ToInt(s1C, 0), Str_ToInt(s20, 0))));
Result := 1;
end;
end;
end;
LoadList.Free;
finally
g_StartPointList.UnLock;
end;
end;
end;
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; //需要取負數(shù)
Break;
end;
end;
end;
LoadList.Free;
end;
end;
function TFrmDB.LoadNpcScript(NPC: TNormNpc; sPatch,
sScritpName: string): Integer;
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;
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; var List: TStringList): Boolean;
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
if s18[1] <> '{' then begin
if s18[1] = '}' then begin
bo1D := False;
Result := True;
Break;
end else begin
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(var LoadList: TStringList);
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);
if s20[1] = '\' then s20 := Copy(s20, 2, Length(s20) - 1);
if s20[2] = '\' then s20 := Copy(s20, 3, Length(s20) - 2);
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(var LoadList: TStringList; var List: TList): string;
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;
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;
var
ScriptInfo: pTScript;
begin
New(ScriptInfo);
ScriptInfo.boQuest := False;
FillChar(ScriptInfo.QuestInfo, SizeOf(TQuestInfo) * 10, #0);
nQuestIdx := 0;
ScriptInfo.RecordList := TList.Create;
NPC.m_ScriptList.Add(ScriptInfo);
Result := ScriptInfo;
end;
function QuestCondition(sText: string; var 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
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_CHECKSLAV
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -