Перейти к содержанию

Сообщения от Скрипты

Аватар пользователя
13 лет назад
Попробуйте использовать функцию KnowHeroSpell(heroName, spell);
Я её не использовал,но рекомендую попробовать. Пример:

KnowHeroSpell(Raelag, 16, nil);

Или вместо nil поставьте false
В ответ пользователю AkaR
Аватар пользователя
13 лет назад
AkaR
Попробуйте использовать функцию KnowHeroSpell(heroName, spell);
Я её не использовал,но рекомендую попробовать. Пример:

KnowHeroSpell(Raelag, 16, nil);

Или вместо nil поставьте false
Неправда ваша. Функция проверяет, знает ли герой заклинание.

Добавлено через 2 минуты
Juss456
Возможно уже был такой вопрос: как забанить определённый навык для героев на карте?
Цивилизованного способа нет.
Аватар пользователя
13 лет назад
Тогда остается только вариант с TeachHeroSpell(heroName, spell);
Опять же,я не уверен,но попробовать можно :) Пример:

TeachHeroSpell(Raelag, 16, nil);
В ответ пользователю AkaR
Аватар пользователя
13 лет назад
AkaR
Тогда остается только вариант с TeachHeroSpell(heroName, spell);
Опять же,я не уверен,но попробовать можно :) Пример:

TeachHeroSpell(Raelag, 16, nil);
Опять-таки нет. Это уже учит героя заклинанию.
Аватар пользователя
13 лет назад
sta=GetHeroStats(vh, 7);
ChangeHeroStat(vh, 7, -sta);

почему этот кусок функции не работает и как исправить?

vh - переменная, сод-ая имя героя. Задумка - обнулить move points у героя

Добавлено через 50 минут
Ещё вопрос: Есть ли функция, которая возвращает массив из id существ в армии героя?
В ответ пользователю MasteR
Аватар пользователя
13 лет назад
Juss456
sta=GetHeroStats(vh, 7);
ChangeHeroStat(vh, 7, -sta);

почему этот кусок функции не работает и как исправить?

vh - переменная, сод-ая имя героя. Задумка - обнулить move points у героя

Добавлено через 50 минут
Ещё вопрос: Есть ли функция, которая возвращает массив из id существ в армии героя?
1) лишняя s. Не Stats, а Stat
2) массив — нет, есть функция, которая возвращает список с идами:
_1, _2, _3, _4, _5, _6, _7 = GetHeroCreaturesTypes(hero)
В ответ пользователю RedHeavenHero
Аватар пользователя
13 лет назад
RedHeavenHero
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;
В ответ пользователю MasteR
Аватар пользователя
13 лет назад
Juss456
спасибо) Но у меня не работает данный кусок. В консоли пишет что-то типа 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
В ответ пользователю RedHeavenHero
Аватар пользователя
13 лет назад
RedHeavenHero
Если слот пустой, то соответствующий элемент равен не 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() ?
В ответ пользователю MasteR
Аватар пользователя
13 лет назад
Juss456
спасибо)) А если n/3 будет не целым числом, он не будет ругаться на это? или всё же применять ф-ию intg() ?
Не будет. Функции операций с армиями сами округляют.
В ответ пользователю RedHeavenHero
Аватар пользователя
13 лет назад
RedHeavenHero
Не будет. Функции операций с армиями сами округляют.

Получилось) Только, когда в каком-то слоте у героя только одно существо, ф-я сбрасывается и происходит ошибка (численность не может быть отрицательной). Ну и последний наверно вопрос: как в определённые моменты передавать игроку(человеку) управление на другого (главного) героя. (Т.е. переместить камеру от второстепенного героя к главному и выделить его)
В ответ пользователю MasteR
Аватар пользователя
13 лет назад
Juss456
Получилось) Только, когда в каком-то слоте у героя только одно существо, ф-я сбрасывается и происходит ошибка (численность не может быть отрицательной). Ну и последний наверно вопрос: как в определённые моменты передавать игроку(человеку) управление на другого (главного) героя. (Т.е. переместить камеру от второстепенного героя к главному и выделить его)
Тогда нужно использовать не intg, а ceil.
Камеру переместить можно, но вот выделить его в рамку не получится.
В ответ пользователю RedHeavenHero
13 лет назад
Доброго времени суток!

Помогите пожалуйста с написание скрипта, при котором каждый день в указанном гарнизоне количество юнитов увеличивалось( например для 1 слота +10, для второго +5, для третьего +2)

Заранее спасибо.
В ответ пользователю Incorer
Аватар пользователя
13 лет назад
Incorer
Доброго времени суток!

Помогите пожалуйста с написание скрипта, при котором каждый день в указанном гарнизоне количество юнитов увеличивалось( например для 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")
Аватар пользователя
13 лет назад
А есть перехватчики на консольные команды?

Статистика

Приветствуем новейшего участника: recijeb

Сейчас на сайте 5 пользователей 1353 гостей