CustomGames.ru - Dota 2 пользовательские игры

Таймер завершения игры

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Papich

  • 14
  • Мощь: 0
Таймер завершения игры
« : 01-08-2017, 16:45:33 »
Этот код почему-то не работает. Не понимаю из-за чего. Нет никакой ошибки, просто проходит 60 сек, но игра не заканчивается. В чём проблема?
Код
function main:Time()
ListenToGameEvent('game_rules_state_change', Dynamic_Wrap(main, 'OnGameRulesStateChange'), self)
end

function main:OnGameRulesStateChange(keys)
    local newState = GameRules:State_Get()
    if newState == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then
        main:Timer()
    end
end


function main:Timer()
Timers:CreateTimer(60, function()
GameRules:SetGameWinner(DOTA_TEAM_GOODGUYS)
end)

end

Оффлайн MahouShoujo

  • Продвинутый
  • 201
  • Мощь: 3
Re: Таймер завершения игры
« Ответ #1 : 01-08-2017, 17:25:10 »
Ну дебажь. Добавляй принты и смотри что происходит.

Оффлайн I_GRIN_I

  • Продвинутый
  • 608
  • Мощь: 11
  • Научиться бы скриптить...
Re: Таймер завершения игры
« Ответ #2 : 01-08-2017, 18:07:04 »
Papich, return nil напиши снизу

Оффлайн ZLOY

  • Супермодератор
  • 452
  • Мощь: 6
Re: Таймер завершения игры
« Ответ #3 : 01-08-2017, 18:42:36 »
main:Time() вот это вот вообще вызывается где-то?

Оффлайн Papich

  • 14
  • Мощь: 0
Re: Таймер завершения игры
« Ответ #4 : 01-08-2017, 19:07:49 »
ZLOY,
Теперь вызывается, но теперь вот такая ошибка появилась:
[ W VScript              ]: Script Runtime Error: scripts\vscripts\main.lua:69: attempt to index global 'Timers' (a nil value)
[ W VScript              ]: stack traceback:
[ W VScript              ]:    scripts\vscripts\main.lua:69: in function 'Timer'
[ W VScript              ]:    scripts\vscripts\main.lua:63: in function <scripts\vscripts\main.lua:60>

Оффлайн Илья

  • Супермодератор
  • 2131
  • Мощь: 21
Re: Таймер завершения игры
« Ответ #5 : 01-08-2017, 19:25:32 »
Библиотека таймеров от BMD  у тебя не подключена.

Оффлайн Papich

  • 14
  • Мощь: 0
Re: Таймер завершения игры
« Ответ #6 : 01-08-2017, 19:57:47 »
Илья,
Подключил, теперь всё работает

Оффлайн Papich

  • 14
  • Мощь: 0
Re: Таймер завершения игры
« Ответ #7 : 01-08-2017, 20:21:41 »
Распишите, где я тут обосрался и почему этот быдлокод не хочет работать?
Спойлер
Код
function main:Timer()
if numberOfPlayers >= 5 then
Timers:CreateTimer(1800, function()
GameRules:SetGameWinner(DOTA_TEAM_GOODGUYS)
end)
elseif numberOfPlayers == 4  then
Timers:CreateTimer(1500, function()
GameRules:SetGameWinner(DOTA_TEAM_GOODGUYS)
end)
elseif numberOfPlayers == 3  then
Timers:CreateTimer(1200, function()
GameRules:SetGameWinner(DOTA_TEAM_GOODGUYS)
end)
elseif numberOfPlayers == 2  then
Timers:CreateTimer(900, function()
GameRules:SetGameWinner(DOTA_TEAM_GOODGUYS)
end)
else
Timers:CreateTimer(600, function()
GameRules:SetGameWinner(DOTA_TEAM_GOODGUYS)
end)
end
end
[свернуть]
« Последнее редактирование: 01-08-2017, 20:24:37 от Papich »

Оффлайн Илья

  • Супермодератор
  • 2131
  • Мощь: 21
Re: Таймер завершения игры
« Ответ #8 : 01-08-2017, 20:47:42 »
Что консоль пишет и что за переменная такая numberOfPlayers?

Оффлайн Papich

  • 14
  • Мощь: 0
Re: Таймер завершения игры
« Ответ #9 : 01-08-2017, 20:50:09 »
Илья, Посмотрел код овертроу. А число игроков нужно как-то по другому получать?

Оффлайн Илья

  • Супермодератор
  • 2131
  • Мощь: 21
Re: Таймер завершения игры
« Ответ #10 : 01-08-2017, 22:46:38 »
Да, как-то по другому.