XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
Как называется функция которая конвертит интригер в предмет?
Делал простую проверку юнита на наличие предмета, но столкнулся с проблемой что я незнаю как конвертить ид предмета(integer) в сам предмет(item)
UnitHasItem(GetTriggerUnit(), тип предмета 'I01V' )
Есть функция GetItemTypeId, которая берет итем возвращяет его id, а есть ли функция которая берет id и возвращяет итем?
Старый 23.10.2009, 00:27
Sebra

offline
Опыт: 5,603
Активность:
Тип в предмет:
native          CreateItem      takes integer itemid, real x, real y returns item
А проверка:
function UnitHasItemOfTypeBJ takes unit whichUnit, integer itemId returns boolean
    return GetInventoryIndexOfItemTypeBJ(whichUnit, itemId) > 0
endfunction
Ты это хотел?
Старый 23.10.2009, 00:33
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
Да спс, а без бж можна?
Старый 23.10.2009, 00:37
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
function UnitHasItemWithId takes unit whichUnit, integer itemId returns boolean
	local integer index=0
	loop
		exitwhen index>5
		if GetItemTypeId(UnitItemInSlot(whichUnit,index))==itemId then
			return true
		endif
		index=index+1
	endloop
endfunction
Старый 23.10.2009, 01:40
Nethrez1m
Dat av doe
offline
Опыт: 2,123
Активность:
itemid = тип предмета (целочисленная переменная)
item = некий игровой объект со своими свойствами, как: жизнь, заряды, прочность и т.д.
Ninbous:
а есть ли функция которая берет id и возвращяет итем?
function UnitTakeItemOfType takes unit whichUnit, integer itemId returns item
local integer i
local item it
loop
      set it=UnitItemInSlot(whichUnit,index)    
      if itemId==GetItemTypeId(it) then
              return it
      endif
      set i=i+1
      exitwhen i==6
endloop
return null
endfunction
Nethrez1m добавил:
что-то с бб-кодами не то :/
-- Переключи форматирование xgm.ru/forum/showthread.php?t=27186 by Sc

Отредактировано ScorpioT1000, 23.10.2009 в 06:19.
Старый 23.10.2009, 03:22
Sebra

offline
Опыт: 5,603
Активность:
Nethrez1m, утечку имеешь!
Ninbous, тебе что конкретно надо?
UnitHasItemOfTypeBJ уже естьб писать не надо. Посмотри, как сделано.
UnitHasItemWithId тебе дали, она чуть лучше, но придётся самому вписывать.
function UnitTakeItemOfType takes unit whichUnit, integer itemId returns item
local integer i=UnitInventorySize(whichUnit)-1
loop
      if itemId==GetItemTypeId(UnitItemInSlot(whichUnit,i)) then
              return UnitItemInSlot(whichUnit,i)
      endif
      exitwhen i==0
      set i=i-1
endloop
return null
endfunction
Вот тебе и эта без утечки.
Старый 23.10.2009, 19:42
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
// возвращает true если итем типа it есть у юнита u
function IsItemInInventory takes unit u, integer it returns boolean
  local integer i = 0
  loop
    exitwhen GetItemTypeId(UnitItemInSlot(u, i)) == it or (i > 5)
    set i = i + 1
  endloop
  return i < 6
endfunction

// такой вариант тоже катит:
function IsItemInInventory takes unit u, integer it returns boolean
  return (GetItemTypeId(UnitItemInSlot(u, 0)) == it) or (GetItemTypeId(UnitItemInSlot(u, 1)) == it) or (GetItemTypeId(UnitItemInSlot(u, 2)) == it) or (GetItemTypeId(UnitItemInSlot(u, 3)) == it) or (GetItemTypeId(UnitItemInSlot(u, 4)) == it) or (GetItemTypeId(UnitItemInSlot(u, 5)) == it)
endfunction

// получение предмета из инвентаря по id
function GetItemInInventory takes unit u, integer it returns item
  local integer i = 0
  loop
    exitwhen GetItemTypeId(UnitItemInSlot(u, i)) == it or (i > 5)
    set i = i + 1
  endloop
  if i < 6 then
    return UnitItemInSlot(u, i)
  endif
  return null
endfunction
Старый 23.10.2009, 20:04
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 21:46.