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

📄 localdb.pas

📁 乐都SQL版传奇全套代码,绝对可编译
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  i, n14                                : Integer;
  s18, s20, s24                         : string;
  LoadList                              : TStringList;
  sFileName                             : string;
  List28                                : TStringList;
begin
  Result := -1;
  sFileName := g_Config.sEnvirDir + 'MakeItem.txt';
  if FileExists(sFileName) then
  begin
    LoadList := TStringList.Create;
    try
        LoadList.LoadFromFile(sFileName);
        List28 := nil;
        s24 := '';
        for i := 0 to LoadList.Count - 1 do
        begin
          s18 := Trim(LoadList.Strings[i]);
          if (s18 <> '') and (s18[1] <> ';') then
          begin
            if s18[1] = '[' then
            begin
              if List28 <> nil then
                g_MakeItemList.AddObject(s24, List28);
              List28 := TStringList.Create;
              ArrestStringEx(s18, '[', ']', s24);
            end
            else
            begin
              if List28 <> nil then
              begin
                s18 := GetValidStr3(s18, s20, [' ', #9]);
                n14 := Str_ToInt(Trim(s18), 1);
                List28.AddObject(s20, TObject(n14));
              end;
            end;
          end;
        end;                                                    // for
        if List28 <> nil then
          g_MakeItemList.AddObject(s24, List28);
    finally
      LoadList.Free;
    End;
    Result := 1;
  end;

end;

//00486D1C
//加载地图信息

function TFrmDB.LoadMapInfo: Integer;
//00486C1C

  function LoadMapQuest(sName: string): TMerchant;
  var
    QuestNPC                            : TMerchant;
  begin
    QuestNPC := TMerchant.Create;
    QuestNPC.m_sMapName := '0';
    QuestNPC.m_nCurrX := 0;
    QuestNPC.m_nCurrY := 0;
    QuestNPC.m_sCharName := sName;
    QuestNPC.m_nFlag := 0;
    QuestNPC.m_wAppr := 0;
    QuestNPC.m_sFilePath := 'MapQuest_def\';
    QuestNPC.m_boIsHide := True;
    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;
      try
        LoadMapList.LoadFromFile(sFilePatchName);
        for i := 0 to LoadMapList.Count - 1 do
        begin
          LoadList.Add(LoadMapList.Strings[i]);
        end;
      finally
        LoadMapList.Free;
      End;
    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;

  MapFlag                               : TMapFlag;
  QuestNPC                              : TMerchant;
  sMapInfoFile                          : 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;
        FillChar(MapFlag, SizeOf(TMapFlag), #0);
        MapFlag.nL := 1;
        QuestNPC := nil;
        MapFlag.nNEEDSETONFlag := -1;
        MapFlag.nNeedONOFF := -1;

        while (True) do
        begin
          if s30 = '' then
            break;
          s30 := GetValidStr3(s30, s34, [' ', ',', #9]);
          if s34 = '' then
            break;
          MapFlag.nMUSICID := -1;
          if CompareText(s34, 'SAFE') = 0 then
          begin
            MapFlag.boSAFE := True;
            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, 'NEWFIGHT') = 0 then
          begin
            MapFlag.boFIGHT4 := 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;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -