Ir para conteúdo
  • Cadastre-se

(Resolvido)[Pedido] Talkaction WAND VIP TFS 1.0


Ir para solução Resolvido por ADM Guardian,

Posts Recomendados

Tenho um script de WAND VIP (Sim! Aquele que permite ao jogador trocar o elemento de uma wand através do comando !wand ou algo parecido). O script está funcionando, porém não verifica se o player possui ou não a WAND VIP antes de trocar o elemento. Será que alguém pode me dizer quais configurações devo adicionar ao script para que ele passe a fazer essa verificação, não permitindo que o player, sem a wand, troque o elemento?

Aqui está o script para referência:

local combat_values = {
	["none"] = 0,
	["ice"] = 1,
	["fire"] = 2,
	["earth"] = 3,
	["energy"] = 4,
	["holy"] = 5,
	["death"] = 6,
}

local config = {
	storage = 101010,
	time_storage = 101011,

	price = 0,
	delay = 0,

	msg = {
		default = "Por favor selecione um dos elementos disponíveis: Ice, Fire, Earth, Energy, Holy ou Death.",
		help = "Elementos disponíveis: Ice, Fire, Earth, Energy, Holy, Death.",
		invalid = "Digite um elemento válido! Fale !wand para saber os elementos disponíveis.",
		changed = "O elemento da wand foi trocado para %s.",
		nomoney = "Você não possui dinheiro.",
		delayed = "Você precisa esperar para trocar o efeito.",
	}
}

function onSay(cid, words, param)
	local param = param:lower()
	local value = combat_values[param]

	if param == "help" then
		doPlayerSendCancel(cid, string.format(config.msg.help, config.price))
	   return 
	end
	
	if param == "" then
		doPlayerSendCancel(cid, string.format(config.msg.default, config.price))
       return
	end

	if not value then
		doPlayerSendCancel(cid, config.msg.invalid)
       return
	end

	if getPlayerMoney(cid) < config.price then
		doPlayerSendCancel(cid, config.msg.nomoney)
       return
	end

	if getPlayerMoney(cid) < config.price then
		doPlayerSendCancel(cid, config.msg.nomoney)
       return
	end

	if getPlayerStorageValue(cid, config.time_storage) + config.delay > os.time() then
		doPlayerSendCancel(cid, config.msg.delayed)
       return
	end

	setPlayerStorageValue(cid, config.storage, value)
	setPlayerStorageValue(cid, config.time_storage, os.time())
	doPlayerRemoveMoney(cid, config.price)
	doPlayerSendCancel(cid, string.format(config.msg.changed, param))
   return
