Добавлен sumi
приветствую, написал простенький ии на джасс, работает хорошо до грейда до т2. После апгрейда т2 раб идет строить ещё один т1, хотя по скрипту должен построить т2 здания, т2 грейды и переходить на т3. После постройки ошибочного т1 строить перестает, в чем ошибка?
Открыть
globals
player user = PlayerEx(1)
constant integer warlock = 'nw2w'
constant integer grunt = 'ogru'
constant integer raider = 'orai'
constant integer hero = 'O000'
constant integer peon = 'o008'
constant integer forge = 'o00F'
constant integer grunt = 'ogru'
constant integer raider = 'orai'
constant integer hero = 'O000'
constant integer peon = 'o008'
constant integer forge = 'o00F'
constant integer great_hall = 'o00A'
constant integer stronghold = 'o00B'
constant integer fortress = 'o009'
constant integer barrack = 'o00H'
constant integer bestiary = 'o00C'
constant integer altar_dark = 'o007'
constant integer altar = 'o00G'
constant integer burrow = 'o00E'
constant integer watch_tower = 'o00D'
constant integer stronghold = 'o00B'
constant integer fortress = 'o009'
constant integer barrack = 'o00H'
constant integer bestiary = 'o00C'
constant integer altar_dark = 'o007'
constant integer altar = 'o00G'
constant integer burrow = 'o00E'
constant integer watch_tower = 'o00D'
constant integer upg_melee = 'Rome'
constant integer upg_armor = 'Roar'
constant integer upg_spikes = 'Rosp'
constant integer upg_burrow = 'Rorb'
constant integer upg_armor = 'Roar'
constant integer upg_spikes = 'Rosp'
constant integer upg_burrow = 'Rorb'
vars
integer c_great_hall = 0
integer c_stronghold = 0
integer c_fortress = 0
integer c_altar = 0
integer c_burrow = 0
integer c_guard = 0
integer c_altar_dark = 0
integer c_forge = 0
integer c_great_hall_done = 0
integer c_stronghold_done = 0
integer c_fortress_done = 0
integer c_altar_done = 0
integer c_burrow_done = 0
integer c_guard_done = 0
integer c_altar_dark_done = 0
integer c_forge_done = 0
integer c_raider = 0
integer c_grunt = 0
integer c_warlock = 0
integer c_hero = 0
integer c_raider_done = 0
integer c_grunt_done = 0
integer c_warlock_done = 0
integer c_hero_done = 0
integer c_food_used = 0
integer c_food_made = 0
integer c_stronghold = 0
integer c_fortress = 0
integer c_altar = 0
integer c_burrow = 0
integer c_guard = 0
integer c_altar_dark = 0
integer c_forge = 0
integer c_great_hall_done = 0
integer c_stronghold_done = 0
integer c_fortress_done = 0
integer c_altar_done = 0
integer c_burrow_done = 0
integer c_guard_done = 0
integer c_altar_dark_done = 0
integer c_forge_done = 0
integer c_raider = 0
integer c_grunt = 0
integer c_warlock = 0
integer c_hero = 0
integer c_raider_done = 0
integer c_grunt_done = 0
integer c_warlock_done = 0
integer c_hero_done = 0
integer c_food_used = 0
integer c_food_made = 0
endglobals
--------------------------------------------------------------------------------------------------
init_vars
--------------------------------------------------------------------------------------------------
init_vars
--------------------------------------------------------------------------------------------------
function init_vars takes nothing returns nothing
set building towncount
set c_great_hall = TownCount(great_hall)
set c_stronghold = TownCount(stronghold)
set c_fortress = TownCount(fortress)
set c_altar = TownCount(altar)
set c_burrow = GetUnitCount(burrow)
set c_guard = TownCount(watch_tower)
set c_altar_dark = TownCount(altar_dark)
set c_great_hall = TownCount(great_hall)
set c_stronghold = TownCount(stronghold)
set c_fortress = TownCount(fortress)
set c_altar = TownCount(altar)
set c_burrow = GetUnitCount(burrow)
set c_guard = TownCount(watch_tower)
set c_altar_dark = TownCount(altar_dark)
set bulding done virable
set c_great_hall_done = TownCountDone(great_hall)
set c_stronghold_done = TownCountDone(stronghold)
set c_fortress_done = TownCountDone(fortress)
set c_altar_done = TownCountDone(altar)
set c_burrow_done = GetUnitCountDone(burrow)
set c_forge_done = GetUnitCountDone(forge)
set c_altar_dark_done = GetUnitCountDone(altar_dark)
set c_stronghold_done = TownCountDone(stronghold)
set c_fortress_done = TownCountDone(fortress)
set c_altar_done = TownCountDone(altar)
set c_burrow_done = GetUnitCountDone(burrow)
set c_forge_done = GetUnitCountDone(forge)
set c_altar_dark_done = GetUnitCountDone(altar_dark)
set units getunitcount
set c_raider = GetUnitCount(raider)
set c_grunt = GetUnitCount(grunt)
set c_warlock = GetUnitCount(warlock)
set c_hero = GetUnitCount(hero)
set c_grunt = GetUnitCount(grunt)
set c_warlock = GetUnitCount(warlock)
set c_hero = GetUnitCount(hero)
set units getunitcountDone
set c_raider_done = GetUnitCountDone(raider)
set c_grunt_done = GetUnitCountDone(grunt)
set c_warlock_done = GetUnitCountDone(warlock)
set c_hero_done = GetUnitCountDone(hero)
set c_grunt_done = GetUnitCountDone(grunt)
set c_warlock_done = GetUnitCountDone(warlock)
set c_hero_done = GetUnitCountDone(hero)
other
set c_food_used = FoodUsed()
set c_food_made = c_great_hall * GetFoodMade(great_hall) + c_burrow * GetFoodMade(burrow)
set c_food_made = c_great_hall * GetFoodMade(great_hall) + c_burrow * GetFoodMade(burrow)
********************************************************
**********STOP UNIT VARS
********************************************************
**********STOP UNIT VARS
********************************************************
endfunction
********************************************************
*********************SET VARS FUNCTION******************
********************************************************
*********************SET VARS FUNCTION******************
********************************************************
function set_vars takes nothing returns nothing
loop
call init_vars()
call Sleep(1)
endloop
endfunction
loop
call init_vars()
call Sleep(1)
endloop
endfunction
********************************************************
*************************MAIN FUNCTION******************
********************************************************
*************************MAIN FUNCTION******************
********************************************************
function main takes nothing returns nothing
call CampaignAI(burrow,null)
call SetReplacements(1,1,1)
call StartThread(function set_vars)
call SetPeonsRepair(true)
call Sleep( 0.1 )
build base
call CampaignAI(burrow,null)
call SetReplacements(1,1,1)
call StartThread(function set_vars)
call SetPeonsRepair(true)
call Sleep( 0.1 )
build base
call SetBuildUnit(1, peon)
if c_great_hall_done + c_stronghold_done + c_fortress_done < 1 then
call SetBuildUnit( 1, great_hall )
endif
call SetBuildUnit( 6, peon )
call SetBuildUnit( 1, altar )
call SetBuildUnit( 1, burrow )
call SetBuildUnit( 1, barrack )
call SetBuildUnit( 2, burrow )
call SetBuildUnit( 1, forge )
call CampaignDefenderEx( 2,2,3, grunt )
call CampaignDefenderEx( 1,1,1, hero )
call SetBuildUpgr( 1, upg_melee )
call SetBuildUpgr( 1, upg_armor )
call SetBuildUpgr( 1, upg_spikes )
call SetBuildUnit( 5, burrow )
if c_stronghold_done + c_fortress_done < 1 then
call SetBuildUnit( 1, stronghold )
endif
call SetBuildUpgr( 2, upg_spikes )
call SetBuildUpgr( 2, upg_armor )
call SetBuildUnit( 7, burrow )
call SetBuildUpgr( 2, upg_melee )
call SetBuildUpgr( 1, upg_burrow )
call SetBuildUnit( 1, altar_dark )
call SetBuildUnit( 1, bestiary )
call CampaignDefenderEx( 2,2,3, grunt )
call CampaignDefenderEx( 2,2,3, warlock )
call CampaignDefenderEx( 2,2,3, raider )
endfunction
if c_great_hall_done + c_stronghold_done + c_fortress_done < 1 then
call SetBuildUnit( 1, great_hall )
endif
call SetBuildUnit( 6, peon )
call SetBuildUnit( 1, altar )
call SetBuildUnit( 1, burrow )
call SetBuildUnit( 1, barrack )
call SetBuildUnit( 2, burrow )
call SetBuildUnit( 1, forge )
call CampaignDefenderEx( 2,2,3, grunt )
call CampaignDefenderEx( 1,1,1, hero )
call SetBuildUpgr( 1, upg_melee )
call SetBuildUpgr( 1, upg_armor )
call SetBuildUpgr( 1, upg_spikes )
call SetBuildUnit( 5, burrow )
if c_stronghold_done + c_fortress_done < 1 then
call SetBuildUnit( 1, stronghold )
endif
call SetBuildUpgr( 2, upg_spikes )
call SetBuildUpgr( 2, upg_armor )
call SetBuildUnit( 7, burrow )
call SetBuildUpgr( 2, upg_melee )
call SetBuildUpgr( 1, upg_burrow )
call SetBuildUnit( 1, altar_dark )
call SetBuildUnit( 1, bestiary )
call CampaignDefenderEx( 2,2,3, grunt )
call CampaignDefenderEx( 2,2,3, warlock )
call CampaignDefenderEx( 2,2,3, raider )
endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
Показать
XGM Bot
2 дня
0
Показать
Похожие вопросы:
- Карты, в которых есть триггеры на джассе не запускаются.
ответ
Hate:
- Обратный отсчет на джассе
ответ
N1ghtSiren:
- как делать проходимость на ходьбу и т.д на джассе?
ответ
Берги:
- Реген хп на джассе
ответ
Берги:
- Всем привет, постепенно перехожу на джасс кодинг, попытался…
ответ
IzobretatelBoom:
Поиск по сайту
Этот комментарий удален
0
Показать
sumi
2 дня
0
Показать
пока остановился на полной проверке редактора объектов, видимо что-то напутал
0
Показать
sumi
2 дня
0
Показать
полностью переработал расу в редакторе, вопрос остался открытым. Возможно после грейда на условный т2, ии думает что здания нет и строит т1.
0
Показать
tima 0404
2 дня
0
Показать
согласен с предыдущем коментарием
0
Показать
Makeba
1 день
0
Показать
Не в курсе как должен работать AI скрипт в варкрафте, но по идее main вызывается только один раз при инициализации.
И я сомневаюсь, что эти проверки, впихнутые прямо туда, оказывают какое-то влияние на очередь строительства
0
Показать
Vampir_kolik
1 день
0
Показать
Makeba, в ИИ скриптах не работают многие функции которые можно запихнуть в главный код, так же и в главном коде не работают некоторые функции которые работают в ИИ скриптах. Так что не сравнивай их. Эта два отдельных острова. Где свои законы.
0
Показать
Makeba
1 день
0
Показать
Vampir_kolik, всё ещё сомневаюсь, что функция с названием main может вызываться игрой чаще одного раза
0
Показать
Vampir_kolik
1 день
0
Показать
Makeba, да так оно и есть скрипт human.ai имеет тоже функцию main, которая вызывается первая для этого скрипта. А main в карте должен содержать инициализацию ai скриптов не помню точную функцию. Помню что AI в конце. Вроде бы, вот эта функция MeleeStartingAI.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.

WC3



