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

📄 svclass.pas

📁 千年源代码,只缺少控件,可以做二次开发用,好不容易得来的
💻 PAS
📖 第 1 页 / 共 5 页
字号:
   aRetStr := '';

   iName := StrPas (@MagicData.rName);
   if iName = '' then begin
      aRetStr := '巩颇公傍疙阑 涝仿窍瘤 臼疽嚼聪促';
      exit;
   end;
   if (Length (iName) < 4) or (Length (iName) > 10) then begin
      aRetStr := '巩颇公傍疙篮 茄臂2磊 捞惑 5磊 捞窍父 啊瓷钦聪促';
      exit;
   end;
   if not isFullHangul (iName) or not isGrammarID (iName) then begin
      aRetStr := '荤侩且 荐 绝绰 巩颇公傍疙涝聪促';
      exit;
   end;

   for i := 0 to RejectNameList.Count - 1 do begin
      if Pos (RejectNameList.Strings [i], iName) > 0 then begin
         aRetStr := '荤侩且 荐 绝绰 巩颇公傍疙涝聪促';
         exit;
      end;
   end;

   MagicClass.GetMagicData (iName, tmpMagicData, 1000);
   if tmpMagicData.rName [0] <> 0 then begin
      aRetStr := '捞固 粮犁窍绰 公傍疙涝聪促';
      exit;
   end;

   Case MagicData.rMagicType of
      MAGICTYPE_WRESTLING,
      MAGICTYPE_FENCING,
      MAGICTYPE_SWORDSHIP,
      MAGICTYPE_HAMMERING,
      MAGICTYPE_SPEARING :
         begin
         end;
      Else begin
         aRetStr := '公傍狼 辆幅啊 肋给 登菌嚼聪促';
         exit;
      end;
   end;
   if (MagicData.rLifeData.AttackSpeed < 1) or (MagicData.rLifeData.AttackSpeed > 99) then begin
      aRetStr := '傍拜加档绰 1-99狼 蔼父 倾侩邓聪促';
      exit;
   end;
   if (MagicData.rLifeData.DamageBody < 1) or (MagicData.rLifeData.DamageBody > 99) then begin
      aRetStr := '个烹颇鲍仿篮 1-99狼 蔼父 倾侩邓聪促';
      exit;
   end;
   if (MagicData.rLifeData.Recovery < 1) or (MagicData.rLifeData.Recovery > 99) then begin
      aRetStr := '磊技焊沥篮 1-99狼 蔼父 倾侩邓聪促';
      exit;
   end;
   if (MagicData.rLifeData.Avoid < 1) or (MagicData.rLifeData.Avoid > 99) then begin
      aRetStr := '雀乔绰 1-99狼 蔼父 倾侩邓聪促';
      exit;
   end;
   if (MagicData.rLifeData.DamageHead < 10) or (MagicData.rLifeData.DamageHead > 70) then begin
      aRetStr := '赣府傍拜篮 10-70狼 蔼父 倾侩邓聪促';
      exit;
   end;
   if (MagicData.rLifeData.DamageArm < 10) or (MagicData.rLifeData.DamageArm > 70) then begin
      aRetStr := '迫傍拜篮 10-70狼 蔼父 倾侩邓聪促';
      exit;
   end;
   if (MagicData.rLifeData.DamageLeg < 10) or (MagicData.rLifeData.DamageLeg > 70) then begin
      aRetStr := '促府傍拜篮 10-70狼 蔼父 倾侩邓聪促';
      exit;
   end;
   if (MagicData.rLifeData.ArmorBody < 10) or (MagicData.rLifeData.ArmorBody > 70) then begin
      aRetStr := '个烹规绢绰 10-70狼 蔼父 倾侩邓聪促';
      exit;
   end;
   if (MagicData.rLifeData.ArmorHead < 10) or (MagicData.rLifeData.ArmorHead > 70) then begin
      aRetStr := '赣府规绢绰 10-70狼 蔼父 倾侩邓聪促';
      exit;
   end;
   if (MagicData.rLifeData.ArmorArm < 10) or (MagicData.rLifeData.ArmorArm > 70) then begin
      aRetStr := '迫规绢绰 10-70狼 蔼父 倾侩邓聪促';
      exit;
   end;
   if (MagicData.rLifeData.ArmorLeg < 10) or (MagicData.rLifeData.ArmorLeg > 70) then begin
      aRetStr := '促府规绢绰 10-70狼 蔼父 倾侩邓聪促';
      exit;
   end;
   if (MagicData.rEventDecOutPower < 5) or (MagicData.rEventDecOutPower > 35) then begin
      aRetStr := '寇傍家葛绰 5-35狼 蔼父 倾侩邓聪促';
      exit;
   end;
   if (MagicData.rEventDecInPower < 5) or (MagicData.rEventDecInPower > 35) then begin
      aRetStr := '郴傍家葛绰 5-35狼 蔼父 倾侩邓聪促';
      exit;
   end;
   if (MagicData.rEventDecMagic < 5) or (MagicData.rEventDecMagic > 35) then begin
      aRetStr := '公傍家葛绰 5-35狼 蔼父 倾侩邓聪促';
      exit;
   end;
   if (MagicData.rEventDecLife < 5) or (MagicData.rEventDecLife > 35) then begin
      aRetStr := '劝仿家葛绰 5-35狼 蔼父 倾侩邓聪促';
      exit;
   end;

   if MagicData.rLifeData.AttackSpeed + MagicData.rLifeData.DamageBody <> 100 then begin
      aRetStr := '傍拜加档客 个烹颇鲍仿狼 钦篮 100捞绢具父 钦聪促';
      exit;
   end;
   if MagicData.rLifeData.Recovery + MagicData.rLifeData.Avoid <> 100 then begin
      aRetStr := '磊技焊沥苞 雀乔狼 钦篮 100捞绢具父 钦聪促';
      exit;
   end;
   if MagicData.rLifeData.DamageHead + MagicData.rLifeData.DamageArm +
      MagicData.rLifeData.DamageLeg + MagicData.rLifeData.ArmorBody +
      MagicData.rLifeData.ArmorHead + MagicData.rLifeData.ArmorArm +
      MagicData.rLifeData.ArmorLeg <> 228 then begin
      aRetStr := '(赣府,迫,促府)颇鲍仿 + (个烹,赣府,迫,促府)规绢仿狼 钦篮 228捞绢具父 钦聪促';
      exit;
   end;
   if MagicData.rEventDecInPower + MagicData.rEventDecOutPower +
      MagicData.rEventDecMagic + MagicData.rEventDecLife <> 80 then begin
      aRetStr := '郴傍 + 寇傍 + 公傍 + 劝仿(家葛樊)狼 钦篮 80捞绢具父 钦聪促';
      exit;
   end;

   Result := true;
end;

procedure TMagicClass.CompactGuildMagic;
var
   i : Integer;
   MagicName, GuildName : String;
   GuildObject : TGuildObject;
begin
   if MagicForGuildDB.Count = 0 then exit;

   for i := MagicForGuildDB.Count - 1 downto 0 do begin
      MagicName := MagicForGuildDb.GetIndexName (i);
      if MagicName = '' then continue;

      GuildName := MagicForGuildDB.GetFieldValueString (MagicName, 'GuildName');
      GuildObject := GuildList.GetGuildObjectByMagicName (MagicName);
      if GuildObject = nil then begin
         MagicForGuildDB.DeleteName (MagicName);
      end else begin
         MagicForGuildDB.SetFieldValueString (MagicName, 'GuildName', GuildObject.GuildName);
      end;
   end;

   MagicForGuildDB.SaveToFile ('.\MagicForGuild.SDB');

   ReloadFromFile;
end;

function TMagicClass.AddGuildMagic (var aMagicData : TMagicData; aGuildName : String) : Boolean;
var
   iName : String;
   iType, iSoundStrike, iSoundSwing : Integer;
   MagicData : TMagicData;
begin
   Result := false;

   iName := StrPas (@aMagicData.rName);
   MagicForGuildDB.AddName (iName);

   FillChar (MagicData, SizeOf (TMagicData), 0);
   iType := aMagicData.rMagicType;
   Case iType of
      MAGICTYPE_WRESTLING :
         begin
            GetMagicData ('公疙鼻过', MagicData, 100);
         end;
      MAGICTYPE_FENCING :
         begin
            GetMagicData ('公疙八过', MagicData, 100);
         end;
      MAGICTYPE_SWORDSHIP :
         begin
            GetMagicData ('公疙档过', MagicData, 100);
         end;
      MAGICTYPE_HAMMERING :
         begin
            GetMagicData ('公疙硼过', MagicData, 100);
         end;
      MAGICTYPE_SPEARING :
         begin
            GetMagicData ('公疙芒贱', MagicData, 100);
         end;
   end;
   if MagicData.rname [0] = 0 then exit;

   iSoundSwing := MagicData.rSoundSwing.rWavNumber;
   iSoundStrike := MagicData.rSoundStrike.rWavNumber;

   MagicForGuildDB.SetFieldValueString (iName, 'SoundEvent', '');
   MagicForGuildDB.SetFieldValueString (iName, 'SoundStrike', IntToStr (iSoundStrike));
   MagicForGuildDB.SetFieldValueString (iName, 'SoundSwing', IntToStr (iSoundSwing));
   MagicForGuildDB.SetFieldValueString (iName, 'SoundStart', '');
   MagicForGuildDB.SetFieldValueString (iName, 'SoundEnd', '');
   MagicForGuildDB.SetFieldValueInteger (iName, 'Shape', aMagicData.rShape);
   MagicForGuildDB.SetFieldValueInteger (iName, 'MagicType', aMagicData.rMagicType);
   MagicForGuildDB.SetFieldValueInteger (iName, 'Function', 0);
   MagicForGuildDB.SetFieldValueInteger (iName, 'AttackSpeed', aMagicData.rLifeData.AttackSpeed);
   MagicForGuildDB.SetFieldValueInteger (iName, 'Recovery', aMagicData.rLifeData.Recovery);
   MagicForGuildDB.SetFieldValueInteger (iName, 'Avoid', aMagicData.rLifeData.Avoid);
   MagicForGuildDB.SetFieldValueInteger (iName, 'DamageBody', aMagicData.rLifeData.DamageBody);
   MagicForGuildDB.SetFieldValueInteger (iName, 'DamageHead', aMagicData.rLifeData.DamageHead);
   MagicForGuildDB.SetFieldValueInteger (iName, 'DamageArm', aMagicData.rLifeData.DamageArm);
   MagicForGuildDB.SetFieldValueInteger (iName, 'DamageLeg', aMagicData.rLifeData.DamageLeg);
   MagicForGuildDB.SetFieldValueInteger (iName, 'ArmorBody', aMagicData.rLifeData.ArmorBody);
   MagicForGuildDB.SetFieldValueInteger (iName, 'ArmorHead', aMagicData.rLifeData.ArmorHead);
   MagicForGuildDB.SetFieldValueInteger (iName, 'ArmorArm', aMagicData.rLifeData.ArmorArm);
   MagicForGuildDB.SetFieldValueInteger (iName, 'ArmorLeg', aMagicData.rLifeData.ArmorLeg);

   MagicForGuildDB.SetFieldValueInteger (iName, 'eEnergy', aMagicData.rEventDecEnergy);
   MagicForGuildDB.SetFieldValueInteger (iName, 'eInPower', aMagicData.rEventDecInPower);
   MagicForGuildDB.SetFieldValueInteger (iName, 'eOutPower', aMagicData.rEventDecOutPower);
   MagicForGuildDB.SetFieldValueInteger (iName, 'eMagic', aMagicData.rEventDecMagic);
   MagicForGuildDB.SetFieldValueInteger (iName, 'eLife', aMagicData.rEventDecLife);

   MagicForGuildDB.SetFieldValueString (iName, 'GuildName', aGuildName);

   MagicForGuildDB.SetFieldValueInteger (iName, 'kEnergy', 10);
   MagicForGuildDB.SetFieldValueInteger (iName, 'kInPower', 10);
   MagicForGuildDB.SetFieldValueInteger (iName, 'kOutPower', 10);
   MagicForGuildDB.SetFieldValueInteger (iName, 'kMagic', 10);
   MagicForGuildDB.SetFieldValueInteger (iName, 'kLife', 10);

   MagicForGuildDB.SaveToFile ('.\MagicForGuild.SDB');

   ReloadFromFile;

   Result := true;
end;

// TMagicParamClass
constructor TMagicParamClass.Create;
begin
   DataList := TList.Create;
   KeyClass := TStringKeyClass.Create;

   LoadFromFile ('.\Init\MagicParam.SDB');
end;

destructor TMagicParamClass.Destroy;
begin
   Clear;
   KeyClass.Free;
   DataList.Free;

   inherited Destroy;
end;

procedure TMagicParamClass.Clear;
var
   i : Integer;
   pd : PTMagicParamData;
begin
   for i := 0 to DataList.Count - 1 do begin
      pd := DataList.Items [i];
      Dispose (pd);
   end;
   DataList.Clear;
   KeyClass.Clear;
end;

function TMagicParamClass.LoadFromFile (aFileName : String) : Boolean;
var
   i, j : Integer;
   iName : String;
   pd : PTMagicParamData;
   DB : TUserStringDB;
begin
   Result := false;

   if not FileExists (aFileName) then exit;

   DB := TUserStringDB.Create;
   DB.LoadFromFile (aFileName);

   for i := 0 to DB.Count - 1 do begin
      iName := DB.GetIndexName (i);
      if iName = '' then continue;

      New (pd);
      FillChar (pd^, SizeOf (TMagicParamData), 0);

      pd^.ObjectName := DB.GetFieldValueString (iName, 'ObjectName');
      pd^.MagicName := DB.GetFieldValueString (iName, 'MagicName');
      for j := 0 to 5 - 1 do begin
         pd^.NameParam [j] := DB.GetFieldValueString (iName, 'NameParam' + IntToStr (j + 1));
      end;
      for j := 0 to 5 - 1 do begin
         pd^.NumberParam [j] := DB.GetFieldValueInteger (iName, 'NumberParam' + IntToStr (j + 1));
      end;

      KeyClass.Insert (pd^.ObjectName + pd^.MagicName, pd);
      DataList.Add (pd);
   end;

   DB.Free;

   Result := true;
