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

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

Закрытая тема
 
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт: 8,073
Активность:
3x Sobi Mask
Вообщем такой трабл. При покупке первой МЭ сразу дается КК.
Поиск юзал, пункт 2.2 не помог!
Миниатюры
Кликните на картинку для увеличения
Название:  123.gif
Просмотров: 64
Размер:  19.7 Кбайт  
Старый 13.06.2011, 11:10
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
asesmo, у тебя условие срабатывает всегда на одну и ту же маску.
Старый 13.06.2011, 11:11
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт: 8,073
Активность:
Srezik:
asesmo, у тебя условие срабатывает всегда на одну и ту же маску.
Я догадывался, мб пути решения представите? Просто не понял что тут можно предпринять.
Старый 13.06.2011, 11:15
Kirian
Ледяная фея
offline
Опыт: 2,593
Активность:
Попробуй тройной цикл с проверкой через ячейки героя. И ещё if then else чтобы не совпадали те же самые маски.
Старый 13.06.2011, 11:25
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт: 8,073
Активность:
Хотя бы кто то пример дал, а то так сложно сориентироваться...
Старый 13.06.2011, 11:28
Kirian
Ледяная фея
offline
Опыт: 2,593
Активность:
for each integer A do
for each integer B do
If (And
item-type of item being manipulated equal to маска соби
item-type of item in A slot equal to маска соби
item-type of item in B slot equal to маска соби
item in A not equal to B
item being manipulated not equal to A
item being manipulated not equal to B)
then
remove item being manipulated from the game
remove item in slot A from the game
remove item in slot B from the game

Писал по памяти, примерно так.
Старый 13.06.2011, 11:39
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт: 8,073
Активность:
Kirian, Не катит, надо точно.
Старый 13.06.2011, 11:51
Diazzz
Допустимый статус
offline
Опыт: 13,797
Активность:
Kirian, это для 2х масок подойдет, тут 3 маски.
asesmo, используй систему, как посоветовал Kirian, но только кол-во имеющихся масок заноси в переменную. А ещё легче - запустить цикл такой:
For each integer A do
__ If Item in Hero slot A = Маска
____ Then set "Переменная1" = "Переменная1"+1
If "Переменная1" = 3, then
__For each integer A do
____ If Item in Hero slot A = Маска
______ Then Remove Item in Hero slot A from game
__Create Ключ крови and give it to triggering unit
__Set "Переменная1" = 0
Старый 13.06.2011, 11:53
Kirian
Ледяная фея
offline
Опыт: 2,593
Активность:
Diazzz, ты забыл удалить предыдущие маски, только последнюю удаляеь
Старый 13.06.2011, 12:09
Diazzz
Допустимый статус
offline
Опыт: 13,797
Активность:
Kirian, смотри, процесс удаления тоже в цикле. Там 2 цикла For every Integer A. Так что удалятся все маски. Это полный триггер скрещивания, могу из гоблинов даже заскринить. Там всё идеально срабатывает.
Старый 13.06.2011, 12:21
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт: 8,073
Активность:
Diazzz, скрин бы )
Старый 13.06.2011, 12:54
Diazzz
Допустимый статус
offline
Опыт: 13,797
Активность:
Вот смотри. На названия предметов не смотри, а то запутаешься)) переменная cr_megarec тут как счетчик предметов идёт. остальные предметы - дополнительные предметы для сборки. тебе нужны предметы только типа Арканитовый пулемёт. Замени его на маску соби, и всё будет =) А, да. и ещё, у меня тут в событии заклинание, а у тебя там как сам хочешь. Если сборка идёт автоматически при получении предмета, то стаишь событие "Юнит получает предмет". Ну в этом думаю разберешься.
Миниатюры
Кликните на картинку для увеличения
Название:  159.JPG
Просмотров: 21
Размер:  72.9 Кбайт  
Старый 13.06.2011, 13:37
MpW

offline
Опыт: 49,995
Активность:
asesmo, есть универсальная наработка
скопируй этот кусок функции туда где картинка карты
Код:
function ItemSys_CombineItem takes nothing returns nothing
     local unit u = GetTriggerUnit()
     local boolean array used
     local integer i = 0
     local integer j = 1
     local boolean exit = false
     local boolean noitem = false
     loop
     exitwhen udg_ItemStore[j] == 0 or noitem == true
         set exit = false
         set i = 0
         loop
         exitwhen i > 5 or exit == true
         if GetItemTypeId(UnitItemInSlot(u,i)) == udg_ItemStore[j] and used[i] == false then
               set exit = true
               set used[i] = true
               set j = j + 1
         else
               set i = i + 1
         endif
         endloop
         if exit == false then
               set noitem = true
         endif
     endloop
     set i = 0
     if noitem == false then
         loop
         exitwhen i > 5
             if used[i] == true then
               call SetItemDroppable( UnitItemInSlot(u,i), true )
               call RemoveItem(UnitItemInSlot(u,i))
             endif
             set i = i + 1 
         endloop
         call UnitAddItemById(u,udg_ItemGet)
         set udg_ItemSuccess = true
     else
         set udg_ItemSuccess = false
     endif
     set i = 1
     loop
          exitwhen i > 6
          set udg_ItemStore[i] = 0
          set i = i + 1
     endloop
endfunction


создай в карте переменные ItemStore с массивом и ItemGet типа "тип предмета" и переменную ItemSuccess типа логическая (boolean)
Код:
в событии - юнит получает предмет
действие - (установить) set ItemStore[1] = Sobi Mask
                                  set ItemStore[2] = Sobi Mask
                                  set ItemStore[3] = Sobi Mask
                                  set ItemGet = твой получаемый предмет
                                  call ItemSys_CombineItem()//через CS води
                                  if ItemSuccess == true then
                                  создаешь эффект 
                                  else
                                  set ItemStore[1] = Sobi Mask
                                  set ItemStore[2] = Sobi Mask
                                  set ItemStore[3] = ботинки
                                  set ItemGet = твой получаемый предмет
                                  call ItemSys_CombineItem()//через CS води
                                  if ItemSuccess == true then
                                  создаешь эффект 
                                  endif

Отредактировано Steal nerves, 13.06.2011 в 14:04.
Старый 13.06.2011, 13:53
Doc

offline
Опыт: 63,163
Активность:
О боже, сотни раз.
/cast search.php
Старый 13.06.2011, 20:40
Закрытая тема

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

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

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

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



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