Ir para conteúdo
  • Cadastre-se

(Resolvido)Pedido, acabou o VIP foi pro templo


Ir para solução Resolvido por Wise,

Posts Recomendados

  • Moderador
  • Moderador

 

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 Donate 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 Donate restantes.")
if (config.removeOnUse == "yes") then
doRemoveItem(item.uid, 1)
end
 
return TRUE
end
Link para o post
Compartilhar em outros sites

Ah pera, tenho que editar

Cria um creaturescript, não sei se vai funfar, peguei como base um que o luanluciano fez:

local STORAGE_PREMIUM = 13500
local TEMPLE_ID = 1
local storage2 = 13501

function onLogin(cid)
	local player = Player(cid)

	if player:getStorageValue(STORAGE_PREMIUM) < 1 and player:getStorageValue(storage2) == 1 then
                player:setStorageValue(storage2, 0)
		player:teleportTo(Town(TEMPLE_ID):getTemplePosition())
		player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
		player:setTown(TEMPLE_ID)
		player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Sua vip acabou!")
	end

	return true
end

E muda o seu vip:

function onUse(cid, item, fromPosition, itemEx, toPosition)
local storage2 = 13501
 
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 Donate no seu character.")
setPlayerStorageValue(cid, 13500, time)
setPlayerStorageValue(cid, storage2, 1)
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 Donate restantes.")
if (config.removeOnUse == "yes") then
doRemoveItem(item.uid, 1)
end
 
return TRUE
end

Testa isso ai.

Editado por rogaforyn2 (veja o histórico de edições)

Life is so meaningless, there is nothing worth a smile
So goodbye, I'll miss you

 

 

sugestões?

 

 

Link para o post
Compartilhar em outros sites
  • Moderador

Não


Só no creaturescripts.xml.


Você colocou assim no creaturescripts? O nome não importa

<event type="login" name="SemVip" script="acabouvip.lua" />

obs: Tu ta usando TFS > 1.0+ né

Editado por rogaforyn2 (veja o histórico de edições)

Life is so meaningless, there is nothing worth a smile
So goodbye, I'll miss you

 

 

sugestões?

 

 

Link para o post
Compartilhar em outros sites
  • Moderador
Link para o post
Compartilhar em outros sites

Em creaturescripts/creaturescripts.xml adiciona á tag:

<event type="login" name="FimVip" event="script" value="fimvip.lua"/>

 

Em creaturescripts/scripts/fimvip.lua adicione:

function onLogin(cid)
local temple = { x =655, y = 1014, z = 7}
if vip.hasVip(cid) == true then
if getPlayerStorageValue(cid,13500) ~= 1 then
setPlayerStorageValue(cid,13500)
end
else
if getPlayerStorageValue(cid,13500) == 1 then
doTeleportThing(cid, temple)
doPlayerSendTextMessage(cid, 22, "Your VIP Time over!")
db.executeQuery("UPDATE `accounts` SET `vip_time` = 0 WHERE `id` = ".. getAccountIdByName(getPlayerName(cid)) ..";")
setPlayerPromotionLevel(cid, 1)
setPlayerStorageValue(cid, 13500, 0)
end
end
return true
end

E no login.lua adicione a tag: 

registerCreatureEvent(cid, "FimVip")
Editado por p e o p l e (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@p e o p l e

Ótimo ver você ajudando, só uma coisa..
Não precisa criar uma tabela com a posição do templo do creature id, faz algo mais clean direto na função:

doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites
  • Moderador

 

Em creaturescripts/creaturescripts.xml adiciona á tag:

<event type="login" name="FimVip" event="script" value="fimvip.lua"/>

 

Em creaturescripts/scripts/fimvip.lua adicione:

function onLogin(cid)
local temple = { x =655, y = 1014, z = 7}
if vip.hasVip(cid) == true then
if getPlayerStorageValue(cid,13500) ~= 1 then
setPlayerStorageValue(cid,13500)
end
else
if getPlayerStorageValue(cid,13500) == 1 then
doTeleportThing(cid, temple)
doPlayerSendTextMessage(cid, 22, "Your VIP Time over!")
db.executeQuery("UPDATE `accounts` SET `vip_time` = 0 WHERE `id` = ".. getAccountIdByName(getPlayerName(cid)) ..";")
setPlayerPromotionLevel(cid, 1)
setPlayerStorageValue(cid, 13500, 0)
end
end
return true
end

E no login.lua adicione a tag: 

registerCreatureEvent(cid, "FimVip")

 

Teria como me passar entao o seu actions?

 

@p e o p l e

Ótimo ver você ajudando, só uma coisa..

Não precisa criar uma tabela com a posição do templo do creature id, faz algo mais clean direto na função:

doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

Desculpe, não quero ser grosso, mas foi muito necessário isso, pois o meu possui o "templo donate" e o templo normal, obrigado mesmo assim por contribuir :)

UP

Link para o post
Compartilhar em outros sites

Teria como me passar entao o seu actions?

Desculpe, não quero ser grosso, mas foi muito necessário isso, pois o meu possui o "templo donate" e o templo normal, obrigado mesmo assim por contribuir :)

UP

 

Lembrando que não é nossa obrigação ajudar, fazemos isso por que gostamos, e NENHUM lugar está falando do "Templo Donate".

Para alterar também o templo, retira a linha.

doTeleportThing(cid, temple)

e substituia por 

doPlayerSetTown(cid, 1) -- 1 É o town que vai ser padrão.

E remova a linha

