亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? objhero.pas

?? FIR引擎最新源碼+注冊
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
                  if StdItem.AniCount = 0 then begin
                    if (m_ItemList.Count + 6 - 1) <= m_nItemBagCount then begin
                      m_ItemList.Delete(I);
                      DisPoseAndNil(UserItem);
                      GetUnBindItems(GetUnbindItemName(StdItem.Shape), 6);
                      boEatOK := True;
                    end;
                  end;
                end;
            end;
            Break;
          end;
        end;
      end;
    end;
  end else begin
    m_Master.SendMsg(g_ManageNPC, RM_MENU_OK, 0, Integer(m_Master), 0, 0, g_sCanotUseItemMsg);
  end;
  if boEatOK then begin
    WeightChanged();
    SendDefMessage(SM_HEROEAT_OK, 0, 0, 0, 0, '');
    if StdItem.NeedIdentify = 1 then
      AddGameDataLog('11' + #9 +
        m_sMapName + #9 +
        IntToStr(m_nCurrX) + #9 +
        IntToStr(m_nCurrY) + #9 +
        m_sCharName + #9 +
        //UserEngine.GetStdItemName(UserItem34.wIndex) + #9 +
        StdItem.Name + #9 +
        IntToStr(UserItem34.MakeIndex) + #9 +
        '1' + #9 +
        '0');
  end else begin
    SendDefMessage(SM_HEROEAT_FAIL, 0, 0, 0, 0, '');
  end;
  if (UserItem <> nil) and boSendUpDate then begin
    SendUpdateItem(UserItem);
  end;
end;

procedure THeroObject.WeightChanged;
begin
  if m_Master = nil then Exit;
  m_WAbil.Weight := RecalcBagWeight();
  if m_btRaceServer = RC_HEROOBJECT then begin
    SendUpdateMsg(m_Master, RM_HEROWEIGHTCHANGED, 0, 0, 0, 0, '');
  end;
end;

procedure THeroObject.RefMyStatus();
begin
  RecalcAbilitys();
  m_Master.SendMsg(m_Master, RM_MYSTATUS, 0, 1, 0, 0, '');
end;

function THeroObject.EatItems(StdItem: pTStdItem): Boolean;
var
  bo06: Boolean;
  nOldStatus: Integer;
