offline
Опыт:
26,564
Активность:
|
Импорт Blizzard.j с откорректированной функцией
Здравия желаю! Опять Мория, опять с нубскими вопросами - но, увы, поиск по форуму ответов не дал T_T
Как я уже постулировал в этой теме, у меня возникла задача "переделать" нежить в рамках проекта "Вселенная Хонор Харрингтон". Способ добычи я хочу им сохранить, дать при старте не троих, а пятерых рабочих, ну и, собссно, все (с точки зрения механики). Мне порекомендовали откорректировать Blizzard.j, что я и сделал следующим образом:
» функция из blizzard.j
//===========================================================================
// Starting Units for Undead Players
// - 1 Necropolis, placed at start location
// - 1 Haunted Gold Mine, placed on nearest gold mine
// - 3 Acolytes, placed between start location and nearest gold mine
// - 1 Ghoul, placed between start location and nearest gold mine
// - Blight, centered on nearest gold mine, spread across a "large area"
//
function MeleeStartingUnitsUndead takes player whichPlayer, location startLoc, boolean doHeroes, boolean doCamera, boolean doPreload returns nothing
local boolean useRandomHero = IsMapFlagSet(MAP_RANDOM_HERO)
local real unitSpacing = 64.00
local unit nearestMine
local location nearMineLoc
local location nearTownLoc
local location heroLoc
local real peonX
local real peonY
local real ghoulX
local real ghoulY
if (doPreload) then
call Preloader( "scripts\\UndeadMelee.pld" )
endif
set nearestMine = MeleeFindNearestMine(startLoc, bj_MELEE_MINE_SEARCH_RADIUS)
if (nearestMine != null) then
// Spawn Necropolis at the start location.
call CreateUnitAtLoc(whichPlayer, 'unpl', startLoc, bj_UNIT_FACING)
// Replace the nearest gold mine with a blighted version.
set nearestMine = BlightGoldMineForPlayerBJ(nearestMine, whichPlayer)
// Spawn Acolytes near the mine.
set nearMineLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 320, 0)
set peonX = GetLocationX(nearMineLoc)
set peonY = GetLocationY(nearMineLoc)
call CreateUnit(whichPlayer, 'uaco', peonX + 0.00 * unitSpacing, peonY + 0.50 * unitSpacing, bj_UNIT_FACING)
call CreateUnit(whichPlayer, 'uaco', peonX + 0.65 * unitSpacing, peonY - 0.50 * unitSpacing, bj_UNIT_FACING)
call CreateUnit(whichPlayer, 'uaco', peonX - 0.65 * unitSpacing, peonY - 0.50 * unitSpacing, bj_UNIT_FACING)
call CreateUnit(whichPlayer, 'uaco', peonX + 0.65 * unitSpacing, peonY + 0.50 * unitSpacing, bj_UNIT_FACING)
call CreateUnit(whichPlayer, 'uaco', peonX - 0.00 * unitSpacing, peonY - 0.50 * unitSpacing, bj_UNIT_FACING)
// Set random hero spawn point to be off to the side of the start location.
set heroLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 384, 45)
else
// Spawn Necropolis at the start location.
call CreateUnitAtLoc(whichPlayer, 'unpl', startLoc, bj_UNIT_FACING)
// Spawn Acolytes and Ghoul directly south of the Necropolis.
set peonX = GetLocationX(startLoc)
set peonY = GetLocationY(startLoc) - 224.00
call CreateUnit(whichPlayer, 'uaco', peonX - 1.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING)
call CreateUnit(whichPlayer, 'uaco', peonX - 0.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING)
call CreateUnit(whichPlayer, 'uaco', peonX + 0.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING)
call CreateUnit(whichPlayer, 'uaco', peonX - 2.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING)
call CreateUnit(whichPlayer, 'uaco', peonX + 2.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING)
// Set random hero spawn point to be just south of the start location.
set heroLoc = Location(peonX, peonY - 2.00 * unitSpacing)
endif
if (doHeroes) then
// If the "Random Hero" option is set, start the player with a random hero.
// Otherwise, give them a "free hero" token.
if useRandomHero then
call MeleeRandomHeroLoc(whichPlayer, 'Udea', 'Udre', 'Ulic', 'Ucrl', heroLoc)
else
call SetPlayerState(whichPlayer, PLAYER_STATE_RESOURCE_HERO_TOKENS, bj_MELEE_STARTING_HERO_TOKENS)
endif
endif
if (doCamera) then
// Center the camera on the initial Acolytes.
call SetCameraPositionForPlayer(whichPlayer, peonX, peonY)
call SetCameraQuickPositionForPlayer(whichPlayer, peonX, peonY)
endif
endfunction
Увы, импорт модифицированного файла приводит к тому, что карта банальтно "не пашет", выдавая море "Ошибок синтаксиса", ссылающихся на строки кода, которых в этом коде попросту нет Т_Т
Вопрос: что я делаю не так? Ведь проблема выеденного яйца же!
Второй вопрос: как это сделать правильно?
Заранее спасибо.
PS Сейчас, когда увидел код в интерпретации форумного движка, обнаружил "табы" перед call CreateUnit. Проблема не может быть в этом? О_о
|