end;

function TMagicParamClass.GetMagicParamData (aObjectName, aMagicName : String;var aMagicParamData : TMagicParamData): Boolean;
var
   pd : PTMagicParamData;
begin
   Result := false;

   pd := KeyClass.Select (aObjectName + aMagicName);
   if pd = nil then begin
      FillChar (aMagicParamData, SizeOf (TMagicParamData), 0);
      exit;
   end;

   Move (pd^, aMagicParamData, SizeOf (TMagicParamData));
   
   Result := true;
end;

{
const
   MAGIC_DIV_VALUE      = 10;

   ADD_DAMAGE           = 40;

   MUL_ATTACKSPEED      = 10;
   MUL_AVOID            = 6;
   MUL_RECOVERY         = 10;
   MUL_DAMAGEBODY       = 23;
   MUL_DAMAGEHEAD       = 17;
   MUL_DAMAGEARM        = 17;
   MUL_DAMAGELEG        = 17;
   MUL_ARMORBODY        = 7;
   MUL_ARMORHEAD        = 7;
   MUL_ARMORARM         = 7;
   MUL_ARMORLEG         = 7;

   MUL_EVENTENERGY      = 20;
   MUL_EVENTINPOWER     = 22;
   MUL_EVENTOUTPOWER    = 22;
   MUL_EVENTMAGIC       = 10;
   MUL_EVENTLIFE        = 8;

   MUL_5SECENERGY       = 20;
   MUL_5SECINPOWER      = 14;
   MUL_5SECOUTPOWER     = 14;
   MUL_5SECMAGIC        = 9;
   MUL_5SECLIFE         = 8;
}
function TMagicClass.LoadMagicData (aMagicName: string; var MagicData: TMagicData; aDb: TUserStringDb): Boolean;
begin
   Result := FALSE;
   FillChar (MagicData, sizeof(MagicData), 0);
   if aDb.GetDbString (aMagicName) = '' then exit;
   with MagicData do begin
      StrPCopy (@rname, aMagicName);
      // rPercent := 10;

      StrToEffectData (rSoundEvent, aDb.GetFieldValueString (aMagicName, 'SoundEvent'));

⌨️ 快捷键说明

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