@Step Records Ver ae
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {20}
--item->getText()
--for line in str:gmatch("[^\r\n]+") do ... end
--source getText
--source getPetOwner() retorna o nome do Player, getCreaturePet(cid) retorna o NPC <- as duas no npc.cpp
local balls = {
[2222] = { b = 2222 },
[2224] = { b = 2222 },
[11438] = { b = 11438 },
[11440] = { b = 11438 },
[11442] = { b = 11442 },
[11444] = { b = 11442 },
[2220] = { b = 2220 },
[2227] = { b = 2220 },
[11446] = { b = 11446 },
[11447] = { b = 11446 },
[11448] = { b = 11446 },
[11449] = { b = 11449 },
[11450] = { b = 11449 },
[11451] = { b = 11449 },
[11452] = { b = 11452 },
[11453] = { b = 11452 },
[11454] = { b = 11452 },
[11455] = { b = 11455 },
[11456] = { b = 11455 },
[11457] = { b = 11455 },
[11458] = { b = 11458 },
[11459] = { b = 11458 },
[11460] = { b = 11458 },
}
local focus = 0
local talk_start = 0
local target = 0
local following = false
local attacking = false
local nomes = {
[1] = { nome = "", varItem = "" },
[2] = { nome = "", varItem = "" },
[3] = { nome = "", varItem = "" },
[4] = { nome = "", varItem = "" },
[5] = { nome = "", varItem = "" },
[6] = { nome = "", varItem = "" },
}
local numPoke = 2
function onThingMove(creature, thing, oldpos, oldstackpos, item, itemEx)
end
function getListaPoke(cid)
item = getPlayerSlotItem(cid, CONST_SLOT_FEET)
pb = balls[item.itemid]
if pb ~= nil then
varNome = getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball.")
nomes[1] = { nome = varNome, varItem = item.uid }
end
local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK)
doCheckNextBag(cid,bp)
end
function onCreatureAppear(creature)
end
function onCreatureDisappear(cid, pos)
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if focus == cid then
focus = 0
talk_start = 0
talkState[talkUser] = 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)
numeros=' 1 2 3 4 5 6 '
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
msg = msg:lower()
if (msgcontains(msg, 'trade')) then
if getPetOwner() == getCreatureName(cid) then
destino = getPlayerStorageValue(cid, 15999)
if destino.len() > 0 then
selfSay('Ok Master, I will go Faster that I can')
doGoTrade(cid,destino)
else
selfSay('My Master, I cant go without a target')
end
end
elseif(msgcontains(msg, 'yes')) then
petMaster = getPlayerGUIDByName(getPetOwner())
if cid ~= petMaster then
if getCreatureName(cid) == getPlayerStorageValue(petMaster, 15999) then
doTrade(cid,petMaster)
else
selfSay('You are not the target.')
end
end
elseif(msgcontains(msg, 'give')) then
if getPetOwner() == getCreatureName(cid) then
if getPlayerStorageValue(cid, 15997) > 0 then
doGiveItems(cid)
else
selfSay('Master, you dont trade anything yet.')
end
end
end
end
function onCreatureChangeOutfit(creature)
end
function doCheckNextBag(container, itemTmp, itemQtd)
local itemsInBag = {}
local bagEmptySlotCheck = 0
local bagSize = getContainerSize(container.uid)
for i = 0, getContainerSize(container.uid)-1 do
itemsInBag = getContainerItem(container.uid, i)
if itemsInBag.itemid == itemTmp then
return 1
end
if isItemContainer(itemsInBag.itemid) then
if doCheckNextBag(itemsInBag,itemTmp,itemQtd) == 1 then
return 1
end
end
return 0
end
function doGoTrade(cid,destino)
local function fly(params)
if isCreature(params.cid) then
if isCreature(getCreaturePet(params.cid)) then
if params.dd == 3 then
--fazer coisas quando chegar na distância correta
doTeleportThing(getCreaturePet(params.cid),getThingPos(getPlayerGUIDByName(destino)), true)
doPushCreature(getCreaturePet(params.cid), WEST, 1, 0)
selfSay(getPetOwner()..' send me to trade with you')
selfSay('Say yes to complete the trade')
else
dir = getDirectionTo(getThingPos(getCreaturePet(params.cid)), getThingPos(getPlayerGUIDByName(destino)))
if dir == NORTHWEST then
if math.random(1,100) >= 51 then
dir = NORTH
else
dir = WEST
end
elseif dir == SOUTHWEST then
if math.random(1,100) >= 51 then
dir = SOUTH
else
dir = WEST
end
elseif dir == SOUTHEAST then
if math.random(1,100) >= 51 then
dir = SOUTH
else
dir = EAST
end
elseif dir == NORTHEAST then
if math.random(1,100) >= 51 then
dir = NORTH
else
dir = EAST
end
end
local dir = dir
if getCreatureSpeed(getCreaturePet(params.cid)) == 0 then
doChangeSpeed(getCreaturePet(params.cid), getCreatureBaseSpeed(getCreaturePet(params.cid)))
doPushCreature(getCreaturePet(params.cid), dir, 1, 0)
doChangeSpeed(getCreaturePet(params.cid), -getCreatureSpeed(getCreaturePet(params.cid)))
else
doPushCreature(getCreaturePet(params.cid), dir, 1, 0)
doChangeSpeed(getCreaturePet(params.cid), -getCreatureSpeed(getCreaturePet(params.cid)))
end
end
end
end
end
local function speed(params)
if isCreature(params.cid) then
if isCreature(getCreaturePet(params.cid)) then
if getCreatureSpeed(getCreaturePet(params.cid)) == 0 then
doChangeSpeed(getCreaturePet(params.cid), getCreatureBaseSpeed(getCreaturePet(params.cid)))
end
end
end
end
doCreatureSay(cid, "Go and back faster than you can!", 1)
for i=1,3 do
addEvent(fly, 150*i, {cid = cid, dd = i, destino = destino})
addEvent(speed, ((150*3)+100), {cid = cid})
end
end
function doTrade(cid,petMaster)
items = getPlayerStorageValue(petMaster, 15998)
itemNo = items:sub(1,5)
itemQtd = items:sub(7,9)
totalItens = 1
if getPlayerItemCount(cid,itemNo) >= itemQtd then
achados = 1
end
items = items:sub(11)
while items:len() > 0 do
itemNo = items:sub(1,5)
itemQtd = items:sub(7,9)
totalItens = totalItens + 1
if getPlayerItemCount(cid,itemNo) >= itemQtd then
achados = achados + 1
end
items = items:sub(11)
end
if achados == totalItens then
items = getPlayerStorageValue(petMaster, 15998)
itemNo = items:sub(1,5)
itemQtd = items:sub(7,9)
removeItem = getPlayerItemById(cid, true, itemNo)
doRemoveItem(removeItem,itemQtd)
items = items:sub(11)
while items:len() > 0 do
itemNo = items:sub(1,5)
itemQtd = items:sub(7,9)
removeItem = getPlayerItemById(cid, true, itemNo)
doRemoveItem(removeItem,itemQtd)
items = items:sub(11)
end
setPlayerStorageValue(petMaster, 15997, 1)
selfSay('Thank you, Bye')
doTeleportThing(getCreaturePet(params.cid),getThingPos(petMaster), true)
doPushCreature(getCreaturePet(params.cid), WEST, 1, 0)
selfSay('Master, say give to have your items')
end
end
function doGiveItems(cid)
storage = getPlayerStorageValue(cid, 15997)
if storage > 0 then
items = getPlayerStorageValue(cid, 15998)
itemNo = items:sub(1,5)
itemQtd = items:sub(7,9)
tradeItem = doCreateItemEx(itemNo,itemQtd)
doPlayerAddItemEx(cid, tradeItem, true)
items = items:sub(11)
while items:len() > 0 do
itemNo = items:sub(1,5)
itemQtd = items:sub(7,9)
tradeItem = doCreateItemEx(itemNo,itemQtd)
doPlayerAddItemEx(cid, tradeItem, true)
items = items:sub(11)
end
setPlayerStorageValue(cid, 15997, 0)
setPlayerStorageValue(cid, 15998, 0)
setPlayerStorageValue(cid, 15999, '')
end
end




info
Grupo: Campones
Registrado: 24/05/18
Posts: 82
Reputação: +1
Gênero: Masculino
hello all I have a small problem with the script crashes in the console here is such a query
Skrypt: