📄 itmunit.pas
字号:
unit ItmUnit;
interface
uses
Windows,Classes,SysUtils,Grobal2;
type
TItemUnit = class
private
function GetRandomRange(nCount, nRate: Integer): Integer;
public
m_ItemNameList :TGList;
m_BagItemPoslist :TGList;
constructor Create();
destructor Destroy; override;
procedure GetItemAddValue(UserItem:pTUserItem;var StdItem:TStdItem);
procedure GetItemAddValue2(UserItem:pTUserItem;var StdItem:TOStdItem);
procedure RandomUpgradeWeapon(UserItem:pTUserItem);
procedure RandomUpgradeDress(UserItem:pTUserItem);
procedure RandomUpgrade19(UserItem:pTUserItem);
procedure RandomUpgrade202124(UserItem:pTUserItem);
procedure RandomUpgrade26(UserItem:pTUserItem);
procedure RandomUpgrade22(UserItem:pTUserItem);
procedure RandomUpgrade23(UserItem:pTUserItem);
procedure RandomUpgradeHelMet(UserItem:pTUserItem);
procedure UnknowHelmet(UserItem:pTUserItem);
procedure UnknowRing(UserItem:pTUserItem);
procedure UnknowNecklace(UserItem:pTUserItem);
function LoadCustomItemName():Boolean;
function SaveCustomItemName():Boolean;
function AddCustomItemName(nMakeIndex,nItemIndex:Integer;sItemName:String):Boolean;
function DelCustomItemName(nMakeIndex,nItemIndex:Integer):Boolean;
function GetCustomItemName(nMakeIndex,nItemIndex:Integer):String;
procedure Lock();
procedure UnLock();
end;
implementation
uses HUtil32, M2Share;
{ TItemUnit }
constructor TItemUnit.Create;
begin
m_ItemNameList:=TGList.Create;
end;
destructor TItemUnit.Destroy;
var
I: Integer;
begin
for I := 0 to m_ItemNameList.Count - 1 do begin
Dispose(pTItemName(m_ItemNameList.Items[I]));
end;
m_ItemNameList.Free;
inherited;
end;
function TItemUnit.GetRandomRange(nCount, nRate:Integer):Integer; //00494794
var
I: Integer;
begin
Result:=0;
for I := 0 to nCount - 1 do
if Random(nRate)= 0 then Inc(Result);
end;
procedure TItemUnit.RandomUpgradeWeapon(UserItem: pTUserItem); //00494794
var
nC,n10,n14:Integer;
begin
nC:=GetRandomRange(g_Config.nWeaponDCAddValueMaxLimit{12},g_Config.nWeaponDCAddValueRate{15});
if Random(15) = 0 then UserItem.btValue[0]:=nC + 1;
nC:=GetRandomRange(12,15);
if Random(20) = 0 then begin
n14:=(nC + 1) div 3;
if n14 > 0 then begin
if Random(3) <> 0 then begin
UserItem.btValue[6]:=n14;
end else begin
UserItem.btValue[6]:=n14 + 10;
end;
end;
end;
nC:=GetRandomRange(12,15);
if Random(15) = 0 then UserItem.btValue[1]:=nC + 1;
nC:=GetRandomRange(12,15);
if Random(15) = 0 then UserItem.btValue[2]:=nC + 1;
nC:=GetRandomRange(12,15);
if Random(24) = 0 then begin
UserItem.btValue[5]:=nC div 2 + 1;
end;
nC:=GetRandomRange(12,12);
if Random(3) < 2 then begin
n10:=(nC + 1) * 2000;
UserItem.DuraMax:=_MIN(65000,UserItem.DuraMax + n10);
UserItem.Dura:=_MIN(65000,UserItem.Dura + n10);
end;
nC:=GetRandomRange(12,15);
if Random(10) = 0 then begin
UserItem.btValue[7]:=nC div 2 + 1;
end;
end;
procedure TItemUnit.RandomUpgradeDress(UserItem: pTUserItem); //00494958
var
nC,n10:Integer;
begin
nC:=GetRandomRange(6,15);
if Random(30) = 0 then UserItem.btValue[0]:=nC + 1;
nC:=GetRandomRange(6,15);
if Random(30) = 0 then UserItem.btValue[1]:=nC + 1;
nC:=GetRandomRange(g_Config.nDressDCAddValueMaxLimit{6},g_Config.nDressDCAddValueRate{20});
if Random(g_Config.nDressDCAddRate{40}) = 0 then UserItem.btValue[2]:=nC + 1;
nC:=GetRandomRange(g_Config.nDressMCAddValueMaxLimit{6},g_Config.nDressMCAddValueRate{20});
if Random(g_Config.nDressMCAddRate{40}) = 0 then UserItem.btValue[3]:=nC + 1;
nC:=GetRandomRange(g_Config.nDressSCAddValueMaxLimit{6},g_Config.nDressSCAddValueRate{20});
if Random(g_Config.nDressSCAddRate{40}) = 0 then UserItem.btValue[4]:=nC + 1;
nC:=GetRandomRange(6,10);
if Random(8) < 6 then begin
n10:=(nC + 1) * 2000;
UserItem.DuraMax:=_MIN(65000,UserItem.DuraMax + n10);
UserItem.Dura:=_MIN(65000,UserItem.Dura + n10);
end;
end;
procedure TItemUnit.RandomUpgrade202124(UserItem: pTUserItem);//00494AB0
var
nC,n10:Integer;
begin
nC:=GetRandomRange(6,30);
if Random(60) = 0 then UserItem.btValue[0]:=nC + 1;
nC:=GetRandomRange(6,30);
if Random(60) = 0 then UserItem.btValue[1]:=nC + 1;
nC:=GetRandomRange(g_Config.nNeckLace202124DCAddValueMaxLimit{6},g_Config.nNeckLace202124DCAddValueRate{20});
if Random(g_Config.nNeckLace202124DCAddRate{30}) = 0 then UserItem.btValue[2]:=nC + 1;
nC:=GetRandomRange(g_Config.nNeckLace202124MCAddValueMaxLimit{6},g_Config.nNeckLace202124MCAddValueRate{20});
if Random(g_Config.nNeckLace202124MCAddRate{30}) = 0 then UserItem.btValue[3]:=nC + 1;
nC:=GetRandomRange(g_Config.nNeckLace202124SCAddValueMaxLimit{6},g_Config.nNeckLace202124SCAddValueRate{20});
if Random(g_Config.nNeckLace202124SCAddRate{30}) = 0 then UserItem.btValue[4]:=nC + 1;
nC:=GetRandomRange(6,12);
if Random(20) < 15 then begin
n10:=(nC + 1) * 1000;
UserItem.DuraMax:=_MIN(65000,UserItem.DuraMax + n10);
UserItem.Dura:=_MIN(65000,UserItem.Dura + n10);
end;
end;
procedure TItemUnit.RandomUpgrade26(UserItem: pTUserItem); //00494C08
var
nC,n10:Integer;
begin
nC:=GetRandomRange(6,20);
if Random(20) = 0 then UserItem.btValue[0]:=nC + 1;
nC:=GetRandomRange(6,20);
if Random(20) = 0 then UserItem.btValue[1]:=nC + 1;
nC:=GetRandomRange(g_Config.nArmRing26DCAddValueMaxLimit{6},g_Config.nArmRing26DCAddValueRate{20});
if Random(g_Config.nArmRing26DCAddRate{30}) = 0 then UserItem.btValue[2]:=nC + 1;
nC:=GetRandomRange(g_Config.nArmRing26MCAddValueMaxLimit{6},g_Config.nArmRing26MCAddValueRate{20});
if Random(g_Config.nArmRing26MCAddRate{30}) = 0 then UserItem.btValue[3]:=nC + 1;
nC:=GetRandomRange(g_Config.nArmRing26SCAddValueMaxLimit{6},g_Config.nArmRing26SCAddValueRate{20});
if Random(g_Config.nArmRing26SCAddRate{30}) = 0 then UserItem.btValue[4]:=nC + 1;
nC:=GetRandomRange(6,12);
if Random(20) < 15 then begin
n10:=(nC + 1) * 1000;
UserItem.DuraMax:=_MIN(65000,UserItem.DuraMax + n10);
UserItem.Dura:=_MIN(65000,UserItem.Dura + n10);
end;
end;
procedure TItemUnit.RandomUpgrade19(UserItem: pTUserItem); //00494D60
var
nC,n10:Integer;
begin
nC:=GetRandomRange(6,20);
if Random(40) = 0 then UserItem.btValue[0]:=nC + 1;
nC:=GetRandomRange(6,20);
if Random(40) = 0 then UserItem.btValue[1]:=nC + 1;
nC:=GetRandomRange(g_Config.nNeckLace19DCAddValueMaxLimit{6},g_Config.nNeckLace19DCAddValueRate{20});
if Random(g_Config.nNeckLace19DCAddRate{30}) = 0 then UserItem.btValue[2]:=nC + 1;
nC:=GetRandomRange(g_Config.nNeckLace19MCAddValueMaxLimit{6},g_Config.nNeckLace19MCAddValueRate{20});
if Random(g_Config.nNeckLace19MCAddRate{30}) = 0 then UserItem.btValue[3]:=nC + 1;
nC:=GetRandomRange(g_Config.nNeckLace19SCAddValueMaxLimit{6},g_Config.nNeckLace19SCAddValueRate{20});
if Random(g_Config.nNeckLace19SCAddRate{30}) = 0 then UserItem.btValue[4]:=nC + 1;
nC:=GetRandomRange(6,10);
if Random(4) < 3 then begin
n10:=(nC + 1) * 1000;
UserItem.DuraMax:=_MIN(65000,UserItem.DuraMax + n10);
UserItem.Dura:=_MIN(65000,UserItem.Dura + n10);
end;
end;
procedure TItemUnit.RandomUpgrade22(UserItem: pTUserItem);//00494EB8
var
nC,n10:Integer;
begin
nC:=GetRandomRange(g_Config.nRing22DCAddValueMaxLimit{6},g_Config.nRing22DCAddValueRate{20});
if Random(g_Config.nRing22DCAddRate{30}) = 0 then UserItem.btValue[2]:=nC + 1;
nC:=GetRandomRange(g_Config.nRing22MCAddValueMaxLimit{6},g_Config.nRing22MCAddValueRate{20});
if Random(g_Config.nRing22MCAddRate{30}) = 0 then UserItem.btValue[3]:=nC + 1;
nC:=GetRandomRange(g_Config.nRing22SCAddValueMaxLimit{6},g_Config.nRing22SCAddValueRate{20});
if Random(g_Config.nRing22SCAddRate{30}) = 0 then UserItem.btValue[4]:=nC + 1;
nC:=GetRandomRange(6,12);
if Random(4) < 3 then begin
n10:=(nC + 1) * 1000;
UserItem.DuraMax:=_MIN(65000,UserItem.DuraMax + n10);
UserItem.Dura:=_MIN(65000,UserItem.Dura + n10);
end;
end;
procedure TItemUnit.RandomUpgrade23(UserItem: pTUserItem);//00494FB8
var
nC,n10:Integer;
begin
nC:=GetRandomRange(6,20);
if Random(40) = 0 then UserItem.btValue[0]:=nC + 1;
nC:=GetRandomRange(6,20);
if Random(40) = 0 then UserItem.btValue[1]:=nC + 1;
nC:=GetRandomRange(g_Config.nRing23DCAddValueMaxLimit{6},g_Config.nRing23DCAddValueRate{20});
if Random(g_Config.nRing23DCAddRate{30}) = 0 then UserItem.btValue[2]:=nC + 1;
nC:=GetRandomRange(g_Config.nRing23MCAddValueMaxLimit{6},g_Config.nRing23MCAddValueRate{20});
if Random(g_Config.nRing23MCAddRate{30}) = 0 then UserItem.btValue[3]:=nC + 1;
nC:=GetRandomRange(g_Config.nRing23SCAddValueMaxLimit{6},g_Config.nRing23SCAddValueRate{20});
if Random(g_Config.nRing23SCAddRate{30}) = 0 then UserItem.btValue[4]:=nC + 1;
nC:=GetRandomRange(6,12);
if Random(4) < 3 then begin
n10:=(nC + 1) * 1000;
UserItem.DuraMax:=_MIN(65000,UserItem.DuraMax + n10);
UserItem.Dura:=_MIN(65000,UserItem.Dura + n10);
end;
end;
procedure TItemUnit.RandomUpgradeHelMet(UserItem: pTUserItem);//00495110
var
nC,n10:Integer;
begin
nC:=GetRandomRange(6,20);
if Random(40) = 0 then UserItem.btValue[0]:=nC + 1;
nC:=GetRandomRange(6,20);
if Random(30) = 0 then UserItem.btValue[1]:=nC + 1;
nC:=GetRandomRange(g_Config.nHelMetDCAddValueMaxLimit{6},g_Config.nHelMetDCAddValueRate{20});
if Random(g_Config.nHelMetDCAddRate{30}) = 0 then UserItem.btValue[2]:=nC + 1;
nC:=GetRandomRange(g_Config.nHelMetMCAddValueMaxLimit{6},g_Config.nHelMetMCAddValueRate{20});
if Random(g_Config.nHelMetMCAddRate{30}) = 0 then UserItem.btValue[3]:=nC + 1;
nC:=GetRandomRange(g_Config.nHelMetSCAddValueMaxLimit{6},g_Config.nHelMetSCAddValueRate{20});
if Random(g_Config.nHelMetSCAddRate{30}) = 0 then UserItem.btValue[4]:=nC + 1;
nC:=GetRandomRange(6,12);
if Random(4) < 3 then begin
n10:=(nC + 1) * 1000;
UserItem.DuraMax:=_MIN(65000,UserItem.DuraMax + n10);
UserItem.Dura:=_MIN(65000,UserItem.Dura + n10);
end;
end;
procedure TItemUnit.UnknowHelmet(UserItem: pTUserItem);//00495268 神秘头盔
var
nC,nRandPoint,n14:Integer;
begin
nRandPoint:={GetRandomRange(4,3) + GetRandomRange(4,8) + }GetRandomRange(g_Config.nUnknowHelMetACAddValueMaxLimit{4},g_Config.nUnknowHelMetACAddRate{20});
if nRandPoint > 0 then UserItem.btValue[0]:=nRandPoint;
n14:=nRandPoint;
nRandPoint:={GetRandomRange(4,3) + GetRandomRange(4,8) + }GetRandomRange(g_Config.nUnknowHelMetMACAddValueMaxLimit{4},g_Config.nUnknowHelMetMACAddRate{20});
if nRandPoint > 0 then UserItem.btValue[1]:=nRandPoint;
Inc(n14,nRandPoint);
nRandPoint:={GetRandomRange(3,15) + }GetRandomRange(g_Config.nUnknowHelMetDCAddValueMaxLimit{3},g_Config.nUnknowHelMetDCAddRate{30});
if nRandPoint > 0 then UserItem.btValue[2]:=nRandPoint;
Inc(n14,nRandPoint);
nRandPoint:={GetRandomRange(3,15) + }GetRandomRange(g_Config.nUnknowHelMetMCAddValueMaxLimit{3},g_Config.nUnknowHelMetMCAddRate{30});
if nRandPoint > 0 then UserItem.btValue[3]:=nRandPoint;
Inc(n14,nRandPoint);
nRandPoint:={GetRandomRange(3,15) + }GetRandomRange(g_Config.nUnknowHelMetSCAddValueMaxLimit{3},g_Config.nUnknowHelMetSCAddRate{30});
if nRandPoint > 0 then UserItem.btValue[4]:=nRandPoint;
Inc(n14,nRandPoint);
nRandPoint:=GetRandomRange(6,30);
if nRandPoint > 0 then begin
nC:=(nRandPoint + 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[0] >= 5 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] * 4 + 35;
exit;
end;
if UserItem.btValue[3] >= 2 then begin
UserItem.btValue[5]:=2;
UserItem.btValue[6]:=UserItem.btValue[3] * 2 + 18;
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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -