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

📄 itmunit.~pas

📁 M2原代码 M2原代码
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
      exit;
    end;
    if UserItem.btValue[4] >= 2 then begin
      UserItem.btValue[5]:=3;
      UserItem.btValue[6]:=UserItem.btValue[4] * 2 + 18;
      exit;
    end;
    UserItem.btValue[6]:=n14 * 2 + 18;
  end;

end;

procedure TItemUnit.UnknowRing(UserItem: pTUserItem);//00495500 神秘戒指
var
  nC,n10,n14:Integer;
begin
  n10:={GetRandomRange(4,3) + GetRandomRange(4,8) + }GetRandomRange(g_Config.nUnknowRingACAddValueMaxLimit{6},g_Config.nUnknowRingACAddRate{20});
  if n10 > 0 then  UserItem.btValue[0]:=n10;
  n14:=n10;
  n10:={GetRandomRange(4,3) + GetRandomRange(4,8) + }GetRandomRange(g_Config.nUnknowRingMACAddValueMaxLimit{6},g_Config.nUnknowRingMACAddRate{20});
  if n10 > 0 then  UserItem.btValue[1]:=n10;
  Inc(n14,n10);
  // 以上二项为增加项,增加防,及魔防
  
  n10:={GetRandomRange(4,3) + GetRandomRange(4,8) + }GetRandomRange(g_Config.nUnknowRingDCAddValueMaxLimit{6},g_Config.nUnknowRingDCAddRate{20});
  if n10 > 0 then  UserItem.btValue[2]:=n10;
  Inc(n14,n10);
  n10:={GetRandomRange(4,3) + GetRandomRange(4,8) + }GetRandomRange(g_Config.nUnknowRingMCAddValueMaxLimit{6},g_Config.nUnknowRingMCAddRate{20});
  if n10 > 0 then  UserItem.btValue[3]:=n10;
  Inc(n14,n10);
  n10:={GetRandomRange(4,3) + GetRandomRange(4,8) + }GetRandomRange(g_Config.nUnknowRingSCAddValueMaxLimit{6},g_Config.nUnknowRingSCAddRate{20});
  if n10 > 0 then  UserItem.btValue[4]:=n10;
  Inc(n14,n10);
  n10:=GetRandomRange(6,30);
  if n10 > 0 then begin
    nC:=(n10 + 1) * 1000;
    UserItem.DuraMax:=_MIN(65000,UserItem.DuraMax + nC);
    UserItem.Dura:=_MIN(65000,UserItem.Dura + nC);
  end;
  if Random(30) = 0 then UserItem.btValue[7]:=1;
  UserItem.btValue[8]:=1;
  if n14 >= 3 then begin
    if UserItem.btValue[2] >= 3 then begin
      UserItem.btValue[5]:=1;
      UserItem.btValue[6]:=UserItem.btValue[2] * 3 + 25;
      exit;
    end;
    if UserItem.btValue[3] >= 3 then begin
      UserItem.btValue[5]:=2;
      UserItem.btValue[6]:=UserItem.btValue[3] * 2 + 18;
      exit;
    end;
    if UserItem.btValue[4] >= 3 then begin
      UserItem.btValue[5]:=3;
      UserItem.btValue[6]:=UserItem.btValue[4] * 2 + 18;
      exit;
    end;
    UserItem.btValue[6]:=n14 * 2 + 18;
  end;

end;

procedure TItemUnit.UnknowNecklace(UserItem: pTUserItem);//00495704 神秘腰带
var
  nC,n10,n14:Integer;
begin
  n10:={GetRandomRange(3,5) + }GetRandomRange(g_Config.nUnknowNecklaceACAddValueMaxLimit{5},g_Config.nUnknowNecklaceACAddRate{20});
  if n10 > 0 then  UserItem.btValue[0]:=n10;
  n14:=n10;
  n10:={GetRandomRange(3,5) + }GetRandomRange(g_Config.nUnknowNecklaceMACAddValueMaxLimit{5},g_Config.nUnknowNecklaceMACAddRate{20});
  if n10 > 0 then  UserItem.btValue[1]:=n10;
  Inc(n14,n10);
  n10:={GetRandomRange(3,15) + }GetRandomRange(g_Config.nUnknowNecklaceDCAddValueMaxLimit{5},g_Config.nUnknowNecklaceDCAddRate{30});
  if n10 > 0 then  UserItem.btValue[2]:=n10;
  Inc(n14,n10);
  n10:={GetRandomRange(3,15) + }GetRandomRange(g_Config.nUnknowNecklaceMCAddValueMaxLimit{5},g_Config.nUnknowNecklaceMCAddRate{30});
  if n10 > 0 then  UserItem.btValue[3]:=n10;
  Inc(n14,n10);
  n10:={GetRandomRange(3,15) + }GetRandomRange(g_Config.nUnknowNecklaceSCAddValueMaxLimit{5},g_Config.nUnknowNecklaceSCAddRate{30});
  if n10 > 0 then  UserItem.btValue[4]:=n10;
  Inc(n14,n10);
  n10:=GetRandomRange(6,30);
  if n10 > 0 then begin
    nC:=(n10 + 1) * 1000;
    UserItem.DuraMax:=_MIN(65000,UserItem.DuraMax + nC);
    UserItem.Dura:=_MIN(65000,UserItem.Dura + nC);
  end;
  if Random(30) = 0 then UserItem.btValue[7]:=1;
  UserItem.btValue[8]:=1;
  if n14 >= 2 then begin
    if UserItem.btValue[0] >= 3 then begin
      UserItem.btValue[5]:=1;
      UserItem.btValue[6]:=UserItem.btValue[0] * 3 + 25;
      exit;
    end;
    if UserItem.btValue[2] >= 2 then begin
      UserItem.btValue[5]:=1;
      UserItem.btValue[6]:=UserItem.btValue[2] * 3 + 30;
      exit;
    end;
    if UserItem.btValue[3] >= 2 then begin
      UserItem.btValue[5]:=2;
      UserItem.btValue[6]:=UserItem.btValue[3] * 2 + 20;
      exit;
    end;
    if UserItem.btValue[4] >= 2 then begin
      UserItem.btValue[5]:=3;
      UserItem.btValue[6]:=UserItem.btValue[4] * 2 + 20;
      exit;
    end;
    UserItem.btValue[6]:=n14 * 2 + 18;
  end;

end;

procedure TItemUnit.GetItemAddValue(UserItem: pTUserItem;var StdItem:TStdItem);//00495974
begin
  case StdItem.StdMode of
    5,6: begin //004959D6
      StdItem.DC:=MakeLong(LoWord(StdItem.DC),HiWord(StdItem.DC) + UserItem.btValue[0]);
      StdItem.MC:=MakeLong(LoWord(StdItem.MC),HiWord(StdItem.MC) + UserItem.btValue[1]);
      StdItem.SC:=MakeLong(LoWord(StdItem.SC),HiWord(StdItem.SC) + UserItem.btValue[2]);
      StdItem.AC:=MakeLong(LoWord(StdItem.AC) + UserItem.btValue[3],HiWord(StdItem.AC) + UserItem.btValue[5]);
      StdItem.MAC:=MakeLong(LoWord(StdItem.MAC) + UserItem.btValue[4],HiWord(StdItem.MAC) + UserItem.btValue[6]);
      if Byte(UserItem.btValue[7] - 1) < 10 then begin //神圣
        StdItem.Source:=UserItem.btValue[7];
      end;
     if UserItem.btValue[10] <> 0 then
       StdItem.Reserved:=StdItem.Reserved or 1;
    end;
    10,11: begin
      StdItem.AC:=MakeLong(LoWord(StdItem.AC),HiWord(StdItem.AC) + UserItem.btValue[0]);
      StdItem.MAC:=MakeLong(LoWord(StdItem.MAC),HiWord(StdItem.MAC) + UserItem.btValue[1]);
      StdItem.DC:=MakeLong(LoWord(StdItem.DC),HiWord(StdItem.DC) + UserItem.btValue[2]);
      StdItem.MC:=MakeLong(LoWord(StdItem.MC),HiWord(StdItem.MC) + UserItem.btValue[3]);
      StdItem.SC:=MakeLong(LoWord(StdItem.SC),HiWord(StdItem.SC) + UserItem.btValue[4]);
    end;
    15,19,20,21,22,23,24,26: begin
      StdItem.AC:=MakeLong(LoWord(StdItem.AC),HiWord(StdItem.AC) + UserItem.btValue[0]);
      StdItem.MAC:=MakeLong(LoWord(StdItem.MAC),HiWord(StdItem.MAC) + UserItem.btValue[1]);
      StdItem.DC:=MakeLong(LoWord(StdItem.DC),HiWord(StdItem.DC) + UserItem.btValue[2]);
      StdItem.MC:=MakeLong(LoWord(StdItem.MC),HiWord(StdItem.MC) + UserItem.btValue[3]);
      StdItem.SC:=MakeLong(LoWord(StdItem.SC),HiWord(StdItem.SC) + UserItem.btValue[4]);
      if UserItem.btValue[5] > 0 then begin
        StdItem.Need:=UserItem.btValue[5];
      end;
      if UserItem.btValue[6] > 0 then begin
        StdItem.NeedLevel:=UserItem.btValue[6];
      end;
    end;
  end;
end;

function TItemUnit.GetCustomItemName(nMakeIndex,
  nItemIndex: Integer): String;
var
  I: Integer;
  ItemName:pTItemName;
begin
  Result:='';
  m_ItemNameList.Lock;
  try
    for I := 0 to m_ItemNameList.Count - 1 do begin
      ItemName:=m_ItemNameList.Items[I];
      if (ItemName.nMakeIndex = nMakeIndex) and (ItemName.nItemIndex = nItemIndex) then begin
        Result:=ItemName.sItemName;
        break;
      end;
    end;
  finally
    m_ItemNameList.UnLock;
  end;
end;


function TItemUnit.AddCustomItemName(nMakeIndex, nItemIndex: Integer;
  sItemName: String): Boolean;
var
  I: Integer;
  ItemName:pTItemName;
begin
  Result:=False;
  m_ItemNameList.Lock;
  try
    for I := 0 to m_ItemNameList.Count - 1 do begin
      ItemName:=m_ItemNameList.Items[I];
      if (ItemName.nMakeIndex = nMakeIndex) and (ItemName.nItemIndex = nItemIndex) then begin
        exit;
      end;
    end;
    New(ItemName);
    ItemName.nMakeIndex:=nMakeIndex;
    ItemName.nItemIndex:=nItemIndex;
    ItemName.sItemName:=sItemName;
    m_ItemNameList.Add(ItemName);
    Result:=True;
  finally
    m_ItemNameList.UnLock;
  end;
end;

function TItemUnit.DelCustomItemName(nMakeIndex, nItemIndex: Integer): Boolean;
var
  I: Integer;
  ItemName:pTItemName;
begin
  Result:=False;
  m_ItemNameList.Lock;
  try
    for I := 0 to m_ItemNameList.Count - 1 do begin
      ItemName:=m_ItemNameList.Items[I];
      if (ItemName.nMakeIndex = nMakeIndex) and (ItemName.nItemIndex = nItemIndex) then begin
        Dispose(ItemName);
        m_ItemNameList.Delete(I);
        Result:=True;
        exit;
      end;
    end;
  finally
    m_ItemNameList.UnLock;
  end;
end;

function TItemUnit.LoadCustomItemName: Boolean;
var
  I:integer;
  LoadList:TStringList;
  sFileName:String;
  sLineText:String;
  sMakeIndex:String;
  sItemIndex:String;
  nMakeIndex:Integer;
  nItemIndex:Integer;
  sItemName:String;
  ItemName:pTItemName;
begin
  Result:=False;
  sFileName:=g_Config.sEnvirDir + 'ItemNameList.txt';
  LoadList:=TStringList.Create;
  if FileExists(sFileName) then begin
    m_ItemNameList.Lock;
    try
      m_ItemNameList.Clear;
      LoadList.LoadFromFile(sFileName);
      for I := 0 to LoadList.Count - 1 do begin
        sLineText:=Trim(LoadList.Strings[I]);
        sLineText:=GetValidStr3(sLineText, sMakeIndex, [' ',#9]);
        sLineText:=GetValidStr3(sLineText, sItemIndex, [' ',#9]);
        sLineText:=GetValidStr3(sLineText, sItemName, [' ',#9]);
        nMakeIndex:=Str_ToInt(sMakeIndex,-1);
        nItemIndex:=Str_ToInt(sItemIndex,-1);
        if (nMakeIndex >= 0) and (nItemIndex >= 0) then begin
          New(ItemName);
          ItemName.nMakeIndex:=nMakeIndex;
          ItemName.nItemIndex:=nItemIndex;
          ItemName.sItemName:=sItemName;
          m_ItemNameList.Add(ItemName);
        end;
      end;
      Result:=True;
    finally
      m_ItemNameList.UnLock;
    end;
  end else begin
    LoadList.SaveToFile(sFileName);
  end;
  LoadList.Free;
end;

function TItemUnit.SaveCustomItemName: Boolean;
var
  I:integer;
  SaveList:TStringList;
  sFileName:String;
  ItemName:pTItemName;
begin
  sFileName:=g_Config.sEnvirDir + 'ItemNameList.txt';
  SaveList:=TStringList.Create;
  m_ItemNameList.Lock;
  try
    for I := 0 to m_ItemNameList.Count - 1 do begin
      ItemName:=m_ItemNameList.Items[I];
      SaveList.Add(IntToStr(ItemName.nMakeIndex) + #9 + IntToStr(ItemName.nItemIndex) + #9 + ItemName.sItemName);
    end;
  finally
    m_ItemNameList.UnLock;
  end;
  SaveList.SaveToFile(sFileName);
  SaveList.Free;
  Result:=True;
end;

procedure TItemUnit.Lock;
begin
  m_ItemNameList.Lock;
end;

procedure TItemUnit.UnLock;
begin
  m_ItemNameList.UnLock;
end;

end.

⌨️ 快捷键说明

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