*question* Copying AI

General talk about editing, cheating, and deprotecting maps.

Moderator: Cheaters

lwollert
Newcomer
Posts: 1
Joined: June 18th, 2007, 6:19 am

*question* Copying AI

Post by lwollert »

Simple question; is there an easy way to transfer the AI scripts from one version of a map to another?

The example i am looking at is getting the AI
from: http://epicwar.com/maps/17274/ (HLW Lition 7.95 with AI)
to: http://epicwar.com/maps/23671/ (HLWL 7.97 original)

As the main gameplay is identical, and the update is only bugfixes, that is what I am looking at doing.

Addit:
Unprotected: 7.95 AI
HLWL7.95AIDePro.w3x
Unprotected: 7.97 original
HLWL7.97DePro.w3x
Obvious AI triggers:

Code: Select all

//***********************************************IACO MODIFACATION****************************//
function O42765 takes nothing returns boolean
	return(GetPlayerSlotState(GetEnumPlayer())==PLAYER_SLOT_STATE_PLAYING)
endfunction

function O42889 takes nothing returns nothing
	if(O42765())then
		call CreateNUnitsAtLoc(1,'ewsp',GetEnumPlayer(),GetPlayerStartLocationLoc(GetEnumPlayer()),bj_UNIT_FACING)
	else
		call DoNothing()
	endif
endfunction

function O42890 takes nothing returns nothing
	if(O42765())then
		if((GetEnumPlayer()==Player(1))or(GetEnumPlayer()==Player(2))or(GetEnumPlayer()==Player(3))or(GetEnumPlayer()==Player(4)))then
			set udg_integer30=GetRandomInt(1,udg_integer29)
			call CreateNUnitsAtLoc(1,udg_integers06[udg_integers07[udg_integer30]],GetEnumPlayer(),GetRectCenter(udg_rect24),bj_UNIT_FACING)
			call SelectUnitForPlayerSingle(GetLastCreatedUnit(),GetOwningPlayer(GetLastCreatedUnit()))
			call DisplayTextToForce(GetPlayersAll(),("A computer chose "+GetUnitName(GetLastCreatedUnit())))
			call AdjustPlayerStateBJ(50,GetEnumPlayer(),PLAYER_STATE_RESOURCE_GOLD)
			set udg_integers07[udg_integer30]=udg_integer29
			set udg_integer29=(udg_integer29-1)
			if(GetAIDifficulty(GetEnumPlayer())==AI_DIFFICULTY_INSANE)then
				call SetPlayerHandicapXP(GetEnumPlayer(),2.5)
			elseif(GetAIDifficulty(GetEnumPlayer())==AI_DIFFICULTY_NORMAL)then
				call SetPlayerHandicapXP(GetEnumPlayer(),1.5)
			endif
		endif
		if((GetEnumPlayer()==Player(5))or GetEnumPlayer()==Player(6)or GetEnumPlayer()==Player(7)or GetEnumPlayer()==Player(8)or GetEnumPlayer()==Player(9))then
			set udg_integer30=GetRandomInt(1,udg_integer29)
			call CreateNUnitsAtLoc(1,udg_integers06[udg_integers07[udg_integer30]],GetEnumPlayer(),GetRectCenter(udg_rect25),bj_UNIT_FACING)
			call SelectUnitForPlayerSingle(GetLastCreatedUnit(),GetOwningPlayer(GetLastCreatedUnit()))
			call DisplayTextToForce(GetPlayersAll(),("A computer chose "+GetUnitName(GetLastCreatedUnit())))
			call AdjustPlayerStateBJ(50,GetEnumPlayer(),PLAYER_STATE_RESOURCE_GOLD)
			set udg_integers07[udg_integer30]=udg_integer29
			set udg_integer29=(udg_integer29-1)
			if(GetAIDifficulty(GetEnumPlayer())==AI_DIFFICULTY_INSANE)then
				call SetPlayerHandicapXP(GetEnumPlayer(),2.5)
			elseif(GetAIDifficulty(GetEnumPlayer())==AI_DIFFICULTY_NORMAL)then
				call SetPlayerHandicapXP(GetEnumPlayer(),1.5)
			endif
		endif
	else
		call DoNothing()
	endif
