таймер не работает как надо в моей карте
создаю таймер[номер игрока умирающий юнит] он не работает именно в моей карте а если написать таймер[0] то работает, а вдругой любой карте те же триггеры но таймер норм работает в чем пробл
ема
х

Лучший ответ:
Ельнур, Сейчас для 1.30 кину
Держи
Но это не решение твоей проблемы, возьмись за прочтение статей



Просмотров: 89

» Лучшие комментарии


Steal nerves #1 - 6 дней назад 0
где же триггеры?
Ельнур #2 - 6 дней назад (отредактировано ) 0
Steal nerves:
где же триггеры?
те же триггеры вдругой карте но все прекрасно работает в другой карте, незнаю почему именно в моей карте багается
вот в другой карте все прекрасно работает и уничтожается когда таймер истекает хотя там те же триггеры а в моей че то багается и время не показывается вообще и он не истекает(
прикреплены файлы
KaneThaumaturge #3 - 6 дней назад 0
Карту приложи.
Ельнур #4 - 6 дней назад (отредактировано ) 0
KaneThaumaturge:
Карту приложи.
если приложу зделаешь?
папка Мультиборд триггер название Kills и Ressurect
больше ничего не меняй
прикреплены файлы
PrincePhoenix #5 - 6 дней назад 0
Ельнур, В такой ужасной реализации невозможно разобраться, я уже давал совет относительно переменных, у тебя их слишком много и в них "чёрт ногу сломит".
Сделай так, как тебе рекомендовали ещё раньше с таймерами, не пытайся изобретать велосипед из дерева. То, что ты пытаешься реализовать требует соответствующих знаний.
Ельнур #6 - 6 дней назад 0
PrincePhoenix:
Ельнур, В такой ужасной реализации невозможно разобраться, я уже давал совет относительно переменных, у тебя их слишком много и в них "чёрт ногу сломит".
Сделай так, как тебе рекомендовали ещё раньше с таймерами, не пытайся изобретать велосипед из дерева. То, что ты пытаешься реализовать требует соответствующих знаний.
да блин именно в моей карте когда создаю таймер [player number of unit] оно не работает а в любой другой карте работает че за фигня
PrincePhoenix #7 - 6 дней назад 0
Ельнур, Значит ты запутался в собственных переменных и где-то они пересекаются. В любом случае, если на другой карте всё работает, значит проблема где-то в куче других переменных. Посмотри на реализацию мультибордов в открытых картах и попытайся повторить их, а не делать что попало.
Ельнур #8 - 6 дней назад -2
PrincePhoenix:
Ельнур, Значит ты запутался в собственных переменных и где-то они пересекаются. В любом случае, если на другой карте всё работает, значит проблема где-то в куче других переменных. Посмотри на реализацию мультибордов в открытых картах и попытайся повторить их, а не делать что попало.
если бы PrincePhoenix:
Ельнур, Значит ты запутался в собственных переменных и где-то они пересекаются. В любом случае, если на другой карте всё работает, значит проблема где-то в куче других переменных. Посмотри на реализацию мультибордов в открытых картах и попытайся повторить их, а не делать что попало.
переменные пересекались там когда герой умирает в мультибоарде все криво писалось бы у меня именно таймер контачит
PrincePhoenix #9 - 6 дней назад 2
Прислушайся к советам и пересмотри свой взгляд на реализацию систем в карте.
С таким подходом разработка твоей карты встанет даже не на середине и ты никогда не найдёшь проблемные места, либо после 5-ти минут игры она будет виснуть от утечек.
Лучший способ начать заново и начать делать правильно.

Массив нужен для хранения переменных одного типа и в него нет смысла вкладывать Integer переменную без повода.
прикреплены файлы
Ельнур #10 - 6 дней назад (отредактировано ) 0
PrincePhoenix:
Прислушайся к советам и пересмотри свой взгляд на реализацию систем в карте.
С таким подходом разработка твоей карты встанет даже не на середине и ты никогда не найдёшь проблемные места, либо после 5-ти минут игры она будет виснуть от утечек.
Лучший способ начать заново и начать делать правильно.

Массив нужен для хранения переменных одного типа и в него нет смысла вкладывать Integer переменную без повода.
там по идее IntegerMultiboard[86] должен стоять я просто проверял с другой переменной
а утечек у меня в карте нет благо я все сразу же обнуляю
PrincePhoenix #11 - 6 дней назад 0
Ельнур, Я советую тебе обратиться к человеку, который объяснит как правильно работать с кодом и как правильно работать с большими данными в карте. Это сократит твоё время изучения в разы и ты быстрее сможешь закончить создание карты. Говорю на собственном опыте.
Ельнур #12 - 6 дней назад (отредактировано ) 0
KaneThaumaturge:
Карту приложи.
жду твой ответ.)
PrincePhoenix:
Ельнур, Я советую тебе обратиться к человеку, который объяснит как правильно работать с кодом и как правильно работать с большими данными в карте. Это сократит твоё время изучения в разы и ты быстрее сможешь закончить создание карты. Говорю на собственном опыте.
почему тогда в другой карте те же триггеры но там работает а именно в меой карте не работает timer[player number of unit]
вот для примера тест карта где все работает безупречно хотя там теже триггеры
PrincePhoenix #13 - 6 дней назад 0
Ельнур, Я не могу ответить на твой вопрос, для этого нужно разобраться во всей ветке твоих переменных, а они у тебя с вложенными переменными в массивах.
Могу тебе сделать рабочую систему мультиборда и таймеров смерти, но только своими методами с объяснением как это работает.
Ссылка на рабочую карту не работает.
Ельнур #14 - 6 дней назад (отредактировано ) -2
PrincePhoenix:
Ельнур, Я не могу ответить на твой вопрос, для этого нужно разобраться во всей ветке твоих переменных, а они у тебя с вложенными переменными в массивах.
Могу тебе сделать рабочую систему мультиборда и таймеров смерти, но только своими методами с объяснением как это работает.
почему ты про мультибоард он прекрасно работает мне нужен работайщи таймер(номер игрока юнита) перезалил тест карту
KaneThaumaturge #15 - 6 дней назад 3
Ну ты и поехавший, как ты пришёл к такому коду?
Ельнур #16 - 6 дней назад (отредактировано ) 0
тест карта где те же триггеры и все прекрасно работает
тест карта где те же триггеры и все прекрасно работаеттт
прикреплены файлы
PrincePhoenix #17 - 6 дней назад 0
Ельнур, Так давай я кое-что для тебя проясню, это спасёт умы тех, кто будет тебе помогать в будущем.
Unit[0] = DyingUnit
Integer[0] = Player number of (Owner of Unit[0])
Start Time[Integer[0]]
Это всё равно этому
Start Time[Player number of (Owner of DyingUnit)]
Перестань назначать бессмысленные переменные
Warcraft прекрасно работает с цифрами в массивах без всяких Integer, зачем объявлять переменную для её одноразового использования?
Ельнур #18 - 6 дней назад (отредактировано ) -2
PrincePhoenix:
Ельнур, Так давай я кое-что для тебя проясню, это спасёт умы тех, кто будет тебе помогать в будущем.
Unit[0] = DyingUnit
Integer[0] = Player number of (Owner of Unit[0])
Start Time[Integer[0]]
Это всё равно этому
Start Time[Player number of (Owner of DyingUnit)]
Перестань назначать бессмысленные переменные
Dying unit утекает это равно тому создать 1 юнита и не удалить его а если ее запихнут ьв переменную и обнулить она не будет утекать просто я не знаю пока джасс и пишу на гуй а там глобалки вот поэтому везде сую переменные и обнуляю
PrincePhoenix #19 - 6 дней назад 0
Ельнур, У тебя запутанные знания об утечках
Дело не в Jass, ты даже на GUI совершаешь слишком много бессмысленных действий.
Ельнур #20 - 6 дней назад (отредактировано ) 0
PrincePhoenix:
Ельнур, У тебя запутанные знания об утечках
Дело не в Jass, ты даже на GUI совершаешь слишком много бессмысленных действий.
ладно это проехали вот почему в другой карте Time[PLayer nubmer of duing unit] работает а в моей карте не работает и он не показывает время? а если я в моей карте напишу просто Time[0] он будет багатсья если 2 или больше героев умрут...
Bergi_Bear #21 - 6 дней назад 0
Ельнур, и ещё раз про дебаг:
  • выводится ли сообщение при событии
  • выводится ли номер игрока
  • выводится ли сами секунды по событию
