humaninfo.pas
来自「FIR引擎最新源码+注册」· PAS 代码 · 共 594 行 · 第 1/2 页
PAS
594 行
CheckBoxGameMaster.Checked := PlayObject.m_boAdminMode;
CheckBoxSuperMan.Checked := PlayObject.m_boSuperMan;
CheckBoxObserver.Checked := PlayObject.m_boObMode;
if PlayObject.m_boDeath then begin
EditHumanStatus.Text := '死亡';
end else
if PlayObject.m_boGhost then begin
EditHumanStatus.Text := '下线';
PlayObject := nil;
end else EditHumanStatus.Text := '在线';
for I := Low(PlayObject.m_UseItems) to High(PlayObject.m_UseItems) do begin
UserItem := @PlayObject.m_UseItems[I];
StdItem := UserEngine.GetStdItem(UserItem.wIndex);
if StdItem = nil then begin
GridUserItem.Cells[1, I + 1] := '';
GridUserItem.Cells[2, I + 1] := '';
GridUserItem.Cells[3, I + 1] := '';
GridUserItem.Cells[4, I + 1] := '';
GridUserItem.Cells[5, I + 1] := '';
GridUserItem.Cells[6, I + 1] := '';
GridUserItem.Cells[7, I + 1] := '';
GridUserItem.Cells[8, I + 1] := '';
GridUserItem.Cells[9, I + 1] := '';
Continue;
end;
Item := StdItem^;
ItemUnit.GetItemAddValue(UserItem, Item);
GridUserItem.Cells[1, I + 1] := Item.Name;
GridUserItem.Cells[2, I + 1] := IntToStr(UserItem.MakeIndex);
GridUserItem.Cells[3, I + 1] := Format('%d/%d', [UserItem.Dura, UserItem.DuraMax]);
GridUserItem.Cells[4, I + 1] := Format('%d/%d', [LoWord(Item.DC), HiWord(Item.DC)]);
GridUserItem.Cells[5, I + 1] := Format('%d/%d', [LoWord(Item.MC), HiWord(Item.MC)]);
GridUserItem.Cells[6, I + 1] := Format('%d/%d', [LoWord(Item.SC), HiWord(Item.SC)]);
GridUserItem.Cells[7, I + 1] := Format('%d/%d', [LoWord(Item.AC), HiWord(Item.AC)]);
GridUserItem.Cells[8, I + 1] := Format('%d/%d', [LoWord(Item.MAC), HiWord(Item.MAC)]);
GridUserItem.Cells[9, I + 1] := Format('%d/%d/%d/%d/%d/%d/%d', [UserItem.btValue[0],
UserItem.btValue[1],
UserItem.btValue[2],
UserItem.btValue[3],
UserItem.btValue[4],
UserItem.btValue[5],
UserItem.btValue[6]]);
end;
if PlayObject.m_ItemList.Count <= 0 then GridBagItem.RowCount := 2
else GridBagItem.RowCount := PlayObject.m_ItemList.Count + 1;
for I := 0 to PlayObject.m_ItemList.Count - 1 do begin
UserItem := PlayObject.m_ItemList.Items[I];
StdItem := UserEngine.GetStdItem(UserItem.wIndex);
if StdItem = nil then begin
GridBagItem.Cells[1, I + 1] := '';
GridBagItem.Cells[2, I + 1] := '';
GridBagItem.Cells[3, I + 1] := '';
GridBagItem.Cells[4, I + 1] := '';
GridBagItem.Cells[5, I + 1] := '';
GridBagItem.Cells[6, I + 1] := '';
GridBagItem.Cells[7, I + 1] := '';
GridBagItem.Cells[8, I + 1] := '';
GridBagItem.Cells[9, I + 1] := '';
Continue;
end;
Item := StdItem^;
ItemUnit.GetItemAddValue(UserItem, Item);
GridBagItem.Cells[0, I + 1] := IntToStr(I);
GridBagItem.Cells[1, I + 1] := Item.Name;
GridBagItem.Cells[2, I + 1] := IntToStr(UserItem.MakeIndex);
GridBagItem.Cells[3, I + 1] := Format('%d/%d', [UserItem.Dura, UserItem.DuraMax]);
GridBagItem.Cells[4, I + 1] := Format('%d/%d', [LoWord(Item.DC), HiWord(Item.DC)]);
GridBagItem.Cells[5, I + 1] := Format('%d/%d', [LoWord(Item.MC), HiWord(Item.MC)]);
GridBagItem.Cells[6, I + 1] := Format('%d/%d', [LoWord(Item.SC), HiWord(Item.SC)]);
GridBagItem.Cells[7, I + 1] := Format('%d/%d', [LoWord(Item.AC), HiWord(Item.AC)]);
GridBagItem.Cells[8, I + 1] := Format('%d/%d', [LoWord(Item.MAC), HiWord(Item.MAC)]);
GridBagItem.Cells[9, I + 1] := Format('%d/%d/%d/%d/%d/%d/%d', [UserItem.btValue[0],
UserItem.btValue[1],
UserItem.btValue[2],
UserItem.btValue[3],
UserItem.btValue[4],
UserItem.btValue[5],
UserItem.btValue[6]]);
end;
if PlayObject.m_StorageItemList.Count <= 0 then GridStorageItem.RowCount := 2
else GridStorageItem.RowCount := PlayObject.m_StorageItemList.Count + 1;
for I := 0 to PlayObject.m_StorageItemList.Count - 1 do begin
UserItem := PlayObject.m_StorageItemList.Items[I];
StdItem := UserEngine.GetStdItem(UserItem.wIndex);
if StdItem = nil then begin
GridStorageItem.Cells[1, I + 1] := '';
GridStorageItem.Cells[2, I + 1] := '';
GridStorageItem.Cells[3, I + 1] := '';
GridStorageItem.Cells[4, I + 1] := '';
GridStorageItem.Cells[5, I + 1] := '';
GridStorageItem.Cells[6, I + 1] := '';
GridStorageItem.Cells[7, I + 1] := '';
GridStorageItem.Cells[8, I + 1] := '';
GridStorageItem.Cells[9, I + 1] := '';
Continue;
end;
Item := StdItem^;
ItemUnit.GetItemAddValue(UserItem, Item);
GridStorageItem.Cells[0, I + 1] := IntToStr(I);
GridStorageItem.Cells[1, I + 1] := Item.Name;
GridStorageItem.Cells[2, I + 1] := IntToStr(UserItem.MakeIndex);
GridStorageItem.Cells[3, I + 1] := Format('%d/%d', [UserItem.Dura, UserItem.DuraMax]);
GridStorageItem.Cells[4, I + 1] := Format('%d/%d', [LoWord(Item.DC), HiWord(Item.DC)]);
GridStorageItem.Cells[5, I + 1] := Format('%d/%d', [LoWord(Item.MC), HiWord(Item.MC)]);
GridStorageItem.Cells[6, I + 1] := Format('%d/%d', [LoWord(Item.SC), HiWord(Item.SC)]);
GridStorageItem.Cells[7, I + 1] := Format('%d/%d', [LoWord(Item.AC), HiWord(Item.AC)]);
GridStorageItem.Cells[8, I + 1] := Format('%d/%d', [LoWord(Item.MAC), HiWord(Item.MAC)]);
GridStorageItem.Cells[9, I + 1] := Format('%d/%d/%d/%d/%d/%d/%d', [UserItem.btValue[0],
UserItem.btValue[1],
UserItem.btValue[2],
UserItem.btValue[3],
UserItem.btValue[4],
UserItem.btValue[5],
UserItem.btValue[6]]);
end;
{$IF HEROVERSION = 1}
if PlayObject.m_MyHero = nil then Exit;
EditHeroName.Text := PlayObject.m_MyHero.m_sCharName;
EditHeroMap.Text := PlayObject.m_MyHero.m_sMapName + '(' + PlayObject.m_PEnvir.sMapDesc + ')';
EditHeroXY.Text := IntToStr(PlayObject.m_MyHero.m_nCurrX) + ':' + IntToStr(PlayObject.m_MyHero.m_nCurrY);
EditHeroLevel.Value := PlayObject.m_MyHero.m_Abil.Level;
EditHeroPKPoint.Value := PlayObject.m_MyHero.m_nPkPoint;
EditHeroExp.Value := PlayObject.m_MyHero.m_Abil.Exp;
EditHeroMaxExp.Value := PlayObject.m_MyHero.m_Abil.MaxExp;
for I := Low(PlayObject.m_MyHero.m_UseItems) to High(PlayObject.m_MyHero.m_UseItems) do begin
UserItem := @PlayObject.m_MyHero.m_UseItems[I];
StdItem := UserEngine.GetStdItem(UserItem.wIndex);
if StdItem = nil then begin
GridHeroUserItem.Cells[1, I + 1] := '';
GridHeroUserItem.Cells[2, I + 1] := '';
GridHeroUserItem.Cells[3, I + 1] := '';
GridHeroUserItem.Cells[4, I + 1] := '';
GridHeroUserItem.Cells[5, I + 1] := '';
GridHeroUserItem.Cells[6, I + 1] := '';
GridHeroUserItem.Cells[7, I + 1] := '';
GridHeroUserItem.Cells[8, I + 1] := '';
GridHeroUserItem.Cells[9, I + 1] := '';
Continue;
end;
Item := StdItem^;
ItemUnit.GetItemAddValue(UserItem, Item);
GridHeroUserItem.Cells[1, I + 1] := Item.Name;
GridHeroUserItem.Cells[2, I + 1] := IntToStr(UserItem.MakeIndex);
GridHeroUserItem.Cells[3, I + 1] := Format('%d/%d', [UserItem.Dura, UserItem.DuraMax]);
GridHeroUserItem.Cells[4, I + 1] := Format('%d/%d', [LoWord(Item.DC), HiWord(Item.DC)]);
GridHeroUserItem.Cells[5, I + 1] := Format('%d/%d', [LoWord(Item.MC), HiWord(Item.MC)]);
GridHeroUserItem.Cells[6, I + 1] := Format('%d/%d', [LoWord(Item.SC), HiWord(Item.SC)]);
GridHeroUserItem.Cells[7, I + 1] := Format('%d/%d', [LoWord(Item.AC), HiWord(Item.AC)]);
GridHeroUserItem.Cells[8, I + 1] := Format('%d/%d', [LoWord(Item.MAC), HiWord(Item.MAC)]);
GridHeroUserItem.Cells[9, I + 1] := Format('%d/%d/%d/%d/%d/%d/%d', [UserItem.btValue[0],
UserItem.btValue[1],
UserItem.btValue[2],
UserItem.btValue[3],
UserItem.btValue[4],
UserItem.btValue[5],
UserItem.btValue[6]]);
end;
if PlayObject.m_MyHero.m_ItemList.Count <= 0 then GridBagItem.RowCount := 2
else GridBagItem.RowCount := PlayObject.m_MyHero.m_ItemList.Count + 1;
for I := 0 to PlayObject.m_MyHero.m_ItemList.Count - 1 do begin
UserItem := PlayObject.m_MyHero.m_ItemList.Items[I];
StdItem := UserEngine.GetStdItem(UserItem.wIndex);
if StdItem = nil then begin
GridHeroBagItem.Cells[1, I + 1] := '';
GridHeroBagItem.Cells[2, I + 1] := '';
GridHeroBagItem.Cells[3, I + 1] := '';
GridHeroBagItem.Cells[4, I + 1] := '';
GridHeroBagItem.Cells[5, I + 1] := '';
GridHeroBagItem.Cells[6, I + 1] := '';
GridHeroBagItem.Cells[7, I + 1] := '';
GridHeroBagItem.Cells[8, I + 1] := '';
GridHeroBagItem.Cells[9, I + 1] := '';
Continue;
end;
Item := StdItem^;
ItemUnit.GetItemAddValue(UserItem, Item);
GridHeroBagItem.Cells[0, I + 1] := IntToStr(I);
GridHeroBagItem.Cells[1, I + 1] := Item.Name;
GridHeroBagItem.Cells[2, I + 1] := IntToStr(UserItem.MakeIndex);
GridHeroBagItem.Cells[3, I + 1] := Format('%d/%d', [UserItem.Dura, UserItem.DuraMax]);
GridHeroBagItem.Cells[4, I + 1] := Format('%d/%d', [LoWord(Item.DC), HiWord(Item.DC)]);
GridHeroBagItem.Cells[5, I + 1] := Format('%d/%d', [LoWord(Item.MC), HiWord(Item.MC)]);
GridHeroBagItem.Cells[6, I + 1] := Format('%d/%d', [LoWord(Item.SC), HiWord(Item.SC)]);
GridHeroBagItem.Cells[7, I + 1] := Format('%d/%d', [LoWord(Item.AC), HiWord(Item.AC)]);
GridHeroBagItem.Cells[8, I + 1] := Format('%d/%d', [LoWord(Item.MAC), HiWord(Item.MAC)]);
GridHeroBagItem.Cells[9, I + 1] := Format('%d/%d/%d/%d/%d/%d/%d', [UserItem.btValue[0],
UserItem.btValue[1],
UserItem.btValue[2],
UserItem.btValue[3],
UserItem.btValue[4],
UserItem.btValue[5],
UserItem.btValue[6]]);
end;
{$IFEND}
end;
procedure TfrmHumanInfo.TimerTimer(Sender: TObject);
begin
if PlayObject = nil then Exit;
if PlayObject.m_boGhost then begin
EditHumanStatus.Text := '下线';
PlayObject := nil;
Exit;
end;
if boRefHuman then RefHumanInfo();
end;
procedure TfrmHumanInfo.CheckBoxMonitorClick(Sender: TObject);
begin
boRefHuman := CheckBoxMonitor.Checked;
ButtonSave.Enabled := not boRefHuman;
end;
procedure TfrmHumanInfo.ButtonKickClick(Sender: TObject);
begin
if PlayObject = nil then Exit;
PlayObject.m_boEmergencyClose := True;
PlayObject.m_boNotOnlineAddExp := False;
PlayObject.m_boPlayOffLine := False;
ButtonKick.Enabled := False;
end;
procedure TfrmHumanInfo.ButtonSaveClick(Sender: TObject);
var
nLevel: Integer;
nGold: Integer;
nPKPOINT: Integer;
nGameGold: Integer;
nGamePoint: Integer;
nCreditPoint: Integer;
nBonusPoint: Integer;
boGameMaster: Boolean;
boObServer: Boolean;
boSuperman: Boolean;
sAutoSendMsg: string;
begin
if PlayObject = nil then Exit;
sAutoSendMsg := Trim(EditSayMsg.Text);
nLevel := EditLevel.Value;
nGold := EditGold.Value;
nPKPOINT := EditPKPoint.Value;
nGameGold := EditGameGold.Value;
nGamePoint := EditGamePoint.Value;
nCreditPoint := EditCreditPoint.Value;
nBonusPoint := EditBonusPoint.Value;
boGameMaster := CheckBoxGameMaster.Checked;
boObServer := CheckBoxObserver.Checked;
boSuperman := CheckBoxSuperMan.Checked;
if (nLevel < 0) or (nLevel > High(Word)) or (nGold < 0) or (nGold > 200000000) or (nPKPOINT < 0) or
(nPKPOINT > 2000000) or (nCreditPoint < 0) or (nCreditPoint > High(Byte)) or (nBonusPoint < 0) or (nBonusPoint > 20000000) then begin
MessageBox(Handle, '输入数据不正确!!!', '错误信息', MB_OK);
Exit;
end;
PlayObject.m_sAutoSendMsg := sAutoSendMsg;
PlayObject.m_Abil.Level := nLevel;
PlayObject.m_nGold := nGold;
PlayObject.m_nPkPoint := nPKPOINT;
PlayObject.m_nGameGold := nGameGold;
PlayObject.m_nGamePoint := nGamePoint;
PlayObject.m_btCreditPoint := nCreditPoint;
PlayObject.m_nBonusPoint := nBonusPoint;
PlayObject.m_boAdminMode := boGameMaster;
PlayObject.m_boObMode := boObServer;
PlayObject.m_boSuperMan := boSuperman;
PlayObject.RecalcAbilitys;
PlayObject.GoldChanged;
{$IF HEROVERSION = 1}
if PlayObject.m_MyHero <> nil then begin
nLevel := EditHeroLevel.Value;
nPKPOINT := EditHeroPKPoint.Value;
PlayObject.m_MyHero.m_Abil.Level := nLevel;
PlayObject.m_MyHero.m_nPkPoint := nPKPOINT;
PlayObject.m_MyHero.RecalcAbilitys;
PlayObject.m_MyHero.HasLevelUp(0);
end;
{$IFEND}
MessageBox(Handle, '人物数据已保存。', '提示信息', MB_OK);
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?