Hello,
I started to play CTP II with the latest apolyton patch and every thing worked well until I got this error message:
Slic Error
noname: is not an integer.
Line 59.
C:\Program Files\Activision\Call To Power 2\ctp2_data\default\gamedata\tut2_func.slc
I hope some one is able to fix this. Thanks a lot!
Micha
HERE IS THE CODE of the file
I started to play CTP II with the latest apolyton patch and every thing worked well until I got this error message:
Slic Error
noname: is not an integer.
Line 59.
C:\Program Files\Activision\Call To Power 2\ctp2_data\default\gamedata\tut2_func.slc
I hope some one is able to fix this. Thanks a lot!
Micha
HERE IS THE CODE of the file
Code:
#include "tut2_terrain.slc" //terrain scoring for what's a good place to settle ////////////////////////////// // Global variables go here:// ////////////////////////////// unit_t SETTLERS[]; //I hold all of the player's settlers int_t NUM_SETTLERS; city_t FIRST_CITY; //I'm the first city the player's built city_t FIRST_CITY_WITH_GOOD; //the first city which is collecting a good int_t MOVED_UNIT_ONCE_FLAG; //I check to see if the unit's been moved int_t RADIUS_SCORE; //gets used by int_f CheckSettlerRadius() int_t ARBITRARY_TERRAIN_VALUE; //used to see if the settler is on a good location to build a city int_t TILE_SCORE[]; int_t MAX_DIR; int_t GOOD_BONUS; //multiplier for good int_t RIVER_BONUS; //multiplier for river int_t GOOD_DIR; //direction of the nearest good int_t GOOD_NAME; //the type of good int_t RIVER_DIR; //direction of the nearest river int_t RIOT_LEVEL; //from constDB int_t REVOLUTION_LEVEL; //from constDB int_t WAGES_EXP; int_t WORKDAY_EXP; int_t RATIONS_EXP; int_t RATIONS_LEVEL; int_t WORKDAY_LEVEL; int_t WAGES_LEVEL; int_t CITY_STARVATION_TURNS; int_t CITIES_BUILDING; int_t CITY_BUILDING_BUILDING; int_t CITY_BUILDING_WONDER; city_t BUILDING_BUILDING; city_t BUILDING_WONDER; ///////////////////// //Functions go here// ///////////////////// //find a specific unit in an army int_f CheckForUnit(army_t tmpArmy, unit_t chkUnit) { unit_t tmpUnit; int_t i; int_t verifyUnit; verifyUnit = 0; [SIZE=4][B] for(i = 0; i < tmpArmy.size; i = i + 1) { if(GetUnitFromArmy(tmpArmy, i, tmpUnit)) {[/B][/SIZE] if(tmpUnit == chkUnit) { verifyUnit = 1; return verifyUnit; } else { verifyUnit = 0; } } } return verifyUnit; } //check to see if a given unit is in a city int_f CheckCityLoc(int_t playerCities, location_t unitLoc) { int_t i; city_t tmpCity; int_t verifyLoc; verifyLoc = 0; for(i = 0; i < playerCities; i = i + 1) { GetCityByIndex(player[0], i, tmpCity); if(tmpCity.location == unitLoc && CityIsValid(tmpCity)) { verifyLoc = 1; return verifyLoc; } else { verifyLoc = 0; } } return verifyLoc; } //reinitialize SETTLERS[] void_f ReinitializeSettlerArray() { int_t i; if(SETTLERS.# > 0) { for(i = 0; i < SETTLERS.#; i = i + 1) { SETTLERS[i] = 0; } } } //reinitialize TILE_SCORE[] void_f ReinitializeTileScoreArray() { int_t i; if(TILE_SCORE.# > 0) { for(i = 0; i < TILE_SCORE.#; i = i + 1) { TILE_SCORE[i] = 0; } } } //count the number of settlers the player has //****can't pass unit types to functions**** int_f CountSettlers(int_t num_armies) { army_t tmpArmy; unit_t tmpUnit; int_t i; int_t j; int_t k; k = 0; ReinitializeSettlerArray(); for(i = 0; i < num_armies; i = i + 1) { GetArmyByIndex(player[0], i, tmpArmy); for(j = 0; j < tmpArmy.size; j = j + 1) { if(GetUnitFromArmy(tmpArmy, j, tmpUnit)) { if(tmpUnit.type == UnitDB(UNIT_SETTLER)) { SETTLERS[k] = tmpUnit; k = k + 1; } } } } return SETTLERS.#; } //see if a settler in the Settler array is in the army that just got moved //****size of an array is "array_name.#"**** int_f IsSettlerInArmy(unit_t tmpUnit) { int_t j; int_t SettlerCheck; SettlerCheck = 0; for(j = 0; j < SETTLERS.#; j = j + 1) { if(tmpUnit == SETTLERS[j]) { SettlerCheck = 1; return SettlerCheck; } else { SettlerCheck = 0; } } return SettlerCheck; } //check to see what kinds of terrain are around the settler int_f CheckSettlerRadius(location_t checkLoc) { ReinitializeTileScoreArray(); int_t i; location_t tmpLoc; int_t tmpScore; RADIUS_SCORE = TERRAIN_SCORE[TerrainType(checkLoc)]; //start with the tile the settler's standing on if(HasRiver(checkLoc)) { RADIUS_SCORE = RADIUS_SCORE + RIVER_BONUS; } if(HasGood(checkLoc)) { RADIUS_SCORE = RADIUS_SCORE*GOOD_BONUS; } TILE_SCORE[MAX_DIR] = RADIUS_SCORE; for(i = 0; i < MAX_DIR; i = i + 1) { GetNeighbor(checkLoc, i, tmpLoc); tmpScore = TERRAIN_SCORE[TerrainType(tmpLoc)]; if(HasRiver(tmpLoc)) { tmpScore = tmpScore + RIVER_BONUS; } if(HasGood(tmpLoc) >= 0) { tmpScore = tmpScore*GOOD_BONUS; } RADIUS_SCORE = RADIUS_SCORE + tmpScore; TILE_SCORE[i] = tmpScore; } return RADIUS_SCORE; } //point out the river int_f FindRiver(location_t checkLoc) { int_t i; location_t tmpLoc; int_t tmpScore; MAX_DIR = 8; if(HasRiver(checkLoc)) { RIVER_DIR = MAX_DIR; return RIVER_DIR; } for(i = 0; i < MAX_DIR; i = i + 1) { GetNeighbor(checkLoc, i, tmpLoc); if(HasRiver(tmpLoc)) { RIVER_DIR = i; return RIVER_DIR; } } return RIVER_DIR; } //check to see if there's a good nearby int_f FindGood(location_t checkLoc) { int_t i; location_t tmpLoc; int_t tmpScore; MAX_DIR = 8; GOOD_NAME = -1; if(HasGood(checkLoc) >= 0) { GOOD_DIR = MAX_DIR; GOOD_NAME = HasGood(checkLoc); return GOOD_NAME; } else { for(i = 0; i < MAX_DIR; i = i + 1) { GetNeighbor(checkLoc, i, tmpLoc); if(HasGood(tmpLoc) >= 0) { GOOD_DIR = i; GOOD_NAME = HasGood(tmpLoc); return GOOD_NAME; } else { GOOD_DIR = -1; GOOD_NAME = -1; } } return GOOD_NAME; } } //when a settler moves, check whether or not the place they're on is good to build a city on int_f SettlerMoved() { int_t i; army_t tmpArmy; unit_t tmpSettler; int_t SettlerMoved; SettlerMoved = 0; for(i = 0; i < army[0].size; i = i + 1) { GetUnitFromArmy(army[0], i, tmpSettler); if(IsSettlerInArmy(tmpSettler)) { SettlerMoved = 1; return SettlerMoved; } else { SettlerMoved = 0; } } return SettlerMoved; } //when a settler moves, check whether or not there's a river nearby void_f SettlerRiver() { int_t i; army_t tmpArmy; unit_t tmpSettler; for(i = 0; i < army[0].size; i = i + 1) { GetUnitFromArmy(army[0], i, tmpSettler); if(IsSettlerInArmy(tmpSettler)) { if(FindRiver(tmpSettler.location)) { Message(g.player, 'TMCheckRiver'); return CONTINUE; } else { Message(g.player, 'TMNoRiver'); } } } } //when a settler moves, check whether or not the place they're on is good to build a city on void_f SettlerGood() { int_t i; army_t tmpArmy; unit_t tmpSettler; for(i = 0; i < army[0].size; i = i + 1) { GetUnitFromArmy(army[0], i, tmpSettler); if(IsSettlerInArmy(tmpSettler)) { if(FindGood(tmpSettler.location) >= 0) { Message(g.player, 'TMCheckGood'); return CONTINUE; } else { Message(g.player, 'TMNoGoods'); } } } } //check to see if any cities are NOT building something int_f AllCitiesBuilding(int_t plr) { int_t i; int_t j; city_t tmpCity; j = 0; //just need to see how many cities we're talking about int_t all_cities_building; all_cities_building = 0; player[0] = plr; for(i = 0; i < player[0].cities; i = i + 1) { GetCityByIndex(player[0], i, tmpCity); if(!tmpCity.buildqueuelength && CityIsValid(tmpCity)) { city[0] = tmpCity; j = j + 1; } } if(j == 1) { Message(g.player, 'TMBuildQueueEmpty'); return all_cities_building; } elseif(j > 1) { Message(g.player, 'TMCitiesNotBuilding'); return all_cities_building; } else { all_cities_building = 1; return all_cities_building; } } void_f AllCitiesHappy() { int_t i; int_t j; city_t tmpCity; j = 0; //just need to see how many cities we're talking about for(i = 0; i < player[0].cities; i = i + 1) { GetCityByIndex(player[0], i, tmpCity); if(tmpCity.happiness < RIOT_LEVEL + 1 && CityIsValid(tmpCity)) { city[0] = tmpCity; j = j + 1; if(j <= 1) { Message(g.player, 'TAOneUnhappyCity'); return CONTINUE; } else { Message(g.player, 'TAUnhappyCities'); } } } } void_f AllCitiesFood() { int_t i; int_t j; city_t tmpCity; j = 0; //just need to see how many cities we're talking about for(i = 0; i < player[0].cities; i = i + 1) { GetCityByIndex(player[0], i, tmpCity ); if(CityFoodDelta(tmpCity) < 0 && CityIsValid(tmpCity)) { city[0] = tmpCity; j = j + 1; if(j <= 1) { CITY_STARVATION_TURNS = CityStarvationTurns(city[0]); Message(g.player, 'TAOneStarvingCity'); return CONTINUE; } else { Message(g.player, 'TAStarvingCities'); } } } } int_f abs(int_t value) { if(value < 0) { return -value; } else { return value; } } int_f opp(int_t value) { return -value; } void_f GetLevels() { WAGES_EXP = opp(PlayerWagesExp(player[0])); WORKDAY_EXP = opp(PlayerWorkdayExp(player[0])); RATIONS_EXP = opp(PlayerRationsExp(player[0])); RATIONS_LEVEL = opp(PlayerRationsLevel(player[0])); WORKDAY_LEVEL = opp(PlayerWorkdayLevel(player[0])); WAGES_LEVEL = opp(PlayerWagesLevel(player[0])); } int_f UnitLocCompare(unit_t tmpUnit) { int_t i; int_t UnitInCity; city_t tmpCity; player[0] = tmpUnit.owner; UnitInCity = 0; for(i = 0; i < player[0].cities; i = i + 1) { GetCityByIndex(player[0], i, tmpCity); if(tmpCity.location == tmpUnit.location && CityIsValid(tmpCity)) { city[0] = tmpCity; UnitInCity = 1; } else { UnitInCity = 0; } } return UnitInCity; } int_f LocCompare(location_t tmpLoc) { int_t i; int_t locOK; city_t tmpCity; locOK = 0; for(i = 0; i < player[0].cities; i = i + 1) { GetCityByIndex(player[0], i, tmpCity); if(tmpCity.location == tmpLoc && CityIsValid(tmpCity)) { city[0] = tmpCity; locOK = 1; return locOK; } else { locOK = 0; } } return locOK; } int_f CheckForPlanes(army_t tmpArmy) { int_t i; int_t noPlanes; unit_t tmpUnit; noPlanes = 0; // for (i = 0; i < tmpArmy.size; i = i + 1) { // GetUnitFromArmy(tmpArmy, i, tmpUnit); // if(UnitHasFlag(tmpUnit, NoFuelThenCrash)) { // noPlanes = 1; // return noPlanes; // } else { // noPlanes = 0; // } // } return noPlanes; } int_f CitiesAreBuilding(int_t plr) { int_t i; city_t tmpCity; player[0] = plr; CITIES_BUILDING = 0; for(i = 0; i < player[0].cities; i = i + 1) { GetCityByIndex(player[0], i, tmpCity); if(CityIsValid(tmpCity) && tmpCity.buildqueuelength) { CITIES_BUILDING = 1; return CITIES_BUILDING; } } return CITIES_BUILDING; } int_f CityBuildingBuilding(int_t plr) { int_t i; int_t blah; int_t yes_building_building; city_t tmpCity; CITY_BUILDING_BUILDING = 0; yes_building_building = 0; blah = -1; player[0] = plr; for(i = 0; i < player[0].cities; i = i + 1) { GetCityByIndex(player[0], i, tmpCity); blah = IsBuildingAtHead(tmpCity); if(blah >= 0) { BUILDING_BUILDING = tmpCity; yes_building_building = 1; CITY_BUILDING_BUILDING = blah; message(player[0], 'TMKeepHittingEndBuilding'); return yes_building_building; } } return yes_building_building; } int_f CityBuildingWonder(int_t plr) { int_t i; int_t blah; int_t yes_building_wonder; city_t tmpCity; yes_building_wonder = 0; CITY_BUILDING_WONDER = 0; blah = -1; player[0] = plr; for(i = 0; i < player[0].cities; i = i + 1) { GetCityByIndex(player[0], i, tmpCity); blah = IsWonderAtHead(tmpCity); if(blah >= 0) { BUILDING_WONDER = tmpCity; CITY_BUILDING_WONDER = blah; yes_building_wonder = 1; message(g.player, 'TMKeepHittingEndWonder'); return yes_building_wonder; } } return yes_building_wonder; } int_f CityNameCheck(int_t plr) { int_t i; city_t tmpCity; int_t CITY_NAME_CHECK; CITY_NAME_CHECK = 0; player[0] = plr; for(i = 0; i < player[0].cities; i = i + 1) { GetCityByIndex(player[0], i, tmpCity); city[0] = tmpCity; if(CityIsNamed(city[0], "POO")) { CITY_NAME_CHECK = 1; Message(player[0], 'TAPOO'); return CITY_NAME_CHECK; } } return CITY_NAME_CHECK; }