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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? objhero.pas

?? FIR引擎最新源碼+注冊(cè)
?? PAS
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
          Dec(nDura, 1000);
          if nDura <= 0 then begin
            nDura := 0;
            m_UseItems[I].Dura := nDura;
            if m_btRaceServer = RC_HEROOBJECT then begin
              HeroObject := THeroObject(Self);
              HeroObject.SendDelItems(@m_UseItems[I]);
            end; //004C0310
            m_UseItems[I].wIndex := 0;
            RecalcAbilitys();
          end else begin //004C0331
            m_UseItems[I].Dura := nDura;
          end;
          if tDura <> Round(nDura / 1000 {1.03}) then begin
            SendMsg(Self, RM_HERODURACHANGE, I, nDura, m_UseItems[I].DuraMax, 0, '');
          end;
            //break;
        end; //004C0397
//        end;//004C0397
      end; //004C0397 if pSItem <> nil then begin
    end; //if UseItems[i].wIndex > 0 then begin
  end; // for i:=Low(UseItems) to High(UseItems) do begin
end;

procedure THeroObject.DoDamageWeapon(nWeaponDamage: Integer);
var
  nDura, nDuraPoint: Integer;
  HeroObject: THeroObject;
  StdItem: pTStdItem;
begin
  if m_UseItems[U_WEAPON].wIndex <= 0 then Exit;
  nDura := m_UseItems[U_WEAPON].Dura;
  nDuraPoint := Round(nDura / 1.03);
  Dec(nDura, nWeaponDamage);
  if nDura <= 0 then begin
    nDura := 0;
    m_UseItems[U_WEAPON].Dura := nDura;
    if m_btRaceServer = RC_HEROOBJECT then begin
      HeroObject := THeroObject(Self);
      HeroObject.SendDelItems(@m_UseItems[U_WEAPON]);
      StdItem := UserEngine.GetStdItem(m_UseItems[U_WEAPON].wIndex);
            //004C195A
      {if StdItem.NeedIdentify = 1 then
            AddGameDataLog ('3' + #9 +
                        m_sMapName + #9 +
                        IntToStr(m_nCurrX) + #9 +
                        IntToStr(m_nCurrY) + #9 +
                        m_sCharName + #9 +
                        //UserEngine.GetStdItemName(m_UseItems[U_WEAPON].wIndex) + #9 +
                        StdItem.Name + #9 +
                        IntToStr(m_UseItems[U_WEAPON].MakeIndex) + #9 +
                        BoolToIntStr(m_btRaceServer = RC_PLAYOBJECT) + #9 +
                        '0');  }
    end;
    m_UseItems[U_WEAPON].wIndex := 0;
    SendMsg(Self, RM_HERODURACHANGE, U_WEAPON, nDura, m_UseItems[U_WEAPON].DuraMax, 0, '');
  end else begin //004C199D
    m_UseItems[U_WEAPON].Dura := nDura;
  end;
  if (nDura / 1.03) <> nDuraPoint then begin
    SendMsg(Self, RM_HERODURACHANGE, U_WEAPON, m_UseItems[U_WEAPON].Dura, m_UseItems[U_WEAPON].DuraMax, 0, '');
  end;
end;

procedure THeroObject.StruckDamage(nDamage: Integer);
var
  I: Integer;
  nDam: Integer;
  nDura, nOldDura: Integer;
  HeroObject: THeroObject;
  StdItem: pTStdItem;
  bo19: Boolean;
begin
  if nDamage <= 0 then Exit;
  nDam := Random(10) + 5;
  if m_wStatusTimeArr[POISON_DAMAGEARMOR {1 0x62}] > 0 then begin
    nDam := Round(nDam * (g_Config.nPosionDamagarmor / 10) {1.2});
    nDamage := Round(nDamage * (g_Config.nPosionDamagarmor / 10) {1.2});
  end;
  bo19 := False;
  if m_UseItems[U_DRESS].wIndex > 0 then begin
    nDura := m_UseItems[U_DRESS].Dura;
    nOldDura := Round(nDura / 1000);
    Dec(nDura, nDam);
    if nDura <= 0 then begin
      if m_btRaceServer = RC_HEROOBJECT then begin
        HeroObject := THeroObject(Self);
        HeroObject.SendDelItems(@m_UseItems[U_DRESS]);
        StdItem := UserEngine.GetStdItem(m_UseItems[U_DRESS].wIndex);
            //004BE088
        {if StdItem.NeedIdentify = 1 then
            AddGameDataLog ('3' + #9 +
                        m_sMapName + #9 +
                        IntToStr(m_nCurrX) + #9 +
                        IntToStr(m_nCurrY) + #9 +
                        m_sCharName + #9 +
                        //UserEngine.GetStdItemName(m_UseItems[U_DRESS].wIndex) + #9 +
                        StdItem.Name + #9 +
                        IntToStr(m_UseItems[U_DRESS].MakeIndex) + #9 +
                        BoolToIntStr(m_btRaceServer = RC_PLAYOBJECT) + #9 +
                        '0'); }
        m_UseItems[U_DRESS].wIndex := 0;
        FeatureChanged();
      end;
      m_UseItems[U_DRESS].wIndex := 0;
      m_UseItems[U_DRESS].Dura := 0;
      bo19 := True;
    end else begin
      m_UseItems[U_DRESS].Dura := nDura;
    end;
    if nOldDura <> Round(nDura / 1000) then begin
      SendMsg(Self, RM_HERODURACHANGE, U_DRESS, nDura, m_UseItems[U_DRESS].DuraMax, 0, '');
    end;
  end;
  for I := Low(THumanUseItems) to High(THumanUseItems) do begin
    if (m_UseItems[I].wIndex > 0) and (Random(8) = 0) then begin
      nDura := m_UseItems[I].Dura;
      nOldDura := Round(nDura / 1000);
      Dec(nDura, nDam);
      if nDura <= 0 then begin
        if m_btRaceServer = RC_HEROOBJECT then begin
          HeroObject := THeroObject(Self);
          HeroObject.SendDelItems(@m_UseItems[I]);
          StdItem := UserEngine.GetStdItem(m_UseItems[I].wIndex);
            //004BE2B8
          {if StdItem.NeedIdentify = 1 then
            AddGameDataLog ('3' + #9 +
                        m_sMapName + #9 +
                        IntToStr(m_nCurrX) + #9 +
                        IntToStr(m_nCurrY) + #9 +
                        m_sCharName + #9 +
                        //UserEngine.GetStdItemName(m_UseItems[i].wIndex) + #9 +
                        StdItem.Name + #9 +
                        IntToStr(m_UseItems[i].MakeIndex) + #9 +
                        BoolToIntStr(m_btRaceServer = RC_PLAYOBJECT) + #9 +
                        '0'); }
          m_UseItems[I].wIndex := 0;
          FeatureChanged();
        end;
        m_UseItems[I].wIndex := 0;
        m_UseItems[I].Dura := 0;
        bo19 := True;
      end else begin
        m_UseItems[I].Dura := nDura;
      end;
      if nOldDura <> Round(nDura / 1000) then begin
        SendMsg(Self, RM_HERODURACHANGE, I, nDura, m_UseItems[I].DuraMax, 0, '');
      end;
    end;
  end;
  if bo19 then RecalcAbilitys();
  DamageHealth(nDamage);
end;

function THeroObject.ClientDropItem(sItemName: string;
  nItemIdx: Integer): Boolean;
var
  I: Integer;
  UserItem: pTUserItem;
  StdItem: pTStdItem;
  sUserItemName: string;
  sCheckItemName: string;
begin
  Result := False;
  {if not TPlayObject(m_Master).m_boClientFlag then begin
    if TPlayObject(m_Master).m_nStep = 8 then Inc(TPlayObject(m_Master).m_nStep)
    else TPlayObject(m_Master).m_nStep := 0;
  end; }
  if g_Config.boInSafeDisableDrop and InSafeZone then begin
    SendMsg(g_ManageNPC, RM_MENU_OK, 0, Integer(Self), 0, 0, g_sCanotDropInSafeZoneMsg);
    Exit;
  end;

  if not m_boCanDrop then begin
    SendMsg(g_ManageNPC, RM_MENU_OK, 0, Integer(Self), 0, 0, g_sCanotDropItemMsg);
    Exit;
  end;

  if Pos(' ', sItemName) > 0 then begin //折分物品名稱(信件物品的名稱后面加了使用次數(shù))
    GetValidStr3(sItemName, sItemName, [' ']);
  end;

  for I := m_ItemList.Count - 1 downto 0 do begin
    if m_ItemList.Count <= 0 then Break;
    UserItem := m_ItemList.Items[I];
    if (UserItem <> nil) and (UserItem.MakeIndex = nItemIdx) then begin
      StdItem := UserEngine.GetStdItem(UserItem.wIndex);
      if StdItem = nil then Continue;
        //sItem:=UserEngine.GetStdItemName(UserItem.wIndex);
        //取自定義物品名稱
      sUserItemName := '';
      if UserItem.btValue[13] = 1 then
        sUserItemName := ItemUnit.GetCustomItemName(UserItem.MakeIndex, UserItem.wIndex);
      if sUserItemName = '' then
        sUserItemName := UserEngine.GetStdItemName(UserItem.wIndex);

      if CompareText(sUserItemName, sItemName) = 0 then begin
        if Assigned(PlugInEngine.CheckCanDropItem) then begin
          sCheckItemName := StdItem.Name;
          if not PlugInEngine.CheckCanDropItem(Self, PChar(sCheckItemName), True) then Break;
        end;
        if g_Config.boControlDropItem and (StdItem.Price < g_Config.nCanDropPrice) then begin
          m_ItemList.Delete(I);
          Dispose(UserItem);
          Result := True;
          Break;
        end;
        if DropItemDown(UserItem, 1, False, nil, m_Master) then begin
          m_ItemList.Delete(I);
          Dispose(UserItem);
          Result := True;
          Break;
        end;
      end;
    end;
  end;
  if Result then WeightChanged();
end;

procedure THeroObject.RepairAllItem();
var
  nWhere: Integer;
  sCheckItemName: string;
  StdItem: pTStdItem;
begin
  for nWhere := Low(THumanUseItems) to High(THumanUseItems) do begin
    if m_UseItems[nWhere].wIndex > 0 then begin
      StdItem := UserEngine.GetStdItem(m_UseItems[nWhere].wIndex);
      if StdItem <> nil then begin
        if (m_UseItems[nWhere].DuraMax > m_UseItems[nWhere].Dura) and (StdItem.StdMode <> 43) then begin
          if Assigned(PlugInEngine.CheckCanRepairItem) then begin
            sCheckItemName := StdItem.Name;
            if not PlugInEngine.CheckCanRepairItem(m_Master, PChar(sCheckItemName), False) then Continue;
          end;
          m_UseItems[nWhere].Dura := m_UseItems[nWhere].DuraMax;
          SendMsg(Self, RM_HERODURACHANGE, nWhere, m_UseItems[nWhere].Dura, m_UseItems[nWhere].DuraMax, 0, '');
        end;
      end;
    end;
  end;
end;

procedure THeroObject.ClientHeroUseItems(nItemIdx: Integer; sItemName: string); //英雄吃藥
  function GetUnbindItemName(nShape: Integer): string;
  var
    I: Integer;
  begin
    Result := '';
    for I := 0 to g_UnbindList.Count - 1 do begin
      if Integer(g_UnbindList.Objects[I]) = nShape then begin
        Result := g_UnbindList.Strings[I];
        Break;
      end;
    end;
  end;
  function GetUnBindItems(sItemName: string; nCount: Integer): Boolean;
  var
    I: Integer;
    UserItem: pTUserItem;
  begin
    Result := False;
    for I := 0 to nCount - 1 do begin
      New(UserItem);
      if UserEngine.CopyToUserItemFromName(sItemName, UserItem) then begin
        m_ItemList.Add(UserItem);
        //if m_btRaceServer = RC_PLAYOBJECT then
        SendAddItem(UserItem);
        Result := True;
      end else begin
        Dispose(UserItem);
        Break;
      end;
    end;
  end;
  function FoundUserItem(Item: pTUserItem): Boolean;
  var
    I: Integer;
    UserItem: pTUserItem;
  begin
    Result := False;
    for I := 0 to m_ItemList.Count - 1 do begin
      UserItem := m_ItemList.Items[I];
      if UserItem = Item then begin
        Result := True;
        Break;
      end;
    end;
  end;
var
  I: Integer;
  boEatOK: Boolean;
  boSendUpDate: Boolean;
  UserItem: pTUserItem;
  StdItem: pTStdItem;
  UserItem34: TUserItem;
  sMapName: string;
  nCurrX, nCurrY: Integer;
begin
  boEatOK := False;
  boSendUpDate := False;
  StdItem := nil;
  if m_boCanUseItem then begin
    if not m_boDeath then begin
      for I := m_ItemList.Count - 1 downto 0 do begin
        if m_ItemList.Count <= 0 then Break;
        UserItem := m_ItemList.Items[I];
        if (UserItem <> nil) and (UserItem.MakeIndex = nItemIdx) then begin
          UserItem34 := UserItem^;
          StdItem := UserEngine.GetStdItem(UserItem.wIndex);
          if StdItem <> nil then begin
            if not m_PEnvir.AllowStdItems(UserItem.wIndex) then begin
              SysMsg(Format(g_sCanotMapUseItemMsg, [StdItem.Name]), c_Red, t_Hint);
              Break;
            end;
            case StdItem.StdMode of
              0, 1, 3: begin //藥
                  if EatItems(StdItem) then begin
                    m_ItemList.Delete(I);
                    DisPoseAndNil(UserItem);
                    boEatOK := True;
                  end;
                  Break;
                end;
              2: begin //修復(fù)神水
                  case StdItem.Shape of
                    1: begin
                        if UserItem.Dura > 0 then begin
                          if UserItem.Dura >= 100 then begin
                            Dec(UserItem.Dura, 100);
                          end else begin
                            UserItem.Dura := 0;
                          end;
                          RepairAllItem();
                          boEatOK := True;
                        end;
                        if UserItem.Dura > 0 then begin
                          boSendUpDate := True;
                          boEatOK := False;
                        end;
                      end;
                  end;
                end;
              4: begin //書
                  if ReadBook(StdItem) then begin
                    m_ItemList.Delete(I);
                    DisPoseAndNil(UserItem);
                    boEatOK := True;
                    if (m_MagicErgumSkill <> nil) and (not m_boUseThrusting) then begin
                      ThrustingOnOff(True);
                      //SendSocket(nil, '+LNG');
                    end;
                    if (m_MagicBanwolSkill <> nil) and (not m_boUseHalfMoon) then begin
                      HalfMoonOnOff(True);
                      //SendSocket(nil, '+WID');
                    end;
                  end;
                end;
              31: begin //解包物品

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品免费观看| 国产精品对白交换视频| 天天色综合成人网| 欧美日韩激情一区二区| 亚洲3atv精品一区二区三区| 欧美美女激情18p| 美女一区二区在线观看| 国产日韩精品一区二区三区在线| 国产福利不卡视频| 国产精品人人做人人爽人人添| 波多野结衣在线一区| 国产精品久久二区二区| 在线免费观看日韩欧美| 亚洲国产精品精华液网站| 9191久久久久久久久久久| 日韩国产精品91| 久久综合久久综合亚洲| 成人动漫中文字幕| 亚洲亚洲人成综合网络| 欧美v亚洲v综合ⅴ国产v| 国产99一区视频免费| 亚洲欧美一区二区三区久本道91 | 亚洲成人三级小说| 精品国产制服丝袜高跟| av影院午夜一区| 亚洲国产综合在线| 久久亚洲精品小早川怜子| 99麻豆久久久国产精品免费优播| 亚洲福利视频一区二区| 精品日韩成人av| 91小视频免费观看| 美洲天堂一区二卡三卡四卡视频| 中文字幕精品一区二区精品绿巨人 | 国产精品视频你懂的| 在线观看区一区二| 国产精品资源站在线| 亚洲一区二区三区四区在线| 精品国产乱码久久久久久久久 | 波多野结衣中文一区| 视频一区国产视频| 国产精品初高中害羞小美女文| 欧美日韩国产首页| 暴力调教一区二区三区| 美女视频网站黄色亚洲| 亚洲在线免费播放| 久久精品网站免费观看| 91精品国产综合久久国产大片| 不卡的av在线| 国产综合久久久久影院| 亚洲mv大片欧洲mv大片精品| 一区精品在线播放| 欧美电视剧在线看免费| 在线观看免费成人| 成人av资源网站| 国产一区在线观看麻豆| 日韩中文字幕91| 一区二区三区91| 国产精品福利影院| xvideos.蜜桃一区二区| 91精品一区二区三区久久久久久 | 久久看人人爽人人| 欧美一区二区三区在| 色综合天天做天天爱| 成人黄色小视频| 国产综合色视频| 精彩视频一区二区三区| 免费欧美日韩国产三级电影| 亚洲一区二区欧美激情| 亚洲色图欧洲色图| 日韩毛片在线免费观看| 国产精品毛片无遮挡高清| 国产婷婷色一区二区三区在线| 欧美va亚洲va香蕉在线| 欧美一级二级三级蜜桃| 91精品国产综合久久久久久久久久| 色呦呦日韩精品| 日本高清不卡视频| 91黄色小视频| 欧美色男人天堂| 欧美日本视频在线| 制服丝袜成人动漫| 日韩视频在线观看一区二区| 91麻豆精品国产91久久久久久| 欧美丰满美乳xxx高潮www| 制服丝袜激情欧洲亚洲| 欧美一级欧美一级在线播放| 欧美一级欧美三级在线观看 | 色先锋久久av资源部| 色婷婷久久久久swag精品| 色哟哟一区二区三区| 欧美亚洲日本国产| 3d动漫精品啪啪| 精品国内片67194| 亚洲国产精品t66y| 亚洲精品第1页| 日本亚洲天堂网| 国产一区二区网址| 99久久er热在这里只有精品66| 99久久精品国产一区| 欧洲一区在线观看| 日韩视频在线你懂得| 国产日韩三级在线| 亚洲欧美日韩人成在线播放| 亚洲第一主播视频| 精品影视av免费| jlzzjlzz国产精品久久| 欧美视频在线一区二区三区| 欧美一区二区高清| 国产嫩草影院久久久久| 亚洲一区二区黄色| 极品瑜伽女神91| 91亚洲精品乱码久久久久久蜜桃| 亚洲国产精品黑人久久久| 亚洲摸摸操操av| 久久se精品一区精品二区| 成人免费毛片a| 51精品秘密在线观看| 中文字幕乱码日本亚洲一区二区| 一区二区三区精品久久久| 久久99久久精品| 97久久精品人人做人人爽50路 | 久久精品国产77777蜜臀| 国产成人a级片| 欧美丰满一区二区免费视频| 国产日韩精品视频一区| 午夜欧美电影在线观看| 成人手机电影网| 91精品一区二区三区在线观看| 欧美韩国一区二区| 日产国产欧美视频一区精品| k8久久久一区二区三区| 日韩视频永久免费| 亚洲一区中文在线| 成人禁用看黄a在线| 日韩一区二区三区视频在线观看| 国产精品视频麻豆| 久久av中文字幕片| 欧美午夜理伦三级在线观看| 国产欧美一区二区精品性色| 日日夜夜免费精品| 色综合天天综合| 国产午夜精品久久久久久免费视 | 精品一区二区三区日韩| 欧美无乱码久久久免费午夜一区| 中文字幕免费在线观看视频一区| 蜜乳av一区二区| 欧美日韩在线播放一区| 亚洲视频在线一区观看| 国产成人精品免费看| 精品久久一二三区| 天堂资源在线中文精品| 91一区一区三区| 国产精品久99| 成人aaaa免费全部观看| 久久久国产精华| 韩国三级在线一区| 欧美岛国在线观看| 男女激情视频一区| 91精品国产全国免费观看| 亚洲午夜国产一区99re久久| 91天堂素人约啪| 亚洲欧洲av在线| 99久久99久久免费精品蜜臀| 国产在线播精品第三| 日韩欧美成人激情| 免费成人在线播放| www成人在线观看| 国产一区欧美一区| 久久精品视频在线免费观看| 经典三级视频一区| 久久久久99精品国产片| 国产成人免费视频网站高清观看视频| 久久综合狠狠综合久久激情| 国产最新精品免费| 国产视频在线观看一区二区三区 | 蜜臀久久久99精品久久久久久| 欧美日本一区二区| 蜜桃视频第一区免费观看| 欧美电视剧在线观看完整版| 久久99这里只有精品| 久久影院午夜论| 成人午夜免费视频| 亚洲欧美另类在线| 精品污污网站免费看| 日本亚洲免费观看| 精品国产乱码久久| 成人影视亚洲图片在线| 亚洲视频免费看| 欧美视频一区二区三区四区| 青青草一区二区三区| 老司机午夜精品| 久久久亚洲午夜电影| 成人av动漫网站| 亚洲成av人片在www色猫咪| 91精品国产入口| 福利一区二区在线| 亚洲已满18点击进入久久| 日韩免费看的电影| 不卡的av中国片| 日产欧产美韩系列久久99|