end
Editado por ADM Guardian (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

como é a vip no seu server, é por premium? por database? por storage?? tem a função isVip(cid)?

eu tinha lido errado haha o jeito que a AnaPaula falou resolve o problema!

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

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

e so add a função 

    if getPlayerItemCount(cid, IDDOITEM) == 1 then
        doPlayerSendCancel(cid, voce nao tem o item necesserio)
return
    end

 

 

abaixo do 

    if getPlayerStorageValue(cid, config.time_storage) + config.delay > os.time() then
        doPlayerSendCancel(cid, config.msg.delayed)
return
    end

 

 

que deve pegar.
 

 Whatsapp: +55 (48) 98815-0709 Discord: Qwizer#5713

 

Global 100% 7.40 com Website

TFS 1.2 10.97-11.00 + GlobalFull OtherWorld ...

 

Link para o post
Compartilhar em outros sites

Obrigado Ana Paula e WhiteWolf (pela intenção de ajudar). Rep+ pra ambos.

Porém, o problema não foi solucionado. O script continua executando as funções sem checar a quantidade do item wand vip. Vejam como está o script:

Tenho uma ideia de como se resolve, mas não sei escrever isso em "scripts", hehe (burro). A ideia é a seguinte: os parametros "help", ""[vazio], "if not value", etc. devem depender da quantidade do item wand vip, ou seja, eles só serão executados se a quantidade de wand for DIFERENTE (maior) de zero.

Alguma sugestão?

local combat_values = {
	["ice"] = 1,
	["fire"] = 2,
	["earth"] = 3,
	["energy"] = 4,
	["holy"] = 5,
	["death"] = 6,
}

local config = {
	storage = 101010,
	time_storage = 101011,

	price = 0,
	delay = 0,

	msg = {
		default = "Por favor selecione um dos elementos disponíveis: Ice, Fire, Earth, Energy, Holy ou Death.",
		help = "Elementos disponíveis: Ice, Fire, Earth, Energy, Holy, Death.",
		invalid = "Digite um elemento válido! Fale !wand para saber os elementos disponíveis.",
		changed = "O elemento da wand foi trocado para %s.",
		nomoney = "Você não possui dinheiro.",
		delayed = "Você precisa esperar para trocar o efeito.",
	}
}

function onSay(cid, words, param)
	local param = param:lower()
	local value = combat_values[param]

	if param == "help" then
		doPlayerSendCancel(cid, string.format(config.msg.help, config.price))
	   return 
	end
	
	if param == "" then
		doPlayerSendCancel(cid, string.format(config.msg.default, config.price))
       return
	end

	if not value then
		doPlayerSendCancel(cid, config.msg.invalid)
       return
	end

	if getPlayerMoney(cid) < config.price then
		doPlayerSendCancel(cid, config.msg.nomoney)
       return
	end

	if getPlayerMoney(cid) < config.price then
		doPlayerSendCancel(cid, config.msg.nomoney)
       return
	end

	if getPlayerStorageValue(cid, config.time_storage) + config.delay > os.time() then
		doPlayerSendCancel(cid, config.msg.delayed)
       return
	end
	
	if getPlayerItemCount(cid, 23607) == 1 then
        doPlayerSendCancel(cid, Você não possui a wand.)
       return
    end
	
	setPlayerStorageValue(cid, config.storage, value)
	setPlayerStorageValue(cid, config.time_storage, os.time())
	doPlayerRemoveMoney(cid, config.price)
	doPlayerSendCancel(cid, string.format(config.msg.changed, param))
   return
end

como é a vip no seu server, é por premium? por database? por storage?? tem a função isVip(cid)?

eu tinha lido errado haha o jeito que a AnaPaula falou resolve o problema!

 

Não resolveu o problema, heheh

Editado por ADM Guardian (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
local combat_values = {
    ["ice"] = 1,
    ["fire"] = 2,
    ["earth"] = 3,
    ["energy"] = 4,
    ["holy"] = 5,
    ["death"] = 6,
}

local config = {
    storage = 101010,
    time_storage = 101011,

    price = 0,
    delay = 0,

    msg = {
        default = "Por favor selecione um dos elementos disponíveis: Ice, Fire, Earth, Energy, Holy ou Death.",
        help = "Elementos disponíveis: Ice, Fire, Earth, Energy, Holy, Death.",
        invalid = "Digite um elemento válido! Fale !wand para saber os elementos disponíveis.",
        changed = "O elemento da wand foi trocado para %s.",
        nomoney = "Você não possui dinheiro.",
        delayed = "Você precisa esperar para trocar o efeito.",
    }
}

function onSay(cid, words, param)
    local param = param:lower()
    local value = combat_values[param]

    if param == "help" then
        doPlayerSendCancel(cid, string.format(config.msg.help, config.price))
     return
    end
    
    if param == "" then
        doPlayerSendCancel(cid, string.format(config.msg.default, config.price))
return
    end

    if not value then
        doPlayerSendCancel(cid, config.msg.invalid)
return
    end

    if getPlayerMoney(cid) < config.price then
        doPlayerSendCancel(cid, config.msg.nomoney)
return
    end

    if getPlayerMoney(cid) < config.price then
        doPlayerSendCancel(cid, config.msg.nomoney)
return
    end

    if getPlayerStorageValue(cid, config.time_storage) + config.delay > os.time() then
        doPlayerSendCancel(cid, config.msg.delayed)
return
    end
    
    if not (getPlayerItemCount(cid, 23607) >= 1) then
doPlayerSendCancel(cid, Você não possui a wand.)
return
end
    
    setPlayerStorageValue(cid, config.storage, value)
    setPlayerStorageValue(cid, config.time_storage, os.time())
    doPlayerRemoveMoney(cid, config.price)
    doPlayerSendCancel(cid, string.format(config.msg.changed, param))
return
end

prontinho, faltou colocar um not na frente já que a checagem é pra ver justamente se ele não tem a wand.

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

local combat_values = {
    ["ice"] = 1,
    ["fire"] = 2,
    ["earth"] = 3,
    ["energy"] = 4,
    ["holy"] = 5,
    ["death"] = 6,
}

local config = {
    storage = 101010,
    time_storage = 101011,

    price = 0,
    delay = 0,

    msg = {
        default = "Por favor selecione um dos elementos disponíveis: Ice, Fire, Earth, Energy, Holy ou Death.",
        help = "Elementos disponíveis: Ice, Fire, Earth, Energy, Holy, Death.",
        invalid = "Digite um elemento válido! Fale !wand para saber os elementos disponíveis.",
        changed = "O elemento da wand foi trocado para %s.",
        nomoney = "Você não possui dinheiro.",
        delayed = "Você precisa esperar para trocar o efeito.",
    }
}

function onSay(cid, words, param)
    local param = param:lower()
    local value = combat_values[param]

    if param == "help" then
        doPlayerSendCancel(cid, string.format(config.msg.help, config.price))
     return
    end
    
    if param == "" then
        doPlayerSendCancel(cid, string.format(config.msg.default, config.price))
return
    end

    if not value then
        doPlayerSendCancel(cid, config.msg.invalid)
return
    end

    if getPlayerMoney(cid) < config.price then
        doPlayerSendCancel(cid, config.msg.nomoney)
return
    end

    if getPlayerMoney(cid) < config.price then
        doPlayerSendCancel(cid, config.msg.nomoney)
return
    end

    if getPlayerStorageValue(cid, config.time_storage) + config.delay > os.time() then
        doPlayerSendCancel(cid, config.msg.delayed)
return
    end
    
    if not (getPlayerItemCount(cid, 23607) >= 1) then
doPlayerSendCancel(cid, Você não possui a wand.)
return
end
    
    setPlayerStorageValue(cid, config.storage, value)
    setPlayerStorageValue(cid, config.time_storage, os.time())
    doPlayerRemoveMoney(cid, config.price)
    doPlayerSendCancel(cid, string.format(config.msg.changed, param))
return
end

prontinho, faltou colocar um not na frente já que a checagem é pra ver justamente se ele não tem a wand.

 

 

Heheh.. adivinha? Não funcionou. Pelo menos dessa vez há um erro no console pra dar uma ajudinha (y'

 

[Warning - Event::checkScript] Can not load script: scripts/fg/elemental_wand.lua

data/talkactions/scripts/fg/elemental_wand.lua:62: '>' expected near 'nòo'

 

Que trabalho.. e agora?

Obs: o script que está apresentando esse erro é esse mesmo que está acima em spoiler, do WhiteWolf

Editado por ADM Guardian (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
local combat_values = {
    ["ice"] = 1,
    ["fire"] = 2,
    ["earth"] = 3,
    ["energy"] = 4,
    ["holy"] = 5,
    ["death"] = 6,
}


local config = {
    storage = 101010,
    time_storage = 101011,


    price = 0,
    delay = 0,


    msg = {
        default = "Por favor selecione um dos elementos disponíveis: Ice, Fire, Earth, Energy, Holy ou Death.",
        help = "Elementos disponíveis: Ice, Fire, Earth, Energy, Holy, Death.",
        invalid = "Digite um elemento válido! Fale !wand para saber os elementos disponíveis.",
        changed = "O elemento da wand foi trocado para %s.",
        nomoney = "Você não possui dinheiro.",
        delayed = "Você precisa esperar para trocar o efeito.",
    }
}


function onSay(cid, words, param)
    local param = param:lower()
    local value = combat_values[param]


    if param == "help" then
        doPlayerSendCancel(cid, string.format(config.msg.help, config.price))
     return true
    end
    
    if param == "" then
        doPlayerSendCancel(cid, string.format(config.msg.default, config.price))
return true
    end


    if not value then
        doPlayerSendCancel(cid, config.msg.invalid)
return
    end


    if getPlayerMoney(cid) < config.price then
        doPlayerSendCancel(cid, config.msg.nomoney)
return true
    end


    if getPlayerMoney(cid) < config.price then
        doPlayerSendCancel(cid, config.msg.nomoney)
return true
    end


    if getPlayerStorageValue(cid, config.time_storage) + config.delay > os.time() then
        doPlayerSendCancel(cid, config.msg.delayed)
return true
    end
    
    if not (getPlayerItemCount(cid, 23607) >= 1) then
doPlayerSendCancel(cid, "Você não possui a wand".)
return true
end
    
    setPlayerStorageValue(cid, config.storage, value)
    setPlayerStorageValue(cid, config.time_storage, os.time())
    doPlayerRemoveMoney(cid, config.price)
    doPlayerSendCancel(cid, string.format(config.msg.changed, param))
return true
end

copiei direto da ana e ela não tinha colocado o "Você não tem wand" entre aspas

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

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

local combat_values = {
    ["ice"] = 1,
    ["fire"] = 2,
    ["earth"] = 3,
    ["energy"] = 4,
    ["holy"] = 5,
    ["death"] = 6,
}


local config = {
    storage = 101010,
    time_storage = 101011,


    price = 0,
    delay = 0,


    msg = {
        default = "Por favor selecione um dos elementos disponíveis: Ice, Fire, Earth, Energy, Holy ou Death.",
        help = "Elementos disponíveis: Ice, Fire, Earth, Energy, Holy, Death.",
        invalid = "Digite um elemento válido! Fale !wand para saber os elementos disponíveis.",
        changed = "O elemento da wand foi trocado para %s.",
        nomoney = "Você não possui dinheiro.",
        delayed = "Você precisa esperar para trocar o efeito.",
    }
}


function onSay(cid, words, param)
    local param = param:lower()
    local value = combat_values[param]


    if param == "help" then
        doPlayerSendCancel(cid, string.format(config.msg.help, config.price))
     return true
    end
    
    if param == "" then
        doPlayerSendCancel(cid, string.format(config.msg.default, config.price))
return true
    end


    if not value then
        doPlayerSendCancel(cid, config.msg.invalid)
return
    end


    if getPlayerMoney(cid) < config.price then
        doPlayerSendCancel(cid, config.msg.nomoney)
return true
    end


    if getPlayerMoney(cid) < config.price then
        doPlayerSendCancel(cid, config.msg.nomoney)
return true
    end


    if getPlayerStorageValue(cid, config.time_storage) + config.delay > os.time() then
        doPlayerSendCancel(cid, config.msg.delayed)
return true
    end
    
    if not (getPlayerItemCount(cid, 23607) >= 1) then
doPlayerSendCancel(cid, "Você não possui a wand".)
return true
end
    
    setPlayerStorageValue(cid, config.storage, value)
    setPlayerStorageValue(cid, config.time_storage, os.time())
    doPlayerRemoveMoney(cid, config.price)
    doPlayerSendCancel(cid, string.format(config.msg.changed, param))
return true
end

copiei direto da ana e ela não tinha colocado o "Você não tem wand" entre aspas

 

 

Agora sim! O script está funcionando perfeito. Rep+ pra você xWhiteWolf! Valeu pela ajuda.

 

Vou apenas adicionar abaixo o script com um pequeno fix no trecho doPlayerSendCancel(cid, "Você não possui a wand".)

Observe que o . está fora das aspas. Também vou substituir "return true" por "return" para que os comandos que o player executar não apareçam na tela/chat.

 

Talkaction Script 100% funcional (Créditos: Eu & xWhiteWolf):

local combat_values = {
    ["ice"] = 1,
    ["fire"] = 2,
    ["earth"] = 3,
    ["energy"] = 4,
    ["holy"] = 5,
    ["death"] = 6,
}


local config = {
    storage = 101010,
    time_storage = 101011,


    price = 0,
    delay = 0,


    msg = {
        default = "Por favor selecione um dos elementos disponíveis: Ice, Fire, Earth, Energy, Holy ou Death.",
        help = "Elementos disponíveis: Ice, Fire, Earth, Energy, Holy, Death.",
        invalid = "Digite um elemento válido! Fale !wand para saber os elementos disponíveis.",
        changed = "O elemento da wand foi trocado para %s.",
        nomoney = "Você não possui dinheiro.",
        delayed = "Você precisa esperar para trocar o efeito.",
    }
}


function onSay(cid, words, param)
    local param = param:lower()
    local value = combat_values[param]


    if param == "help" then
        doPlayerSendCancel(cid, string.format(config.msg.help, config.price))
     return
    end
    
    if param == "" then
        doPlayerSendCancel(cid, string.format(config.msg.default, config.price))
return 
    end


    if not value then
        doPlayerSendCancel(cid, config.msg.invalid)
return
    end


    if getPlayerMoney(cid) < config.price then
        doPlayerSendCancel(cid, config.msg.nomoney)
return
    end


    if getPlayerMoney(cid) < config.price then
        doPlayerSendCancel(cid, config.msg.nomoney)
return 
    end


    if getPlayerStorageValue(cid, config.time_storage) + config.delay > os.time() then
        doPlayerSendCancel(cid, config.msg.delayed)
return
    end
    
    if not (getPlayerItemCount(cid, 23607) >= 1) then
doPlayerSendCancel(cid, "Você não possui a wand.")
return
end
    
    setPlayerStorageValue(cid, config.storage, value)
    setPlayerStorageValue(cid, config.time_storage, os.time())
    doPlayerRemoveMoney(cid, config.price)
    doPlayerSendCancel(cid, string.format(config.msg.changed, param))
return
end
Editado por ADM Guardian (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 1 year later...

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