RA
dúvida

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

Por randal923, 28 de ago. de 2012 em Scripts

14
1.3k
randal923R
28 de agosto de 2012 às 17:43

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

VodkartV
28 de agosto de 2012 às 18:09
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 Agosto 28 por Vodkart

randal923R
28 de agosto de 2012 às 19:02

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.

VodkartV
28 de agosto de 2012 às 19:18

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

1 mês depois...
randal923R
05 de setembro de 2012 às 19:29

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

VodkartV
05 de setembro de 2012 às 21:33
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?

NewtonnotwenN
05 de setembro de 2012 às 21:51

"...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 Setembro 5 por Newtonnotwen

randal923R
06 de setembro de 2012 às 02:08

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 Setembro 6 por randal923

VodkartV
06 de setembro de 2012 às 10:06
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

randal923R
10 de setembro de 2012 às 16:37

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!

VodkartV
10 de setembro de 2012 às 18:22

bom dai teria que fazer um código para checar o ID da account do jogador + 450 na coluna e globalstorage ._.

randal923R
10 de setembro de 2012 às 21:37

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

VodkartV
10 de setembro de 2012 às 21:43

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 Setembro 10 por Vodkart

randal923R
11 de setembro de 2012 às 01:21

Pronto! Agora ta td ok xD

 

Cara, muito obrigado mesmo pela atenção e paciencia ae. Pode fechar o tópico já xDDDD

 

Abraços