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

📄 datamodule_sql.pas

📁 乐都SQL版传奇全套代码,绝对可编译
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit DataModule_Sql;

interface

uses
  SysUtils, Classes, Activex,DB, ADODB,Castle,M2Share,HUtil32,Guild, MemDS,
  DBAccess, MSAccess;

type
  TDataModule_mir200 = class(TDataModule)
    ADOConnection_Mir: TMSConnection;
    ADOQuery: TMSQuery;
  private
    { Private declarations }
  public
    //读取沙巴克信息
    procedure LoadCastleList(var CastleManager:TCastleManager);
    procedure CastleLoadConfig(var UserCastle:TUserCastle);
    procedure CastleSaveConfigFile(var UserCastle:TUserCastle);
    procedure LoadAttackSabukWall(var UserCastle:TUserCastle);
    procedure SaveAttackSabukWall(var UserCastle:TUserCastle);
    procedure ClearVar(varName:String;Value:Integer);
  end;

var
  DataModule_mir200:Array[0..1] of  TDataModule_mir200;

implementation

uses svMain;

{$R *.dfm}

{ TDataModule_mir200 }
//读取沙巴克信息
procedure TDataModule_mir200.CastleLoadConfig(var UserCastle: TUserCastle);
var


  i                                     : Integer;
  ObjUnit                               : pTObjUnit;
  sMapList, sMAP                        : string;
  Posindex:Integer;
begin
 with UserCastle do
 Begin
 try
  ADOQuery.SQL.Clear;
  ADOQuery.SQL.Add('Select * from D_Castle where CastleIndex='+Inttostr(m_sConfigIndex));

  ADOQuery.Open;
  if  ADOQuery.RecordCount>0 then
  Begin
    m_sName := ADOQuery.fieldByName('castleName').AsString;
    m_sOwnGuild := ADOQuery.fieldByName('OwnGuild').AsString;
    m_ChangeDate := ADOQuery.fieldByName('ChangeDate').AsDateTime;
    m_WarDate := ADOQuery.fieldByName('WarDate').AsDateTime;
    m_IncomeToday :=ADOQuery.fieldByName('IncomeTody').AsDateTime;
    m_nTotalGold := ADOQuery.fieldByName('TotalGold').AsInteger;
    m_nTodayIncome := ADOQuery.fieldByName('TodayIncome').AsInteger;
    m_BoCanNULL:=ADOQuery.fieldByName('cannull').AsInteger=1;
    sMapList := ADOQuery.fieldByName('CastleMapList').AsString;
    if sMapList <> '' then
    begin
      while (sMapList <> '') do
      begin
        sMapList := GetValidStr3(sMapList, sMAP, [',']);
        if sMAP = '' then
          break;
        m_EnvirList.Add(sMAP);
      end;
    end;
    for i := 0 to m_EnvirList.Count - 1 do
    begin
      m_EnvirList.Objects[i] := g_MapManager.FindMap(m_EnvirList.Strings[i]);
    end;
     m_sMapName := ADOQuery.fieldByName('CastleMap').AsString;
    m_sHomeMap :=ADOQuery.fieldByName('CastleHomeMap').AsString;
    m_nHomeX := ADOQuery.fieldByName('CastleHomeX').AsInteger;
    m_nHomeY := ADOQuery.fieldByName('CastleHomeY').AsInteger;
    m_nWarRangeX := ADOQuery.fieldByName('CastleWarRangeX').AsInteger;
    m_nWarRangeY :=ADOQuery.fieldByName('CastleWarRangeY').AsInteger;
    m_sPalaceMap := ADOQuery.fieldByName('CastlePlaceMap').AsString;
    m_sSecretMap := ADOQuery.fieldByName('CastleSecretMap').AsString;
    m_nPalaceDoorX :=ADOQuery.fieldByName('CastlePalaceDoorX').AsInteger;
    m_nPalaceDoorY :=ADOQuery.fieldByName('CastlePalaceDoorY').AsInteger;

  End;
 finally
   ADOQuery.Close;
 End;
 try
  ADOQuery.SQL.Clear;
  ADOQuery.SQL.Add(format('Select * from D_Castle_ObjUnit where CastleIndex=%d ORDER BY pos ',[m_sConfigIndex]));

  ADOQuery.Open;
  for i:=0 to  ADOQuery.RecordCount-1 do
  Begin
     PosIndex:=ADOQuery.FieldByName('pos').AsInteger;
     case PosIndex of
      0:
        Begin
            m_MainDoor.nX := ADOQuery.FieldByName('nx').AsInteger;
            m_MainDoor.nY := ADOQuery.FieldByName('ny').AsInteger;
            m_MainDoor.sName := ADOQuery.FieldByName('charname').AsString;
            m_MainDoor.nStatus := ADOQuery.FieldByName('nStatus').AsInteger;
            m_MainDoor.nHP := ADOQuery.FieldByName('nHp').AsInteger;
            m_MainDoor.BaseObject := nil;
        End;
      1:
        Begin
            m_LeftWall.nX := ADOQuery.FieldByName('nx').AsInteger;
            m_LeftWall.nY := ADOQuery.FieldByName('ny').AsInteger;
            m_LeftWall.sName := ADOQuery.FieldByName('charname').AsString;
            m_LeftWall.nStatus := ADOQuery.FieldByName('nStatus').AsInteger;
            m_LeftWall.nHP := ADOQuery.FieldByName('nHp').AsInteger;
            m_LeftWall.BaseObject := nil;
        End;
      2:
        Begin
            m_CenterWall.nX := ADOQuery.FieldByName('nx').AsInteger;
            m_CenterWall.nY := ADOQuery.FieldByName('ny').AsInteger;
            m_CenterWall.sName := ADOQuery.FieldByName('charname').AsString;
            m_CenterWall.nStatus := ADOQuery.FieldByName('nStatus').AsInteger;
            m_CenterWall.nHP := ADOQuery.FieldByName('nHp').AsInteger;
            m_CenterWall.BaseObject := nil;
        End;
      3:
        Begin
             m_RightWall.nX := ADOQuery.FieldByName('nx').AsInteger;
             m_RightWall.nY := ADOQuery.FieldByName('ny').AsInteger;
             m_RightWall.sName := ADOQuery.FieldByName('charname').AsString;
             m_RightWall.nStatus := ADOQuery.FieldByName('nStatus').AsInteger;
             m_RightWall.nHP := ADOQuery.FieldByName('nHp').AsInteger;
             m_RightWall.BaseObject := nil;
        End;

      4..15:
        Begin
            m_Archer[PosIndex-4].nX := ADOQuery.FieldByName('nx').AsInteger;
            m_Archer[PosIndex-4].nY := ADOQuery.FieldByName('ny').AsInteger;
            m_Archer[PosIndex-4].sName := ADOQuery.FieldByName('charname').AsString;
            m_Archer[PosIndex-4].nStatus := ADOQuery.FieldByName('nStatus').AsInteger;
            m_Archer[PosIndex-4].nHP := ADOQuery.FieldByName('nHp').AsInteger;
            m_Archer[PosIndex-4].BaseObject := nil;
        End;
      16..19:
        Begin
            m_Guard[PosIndex-16].nX := ADOQuery.FieldByName('nx').AsInteger;
            m_Guard[PosIndex-16].nY := ADOQuery.FieldByName('ny').AsInteger;
            m_Guard[PosIndex-16].sName := ADOQuery.FieldByName('charname').AsString;
            m_Guard[PosIndex-16].nStatus := ADOQuery.FieldByName('nStatus').AsInteger;
            m_Guard[PosIndex-16].nHP := ADOQuery.FieldByName('nHp').AsInteger;
            m_Guard[PosIndex-16].BaseObject := nil;
        End;

     End;
     ADOQuery.Next;
  End;
 finally
   ADOQuery.Close;
 End;

  m_MasterGuild := g_GuildManager[0].FindGuild(m_sOwnGuild);
 end;
