Ir para conteúdo
  • 0

[Pedido] Vip Coin


naneer

Pergunta

Entao, é o seguinte, preciso de um npc q dê vip para o player assim com um item 'vip coin' e de um sistema vip tambem! haha!

 

1 vip coin = 1 dia d vip :). e assim sucessivamente.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Um sistema bom de VIP eh o do Mock , que eh este aqui :

 

Va na pasta do seu OT data/lib , copie e cole um arquivo .lua , e apague tudo que tem dentro renomeie para 049-vipsys e coloque isso dentro :

 

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

 

 

Qual eh o ID da VipCoin ? So assim poderei ajudar para comprar vip .

Editado por StremeMakky
Link para o comentário
Compartilhar em outros sites

  • 0

haha! é até um trabalho a menos a criação do npc. :) - pode ser sim, porém creio q esse system vip do mock ai esteja faltando algo neh? para eu executar na minha database assim e pans e os comandos - addvip delvip e seevip =] , se puder, poste completo o system vip \z/ irá me economizar uns 3 dias procurando o tutorial completo haha! obg pela sua atenção. :)

Link para o comentário
Compartilhar em outros sites

  • 0

Eu so coloquei o sistema mesmo , aqui vai o resto :

 

Lembrando : para 10 dias vip , voce paga 30 gold nuggets ( como voce pediu ) e para 30 dias vip , voce paga 50 gold nuggets ( como voce pediu ) .

 

Va na pasta do seu OT data/talkactions/talkactions.xml e adicione na linha dos players isso :

 

<talkaction words="!vipdays;!comprarvip30" script="vip30.lua"/>

<talkaction words="!comprarvip10" script="vip10.lua"/>

 

Agora va em scripts , copie e cole um arquivo .lua , apague tudo que esta dentro e renomeie para vip10 , e coloque isso :

 

function onSay(cid, words, param)

if(words == "!comprarvip10") then

local price = 30

if doPlayerRemoveItem(cid, 2157, 30) == TRUE then

local days = 10

local daysvalue = days * 24 * 60 * 60

local storageplayer = getPlayerStorageValue(cid, 13540)

local timenow = os.time()

 

if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then

time = timenow + daysvalue

else

time = storageplayer + daysvalue

end

 

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.")

setPlayerStorageValue(cid, 13540, time)

 

local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60))

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você compro 10 dias de VIP e agora você têm ".. quantity .." dias de VIP.")

else

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem "..price.." barras de ouro.")

end

 

elseif(words == "!vipdays") then

local timenow = os.time()

local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60))

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. (quantity < 0 and 0 or quantity) .." dias de VIP.")

 

elseif(words == "/checkvip") then

if getPlayerAccess(cid) == 5 then

if not param then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")

end

 

local player = getPlayerByName(param)

local pid = getPlayerByNameWildcard(param)

if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.")

return TRUE

end

 

local timenow = os.time()

 

local quantity = math.floor((getPlayerStorageValue(player, 13540) - timenow)/(24 * 60 * 60))

doPlayerPopupFYI(cid, "O jogador tem ".. (quantity < 0 and 0 or quantity) .." dias de VIP no character.")

return TRUE

end

 

elseif(words == "/addvip") then

if getPlayerAccess(cid) == 5 then

local t = string.explode(param, ",")

if not t[2] then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")

end

 

local player = getPlayerByName(t[1])

local days = t[2]

local pid = getPlayerByNameWildcard(t[1])

if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.")

return TRUE

end

 

local daysvalue = days*3600*24

local storageplayer = getPlayerStorageValue(player, 13540)

local timenow = os.time()

 

local time = storageplayer <= 0 and (timenow + daysvalue) or (storageplayer + daysvalue)

 

doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Foram adicionados "..days.." dias de VIP.")

setPlayerStorageValue(player, 13540, time)

local quantity = math.floor((getPlayerStorageValue(player,13540) - timenow)/(3600*24))

doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Você comprou "..quantity.." dias de VIP.")

end

 

elseif(words == "/delvip") then

if getPlayerAccess(cid) == 5 then

local dec = MESSAGE_INFO_DESCR

if(param == "") then return TRUE,doPlayerSendTextMessage(cid,18,"Command param required.")end

local C,t = {},string.explode(param, ",")

C.pos = getPlayerPosition(cid)

C.uid = getCreatureByName(t[1])

C.time = ((tonumber(t[2]) == nil) and 1 or tonumber(t[2]))*3600*24 --Tempo da vip por dia.

C.days = (tonumber(t[2]) == nil) and 1 or tonumber(t[2]) --Dias de vip.

local pid = getPlayerByNameWildcard(t[1])

if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.")

return TRUE

end

 

if(getPlayerStorageValue(C.uid,13540) < C.time)then

doPlayerSendTextMessage(cid,dec,'O jogador '..t[1]..' não possui '..C.days..' dias de vip.')

else

doPlayerSendTextMessage(cid,dec,'Você removeu '..C.days..' dias de vip do player '..t[1]..'.')

setPlayerStorageValue(C.uid,13540,getPlayerStorageValue(C.uid,13540)-C.time)

end

doSendMagicEffect(C.pos, math.random(28,30))

end

end

 

return TRUE

end

 

Agora ainda na pasta scripts copie e cole um arquivo .lua , apague tudo que esta dentro e renomeie para vip30 e coloque isso :

 

function onSay(cid, words, param)

if(words == "!comprarvip30") then

local price = 50

if doPlayerRemoveItem(cid, 2157, 50) == TRUE then

local days = 30

local daysvalue = days * 24 * 60 * 60

local storageplayer = getPlayerStorageValue(cid, 13540)

local timenow = os.time()

 

if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then

time = timenow + daysvalue

else

time = storageplayer + daysvalue

end

 

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.")

setPlayerStorageValue(cid, 13540, time)

 

local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60))

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você compro 30 dias de VIP e agora você têm ".. quantity .." dias de VIP.")

else

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem "..price.." barras de ouro.")

end

 

elseif(words == "!vipdays") then

local timenow = os.time()

local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60))

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. (quantity < 0 and 0 or quantity) .." dias de VIP.")

 

elseif(words == "/checkvip") then

if getPlayerAccess(cid) == 5 then

if not param then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")

end

 

local player = getPlayerByName(param)

local pid = getPlayerByNameWildcard(param)

if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.")

return TRUE

end

 

local timenow = os.time()

 

local quantity = math.floor((getPlayerStorageValue(player, 13540) - timenow)/(24 * 60 * 60))

doPlayerPopupFYI(cid, "O jogador tem ".. (quantity < 0 and 0 or quantity) .." dias de VIP no character.")

return TRUE

end

 

elseif(words == "/addvip") then

if getPlayerAccess(cid) == 5 then

local t = string.explode(param, ",")

if not t[2] then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")

end

 

local player = getPlayerByName(t[1])

local days = t[2]

local pid = getPlayerByNameWildcard(t[1])

if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.")

return TRUE

end

 

local daysvalue = days*3600*24

local storageplayer = getPlayerStorageValue(player, 13540)

local timenow = os.time()

 

local time = storageplayer <= 0 and (timenow + daysvalue) or (storageplayer + daysvalue)

 

doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Foram adicionados "..days.." dias de VIP.")

setPlayerStorageValue(player, 13540, time)

local quantity = math.floor((getPlayerStorageValue(player,13540) - timenow)/(3600*24))

doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Você comprou "..quantity.." dias de VIP.")

end

 

elseif(words == "/delvip") then

if getPlayerAccess(cid) == 5 then

local dec = MESSAGE_INFO_DESCR

if(param == "") then return TRUE,doPlayerSendTextMessage(cid,18,"Command param required.")end

local C,t = {},string.explode(param, ",")

C.pos = getPlayerPosition(cid)

C.uid = getCreatureByName(t[1])

C.time = ((tonumber(t[2]) == nil) and 1 or tonumber(t[2]))*3600*24 --Tempo da vip por dia.

C.days = (tonumber(t[2]) == nil) and 1 or tonumber(t[2]) --Dias de vip.

local pid = getPlayerByNameWildcard(t[1])

if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.")

return TRUE

end

 

if(getPlayerStorageValue(C.uid,13540) < C.time)then

doPlayerSendTextMessage(cid,dec,'O jogador '..t[1]..' não possui '..C.days..' dias de vip.')

else

doPlayerSendTextMessage(cid,dec,'Você removeu '..C.days..' dias de vip do player '..t[1]..'.')

setPlayerStorageValue(C.uid,13540,getPlayerStorageValue(C.uid,13540)-C.time)

end

doSendMagicEffect(C.pos, math.random(28,30))

end

end

 

return TRUE

end

 

Se eh isso que estsva procurando , da REP+?

Editado por StremeMakky
Link para o comentário
Compartilhar em outros sites

  • 0

No caso eu ja tenho um sistema vip no meu ot mais quando uso o vip coin ele não mostra os days oque eu fasso ? sera q chegou os days vip ou nao?

Link para o comentário
Compartilhar em outros sites

  • 0
1 hora atrás, bangu2020 disse:

No caso eu ja tenho um sistema vip no meu ot mais quando uso o vip coin ele não mostra os days oque eu fasso ? sera q chegou os days vip ou nao?

precisava reviver um topico de 5 anos atrás?    :Cereal_Guy-min:

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...