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

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

Аватар пользователя
#1094
Можно делать иначе, но тогда надо исправлять пути. Поэтому лучше сделать в точности, как там, чтобы не пришлось ничего менять. Ну и да, учтите, что там скорее всего будет несколько файлов, которые Вам нужны.
 

К А
Стикеры GBF в Telegram
Аватар пользователя
#1095
Как раз там я и прокололся, оттого ничего и не работало =) Взял 1 файл, когда надо было больше =)

Спасибо всем

Whatever
В ответ пользователю JORAJAN
#1096
помогите пожалуйста
почему этот скрипт
garrisons={'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9'}
for j, gar in garrisons do
Trigger(5, gar, 'capture_gar')
garrisons[gar] = {}
for i = 0, 6 do
local t, n = GetObjectArmySlotCreature(gar, i)
garrisons[gar]= {t, n}
end
end

function capture_gar(oldowner, newowner, hero, gar)
for i = 0, 6 do
if garrisons[gar][1] ~= 0 then
AddObjectCreatures(gar, garrisons[gar][1], garrisons[gar][2]*2)
end
end
DenyGarrisonCreaturesTakeAway(gar, 1)
Trigger(5, gar, nil)
end

выдает эту ошибку :
invalid parameter type: object name must be string
Аватар пользователя
#1097
Создайте новый массив под GetObjectArmySlotCreature, не надо пихать всё в один, да ещё и иначе организованный.
 

К А
Стикеры GBF в Telegram
В ответ пользователю Ment
#1098
Ment
Создайте новый массив под GetObjectArmySlotCreature, не надо пихать всё в один, да ещё и иначе организованный.

извините но не разбираюсь в программировании и естественно не фига не понял
не могли бы вы помочь мне ?
В ответ пользователю JORAJAN
Аватар пользователя
#1099
garrison_names={'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9'}
garrisons={}
for j, gar in garrison_names do
Trigger(5, gar, 'capture_gar')
garrisons[gar] = {}
for i = 0, 6 do
local t, n = GetObjectArmySlotCreature(gar, i)
garrisons[gar]= {t, n}
end
end

function capture_gar(oldowner, newowner, hero, gar)
for i = 0, 6 do
if garrisons[gar][1] ~= 0 then
AddObjectCreatures(gar, garrisons[gar][1], garrisons[gar][2]*2)
end
end
DenyGarrisonCreaturesTakeAway(gar, 1)
Trigger(5, gar, nil)
end


Добавлено через 10 минут
Ment
Создайте новый массив под GetObjectArmySlotCreature, не надо пихать всё в один, да ещё и иначе организованный.
Действительно, цикл выполняет блок для тех значений, которые сам и создал.:(
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
#1100
извините но не разбираюсь в программировании и естественно не фига не понял
не могли бы вы помочь мне ?
garrisons={'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9'}
garrisons_army={}
for j, gar in garrisons do
Trigger(5, gar, 'capture_gar')
for i = 0, 6 do
local t, n = GetObjectArmySlotCreature(gar, i)
garrisons_army[gar]= {t, n}
end
end

function capture_gar(oldowner, newowner, hero, gar)
for i = 0, 6 do
if garrisons_army[gar][1] ~= 0 then
AddObjectCreatures(gar, garrisons_army[gar][1], garrisons_army[gar][2]*2)
end
end
DenyGarrisonCreaturesTakeAway(gar, 1)
Trigger(5, gar, nil)
end
Если честно, не факт, что заработает, просто не уверен, что переменная правильно проинициализируется, как трёхмерный массив. И да, возможно, просто стоит делать способом пусть и менее красивым, но более формальным, который точно сработает, для этого надо постараться не делать трёхмерных массивов, да и двумерные нежелательны. Но это, если не сможем сделать рабочий вариант "красивого" варианта.
 

К А
Стикеры GBF в Telegram
В ответ пользователю Ment
Аватар пользователя
#1101
Проверил. Ошибка всё же происходит из-за того, что после выполнения блока для всех гарнизонов итератор начинает перебирать созданные им за это время массивы с информацией о войсках; этим и объясняется ошибка invalid parameter type: object name must be string (а оно не string, а table)
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
#1102
работает зациклилось
но на второй раз не удваивается войска в гарнизоне а ставит столько же
надо что бы каждый раз при зачистке гарнизона войска удваивались
В ответ пользователю JORAJAN
Аватар пользователя
#1103
garrison_names={'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9'}
garrisons={}
for j, gar in garrison_names do
Trigger(5, gar, 'capture_gar')
garrisons[gar] = {}
for i = 0, 6 do
local t, n = GetObjectArmySlotCreature(gar, i)
garrisons[gar]= {t, n}
end
end

function capture_gar(oldowner, newowner, hero, gar)
for i = 0, 6 do
if garrisons[gar][1] ~= 0 then
garrisons[gar][2] = garrisons[gar][2] * 2
AddObjectCreatures(gar, garrisons[gar][1], garrisons[gar][2])
end
end
DenyGarrisonCreaturesTakeAway(gar, 1)
Trigger(5, gar, nil)
end
Но геометрическая прогрессия - опасная вещь :smile51:
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
В ответ пользователю RedHeavenHero
#1104
я подумал что математическую прогрессию будет сложнее устроить
но я решил компенсировать это силой монстров
геометрическая тоже пойдет
буду тестировать
Аватар пользователя
#1105
народ, у меня такой вопрос,
Я создал нормальный такой talkbox. Прописал там все, что надо. Затем создал функцию, все работает. Однако, возник вопрос:
Как быть, если мне надо, скажем, чтоб герой, при касании объекта, получал вопрос с вариантами ответа, каждый из которых означал выдачу ему артефакта? Функцию talkboxa придется заносить внутрь touch trigger функции (heroname) с прописанием %heroname, или можно оставить её отдельно, но тогда скрипт просто не понимает, кому ему давать артефакт. Как быть?

Whatever
Аватар пользователя
#1106
В триггер, да... А в чём проблема?
 

К А
Стикеры GBF в Telegram
Аватар пользователя
#1107
Проблема в том, что при написании функции внутри функции, вторая перестает воспринимать команды heroname, приходится писать %heroname, а тут уже несуществующую ошибку выдает HeroesV_Map_Script_Editor (как-то так), и перестает видеть остальные настоящие ошибки скрипта :smile18:

Whatever
Аватар пользователя
#1108
Гм-гм, кажется, понимаю. То есть проблема в том, что talkbox ссылается на функции, но не передаёт им в качестве аргумента heroname? А если сделать heroname глобальной переменной?
 

К А
Стикеры GBF в Telegram

Статистика

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

Сейчас на сайте 3 пользователей 1328 гостей