Ir para conteúdo
  • 0

[Ajuda] Problema Com P.a Trial, É Possivel Acumular


randal923

Pergunta

Bom, é minha primeira vez postando aqui, espero esta no lugar correto e etc. Hehe

 

Seguinte, meu ot da uma P.A Trial para o player quando ele ataca o seu primeiro bixo em rookguard, esta p.a é de 5 dias. Se ele criar na mesma conta outro char, e tentar acumular mais 5 dias, vai aparecer uma msg dizendo que não é possível porque a conta já é p.a. MAS se ele esperar passar os 5 dias de p.a, e criar outro char e atacar algum bixo, ele vai ganhar novamente mais 5 dias.

 

Alguém ai tem alguma ideia de como posso resolver isso? Esta desse jeito aqui:

 

 

function onAdvance(cid)

 

-- Trial Premium

if getPlayerStorageValue(cid, 30004) == -1 and getPlayerLevel(cid) == 1 and getPlayerPremiumDays(cid) == 0 then

doPlayerAddPremiumDays(cid, 5)

doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You have received 5 days of trial premium account, enjoy it!")

setPlayerStorageValue(cid, 30004, 1)

end

 

return TRUE

end

 

 

Obrigado!

 

 

Versão 7.72

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0
function onAdvance(cid)
local days = 5
if getPlayerStorageValue(cid, 30004) == -1 and getPlayerLevel(cid) == 1 and getGlobalStorageValue(getPlayerAccountId(cid)+450) - os.time() <= 0 then
doPlayerAddPremiumDays(cid, days)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You have received "..days.." days of trial premium account, enjoy it!")
setPlayerStorageValue(cid, 30004, 1)
setGlobalStorageValue(getPlayerAccountId(cid)+450, (os.time()+days*86400))
end
return true
end

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

  • 0

Opa vlwww cara!

 

Vou testar aqui, só to pensando como testar sem ter que esperar 1 dia todo hehe.

 

Desse jeito que você fez o cara pode acabar a p.a e criar outro char na mesma conta e ele não ganha certo? O que você fez ai exatamente? To aprendendo agora essas coisas, queria entender =)

 

Novamente, muito obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Opa vlwww cara!

 

Vou testar aqui, só to pensando como testar sem ter que esperar 1 dia todo hehe.

 

Desse jeito que você fez o cara pode acabar a p.a e criar outro char na mesma conta e ele não ganha certo? O que você fez ai exatamente? To aprendendo agora essas coisas, queria entender =)

 

Novamente, muito obrigado.

 

Fiz do jeito que você disse...

 

Só usei os.time() junto com globalstorage para checar se o jogador pode ou não ganhar a P.A

Link para o comentário
Compartilhar em outros sites

  • 0

Opa, então... Não rolou =/

 

Tipo, se um cara cria uma acc, o primeiro monstro que ele matar, ganha 30 dias de trial. Mas quando acabar esses 30 dias, ele pode criar outro char na mesma conta e matar outro bixo, e ganhar mais 30 dias. O ideal era conseguir fazer que se já houver 1 char criado na conta, não fosse possivel ganhar mais p.a. Mas nao estou conseguindo =/.

 

function onAdvance(cid)

 

-- Trial Premium

if getPlayerStorageValue(cid, 30004) == -1 and getPlayerLevel(cid) == 1 and getPlayerPremiumDays(cid) == 0 then

doPlayerAddPremiumDays(cid, 5)

doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You have received 5 days of trial premium account, enjoy it!")

setPlayerStorageValue(cid, 30004, 1)

end

 

return TRUE

end

 

Ta assim aqui. Tipo, ele mata o primeiro bixo, e se criar outra acc antes de acabar a trial ele nao consegue pegar, isso eu consegui fazer, mas depois da esse pal ai que nao sei como arrumar xD

 

Help!! xD

 

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Seguinte, meu ot da uma P.A Trial para o player quando ele ataca o seu primeiro bixo em rookguard, esta p.a é de 5 dias. Se ele criar na mesma conta outro char, e tentar acumular mais 5 dias, vai aparecer uma msg dizendo que não é possível porque a conta já é p.a. MAS se ele esperar passar os 5 dias de p.a, e criar outro char e atacar algum bixo, ele vai ganhar novamente mais 5 dias.

 

Tipo, se um cara cria uma acc, o primeiro monstro que ele matar, ganha 30 dias de trial. Mas quando acabar esses 30 dias, ele pode criar outro char na mesma conta e matar outro bixo, e ganhar mais 30 dias. O ideal era conseguir fazer que se já houver 1 char criado na conta, não fosse possivel ganhar mais p.a. Mas nao estou conseguindo =/.

 

LOL? Não era esse o pedido?

Link para o comentário
Compartilhar em outros sites

  • 0

"...dizendo que não é possível porque a conta já é p.a. MAS se ele esperar passar os 5 dias de p.a, e criar outro char e atacar algum bixo, ele vai ganhar novamente mais 5 dias.

 

Alguém ai tem alguma ideia de como posso resolver isso?..."

 

Acho que ele quis dizer que a frase em vermelho é o problema, só que ele se expressou mal.

 

Então você entendeu que ele queria isso (em vermelho), mas esse é o "problema" que ele quer resolver.

 

Ele demonstrou uma ambiguidade citando a frase em laranja assim podendo ter 2 interpretações.

 

Entendeu Vodkart?

 

(...) atacar algum bixo, ele vai ganhar novamente mais 5 dias (...) = Problema (ele quis dizer).

 

(...) atacar algum bixo, ele vai ganhar novamente mais 5 dias (...) = Oque ele quer (Você pensou).

 

Amigo se expresse melhor de outras vezes, se não você pode citar uma ideia com varias opções assim confundindo e demorando para a resolução de seu problema.

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

  • 0

Opa, malz ai, nem eu entendi muito bem o que eu quis dizer. Vou explicar como funciona o sistema que eu quero criar, e em que parte não estou tendo sucesso ok?

 

Todo novo player ao entrar no server, ganha uma P.A de 30 dias, para ativar esta p.a, ele ataca algum bixo. <<< Este é o meu plano e funciona.

 

Todo player que criar outro char na mesma conta, e atacar algum bixo, ganha mais 30 dias de P.A. <<< Este é um problema que já foi resolvido. (quem ja for p.a n pode pegar mais)

 

Agora se um player esperar os 30 dias acabarem, e criar outro char na mesma conta e atacar algum bixo, ele ganha novamente os 30 dias. <<< Este problema que nao sei resolver.

 

Preciso de algum modo, que reconheça que já tem um char criado na conta, e que não deixe a P.A ativar, igual fiz quando já se é P.a.

 

PS: Eram 5 dias, mais mudei pra 30 hehe...

 

 

Achoooo que consegui explicar agora hehe...

 

Abraços!!! vlw pela atenção toda ae

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

  • 0
function onAdvance(cid)
local days = 30
if getGlobalStorageValue(getPlayerAccountId(cid)+450) <= 0 then
doPlayerAddPremiumDays(cid, days)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You have received "..days.." days of trial premium account, enjoy it!")
setGlobalStorageValue(getPlayerAccountId(cid)+450, 1)
end
return true
end

Link para o comentário
Compartilhar em outros sites

  • 0

Vlw cara! Funcionou aqui!!!

 

Posso aproveitar e tirar outro dúvida relacionada a isso?

 

Bom, funcionou, mas somente para novos players. Players antigo eu teria que add este código 450 manualmente, tem alguma ideia de onde arruma isso? Uso sistema nicaw

 

 

Vlw abraços!

Link para o comentário
Compartilhar em outros sites

  • 0

Vish, ai f****, não tem onde fazer manualmente?

 

MEU DEUS!

 

TOdos players que passam skill estao ganhando mais 30 dias!!! Ferro bunito agora, me ferrei lindo

 

function onAdvance(cid, skill, oldLevel, newLevel)
local days = 30
if skill == 8 and newLevel == 1 and getGlobalStorageValue(getPlayerAccountId(cid)+450) <= 0 then
doPlayerAddPremiumDays(cid, days)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You have received "..days.." days of trial premium account, enjoy it!")
setGlobalStorageValue(getPlayerAccountId(cid)+450, 1)
end
return true
end

 

desse jeito quem upar pro lvl 1 vai ganha p.a

o resto que ja eh lvl alto n

 

 

todos os que não tinham ganhado né?

faz para remover 30 dias então ._.

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

×
×
  • Criar Novo...