Ir para conteúdo
  • 0

Script Tirar Mensagem


Lucaswc15

Pergunta

Ae galera eu precisava que nesse script o player pudesse ja falar o nome do item direto sem precisar falar trade,vender ou sell antes.

 

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
function getNumber(txt)
x = string.gsub(txt,"%a","")
x = tonumber(x)
if x ~= nill and x > 0 then
return x
else
return 0
end
end
local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
items = {
["boggy dreads"] = {id = 10583, price = 200},
["centipede leg"] = {id = 11212, price = 28},
["cobra tongue"] = {id = 10550, price = 15},
["essence of a bad dream"] = {id = 11217, price = 360},
["ghastly dragon head"] = {id = 11360, price = 700},
["gland"] = {id = 8971, price = 500},
["half digested piece of meat"] = {id = 11194, price = 55},
["half eaten brain"] = {id = 10575, price = 85},
["hellhound slobber"] = {id = 10553, price = 500},
["lizard essence"] = {id = 12597, price = 300},
["mutated flesh"] = {id = 11219, price = 50},
["mutated rat tail"] = {id = 10584, price = 150},
["book of necromantic rituals"] = {id = 11231, price = 250},
["petrified scream"] = {id = 11331, price = 250},
["tarantula egg"] = {id = 1192, price = 80},
["undead heart"] = {id = 11361, price = 200},
["broken halberd"] = {id = 11329, price = 100},
["cursed shoulder spikes"] = {id = 11321, price = 320},
["legionnaire flags"] = {id = 11328, price = 500},
["spiked iron ball"] = {id = 11319, price = 100}
}
msg = string.lower(msg)
if isInArray({"trade","vender","sell","selling"}, msg) then
selfSay('Qual item você deseja me vender?', cid)
talkState[talkUser] = 1

elseif talkState[talkUser] == 1 then
if items[msg] then
selfSay('Compro cada '..msg..' por '..items[msg].price..' golds, quer me vender quantos desse item?', cid)
index,var = items[msg].id,items[msg].price
talkState[talkUser] = 2
else
selfSay('Eu n\ão compro este item!', cid)
end
elseif talkState[talkUser] == 2 then
if getNumber(msg) > 0 and getNumber(msg) <= 100 then
n = getNumber(msg)
selfSay('você quer vender '..n..' '..getItemNameById(index)..' por '..var*n..' golds?', cid)
talkState[talkUser] = 3
else
selfSay('Compro no m\ínimo 1 e no m\áximo 100 desse item!', cid)
end
elseif msgcontains(msg, "yes") and talkState[talkUser] == 3 then
if doPlayerRemoveItem(cid, index, n) then
doPlayerAddMoney(cid, var*n)
selfSay('Muito obrigado, aqui está seu dinheiro!', cid)
else
selfSay('você não tem os items!', cid)
talkState[talkUser] = 0
end
elseif msg == "no" and talkState[talkUser] >= 1 then 
selfSay("Tudo bem então.", cid)
talkState[talkUser] = 0 
npcHandler:releaseFocus(cid) 
end
return TRUE
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new()) 

 

 

Creio que o problema esteja aqui, tentei apagar mais bugou.

 

 

talkState[talkUser] = 1

elseif talkState[talkUser] == 1 then

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

não testei amigo:

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
function getNumber(txt)
x = string.gsub(txt,"%a","")
x = tonumber(x)
if x ~= nill and x > 0 then
return x
else
return 0
end
end
local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
items = {
["boggy dreads"] = {id = 10583, price = 1000},
["centipede leg"] = {id = 11212, price = 2000},
["cobra tongue"] = {id = 10550, price = 3000},
["essence of a bad dream"] = {id = 11217, price = 4000},
["ghastly dragon head"] = {id = 11360, price = 5000},
["gland"] = {id = 8971, price = 5000},
["half digested piece of meat"] = {id = 11194, price = 5000},
["half eaten brain"] = {id = 10575, price = 5000},
["hellhound slobber"] = {id = 10553, price = 5000},
["lizard essence"] = {id = 12597, price = 5000},
["mutated flesh"] = {id = 11219, price = 5000},
["mutated rat tail"] = {id = 10584, price = 5000},
["book of necromantic rituals"] = {id = 11231, price = 5000},
["petrified scream"] = {id = 11331, price = 5000},
["tarantula egg"] = {id = 1192, price = 5000},
["undead heart"] = {id = 11361, price = 5000},
["broken halberd"] = {id = 11329, price = 5000},
["cursed shoulder spikes"] = {id = 11321, price = 5000},
["legionnaire flags"] = {id = 11328, price = 5000},
["spiked iron ball"] = {id = 11319, price = 5000}
}
msg = string.lower(msg)
if not talkState[talkUser] and not items[msg] then
selfSay('eu não compro este item!', cid)
elseif items[msg] then
selfSay('cada '..msg..' vale '..items[msg].price..' gold, quer me vender quantos desse item?', cid)
index,var = items[msg].id,items[msg].price
talkState[talkUser] = 1
elseif talkState[talkUser] == 1 then
if getNumber(msg) > 0 and getNumber(msg) < 11 then
n = getNumber(msg)
selfSay('você quer vender '..n..' '..getItemNameById(index)..' por um total de '..var*n..' gps? {yes}', cid)
talkState[talkUser] = 2
else
selfSay('digite num número de 1 a 10!', cid)
end
elseif msgcontains(msg, "yes") and talkState[talkUser] == 2 then
if doPlayerRemoveItem(cid, index, n) then
doPlayerAddMoney(cid, var*n)
selfSay('Muito obrigado, aqui está seu dinheiro!', cid)
else
selfSay('você não tem os items!', cid)
talkState[talkUser] = 0
end
elseif msg == "no" and talkState[talkUser] >= 1 then 
selfSay("tudo bem então.", cid)
talkState[talkUser] = 0 
npcHandler:releaseFocus(cid) 
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new()) 

Link para o comentário
Compartilhar em outros sites

  • 0

Certinho amigo, agora to te devendo mais 1 rep. akspaok

Pode me fazer esse script só que em vez de eu vender pro npc, o npc vender pra mim?

 

Talvez, mais uma coisa, porque não faz pelo trade normalmente? já que é o npc que vai vender acho que tbm não tem problema algum.

Link para o comentário
Compartilhar em outros sites

  • 0

É porque meu server é 8.60, e tem o bug do trade, eu sei que tem que compilar e tal, só que nao tenho as sources do meu executor (MixSoft) e gosto desse executor porq nao tem aquele bug do tibia 8.60 que voce ataka o player, entra pz e ainda fica marcado o player como target...

Link para o comentário
Compartilhar em outros sites

  • 0

Ok, se puder tambem me ajudar nesse aqui, ele nao ta removendo os itens. Na verdade assim, ele remove o 1, se nao tiver o 1 ele remove o 2, e assim por diante, talvez seja esse elseif na frente, mas se eu mao botar If e executar o script e nao tiver nem um item la vai dar bug no executor, entao o IF é pra nao bugar.

 

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
local fromPosimperador = {x=392, y=524, z=8}
local toPosimperador = {x=397, y=527, z=8}
if isInArea(getPlayerPosition(cid), fromPosimperador, toPosimperador) then
if getPlayerStorageValue(cid,2566) == 4 then
doTeleportThing(cid,{x=395,y=525,z=8})
setPlayerStorageValue(cid,2566,5)
doSendMagicEffect(getPlayerPosition(cid), 10)
doCreatureSay(cid, "Voc\ê est\á viajando no tempo",TALKTYPE_ORANGE_1)
else
if getPlayerStorageValue(cid,2566) == 6 then
doTeleportThing(cid,{x=395,y=525,z=8})
doSendMagicEffect(getPlayerPosition(cid), 10)
doCreatureSay(cid, "Voc\ê est\á viajando no tempo",TALKTYPE_ORANGE_1)
setPlayerStorageValue(cid,2566,7)
for x = fromPosimperador.x, toPosimperador.x do
for y = fromPosimperador.y, toPosimperador.y do
local mob = getTopCreature({x=x, y=y, z=8}).uid
if mob ~= 0 and isMonster(mob) then
doRemoveCreature(mob)
if getThingfromPos({x = 394, y = 524, z = 8, stackpos=1}).itemid == 2043 then
doRemoveItem(getThingfromPos({x = 394, y = 524, z = 8, stackpos=1}).uid,1)
doCreateItem(2042,1,{x = 393, y = 524, z = 8})
elseif getThingfromPos({x = 396, y = 526, z = 8, stackpos=2}).itemid == 2983 then
doRemoveItem(getThingfromPos({x = 396, y = 526, z = 8, stackpos=2}).uid,1)
elseif getThingfromPos({x = 395, y = 526, z = 8, stackpos=3}).itemid == 1955 then
doRemoveItem(getThingfromPos({x = 395, y = 526, z = 8, stackpos=3}).uid,1)
elseif getThingfromPos({x = 395, y = 526, z = 8, stackpos=2}).itemid == 1987 then
doRemoveItem(getThingfromPos({x = 395, y = 526, z = 8, stackpos=2}).uid,1)
elseif getThingfromPos({x = 397, y = 525, z = 8, stackpos=1}).itemid == 1987 then
doRemoveItem(getThingfromPos({x = 397, y = 525, z = 8, stackpos=1}).uid,1)
elseif getThingfromPos({x = 394, y = 525, z = 8, stackpos=2}).itemid == 2984 then
doRemoveItem(getThingfromPos({x = 394, y = 525, z = 8, stackpos=2}).uid,1)
elseif getThingfromPos({x = 395, y = 527, z = 8, stackpos=2}).itemid == 2984 then
doRemoveItem(getThingfromPos({x = 395, y = 527, z = 8, stackpos=2}).uid,1)
return false
end
end
end
end
end
end
end
return true
end

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

×
×
  • Criar Novo...