Lucasyeah 1 Postado Novembro 2, 2013 Share Postado Novembro 2, 2013 TFS, 860. Olá pessoal, venho aki pedir um script bem legal, que será bastante útil para grande maioria (eu acho). O script é o seguinte, uma talkactions que transfere premium points de um player para outro. Exemplo: Quem irá receber \/ !transfere Druidzinho, 3 <~ Quantidade de pontos que irá transferir Os premium points irão para a account do player Druidzinho... Se o player que fizer o comando não tiver a quantidade necessária de premium points para transferir o script manda msg: Você não tem isso para transferir. Meu sistema de premium points é normal, uso Mysql com a tabela de premium points! Quem puder ajudar ae, agradeço e Curto Link para o comentário Compartilhar em outros sites More sharing options...
0 Omega 377 Postado Novembro 2, 2013 Share Postado Novembro 2, 2013 function onSay(cid, words, param) local param = string.explode(param, ',') local days = param[2] local toPlayer = param[1] local player_prem_days = getPlayerPremiumDays(cid) if not days or not toPlayer then doPlayerSendCancel(cid, "You need to specify a valid online player and premium days to transfer premium days.") elseif not tonumber(days) then doPlayerSendCancel(cid, "You have to specify a valid number of premium days to transfer.") elseif player_prem_days < tonumber(days) then doPlayerSendCancel(cid, "You don't have the specified premium days to transfer.") else toPlayer = getCreatureByName(toPlayer) if not isPlayer(toPlayer) then doPlayerSendCancel(cid, "You have to specify a valid online player to transfer premium days.") else doPlayerRemovePremiumDays(cid, tonumber(days)) doPlayerAddPremiumDays(toPlayer, tonumber(days)) doPlayerSendTextMessage(cid, 27, "You have sucessfully transfered ".. days .." premium days.") doPlayerSendTextMessage(toPlayer, 27, getCreatureName(cid).." has transfered "..days.." premium days for your account.") end end return true end <talkaction words="!transfere" event="script" value="transferirprem.lua"/> Link para o comentário Compartilhar em outros sites More sharing options...
0 Lucasyeah 1 Postado Novembro 3, 2013 Autor Share Postado Novembro 3, 2013 (editado) Omega, seu script no caso transferiria dias premium, certo? então, to precisando que o script transfira Points! (premium POINTS, aqueles que compram itens no shop do gesior). Vou tentar adaptar, se puder me ajudar. A função seria essa: getAccountPoints(cid) Editado Novembro 3, 2013 por Lucasyeah Link para o comentário Compartilhar em outros sites More sharing options...
0 Kluivert 142 Postado Novembro 3, 2013 Share Postado Novembro 3, 2013 Omega, seu script no caso transferiria dias premium, certo? então, to precisando que o script transfira Points! (premium POINTS, aqueles que compram itens no shop do gesior). Vou tentar adaptar, se puder me ajudar. Creio que isso so seja possivel no site mano! Link para o comentário Compartilhar em outros sites More sharing options...
0 Lucasyeah 1 Postado Novembro 3, 2013 Autor Share Postado Novembro 3, 2013 (editado) Sim Kluimaster, mas preciso do talkactions, eu consegui montar um script 90% funcional, porém ele transfere valores negativos, exemplo: !transfere Druidzinho, -3. Dai o Druidzinho fica com -3 points e quem usou o comando ganha +3 pontos de graça. Creio que alguém conseguirá me ajudar. Edit -------------- Consegui adaptar sua Script Omega, porém ta com o mesmo problema da minha, o player pode usar o comando com valores negativos function onSay(cid, words, param) local param = string.explode(param, ',') local pts = param[2] local toPlayer = param[1] local player_prem_pts = getAccountPoints(cid) if not pts or not toPlayer then doPlayerSendCancel(cid, "You need to specify a valid online player and premium days to transfer premium days.") elseif not tonumber(pts) then doPlayerSendCancel(cid, "You have to specify a valid number of premium days to transfer.") elseif player_prem_pts < tonumber(pts) then doPlayerSendCancel(cid, "You don't have the specified premium days to transfer.") else toPlayer = getCreatureByName(toPlayer) if not isPlayer(toPlayer) then doPlayerSendCancel(cid, "You have to specify a valid online player to transfer premium days.") else doAccountRemovePoints(cid, tonumber(pts)) doAccountAddPoints(toPlayer, tonumber(pts)) doPlayerSendTextMessage(cid, 27, "You have sucessfully transfered ".. pts .." premium days.") doPlayerSendTextMessage(toPlayer, 27, getCreatureName(cid).." has transfered "..pts.." premium days for your account.") end end return true end Exemplo: ADM -> !transfere Druidzinha, -6 17:18 You have sucessfully transfered -6 premium points. Druidzinha -> 17:18 [ADM] has transfered -6 premium points for your account. 17:19 Sua conta possui -6 points. Saiba mais sobre points no site...... Editado Novembro 3, 2013 por Lucasyeah Link para o comentário Compartilhar em outros sites More sharing options...
0 Omega 377 Postado Novembro 3, 2013 Share Postado Novembro 3, 2013 Omega, seu script no caso transferiria dias premium, certo? então, to precisando que o script transfira Points! (premium POINTS, aqueles que compram itens no shop do gesior). Vou tentar adaptar, se puder me ajudar. A função seria essa: getAccountPoints(cid) Abra seu banco de dados e me diga em que tabela essa coluna fica. Por exemplo, a coluna premium time fica na tabela accounts. Me diga onde essa coluna premium points fica. E o nome exato das duas (tabela e coluna) Link para o comentário Compartilhar em outros sites More sharing options...
0 Maenilse 86 Postado Novembro 3, 2013 Share Postado Novembro 3, 2013 se for o p'points v1.0 daqui do xtibia memo. a coluna de onde fica no MySQL, é a p_points. eu uso o msm sistema. Link para o comentário Compartilhar em outros sites More sharing options...
0 Lucasyeah 1 Postado Novembro 3, 2013 Autor Share Postado Novembro 3, 2013 (editado) Omega a coluna premium_points fica na tabela accounts. Atualiza a pagina ai, viu sobre os valores negativos ? Editado Novembro 3, 2013 por Lucasyeah Link para o comentário Compartilhar em outros sites More sharing options...
0 Omega 377 Postado Novembro 3, 2013 Share Postado Novembro 3, 2013 Hauhauhaua, então tava dando pra roubar points dos outros? function onSay(cid, words, param) local param = string.explode(param, ',') local pts = param[2] local toPlayer = param[1] local player_prem_pts = getAccountPoints(cid) if not pts or not toPlayer then doPlayerSendCancel(cid, "You need to specify a valid online player and premium days to transfer premium days.") elseif not tonumber(pts) then doPlayerSendCancel(cid, "You have to specify a valid number of premium days to transfer.") elseif player_prem_pts < tonumber(pts) then doPlayerSendCancel(cid, "You don't have the specified premium days to transfer.") elseif tonumber(pts) <= 0 then doPlayerSendCancel(cid, "You have to specify a number of days higher than 0 to transfer.") else toPlayer = getCreatureByName(toPlayer) if not isPlayer(toPlayer) then doPlayerSendCancel(cid, "You have to specify a valid online player to transfer premium days.") else doAccountRemovePoints(cid, tonumber(pts)) doAccountAddPoints(toPlayer, tonumber(pts)) doPlayerSendTextMessage(cid, 27, "You have sucessfully transfered ".. pts .." premium days.") doPlayerSendTextMessage(toPlayer, 27, getCreatureName(cid).." has transfered "..pts.." premium days for your account.") end end return true end Link para o comentário Compartilhar em outros sites More sharing options...
0 Lucasyeah 1 Postado Novembro 3, 2013 Autor Share Postado Novembro 3, 2013 Opa, a script aparentemente está 100% funcional sem bugs, vou fazer ,mais alguns testes e logo coloco no meu servidor. Te agradeço, Omega! Link para o comentário Compartilhar em outros sites More sharing options...
0 Omega 377 Postado Novembro 4, 2013 Share Postado Novembro 4, 2013 Tópico movido para a seção de dúvidas e pedidos resolvidos. Fico contente em ajudar, qualquer problema com esse script, avisa aí. Link para o comentário Compartilhar em outros sites More sharing options...
0 Lucasyeah 1 Postado Janeiro 18, 2014 Autor Share Postado Janeiro 18, 2014 Olá Omega, queria te perguntar se tem como adicionar +1 função nesse script? Se possível gostaria que o script gerasse uma Log.txt de todos os players que utilizaram o comando !transfere. e a quantidade de pontos transferida... se tivesse como mostrar o dia e a hora que isso ocorreu. Tem como fazer isso ou é impossível? Link para o comentário Compartilhar em outros sites More sharing options...
0 yoh 3 Postado Fevereiro 19, 2014 Share Postado Fevereiro 19, 2014 Adicione em 050-function function getPlayerVipPoints(cid) local Info = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = " .. getPlayerAccountId(cid) .. "") if Info:getID() ~= LUA_ERROR then local Points= Info:getDataInt("premium_points") Info:free() return Points end return LUA_ERROR end function doPlayerAddVipPoints(cid, points) local dif = getPlayerVipPoints(cid) + points if dif >= 0 then db.query("UPDATE `accounts` SET `premium_points` = `premium_points` + " .. points .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";") return TRUE end return FALSE end function doPlayerRemoveVipPoints(cid, points) local dif = getPlayerVipPoints(cid) - points if dif >= 0 then db.query("UPDATE `accounts` SET `premium_points` = `premium_points` - " .. points .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";") return TRUE end return FALSE end Adione em Talkactions/scripts transfer.lua function onSay(cid, words, param, channel) local t = param:explode(",") local player = getPlayerByName(t[1]) local m = tonumber(t[2]) if param == "" then return doPlayerSendCancel(cid, "Command requires param.") elseif not isPlayer(player) then return doPlayerSendCancel(cid, "Sorry, not possible.") end if(not m) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Valor nao Digitado.\n Ex: /transfer "..getPlayerName(cid)..", 20") return TRUE end if getPlayerVipPoints(cid) < m then return doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce nao tem pontos suficiente!!") end doPlayerRemoveVipPoints(cid, m) doPlayerAddVipPoints(player, m) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Voce Transferiu "..m.." pontos para "..getPlayerName(player)..".") f = io.open("data/logs/Pontos.txt", "a+") f:write("Player: "..getPlayerName(cid).." transferiu "..m.." pontos para "..getPlayerName(player).."\n\n----------------------------------------------------------\n") f:close() return true end XML : <talkaction words="/transfer" event="script" value="transfer.lua"/> Eu Utilizo isso no meu Servidor Funciona 100% e sem nenhum Bug ! coyotestark45 reagiu a isso 1 Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Lucasyeah 1
TFS, 860.
Olá pessoal, venho aki pedir um script bem legal, que será bastante útil para grande maioria (eu acho).
O script é o seguinte, uma talkactions que transfere premium points de um player para outro.
Exemplo:
Quem irá receber
\/
!transfere Druidzinho, 3 <~ Quantidade de pontos que irá transferir
Os premium points irão para a account do player Druidzinho...
Se o player que fizer o comando não tiver a quantidade necessária de premium points para transferir o script manda msg:
Você não tem isso para transferir.
Meu sistema de premium points é normal, uso Mysql com a tabela de premium points!
Quem puder ajudar ae, agradeço e Curto
Link para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados