Ir para conteúdo
  • 0

[ Scripting Geral ] Alterar Vocação Quando Pagar Vip


Godfather

Pergunta

Eu queria que quando um player comprasse vip, a sua vocation seria mudada automaticamente e quando os dias de vip acabassem a vocation voltaria ao normal.

Esse é o script que eu tenho:

 

-- Script SYtem vip 1.0 --

function onSay(cid, words, param)
if(words == "!buyvip") then
local price = 100
if doPlayerRemoveItem(cid, 2159, 100) == 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ê tem ".. quantity .." dias de VIP restantes.")
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de "..price.." Scarab Coins para colocar vip.")
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 no seu character.")

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]
if not isPlayer(player) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player "..player.." not found.")
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 no seu character.")
setPlayerStorageValue(player, 13540, time)
local quantity = math.floor((getPlayerStorageValue(player,13540) - timenow)/(3600*24))
doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Você tem "..quantity.." dias de VIP restantes.")
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.

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

 

Aqui estão as vocations/id:

ID 9 = vip sorcerer

ID 10 = vip druid

ID 11 = vip paladin

ID 12 = vip knight

 

Será que alguem poderia fazer isso pra mim? :wink_smile:

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

eu não consegui colocar por tempo só de ele ganhar as vocaçoes...

amanha vejo to indo dormi

 

-- Script SYtem vip 1.0 --

 

function onSay(cid, words, param)

if(words == "!buyvip") then

 

 

local price = 100

if doPlayerRemoveItem(cid, 2159, 100) == 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

 

if getPlayerVocation(cid) == 1 or getPlayerVocation(cid) == 5 then

doPlayerSetVocation(cid, 9)

end

 

if getPlayerVocation(cid) == 2 or getPlayerVocation(cid) == 6 then

doPlayerSetVocation(cid, 10)

end

 

 

if getPlayerVocation(cid) == 3 or getPlayerVocation(cid) == 7 then

doPlayerSetVocation(cid, 11)

end

 

if getPlayerVocation(cid) == 4 or getPlayerVocation(cid) == 8 then

doPlayerSetVocation(cid, 12)

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ê tem ".. quantity .." dias de VIP restantes.")

else

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de "..price.." Scarab Coins para colocar vip.")

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 no seu character.")

 

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]

if not isPlayer(player) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player "..player.." not found.")

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 no seu character.")

setPlayerStorageValue(player, 13540, time)

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

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

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.

 

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

 

1(Sorcerer) e 5 (Master Sorcerer) vao para classe = 9 (Vip sorcerer)

2 (Druid) e 6(Elder Druid) vão para classe = 10 (vip druid)

3 (paladin) e 7(Royal paladin) vão para classe = 11 (vip paladin)

4 (knight) e 8(Elite Knight) vão para classe = 12 (Vip Knight)

 

certo?

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

  • 0

@Nicekid

quando eu compro a vip, a vocation muda certinho, mas quando saio da conta e entro de novo, volta para a vocation normal...

Voc~e sabe o que pode estar acontcendo?

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

  • 0

@Nicekid

quando eu compro a vip, a vocation muda certinho, mas quando saio da conta e entro de novo, volta para a vocation normal...

Voc~e sabe o que pode estar acontcendo?

 

Isso é um simples bug,seria como você desse a vocação vip a um player x pelo sql e ele não reconhecesse in game ou vice verssa. Resumindo o sql não esta aceitando a mudança de vocação. Se você colocar para comprar a vocação no npc jhonny o bug acaba más ai não sei como pode relacionar o sistema de !buyvip com o npc jhonny...Talvez se desse para liberar a compra de promote para apenas players com dias de VIP seria uma boa.

Link para o comentário
Compartilhar em outros sites

  • 0

@Rexis

isso é um simples bug,seria como você desse a vocação vip a um player x pelo sql e ele não reconhecesse in game ou vice verssa. Resumindo o sql não esta aceitando a mudança de vocação. Se você colocar para comprar a vocação no npc jhonny o bug acaba más ai não sei como pode relacionar o sistema de !buyvip com o npc jhonny...Talvez se desse para liberar a compra de promote para apenas players com dias de VIP seria uma boa.

 

Eu tenho um npc que vende promotion Vip na area Vip, mas é trabalhoso ficar retirando a promotion no sqlite toda vez que acabar a Vip de um player. Por isso que eu precisava do script...

Bom, mesmo assim fico muito grato à vocês!

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...