Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Como posso fazer um script em talkaction que o player só pode usar uma vez por conta?

 

Exemplo:

 

Tenho um char na conta eu uso !vip

Dai eu crio outro char na mesma conta e uso !vip

E suponhamos que ganha 2 dia de vip cada vez que usa, assim o player ja tem 4 dias vip na conta dele.

Como posso fazer pra ele só poder usar esse comando uma vez na conta? Só sei mexer com storage por player.

(não precisa entender o esquema de vip eu acho, só um script que resolva isso eu tenho o resto do script pra ganhar a vip pra colocar entre essa condição de usar uma vez na conta)

Link para o post
Compartilhar em outros sites

Pode adicionar uma coluna na database para salvar se a conta já usou o comando ou não.

                                                                     Ajudei? De nada \o/                                            Att Rusherzin

Link para o post
Compartilhar em outros sites

Pode settar uma global storage com o id da conta.

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

Abraços!

Link para o post
Compartilhar em outros sites

Storages globais são resetadas quando o servidor é reiniciado.

Uma das inúmeras opções para fazer isso é usando as funções disponibilizadas neste tópico.

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Não tenho a minima ideia de como fazer isso, rs

 

@Edit, ja tentei usar esses codes do Matheus de account storage mas não funcionou aqui.

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

Se já tiver o comando !vip, posta aí que eu posso te ajudar a fazer o resto.

                                                                     Ajudei? De nada \o/                                            Att Rusherzin

Link para o post
Compartilhar em outros sites
function onSay(cid, words, param)

storage = getPlayerStorageValue(cid,11647)
if storage == -1 then
setPlayerStorageValue(cid,11647,1)
addVipDaysByAccount(getPlayerAccountId(cid), 2)
doPlayerPopupFYI(cid, "Voce ganhou 2 dias de VIP.")
else
doPlayerPopupFYI(cid,"Voce ja pegou sua VIP.")
end
return true
end

Link para o post
Compartilhar em outros sites

Não testei..

Query:
 

ALTER TABLE `accounts` ADD `freevip` TINYINT(1) NOT NULL DEFAULT '0';

Talkaction

 

function onSay(cid, words, param)

if getFreeVip(cid) == 0 then
db.executeQuery("UPDATE accounts SET freevip="1" WHERE id='" .. getPlayerAccountId(cid) .. "';")
addVipDaysByAccount(getPlayerAccountId(cid), 2)
doPlayerPopupFYI(cid, "Voce ganhou 2 dias de VIP.")
else
doPlayerPopupFYI(cid,"Voce ja pegou sua VIP.")
end
return true
end



lib/050-function.lua
 

function getFreeVip(cid)
	return db.getResult("SELECT * FROM accounts WHERE id= '" .. getPlayerAccountId(cid) .. "' LIMIT 1;"):getDataInt("freevip")
end

                                                                     Ajudei? De nada \o/                                            Att Rusherzin

Link para o post
Compartilhar em outros sites

Try:
 

function onSay(cid, words, param)

if getFreeVip(cid) == 0 then
db.executeQuery("UPDATE accounts SET freevip=1 WHERE id='" .. getPlayerAccountId(cid) .. "';")
addVipDaysByAccount(getPlayerAccountId(cid), 2)
doPlayerPopupFYI(cid, "Voce ganhou 2 dias de VIP.")
else
doPlayerPopupFYI(cid,"Voce ja pegou sua VIP.")
end
return true
end

                                                                     Ajudei? De nada \o/                                            Att Rusherzin

Link para o post
Compartilhar em outros sites

Funcionou, valeu rep+


Porem agora não pega a vip.


Não tem uns ` ali nas query sei la? Mas a vip não ativa quando usa, ai quando usa denovo, fala que ja ativou

Link para o post
Compartilhar em outros sites

Seria mais fácil verificar a quantia de dias vip ao usar o comando. Caso seja maior que 0, retorna false. Sendo assim a talkaction só poderia ser usada estando free account.

F5MHzGo.gif

Link para o post
Compartilhar em outros sites

Não, a query pode ser sem os símbolos.. Vou dar uma olhada aqui.

                                                                     Ajudei? De nada \o/                                            Att Rusherzin

Link para o post
Compartilhar em outros sites

LoL, mas que preconceito com a minha função. ;/
Try:
 

function onSay(cid, words, param)

if getFreeVip(cid) == 0 then
if addVipDaysByAccount(getPlayerAccountId(cid), 2) then
db.executeQuery("UPDATE accounts SET freevip=1 WHERE id='" .. getPlayerAccountId(cid) .. "';")
doPlayerPopupFYI(cid, "Voce ganhou 2 dias de VIP.")
end
else
doPlayerPopupFYI(cid,"Voce ja pegou sua VIP.")
end
return true
end

                                                                     Ajudei? De nada \o/                                            Att Rusherzin

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