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

Кастую за чужие бабки.

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

Оффлайн FastSlow

  • 12
  • Мощь: 0
Кастую за чужие бабки.
« : 09-01-2017, 07:11:21 »
Создал абилку с помощью lua, если играешь за редиант все норм золото тратиться, а за другие команды нет. В чем может быть проблема?
Код
HP_UP = class ({})
x = {0,0,0,0,0}
function HP_UP:OnSpellStart()
    x[5]=x[5]+2
    local hCaster = self:GetCaster()
    local team = hCaster:GetTeamNumber()
    x[team-1] = x[team-1] + 5
end
function HP_UP:GetCooldown( nLevel )
return 0
end
function HP_UP:prost(i)
return x[i]
end
function HP_UP:GetGoldCost()
    local baseGoldCost = 10
    local extraGoldPerLevel = 5
    local newGoldCost = baseGoldCost + x[5] * extraGoldPerLevel
    if newGoldCost >= 1000 then
        newGoldCost = 999
    end

    return (newGoldCost)
end
« Последнее редактирование: 09-01-2017, 07:39:44 от FastSlow »

Оффлайн gameizeazy

  • 106
  • Мощь: 1
Re: Кастую за чужие бабки.
« Ответ #1 : 09-01-2017, 07:17:27 »
А в чём прикол?
Зачем тебе узнавать комманду??
modifyGold на кастера и проблем ноль..

Оффлайн FastSlow

  • 12
  • Мощь: 0
Re: Кастую за чужие бабки.
« Ответ #2 : 09-01-2017, 08:26:38 »
Так и не понял в чем была ошибка просто сделал немного по другому
Код
HP_UP = class ({})
x = {0,0,0,0}
goldcost=0
lvl=0
function HP_UP:OnSpellStart()
    lvl=lvl+1
    goldcost=goldcost+5*lvl
    local hCaster = self:GetCaster()
    local team = hCaster:GetTeamNumber()
    x[team-1] = x[team-1] + 5
end
function HP_UP:GetCooldown( nLevel )
return 0
end
function HP_UP:prost(i)
return x[i]
end
function HP_UP:GetGoldCost()
    return (goldcost)
end

Оффлайн Илья

  • Супермодератор
  • 1909
  • Мощь: 16
Re: Кастую за чужие бабки.
« Ответ #3 : 09-01-2017, 10:39:27 »
Ну, как минимум, начиная с DOTA_TEAM_CUSTOM_1, который равен 6, у тебя будут ошибки: здесь
Код
x[team-1]
так как у тебя минимальный номер в первом куске кода  0, а макс 4. Во втором от 0 до 3 вообще (если я правильно помню и у первого элемента массива нулевой индекс).
« Последнее редактирование: 09-01-2017, 10:42:46 от Илья »

Оффлайн FastSlow

  • 12
  • Мощь: 0
Re: Кастую за чужие бабки.
« Ответ #4 : 09-01-2017, 13:17:04 »
В луа начинается с 1 индекс. Я просто пока код накидал, а так да,DOTA_TEAM_CUSTOM_1 равен 6, но проблема была не в этом, потому что я проверял на dire и там ничего не работало.
Спойлер
Илья, как пройти 3 ночь вдвоем?
[свернуть]

Оффлайн Илья

  • Супермодератор
  • 1909
  • Мощь: 16
Re: Кастую за чужие бабки.
« Ответ #5 : 09-01-2017, 22:00:28 »
В консоли не было ошибок? Пробовал через принты ( print() ) смотреть, где код отрабатывает, а где нет?

Спойлер
Спектра, Девовер и рекомендуемый закуп.
[свернуть]

Оффлайн FastSlow

  • 12
  • Мощь: 0
Re: Кастую за чужие бабки.
« Ответ #6 : 11-01-2017, 08:43:27 »
Не стал заморачиваться и оставил все в таком виде. Работает, ну и ладно.
Код
HP_UP = class ({})
x = {[2]=0,[3]=0,[6]=0,[7]=0} -- количество на сколько увеличиваю хп
goldcost={[2]=0,[3]=0,[6]=0,[7]=0} -- по чем грейд для каждой команды
lvl=0
function HP_UP:OnSpellStart()
    local hCaster = self:GetCaster()
    local player = hCaster:GetOwner()
    local team = player:GetTeamNumber()
    lvl=lvl+1
    goldcost[team]=goldcost[team]+5*lvl
    x[team] = x[team] + 5
end
function HP_UP:GetCooldown( nLevel )
return 0
end
function HP_UP:prost(i) -- функция к которой я обращаюсь чтобы узнать на сколько увеличить хп
    if i == 1 then
return x[2]
    end
    if i == 2 then
     return x[3]
    end
    if i == 3 then
     return x[6]
    end
    if i == 4 then
     return x[7]
    end
end
function HP_UP:GetGoldCost()
    local hCaster = self:GetCaster() -- находим кастера
    local player = hCaster:GetOwner() -- смотрим кто его батя
    local team = player:GetTeamNumber() -- смотрим в какой он команде
    return (goldcost[team]) -- ставим ценик для его команды
end
Спойлер
Спасибо, прошел с 1 раза)))
[свернуть]
« Последнее редактирование: 11-01-2017, 08:47:57 от FastSlow »