endfunction

function O42995 takes nothing returns nothing
	call ForForce(GetPlayersByMapControl(MAP_CONTROL_USER),function O42889)
	call ForForce(GetPlayersByMapControl(MAP_CONTROL_COMPUTER),function O42890)
	call DisableTrigger(udg_trigger02)
	call DisableTrigger(udg_trigger03)
endfunction

///////////////////AI
//Achat dans les batiments et ou str,int,agi//
function O42997 takes nothing returns nothing
	local player PlayerActu=GetEnumPlayer()
	local integer GoldOfPlayer
	local group Town
	local integer Rand=GetRandomInt(0,4)
	local unit BuyBulding
	local integer Cpt=0
	local unit HeroActu=FirstOfGroup(GetUnitsOfPlayerAll(PlayerActu))
	set Town=GetUnitsOfPlayerAndTypeId(PlayerActu,'htow')
	set GoldOfPlayer=GetPlayerState(PlayerActu,PLAYER_STATE_RESOURCE_GOLD)
	if((IsUnitGroupEmptyBJ(Town))==false)then//Ville lvl 1
		set BuyBulding=FirstOfGroup(Town)
		loop
			exitwhen(GoldOfPlayer<5 or Cpt==10)//Fix boucle infini//don't find function UnitsInStock()
			set Cpt=Cpt+1
			set GoldOfPlayer=GetPlayerState(PlayerActu,PLAYER_STATE_RESOURCE_GOLD)
			if(GoldOfPlayer>9000)then//Fix to many creeps:(
				if(GoldOfPlayer>=30000)then
					if(IssueTrainOrderByIdBJ(BuyBulding,'n00B'))then
						set udg_integers08[GetPlayerId(PlayerActu)]=3
					endif
				endif
			else
				if(IssueTrainOrderByIdBJ(BuyBulding,'n00C')==false)then
					if(IssueTrainOrderByIdBJ(BuyBulding,'n009')==false)then
						if(IssueTrainOrderByIdBJ(BuyBulding,'n008')==false)then
							if(IssueTrainOrderByIdBJ(BuyBulding,'n007')==false)then
								if(IssueTrainOrderByIdBJ(BuyBulding,'n006')==false)then
									if(IssueTrainOrderByIdBJ(BuyBulding,'n005')==false)then
										if(IssueTrainOrderByIdBJ(BuyBulding,'n004')==false)then
											if(IssueTrainOrderByIdBJ(BuyBulding,'n003')==false)then
												if(IssueTrainOrderByIdBJ(BuyBulding,'n002')==false)then
													if(IssueTrainOrderByIdBJ(BuyBulding,'n001')==false)then
														call DoNothing()
													endif
												endif
											endif
										endif
									endif
								endif
							endif
						endif
					endif
				endif
			endif
		endloop
	endif
	set Town=GetUnitsOfPlayerAndTypeId(PlayerActu,1868984948)
	if((IsUnitGroupEmptyBJ(Town))==false)then//Ville lvl 2
		set BuyBulding=FirstOfGroup(Town)
		loop
			exitwhen(GoldOfPlayer<1000 or Cpt==10)//Fix boucle infini//don't find function UnitsInStock()
			set Cpt=Cpt+1
			set GoldOfPlayer=GetPlayerState(PlayerActu,PLAYER_STATE_RESOURCE_GOLD)
			if(GoldOfPlayer>=100000)then
				call IssueTrainOrderByIdBJ(BuyBulding,'n00M')
			elseif(GoldOfPlayer>10000 and udg_integers08[GetPlayerId(PlayerActu)]==3)then
				if(GetHeroInt(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroInt(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
					call O129851mod(PlayerActu)//int
				elseif(GetHeroStr(HeroActu,false)>=GetHeroInt(HeroActu,false)and GetHeroStr(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
					call O129229mod(PlayerActu)//str
				elseif(GetHeroAgi(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroAgi(HeroActu,false)>=GetHeroInt(HeroActu,false))then
					call O129530mod(PlayerActu)//agi
				endif
				set udg_integers08[GetPlayerId(PlayerActu)]=2
			elseif(GoldOfPlayer>10000 and udg_integers08[GetPlayerId(PlayerActu)]==2)then
				if(GetHeroInt(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroInt(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
					call O129851mod(PlayerActu)//int
				elseif(GetHeroStr(HeroActu,false)>=GetHeroInt(HeroActu,false)and GetHeroStr(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
					call O129530mod(PlayerActu)//agi
				elseif(GetHeroAgi(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroAgi(HeroActu,false)>=GetHeroInt(HeroActu,false))then
					call O129229mod(PlayerActu)//str
				endif
				set udg_integers08[GetPlayerId(PlayerActu)]=1
			elseif(GoldOfPlayer>20000 and udg_integers08[GetPlayerId(PlayerActu)]==1)then
				if(GetHeroInt(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroInt(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
					call O129851mod(PlayerActu)//int
				elseif(GetHeroStr(HeroActu,false)>=GetHeroInt(HeroActu,false)and GetHeroStr(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
					call O129229mod(PlayerActu)//str
				elseif(GetHeroAgi(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroAgi(HeroActu,false)>=GetHeroInt(HeroActu,false))then
					call O129530mod(PlayerActu)//agi
				endif
				set udg_integers08[GetPlayerId(PlayerActu)]=10
			elseif(GoldOfPlayer>70000 and udg_integers08[GetPlayerId(PlayerActu)]==10)then
				if(GetHeroInt(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroInt(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
					call O129851mod(PlayerActu)//int
				elseif(GetHeroStr(HeroActu,false)>=GetHeroInt(HeroActu,false)and GetHeroStr(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
					call O129229mod(PlayerActu)//str
				elseif(GetHeroAgi(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroAgi(HeroActu,false)>=GetHeroInt(HeroActu,false))then
					call O129530mod(PlayerActu)//agi
				endif
				set udg_integers08[GetPlayerId(PlayerActu)]=9
			elseif(GoldOfPlayer>70000 and udg_integers08[GetPlayerId(PlayerActu)]==9)then
				if(GetHeroInt(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroInt(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
					call O129530mod(PlayerActu)//agi
				elseif(GetHeroStr(HeroActu,false)>=GetHeroInt(HeroActu,false)and GetHeroStr(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
					call O129530mod(PlayerActu)//agi
				elseif(GetHeroAgi(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroAgi(HeroActu,false)>=GetHeroInt(HeroActu,false))then
					call O129229mod(PlayerActu)//str
				endif
				set udg_integers08[GetPlayerId(PlayerActu)]=20
			else
				if(IssueTrainOrderByIdBJ(BuyBulding,'n00N')==false)then
					if(IssueTrainOrderByIdBJ(BuyBulding,'n00L')==false)then
						if(IssueTrainOrderByIdBJ(BuyBulding,'n00K')==false)then
							if(IssueTrainOrderByIdBJ(BuyBulding,'n00J')==false)then
								if(IssueTrainOrderByIdBJ(BuyBulding,'n00I')==false)then
									if(IssueTrainOrderByIdBJ(BuyBulding,'n00H')==false)then
										if(IssueTrainOrderByIdBJ(BuyBulding,'n00G')==false)then
											if(IssueTrainOrderByIdBJ(BuyBulding,'n00F')==false)then
												if(IssueTrainOrderByIdBJ(BuyBulding,'n00E')==false)then
													if(IssueTrainOrderByIdBJ(BuyBulding,'n00D')==false)then
														call DoNothing()
													endif
												endif
											endif
										endif
									endif
								endif
							endif
						endif
					endif
				endif
			endif
		endloop
	endif
	set Town=GetUnitsOfPlayerAndTypeId(PlayerActu,'unp2')
	if((IsUnitGroupEmptyBJ(Town))==false)then//Ville lvl 3
		set BuyBulding=FirstOfGroup(Town)
		loop
			exitwhen(GoldOfPlayer<2250 or Cpt==10)//Fix boucle infini//don't find function UnitsInStock()
			set Cpt=Cpt+1
			set GoldOfPlayer=GetPlayerState(PlayerActu,PLAYER_STATE_RESOURCE_GOLD)
			if((GoldOfPlayer>=300000 and Rand!=0 and Rand!=4))then
				if(Rand==1)then//achat de comp_nce principal
					if(GetHeroInt(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroInt(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
						call O129851mod(PlayerActu)//int
					elseif(GetHeroStr(HeroActu,false)>=GetHeroInt(HeroActu,false)and GetHeroStr(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
						call O129229mod(PlayerActu)//str
					elseif(GetHeroAgi(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroAgi(HeroActu,false)>=GetHeroInt(HeroActu,false))then
						call O129530mod(PlayerActu)//agi
					endif
				elseif(Rand==2)then
					call SetPlayerState(PlayerActu,PLAYER_STATE_RESOURCE_GOLD,0)//acheter bois
					call SetPlayerState(PlayerActu,PLAYER_STATE_RESOURCE_LUMBER,GetPlayerState(PlayerActu,PLAYER_STATE_RESOURCE_LUMBER)+10)
				elseif(Rand==3)then//acheter Comp_nce secondaire
					if(GetHeroInt(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroInt(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
						call O129530mod(PlayerActu)//agi
					elseif(GetHeroStr(HeroActu,false)>=GetHeroInt(HeroActu,false)and GetHeroStr(HeroActu,false)>=GetHeroAgi(HeroActu,false))then
						call O129530mod(PlayerActu)//agi
					elseif(GetHeroAgi(HeroActu,false)>=GetHeroStr(HeroActu,false)and GetHeroAgi(HeroActu,false)>=GetHeroInt(HeroActu,false))then
						call O129229mod(PlayerActu)//str
					endif
				endif
			else
				if(IssueTrainOrderByIdBJ(BuyBulding,'n00Q')==false)then
					if(IssueTrainOrderByIdBJ(BuyBulding,'ufro')==false)then
						if(IssueTrainOrderByIdBJ(BuyBulding,'n012')==false)then
							if(IssueTrainOrderByIdBJ(BuyBulding,'n011')==false)then
								if(IssueTrainOrderByIdBJ(BuyBulding,'n010')==false)then
									if(IssueTrainOrderByIdBJ(BuyBulding,'n00Z')==false)then
										if(IssueTrainOrderByIdBJ(BuyBulding,'n00Y')==false)then
											if(IssueTrainOrderByIdBJ(BuyBulding,'n00X')==false)then
												if(IssueTrainOrderByIdBJ(BuyBulding,'n00W')==false)then
													if(IssueTrainOrderByIdBJ(BuyBulding,'n00V')==false)then
														if(IssueTrainOrderByIdBJ(BuyBulding,'n00U')==false)then
															if(IssueTrainOrderByIdBJ(BuyBulding,'n00T')==false)then
																if(IssueTrainOrderByIdBJ(BuyBulding,'n00S')==false)then
																	if(IssueTrainOrderByIdBJ(BuyBulding,'n00R')==false)then
																		call DoNothing()
																	endif
																endif
															endif
														endif
													endif
												endif
											endif
										endif
									endif
								endif
							endif
						endif
					endif
				endif
			endif
		endloop
	endif
endfunction

function O42996 takes nothing returns nothing
	call ForForce(GetPlayersByMapControl(MAP_CONTROL_COMPUTER),function O42997)
endfunction

//Mouvement des h_s//
function O42999 takes nothing returns nothing
	//S'il y a des unites devant le cercle:le hros y vas
	local group DevantLeCercle1=GetUnitsInRectOfPlayer(Rect(3700.0,700.0,4430.0,-450.0),Player(11))//rect haut
	local group DevantLeCercle2=GetUnitsInRectOfPlayer(Rect(3700.0,-4650.0,4430.0,-6000.0),Player(10))
	local unit Her=FirstOfGroup(GetUnitsOfPlayerAll(GetEnumPlayer()))
	if(udg_integer32<0)then
		if(IsUnitGroupEmptyBJ(DevantLeCercle1)==false and GetPlayerTeam(GetEnumPlayer())==GetPlayerTeam(Player(10)))then
			if(RectContainsUnit(Rect(3700.0,700.0,4430.0,-450.0),Her)==false)then
				call IssueTargetOrderBJ(Her,"attack",FirstOfGroup(DevantLeCercle1))
			endif
		elseif(IsUnitGroupEmptyBJ(DevantLeCercle2)==false and GetPlayerTeam(GetEnumPlayer())==GetPlayerTeam(Player(11)))then
			if(RectContainsUnit(Rect(3700.0,-4650.0,4430.0,-6000.0),Her)==false)then
				call IssueTargetOrderBJ(Her,"attack",FirstOfGroup(DevantLeCercle2))
			endif
		endif
		//S'il a plus de vie go to fontaine
		if(GetUnitLifePercent(Her)<25.0 and GetPlayerTeam(GetEnumPlayer())==GetPlayerTeam(Player(10)))then
			call IssuePointOrderLocBJ(Her,"move",Location(4430.0,700.0))
		elseif(GetUnitLifePercent(Her)<25.0 and GetPlayerTeam(GetEnumPlayer())==GetPlayerTeam(Player(11)))then
			call IssuePointOrderLocBJ(Her,"move",Location(4430.0,-4650.0))
		endif
	else//premier mouvement
		if(GetEnumPlayer()==Player(0)or GetEnumPlayer()==Player(2))then
			call IssuePointOrderLocBJ(Her,"move",Location(1500.0,885.0))
		elseif(GetEnumPlayer()==Player(1)or GetEnumPlayer()==Player(3)or GetEnumPlayer()==Player(4))then
			call IssuePointOrderLocBJ(Her,"move",Location(1500.0,-644.0))
		elseif(GetEnumPlayer()==Player(5)or GetEnumPlayer()==Player(8)or GetEnumPlayer()==Player(7))then
			call IssuePointOrderLocBJ(Her,"move",Location(1500.0,-4610.0))
		elseif(GetEnumPlayer()==Player(6)or GetEnumPlayer()==Player(9))then
			call IssuePointOrderLocBJ(Her,"move",Location(1500.0,-6100.0))
		endif
		set udg_integer32=udg_integer32-1
	endif
endfunction

function O42998 takes nothing returns nothing
	call ForForce(GetPlayersByMapControl(MAP_CONTROL_COMPUTER),function O42999)
endfunction

//Evolution des h_s//
function O43021 takes nothing returns nothing
	local unit Hero=FirstOfGroup(GetUnitsOfPlayerAll(GetEnumPlayer()))
	local integer array S123
	local integer array skills1
	local integer lvl=0
	if(GetHeroSkillPoints(Hero)>0)then
		if(GetUnitTypeId(Hero)=='E00B')then
			set skills1[1]='A000'
			set skills1[2]='A00T'
			set skills1[3]='A02Y'
			set skills1[4]='A000'
			set skills1[5]='A00T'
			set skills1[6]='A03C'
			set skills1[7]='A02Y'
			set skills1[8]='A000'
			set skills1[9]='A00T'
			set skills1[10]='A02Y'
			set skills1[11]='A000'
			set skills1[12]='A00T'
			set skills1[13]='A02Y'
			set skills1[14]='A000'
			set skills1[15]='A00T'
			set skills1[16]='A03C'
			set skills1[17]='A02Y'
			set skills1[18]='A000'
			set skills1[19]='A00T'
			set skills1[20]='A02Y'
			set skills1[21]='A000'
			set skills1[22]='A00T'
			set skills1[23]='A02Y'
			set skills1[24]='A000'
			set skills1[25]='A00T'
			set skills1[26]='A03C'
			set skills1[27]='A02Y'
			set skills1[28]='A000'
			set skills1[29]='A00T'
			set skills1[30]='A02Y'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[lvl])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='E00E')then
			set skills1[1]='A000'
			set skills1[2]='A02I'
			set skills1[3]='A002'
			set skills1[4]='A000'
			set skills1[5]='A02I'
			set skills1[6]='A032'
			set skills1[7]='A002'
			set skills1[8]='A000'
			set skills1[9]='A02I'
			set skills1[10]='A002'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='E00O')then
			set skills1[1]='A04S'
			set skills1[2]='A00Y'
			set skills1[3]='A000'
			set skills1[4]='A04S'
			set skills1[5]='A00Y'
			set skills1[6]='A04O'
			set skills1[7]='A000'
			set skills1[8]='A04S'
			set skills1[9]='A00Y'
			set skills1[10]='A000'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='E00Q')then
			set skills1[1]='A050'
			set skills1[2]='A051'
			set skills1[3]='A000'
			set skills1[4]='A050'
			set skills1[5]='A051'
			set skills1[6]='A053'
			set skills1[7]='A000'
			set skills1[8]='A050'
			set skills1[9]='A051'
			set skills1[10]='A000'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='H000')then
			set skills1[1]='A000'
			set skills1[2]='A00Z'
			set skills1[3]='A034'
			set skills1[4]='A000'
			set skills1[5]='A00Z'
			set skills1[6]='A02V'
			set skills1[7]='A034'
			set skills1[8]='A000'
			set skills1[9]='A00Z'
			set skills1[10]='A034'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='H001')then
			set skills1[1]='A000'
			set skills1[2]='A00Q'
			set skills1[3]='A00G'
			set skills1[4]='A000'
			set skills1[5]='A00Q'
			set skills1[6]='AUin'
			set skills1[7]='A00G'
			set skills1[8]='A000'
			set skills1[9]='A00Q'
			set skills1[10]='A00G'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='H002')then
			set skills1[1]='A000'
			set skills1[2]='A04H'
			set skills1[3]='A01E'
			set skills1[4]='A000'
			set skills1[5]='A04H'
			set skills1[6]='A01F'
			set skills1[7]='A01E'
			set skills1[8]='A000'
			set skills1[9]='A04H'
			set skills1[10]='A01E'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='H003')then
			set skills1[1]='A000'
			set skills1[2]='A03Y'
			set skills1[3]='A00H'
			set skills1[4]='A000'
			set skills1[5]='A03Y'
			set skills1[6]='A01B'
			set skills1[7]='A00H'
			set skills1[8]='A000'
			set skills1[9]='A03Y'
			set skills1[10]='A00H'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='H007')then
			set skills1[1]='A000'
			set skills1[2]='A02L'
			set skills1[3]='A01D'
			set skills1[4]='A000'
			set skills1[5]='A02L'
			set skills1[6]='A04J'
			set skills1[7]='A01D'
			set skills1[8]='A000'
			set skills1[9]='A02L'
			set skills1[10]='A01D'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='H00D')then
			set skills1[1]='A04V'
			set skills1[2]='A04U'
			set skills1[3]='A000'
			set skills1[4]='A04V'
			set skills1[5]='A04U'
			set skills1[6]='A04W'
			set skills1[7]='A000'
			set skills1[8]='A04V'
			set skills1[9]='A04U'
			set skills1[10]='A000'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='H00V')then
			set skills1[1]='A054'
			set skills1[2]='A055'
			set skills1[3]='A000'
			set skills1[4]='A054'
			set skills1[5]='A055'
			set skills1[6]='A056'
			set skills1[7]='A000'
			set skills1[8]='A054'
			set skills1[9]='A055'
			set skills1[10]='A000'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='N026')then
			set skills1[1]='A04Y'
			set skills1[2]='A04Z'
			set skills1[3]='A000'
			set skills1[4]='A04Y'
			set skills1[5]='A04Z'
			set skills1[6]='A053'
			set skills1[7]='A000'
			set skills1[8]='A04Y'
			set skills1[9]='A04Z'
			set skills1[10]='A000'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='Nbrn')then
			set skills1[1]='A000'
			set skills1[2]='A015'
			set skills1[3]='A00C'
			set skills1[4]='A000'
			set skills1[5]='A015'
			set skills1[6]='A017'
			set skills1[7]='A00C'
			set skills1[8]='A000'
			set skills1[9]='A015'
			set skills1[10]='A00C'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='Nngs')then
			set skills1[1]='A000'
			set skills1[2]='A012'
			set skills1[3]='A00R'
			set skills1[4]='A000'
			set skills1[5]='A012'
			set skills1[6]='A00M'
			set skills1[7]='A00R'
			set skills1[8]='A000'
			set skills1[9]='A012'
			set skills1[10]='A00R'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='Npbm')then
			set skills1[1]='A000'
			set skills1[2]='A018'
			set skills1[3]='A019'
			set skills1[4]='A000'
			set skills1[5]='A018'
			set skills1[6]='A00S'
			set skills1[7]='A019'
			set skills1[8]='A000'
			set skills1[9]='A018'
			set skills1[10]='A019'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='Ntin')then
			set skills1[1]='A041'
			set skills1[2]='A000'
			set skills1[3]='A000'
			set skills1[4]='A041'
			set skills1[5]='A000'
			set skills1[6]='AOre'
			set skills1[7]='A000'
			set skills1[8]='A041'
			set skills1[9]='A000'
			set skills1[10]='A000'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='O001')then
			set skills1[1]='A000'
			set skills1[2]='A043'
			set skills1[3]='A000'
			set skills1[4]='A000'
			set skills1[5]='A043'
			set skills1[6]='A046'
			set skills1[7]='A000'
			set skills1[8]='A000'
			set skills1[9]='A043'
			set skills1[10]='A000'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='O002')then
			set skills1[1]='A000'
			set skills1[2]='A02Z'
			set skills1[3]='A00U'
			set skills1[4]='A000'
			set skills1[5]='A02Z'
			set skills1[6]='A00W'
			set skills1[7]='A00U'
			set skills1[8]='A000'
			set skills1[9]='A02Z'
			set skills1[10]='A00U'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[ModuloInteger(lvl,10)+1])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='O00C')then
			set skills1[1]='A000'
			set skills1[2]='A039'
			set skills1[3]='A000'
			set skills1[4]='A000'
			set skills1[5]='A039'
			set skills1[6]='A03A'
			set skills1[7]='A000'
			set skills1[8]='A000'
			set skills1[9]='A039'
			set skills1[10]='A000'
			set skills1[11]='A000'
			set skills1[12]='A039'
			set skills1[13]='A000'
			set skills1[14]='A000'
			set skills1[15]='A039'
			set skills1[16]='A03A'
			set skills1[17]='A000'
			set skills1[18]='A000'
			set skills1[19]='A039'
			set skills1[20]='A000'
			set skills1[21]='A000'
			set skills1[22]='A039'
			set skills1[23]='A000'
			set skills1[24]='A000'
			set skills1[25]='A039'
			set skills1[26]='A03A'
			set skills1[27]='A000'
			set skills1[28]='A000'
			set skills1[29]='A039'
			set skills1[30]='A000'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[lvl])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='U008')then
			set skills1[1]='A04P'
			set skills1[2]='A04Q'
			set skills1[3]='A000'
			set skills1[4]='A04P'
			set skills1[5]='A04Q'
			set skills1[6]='A042'
			set skills1[7]='A000'
			set skills1[8]='A04P'
			set skills1[9]='A04Q'
			set skills1[10]='A000'
			set skills1[11]='A04P'
			set skills1[12]='A04Q'
			set skills1[13]='A000'
			set skills1[14]='A04P'
			set skills1[15]='A04Q'
			set skills1[16]='A042'
			set skills1[17]='A000'
			set skills1[18]='A04P'
			set skills1[19]='A04Q'
			set skills1[20]='A000'
			set skills1[21]='A04P'
			set skills1[22]='A04Q'
			set skills1[23]='A000'
			set skills1[24]='A04P'
			set skills1[25]='A04Q'
			set skills1[26]='A042'
			set skills1[27]='A000'
			set skills1[28]='A04P'
			set skills1[29]='A04Q'
			set skills1[30]='A000'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[lvl])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		elseif(GetUnitTypeId(Hero)=='U00C')then
			set skills1[1]='A00E'
			set skills1[2]='A052'
			set skills1[3]='A000'
			set skills1[4]='A00E'
			set skills1[5]='A052'
			set skills1[6]='A053'
			set skills1[7]='A000'
			set skills1[8]='A00E'
			set skills1[9]='A052'
			set skills1[10]='A000'
			set skills1[11]='A00E'
			set skills1[12]='A052'
			set skills1[13]='A000'
			set skills1[14]='A00E'
			set skills1[15]='A052'
			set skills1[16]='A053'
			set skills1[17]='A000'
			set skills1[18]='A00E'
			set skills1[19]='A052'
			set skills1[20]='A000'
			set skills1[21]='A00E'
			set skills1[22]='A052'
			set skills1[23]='A000'
			set skills1[24]='A00E'
			set skills1[25]='A052'
			set skills1[26]='A053'
			set skills1[27]='A000'
			set skills1[28]='A00E'
			set skills1[29]='A052'
			set skills1[30]='A000'
			set lvl=GetHeroLevel(Hero)
			if(lvl<=30)then
				call SelectHeroSkill(Hero,skills1[lvl])
			else
				call SelectHeroSkill(Hero,'A000')
			endif
		else
			set S123[1]='A000'
			set S123[2]='A000'
			set S123[3]='A000'
			set S123[4]='A000'
			set S123[5]='A000'
			set S123[6]='A000'
			set S123[7]='A000'
			set S123[8]='A000'
			set S123[9]='A000'
			set S123[10]='A000'
			set lvl=GetHeroLevel(Hero)
			call SelectHeroSkill(Hero,S123[ModuloInteger(lvl,10)+1])
		endif
	endif
endfunction

function O43020 takes nothing returns nothing
	call ForForce(GetPlayersByMapControl(MAP_CONTROL_COMPUTER),function O43021)
endfunction

//***************************************END IACO MODIFACATION*****************************//
My attempt at a simple merge:
HLWL7.97AIDePro.w3x
1st problem:
Getting compile errors on saving the 7.95 AI when deprotected, but not the 7.97 (there seems to be less protection). When the AI script is merged into the 7.97, there are also compile errors; basically, the same ones.
I believe the in-lining of the script is not complete; although I can do that, it seems to bee looking for variables too.

2nd Problem:
On the player select screen, unable to choose computer as a player. not sure where this is called.


Any advice would be useful.

Cheers Cheers
You do not have the required permissions to view the files attached to this post.
User avatar
blannnor
Junior Member
Posts: 31
Joined: April 30th, 2007, 3:10 am

Re: *question* Copying AI

Post by blannnor »

not being able to choose computer controlled would be because the map is set to fixed player settings in the editor i think.
however i've no idea where thats stored inside the map files so i don't know what you would need to edit to change it in a protected map, which does rather make this reply not so helpful =/ sorry about that...