
Code: Select all
129	if( self.Alive ==nil or self.HP == nil or self.MaxHP == nil or self.MP == nil or self.MaxMP == nil or
130		self.MP2 == nil or self.MaxMP2 == nil or self.Name == nil or
131		self.Level == nil or self.Level2 == nil or self.TargetPtr == nil or
132		self.X == nil or self.Y == nil or self.Z == nil or self.Attackable == nil ) then
133
134		error("Error reading memory in CPawn:update()");
135	end
Bot mods:
modif_rest_function.lua is exercuted when mob is dead
Code: Select all
function CPlayer:rest()
-- rest to restore mana and healthpoint if under a certain level
	if( self.Battling == true) then return; end;		-- if aggro, go back
	--if( settings.profile.options.MP_REST == nil ) then  settings.profile.options.MP_REST = 15; end;
	if( settings.profile.options.HP_REST == nil ) then  settings.profile.options.HP_REST = 15; end;
	-- some classes dont have mana, in that cases Player.mana = 0
	hf_mana_rest = (player.MaxMana * settings.profile.options.MP_REST / 100);	-- rest if mana is lower then
	hf_hp_rest   = (player.MaxHP   * settings.profile.options.HP_REST / 100);	-- rest if HP is lower then
	hf_mp_continue = (player.MaxMana * settings.profile.options.MP_CONTINUE / 100);	-- rest if mana is lower then
	hf_hp_continue   = (player.MaxHP   * settings.profile.options.HP_CONTINUE / 100);	-- rest if HP is lower then
	if( player.Mana >= hf_mp_continue  and player.HP >= hf_hp_continue   ) then	-- nothing to do
		return;								-- go back
	end;
	
	self:clearTarget();		-- get rid of mob, so we dont cast while resting
	hf_count = 30 + math.random( 69 );			-- set rest time, up to 99 sec pause
	cprintf(cli.green, "resting %s sec for %s mana and %s HP\n", hf_count, hf_mp_continue, hf_hp_continue);		-- resting x sec for Mana and HP
	while hf_count > 0 do
		yrest(1000);
		hf_count = hf_count - 1;	
		self:update();
		if( self.Battling ) then          -- we get aggro,
			self:clearTarget();       -- get rid of mob to be able to target attackers
			printf("get aggro at sec %s\n", hf_count );   -- get aggro at sec x
			hf_count = 0;		-- stop countdown
		end;
		if( player.Mana >= hf_mp_continue  and		-- some chars have MaxMana = 0
 	 	    player.HP   >= hf_hp_continue ) then		-- Mana and HP are full
			printf("full at sec %s\n", hf_count );   -- full at sec x
			hf_count = 0;				-- stop countdown
		end;
		self:checkPotions();   
		self:checkSkills(); 		-- check if we need to cast buffs/heals.
	end;			-- end of while
end