end;

procedure TDataModule_mir200.CastleSaveConfigFile(var UserCastle: TUserCastle);
var
 
  ObjUnit                               : pTObjUnit;
  sFileName, sConfigFile                : string;
  sMapList                              : string;
  i                                     : Integer;
  sqlStr                                : String;
begin
  with UserCastle do
  Begin
  try
    ADOQuery.SQL.Clear;
    ADOQuery.SQL.Add('Select *  from D_Castle where CastleIndex='+Inttostr(m_sConfigIndex));
    ADOQuery.Open;
    if ADOQuery.RecordCount>0 then
       ADOQuery.Edit
    else
       ADOQuery.Append;
    ADOQuery.fieldByName('CastleIndex').AsInteger:=m_sConfigIndex;
    ADOQuery.fieldByName('castleName').AsString:=m_sName;
    ADOQuery.fieldByName('OwnGuild').AsString:=m_sOwnGuild;
    ADOQuery.fieldByName('ChangeDate').AsDateTime:= m_ChangeDate;
    ADOQuery.fieldByName('WarDate').AsDateTime:=m_WarDate;
    ADOQuery.fieldByName('IncomeTody').AsDateTime:=m_IncomeToday;
    ADOQuery.fieldByName('TotalGold').AsInteger:=m_nTotalGold ;
    ADOQuery.fieldByName('TodayIncome').AsInteger:=m_nTodayIncome ;
    if m_BoCanNULL then
     ADOQuery.fieldByName('cannull').AsInteger:= 1
    else
     ADOQuery.fieldByName('cannull').AsInteger:= 0;
     sMapList:='';
    for i := 0 to m_EnvirList.Count - 1 do
    begin
      sMapList := sMapList + m_EnvirList.Strings[i] + ',';
    end;
    ADOQuery.fieldByName('CastleMapList').AsString:=sMapList;

    ADOQuery.fieldByName('CastleMap').AsString:=m_sMapName ;
    ADOQuery.fieldByName('CastleHomeMap').AsString:=m_sHomeMap;
    ADOQuery.fieldByName('CastleHomeX').AsInteger:=m_nHomeX;
    ADOQuery.fieldByName('CastleHomeY').AsInteger:=m_nHomeY;
    ADOQuery.fieldByName('CastleWarRangeX').AsInteger:=m_nWarRangeX;
    ADOQuery.fieldByName('CastleWarRangeY').AsInteger:=m_nWarRangeY;
    ADOQuery.fieldByName('CastlePlaceMap').AsString:=m_sPalaceMap;
    ADOQuery.fieldByName('CastleSecretMap').AsString:=m_sSecretMap;
    ADOQuery.fieldByName('CastlePalaceDoorX').AsInteger:=m_nPalaceDoorX;
    ADOQuery.fieldByName('CastlePalaceDoorY').AsInteger:=m_nPalaceDoorY;
    ADOQuery.Post;
  finally
    ADOQuery.Close;
  End;
  for i:=0  to 20 do

⌨️ 快捷键说明

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