📄 sdk.pas
字号:
SellOffList := List;
break;
end;
end;
finally
UnLock();
end;
end;
procedure TSellOffGoodList.GetUserSellOffGoodListByMakeIndex(nMakeIndex: Integer; var SellOffInfo: pTSellOffInfo);
var
i, ii: Integer;
List: TList;
begin
Lock();
try
SellOffInfo := nil;
for i := 0 to Count - 1 do begin
if Count <= 0 then break;
List := TList(Items[i]);
if List.Count <= 0 then Continue;
for ii := List.Count - 1 downto 0 do begin
if pTSellOffInfo(List.Items[ii]).UseItems.MakeIndex = nMakeIndex then begin
SellOffInfo := pTSellOffInfo(List.Items[ii]);
break;
end;
end;
end;
finally
UnLock();
end;
end;
procedure TSellOffGoodList.GetUserSellOffItem(sItemName: string; nMakeIndex: Integer; var SellOffInfo: pTSellOffInfo; var StdItem: pTStdItem);
var
i, ii, n01: Integer;
List: TList;
sUserItemName: string;
begin
Lock();
try
SellOffInfo := nil;
StdItem := nil;
n01 := 0;
for i := 0 to Count - 1 do begin
if Count <= 0 then break;
List := TList(Items[i]);
if List.Count <= 0 then Continue;
SellOffInfo := pTSellOffInfo(List.Items[0]);
sUserItemName := '';
if SellOffInfo.UseItems.btValue[13] = 1 then
sUserItemName := ItemUnit.GetCustomItemName(SellOffInfo.UseItems.MakeIndex, SellOffInfo.UseItems.wIndex);
if sUserItemName = '' then
sUserItemName := UserEngine.GetStdItemName(SellOffInfo.UseItems.wIndex);
StdItem := UserEngine.GetStdItem(SellOffInfo.UseItems.wIndex);
if (StdItem <> nil) and (CompareText(sUserItemName, sItemName) = 0) then begin
for ii := 0 to List.Count - 1 do begin
SellOffInfo := pTSellOffInfo(List.Items[ii]);
if (StdItem.StdMode <= 4) or
(StdItem.StdMode = 42) or
(StdItem.StdMode = 31) or
(SellOffInfo.UseItems.MakeIndex = nMakeIndex) then begin
Inc(n01);
break;
end;
end;
break;
end;
end;
if n01 = 0 then begin
SellOffInfo := nil;
StdItem := nil;
end;
finally
UnLock();
end;
end;
function TSellOffGoodList.GetUserSellOffCount(sCharName: string): Integer;
var
ItemList: TList;
i, ii: Integer;
begin
Lock();
try
Result := -1;
for i := 0 to Count - 1 do begin
if Count <= 0 then break;
ItemList := TList(Items[i]);
if ItemList.Count <= 0 then Continue;
for ii := ItemList.Count - 1 downto 0 do begin
if ItemList.Count <= 0 then Continue;
if CompareText(pTSellOffInfo(ItemList.Items[ii]).sCharName, sCharName) = 0 then
Inc(Result);
end;
end;
finally
UnLock();
end;
end;
function TSellOffGoodList.GetUserLimitSellOffCount(sCharName: string): Boolean;
var
ItemList: TList;
i, ii: Integer;
n01: Integer;
begin
Lock();
try
n01 := 0;
Result := False;
for i := 0 to Count - 1 do begin
if Count <= 0 then break;
ItemList := TList(Items[i]);
if ItemList.Count <= 0 then Continue;
for ii := ItemList.Count - 1 downto 0 do begin
if ItemList.Count <= 0 then Continue;
if CompareText(pTSellOffInfo(ItemList.Items[ii]).sCharName, sCharName) = 0 then begin
Inc(n01);
if n01 >= g_Config.nUserSellOffCount then begin
Result := TRUE;
break;
end;
end;
end;
end;
finally
UnLock();
end;
end;
procedure TSellOffGoodList.GetUserSellOffListByIndex(nIndex: Integer; var SellOffList: TList); //0049F118
var
i: Integer;
List: TList;
begin
Lock();
try
SellOffList := nil;
for i := 0 to Count - 1 do begin
if nIndex <= 0 then break;
List := TList(Items[i]);
if List.Count > 0 then begin
if pTSellOffInfo(List.Items[0]).UseItems.wIndex = nIndex then begin
SellOffList := List;
break;
end;
end;
end;
finally
UnLock();
end;
end;
function TSellOffGoodList.AddItemToSellOffGoodsList(SellOffInfo: pTSellOffInfo): Boolean;
var
ItemList: TList;
begin
Lock();
try
Result := False;
GetUserSellOffListByIndex(SellOffInfo.UseItems.wIndex, ItemList);
if ItemList = nil then begin
ItemList := TList.Create;
Add(ItemList);
end;
ItemList.Insert(0, SellOffInfo);
Inc(m_nChangeCount);
Result := TRUE;
finally
UnLock();
end;
end;
function TSellOffGoodList.DelSellOffItem(nMakeIndex: Integer): Boolean;
var
i, ii: Integer;
List: TList;
begin
Lock();
Result := False;
try
for i := Count - 1 downto 0 do begin
if Count <= 0 then break;
List := TList(Items[i]);
if List.Count <= 0 then Continue;
for ii := List.Count - 1 downto 0 do begin
if pTSellOffInfo(List.Items[ii]).UseItems.MakeIndex = nMakeIndex then begin
DisPose(pTSellOffInfo(List.Items[ii]));
List.Delete(ii);
if List.Count <= 0 then begin
List.Free;
Delete(i);
end;
Inc(m_nChangeCount);
Result := TRUE;
break;
end;
end;
end;
finally
UnLock();
end;
end;
function TSellOffGoodList.SaveSellOffGoodList(): Boolean;
var
i, ii: Integer;
sFileName: string;
FileHandle: Integer;
SellOffInfo: pTSellOffInfo;
List: TList;
Header420: TSellOffHeader;
nChangeCount: Integer;
begin
Lock();
try
Result := False;
if (g_boExitServer) and (m_nChangeCount <= 0) then m_nChangeCount := 1;
if (not FUpDateSellOff) and (m_nChangeCount > 0) then begin
nChangeCount := m_nChangeCount;
FUpDateSellOff := TRUE;
sFileName := g_Config.sEnvirDir + '\Market_SellOff\UserSellOff.sell';
if FileExists(sFileName) then begin
FileHandle := FileOpen(sFileName, fmOpenWrite or fmShareDenyNone);
end else begin
FileHandle := FileCreate(sFileName);
end;
if FileHandle > 0 then begin
FillChar(Header420, SizeOf(TSellOffHeader), #0);
for i := 0 to Count - 1 do begin
List := TList(Items[i]);
if List <> nil then begin
Inc(Header420.nItemCount, List.Count);
end;
end;
FileWrite(FileHandle, Header420, SizeOf(TSellOffHeader));
for i := 0 to Count - 1 do begin
List := TList(Items[i]);
for ii := 0 to List.Count - 1 do begin
if (List = nil) or (List.Count <= 0) then Continue;
SellOffInfo := pTSellOffInfo(List.Items[ii]);
if SellOffInfo <> nil then
FileWrite(FileHandle, SellOffInfo^, SizeOf(TSellOffInfo));
end;
end;
FileClose(FileHandle);
end;
FUpDateSellOff := False;
Dec(m_nChangeCount, nChangeCount);
Result := TRUE;
end;
finally
UnLock();
end;
end;
{TSellOffGoldList}
constructor TSellOffGoldList.Create;
begin
inherited Create;
FRecCount := 0;
FUpDateSellOff := False;
m_nChangeCount := 0;
end;
destructor TSellOffGoldList.Destroy;
begin
inherited;
end;
procedure TSellOffGoldList.UnLoadSellOffGoldList();
var
i: Integer;
begin
Lock();
try
{SaveSellOffGoldList();
FUpDateSellOff := True;
for I := 0 to Count - 1 do begin
if Count <= 0 then Break;
Dispose(pTSellOffInfo(Items[I]));
end; }
finally
UnLock();
end;
end;
procedure TSellOffGoldList.LoadSellOffGoldList();
var
i: Integer;
sFileName: string;
FileHandle: Integer;
SellOffInfo: pTSellOffInfo;
Header420: TSellOffHeader;
begin
Lock();
try
sFileName := g_Config.sEnvirDir + '\Market_SellOff\UserSellOff.gold';
if FileExists(sFileName) then begin
FileHandle := FileOpen(sFileName, fmOpenRead or fmShareDenyNone);
if FileHandle > 0 then begin
if FileRead(FileHandle, Header420, SizeOf(TSellOffHeader)) = SizeOf(TSellOffHeader) then begin
FRecCount := Header420.nItemCount;
for i := 0 to Header420.nItemCount - 1 do begin
New(SellOffInfo);
FillChar(SellOffInfo.UseItems, SizeOf(TUserItem), #0);
if (FileRead(FileHandle, SellOffInfo^, SizeOf(TSellOffInfo)) = SizeOf(TSellOffInfo)) and (SellOffInfo.UseItems.wIndex > 0) then begin
Self.Add(SellOffInfo);
end else begin
DisPose(SellOffInfo);
end;
end;
FileClose(FileHandle);
end;
end;
end else begin
FileHandle := FileCreate(sFileName);
if FileHandle > 0 then begin
Header420.nItemCount := 0;
FileWrite(FileHandle, Header420, SizeOf(TSellOffHeader));
FileClose(FileHandle);
end;
end;
finally
UnLock();
end;
end;
procedure TSellOffGoldList.GetUserSellOffGoldListByChrName(sChrName: string; var SellOffList: TList);
var
i: Integer;
SellOffInfo: pTSellOffInfo;
begin
Lock();
try
for i := 0 to Count - 1 do begin
if Count <= 0 then break;
SellOffInfo := pTSellOffInfo(Items[i]);
if (SellOffInfo <> nil) and (CompareText(SellOffInfo.sCharName, sChrName) = 0) and (SellOffInfo.nSellGold > 0) then
SellOffList.Add(SellOffInfo);
end;
finally
UnLock();
end;
end;
function TSellOffGoldList.AddItemToSellOffGoldList(SellOffInfo: pTSellOffInfo): Boolean;
begin
Lock();
try
Result := False;
Add(SellOffInfo);
Inc(m_nChangeCount);
Result := TRUE;
finally
UnLock();
end;
end;
function TSellOffGoldList.DelSellOffGoldItem(nMakeIndex: Integer): Boolean;
var
i: Integer;
begin
Lock();
try
Result := False;
for i := Count - 1 downto 0 do begin
if Count <= 0 then break;
if pTSellOffInfo(Items[i]).UseItems.MakeIndex = nMakeIndex then begin
DisPose(pTSellOffInfo(Items[i]));
Delete(i);
Inc(m_nChangeCount);
Result := TRUE;
break;
end;
end;
finally
UnLock();
end;
end;
function TSellOffGoldList.SaveSellOffGoldList(): Boolean;
var
i: Integer;
sFileName: string;
FileHandle: Integer;
SellOffInfo: pTSellOffInfo;
Header420: TSellOffHeader; //Inc(m_nChangeCount);
nChangeCount: Integer;
begin
Lock();
try
Result := False;
if (g_boExitServer) and (m_nChangeCount <= 0) then m_nChangeCount := 1;
if (not FUpDateSellOff) and (m_nChangeCount > 0) then begin
nChangeCount := m_nChangeCount;
FUpDateSellOff := TRUE;
sFileName := g_Config.sEnvirDir + '\Market_SellOff\UserSellOff.gold';
if FileExists(sFileName) then begin
FileHandle := FileOpen(sFileName, fmOpenWrite or fmShareDenyNone);
end else begin
FileHandle := FileCreate(sFileName);
end;
if FileHandle > 0 then begin
FillChar(Header420, SizeOf(TSellOffHeader), #0);
Header420.nItemCount := Count;
FileWrite(FileHandle, Header420, SizeOf(TSellOffHeader));
for i := 0 to Count - 1 do begin
SellOffInfo := Items[i];
if SellOffInfo <> nil then
FileWrite(FileHandle, SellOffInfo^, SizeOf(TSellOffInfo));
end;
FileClose(FileHandle);
end;
FUpDateSellOff := False;
Dec(m_nChangeCount, nChangeCount);
Result := TRUE;
end;
finally
UnLock();
end;
end;
initialization
finalization
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -