Jump to content
Close
Tomarasdaf

Scripting Account Status Mostrando Os Dias De Premium Que Você Possui

Recommended Posts

Como o titulo já diz, é que quando você logue sua conta e aparecer a lista de personagens mostrar quantos dias de premium account te resta, no caso ficaria assim, em Account Status se eu comprasse uma premium de 10 dias ia ficar Account Status: 10 Dia De Premium Account e em Free Account quando você comprasse uma premium iria ficar Premium Account obvio, a cada dia que se passasse o número ia diminuindo até os dias acabar e quando os dias acabasse iria mudar de Premium Account para Free Account. Eu não sei onde que fica meu sistema de premium, mais vou deixar 2 arquivos ai em baixo que eu acho que sejam eles.

image.thumb.png.b1491b3eb6cef90c426b523cc7ddc964.png

 

Arquivos Localizados Na Pasta Lib

048-ppoints.lua

Spoiler
Spoiler

function getAccountPoints(cid)
local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'')
if(res:getID() == -1) then
return false
end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end

function doAccountAddPoints(cid, count)
return db.query("UPDATE `accounts` SET `premium_points` = '".. getAccountPoints(cid) + count .."' WHERE `name` ='"..getPlayerAccount(cid).."'")
end

function doAccountRemovePoints(cid, count)
return db.query("UPDATE `accounts` SET `premium_points` = '".. getAccountPoints(cid) - count .."' WHERE `name` ='"..getPlayerAccount(cid).."'")
end

 

049-vipsys.lua

Spoiler

vip = {
   name = "Vip system";
   author = "Mock";
   version = "1.0.0.0";
   query="ALTER TABLE `accounts` ADD `vip_time` INTEGER";
   query2="ALTER TABLE `accounts` ADD `vip_time` INT(15) NOT NULL"
}

function vip.setTable()
   dofile('config.lua')
   if sqlType == "sqlite" then
       db.executeQuery(vip.query)
   else
        db.executeQuery(vip.query2)
   end
end

function vip.getVip(cid)
         assert(tonumber(cid),'Parameter must be a number') 
         if isPlayer(cid) == FALSE then error('Player don\'t find') end; 
         ae =  db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..getPlayerAccount(cid).."';")
         if ae:getID() == -1 then
            return 0
         end

local retee = ae:getDataInt("vip_time") or 0
ae:free()
         return retee
end

function vip.getVipByAcc(acc)
         assert(acc,'Account is nil')
         local a = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..acc.."';")
         if a:getID() ~= -1 then
             return a:getDataInt("vip_time") or 0, a:free()
         else
             error('Account don\'t find.')
         end
end

function vip.setVip(cid,time)
         dofile("config.lua")
         assert(tonumber(cid),'Parameter must be a number')
         assert(tonumber(time),'Parameter must be a number')
         if isPlayer(cid) == FALSE then error('Player don\'t find') end; 
         db.executeQuery("UPDATE `"..sqlDatabase.."`.`accounts` SET `vip_time` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='".. getPlayerAccount(cid).."';")
end

function vip.getVipByAccount(acc)
         assert(acc,'Account is nil')
         return db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..acc.."';"):getDataInt("vip_time") or 0
end                                      

function vip.hasVip(cid)
         assert(tonumber(cid),'Parameter must be a number')
         if isPlayer(cid) == FALSE then return end;
         local t = vip.getVip(cid) or 0
         if os.time(day) < t then
            return TRUE
         else
            return FALSE
         end
end

function vip.hasVips(cid)
         assert(tonumber(cid),'Parameter must be a number')
         if isPlayer(cid) == FALSE then return end;
         local t = vip.getVip(cid)
         if os.time(day) < t then
            return TRUE
         else
            return FALSE
         end
end

function vip.accountHasVip(acc)
         assert(acc,'Account is nil')
         if os.time() < vip.getVipByAccount(acc) then
            return TRUE
         else
            return FALSE
         end
end
function vip.getDays(days)
   return (3600 * 24 * days)
end

function vip.addVipByAccount(acc,time)
   assert(acc,'Account is nil')
   assert(tonumber(time),'Parameter must be a number')
   local a = vip.getVipByAcc(acc)
   a = os.difftime(a,os.time())
   if a < 0 then a = 0 end;
   a = a+time
   return vip.setVipByAccount(acc,a)
end

function vip.setVipByAccount(acc,time)
         dofile("config.lua")
         assert(acc,'Account is nil')
         assert(tonumber(time),'Parameter must be a number')
         db.executeQuery("UPDATE `accounts` SET `vip_time` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='"..acc.."';")
         return TRUE
end

function vip.returnVipString(cid)
   assert(tonumber(cid),'Parameter must be a number')
   if isPlayer(cid) == TRUE then
      return os.date("%d %B %Y %X ", vip.getVip(cid))
   end
end

 





Share this post


Link to post
Share on other sites

@Emanueldk É so deixar no config.lua

freePremium = false

 

E no caso do shop voce cria uma oferta que de a premium desejada ou voce pode adicionar manualmente pelo phpmyadmin os dias premium.





Share this post


Link to post
Share on other sites
13 minutos atrás, Mazarati disse:

@Emanueldk É so deixar no config.lua

freePremium = false

 

E no caso do shop voce cria uma oferta que de a premium desejada ou voce pode adicionar manualmente pelo phpmyadmin os dias premium.

 

eu acho que você nunca fez isso :( assim que você coloca freePremium = false, ele deixa de ser Gratis Premium Account para ficar Free account e quando você coloca uma oferta de premium no shop assim que você compra ele não mostra no Account Status





Share this post


Link to post
Share on other sites

@Emanueldk O false deixa free account para poder colocar os dias premium... para poder adicionar uma oferta no shop pro player comprar os dias se nao é essa a questao qual é? Seja especifico se no caso voce baixou um site que apareça o status account vip troque para aparecer apenas os de premium account tirando isso se nao esta dando certo voce esta fazendo errado.

Seu problema pode estar no envio da oferta para o char o que é um script que tem no forum ja resolve e como eu disse teste no phpmyadmin colocando dias premium


Edited by Mazarati (see edit history)



Share this post


Link to post
Share on other sites

@Mazarati bllz, vou testar aqui





Share this post


Link to post
Share on other sites

@Emanueldk a distro envia para o client a quantidade de dias vip, e então na hora do login é mostrado, entretanto está configurado para o premium system do próprio servidor e não o alternativo que você usa, para que seja enviado o seu, será necessário que você altere no código fonte do seu servidor a função que envia os dias premiums de sua conta, será necessário que você retorne o valor do vip system alternativo que você está usando!



Não esqueçam de me marca quando eu responder em seu tópico, assim recebo a notificação e volto em seu tópico.
Não dou suporte em mensagem privada ou fora do fórum.
Não esqueça de reputa e agradecer a pessoa que lhe ajudou em algum tópico seu.
"Só ajudo quem eu vejo ajudando." xD

Não esqueça de reputa alguém que lhe ajudou ou tentou lhe ajudar, e agradeça com suas palavras. Seja grato por alguém ter lhe ajudado ou tentado lhe ajudar!

O coitadismo e o conformismo potencializado é a arte de sentir compaixão de si mesmo para você não utilize ferramentas capazes de transformar
sua história!!

-- Augusto Cury

 

                                                               ezgif-1-98aab239f3.gif




Share this post


Link to post
Share on other sites
2 minutos atrás, KotZletY disse:

@Emanueldk a distro envia para o client a quantidade de dias vip, e então na hora do login é mostrado, entretanto está configurado para o premium system do próprio servidor e não o alternativo que você usa, para que seja enviado o seu, será necessário que você altere no código fonte do seu servidor a função que envia os dias premiums de sua conta, será necessário que você retorne o valor do vip system alternativo que você está usando!

 

@KotZletY PROGRESSO!! mais como eu faço tudo isso? que código eu tenho que alterar, está em algum desses arquivos que eu deixei no tópico? se puder me da um empurrão. é de grande importância...

@Mazarati 

@KotZletY 

eu achei um script de um item que faz o Account Status funcionar, mais assim que você usa o item você não ganha os atributos que vem quando você compra a premium pelo site, ele apenas mostra quantos dias você tem no Account Status, como que eu faço para implementar a função do item que faz o Account Status funcionar no script de premium do site? ou implementar a função de premium do site no script do item.

image.thumb.png.ee70d4f3d635cbcc9da26941914b66d1.png

script do item

Spoiler

function onUse(cid, item, frompos, item2, topos)
local config={
dias="15"
}
doPlayerAddPremiumDays(cid, config.dias)
doPlayerSendTextMessage(cid,22,"Voce ganhou 15 dias de premium account.")
doRemoveItem(item.uid,1) 
return TRUE
end

 





Share this post


Link to post
Share on other sites

@Emanueldk Assim ele nao funciona quando voce usa spells que sejam premium ou algum piso com script apenas para premium? Ou o problema é ele nao mostrar os dias premium no site?





Share this post


Link to post
Share on other sites

@Mazarati ele não mostra os dias de premium no site e você não passa em um tile que apenas donate podem passar

script do tile

Spoiler

function onStepIn(cid, item, position, fromPosition)

local tileConfig = {
    kickPos = fromPosition, kickEffect = CONST_ME_POFF,
    kickMsg = "Você não e um player donate para virar acesse: http://144.217.170.205/",
    enterMsg = "Bem Vindo a area donate, agradecemos a sua doação!",
    enterEffect = CONST_ME_MAGIC_RED,
}

if isPlayer(cid) == true then
if vip.hasVip(cid) == FALSE then
        doTeleportThing(cid, tileConfig.kickPos)
        doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect)
        doPlayerSendCancel(cid, tileConfig.kickMsg)
        return
    end
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tileConfig.enterMsg)
        doSendMagicEffect(position, tileConfig.enterEffect)
        return true
end
end

 

e o nome VIP não fica saindo do seu personagem igual saia com o premium comprado do site

script do nome VIP que sai do player assim que ele fica premium account

Spoiler

local rnd = {"VIP"}

function onLogin(cid)
    if not isPlayer(cid) then return true end
    sendEffect(cid)
    registerCreatureEvent(cid, "AdvEffect")
   return true
end

function sendEffect(cid)
    if isCreature(cid) then
        if vip.hasVip(cid) == true then
        pos = getThingPos(cid)
        doSendAnimatedText(pos, rnd[math.random(#rnd)], 251)
        addEvent(sendEffect, 5200,cid)
        end
    end
end

 





Share this post


Link to post
Share on other sites

@Emanueldk cara, essa função que você encontrou faz parte do premium system "do próprio servidor", a que você usa é por storages, é própria.

 

Em protocollogin.cpp procure por:

output->put<uint16_t>(account.premiumDays);

Essa parte é responsável por enviar a quantidade de dias premiums que o player tem, ele está retornando a do premium system do próprio servidor.

Agora basta você retornar o dias vip do seu sistema e passar como parâmetro de put no lugar de account.premiumDays.

 

Agora é por sua conta!



Não esqueçam de me marca quando eu responder em seu tópico, assim recebo a notificação e volto em seu tópico.
Não dou suporte em mensagem privada ou fora do fórum.
Não esqueça de reputa e agradecer a pessoa que lhe ajudou em algum tópico seu.
"Só ajudo quem eu vejo ajudando." xD

Não esqueça de reputa alguém que lhe ajudou ou tentou lhe ajudar, e agradeça com suas palavras. Seja grato por alguém ter lhe ajudado ou tentado lhe ajudar!

O coitadismo e o conformismo potencializado é a arte de sentir compaixão de si mesmo para você não utilize ferramentas capazes de transformar
sua história!!

-- Augusto Cury

 

                                                               ezgif-1-98aab239f3.gif




Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

×
×
  • Create New...