Собственно, вот код:
код 1
function Trig_ClassificationTYPE_Actions takes nothing returns nothing
local item i = GetManipulatedItem()
local integer ii = GetItemTypeId(i)
local unit u = GetManipulatingUnit()
local real x = GetUnitX(u)
local real y = GetUnitY(u)
local real cv = GetWidgetLife(i)
local integer cslot = 0
local integer pslot = 5
local item iis
local texttag tt = CreateTextTag()
if GetUnitTypeId(GetManipulatingUnit()) != 'e000' then
loop
exitwhen cslot > pslot
set iis = UnitItemInSlot(u, cslot)
if GetWidgetLife(iis) == cv and iis != i then
call RemoveItem(i)
set i = CreateItem(ii, x, y)
if GetLocalPlayer() == GetOwningPlayer(u) then
call SetTextTagText(tt, "У героя есть предмет такого типа!", 0.02)
call SetTextTagPos(tt, x, y, 15.)
call SetTextTagColor(tt, 255, 255, 255, 255)
call SetTextTagVelocity(tt, 0.0355 * Cos(90.0 * bj_DEGTORAD), 0.0355 * Sin(90.0 * bj_DEGTORAD))
call SetTextTagPermanent(tt, false)
call SetTextTagAge(tt, 0.0)
call SetTextTagFadepoint(tt, 1.0)
call SetTextTagLifespan(tt, 1.0)
endif
endif
set cslot = cslot + 1
endloop
endif
set i = null
set u = null
set iis = null
set tt = null
endfunction
local item i = GetManipulatedItem()
local integer ii = GetItemTypeId(i)
local unit u = GetManipulatingUnit()
local real x = GetUnitX(u)
local real y = GetUnitY(u)
local real cv = GetWidgetLife(i)
local integer cslot = 0
local integer pslot = 5
local item iis
local texttag tt = CreateTextTag()
if GetUnitTypeId(GetManipulatingUnit()) != 'e000' then
loop
exitwhen cslot > pslot
set iis = UnitItemInSlot(u, cslot)
if GetWidgetLife(iis) == cv and iis != i then
call RemoveItem(i)
set i = CreateItem(ii, x, y)
if GetLocalPlayer() == GetOwningPlayer(u) then
call SetTextTagText(tt, "У героя есть предмет такого типа!", 0.02)
call SetTextTagPos(tt, x, y, 15.)
call SetTextTagColor(tt, 255, 255, 255, 255)
call SetTextTagVelocity(tt, 0.0355 * Cos(90.0 * bj_DEGTORAD), 0.0355 * Sin(90.0 * bj_DEGTORAD))
call SetTextTagPermanent(tt, false)
call SetTextTagAge(tt, 0.0)
call SetTextTagFadepoint(tt, 1.0)
call SetTextTagLifespan(tt, 1.0)
endif
endif
set cslot = cslot + 1
endloop
endif
set i = null
set u = null
set iis = null
set tt = null
endfunction
Код 2
function Trig_ClassificationLVL_Conditions takes nothing returns boolean
return GetHeroLevel(GetTriggerUnit()) < GetItemLevel(GetManipulatedItem())
endfunction
return GetHeroLevel(GetTriggerUnit()) < GetItemLevel(GetManipulatedItem())
endfunction
function Trig_ClassificationLVL_Actions takes nothing returns nothing
local string s = "Доступно с " + I2S(GetItemLevel(GetManipulatedItem())) + " уровня!"
local unit u = GetManipulatingUnit()
local texttag t = CreateTextTag()
local item i = GetManipulatedItem()
local integer ii = GetItemTypeId(i)
local real x = GetUnitX(u)
local real y = GetUnitY(u)
local player p = GetOwningPlayer(GetManipulatingUnit())
local player ip = GetItemPlayer(i)
local integer id = 0
local integer in = 0
call RemoveItem(i)
set i = CreateItem(ii, x, y)
call SetItemPlayer(i, ip, false)
if GetLocalPlayer() == p then
call SetTextTagText(t, s, 0.02)
call SetTextTagPosUnit(t, u, 15)
call SetTextTagColor(t, 255, 128, 0, 255)
call SetTextTagVelocity(t, 0.0355 * Cos(90.0 * bj_DEGTORAD), 0.0355 * Sin(90.0 * bj_DEGTORAD))
call SetTextTagPermanent(t, false)
call SetTextTagAge(t, 0.0)
call SetTextTagFadepoint(t, 1.0)
call SetTextTagLifespan(t, 1.0)
endif
set u = null
set t = null
set i = null
endfunction
local string s = "Доступно с " + I2S(GetItemLevel(GetManipulatedItem())) + " уровня!"
local unit u = GetManipulatingUnit()
local texttag t = CreateTextTag()
local item i = GetManipulatedItem()
local integer ii = GetItemTypeId(i)
local real x = GetUnitX(u)
local real y = GetUnitY(u)
local player p = GetOwningPlayer(GetManipulatingUnit())
local player ip = GetItemPlayer(i)
local integer id = 0
local integer in = 0
call RemoveItem(i)
set i = CreateItem(ii, x, y)
call SetItemPlayer(i, ip, false)
if GetLocalPlayer() == p then
call SetTextTagText(t, s, 0.02)
call SetTextTagPosUnit(t, u, 15)
call SetTextTagColor(t, 255, 128, 0, 255)
call SetTextTagVelocity(t, 0.0355 * Cos(90.0 * bj_DEGTORAD), 0.0355 * Sin(90.0 * bj_DEGTORAD))
call SetTextTagPermanent(t, false)
call SetTextTagAge(t, 0.0)
call SetTextTagFadepoint(t, 1.0)
call SetTextTagLifespan(t, 1.0)
endif
set u = null
set t = null
set i = null
endfunction
Прошу прощения, если с разметкой что-то не так, пока не до конца с ней разобрался, раньше сидел в ридонли.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован NekoriDes
В целом ситуация выглядит так:
в инвентаре есть итем, третьего класса (WidgetLife == 3), я беру еще один такой же (с тем же виджетлайфом) и он ПОДХОДИТ мне по уровню (HeroLevel == ItemLevel), но показывает оба тексттага с варнингом.
Однако я быстренько глянул и могу сказать, что код должен работать адекватно.
Но хочу придраться к самому созданию всплывающего текста. При каждом поднятии любого предмета будет создаваться этот текст (без записей и т.д.) и будет тупо висеть всю игру. Не проверял, действительно ли так, так что могу ошибаться.
NekoriDes:
>При каждом поднятии любого предмета будет создаваться этот текст (без записей и т.д.) и будет тупо висеть всю игру.
Проверю, фиксану если что, спасибо.
не проще ли запихнуть всё в 1 триггер
хотелось бы увидеть и функции инициализации(создание триггера, добавление событий/условий/действий)
и код лучше кидай txt/j файлом
либо юзай это
Вот тут отображаются варнинги о том, что лвл маленький+предмет не принадлежит герою ТЫК
На деле же, он не принадлежит вообще никому.
А вот здесь отображается варнинг про тип и про не принадлежащий герою предмет. И опять же - он никому вообще не принадлежит.
Сами функции нормально работают, проблема лишь в тексттагах.
nvc123, Не знаю, я привык так, мне удобно. А это плохо?
К слову, а как код под кат засунуть?
мы стартуем кучу потоков для того чтобы обработать 1 объект
потоки дерутся друг с другом за процессорное время
одни и те же функции и проверки вызываются по 100 раз
наверное плохо
хотя если твоя цель вызвать лаги и добавить парочку багов то наоборот хорошо
То есть баг вполне может быть из-за того, что у меня все поделено на несколько триггеров?
Отредактирован nvc123
поэтому вместо того чтобы писать фигню а потом править баги возникающие из за того что ты написал фигню я предлагаю писать сразу нормально