Ir para conteúdo

Pet System


Dragnus

Posts Recomendados

Pessoal antes de começar peguei esse tuto num fórum americano. Créditos não são meus são de FedeVI

 

Não encontrei em nenhum fórum brasileiro algo do tipo então vim aqui postar. Se algum scripter puder dar uma força por que para mim deu alguns erros, consigo invocar o pet mas ao fazer !pet denovo ele não some. Ai vai

 

Coloque no Talkaction:

 

<talkaction words="!petinfo" script="pets/!petinfo.lua"/>

<talkaction words="!petsay" script="pets/!petsay.lua"/>

<talkaction words="!petcarry" script="pets/!petcarry.lua"/>

<talkaction words="!pet" script="pets/!pet.lua"/>

<talkaction words="!petattack" script="pets/!petattack.lua"/>

<talkaction words="!petgetitem" script="pets/!petgetitem.lua"/>

 

Adicione na memsa pasta do config.lua o arquivo petConfig.lua no petConfig ponha:

 

--//						 \\--
--(	made by FedeVI  )  --
--____________ //-- 
petSystemExhaustion = 1 --in secods, 0 = no exhausted.  
frases = {"Men, im still exhausted!", "Ok, in one momment", "afff, again?!", "meh, one second"}
lenght = 39 -- maximun lenght the !petsay can have...
manaGainTicks = 3000 --	
				   --how fast the pet gains mana
manaGainAmmount = 10 --//
manaGainPerLevel = 20 -- mana that gains the pet for each level the player gain
magicLevelRate = 4 -- how faster the pet will gain mlvl compared to real tibia,,
base = 2000 --base storage. All storages will depend of this number
storages = {
		petMag = base,
		petUid = base+1,
		petExha = base+2,
		petDamage = base+3,
		petManaSpent = base+4,
		petIsOnline = base+5,
		petMana = base+6,
		petIsHealing = base+7,
		petCap = base+8,
		petSystemExhaustion = base+9
		}

petItems = {}
maxItems = 10 --Max items the pet can carry
--lol V
x = 0 y = function() x = x + 1 end table.foreach(storages, y)
for i = 1, maxItems do
petItems[i] = base+x+i
end
--Pets, dependiong on the level
pets = 
{
	{vocations = {1, 5}, pets =
	{{level = 100, name = "demon"}, {level = 60, name = "Dragons"}, {level = 50, name = "Dwarf Gegmancers"}, {level = 40, name = "Demon Skeleton"}, {level = 30, name = "Fire Devil"}, {level = 20, name = "Minotaur Archer"}, {level = 10, name = "Minotaur"}, {level = 0, name = "Rat"}}
	},
	{vocations = {2, 6}, pets =
	{{level = 100, name = "demon"}, {level = 60, name = "Dragons"}, {level = 50, name = "Dwarf Gegmancers"}, {level = 40, name = "Demon Skeleton"}, {level = 30, name = "Fire Devil"}, {level = 20, name = "Minotaur Archer"}, {level = 10, name = "Minotaur"}, {level = 0, name = "Rat"}}
	},
	{vocations = {3, 7}, pets =
	{{level = 100, name = "demon"}, {level = 60, name = "Dragons"}, {level = 50, name = "Dwarf Gegmancers"}, {level = 40, name = "Demon Skeleton"}, {level = 30, name = "Fire Devil"}, {level = 20, name = "Minotaur Archer"}, {level = 10, name = "Minotaur"}, {level = 0, name = "Rat"}}
	},
	{vocations = {4, 8}, pets =
	{{level = 100, name = "demon"}, {level = 60, name = "Dragons"}, {level = 50, name = "Dwarf Gegmancers"}, {level = 40, name = "Demon Skeleton"}, {level = 30, name = "Fire Devil"}, {level = 20, name = "Minotaur Archer"}, {level = 10, name = "Minotaur"}, {level = 0, name = "Cave Rat"}}
	}
}
--attacks of the pet. !petattack "param
--It's pretty easy how to config, I think it doesn't need an extra explanation.
attacks = {{param = "energy",  theFunction = false, offensive = 1, needLevel = 20, self = 0, needMag = 10, manaSpent = 60, exhausted = 1, range = 6, combatType = COMBAT_ENERGYDAMAGE, combatAni = CONST_ME_ENERGYAREA, area = 2, 
				formula = {maxb = 0.4, maxa = 30, minb = 0.5, mina = 0},
			 },
			 {param = "exori", theFunction = false, offensive = 1, needLevel = 40, self = 0, needMag = 5, manaSpent = 145, exhausted = 1, range = 0, combatType = COMBAT_PHYSICALDAMAGE, combatAni = CONST_ME_HITAREA, area = 2, 
				formula = {maxb = 0.6, maxa = 30, minb = 1.2, mina = 0},
			 },
			 {param = "fireball", theFunction = false, offensive = 1,  needLevel = 50, self = 0, needMag = 15, manaSpent = 100, exhausted = 1, range = 3, combatType = COMBAT_FIREDAMAGE, combatAni = CONST_ME_FIREAREA, area = 6, 
				formula = {maxb = 0.6, maxa = 30, minb = 1.2, mina = 0}
			 },
			 {param = "mini energy", theFunction = false, offensive = 1,  needLevel = 0, self = 0, needMag = 0, manaSpent = 20, exhausted = 1, range = 1, combatType = COMBAT_ENERGYDAMAGE, combatAni = CONST_ME_ENERGYAREA, area = 1, 
				formula = {maxb = 0.13, maxa = 0, minb = 0.262, mina = 0}
			 },
			 {param = "health", theFunction = false, offensive = -1,  needLevel = 10, self = 1, needMag = 0, manaSpent = 100, exhausted = 2, range = 0, combatType = COMBAT_HEALING, combatAni = CONST_ME_MAGIC_BLUE, area = 1, 
				formula = {maxb = 0.4, maxa = 20, minb = 0.7, mina = 0}
			 },
			 {param = "paralize", needLevel = 1, needMag = 0, manaSpent = 300, exhausted = 2,
			 theFunction = function (parameters)
				daPet = getPlayerStorageValue(parameters.cid, storages.petUid)
				if getCreatureTarget(daPet) ~= 0 then
					doAddCondition(getCreatureTarget(parameters.cid), 4)
				end
			 end
			},
			{param = "speed", needLevel = 10, needMag = 4, manaSpent = 60, exhausted = 2,
			 theFunction = function (parameters)				
				doAddCondition(getPlayerStorageValue(parameters.cid, storages.petUid), 11)
			end
			},
			 {param = "double fire", needLevel = 1, needMag = 0, manaSpent = 100, exhausted = 2,
			 theFunction = function (parameters)


				local myAttack = formulaAttack(getPlayerLevel(parameters.cid),  getPlayerStorageValue(parameters.cid, storages.petMag), 0.7, 0, 1.0, 0)
				function doAreaCombatHealthEx(params)
					local randoms = {[1] = math.random(-2, 2),
									 [2] = math.random(-2, 2)				
									}

					local attackCreature = getPlayerStorageValue(parameters.cid, storages.petUid)
					if getCreatureTarget(getPlayerStorageValue(parameters.cid, storages.petUid)) ~= 0 then
						attackCreature = getCreatureTarget(getPlayerStorageValue(parameters.cid, storages.petUid))
					end				
					local posa = getCreaturePosition(attackCreature)
					doAreaCombatHealth(getPlayerStorageValue(parameters.cid, storages.petUid), COMBAT_FIREDAMAGE, {x = posa.x + randoms[1], y = posa.y + randoms[2], z = posa.z},  1, -params.myAttack.minD, -params.myAttack.maxD, CONST_ME_FIREAREA)
					doSendDistanceShoot(getCreaturePosition(getPlayerStorageValue(parameters.cid, storages.petUid)), {x = posa.x + randoms[1], y = posa.y + randoms[2], z = posa.z}, CONST_ANI_FIRE)

				end
				doAreaCombatHealthEx({cid = parameters.cid, target = getCreaturePosition(attackCreature), myAttack = myAttack})
				for i = 1, 7 do
					addEvent(doAreaCombatHealthEx, 200*i, {cid = parameters.cid, target = getCreaturePosition(attackCreature), myAttack = myAttack})
				end
			end
			}
		}
