Postado Dezembro 18, 2018 6 anos Precisaria de ajuda em um npc, pra ele vender "montaria, items" por tokens que são armazenadas pela database, achei um exemplo mas é pra 0.4 minha tabela fica em accounts. function getAccountPoints(cid) local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'') return res:getDataInt("premium_points") < 0 and 0 or res:getDataInt("premium_points") end function doAccountRemovePoints(cid, count) return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getAccountPoints(cid) - count .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end 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 local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local shopWindow = {} local t = { [2195] = 1, [2493] = 25, [2361] = 30, [8851] = 20, [8925] = 30, [2640] = 50, [2494] = 100, [9932] = 50, [2472] = 70, [8931] = 100 } local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks) if t[item] and getAccountPoints(cid) < t[item] then selfSay("You need "..t[item].." points to buy this item.", cid) else doAccountRemovePoints(cid, t[item]) doPlayerAddItem(cid, item) selfSay("Here your item!", cid) end return true end if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then for var, ret in pairs(t) do table.insert(shopWindow, {id = var, subType = 0, buy = ret, sell = 0, name = getItemNameById(var)}) end openShopWindow(cid, shopWindow, onBuy, onSell) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Editado Dezembro 18, 2018 6 anos por Jobs (veja o histórico de edições)
Postado Dezembro 19, 2018 6 anos Solução Não fiz a dos items porque estou sem tempo. Mas ta aí a das montarias. Não testado 100%. LIB: function Player.getTokens(self) local query = db.storeQuery("SELECT `tokens` FROM accounts WHERE `id` = "..self:getAccountId()) if not query then return 0 end local tokens = result.getDataInt(query, "tokens") or 0 result.free(query) return tokens end function Player.removeTokens(self, count) return db.query("UPDATE `accounts` SET `tokens` = "..self:getTokens() - count.." WHERE `id` = "..self:getAccountId()) end NPC: 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) local player = Player(cid) local mounts = { ["Widow Queen"] = {tokens = 500, mountId = 1}, ["Racing Bird"] = {tokens = 500, mountId = 2}, } if(not npcHandler:isFocused(cid)) then return false end if msg == "montarias" then npcHandler:say("Montarias disponível no momento {Widow Queen} e {Racing Bird}.", cid) return true end if mounts[msg] then if not player:hasMount(mounts[msg].mountId) then if player:getTokens() >= mounts[msg].tokens then npcHandler:say("Você comprou a montaria {"..msg.."} por "..mounts[msg].tokens.." tokens", cid) player:removeTokens(mounts[msg].tokens) player:addMount(mounts[msg].mountId) else npcHandler:say("Você precisa de {"..mounts[msg].tokens.." tokens} para comprar esta montaria.", cid) end else npcHandler:say("Você já possui esta montaria.", cid) end else npcHandler:say("A montaria {"..msg.."} não existe.", cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Editado Dezembro 19, 2018 6 anos por Coltera (veja o histórico de edições)
Postado Dezembro 19, 2018 6 anos Autor 14 horas atrás, Coltera disse: Não fiz a dos items porque estou sem tempo. Mas ta aí a das montarias. Não testado 100%. LIB: function Player.getTokens(self) local query = db.storeQuery("SELECT `tokens` FROM accounts WHERE `id` = "..self:getAccountId()) if not query then return 0 end local tokens = result.getDataInt(query, "tokens") or 0 result.free(query) return tokens end function Player.removeTokens(self, count) return db.query("UPDATE `accounts` SET `tokens` = "..self:getTokens() - count.." WHERE `id` = "..self:getAccountId()) end NPC: 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) local player = Player(cid) local mounts = { ["Widow Queen"] = {tokens = 500, mountId = 1}, ["Racing Bird"] = {tokens = 500, mountId = 2}, } if(not npcHandler:isFocused(cid)) then return false end if msg == "montarias" then npcHandler:say("Montarias disponível no momento {Widow Queen} e {Racing Bird}.", cid) return true end if mounts[msg] then if not player:hasMount(mounts[msg].mountId) then if player:getTokens() >= mounts[msg].tokens then npcHandler:say("Você comprou a montaria {"..msg.."} por "..mounts[msg].tokens.." tokens", cid) player:removeTokens(mounts[msg].tokens) player:addMount(mounts[msg].mountId) else npcHandler:say("Você precisa de {"..mounts[msg].tokens.." tokens} para comprar esta montaria.", cid) end else npcHandler:say("Você já possui esta montaria.", cid) end else npcHandler:say("A montaria {"..msg.."} não existe.", cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Valeu meninão por me salvar again só agradece.
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.