Skip to content

Posts from Scripts

4.8 (8 ratings)
User Avatar
function Fight( heroname )
if heroname == 'Ish' then
if HasArtefact(heroname, ARTIFACT_HELM_OF_ENLIGHMENT) then
SetObjectPosition('rav', 105, 74, -1);
Trigger( REGION_ENTER_AND_STOP_TRIGGER, 'art', nil );
end;
end;

Trigger( REGION_ENTER_AND_STOP_TRIGGER, 'art', 'Fight' );
 

К А
Стикеры GBF в Telegram
User Avatar
Auto-translated
the script didn't work =(
User Avatar
Да, виноват.
function Fight( heroname )
if ((heroname == 'Ish') and (HasArtefact(heroname, ARTIFACT_HELM_OF_ENLIGHMENT))) then
SetObjectPosition('rav', 105, 74, -1);
Trigger( REGION_ENTER_AND_STOP_TRIGGER, 'art', nil );
end;
end;

Trigger( REGION_ENTER_AND_STOP_TRIGGER, 'art', 'Fight' );
 

К А
Стикеры GBF в Telegram
User Avatar
Auto-translated
the hero stops in the correct area, but the opponent doesn't move.
User Avatar
Auto-translated
(stupid question) which console?
Auto-translated
SetObjectEnabled("garrison_name", nil);
Trigger(4, "garrison_name", "capture_gar");

function capture_gar(hero)
local a = {};
a[1], a[3], a[5], a[7], a[9], a[11], a[13] = GetObjectCreaturesTypes("garrison_name");
for i = 1, 7 do
if a[i*2-1] ~= 0 then
a[i*2] = 2 * GetObjectCreatures("garrison_name", a[i*2-1]);
end;
end;
SetObjectEnabled("garrison_name", 1);
Trigger(4, "garrison_name", nil);
MakeHeroInteractWithObject(hero, "garrison_name");
local i = GetLastSavedCombatIndex();
while i == GetLastSavedCombatIndex() do
sleep(1);
end;
if not IsHeroAlive(hero) then
SetObjectEnabled("garrison_name", nil);
Trigger(4, "garrison_name", "capture_gar");
return
end;
for i = 1, 7 do
if a[i*2] then
AddObjectCreatures("garrison_name", a[i*2-1], a[i*2]);
end;
end;
DenyGarrisonCreaturesTakeAway("garrison_name", 1);
end;


I can't get this script to work for multiple garrisons on the map.
I tried giving all the garrisons the same name, but it didn't work.
I also tried duplicating the script text and inserting a different name into each script, but that didn't work either.
And another question:
I made a mistake when creating the map; I chose single scenario instead of Multiplayer arena.
Is there any way to fix this?
In reply to JORAJAN
User Avatar
Auto-translated
garrisons={'garrison name 1', 'garrison name 2', 'garrison name 3',} -- etc., separated by commas 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 gar_army[gar][1] ~= 0 then AddObjectCreatures(gar, gar_army[gar][1], gar_army[gar][2]*2) end end DenyGarrisonCreaturesTakeAway(gar, 1) Trigger(5, gar, nil) end

Added 43 minutes later
and another question:
I made a mistake when creating the map; I chose single scenario instead of multiplayer arena.
Is there any way to fix this?
In the map archive, move the contents of the SingleMissions folder to the Multiplayer folder.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Auto-translated
I didn't understand if you showed an example or created a completely different script.
Just in case, I tried both ways.
It doesn't work. Where did I make a mistake?
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 gar_army[gar][1] ~= 0 then
AddObjectCreatures(gar, gar_army[gar][1], gar_army[gar][2]*2)
end
end
DenyGarrisonCreaturesTakeAway(gar, 1)
Trigger(5, gar, nil)
end
In reply to JORAJAN
User Avatar
Auto-translated
I seem to have mixed something up. :o ``` 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
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
In reply to JORAJAN
User Avatar
Auto-translated
This script only works on version 3.1. If you have a different version, you need a different one.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
In reply to RedHeavenHero
Auto-translated
I'm using a map in 3.1
+ with additional content
God's mod v7 + EWA patch
This script works for me:
SetObjectEnabled("garrison_name", nil);
Trigger(4, "garrison_name", "capture_gar");

function capture_gar(hero)
local a = {};
a[1], a[3], a[5], a[7], a[9], a[11], a[13] = GetObjectCreaturesTypes("garrison_name");
for i = 1, 7 do
if a[i*2-1] ~= 0 then
a[i*2] = 2 * GetObjectCreatures("garrison_name", a[i*2-1]);
end;
end;
SetObjectEnabled("garrison_name", 1);
Trigger(4, "garrison_name", nil);
MakeHeroInteractWithObject(hero, "garrison_name");
local i = GetLastSavedCombatIndex();
while i == GetLastSavedCombatIndex() do
sleep(1);
end;
if not IsHeroAlive(hero) then
SetObjectEnabled("garrison_name", nil);
Trigger(4, "garrison_name", "capture_gar");
return
end;
for i = 1, 7 do
if a[i*2] then
AddObjectCreatures("garrison_name", a[i*2-1], a[i*2]);
end;
end;
DenyGarrisonCreaturesTakeAway("garrison_name", 1);
end;
but it only works for one garrison.
How can I modify it so that it works for 9?
In reply to JORAJAN
User Avatar
Auto-translated
Well, if only that one works... ``` garrisons={'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9'} for i, gar in garrisons do SetObjectEnabled(gar, nil) Trigger(4, gar, "capture_gar") end function capture_gar(hero, gar) local a = {} a[1], a[3], a[5], a[7], a[9], a[11], a[13] = GetObjectCreaturesTypes(gar) for i = 1, 7 do if a[i*2-1] ~= 0 then a[i*2] = 2 * GetObjectCreatures(gar, a[i*2-1]) end end SetObjectEnabled(gar, 1) Trigger(4, gar, nil) MakeHeroInteractWithObject(hero, gar) local i = GetLastSavedCombatIndex() while i == GetLastSavedCombatIndex() do sleep(1) end if not IsHeroAlive(hero) then SetObjectEnabled(gar, nil) Trigger(4, gar, "capture_gar") return end for i = 1, 7 do if a[i*2] then AddObjectCreatures(gar, a[i*2-1], a[i*2]) end end DenyGarrisonCreaturesTakeAway(gar, 1) end
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4

Statistics

Welcome our newest member: Emil