Postado Fevereiro 14, 2019 6 anos Esse script é para transferir Premium Points para outro jogador. Quando você pega o Documento para transferir os Pontos para o outro jogador, você fica com Pontos negativo na DB. Script feito pelo @Danyel Varejao. Sem ter comprado o Documento. Quando compra o Documento. Os pontos negativos são acumulativos, tipo, se você pega um documento de 10 Premium Points você fica com -10, se você pega outro documento com o valor de 40 Premium Points, você fica com -50 Npc.lua <Script Npc> 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 greetCallback(cid) talkState[cid] = 0 return true end function creatureSayCallback(cid, type, msg) if (not npcHandler:isFocused(cid)) then return false end if talkState[cid] == nil or talkState[cid] == 0 then Count_Points = tonumber(msg) if isInArray(Points_Trade.Points, Count_Points) then npcHandler:say("Do you want to buy a premium points transfer document that will transfer ".. Count_Points .." premium points, right?", cid) talkState[cid] = 1 else npcHandler:say("Escolha um numero entre ".. table.concat(Points_Trade.Points, ', ') ..".", cid) talkState[cid] = 0 end elseif talkState[cid] == 1 then if msgcontains(msg, 'yes') then local Document = doCreateItemEx(Points_Trade.Document_ItemID) doItemSetAttribute(Document, "name", "".. Count_Points .." premium points transfer document") doItemSetAttribute(Document, "points", Count_Points) doPlayerAddItemEx(cid, Document) doPlayerRemovePoints(cid, Count_Points) npcHandler:say("Você obteve um documento que vale ".. Count_Points .." premium points, use ele no trade com alguem.", cid) talkState[cid] = 0 else npcHandler:say("Ok, volte mais tarde.", cid) talkState[cid] = 0 end end return true end npcHandler:setMessage(MESSAGE_GREET, "Ola |PLAYERNAME|. Eu vendo alguns utensílios e Premium Points transfers para você transferir pontos para outros jogadores, lembre-se para comprar use '10,ppt' para 10 pontos.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Points_Trade.lua <Lib> Points_Trade = { Document_ItemID = 1954, Points = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100}, } function DocumentPoints(Item) return tonumber(getItemAttribute(Item.uid, "points")) end function getPlayerPoints(cid) local AccountID = getPlayerAccountId(cid) local Points = 0 local Result = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = ".. AccountID .."") if Result:getID() ~= -1 then Points = Result:getDataInt("premium_points") end return tonumber(Points) end function doPlayerAddPoints(cid, Points) local AccountID = getPlayerAccountId(cid) local Result = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = '".. AccountID .."'") if Result:getID() ~= -1 then db.executeQuery("UPDATE `accounts` SET `premium_points` = " .. getPlayerPoints(cid) + Points .. " WHERE `id` = " .. AccountID .. ";") end return true end function doPlayerRemovePoints(cid, Points) local AccountID = getPlayerAccountId(cid) local Result = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = '".. AccountID .."'") if Result:getID() ~= -1 then db.executeQuery("UPDATE `accounts` SET `premium_points` = " .. getPlayerPoints(cid) - Points .. " WHERE `id` = " .. AccountID .. ";") end return true end Points_Trade.lua <CreatureScripts> function onTradeAccept(cid, target, item, targetItem) if isPlayer(cid) and isPlayer(target) then if item.itemid == Points_Trade.Document_ItemID then doPlayerSendTextMessage(target, MESSAGE_STATUS_WARNING, "Você recebeu ".. DocumentPoints(item) .." premium points.") doPlayerAddPoints(target, DocumentPoints(item)) doPlayerRemovePoints(cid, DocumentPoints(item)) addEvent(doPlayerRemoveItem, 1, target, Points_Trade.Document_ItemID, 1) elseif targetItem.itemid == Points_Trade.Document_ItemID then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você recebeu ".. DocumentPoints(targetItem) .." premium points.") doPlayerAddPoints(cid, DocumentPoints(targetItem)) doPlayerRemovePoints(target, DocumentPoints(targetItem)) addEvent(doPlayerRemoveItem, 1, cid, Points_Trade.Document_ItemID, 1) end end return true end function onTradeRequest(cid, target, item) if item.itemid == Points_Trade.Document_ItemID then if getPlayerPoints(cid) < DocumentPoints(item) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você não tem ".. DocumentPoints(item) .." para realizar uma troca.") return false end end return true end Meu Curso sobre Programação para OTServer Programando OTServer Peça o seu script! Entre agora mesmo no grupo Developing Conteúdos: Spoiler • Cidade [8.60] • Cave de Boss • Widget Gesior • Autoloot 100% • [Old Client] Como Hookar Dll • Configurando VPS Windowns • [Solução] Código Caracteres Especiais Discord: Belmont#7352 Não esqueça do REP+
Postado Fevereiro 14, 2019 6 anos Cara aparentemente, é só realizar a checagem pra ver se os points do cara é equivalente ou maior que o preço e se não for ele retorna false. To terminando umas coisas aqui e já tento te ajudar.
Postado Fevereiro 14, 2019 6 anos Autor @Kamiz Ta certo, Meu Curso sobre Programação para OTServer Programando OTServer Peça o seu script! Entre agora mesmo no grupo Developing Conteúdos: Spoiler • Cidade [8.60] • Cave de Boss • Widget Gesior • Autoloot 100% • [Old Client] Como Hookar Dll • Configurando VPS Windowns • [Solução] Código Caracteres Especiais Discord: Belmont#7352 Não esqueça do REP+
Postado Fevereiro 15, 2019 6 anos troca essa função: function getPlayerPoints(cid) local AccountID = getPlayerAccountId(cid) local Points = 0 local Result = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = ".. AccountID .."") if Result:getID() ~= -1 then Points = Result:getDataInt("premium_points") end return tonumber(Points) end por essa: function getPlayerPoints(cid) local AccountID = getPlayerAccountId(cid) local Result = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = ".. AccountID) return Result:getDataInt("premium_points") <= 0 and 0 or Result:getDataInt("premium_points") -- DataInt é number. end e o script do npc deixa assim: 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 greetCallback(cid) talkState[cid] = 0 return true end function creatureSayCallback(cid, type, msg) if (not npcHandler:isFocused(cid)) then return false end if talkState[cid] == nil or talkState[cid] == 0 then Count_Points = tonumber(msg) if isInArray(Points_Trade.Points, Count_Points) then npcHandler:say("Do you want to buy a premium points transfer document that will transfer ".. Count_Points .." premium points, right?", cid) talkState[cid] = 1 else npcHandler:say("Escolha um numero entre ".. table.concat(Points_Trade.Points, ', ') ..".", cid) talkState[cid] = 0 end elseif talkState[cid] == 1 then if msgcontains(msg, 'yes') then if getPlayerPoints(cid) >= Count_Points then local Document = doCreateItemEx(Points_Trade.Document_ItemID) doItemSetAttribute(Document, "name", "".. Count_Points .." premium points transfer document") doItemSetAttribute(Document, "points", Count_Points) doPlayerAddItemEx(cid, Document) doPlayerRemovePoints(cid, Count_Points) npcHandler:say("Você obteve um documento que vale ".. Count_Points .." premium points, use ele no trade com alguem.", cid) talkState[cid] = 0 else npcHandler:say("Desculpe, mas voce nao tem ".. Count_Points .." Points.", cid) talkState[cid] = 0 end else npcHandler:say("Ok, volte mais tarde.", cid) talkState[cid] = 0 end end return true end npcHandler:setMessage(MESSAGE_GREET, "Ola |PLAYERNAME|. Eu vendo alguns utensílios e Premium Points transfers para você transferir pontos para outros jogadores, lembre-se para comprar use '10,ppt' para 10 pontos.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Fevereiro 15, 2019 6 anos Autor @Vodkart Eu testei aqui e pelo que eu vi, ele remove os Premium Points do site para o Documento, mais se você tiver 10 Premium Points e pegar um Documento você não pode dar trade, o script fala que você não tem mais os Premium Points por que já foi removido e posto no Documento Isso para qualquer valor Meu Curso sobre Programação para OTServer Programando OTServer Peça o seu script! Entre agora mesmo no grupo Developing Conteúdos: Spoiler • Cidade [8.60] • Cave de Boss • Widget Gesior • Autoloot 100% • [Old Client] Como Hookar Dll • Configurando VPS Windowns • [Solução] Código Caracteres Especiais Discord: Belmont#7352 Não esqueça do REP+
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.