Ir para conteúdo
  • 0

Vip Por Item


cs007

Pergunta

Olá pessoal da xtibia é o seguinte meu GESIOR não está entregando as VIPs pelo site e não consegui resolver esse problema, tem como fazer um script que faça com que um item entregue a VIP? o meu sistema de vip e vip na acc toda... não é vip por storage é por Tile. valeu

 

Ajuda?

Link para o comentário
Compartilhar em outros sites

  • Respostas 32
  • Created
  • Última resposta

Top Posters For This Question

Posts Recomendados

  • 0

Use esta talkaction, se não souber como usa posta ai que eu explico.

-- Script SYtem vip 1.0 --
function onSay(cid, words, param)
if(words == "!comprarvip10") then
local price = 50
if doPlayerRemoveItem(cid, 6527, 50) == TRUE then
local days = 10
local daysvalue = days * 24 * 60 * 60
local storageplayer = getPlayerStorageValue(cid, 55555)
local timenow = os.time()
if getPlayerStorageValue(cid, 55555) - 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, 55555, time)
local quantity = math.floor((getPlayerStorageValue(cid, 55555) - 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.." moedas vip.")
end
elseif(words == "!vipdays") then
local timenow = os.time()
local quantity = math.floor((getPlayerStorageValue(cid, 55555) - 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, 55555) - 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, 55555)
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, 55555, time)
local quantity = math.floor((getPlayerStorageValue(player,55555) - 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,55555) < 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,55555,getPlayerStorageValue(C.uid,55555)-C.time)
end
doSendMagicEffect(C.pos, math.random(28,30))
end
end
return TRUE
end

Link para o comentário
Compartilhar em outros sites

  • 0

Eu consigo adicionar a vip com o ADM tranquilo, só que uso sistema de Pontos no site, e fica meio impossível ficar adicionando vip com o ADM. Eu preciso mesmo de um action. flws

Link para o comentário
Compartilhar em outros sites

  • 0

Se seu sistema VIP é esse: Vip System By Account, então:

 


local function getPlayerPremiumPoints(cid)
   local result, ret = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = ".. getPlayerAccountId(cid) ..";")
   if(result:getID() == -1 then
       return false
   end

   ret = result:getDataInt("premium_points")
   result:free()
   return ret
end

local VIP_PRICE = 10 -- Quantidade de pontos.
local VIP_DAYS = 30 -- Quantidade de dias a ser adicionada.

function onUse(cid, item, fromPosition, itemEx, toPosition)
   if getPlayerPremiumPoints(cid) < VIP_PRICE then
       return doPlayerSendCancel(cid, "Você precisa de ".. VIP_PRICE .." premium points.")
   end
   addVipDays(cid, 30)
   db.executeQuery("UPDATE `accounts` SET `premium_points` = ".. getPlayerPremiumPoints(cid) - VIP_PRICE .." WHERE `id` = ".. getPlayerAccountId(cid) ..";")
   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você comprou ".. VIP_DAYS .." dias de VIP. Obrigado.")
   return true
end

 

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Em actions.xml

 

<action itemid="ID_DO_ITEM" event="script" value="buyvipitem.lua"/>

 

E o script você coloca na pasta data/actions/scripts em uma arquivo chamado buyvipitem.lua

Link para o comentário
Compartilhar em outros sites

  • 0

tenta isso.

vai em data>action>scripts crie um arquivo sistemavip.lua e cole isso dentro.


function onUse(cid, item, fromPosition, itemEx, toPosition)

local config={
removeOnUse = "yes" -- remover quando usar ("yes" or "no")
}

local days = 30 -- coloque os dias que serão a VIP!
local daysvalue = days * 24 * 60 * 60
local storageplayer = getPlayerStorageValue(cid, 13500)
local timenow = os.time()

if getPlayerStorageValue(cid, 13500) - 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, 13500, time)
local quantity = math.floor((getPlayerStorageValue(cid, 13500) - timenow)/(24 * 60 * 60))
doSendMagicEffect(getPlayerPosition(cid), math.random(28,30)) 
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.")
if (config.removeOnUse == "yes") then
doRemoveItem(item.uid, 1)
end

return TRUE
end

 

agora vai em actions.xml e cole isso

 

<action itemid="ID DO ITEN" script="sistemavip.lua"/>

 

AJUDEI?REP+

Link para o comentário
Compartilhar em outros sites

  • 0

Esse de cima é para sistema vip por storage, se o seu for o Vip System by Account mesmo, tente usando esse abaixo.

 

Em data/actions/scripts crie um arquivo.lua e cole isto dentro:

 

function onUse(cid, item, position, fromPosition, itemEx, toPosition)
local acc = getAccountIdByName(getCreatureName(cid))
if acc ~= 0 then
addVipDaysByAccount(acc, 2)
doCreatureSay(cid, "Você ganhou 2 dia de VIP!", TALKTYPE_ORANGE_1)
end
return true
end

 

É só editar onde tem "2" em negrito, pela quantidade de dias de vip que será adicionada.

 

Em actions.xml cole a tag: <action itemid=ID_DO_ITEM" script="NOMEDOSEUARQUIVO.lua"/>

 

Vlw, espero ter ajudado.

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

  • 0

lamento mas nenhum dos 2 funcionaram =/

 

@Leoxtibia seu está com erro mano

 

@lfelipebsilva05 seu deu a VIP mais parece que fez igual meu site está fazendo entregando a VIP como se fosse uma storage meu sistema de vip e aquele do VIP_Days flws

Link para o comentário
Compartilhar em outros sites

  • 0

O erro é pq tava em negrito dentro do code. Daí tinha uns "b".Aqui está:

 

function onUse(cid, item, position, fromPosition, itemEx, toPosition)

local acc = getAccountIdByName(getCreatureName(cid))

if acc ~= 0 then

addVipDaysByAccount(acc, 2)

doCreatureSay(cid, "Você ganhou 2 dia de VIP!", TALKTYPE_ORANGE_1)

end

return true

end

 

E é só editar onde tá o "2" pelos dias de vip que serão adicionados.

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

  • 0

Meu é vip por database talvez seja isso...

 

@Leoxtibia

 

Eu tinha removido o que tinha veio... mesmo assim está dando erro na função addVipDaysByAccount(acc, 2)

 

valeu

Link para o comentário
Compartilhar em outros sites


×
×
  • Criar Novo...