либо через показ сообщения всем игрокам, а конкретно тебе, либо через call bjdebug
ScorpioT1000 #22 - 6 дней назад 0
Ельнур, куда он утекает, ты же не создаешь локалки и не создаешь юнита. Юнит очищается сам после разложения, удалять всех умерших юнитов не требуется, как же в футменах всё работает, по-твоему.
Ельнур #23 - 6 дней назад (отредактировано ) 0
ScorpioT1000:
Ельнур, куда он утекает, ты же не создаешь локалки и не создаешь юнита. Юнит очищается сам после разложения, удалять всех умерших юнитов не требуется, как же в футменах всё работает, по-твоему.
Ельнур:
PrincePhoenix:
Ельнур, У тебя запутанные знания об утечках
Дело не в Jass, ты даже на GUI совершаешь слишком много бессмысленных действий.
ладно это проехали вот почему в другой карте Time[PLayer nubmer of duing unit] работает а в моей карте не работает и он не показывает время? а если я в моей карте напишу просто Time[0] он будет багатсья если 2 или больше героев умрут...
вот мой главный вопрос))
да даже если писать и так он не работает я незнаю почему в другой карте работает а в моей нет... я даже игровые константы обнулил думая что, что то сделал там не так...
прикреплены файлы
KaneThaumaturge #24 - 6 дней назад (отредактировано ) 0
Опытным путём я выяснил, что проблема действительно заключается в том, что на твоей карте система не работает, а на другой работает. Я конечно не эксперт, но скорее всего это из-за слишком большого количества бессмысленных триггеров, которые забивают поток. Советую почитать статьи о коддинге, оптимизировать карту и только потом продолжать работу. Прикрепил примеры, можешь посмотреть. И да, этот пример будет работать только в том случае, если у игрока 1 герой.
Работающий пример.
Не работающий пример. Хотя код идентичен.
прикреплены файлы
Ельнур #25 - 6 дней назад 0
KaneThaumaturge:
Опытным путём я выяснил, что проблема действительно заключается в том, что на твоей карте система не работает, а на другой работает. Я конечно не эксперт, но скорее всего это из-за слишком большого количества бессмысленных триггеров, которые забивают поток. Советую почитать статьи о коддинге, оптимизировать карту и только потом продолжать работу. Прикрепил примеры, можешь посмотреть. И да, этот пример будет работать только в том случае, если у игрока 1 герой.
Работающий пример.
Не работающий пример. Хотя код идентичен.
твои примеры годны только для ПТР уменя он не открывается хотя спасибо за ответ
PrincePhoenix #26 - 6 дней назад 0
Ельнур, Я уже давал тебе ранее в твоих вопросах ответ по твоим таймерам. Это можно легко реализовать через хэш-таблицы.
KaneThaumaturge #27 - 6 дней назад 2
  • И так. Даже удаление всех триггеров не помогло. Не знаю, что случилось с твоей картой, но могу сказать точно, что она посыпалась.
Ельнур #28 - 6 дней назад 0
PrincePhoenix:
Ельнур, Я уже давал тебе ранее в твоих вопросах ответ по твоим таймерам. Это можно легко реализовать через хэш-таблицы.
можешь прямо в моей карте сделать через хеш таблицу я просто пока не разбираюсь в них патч 1.30 заранее спасибо
KaneThaumaturge #29 - 6 дней назад 0
твои примеры годны только для ПТР уменя он не открывается хотя спасибо за ответ
можешь прямо в моей карте сделать через хеш таблицу я просто пока не разбираюсь в них патч 1.30 заранее спасибо
Не думаю, что поможет. Если 100% рабочий триггер не работает в твоей карте, то проблема в ней. Если у тебя у каждого игрока 1 герой, то можно обойтись без хеш-таблицы.
прикреплены файлы
PrincePhoenix #30 - 6 дней назад (отредактировано ) 0
» Код
function Trig_Timer_Conditions takes nothing returns boolean
    return IsUnitType(GetTriggerUnit(), UNIT_TYPE_HERO) == true
endfunction

function Revieve takes nothing returns nothing
    local timer t=GetExpiredTimer()
    local unit u=LoadUnitHandle(udg_Hash,GetHandleId(t),1) //Загружаем юнита из таблицы
    local timerdialog d=LoadTimerDialogHandle(udg_Hash,GetHandleId(t),2) //Загружаем диалоговое окно из таблицы
    call ReviveHero(u, 0, 0, true) //Воскрешаем героя 0, 0 - это координаты, центр карты
    call DestroyTimerDialog(d)
    set t = null
    set u = null
    set d = null
endfunction

function Trig_Timer_Actions takes nothing returns nothing //Событие при смерти любого героя
    local timer t = CreateTimer()
    local unit u = GetDyingUnit()
    local timerdialog d = CreateTimerDialogBJ(t, GetUnitName(u))
    call TimerStart(t, I2R(GetUnitLevel(u)) * GetRandomReal(1.00, 6.00), false, function Revieve)
    call SaveUnitHandle(udg_Hash,GetHandleId(t),1,u) //Сохраняем юнита в таблицу
    call SaveTimerDialogHandle(udg_Hash,GetHandleId(t),2,d) //Сохраняем диалоговое окно таймера в таблицу
    set t = null
    set u = null
    set d = null
endfunction

//===========================================================================
function InitTrig_Timer takes nothing returns nothing
    set gg_trg_Timer = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_Timer, EVENT_PLAYER_UNIT_DEATH)
    call TriggerAddCondition( gg_trg_Timer, Condition( function Trig_Timer_Conditions ) )
    call TriggerAddAction( gg_trg_Timer, function Trig_Timer_Actions )
endfunction
Нужно удалить твои триггеры на таймеры воскрешения и любой триггер вставить это
Это то, что ты просил раньше, воскрешает героя в зависимости от его уровня с рандомным значением.
PT153 #31 - 6 дней назад 0
KaneThaumaturge, скорее всего где-то используется неназначенная переменная, вот и сыпется всё.
Ельнур #32 - 6 дней назад 0
PrincePhoenix:
» Код
function Trig_Timer_Conditions takes nothing returns boolean
    return IsUnitType(GetTriggerUnit(), UNIT_TYPE_HERO) == true
endfunction

function Revieve takes nothing returns nothing
    local timer t=GetExpiredTimer()
    local unit u=LoadUnitHandle(udg_Hash,GetHandleId(t),1) //Загружаем юнита из таблицы
    local timerdialog d=LoadTimerDialogHandle(udg_Hash,GetHandleId(t),2) //Загружаем диалоговое окно из таблицы
    call ReviveHero(u, 0, 0, true) //Воскрешаем героя 0, 0 - это координаты, центр карты
    call DestroyTimerDialog(d)
    set t = null
    set u = null
    set d = null
endfunction

function Trig_Timer_Actions takes nothing returns nothing //Событие при смерти любого героя
    local timer t = CreateTimer()
    local unit u = GetDyingUnit()
    local timerdialog d = CreateTimerDialogBJ(t, GetUnitName(u))
    call TimerStart(t, I2R(GetUnitLevel(u)) * GetRandomReal(1.00, 6.00), false, function Revieve)
    call SaveUnitHandle(udg_Hash,GetHandleId(t),1,u) //Сохраняем юнита в таблицу
    call SaveTimerDialogHandle(udg_Hash,GetHandleId(t),2,d) //Сохраняем диалоговое окно таймера в таблицу
    set t = null
    set u = null
    set d = null
endfunction

//===========================================================================
function InitTrig_Timer takes nothing returns nothing
    set gg_trg_Timer = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_Timer, EVENT_PLAYER_UNIT_DEATH)
    call TriggerAddCondition( gg_trg_Timer, Condition( function Trig_Timer_Conditions ) )
    call TriggerAddAction( gg_trg_Timer, function Trig_Timer_Actions )
endfunction
Нужно удалить твои триггеры на таймеры воскрешения и любой триггер вставить это
Это то, что ты просил раньше, воскрешает героя в зависимости от его уровня с рандомным значением.
засветилось окошко таймера с именем героя и он истек он не воскресился таймер не дестройнулся)
PrincePhoenix #33 - 6 дней назад (отредактировано ) 0
Вот держи, тут должно всё работать с таймерами
прикреплены файлы
Ельнур #34 - 6 дней назад 0
PT153:
KaneThaumaturge, скорее всего где-то используется неназначенная переменная, вот и сыпется всё.
удалил все неназначенные переменнные все равно не робит
PrincePhoenix:
Вот держи, тут должно всё работать с таймерами
блин мне нужно для патча 1.30 а не 1.31
KaneThaumaturge #35 - 6 дней назад 0
KaneThaumaturge, скорее всего где-то используется неназначенная переменная, вот и сыпется всё.
Я так тоже подумал, но я удалил оттуда все триггеры, все равно не заработало.
Ельнур, он имел ввиду переменную, которую ты используешь, но не инициализируешь. Насколько я знаю на GUI так проблем не может быть.
PrincePhoenix #36 - 6 дней назад (отредактировано ) 3

Ельнур, Сейчас для 1.30 кину
Держи
Но это не решение твоей проблемы, возьмись за прочтение статей
прикреплены файлы
Ельнур #37 - 6 дней назад (отредактировано ) -5
PrincePhoenix:
Ельнур, Сейчас для 1.30 кину
Держи
Но это не решение твоей проблемы, возьмись за прочтение статей
спасибо все прекрасно работает и он даже воскресился на своей базе как ты это сделал
может из за этого триггера? это тоже относится к функции завершает воскрешение?
прикреплены файлы
Это сообщение удалено