function setExhausted(cid)
setPlayerStorageValue(cid, storages.petSystemExhaustion, os.clock()+1)
end
function formulaAttack(magicLevel, level, maxb, maxa, minb, mina)
return {minD = (level * 2 + magicLevel * 3) * (1 + mina) + minb,
		maxD = (level * 2 + magicLevel * 3) * (1 + maxb) + maxa
	   }
end

function isExhausted(cid)
if isPlayer(cid) == 1 then	
	local CRONOMETRO = getPlayerStorageValue(cid, storages.petSystemExhaustion)
	local CRONOMETRO2 = os.clock()
	local TIEMPO = os.difftime(CRONOMETRO2, CRONOMETRO)
	if petSystemExhaustion - TIEMPO > petSystemExhaustion or CRONOMETRO == -1 then
		setPlayerStorageValue(cid, storages.petSystemExhaustion, CRONOMETRO2+1)
		return 0
	end
	if petSystemExhaustion - TIEMPO <= 0 then
		return 0
	end
end
return 1
end

function addMana(a)
local cid = a.cid
local petManaMax = getPlayerLevel(cid)*manaGainPerLevel
if getPlayerStorageValue(cid, storages.petMana) < petManaMax then
	if petManaMax - getPlayerStorageValue(cid, storages.petMana) < 10 then
		setPlayerStorageValue(cid, storages.petMana, getPlayerStorageValue(cid, storages.petMana) + petManaMax - getPlayerStorageValue(cid, storages.petMana))
	else
		setPlayerStorageValue(cid, storages.petMana, getPlayerStorageValue(cid, storages.petMana) + 10)
	end
addEvent(addMana, manaGainTicks, {cid = cid})
else
	setPlayerStorageValue(cid, storages.petIsHealing, 0)
end
end

 

Na pasta data\talkactions\scripts crie uma pasta chamada "pets" e dentro crie os seguintes arquivos:

 

!petinfo.lua

 

dofile("./petConfig.lua")
function onSay(cid, words, param)
if isExhausted(cid) == 1 then
	return 0
end
local request = 0
local daPet = getPlayerStorageValue(cid, storages.petUid)
if isCreature(daPet) == 1 then
	param = string.lower(param)
	if param == "magic level" then
		request = getPlayerStorageValue(cid, storages.petMag)
	elseif param == "mana" then		
		request = getPlayerStorageValue(cid, storages.petMana)
	elseif param == "health" then
		request = getCreatureHealth(daPet)
	end
	if request ~= 0 then
		doPlayerSendTextMessage(cid, 19, 'Pet ' .. param .. ': ' .. request .. '.')
	end
else
	doPlayerSendCancel(cid, 'You haven\'t call your pet!')
end
return setExhausted(cid)
end

 

!petsay.lua

dofile("./petConfig.lua")
function onSay(cid, words, param)
if isExhausted(cid) == 1 then
	return 0
end

local daPet = getPlayerStorageValue(cid, storages.petUid)
if isCreature(daPet) == 1 then
	if param ~= nil then
		if string.len(param) < lenght then		
			doCreatureSay(daPet, '' .. param .. '', TALKTYPE_ORANGE_1)
		else
			doPlayerSendCancel(cid, 'No more than ' .. lenght .. ' character. ')
		end
	else
		doPlayerSendCancel(cid, 'You must enter a text')
	end		
else
	doPlayerSendCancel(cid, 'You haven\'t call your pet!')
end	
return setExhausted(cid)
end

 

!petcarry.lua

dofile("./petConfig.lua")
function onSay(cid, words, param)

if isExhausted(cid) == 1 then
	return 0
