|  |  |  |  | #ifndef YDWEHeroLearnSkillAIIncluded
 | 
					
						
							|  |  |  |  | #define YDWEHeroLearnSkillAIIncluded
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #include "YDWEBase.j"
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | //===========================================================================
 | 
					
						
							|  |  |  |  | //AI-<EFBFBD>Զ<EFBFBD>ѧϰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 
 | 
					
						
							|  |  |  |  | //===========================================================================
 | 
					
						
							|  |  |  |  | library YDWEHeroLearnSkillAI requires YDWEBase
 | 
					
						
							|  |  |  |  |  
 | 
					
						
							|  |  |  |  | private function AIStringFind takes string subject,string find,integer offset returns integer
 | 
					
						
							|  |  |  |  |     local integer len = StringLength(find)
 | 
					
						
							|  |  |  |  |     local integer pos = offset
 | 
					
						
							|  |  |  |  |     local string s
 | 
					
						
							|  |  |  |  |     local string str    
 | 
					
						
							|  |  |  |  |     if ( offset < 1 ) then
 | 
					
						
							|  |  |  |  |         set pos = 1
 | 
					
						
							|  |  |  |  |     endif 
 | 
					
						
							|  |  |  |  |     if ( find == "" ) then
 | 
					
						
							|  |  |  |  |         return -1
 | 
					
						
							|  |  |  |  |     endif   
 | 
					
						
							|  |  |  |  |     loop
 | 
					
						
							|  |  |  |  |         set s = SubString(subject, pos-1, pos+len-1)
 | 
					
						
							|  |  |  |  |         if ( s == find ) then
 | 
					
						
							|  |  |  |  |             return pos
 | 
					
						
							|  |  |  |  |         endif
 | 
					
						
							|  |  |  |  |         if ( SubString(subject, pos-1, pos) == "" ) then
 | 
					
						
							|  |  |  |  |             return -1
 | 
					
						
							|  |  |  |  |         endif
 | 
					
						
							|  |  |  |  |         set pos = pos + 1
 | 
					
						
							|  |  |  |  |     endloop
 | 
					
						
							|  |  |  |  |     return -1
 | 
					
						
							|  |  |  |  | endfunction                       
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function YDWEAIRecordAbility takes integer uid,integer ab1,integer ab2,integer ab3,integer ab4,integer ab5 returns nothing
 | 
					
						
							|  |  |  |  |     call YDWESaveIntegerByString(I2S(uid),"HeroAbilities_1",ab1)
 | 
					
						
							|  |  |  |  |     call YDWESaveIntegerByString(I2S(uid),"HeroAbilities_2",ab2)
 | 
					
						
							|  |  |  |  |     call YDWESaveIntegerByString(I2S(uid),"HeroAbilities_3",ab3)
 | 
					
						
							|  |  |  |  |     call YDWESaveIntegerByString(I2S(uid),"HeroAbilities_4",ab4)
 | 
					
						
							|  |  |  |  |     call YDWESaveIntegerByString(I2S(uid),"HeroAbilities_5",ab5)
 | 
					
						
							|  |  |  |  | endfunction
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function YDWEAIRecordLearn_sequence takes integer uid,string ls1,string ls2,string ls3,string ls4,string ls5 returns nothing
 | 
					
						
							|  |  |  |  |     call YDWESaveStringByString(I2S(uid),"learn_quence_1",ls1)
 | 
					
						
							|  |  |  |  |     call YDWESaveStringByString(I2S(uid),"learn_quence_2",ls2)
 | 
					
						
							|  |  |  |  |     call YDWESaveStringByString(I2S(uid),"learn_quence_3",ls3)
 | 
					
						
							|  |  |  |  |     call YDWESaveStringByString(I2S(uid),"learn_quence_4",ls4)
 | 
					
						
							|  |  |  |  |     call YDWESaveStringByString(I2S(uid),"learn_quence_5",ls5)
 | 
					
						
							|  |  |  |  | endfunction
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function YDWEHeroLearnSkillAI takes unit hero,integer level returns integer
 | 
					
						
							|  |  |  |  |     local string learn_sequence
 | 
					
						
							|  |  |  |  |     local integer skills
 | 
					
						
							|  |  |  |  |     local integer i = 1
 | 
					
						
							|  |  |  |  |     local integer uid=GetUnitTypeId(hero)    
 | 
					
						
							|  |  |  |  |     loop
 | 
					
						
							|  |  |  |  |         exitwhen i > 5
 | 
					
						
							|  |  |  |  | 		set skills = YDWEGetIntegerByString(I2S(uid),"HeroAbilities_"+I2S(i))	
 | 
					
						
							|  |  |  |  | 		set learn_sequence = YDWEGetStringByString(I2S(uid),"learn_quence_"+I2S(i))    	
 | 
					
						
							|  |  |  |  |         if AIStringFind(learn_sequence , "^" + I2S(level) + "^", 1) != -1 then         
 | 
					
						
							|  |  |  |  |             if GetUnitAbilityLevel(hero,skills)==0 then      
 | 
					
						
							|  |  |  |  |                 call UnitAddAbility(hero,skills)
 | 
					
						
							|  |  |  |  |               else      
 | 
					
						
							|  |  |  |  |                 call IncUnitAbilityLevel(hero,skills)    
 | 
					
						
							|  |  |  |  |             endif            
 | 
					
						
							|  |  |  |  |             call UnitModifySkillPoints(hero, -1)               
 | 
					
						
							|  |  |  |  | 			//call SelectHeroSkill(hero,skills)
 | 
					
						
							|  |  |  |  | 			//call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, 3600, ( "ѧϰ  " + GetAbilityName(skills)+ "<EFBFBD><EFBFBD>" +  "Ŀǰ<EFBFBD><EFBFBD><EFBFBD>ܵȼ<EFBFBD>Ϊ" +I2S(GetUnitAbilityLevel(hero,skills))))   
 | 
					
						
							|  |  |  |  |             return skills
 | 
					
						
							|  |  |  |  |         endif
 | 
					
						
							|  |  |  |  |         set i = i + 1
 | 
					
						
							|  |  |  |  |     endloop
 | 
					
						
							|  |  |  |  |     return 0
 | 
					
						
							|  |  |  |  | endfunction                                                 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | function YDWEHeroMaxSkillAI takes unit hero returns nothing
 | 
					
						
							|  |  |  |  |     local integer level = GetHeroLevel(hero)
 | 
					
						
							|  |  |  |  |     local integer uid = GetUnitTypeId(hero)
 | 
					
						
							|  |  |  |  |     local integer i=0
 | 
					
						
							|  |  |  |  |     call UnitModifySkillPoints(hero, level - GetHeroSkillPoints(hero))
 | 
					
						
							|  |  |  |  |     loop 
 | 
					
						
							|  |  |  |  |         set i = i + 1 
 | 
					
						
							|  |  |  |  |         exitwhen i>5
 | 
					
						
							|  |  |  |  |         call UnitRemoveAbility(hero,YDWEGetIntegerByString(I2S(uid),"HeroAbilities_"+I2S(i)))         
 | 
					
						
							|  |  |  |  |     endloop   
 | 
					
						
							|  |  |  |  |     set i = 0
 | 
					
						
							|  |  |  |  |     loop  
 | 
					
						
							|  |  |  |  |         set i = i + 1         
 | 
					
						
							|  |  |  |  |         exitwhen i>level           
 | 
					
						
							|  |  |  |  |         call  YDWEHeroLearnSkillAI(hero,i)
 | 
					
						
							|  |  |  |  |     endloop    
 | 
					
						
							|  |  |  |  | endfunction
 | 
					
						
							|  |  |  |  | endlibrary 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #endif /// YDWEHeroLearnSkillAIIncluded
 |