почему этот кусок функции не работает и как исправить?
vh - переменная, сод-ая имя героя. Задумка - обнулить move points у героя
Добавлено через 50 минут Ещё вопрос: Есть ли функция, которая возвращает массив из id существ в армии героя?
1) лишняя s. Не Stats, а Stat 2) массив — нет, есть функция, которая возвращает список с идами: _1, _2, _3, _4, _5, _6, _7 = GetHeroCreaturesTypes(hero)
1) лишняя s. Не Stats, а Stat 2) массив — нет, есть функция, которая возвращает список с идами: _1, _2, _3, _4, _5, _6, _7 = GetHeroCreaturesTypes(hero)
спасибо) Но у меня не работает данный кусок. В консоли пишет что-то типа invalid ID=0 (arg1)
c1, c2, c3, c4, c5, c6, c7=GetHeroCreaturesTypes(heroname); sleep(1); if c1~=nil then c11=GetHeroCreatures(heroname, c1); else c11=0; end; if c2~=nil then c22=GetHeroCreatures(heroname, c2); else c22=0; end; if c3~=nil then c33=GetHeroCreatures(heroname, c3); else c33=0; end; if c4~=nil then c44=GetHeroCreatures(heroname, c4); else c44=0; end; if c5~=nil then c55=GetHeroCreatures(heroname, c5); else c55=0; end; if c6~=nil then c66=GetHeroCreatures(heroname, c6); else c66=0; end; if c7~=nil then c77=GetHeroCreatures(heroname, c7); else c77=0; end; sleep(1); if c11~=0 then RemoveHeroCreatures(heroname, c1, intg(c11*0.33)); end; if c22~=0 then RemoveHeroCreatures(heroname, c2, intg(c22*0.33)); end; if c33~=0 then RemoveHeroCreatures(heroname, c3, intg(c33*0.33)); end; if c44~=0 then RemoveHeroCreatures(heroname, c4, intg(c44*0.33)); end; if c55~=0 then RemoveHeroCreatures(heroname, c5, intg(c55*0.33)); end; if c66~=0 then RemoveHeroCreatures(heroname, c6, intg(c66*0.33)); end; if c77~=0 then RemoveHeroCreatures(heroname, c7, intg(c77*0.33)); end;
спасибо) Но у меня не работает данный кусок. В консоли пишет что-то типа invalid ID=0 (arg1)
c1, c2, c3, c4, c5, c6, c7=GetHeroCreaturesTypes(heroname); sleep(1); if c1~=nil then c11=GetHeroCreatures(heroname, c1); else c11=0; end; if c2~=nil then c22=GetHeroCreatures(heroname, c2); else c22=0; end; if c3~=nil then c33=GetHeroCreatures(heroname, c3); else c33=0; end; if c4~=nil then c44=GetHeroCreatures(heroname, c4); else c44=0; end; if c5~=nil then c55=GetHeroCreatures(heroname, c5); else c55=0; end; if c6~=nil then c66=GetHeroCreatures(heroname, c6); else c66=0; end; if c7~=nil then c77=GetHeroCreatures(heroname, c7); else c77=0; end; sleep(1); if c11~=0 then RemoveHeroCreatures(heroname, c1, intg(c11*0.33)); end; if c22~=0 then RemoveHeroCreatures(heroname, c2, intg(c22*0.33)); end; if c33~=0 then RemoveHeroCreatures(heroname, c3, intg(c33*0.33)); end; if c44~=0 then RemoveHeroCreatures(heroname, c4, intg(c44*0.33)); end; if c55~=0 then RemoveHeroCreatures(heroname, c5, intg(c55*0.33)); end; if c66~=0 then RemoveHeroCreatures(heroname, c6, intg(c66*0.33)); end; if c77~=0 then RemoveHeroCreatures(heroname, c7, intg(c77*0.33)); end;
Если слот пустой, то соответствующий элемент равен не nil, а 0. Поэтому ~=nil надо заменить на ~=0. Задумка заключается в удалении трети армии? Тогда есть скрипт покороче.
for i=0,6 do local t, n = GetObjectArmySlotCreature(heroname, i) if t ~= 0 then RemoveHeroCreatures(heroname, t, n/3) end end
Если слот пустой, то соответствующий элемент равен не nil, а 0. Поэтому ~=nil надо заменить на ~=0. Задумка заключается в удалении трети армии? Тогда есть скрипт покороче.
for i=0,6 do local t, n = GetObjectArmySlotCreature(heroname, i) if t ~= 0 then RemoveHeroCreatures(heroname, t, n/3) end end
спасибо)) А если n/3 будет не целым числом, он не будет ругаться на это? или всё же применять ф-ию intg() ?
Не будет. Функции операций с армиями сами округляют.
Получилось) Только, когда в каком-то слоте у героя только одно существо, ф-я сбрасывается и происходит ошибка (численность не может быть отрицательной). Ну и последний наверно вопрос: как в определённые моменты передавать игроку(человеку) управление на другого (главного) героя. (Т.е. переместить камеру от второстепенного героя к главному и выделить его)
Получилось) Только, когда в каком-то слоте у героя только одно существо, ф-я сбрасывается и происходит ошибка (численность не может быть отрицательной). Ну и последний наверно вопрос: как в определённые моменты передавать игроку(человеку) управление на другого (главного) героя. (Т.е. переместить камеру от второстепенного героя к главному и выделить его)
Тогда нужно использовать не intg, а ceil. Камеру переместить можно, но вот выделить его в рамку не получится.
Помогите пожалуйста с написание скрипта, при котором каждый день в указанном гарнизоне количество юнитов увеличивалось( например для 1 слота +10, для второго +5, для третьего +2)
Помогите пожалуйста с написание скрипта, при котором каждый день в указанном гарнизоне количество юнитов увеличивалось( например для 1 слота +10, для второго +5, для третьего +2)
Заранее спасибо.
function newday() local add = {[0]=10; 5, 2} for i=0,6 do local type, number = GetObjectArmySlotCreature("скриптовое имя гарнизона", i) if type ~= 0 and addthen AddObjectCreatures("скриптовое имя гарнизона", type, add) end end end Trigger(0, "newday")