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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Revive Hero (GUI ошибки.)
Revive Hero
FkoFFДата: Понедельник, 15 Марта 2010, 11:22:03 | Сообщение # 1
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Вообщем проблема такая. Требуется джассификация гуи кода на перерождение. Он - гадина, я его переделывал раз 10, и всегда одна и та же проблема, в некоторых случаях после смерти героя герой НЕ возраждается. и таймер вместо того что бы хотя бы пропасть (строчка таймера) остается на 0, герой пропадает с панели (удаляется из игры).. собственно помогите решить вопрос.
Вот исходный преобразованный в текст ГУИ код.



 

БюллетеньДата: Понедельник, 15 Марта 2010, 11:52:37 | Сообщение # 2
6 уровень
Группа: Проверенные
Сообщений: 160
Награды: 0
Репутация: 21
Блокировки:
FkoFF,
После слипа много чего можно ожидать, но вот ремув юнита, скорее всего дело в другом коде

Quote (FkoFF)
и таймер вместо того что бы хотя бы пропасть

Display'ить забыл, сами они не проподают

Мб накатаю позже код)


[ZorDe]
Ф бой Тускарцы, вы мега %)
 

FkoFFДата: Понедельник, 15 Марта 2010, 12:19:00 | Сообщение # 3
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
ремув юнит у меня вообще нигде не используется.. причем такое случалось при обсолютно разных раскладах героев, тоесть это не связанно со скиллами. перекопал все триггеры ориетрированные на смерть юнитов\героев, и нигде нету строчки "ремув юнит"... вот в чем проблема.

 

DoctorGesterДата: Понедельник, 15 Марта 2010, 14:02:45 | Сообщение # 4
6 уровень
Группа: Проверенные
Сообщений: 209
Награды: 0
Репутация: 50
Блокировки:
Лол еще бы. Заноси героев в локалки. Если у тебя умрут 2 героя подряд естесственно только один воскресится.

Добавлено (15-03-2010, 14:02)
---------------------------------------------
Вообще нужно таймером делать а не как ты.

 

FkoFFДата: Понедельник, 15 Марта 2010, 16:01:08 | Сообщение # 5
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (DoctorGester)
Лол еще бы. Заноси героев в локалки. Если у тебя умрут 2 героя подряд естесственно только один воскресится.Добавлено (15-03-2010, 14:02)---------------------------------------------Вообще нужно таймером делать а не как ты.

через таймеры делал, и один из героев удаляется из игры даже в случае когда умер только один герой.
с таймерами та же шняга, даже создавал окна таймеров, ну что бы наглядно и тд, так вот.
по истечению таймера окно таймера НЕ удалялось и герой не возраждался, в тот момент когда остальные 2-3 мертвых героя могли спокойно перерождаться. Вообщем не держи меня за неофита и профана, договорились?


 

-BigTroll-Дата: Понедельник, 15 Марта 2010, 16:11:38 | Сообщение # 6
3 уровень
Группа: Пользователи
Сообщений: 65
Награды: 0
Репутация: 7
Блокировки:
Тебе же сказали что локалки юзай так как ссылку в переменой двумя смерьями перезаписываеш.
и окно таймера не удолить Оо толь скрыть.
 

FkoFFДата: Понедельник, 15 Марта 2010, 17:03:13 | Сообщение # 7
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (-BigTroll-)
Тебе же сказали что локалки юзай так как ссылку в переменой двумя смерьями перезаписываеш. и окно таймера не удолить Оо толь скрыть.

какую ссылку в какой переменной, глупости не говори. реакция на событие - xxx unit для каждого срабатывания не переписываемые данные. Как пример: функция на перерождение деревьев выглядит так:
Code
wait xx seconds
revive (dying destructible) at position of dying destructible показать birth анимацию.  

И естественно свали хоть все деревья на карте одновременно - возродятся все без исключения, так что не гони пурги.
И да, я вроде бы адекватно попросил джассифицировать код, а не давать мне советы типа "юзай локалку".


 

Artas_UndeadДата: Понедельник, 15 Марта 2010, 18:53:33 | Сообщение # 8
9 уровень
Группа: Проверенные
Сообщений: 1953
Награды: 0
Репутация: 365
Блокировки:
Quote (FkoFF)
какую ссылку в какой переменной, глупости не говори.

Если ты не понимаешь о чём говорят, то это не значит, что глупости.
Quote (FkoFF)
И естественно свали хоть все деревья на карте одновременно - возродятся все без исключения, так что не гони пурги.

Ололо, после вейта - нет)))
Quote (FkoFF)
И да, я вроде бы адекватно попросил джассифицировать код, а не давать мне советы типа "юзай локалку".

А давай мы за тебя карту сделаем?)

Ладно, сабж: тебе дали совет, записуй героя в локалку и через неё перерождай. И убей нафиг вейты!
Если не осилил зачем нужна локалка:
Есть константа bj_lastDuyingUnit. При смерти юнита она перезаписывается. Потому-то твой первый гер не возродился. Потому-что после смерти другого она ПЕРЕЗАПИСАЛАСЬ. Дошло, надеюсь?

Добавлено (15-03-2010, 18:53)
---------------------------------------------

Quote (FkoFF)
И естественно свали хоть все деревья на карте одновременно - возродятся все без исключения, так что не гони пурги.

Ну попробуй) Даже если не будет вейта и убить 2 одновременно, то только последнее возродится.
 

SvyagaДата: Понедельник, 15 Марта 2010, 19:03:42 | Сообщение # 9
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
Код ужас=) Кста я не пойму почему у тебя в начале указано что триг работает только дря героя типа 'H00F' (может изза этого и не срабатывал триг, если не учитывать что он не работал ещё и потому что ужасен :D ),а затем проверяется для 'H00B' или 'H009' или 'H00C' или 'H00A' или 'H008'. Может ошибка, но я всё же оставил это. Лови:
Code
scope ReviveHero initializer Init
private function Conditions takes nothing returns boolean
      return IsUnitType(GetDyingUnit(), UNIT_TYPE_HERO) == true and GetUnitTypeId(GetDyingUnit()) != 'H00F' and IsUnitAlly(GetDyingUnit(), Player(0))) == true
endfunction

private function Revive takes unit H returns nothing
     call ReviveHero( H, GetRectCenterX(gg_rct_HeroSpawn), GetRectCenterX(gg_rct_HeroSpawn), true )
     if GetUnitTypeId(H) == 'H00B' or GetUnitTypeId(H) == 'H009' or GetUnitTypeId(H) == 'H00C' or GetUnitTypeId(H) == 'H00A' or GetUnitTypeId(H) == 'H008' then
       call IssueImmediateOrder( H, "bearform" )
     endif
endfunction

private function Actions takes nothing returns nothing
     call TimerStart( CreateTimer(),I2R(GetHeroLevel(GetDyingUnit())) * 3.00, false, function Revive(GetDyingUnit())
endfunction

//===========================================================================
private function Init takes nothing returns nothing
     local trigger t = CreateTrigger()
     local integer V = 0
     loop
     exitwhen V == 16
     call TriggerRegisterPlayerUnitEvent( t, Player(V), EVENT_PLAYER_UNIT_DEATH, null )
     set V = V + 1
     endloop
     call TriggerAddCondition( t, Condition( function Conditions ) )
     call TriggerAddAction( t, function Actions )
     set t = null
endfunction
endscope

Я не тестил, но вроде всё так (если конечно не ошибся немного где-то при написании :D )
 

Artas_UndeadДата: Понедельник, 15 Марта 2010, 19:07:53 | Сообщение # 10
9 уровень
Группа: Проверенные
Сообщений: 1953
Награды: 0
Репутация: 365
Блокировки:
Quote (Svyaga)
Код ужас=)

Это ГУИ конверт)
Quote (Svyaga)
Я не тестил, но вроде всё так (если конечно не ошибся немного где-то при написании )

вДжасс убери) Аффтар даже с локалками не знаком, что говорить про скопы и приваты)
 

SvyagaДата: Понедельник, 15 Марта 2010, 19:10:15 | Сообщение # 11
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
Quote (Artas_Undead)
Это ГУИ конверт)

Да это не просто гуи конверт, а ужас какой-то во тьме ночной :D
Quote (Artas_Undead)
вДжасс убери) Аффтар даже с локалками не знаком, что говорить про скопы и приваты)

Да ну, бред.. Лучше тогда на гуи делать, либо учиться жассу и вжассу нормально, а потом уже на нём делать :D
 

Artas_UndeadДата: Понедельник, 15 Марта 2010, 19:20:06 | Сообщение # 12
9 уровень
Группа: Проверенные
Сообщений: 1953
Награды: 0
Репутация: 365
Блокировки:
Quote (Svyaga)
Да ну, бред.. Лучше тогда на гуи делать, либо учиться жассу и вжассу нормально, а потом уже на нём делать

У тебя из вДжасса только скопа и приват функции, что можно запросто убрать и поставить функциям норм имена, чтобы они не повторялись.
 

SvyagaДата: Понедельник, 15 Марта 2010, 19:22:10 | Сообщение # 13
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
Code
function ReviveHero_Conditions takes nothing returns boolean
        return IsUnitType(GetDyingUnit(), UNIT_TYPE_HERO) and GetUnitTypeId(GetDyingUnit()) != 'H00F' and IsUnitAlly(GetDyingUnit(), Player(0)))
endfunction

function ReviveHero_Revive takes unit H returns nothing
       call ReviveHero( H, GetRectCenterX(gg_rct_HeroSpawn), GetRectCenterX(gg_rct_HeroSpawn), true )
       if GetUnitTypeId(H) == 'H00B' or GetUnitTypeId(H) == 'H009' or GetUnitTypeId(H) == 'H00C' or GetUnitTypeId(H) == 'H00A' or GetUnitTypeId(H) == 'H008' then
         call IssueImmediateOrder( H, "bearform" )
       endif
endfunction

function ReviveHero_Actions takes nothing returns nothing
       call TimerStart( CreateTimer(),I2R(GetHeroLevel(GetDyingUnit())) * 3.00, false, function ReviveHero_Revive(GetDyingUnit())
endfunction

//===========================================================================
function InitTrigger_ReviveHero takes nothing returns nothing
       local trigger t = CreateTrigger()
       local integer V = 0
       loop
       exitwhen V == 16
       call TriggerRegisterPlayerUnitEvent( t, Player(V), EVENT_PLAYER_UNIT_DEATH, null )
       set V = V + 1
       endloop
       call TriggerAddCondition( t, Condition( function ReviveHero_Conditions ) )
       call TriggerAddAction( t, function ReviveHero_Actions )
       set t = null
endfunction

Вроде сделал)


Сообщение отредактировал Svyaga - Понедельник, 15 Марта 2010, 20:16:20
 

БюллетеньДата: Понедельник, 15 Марта 2010, 20:08:52 | Сообщение # 14
6 уровень
Группа: Проверенные
Сообщений: 160
Награды: 0
Репутация: 21
Блокировки:
Quote (Svyaga)
IsUnitType(GetDyingUnit(), UNIT_TYPE_HERO) == true

IsUnitType Возвращает буль, так же как и IsUnitAlly, незачем делать проверку


[ZorDe]
Ф бой Тускарцы, вы мега %)
 

SvyagaДата: Понедельник, 15 Марта 2010, 20:13:38 | Сообщение # 15
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
Quote (Бюллетень)
IsUnitType Возвращает буль, так же как и IsUnitAlly, незачем делать проверку

о_О Что за бред? IsUnitType проверяет является ли героем умирающий юнит (в данном триге), IsUnitAlly проверяет является ли умирающий юнит союзником первого игрока.

EDIT
Упс, неправильно прочитал (извиняюсь, только поел и хочу спать :D )
Забыл убрать когда редактировал гуи конверт)Исправлено

Сообщение отредактировал Svyaga - Понедельник, 15 Марта 2010, 20:16:34
 

FkoFFДата: Понедельник, 15 Марта 2010, 20:21:17 | Сообщение # 16
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (Artas_Undead)
Ладно, сабж: тебе дали совет, записуй героя в локалку и через неё перерождай. И убей нафиг вейты! Если не осилил зачем нужна локалка: Есть константа bj_lastDuyingUnit. При смерти юнита она перезаписывается. Потому-то твой первый гер не возродился. Потому-что после смерти другого она ПЕРЕЗАПИСАЛАСЬ. Дошло, надеюсь?

О госсподи, не строй из себя умника, договорились? Тебе просто не идет с твоим падонкавским агцентом.
Функция адекватно работает, но через раз, и, блин, научись читать что тебе пишут. Бывало и 3-4 героя умирают и нормально возрождаются, а бывает и фб - и герой НЕ возраждается.
Quote (Artas_Undead)
Ну попробуй) Даже если не будет вейта и убить 2 одновременно, то только последнее возродится.

см выше :)

Quote (Svyaga)
Кста я не пойму почему у тебя в начале указано что триг работает только дря героя типа 'H00F' (может изза этого и не срабатывал триг, если не учитывать что он не работал ещё и потому что ужасен

if ( not ( GetUnitTypeId(GetDyingUnit()) != 'H00F' ) )
если ( отрицание (тип юнита (умирающий юнит()) не равно 'h00f') )

Добавлено (15-03-2010, 20:21)
---------------------------------------------

Quote (Artas_Undead)
Ладно, сабж: тебе дали совет, записуй героя в локалку и через неё перерождай. И убей нафиг вейты! Если не осилил зачем нужна локалка: Есть константа bj_lastDuyingUnit. При смерти юнита она перезаписывается. Потому-то твой первый гер не возродился. Потому-что после смерти другого она ПЕРЕЗАПИСАЛАСЬ. Дошло, надеюсь?

Парень, я тебе могу дать ссылочку на раннюю версию разработки карты, где по команде вызывается 10-20 героев, ты их валишь, и они через вейты перерождаются ВСЕ, по очереди. Не говори глупости, юнец, очень прошу.


 

SvyagaДата: Понедельник, 15 Марта 2010, 20:26:13 | Сообщение # 17
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
Quote (FkoFF)
О госсподи, не строй из себя умника, договорились? Тебе просто не идет с твоим падонкавским агцентом.
Функция адекватно работает, но через раз, и, блин, научись читать что тебе пишут. Бывало и 3-4 героя умирают и нормально возрождаются, а бывает и фб - и герой НЕ возраждается.

Ну вообще он знает жасс и вжасс, и говорит правильно (про локалки, GetDyingUnit() и подобное), да и вроде норм писал. Не его ведь проблемы что ты не понимаешь что он тебе пишет =) А система у тя и правда нерабочая изза кода, к-ый является бредом (не в обиду) :D
Quote (FkoFF)
if ( not ( GetUnitTypeId(GetDyingUnit()) != 'H00F' ) )
если ( отрицание (тип юнита (умирающий юнит()) не равно 'h00f') )

Лол, а так я не знал))) Кста, не понял зачем проверка эта опять же изза того что не так прочитал :D ( прочитал == вместо != )

Добавлено (15-03-2010, 20:26)
---------------------------------------------

Quote (FkoFF)
Парень, я тебе могу дать ссылочку на раннюю версию разработки карты, где по команде вызывается 10-20 героев, ты их валишь, и они через вейты перерождаются ВСЕ, по очереди. Не говори глупости, юнец, очень прошу.

Это БРЕД))


Сообщение отредактировал Svyaga - Понедельник, 15 Марта 2010, 20:25:14
 

FkoFFДата: Понедельник, 15 Марта 2010, 20:29:23 | Сообщение # 18
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (Svyaga)
Это БРЕД))

бред не бред, могу пруф дать, вроде как сохранился )

Добавлено (15-03-2010, 20:29)
---------------------------------------------
Только давай договоримся, если работает - конкретно ты съешь свою шляпу или любой другой головной убор, и выложишь это видео тут. Согласен?


 

Artas_UndeadДата: Понедельник, 15 Марта 2010, 20:33:49 | Сообщение # 19
9 уровень
Группа: Проверенные
Сообщений: 1953
Награды: 0
Репутация: 365
Блокировки:
Quote (Svyaga)
Ну вообще он знает жасс и вжасс

сджасс какбы тоже)
Quote (FkoFF)
научись читать что тебе пишут.

Тоже самое хочу сказать тебе) Тебе сотый раз писали, уже дали код, что тебе ёпт не нравится? Что так трудно взять и переделать не смотря на то, что твоя система "работает"?
Quote (FkoFF)
Парень, я тебе могу дать ссылочку на раннюю версию разработки карты, где по команде вызывается 10-20 героев, ты их валишь, и они через вейты перерождаются ВСЕ, по очереди. Не говори глупости, юнец, очень прошу.

*лицоладоньпыщь*™
Эти герои убиваются по-очереди и конфликта нету. А твои деревья все сразу и выходит ужасный конфликт изза которого возродится только 1 дерево.

Добавлено (15-03-2010, 20:33)
---------------------------------------------

Quote (FkoFF)
юнец

Quote (FkoFF)
Парень

И это у меня падонкавский акцент))
 

SvyagaДата: Понедельник, 15 Марта 2010, 20:34:01 | Сообщение # 20
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
Quote (FkoFF)
бред не бред, могу пруф дать, вроде как сохранился )

Так может быть только если у тебя умирающие юниты сохранялись в переменную ( типа udg_Hero[GetPlayerId(GetOwningPlayer(GetDyingUnit()))] ), без переменной с ожиданием такого просто не может быть, ибо GetDyingUnit() переписывается с каждой смертью, даже когда триг не срабатывает (например когда умирает не герой). Если у тя работаело то значит либо у тя карта магически сделана, либо карта не варкрафта :D Так же случается например с GetSpellTargetUnit(), у мя способность есть, к-ая каждые 0.5 наносила урон врагу на к-ого кастанул, так пока я не сделал GetSpellTergatUnit() в локалку, она срабатывала только в первый раз. А GetDyingUnit() перестаёт работать в каком-то тригге с ожиданием тогда, когда кто-либо на карте умирает.
Quote (Artas_Undead)
сджасс какбы тоже)

Насчёт этого уж не знаю :D
Quote (Artas_Undead)
Тоже самое хочу сказать тебе) Тебе сотый раз писали, уже дали код, что тебе ёпт не нравится? Что так трудно взять и переделать не смотря на то, что твоя система "работает"?

Вперёд, Artas_Undead, ВПЕРЕЕЕД!!)))


Сообщение отредактировал Svyaga - Понедельник, 15 Марта 2010, 20:35:13
 

FkoFFДата: Понедельник, 15 Марта 2010, 20:35:23 | Сообщение # 21
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (Artas_Undead)
Эти герои убиваются по-очереди и конфликта нету. А твои деревья все сразу и выходит ужасный конфликт изза которого возродится только 1 дерево.

там вейт на 6 секунд стоял, перед респавном, валил я героев большими пачками, по 3-4 героя в секунду, и перерождались все обсолютно. Вообщем, готов кушать свою кепку за *лицоладонь*?

Добавлено (15-03-2010, 20:35)
---------------------------------------------
Вообщем спасибо конечно за код, проверю сегодня-завтра.


 

SvyagaДата: Понедельник, 15 Марта 2010, 20:37:04 | Сообщение # 22
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
Quote (Svyaga)
И это у меня падонкавский акцент))

5 баллов :D
 

БюллетеньДата: Понедельник, 15 Марта 2010, 20:38:15 | Сообщение # 23
6 уровень
Группа: Проверенные
Сообщений: 160
Награды: 0
Репутация: 21
Блокировки:
Quote (FkoFF)
там вейт на 6 секунд стоял, перед респавном, валил я героев большими пачками, по 3-4 героя в секунду, и перерождались все обсолютно. Вообщем, готов кушать свою кепку за *лицоладонь*?

Ой как, жду, надеюсь


[ZorDe]
Ф бой Тускарцы, вы мега %)
 

FkoFFДата: Понедельник, 15 Марта 2010, 20:38:58 | Сообщение # 24
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (Artas_Undead)
И это у меня падонкавский акцент))

Данное замечание несло бы в себе хоть что то, если бы я написал нечто в духе "сынок" "браток" и этому подобное.


 

SvyagaДата: Понедельник, 15 Марта 2010, 20:41:05 | Сообщение # 25
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
Quote (FkoFF)
Данное замечание несло бы в себе хоть что то, если бы я написал нечто в духе "сынок" "браток" и этому подобное.

о_О
Quote (FkoFF)
Не говори глупости, юнец, очень прошу.

Ну подумаешь ё-моё... :D
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Revive Hero (GUI ошибки.)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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