end
local mySto = 0
local daPet = getPlayerStorageValue(cid, storages.petUid)
if isCreature(daPet) == 1 then
	local pos = getCreaturePosition(daPet)
	local a = 1
	while a < 10 do
		if getItemWeight(getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = a}).itemid, 1) ~= 0  then
			break
		end
		a = a + 1
	end
	local carryingItem = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = a})
	if getItemWeight(carryingItem.itemid, 1) ~= 0 then
		if isContainer(carryingItem.uid) == 0 then
			for b = 1, #petItems do
				if getPlayerStorageValue(cid, petItems[b]) == 0 or getPlayerStorageValue(cid, petItems[b]) == -1 then
					mySto = b
					break
				end
			end
			local count = 1
			if mySto ~= 0 then
				local theID = carryingItem.itemid
				if isItemStackable(theID) == 1 then
					count = carryingItem.type
					doRemoveItem(carryingItem.uid, carryingItem.type)
				else
					doRemoveItem(carryingItem.uid, 1)
				end
				setPlayerStorageValue(cid, petItems[mySto], theID*100+count)
				if count == 1 then
					doCreatureSay(daPet, 'Hmm, a ' .. getItemName(theID) .. ', I\'ll save it on my bag number ' .. mySto .. '!', TALKTYPE_ORANGE_1)
				else
					doCreatureSay(daPet, 'Hmm, ' .. count .. ' ' .. getItemName(theID) .. 's, I\'ll save them on my bag number ' .. mySto .. '!', TALKTYPE_ORANGE_1)
				end
			else
				doCreatureSay(daPet, 'I have no space!', TALKTYPE_ORANGE_1)
			end
		else
			doCreatureSay(daPet, 'I can\'t take containers!', TALKTYPE_ORANGE_1)
		end
	else
		doCreatureSay(daPet, 'I can\'t see any item!', TALKTYPE_ORANGE_1)
	end
else
	doPlayerSendCancel(cid, 'You haven\'t call your pet!')
end
return setExhausted(cid)
end

 

!pet.lua

dofile("./petConfig.lua")



function doPlayerAddSummon(cid, name, pos)
local MyCreature = doSummonCreature(name, pos)	
doConvinceCreature(cid, MyCreature)
return MyCreature
end


local myPet = ""
local myPetUid = 0

function onSay(cid, words, param)

if isExhausted(cid) == 1 then
	return 0
end
if getPlayerStorageValue(cid, storages.petMag) == -1 then
	setPlayerStorageValue(cid, storages.petMag, 0)
end
if isCreature(getPlayerStorageValue(cid, storages.petUid)) == 0 then
	if getTilePzInfo(getCreaturePosition(cid)) == 0 then
		if getPlayerStorageValue(cid, storages.petIsOnline) == 1 or getPlayerStorageValue(cid, storages.petIsOnline) == -1 then
			for i = 1, #pets do
				if isInArray(pets[i].vocations, getPlayerVocation(cid)) == 1 then
					for k = 1, #pets[i].pets do							
						if pets[i].pets[k].level <= getPlayerLevel(cid) then
							myPet = pets[i].pets[k].name
							break
						end
					end
				break
				end
			end
			myPetUid = doPlayerAddSummon(cid, myPet, getCreaturePosition(cid))
			if myPetUid ~= -1 then
				setPlayerStorageValue(cid, storages.petUid, myPetUid)
				if getPlayerStorageValue(cid, storages.petDamage) ~= 0 and getPlayerStorageValue(cid, storages.petDamage) ~= -1  then
					if getPlayerStorageValue(cid, storages.petDamage) < getCreatureMaxHealth(getPlayerStorageValue(cid, storages.petUid)) then
						doCreatureAddHealth(getPlayerStorageValue(cid, storages.petUid), getPlayerStorageValue(cid, storages.petDamage)*-1)
					end
				end
				doChangeSpeed(myPetUid, getCreatureBaseSpeed(cid) - getCreatureBaseSpeed(myPetUid))
				doCreatureSay(myPetUid, 'Hello!', TALKTYPE_ORANGE_1)
				addMana({cid = cid})
				setPlayerStorageValue(cid, storages.petIsOnline, 2)
			else
				doPlayerSendCancel(cid, 'Not enought room.')
			end
		else			
			doPlayerSendCancel(cid, 'Your pet died! You have to revive it.')
		end
	else
		doPlayerSendCancel(cid, 'You cannot summon your pet in PZ.')
	end		
else
local daPet = getPlayerStorageValue(cid, storages.petUid)
	setPlayerStorageValue(cid, storages.petDamage, getCreatureMaxHealth(daPet) - getCreatureHealth(daPet))
	doCreatureSay(daPet, 'Byebye !', TALKTYPE_ORANGE_1)
	setPlayerStorageValue(cid, storages.petIsOnline, 1)
	doSendMagicEffect(getCreaturePosition(daPet), CONST_ME_POFF)
	doRemoveCreature(daPet)
end
return setExhausted(cid)
end

 

!petattack.lua

dofile("./petConfig.lua")	 
function onSay(cid, words, param)

if isExhausted(cid) == 1 then
	return 0
end

local lookDirs = {[0] = {x = 0, y = -1},
				  [1] = {x = 1, y = 0},
				  [2] = {x = 0, y = 1},
				  [3] = {x = -1, y = 0}
				 }

local myAttack = 0 
local CRONOMETRO = 0
local CRONOMETRO2 = 0
local TIEMPO = 0

function formulaAttack(magicLevel, level, maxb, maxa, minb, mina)
return {minD = (level * 2 + magicLevel * 3) * (1 + mina) + minb,
		maxD = (level * 2 + magicLevel * 3) * (1 + maxb) + maxa
	   }
end
function getPetMlvl(manaSpent)
	local i = 0
	while manaSpent >= (1600 * (1.2^i))*magicLevelRate do
		i = i + 1
	end
	return i
end

local daPet = getPlayerStorageValue(cid, storages.petUid)
if isCreature(daPet) == 1 then 
	if param ~= nil then

		param = string.lower(param)
		local petPos = getCreaturePosition(daPet)
		local lookDir = getPlayerLookDir(cid) -- getPlayerLookDir(daPet plz ! ! !)
		local damage = {}
		CRONOMETRO = getPlayerStorageValue(cid, storages.petExha)
		CRONOMETRO2 = os.clock()
		TIEMPO = os.difftime(CRONOMETRO2, CRONOMETRO)

		for i = 1, #attacks do
			if param == attacks[i].param then
				myAttack = i
				break
			end
		end

		if myAttack ~= 0 then
			if attacks[myAttack].exhausted - TIEMPO > attacks[myAttack].exhausted or CRONOMETRO == -1 then
				setPlayerStorageValue(cid, storages.petExha, CRONOMETRO2+1)
			end
			if getPlayerStorageValue(cid, storages.petMana) >= attacks[myAttack].manaSpent then
				if attacks[myAttack].needLevel <= getPlayerLevel(cid) then
					if attacks[myAttack].needMag <= getPlayerStorageValue(cid, storages.petMag) then
						if attacks[myAttack].exhausted - TIEMPO <= 0 then
							if attacks[myAttack].theFunction == false then
								damage = formulaAttack(getPlayerStorageValue(cid, storages.petMag), getPlayerLevel(cid),  attacks[myAttack].formula.maxb, attacks[myAttack].formula.maxa, attacks[myAttack].formula.minb, attacks[myAttack].formula.mina)
								doAreaCombatHealth(daPet*((attacks[myAttack].self - 1)*-1), attacks[myAttack].combatType, {x = petPos.x + attacks[myAttack].range*lookDirs[lookDir].x, y = petPos.y + attacks[myAttack].range*lookDirs[lookDir].y, z = petPos.z}, attacks[myAttack].area, math.floor(damage.minD*-1*attacks[myAttack].offensive), math.floor(damage.maxD*-1*attacks[myAttack].offensive), attacks[myAttack].combatAni)
							else
								attacks[myAttack].theFunction({cid = cid, words = words, param = param})
							end
							doCreatureSay(daPet, '' .. param .. '!', TALKTYPE_ORANGE_1)
							if getPlayerStorageValue(cid, storages.petIsHealing) == 0 or getPlayerStorageValue(cid, storages.petIsHealing) == -1 then
								addEvent(addMana, manaGainTicks, {cid = cid})
								setPlayerStorageValue(cid, storages.petIsHealing, 1)
							end
							setPlayerStorageValue(cid, storages.petExha, CRONOMETRO2+1)
							setPlayerStorageValue(cid, storages.petManaSpent, getPlayerStorageValue(cid, storages.petManaSpent) + attacks[myAttack].manaSpent)
							setPlayerStorageValue(cid, storages.petMana, getPlayerStorageValue(cid, storages.petMana) - attacks[myAttack].manaSpent)
							if getPetMlvl(getPlayerStorageValue(cid, storages.petManaSpent)) > getPlayerStorageValue(cid, storages.petMag) then
								setPlayerStorageValue(cid,  storages.petMag, getPetMlvl(getPlayerStorageValue(cid, storages.petManaSpent)))
								doCreatureSay(daPet, 'You advanced to magic level ' .. getPlayerStorageValue(cid, storages.petMag) .. '!', TALKTYPE_ORANGE_1)
							end
						else
							doCreatureSay(daPet, '' .. frases[math.random(1, #frases)] .. '!', TALKTYPE_ORANGE_1)
						end
					else
						doCreatureSay(daPet, 'My magic level is too low!', TALKTYPE_ORANGE_1)
					end
				else
					doCreatureSay(daPet, 'AAh Im out of mana!', TALKTYPE_ORANGE_1)
				end
			else
				doCreatureSay(daPet, 'Woups! I can\'t use that spell yet', TALKTYPE_ORANGE_1)
			end				
		else
			----------------special attacks ?----------------------
		end
	else
		doPlayerSendCancel(cid, 'You must spesific a spell.')
	end
else
	doPlayerSendCancel(cid, 'You haven\'t call your pet!.')
end
return setExhausted(cid)
end

 

!petgetitem.lua

dofile("./petConfig.lua")
function onSay(cid, words, param)
if isExhausted(cid) == 1 then
	return 0
end
local daPet = getPlayerStorageValue(cid, storages.petUid)
if isCreature(daPet) == 1 then
	if param ~= "" then
		param = tonumber(param)
		if type(param) == "number" then
			if param <= maxItems then
				if getPlayerStorageValue(cid, petItems[param]) ~= 0 and getPlayerStorageValue(cid, petItems[param]) ~= -1 then
					local that = getPlayerStorageValue(cid, petItems[param])
					local item = math.floor(that/100)
					local count = that-item*100
					doPlayerAddItem(cid, item, count)
					if count == 1 then
						doCreatureSay(daPet, 'Here is your ' .. getItemName(item) .. '', TALKTYPE_ORANGE_1)
					else
						doCreatureSay(daPet, 'Here are your ' .. count .. ' ' .. getItemName(item) .. 's', TALKTYPE_ORANGE_1)
					end
					setPlayerStorageValue(cid, petItems[param], 0)
				end
			end
		end
	end
end
return setExhausted(cid)
end

 

No fim do arquivo petConfig.lua coloque:

 

function onLogout(cid)
if isCreature(getPlayerStorageValue(cid, storages.petUid)) == 1 then
	if getPlayerStorageValue(cid, storages.petIsOnline) == 2 then
		setPlayerStorageValue(cid, storages.petIsOnline, 1)
	end
end
return TRUE
end

 

 

 

Abaixo Script para o npc que revive o pet

 

local focus = 0
local talk_start = 0
local talk_state = 0
local costPerLevel = 300

dofile("./petConfig.lua")



function onThingMove(creature, thing, oldpos, oldstackpos)

end


function onCreatureAppear(creature)

end


function onCreatureDisappear(cid, pos)
	if focus == cid then
	 selfSay('How rude!.')
	 focus = 0
	 talk_start = 0
	end
end


function onCreatureTurn(creature)

end


function msgcontains(txt, str)
  return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end


function onCreatureSay(cid, type, msg)
  msg = string.lower(msg)
if getDistanceToCreature(cid) < 4 then
	  if (msgcontains(msg, 'hi') and (focus == 0)) then
		  selfSay('Hello ' .. creatureGetName(cid) .. '! I can take you to the train!')
			focus = cid
			talk_start = os.clock()

	  elseif msgcontains(msg, 'hi') and (focus ~= cid) then
		  selfSay('Sorry, ' .. creatureGetName(cid) .. '! I talk to you in a minute.')
	end

	if msgcontains(msg, 'revive') and focus == cid then
		if  isCreature(getPlayerStorageValue(cid, storages.petUid)) == 0 then
			if getPlayerStorageValue(cid, storages.petIsOnline) == 2 then
				selfSay('YOUR PET DIED?!, YOU\'R A BAD OWNER, THIS WILL COST YOU ' .. getPlayerLevel(cid)*costPerLevel .. ' GOLD COINS!, AGREE?!')
				talk_state = 1
			else
				selfSay('Your pet is alive.')
			end
		else
			selfSay('Your pet is standing next to you.')
		end
	talk_start = os.clock()
	end
	if msgcontains(msg, 'yes') and focus == cid and talk_state == 1 then
		if doPlayerRemoveMoney(cid, getPlayerLevel(cid)*costPerLevel) == 1 then
			setPlayerStorageValue(cid, storages.petIsOnline, 1)
			selfSay('You can now summon again your pet.')
		else
			selfSay('You don\'t have enought money.')
		end
	talk_state = 0
	talk_start = os.clock()
	end				

	if msgcontains(msg, 'bye') then
		selfSay('Good bye, ' .. creatureGetName(cid) .. '!')
		focus = 0
		talk_start = 0
		talk_state = 0
	end
end
end


function onCreatureChangeOutfit(creature)

end


function onThink()

doNpcSetCreatureFocus(focus)
  if (os.clock() - talk_start) > 30 then
	  if focus > 0 then
		  selfSay('Next Please...')
	  end
		  focus = 0
					talk_state = 0
  end
if focus ~= 0 then
		if getDistanceToCreature(focus) > 5 then
					talk_state = 0
			selfSay('Good bye then.')
					talk_state =  0
			focus = 0
		end
	end
end

 

IMPORTANTE!!! Não esqueca o "!" antes dos nomes se não não funcionará.

 

Espero ter ajudado o pessoal que tá a horas procurando esse pet system. abaixo o link de onde eu tirei.

http://otfans.net/showthread.php?t=106972

Editado por Dragnus
Link para o comentário
Compartilhar em outros sites

  • Respostas 88
  • Created
  • Última resposta

Top Posters In This Topic

q q e isso??

esplica melhor

 

 

No caso você vai ter um "Animal de estimação". Vai indo conforme o level e ele vai evoluindo, pode usar magias, e tudo mais, vai ser o "seu melhor amigo", você vai treinando ele e ele vai ficando cada vez mais forte.

Link para o comentário
Compartilhar em outros sites

posta uma ss e dah uma organizada no tópico, tá meio confuso.

 

 

xample4qx2.jpg

 

xample3xy1.jpg

 

Tipo, não sei mexer muito com script nem sou programador e tal, achei esse tuto no otfans e li em vários forums de otserv q o pessoal qr isto, mas como sempre usei o forum do xtibia vim aqui compartilhar com o pessoal esse sistema.

 

Se acharem mais facil dêem uma olhada no site do otfans, só que está tudo em ingles mas é basicamente o que eu coloquei aqui, mas tem mais explicações nas imagens que tem lá.

 

http://otfans.net/showthread.php?t=106972

 

cya.

Link para o comentário
Compartilhar em outros sites

Massa, podia ter Hell Demon no lvl 300 ^^

vlw pelo script =)

 

{vocations = {1, 5}, pets =
	{{level = 300, name = "Hell Demon"}, {level = 100, name = "demon"}, {level = 60, name = "Dragons"}, {level = 50, name = "Dwarf Gegmancers"}, {level = 40, name = "Demon Skeleton"}, {level = 30, name = "Fire Devil"}, {level = 20, name = "Minotaur Archer"}, {level = 10, name = "Minotaur"}, {level = 0, name = "Rat"}}

Link para o comentário
Compartilhar em outros sites

parabens :icon1: otimo script estou botando no meu ot

 

----edit-----

tive ums problemas os pets dropavam os items exemplo o 'demon' quando morria dropava mpa etc.. tem como arruma isso ? ser tive post aew

by dark

 

 

:XTibia_smile:

 

 

 

souldark.servegame.com port 7171 versão 8.10

Editado por leandrolbs
Link para o comentário
Compartilhar em outros sites

Chaosfenix ç.ç

os bixos que tem ai sao do tibia rl tipo dragon,dwarf geomancer.

se vocÊ coloka bixos editados como pet vai ser melhor >.>

Link para o comentário
Compartilhar em outros sites

nussa

eu sempre quis ter um sistema de pet

ja vo testar dpois edito

______[EDITADO]________

Em que server vc testo?

pq o meu eh aries e n deu certo >.<

Editado por THH
Link para o comentário
Compartilhar em outros sites

pessoal testei no aries e funcionou os pets atacam sim e não demoram para andar tem que colocar todos os scripts certinhos.

Quanto aos loots realmente não sei ajudar vocês tem que pedir para alguem que mexa com scrip dar uma olhada pq eu não entendo mto bem, como eu falei apenas copiei de um site americano e trouxe para cá.

Link para o comentário
Compartilhar em outros sites


×
×
  • Criar Novo...