local pos = {x = 655, y = 1014, z = 7}
Editado por p e o p l e (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Eu gostaria de quando acabasse o VIP, automáticamente ele iria para o templo(pode ser ao logar).

Minha storage do VIP: 13500

A função vip.hasVip(cid) está em uso no seu servidor?

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites
  • Moderador
  • Solução

@moviebr
Esquece, era só pra eu entender o que o estagiário estava fazendo.
Criei um método que envolve outra storage key, possibilitando assim a identificação de um player com tempo de vip ativo/inativo.


autocheckvip.lua (data\creaturescripts\scripts):

local key = {13500, 53100} -- storages
local default = 1 -- default town id

function onLogin(cid)
    if getPlayerStorageValue(cid, key[1]) < os.time() and getPlayerStorageValue(cid, key[2]) > 0 then
        doPlayerSetTown(cid, default)
        setPlayerStorageValue(cid, key[2], -1)
        doTeleportThing(cid, getTownTemplePosition(default))
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Your VIP time is over.')
    end
    
    return true
end

function onLogout(cid)
    return getPlayerStorageValue(cid, key[1]) > os.time() and getPlayerStorageValue(cid, key[2]) < 1 and setPlayerStorageValue(cid, key[2], 1) or true
end




creaturescripts.xml (data\creaturescripts):

<event type="login" name="CheckLogin" event="script" value="autocheckvip.lua"/>
<event type="logout" name="CheckLogout" event="script" value="autocheckvip.lua"/>

Basta o player vip fazer logout 1 vez para que o resto execute perfeitamente.
Sugiro que remova a vip de todos os players ou que faça uso de uma nova storage key para evitar possíveis falhas na identificação do player vip ativo/inativo.

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites
  • Moderador

@moviebr

Esquece, era só pra eu entender o que o estagiário estava fazendo.

Criei um método que envolve outra storage key, possibilitando assim a identificação de um player com tempo de vip ativo/inativo.

autocheckvip.lua (data\creaturescripts\scripts):

local key = {13500, 53100} -- storages
local default = 1 -- default town id

function onLogin(cid)
    if getPlayerStorageValue(cid, key[1]) < os.time() and getPlayerStorageValue(cid, key[2]) > 0 then
        doPlayerSetTown(cid, default)
        setPlayerStorageValue(cid, key[2], -1)
        doTeleportThing(cid, getTownTemplePosition(default))
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Your VIP time is over.')
    end
    
    return true
end

function onLogout(cid)
    return getPlayerStorageValue(cid, key[1]) > os.time() and getPlayerStorageValue(cid, key[2]) < 1 and setPlayerStorageValue(cid, key[2], 1) or true
end

creaturescripts.xml (data\creaturescripts):

<event type="login" name="CheckLogin" event="script" value="autocheckvip.lua"/>
<event type="logout" name="CheckLogout" event="script" value="autocheckvip.lua"/>

Basta o player vip fazer logout 1 vez para que o resto execute perfeitamente.

Sugiro que remova a vip de todos os players ou que faça uso de uma nova storage key para evitar possíveis falhas na identificação do player vip ativo/inativo.

Vou testar aqui, caso funcione REP+ + Melhor Resposta. Em questão para remover o VIP, o servidor ainda está hospedado em minha casa, apenas eu jogo, por enquanto.

 

A 2 key, eu uso qual storage?

@moviebr

Esquece, era só pra eu entender o que o estagiário estava fazendo.

Criei um método que envolve outra storage key, possibilitando assim a identificação de um player com tempo de vip ativo/inativo.

autocheckvip.lua (data\creaturescripts\scripts):

local key = {13500, 53100} -- storages
local default = 1 -- default town id

function onLogin(cid)
    if getPlayerStorageValue(cid, key[1]) < os.time() and getPlayerStorageValue(cid, key[2]) > 0 then
        doPlayerSetTown(cid, default)
        setPlayerStorageValue(cid, key[2], -1)
        doTeleportThing(cid, getTownTemplePosition(default))
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Your VIP time is over.')
    end
    
    return true
end

function onLogout(cid)
    return getPlayerStorageValue(cid, key[1]) > os.time() and getPlayerStorageValue(cid, key[2]) < 1 and setPlayerStorageValue(cid, key[2], 1) or true
end

creaturescripts.xml (data\creaturescripts):

<event type="login" name="CheckLogin" event="script" value="autocheckvip.lua"/>
<event type="logout" name="CheckLogout" event="script" value="autocheckvip.lua"/>

Basta o player vip fazer logout 1 vez para que o resto execute perfeitamente.

Sugiro que remova a vip de todos os players ou que faça uso de uma nova storage key para evitar possíveis falhas na identificação do player vip ativo/inativo.

Te amo, sério.

 

Funcionou perfeitamente, porém gostaria de pedir outra coisinha... Ao acabar o VIP time, o town dele mude para "1". 

Editado por moviebr (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

gostaria de pedir outra coisinha... Ao acabar o VIP time, o town dele mude para "1".

Eu fiz isso, o id da town está na variável local default:

local default = 1 -- default town id

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites

Vou testar aqui, caso funcione REP+ + Melhor Resposta. Em questão para remover o VIP, o servidor ainda está hospedado em minha casa, apenas eu jogo, por enquanto.

 

A 2 key, eu uso qual storage?

Te amo, sério.

 

Funcionou perfeitamente, porém gostaria de pedir outra coisinha... Ao acabar o VIP time, o town dele mude para "1". 

 

Adicione

doPlayerSetTown(cid, 1) -- 1 É a town que o player viraria morador.

Antes da linha 

doTeleportThing(cid, getTownTemplePosition(default))

// Esquece pois não tinha visto a segunda página.

Editado por p e o p l e (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo