Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Oi eu preciso de ajuda, eu estava querendo colocar o sistema de pet.. ecoloquei um script  e talz.. funciona com o god.. mas com player n ajuda ai

 

 

 

function onUse(cid, item, frompos, item2, topos)
local storage = 11549 -- n mexa
local exhausted = 5 -- tempo em segundos
 
if (getPlayerStorageValue(cid, storage) >= os.time()) then
return doPlayerSendCancel(cid, "Você tem que esperar " .. getPlayerStorageValue(cid, storage) - os.time() .. " segundos para usar novamente.")
end
 
local summons = getCreatureSummons(cid)
 
local pet = {
["Rotworm"] = {1,10},
["Minotaur"] = {11,15},
["Dwarf Soldier"] = {16,19},
["Minotaur Guard"] = {20,25},
["Dragon Hatchling"] = {26,32},
["Dragon"] = {33,45},
["Giant Spider"] = {46,55},
["Dragon Lord"] = {56,120},
["Grim Reaper"] = {121,160},
["Ghastly Dragon"] = {161,200},
["Undead Dragon"] = {201,1000}
}
 
for k,v in pairs(pet) do -- 1
 
if getPlayerLevel(cid) >= v[1] and getPlayerLevel(cid) < v[2] then -- 2
if (table.maxn(summons) < 1)then -- 3
x = doSummonCreature(k, getCreaturePosition(cid))
doConvinceCreature(cid, x)
doCreatureSay(cid, k ..", go!", TALKTYPE_ORANGE_1)
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 2)
return true
end
end
end
if isCreature(cid) then -- 4
doRemoveCreature(getCreatureSummons(cid)[1])
doCreatureSay(cid,"Hey Brother Come back!!!", TALKTYPE_ORANGE_1)
setPlayerStorageValue(cid,storage,os.time()+exhausted)
return true
end
end
 
 
 
 
 
Namoral eu consegui arrumar sozinho de tanta espera da ajuda de vocês... -.-'
Editado por brunomagnos (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

coloca o script aqui pra gente entender melhor.

Skype @kaiquegabriel__ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Atenciosamente,

kaiquegabriel.

Não dou suporte via pm.

Em caso de dúvidas, crie um tópico e espere o suporte.

Link para o post
Compartilhar em outros sites
  • 1 year later...

Tente esse sistema 

 

Coloque no Talkaction em todas as partes, GOD, CM, GM, Tutor, Senior Tutor, Player, TUDO !:
 

 
<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"/>

Copie o config.lua, add na pasta onde ele está e mude o nome para petConfig.lua e dentro coloque:
 

 
--// \\--
--( made by ~FreeGeels~* ) --
--____________ //-- 
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 = 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.ci d, 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(parameter s.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(getPlayerS torageValue(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) == 0 or getPlayerStorageValue(cid, petItems) == -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.vocations, getPlayerVocation(cid)) == 1 then
for k = 1, #pets.pets do 
if pets.pets[k].level <= getPlayerLevel(cid) then
myPet = pets.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.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á.

Editado por damiaotorres (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por guioljf
      Olá...
      Gostaria da ajuda de vocês...
       
      Baixei um OTserv 0.6.4 versão 8.6 bem limpo... Estou tentando adicionar o sistema de change gold nele mas, por algum motivo, não funciona.
       
      As alterações foram:
       
      actions.xml
      <!-- Change gold --> <action itemid="2148" event="script" value="changegold.lua"/> <action itemid="2152" event="script" value="changegold.lua"/> <action itemid="2160" event="script" value="changegold.lua"/>  
      changegold.lua
      function onUse(cid, item, fromPosition, itemEx, toPosition)   if item.itemid == 2148 and item.type == 100 then     doChangeTypeItem(item.uid, item.type - item.type)     doPlayerAddItem(cid, 2152, 1)     doSendAnimatedText(fromPosition, "$$$", TEXTCOLOR_LIGHTBLUE)   elseif item.itemid == 2152 and item.type == 100 then     doChangeTypeItem(item.uid, item.type - item.type)     doPlayerAddItem(cid, 2160, 1)     doSendAnimatedText(fromPosition, "$$$", TEXTCOLOR_TEAL)   elseif item.itemid == 2152 and item.type < 100 then     doChangeTypeItem(item.uid, item.type - 1)     doPlayerAddItem(cid, 2148, 100)     doSendAnimatedText(fromPosition, "$$$", TEXTCOLOR_YELLOW)   elseif item.itemid == 2160 then     doChangeTypeItem(item.uid, item.type - 1)     doPlayerAddItem(cid, 2152, 100)     doSendAnimatedText(fromPosition, "$$$", TEXTCOLOR_LIGHTBLUE)   else     return false   end return true  end Já conferi o items.xml e tá tudo ok lá... já até reiniciei o server imaginando que o reload pudesse estar com problema, mas não funcionou. Estou esquecendo algo?

      Valeu!!
         
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo