Сейчас 23:03:03 Суббота, 27 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Система сбора предметов (Разрушаемый декор в качестве предметов)
[Вопрос] Система сбора предметов
FatalBladeДата: Четверг, 08 Марта 2012, 18:57:25 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Вот система сбора предметов (разрушаемых обьектов на самом деле).
Вот конструкция из 3-х триггеров. Почему она не работает, а именно - не срабатывает событие второго триггера при смерти разрушаемых обьектов?






Сообщение отредактировал FatalBlade - Четверг, 08 Марта 2012, 18:59:16
 

GiFunДата: Четверг, 08 Марта 2012, 21:15:24 | Сообщение # 2
5 уровень
Группа: Проверенные
Сообщений: 119
Награды: 0
Репутация: 106
Блокировки:
Самая простая система:
Скачать пример
 

FatalBladeДата: Четверг, 08 Марта 2012, 21:26:29 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Это не то. Мне не система зарядов нужно, а система сборки предметов как в стрелялках, то есть просто проходя по предмету, которую я уже фактически реализовал, но есть просто пару косяков.

 

Ty3uKДата: Четверг, 08 Марта 2012, 21:44:51 | Сообщение # 4
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Можешь пояснить? Подбор предметов автоматически или что?

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

FatalBladeДата: Четверг, 08 Марта 2012, 23:00:25 | Сообщение # 5
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Щас уже немного другая проблема. Забей на то что я написал выше. Вот код:
Code
function Trig_GetHerb_Actions takes nothing returns nothing
     local integer o = GetPlayerId(GetOwningPlayer(GetKillingUnit())) + 1
     local destructable dest = GetDyingDestructable()
     local integer dt = GetDestructableTypeId(dest)
     local real d = LoadReal(udg_Hash, GetHandleId(dest), 0)
     local integer i = LoadInteger(udg_Hash, GetHandleId(dest), 1)

     if dt == 'B002' then
         call SetUnitState( udg_HeroesPlaying[o], UNIT_STATE_LIFE, GetUnitState( udg_HeroesPlaying[o], UNIT_STATE_LIFE ) + GetUnitState( udg_HeroesPlaying[o], UNIT_STATE_LIFE ) * d )
     endif
     if dt == 'B005' then
         call SetUnitState( udg_HeroesPlaying[o], UNIT_STATE_MANA, GetUnitState( udg_HeroesPlaying[o], UNIT_STATE_MANA ) + GetUnitState( udg_HeroesPlaying[o], UNIT_STATE_MANA ) * d )
     endif

     set udg_Herbs[i] = null
     set dest = null
endfunction

//===========================================================================
function InitTrig_GetHerb takes nothing returns nothing
     set gg_trg_GetHerb = CreateTrigger(  )
     call TriggerAddAction( gg_trg_GetHerb, function Trig_GetHerb_Actions )
endfunction


Событие добавляется триггерно с другого триггера. Массив юнитов udg_HeroesPlaying[] = герои выбранные игроками. Индекс = номер игрока.
Массив декораций udg_Herbs[] = хербы(или орбы) которые в данный момент валяются на земле и могут быть поднятыми.

С помошью дебага я выяснил, что проблема в GetKillingUnit(). В данном случае он не отлавливает юнита убившего декор. А это влияет на переменную "о", которая является номером игрока, а значит и индексом udg_HeroesPlaying[o]. Не возможно вычислить убивателя >> невозможно вычислить игрока >> невозможно вычислить героя который пренадлежит этому игроку.

Что делать? Есть альтернативы, и почему вообще он не отлавлиает GetKillingUnit() ?


 

SirNikolasДата: Пятница, 09 Марта 2012, 08:14:14 | Сообщение # 6
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (FatalBlade)
if dt == 'B002' then
call SetUnitState( udg_HeroesPlaying[o], UNIT_STATE_LIFE, GetUnitState( udg_HeroesPlaying[o], UNIT_STATE_LIFE ) + GetUnitState( udg_HeroesPlaying[o], UNIT_STATE_LIFE ) * d )
endif
if dt == 'B005' then
call SetUnitState( udg_HeroesPlaying[o], UNIT_STATE_MANA, GetUnitState( udg_HeroesPlaying[o], UNIT_STATE_MANA ) + GetUnitState( udg_HeroesPlaying[o], UNIT_STATE_MANA ) * d )
endif
Maybe elseif?

Я не пойму, при чем тут GetKillingUnit(). Почему бы не сделать пик декораций вокруг героев каждые полсекунды?


 

FatalBladeДата: Пятница, 09 Марта 2012, 11:32:47 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (SirNikolas)
Я не пойму, при чем тут GetKillingUnit(). Почему бы не сделать пик декораций вокруг героев каждые полсекунды?

Потому что создаётся группа декораций, которую почему то нельзя занести в переменную и удалить, и потому что пик декораций или предметов, в отличие от пика юнитов, ТРЕБУЕТ СОЗДАНИЕ ОБЛАСТИ!!! А постоянное создание и удаление областей это хоть и не утечно, но это мощные лаги.


 

lawsonДата: Пятница, 09 Марта 2012, 14:52:18 | Сообщение # 8
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
А постоянное создание и удаление областей это хоть и не утечно, но это мощные лаги.

Ну вот почему ты так уверен, ты проверял уже? Я вот проверял, пикал каждую секунду юнитов в 4х областях, и какбы лагов не наблюдал.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

Ty3uKДата: Пятница, 09 Марта 2012, 15:08:42 | Сообщение # 9
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Если создавать и удалять, то это еще хуже локальных групп :)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

FatalBladeДата: Пятница, 09 Марта 2012, 15:10:29 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (lawson)
Ну вот почему ты так уверен, ты проверял уже? Я вот проверял, пикал каждую секунду юнитов в 4х областях, и какбы лагов не наблюдал.

Каждую секунду в 4-х областях. ммм
А у меня пикалось каждые 0.35 секунд в 10 областях :)
На моём компе с этим тоже проблем не было. Но вот на более слабых компах лагало. Я удалил это, и начало работать чуть получше. Конечно я убрал не только это, но и 2 трети глобальных генерируемых областей. Вообщем области = зло.)




Сообщение отредактировал FatalBlade - Пятница, 09 Марта 2012, 15:12:29
 

lawsonДата: Пятница, 09 Марта 2012, 15:15:06 | Сообщение # 11
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Ty3uK, Создавал локально, пикал юнитов, удалял, просто кошмар - что я наделал.

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

Ty3uKДата: Пятница, 09 Марта 2012, 15:16:09 | Сообщение # 12
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Я не сказал что это плохо. Локально создавал юнитов? Интересно как же, это обычно десинхи дает D:

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

lawsonДата: Пятница, 09 Марта 2012, 15:17:58 | Сообщение # 13
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Ty3uK)
Локально создавал

области


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

FatalBladeДата: Пятница, 09 Марта 2012, 15:18:50 | Сообщение # 14
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Это нехило нагружает слабые компы. У меня к счастью таких проблем нету, но что поделать если в нашем 2012 году у многих людей дома стоят "Тетрисы" а не компы.

 

lawsonДата: Пятница, 09 Марта 2012, 15:20:27 | Сообщение # 15
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
"Тетрисы" а не компы.

А как на них вообще вар пойдет?
У меня копм 2005 года, одноядерный с 512 оперативой - на нем я и делал ИИ, и если бы глючило я бы сделал выводы.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

SirNikolasДата: Пятница, 09 Марта 2012, 15:23:59 | Сообщение # 16
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Существует функция MoveRect, но когда-то говорилось, что она бажная. Проверь, может, работает.

 

Ty3uKДата: Пятница, 09 Марта 2012, 15:24:00 | Сообщение # 17
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Дум запускали на калькуляторе. Могу пруф с хабрахабра кинуть :)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

FatalBladeДата: Пятница, 09 Марта 2012, 15:24:10 | Сообщение # 18
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Ну вот ты зайди на ХГМ и увидишь, что по постам многих участников форума скаладывается впечатление, что их бытовая техника застряла где то в конце 90-х.

 

lawsonДата: Пятница, 09 Марта 2012, 15:25:52 | Сообщение # 19
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
SirNikolas, ДА знаю я, Ник, мог бы использовать и одну глобальну группу и один глобальны рект, но оно работает и мне накласть, а переписывать лень.

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 09 Марта 2012, 15:26:34
 

Ty3uKДата: Пятница, 09 Марта 2012, 15:26:10 | Сообщение # 20
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Ну так в том и прелесть- писать код, который будет отлично работать на старых компах

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

lawsonДата: Пятница, 09 Марта 2012, 15:29:16 | Сообщение # 21
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Ty3uK, Задолбал меня жасс, перехожу на стар2, уже разбераюсь с кодом - очень кстати толковый у них вышел в этот раз редактор триггеров.

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

FatalBladeДата: Пятница, 09 Марта 2012, 15:29:17 | Сообщение # 22
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (SirNikolas)
Существует функция MoveRect, но когда-то говорилось, что она бажная. Проверь, может, работает.

Если есть такие слухи об этой функции то наверно не с проста)
Но по моему вот это должно сработать
Code
native SetRect                  takes rect whichRect, real minx, real miny, real maxx, real maxy returns nothing




Сообщение отредактировал FatalBlade - Пятница, 09 Марта 2012, 15:30:11
 

Ty3uKДата: Пятница, 09 Марта 2012, 15:36:55 | Сообщение # 23
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Лавс, я тоже буду переходить- экзамены сдам и ок :)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

lawsonДата: Пятница, 09 Марта 2012, 15:40:43 | Сообщение # 24
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Ty3uK, Классно, читал на разных источниках о galaxy уже даже скачал galaxy++(типо редактор кода), очень радует адекватный сборщик мусора и наличие псевдо ООП в виде структур и классов.

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 09 Марта 2012, 15:41:41
 

Ty3uKДата: Пятница, 09 Марта 2012, 15:54:11 | Сообщение # 25
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Так это же Jass3, не обманывайся ;)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Система сбора предметов (Разрушаемый декор в качестве предметов)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz