Postado Janeiro 10, 2017 8 anos Iae Galera do TK bom galera eu hoje vim pedi 1 script de npc que pegue os points do site e troque por items no npc irei explicar a pessoa tem EX: 100 points no site ai no npc tem 2 items de 50 o player vai comprar 1 item de 50 e serar tirado 50 pts do site e o npc da o item escolhido pelo player e quando o player compra o npc manda 1 mensagem : Recebeu 1 item Agora se o player escolher 1 item tenta comprar e não tiver points no site o npc manda 1 mensagem : Voce Nao Tem Points
Postado Janeiro 13, 2017 8 anos Adicione essas funções na sua lib: Spoiler function getPoints(cid) local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'') if(res:getID() == -1) then return 0 end local ret = res:getDataInt("premium_points") res:free() return tonumber(ret) end function doPlayerRemovePoints(cid, pontos) return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getPoints(cid) - pontos .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end data/npc/scripts cria um arquivo em extensão lua nomeDoArquivo.lua e adicione esse script dentro: Spoiler local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 local tempo = 20 -- Tempo para falar com o NPC e evitar Spam, caso não tenha os pontos. local storage = 115818 -- Storage do exhaustino /\ local pontos = 25 -- Quantidade de pontos no site que precisa para comprar os itens, essa quantidade vale para todos itens comprados local count = 1 -- quantidade de item que vai ganhar local itens = { ["item1"] = 16, -- nome e id do item, lembrando sempre em letra minuscúla o nome ["item2"] = 21, ["item3"] = 15 } if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para falar com o NPC novamente.") return false end for item, id in pairs(itens) do if msgcontains(msg, item) then if getPoints(cid) < pontos then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você não tem a quantidade de Pontos para comprar os Itens.") exhaustion.set(cid, storage, tempo) return false else doPlayerAddItem(cid, id, count) doPlayerRemovePoints(cid, pontos) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você acabou de comprar um".. itens:gsub("^%l", string.upper)..".") end return true end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) data/npc e cria um arquivo em extensão xml, Nome do NPC.xml e adicione essa script dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Nome do NPC" script="data/npc/scripts/nomeDoArquivo.lua" walkinterval="2000" speed="0" floorchange="0"> <health now="100" max="100"/> <look type="167" head="38" body="79" legs="107" feet="114"/> <parameters> <parameter key="message_greet" value="Então, eu vendo itens vips, eles são: {Item1}, {Item2} e {Item3}, qual deseja comprar ?. "/> <parameter key="message_farewell" value="Até mais!" /> <parameter key="message_walkaway" value="Até mais!" /> </parameters></npc>
Postado Janeiro 13, 2017 8 anos Autor 2 horas atrás, KotZletY disse: Adicione essas funções na sua lib: Mostrar conteúdo oculto function getPoints(cid) local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'') if(res:getID() == -1) then return 0 end local ret = res:getDataInt("premium_points") res:free() return tonumber(ret) end function doPlayerRemovePoints(cid, pontos) return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getPoints(cid) - pontos .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end data/npc/scripts cria um arquivo em extensão lua nomeDoArquivo.lua e adicione esse script dentro: Ocultar conteúdo local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 local tempo = 20 -- Tempo para falar com o NPC e evitar Spam, caso não tenha os pontos. local storage = 115818 -- Storage do exhaustino /\ local pontos = 25 -- Quantidade de pontos no site que precisa para comprar os itens, essa quantidade vale para todos itens comprados local count = 1 -- quantidade de item que vai ganhar local itens = { ["item1"] = 16, -- nome e id do item, lembrando sempre em letra minuscúla o nome ["item2"] = 21, ["item3"] = 15 } if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para falar com o NPC novamente.") return false end for item, id in pairs(itens) do if msgcontains(msg, item) then if getPoints(cid) < pontos then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você não tem a quantidade de Pontos para comprar os Itens.") exhaustion.set(cid, storage, tempo) return false else doPlayerAddItem(cid, id, count) doPlayerRemovePoints(cid, pontos) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você acabou de comprar um".. itens:gsub("^%l", string.upper)..".") end return true end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) data/npc e cria um arquivo em extensão xml, Nome do NPC.xml e adicione essa script dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Nome do NPC" script="data/npc/scripts/nomeDoArquivo.lua" walkinterval="2000" speed="0" floorchange="0"> <health now="100" max="100"/> <look type="167" head="38" body="79" legs="107" feet="114"/> <parameters> <parameter key="message_greet" value="Então, eu vendo itens vips, eles são: {Item1}, {Item2} e {Item3}, qual deseja comprar ?. "/> <parameter key="message_farewell" value="Até mais!" /> <parameter key="message_walkaway" value="Até mais!" /> </parameters></npc> Onde eu coloco o ID dos itens ? para a pessoa comprar? EDIT: AChei vou ver se vai dar certo Deu quase certo exeto uma coisa, não esta descontando os premium points, acho que o problema é na lib nao sei como add ela, eu criei um arquivo lua e coloquei o que pediu mas creio que esta errado, ou seja eu pego itens infinitamente no npc pois nao esta descontando os premium points e acontece um erro na distro. Editado Janeiro 13, 2017 8 anos por jajazenho (veja o histórico de edições)
Postado Janeiro 13, 2017 8 anos Na verdade o erro está na forma que a query é executada, você criou uma nova lib para as funções ? Rsrsrs Não precisava, era para adicionar na lib functions ou em qualquer uma lib, mais na 050-functions era pela lógica. Huahsuas, ou adicionar até mesmo no propio script do npc, pedi para add nas libs para você poder usar em outros scripts as funções. Haha! xD Basta ir na lib e mudar db.executeQuery para db.Query
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.