begin
  Result := False;
  if m_PEnvir.m_boNODRUG then begin
    SysMsg(sCanotUseDrugOnThisMap, c_Red, t_Hint);
    Exit;
  end;
  case StdItem.StdMode of
    0: begin
        case StdItem.Shape of
          1: begin
              IncHealthSpell(StdItem.AC, StdItem.MAC);
              Result := True;
            end;
          2: begin
              m_boUserUnLockDurg := True;
              Result := True;
            end;
        else begin
            if (StdItem.AC > 0) then begin
              Inc(m_nIncHealth, StdItem.AC);
            end;
            if (StdItem.MAC > 0) then begin
              Inc(m_nIncSpell, StdItem.MAC);
            end;
            Result := True;
          end;
        end;
      end;
    1: Result := False;
    {1: begin
        nOldStatus := GetMyStatus();
        Inc(m_nHungerStatus, StdItem.DuraMax div 10);
        m_nHungerStatus := _MIN(5000, m_nHungerStatus);
        if nOldStatus <> GetMyStatus() then
          RefMyStatus();
        Result := True;
      end;}
    3: begin
        if StdItem.Shape = 12 then begin
          bo06 := False;
          if LoWord(StdItem.DC) > 0 then begin
            m_wStatusArrValue[0 {0x218}] := LoWord(StdItem.DC);
            m_dwStatusArrTimeOutTick[0 {0x220}] := GetTickCount + HiWord(StdItem.MAC) * 1000;
            SysMsg('攻擊力增加' + IntToStr(HiWord(StdItem.MAC)) + '秒', c_Green, t_Hint);
            bo06 := True;
          end;
          if LoWord(StdItem.MC) > 0 then begin
            m_wStatusArrValue[1 {0x219}] := LoWord(StdItem.MC);
            m_dwStatusArrTimeOutTick[1 {0x224}] := GetTickCount + HiWord(StdItem.MAC) * 1000;
            SysMsg('魔法力增加' + IntToStr(HiWord(StdItem.MAC)) + '秒', c_Green, t_Hint);
            bo06 := True;
          end;
          if LoByte(StdItem.SC) > 0 then begin
            m_wStatusArrValue[2 {0x21A}] := LoWord(StdItem.SC);
            m_dwStatusArrTimeOutTick[2 {0x228}] := GetTickCount + HiWord(StdItem.MAC) * 1000;
            SysMsg('道術增加' + IntToStr(HiWord(StdItem.MAC)) + '秒', c_Green, t_Hint);
            bo06 := True;
          end;
          if HiWord(StdItem.AC) > 0 then begin
            m_wStatusArrValue[3 {0x21B}] := HiWord(StdItem.AC);
            m_dwStatusArrTimeOutTick[3 {0x22C}] := GetTickCount + HiWord(StdItem.MAC) * 1000;
            SysMsg('攻擊速度增加' + IntToStr(HiWord(StdItem.MAC)) + '秒', c_Green, t_Hint);
            bo06 := True;
          end;
          if LoWord(StdItem.AC) > 0 then begin
            m_wStatusArrValue[4 {0x21C}] := LoWord(StdItem.AC);
            m_dwStatusArrTimeOutTick[4 {0x230}] := GetTickCount + HiWord(StdItem.MAC) * 1000;
            SysMsg('生命值增加' + IntToStr(HiWord(StdItem.MAC)) + '秒', c_Green, t_Hint);
            bo06 := True;
          end;
          if LoWord(StdItem.MAC) > 0 then begin
            m_wStatusArrValue[5 {0x21D}] := LoWord(StdItem.MAC);
            m_dwStatusArrTimeOutTick[5 {0x234}] := GetTickCount + HiWord(StdItem.MAC) * 1000;
            SysMsg('魔法值增加' + IntToStr(HiWord(StdItem.MAC)) + '秒', c_Green, t_Hint);
            bo06 := True;
          end;
          if bo06 then begin
            RecalcAbilitys();
            SendMsg(m_Master, RM_HEROABILITY, 0, 0, 0, 0, '');
            SendMsg(m_Master, RM_HEROSUBABILITY, 0, 0, 0, 0, '');
            Result := True;
          end;
        end else begin
          Result := EatUseItems(StdItem.Shape);
        end;
      end;
  end;
end;

function THeroObject.ReadBook(StdItem: pTStdItem): Boolean;
var
  Magic: pTMagic;
  UserMagic: pTUserMagic;
  HeroObject: THeroObject;
begin
  Result := False;
  Magic := UserEngine.FindHeroMagic(StdItem.Name);
  if Magic <> nil then begin
    if not IsTrainingSkill(Magic.wMagicId) then begin
      if (Magic.sDescr = '英雄') and ((Magic.btJob = 99) or (Magic.btJob = m_btJob)) then begin
        if (Magic.wMagicId in [60, 65]) and (Magic.wMagicId <> GetTogetherUseSpell) then Exit;
        if m_Abil.Level >= Magic.TrainLevel[0] then begin
          New(UserMagic);
          UserMagic.MagicInfo := Magic;
          UserMagic.wMagIdx := Magic.wMagicId;
          UserMagic.btKey := 0;
          UserMagic.btLevel := 0;
          UserMagic.nTranPoint := 0;
          m_MagicList.Add(UserMagic);
          RecalcAbilitys();
          SendAddMagic(UserMagic);
          Result := True;
        end;
      end;
    end;
  end;
end;

procedure THeroObject.SendAddMagic(UserMagic: pTUserMagic);
var
  ClientMagic: TClientMagic;
begin
  ClientMagic.Key := Char(UserMagic.btKey);
  ClientMagic.Level := UserMagic.btLevel;
  ClientMagic.CurTrain := UserMagic.nTranPoint;
  ClientMagic.Def := UserMagic.MagicInfo^;
  m_DefMsg := MakeDefaultMsg(SM_HEROADDMAGIC, 0, 0, 0, 1);
  SendSocket(@m_DefMsg, EncodeBuffer(@ClientMagic, SizeOf(TClientMagic)));
end;

procedure THeroObject.SendDelMagic(UserMagic: pTUserMagic);
begin
  m_DefMsg := MakeDefaultMsg(SM_HERODELMAGIC, UserMagic.wMagIdx, 0, 0, 1);
  SendSocket(@m_DefMsg, '');
end;

function THeroObject.IsEnoughBag(): Boolean;
begin
  Result := False;
  if m_ItemList.Count < m_nItemBagCount then
    Result := True;
end;

procedure THeroObject.MakeWeaponUnlock;
begin
  if m_UseItems[U_WEAPON].wIndex <= 0 then Exit;
  if m_UseItems[U_WEAPON].btValue[3] > 0 then begin
    Dec(m_UseItems[U_WEAPON].btValue[3]);
    SysMsg(g_sTheWeaponIsCursed, c_Red, t_Hint);
  end else begin
    if m_UseItems[U_WEAPON].btValue[4] < 10 then begin
      Inc(m_UseItems[U_WEAPON].btValue[4]);
      SysMsg(g_sTheWeaponIsCursed, c_Red, t_Hint);
    end;
  end;
  if m_btRaceServer = RC_HEROOBJECT then begin
    RecalcAbilitys();
    SendMsg(m_Master, RM_HEROABILITY, 0, 0, 0, 0, '');
    SendMsg(m_Master, RM_HEROSUBABILITY, 0, 0, 0, 0, '');
  end;
end;

//使用祝福油
function THeroObject.WeaptonMakeLuck: Boolean;
var
  StdItem: pTStdItem;
  nRand: Integer;
  boMakeLuck: Boolean;
begin
  Result := False;
  if m_UseItems[U_WEAPON].wIndex <= 0 then Exit;
  nRand := 0;
  StdItem := UserEngine.GetStdItem(m_UseItems[U_WEAPON].wIndex);
  if StdItem <> nil then begin
    nRand := abs((HiWord(StdItem.DC) - LoWord(StdItem.DC))) div 5;
  end;
  if Random(g_Config.nWeaponMakeUnLuckRate {20}) = 1 then begin
    MakeWeaponUnlock();
  end else begin
    boMakeLuck := False;
    if m_UseItems[U_WEAPON].btValue[4] > 0 then begin
      Dec(m_UseItems[U_WEAPON].btValue[4]);
      SysMsg(g_sWeaptonMakeLuck {'武器被加幸運了...'}, c_Green, t_Hint);
      boMakeLuck := True;
    end else if m_UseItems[U_WEAPON].btValue[3] < g_Config.nWeaponMakeLuckPoint1 {1} then begin
      Inc(m_UseItems[U_WEAPON].btValue[3]);
      SysMsg(g_sWeaptonMakeLuck {'武器被加幸運了...'}, c_Green, t_Hint);
      boMakeLuck := True;
    end else if (m_UseItems[U_WEAPON].btValue[3] < g_Config.nWeaponMakeLuckPoint2 {3}) and (Random(nRand + g_Config.nWeaponMakeLuckPoint2Rate {6}) = 1) then begin
      Inc(m_UseItems[U_WEAPON].btValue[3]);
      SysMsg(g_sWeaptonMakeLuck {'武器被加幸運了...'}, c_Green, t_Hint);
      boMakeLuck := True;
    end else if (m_UseItems[U_WEAPON].btValue[3] < g_Config.nWeaponMakeLuckPoint3 {7}) and (Random(nRand * g_Config.nWeaponMakeLuckPoint3Rate {10 + 30}) = 1) then begin
      Inc(m_UseItems[U_WEAPON].btValue[3]);
      SysMsg(g_sWeaptonMakeLuck {'武器被加幸運了...'}, c_Green, t_Hint);
      boMakeLuck := True;
    end;
    if m_btRaceServer = RC_HEROOBJECT then begin
      RecalcAbilitys();
      SendMsg(m_Master, RM_HEROABILITY, 0, 0, 0, 0, '');
      SendMsg(m_Master, RM_HEROSUBABILITY, 0, 0, 0, 0, '');
    end;
    if not boMakeLuck then SysMsg(g_sWeaptonNotMakeLuck {'無效'}, c_Green, t_Hint);
  end;
  Result := True;
end;

function THeroObject.RepairWeapon: Boolean;
var
  nDura: Integer;
  UserItem: pTUserItem;
begin
  Result := False;
  UserItem := @m_UseItems[U_WEAPON];
  if (UserItem.wIndex <= 0) or (UserItem.DuraMax <= UserItem.Dura) then Exit;
  Dec(UserItem.DuraMax, (UserItem.DuraMax - UserItem.Dura) div g_Config.nRepairItemDecDura {30});
  nDura := _MIN(5000, UserItem.DuraMax - UserItem.Dura);
  if nDura > 0 then begin
    Inc(UserItem.Dura, nDura);
    if m_btRaceServer = RC_HEROOBJECT then begin
      SendMsg(m_Master, RM_HERODURACHANGE, 1, UserItem.Dura, UserItem.DuraMax, 0, '');
      SysMsg(g_sWeaponRepairSuccess {'武器修復成功...'}, c_Green, t_Hint);
    end;
    Result := True;
  end;
end;

function THeroObject.SuperRepairWeapon: Boolean;
begin
  Result := False;
  if m_UseItems[U_WEAPON].wIndex <= 0 then Exit;
  m_UseItems[U_WEAPON].Dura := m_UseItems[U_WEAPON].DuraMax;
  if m_btRaceServer = RC_HEROOBJECT then begin
    SendMsg(m_Master, RM_HERODURACHANGE, 1, m_UseItems[U_WEAPON].Dura, m_UseItems[U_WEAPON].DuraMax, 0, '');
    SysMsg(g_sWeaponRepairSuccess {'武器修復成功...'}, c_Green, t_Hint);
  end;
  Result := True;
end;

function THeroObject.AbilityUp(UserMagic: pTUserMagic): Boolean;
var
  nSpellPoint, n14: Integer;
begin
  Result := False;
  nSpellPoint := GetSpellPoint(UserMagic);
  if nSpellPoint > 0 then begin
    if m_WAbil.MP < nSpellPoint then Exit;
    n14 := (Random(10 + UserMagic.btLevel) + UserMagic.btLevel) * UserMagic.btLevel;
    m_dwStatusArrTimeOutTick[2 {0x228}] := GetTickCount + n14 * 1000;
    m_wStatusArrValue[2 {0x218}] := MakeLong(LoWord(m_WAbil.SC), HiWord(m_WAbil.SC) - 2 - (m_Abil.Level div 7)) * 2;
    SysMsg('道術增加' + IntToStr(m_wStatusArrValue[2 {0x218}]) + '點 ' + IntToStr(n14) + '秒', c_Green, t_Hint);
    RecalcAbilitys();
    SendMsg(m_Master, RM_HEROABILITY, 0, 0, 0, 0, '');
    SendMsg(m_Master, RM_HEROSUBABILITY, 0, 0, 0, 0, '');
    Result := True;
  end;
end;

procedure THeroObject.GainExp(dwExp: LongWord);
begin
  WinExp(dwExp);
end;

procedure THeroObject.WinExp(dwExp: LongWord);
begin
  if m_Abil.Level > g_Config.nLimitExpLevel then begin
    dwExp := g_Config.nLimitExpValue;
    GetExp(dwExp);
  end else
    if dwExp > 0 then begin
    dwExp := g_Config.dwKillMonExpMultiple * dwExp; //系統指定殺怪經驗倍數
    dwExp := LongWord(m_nKillMonExpMultiple) * dwExp; //人物指定的殺怪經驗倍數
    dwExp := Round((m_nKillMonExpRate / 100) * dwExp); //人物指定的殺怪經驗倍數
    if m_PEnvir.m_boEXPRATE then
      dwExp := Round((m_PEnvir.m_nEXPRATE / 100) * dwExp); //地圖上指定殺怪經驗倍數
    if m_boExpItem then begin //物品經驗倍數
      dwExp := Round(m_rExpItem * dwExp);
    end;
    GetExp(dwExp);
  end;
end;

procedure THeroObject.GetExp(dwExp: LongWord);
begin
  Inc(m_Abil.Exp, dwExp);
  //AddBodyLuck(dwExp * 0.002);
  if not TPlayObject(m_Master).m_boNotOnlineAddExp then //只發送給非離線掛機人物
    SendMsg(m_Master, RM_HEROWINEXP, 0, dwExp, 0, 0, '');
  if m_Abil.Exp >= m_Abil.MaxExp then begin
    Dec(m_Abil.Exp, m_Abil.MaxExp);
    if m_Abil.Level < MAXUPLEVEL then begin
      Inc(m_Abil.Level);
    end;
    HasLevelUp(m_Abil.Level - 1);
    {AddBodyLuck(100);
    AddGameDataLog('12' + #9 +
      m_sMapName + #9 +
      IntToStr(m_Abil.Level) + #9 +
      IntToStr(m_Abil.Exp) + #9 +

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内精品伊人久久久久av一坑| 国产福利精品一区| 美女视频一区在线观看| 国产91富婆露脸刺激对白| 欧美在线不卡一区| 久久久亚洲高清| 三级欧美在线一区| 色天使久久综合网天天| 久久精品人人做人人综合| 亚洲成人1区2区| 成熟亚洲日本毛茸茸凸凹| 日韩一级二级三级| 亚洲一区二区三区四区在线免费观看 | 欧美午夜宅男影院| 国产日产欧美一区| 久久国产精品免费| 欧美日韩国产色站一区二区三区| 欧美激情中文字幕| 狠狠色伊人亚洲综合成人| 在线观看一区日韩| 樱桃国产成人精品视频| 成人av网站在线| 久久久99精品免费观看不卡| 日本不卡一二三区黄网| 欧美日韩在线直播| 亚洲线精品一区二区三区八戒| 99久久久精品| 中文一区二区完整视频在线观看 | 亚洲黄色片在线观看| 成人h动漫精品| 久久精品视频在线免费观看| 狠狠色综合日日| 亚洲精品一区二区三区四区高清| 日韩电影在线一区二区三区| 欧美日韩国产首页| 日韩国产欧美在线观看| 欧美一区二区不卡视频| 亚洲成a人在线观看| 欧美日韩在线一区二区| 午夜久久久影院| 5858s免费视频成人| 日韩精品一二三四| 日韩欧美一区二区久久婷婷| 成人做爰69片免费看网站| 精品国产乱码久久久久久图片| 精品一区二区三区蜜桃| 久久这里只精品最新地址| 国产综合久久久久久久久久久久| 2023国产精品| 成人av片在线观看| 亚洲精品日日夜夜| 欧美网站大全在线观看| 天堂成人国产精品一区| 欧美草草影院在线视频| 福利91精品一区二区三区| 国产精品久久久久一区| 欧美伊人久久久久久久久影院| 亚洲高清中文字幕| 欧美电影免费观看高清完整版在 | 97精品电影院| 亚洲一二三四在线| 欧美一区午夜视频在线观看| 国产一区三区三区| 亚洲色图欧美偷拍| 欧美日韩二区三区| 国产精品1区2区3区在线观看| 国产精品乱码一区二三区小蝌蚪| 色哦色哦哦色天天综合| 毛片基地黄久久久久久天堂| 久久色.com| 日本韩国精品一区二区在线观看| 午夜免费欧美电影| 欧美国产精品久久| 欧美日韩第一区日日骚| 国产高清在线精品| 午夜精品久久久久久久久久久 | 男女激情视频一区| 中文字幕欧美国产| 欧美剧情片在线观看| 国产成人精品综合在线观看 | 国产精品美女久久久久久| 欧洲一区在线电影| 成人免费观看av| 亚洲黄色免费电影| 久久精品无码一区二区三区| 欧美美女直播网站| 成人黄色777网| 韩国在线一区二区| 日日夜夜精品视频天天综合网| 国产视频亚洲色图| 日韩情涩欧美日韩视频| 99久久免费视频.com| 九九热在线视频观看这里只有精品| 亚洲视频在线一区二区| 久久久精品天堂| 日韩欧美综合在线| 欧美日韩免费观看一区二区三区| 国产成人综合在线| 韩国三级中文字幕hd久久精品| 亚洲一级二级三级在线免费观看| 国产精品人人做人人爽人人添| 日韩欧美一级精品久久| 欧美视频中文字幕| 在线观看一区二区精品视频| 成人精品免费视频| 国产精品一区专区| 久久99九九99精品| 美女一区二区视频| 日韩精品一二三区| 天天做天天摸天天爽国产一区| 一区二区视频在线| 中文字幕一区二区三区不卡在线| 国产欧美视频在线观看| 久久伊99综合婷婷久久伊| 日韩你懂的在线观看| 91精品国产麻豆国产自产在线| 欧美人体做爰大胆视频| 国产精品美女久久久久av爽李琼| 日韩免费观看高清完整版| 制服丝袜日韩国产| 欧美一级理论片| 日韩午夜在线观看| 2021中文字幕一区亚洲| 久久色.com| 日本一区二区三区在线观看| 国产精品狼人久久影院观看方式| 国产精品电影一区二区| 亚洲免费电影在线| 亚洲综合视频在线观看| 亚洲国产日产av| 肉肉av福利一精品导航| 久久精品国产在热久久| 黄色日韩三级电影| 国产成人高清在线| 99精品视频在线播放观看| 91国产丝袜在线播放| 欧美男男青年gay1069videost| 4438x亚洲最大成人网| 日韩欧美专区在线| 国产亚洲女人久久久久毛片| 亚洲欧洲国产日本综合| ...xxx性欧美| 同产精品九九九| 国产伦精品一区二区三区免费| 不卡av在线网| 欧美日韩日日摸| 欧美成人性战久久| 亚洲日本中文字幕区| 亚洲一区二区视频| 久久成人免费电影| 99精品国产视频| 欧美一区二区三区白人| 中文字幕高清一区| 亚洲va韩国va欧美va精品| 精品一区二区成人精品| 91影院在线免费观看| 欧美一区二区在线观看| 中文子幕无线码一区tr| 午夜精品视频在线观看| 国产成人精品aa毛片| 欧美日韩国产一级片| 日本一区二区三区四区在线视频| 亚洲一区二区综合| 国产不卡免费视频| 欧美喷水一区二区| 国产精品初高中害羞小美女文| 美国十次综合导航| 一本大道av伊人久久综合| 日韩欧美激情在线| 亚洲午夜三级在线| 成人影视亚洲图片在线| 欧美一级二级三级蜜桃| 国产亚洲成aⅴ人片在线观看| 国产成人a级片| 日韩精品专区在线影院重磅| 日本道免费精品一区二区三区| 欧美大胆人体bbbb| 亚洲永久精品国产| www.久久精品| 久久久三级国产网站| 日韩精品一二三区| 欧美在线视频全部完| 中文字幕一区二区三区av| 久久99蜜桃精品| 欧美一级艳片视频免费观看| 一区二区三区日韩| 成人福利视频在线看| 久久久www成人免费毛片麻豆| 日本欧美大码aⅴ在线播放| 在线观看日韩国产| **欧美大码日韩| 91在线云播放| 亚洲婷婷在线视频| 成人av网站免费| 综合自拍亚洲综合图不卡区| 国产精品69毛片高清亚洲| 精品国内二区三区| 看片的网站亚洲| 欧美电影精品一区二区| 日本成人在线电影网|