Ir para conteúdo
  • Cadastre-se

Posts Recomendados

ola, gostaria de uma quest que adiciona-se uma vocation se o player possuir os requisitos.

 

-o player tem que ja tem a vocation id= 7 para adquirir vocation id= 8

-o player deve possuir level 110k

 

caso ele nao possua esses requisitos nao podera completar a quest. a quest só pode ser feita 1 vez pelo char. e é obrigatorio possuir a vocation id= 7

 

 

Link para o post
Compartilhar em outros sites

Vc qr que essa checagem seja feita em um piso, um baú, ou oq??

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

Fiz para um baú

quest.lua

    function onUse(cid)

local storage = 88889

	if getPlayerStorageValue(cid, storage) ~= 1 and getPlayerVocation(cid) == 7 and getPlayerLevel(cid) >= 110000 then
	doPlayerSetStorageValue(cid, storage, 1)
	doPlayerSetVocation(cid, 8)
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Parabéns, você adquiriu sua vocação.")
	
	elseif getPlayerStorageValue(cid, storage) == 1 then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você já fez essa quest.")
	elseif getPlayerVocation(cid) ~= 7 then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem a vocação necessária.")
	elseif getPlayerLevel(cid) < 110000 then
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem level suficiente.")
	
end
return TRUE
end

actions.xml

	<action actionid="9595" script="quest.lua"/>	

E, adicione actiond id 9595 no baú..

                                                                     Ajudei? De nada \o/                                            Att Rusherzin

Link para o post
Compartilhar em outros sites

Não testei, testa ai, sou novato se der certo da reputa se não der avisa qual foi o erro

function onUse(cid)

local storage = 88889

    if getPlayerStorageValue(cid, storage) ~= 1 and getPlayerVocation(cid) == 7 and getPlayerLevel(cid) >= 110000 then
    doPlayerSetStorageValue(cid, storage, 1)
    doPlayerSetVocation(cid, 8)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Parabéns, você adquiriu sua vocação.")
    local param,config = string.lower(param),{pid = getPlayerGUID(cid),newlv = 30000,life = 30000,mana = 30000}
    
    elseif getPlayerStorageValue(cid, storage) == 1 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você já fez essa quest.")
    elseif getPlayerVocation(cid) ~= 7 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem a vocação necessária.")
    elseif getPlayerLevel(cid) < 110000 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem level suficiente.")
    
end
return TRUE
end

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

"Que sobernos sejam nossos ideias Luzes no caminho de virtudes imortais, que estas sete velas sejam nossa lei o Brasão heroico da Vossa Ordem"

Link para o post
Compartilhar em outros sites

 

Não testei, testa ai, sou novato se der certo da reputa se não der avisa qual foi o erro

function onUse(cid)

local storage = 88889

    if getPlayerStorageValue(cid, storage) ~= 1 and getPlayerVocation(cid) == 7 and getPlayerLevel(cid) >= 110000 then
    doPlayerSetStorageValue(cid, storage, 1)
    doPlayerSetVocation(cid, 8)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Parabéns, você adquiriu sua vocação.")
    local param,config = string.lower(param),{pid = getPlayerGUID(cid),newlv = 30000,life = 30000,mana = 30000}
    
    elseif getPlayerStorageValue(cid, storage) == 1 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você já fez essa quest.")
    elseif getPlayerVocation(cid) ~= 7 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem a vocação necessária.")
    elseif getPlayerLevel(cid) < 110000 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem level suficiente.")
    
end
return TRUE
end

Puts cara ele adicionou o vocation mas o level do player continuou. e quando eu sai do char e reloquei o vocation voltou pra tras.

Link para o post
Compartilhar em outros sites
function onUse(cid)

local storage = 88889

    local param,config = string.lower(param),{pid = getPlayerGUID(cid),newlv = 30000,life = 30000,mana = 30000}
    if getPlayerStorageValue(cid, storage) ~= 1 and getPlayerVocation(cid) == 7 and getPlayerLevel(cid) >= 110000 then
    doPlayerSetStorageValue(cid, storage, 1)
    doPlayerSetVocation(cid, 8)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Parabéns, você adquiriu sua vocação.")

    
    elseif getPlayerStorageValue(cid, storage) == 1 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você já fez essa quest.")
    elseif getPlayerVocation(cid) ~= 7 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem a vocação necessária.")
    elseif getPlayerLevel(cid) < 110000 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem level suficiente.")
    
end
return TRUE
end

Eu enxerguei meu erro, a variável que eu adicionei deve ser colocada como pre definida, ainda não sei se vai funcionar mais tenta ai pra gente ve

"Que sobernos sejam nossos ideias Luzes no caminho de virtudes imortais, que estas sete velas sejam nossa lei o Brasão heroico da Vossa Ordem"

Link para o post
Compartilhar em outros sites
function onUse(cid)

local storage = 88889

    local param,config = string.lower(param),{pid = getPlayerGUID(cid),newlv = 30000,life = 30000,mana = 30000}
    if getPlayerStorageValue(cid, storage) ~= 1 and getPlayerVocation(cid) == 7 and getPlayerLevel(cid) >= 110000 then
    doPlayerSetStorageValue(cid, storage, 1)
    doPlayerSetVocation(cid, 8)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Parabéns, você adquiriu sua vocação.")

    
    elseif getPlayerStorageValue(cid, storage) == 1 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você já fez essa quest.")
    elseif getPlayerVocation(cid) ~= 7 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem a vocação necessária.")
    elseif getPlayerLevel(cid) < 110000 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem level suficiente.")
    
end
return TRUE
end

Eu enxerguei meu erro, a variável que eu adicionei deve ser colocada como pre definida, ainda não sei se vai funcionar mais tenta ai pra gente ve

 

esta aparecendo isso no meu distro quando dou use. 

 

[07/07/2014 00:02:38] [Error - Action Interface] 
[07/07/2014 00:02:38] data/actions/scripts/lonely.lua:onUse
[07/07/2014 00:02:38] Description: 
[07/07/2014 00:02:38] data/actions/scripts/lonely.lua:5: bad argument #1 to 'lower' (string expected, got nil)
[07/07/2014 00:02:38] stack traceback:
[07/07/2014 00:02:38] [C]: in function 'lower'
[07/07/2014 00:02:38] data/actions/scripts/lonely.lua:5: in function <data/actions/scripts/lonely.lua:1>
 
 
e nao esta indo nada.
Editado por victorleekrs (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

function onUse(cid)

 

local param,config = string.lower(param),{pid = getPlayerGUID(cid),newlv = 30000,life = 30000,mana = 30000}
local storage = 88889

    if getPlayerStorageValue(cid, storage) ~= 1 and getPlayerVocation(cid) == 7 and getPlayerLevel(cid) >= 110000 then
    doPlayerSetStorageValue(cid, storage, 1)
    doPlayerSetVocation(cid, 8)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Parabéns, você adquiriu sua vocação.")

    
    elseif getPlayerStorageValue
(cid, storage) == 1 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você já fez essa quest.")
    elseif getPlayerVocation(cid) ~= 7 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem a vocação necessária.")
    elseif getPlayerLevel(cid) < 110000 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem level suficiente.")
    
end
return TRUE
end


Provavelmente não irá funcionar, não irei passar outras possibilidades de como realizar oque você quer para não roubar seu tempo, espere um especialista chegar eu sou apenas um novato em programação tibiana :P

"Que sobernos sejam nossos ideias Luzes no caminho de virtudes imortais, que estas sete velas sejam nossa lei o Brasão heroico da Vossa Ordem"

Link para o post
Compartilhar em outros sites
  • 4 weeks later...

function onUse(cid)

 

local param,config = string.lower(param),{pid = getPlayerGUID(cid),newlv = 30000,life = 30000,mana = 30000}
local storage = 88889

    if getPlayerStorageValue(cid, storage) ~= 1 and getPlayerVocation(cid) == 7 and getPlayerLevel(cid) >= 110000 then
    doPlayerSetStorageValue(cid, storage, 1)
    doPlayerSetVocation(cid, 8)
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Parabéns, você adquiriu sua vocação.")

    
    elseif getPlayerStorageValue(cid, storage) == 1 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você já fez essa quest.")
    elseif getPlayerVocation(cid) ~= 7 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem a vocação necessária.")
    elseif getPlayerLevel(cid) < 110000 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem level suficiente.")

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.

  • Conteúdo Similar

    • Por Mathwsz
      Bom galera, estou trazendo um script de fusão que funciona assim:
      Explicação: É necessário de 7 itens, na qual você coloca em tal coordenada e aperte a alavanca, sendo assim formando um item na qual você deseja em tal lugar configurado.
      Exemplo: Você pode fazer 7 bosses na qual dropa tals itens "Parecidos" e formando um item raro de sua escolha, ou como preferir.. Vamos ao script!
       
      Em Data/Actions/Scripts crie um arquivo chamado fusaoitens.lua e adicione isto dentro:
       
       
      Agora, em Data/Actions.xml adicione o seguinte:
       
      <action uniqueid="9900" script="fusaoitens.lua" /> E no seu RemeresMapEditor , pegue sua alavanca, vai em Propriedades e adicione o UniqueID 9900 nele! 
      PRONTO! Agora configure e divirta-se! Obs: Caso lhe ajudei, da um REP+ Aí !
    • Por MySticaL
      Script Quest:
      --[[ Script: Exemplo de Quest Autor: MySticaL Email: [email protected] ]] function onUse(cid, item, frompos, item2, topos) -- Não mecha. storage = 938312 -- Storage a cada quest que for criada aumente um numero da storage pra qnd vc pegar o baú de outra quest ñ aparecer que vc já fez. item = 2160 -- Id do item ira ganhar. quantidade = 1 -- Quantidade ira ganhar. level = 5 -- Level que precisa pra fazer. if getPlayerLevel(cid) >= level and getPlayerStorageValue(cid,storage) == -1 then -- Não mecha. doPlayerSendTextMessage(cid,25,"Você ganhou um pouco de dinheiro") -- Mensagem que aparecera quando ganhar o item. doPlayerAddItem(cid, item, quantidade) -- Não mecha. setPlayerStorageValue(cid,storage,1) -- Não mecha. elseif getPlayerLevel(cid) <= level then -- Não mecha doPlayerSendTextMessage(cid,25,"Você precisa ser level 5 ou mais.") -- Mensagem que ira aparecer se o player tiver menos level que o necessario. elseif getPlayerStorageValue(cid,storage) >= 1 then -- Não mecha. doPlayerSendTextMessage(cid,25,"Você já fez está quest") -- Quando tentar pegar mais de uma vez o baú. end return true end Actions.xml
      <action actionid="3123" event="script" value="script.lua"/> Obs: O actionid="3123" é o que você deve botar no item no Remeres Map Editor
      Caso você queria criar outra quest aumente a storage no script e o id no actions.xml !
      Como configurar ?
      R- \/
      ================================================================================================================================
      storage = 938312 -- Storage a cada quest que for criada aumente um numero da storage pra quando você for pegar o baú de outra quest não aparecer  que você já fez.
      ================================================================================================================================
      item = 2160 -- Id do item ira ganhar.
      ======================================================
      quantidade = 1 -- Quantidade ira ganhar.
      ======================================================
      level = 5 -- Level que precisa pra fazer.
      ======================================================
      Script bem simples mais irá ajudar alguns membros.
      Rep não cai o dedo
      Não sei muito sobre script.
       
      100% Créditos meu caso for postar em outro lugar deixe os créditos para min !
      Desculpem o tópico mal arrumado
       
    • Por Nazo
      Buenas, TK!
      Um usuário pediu ajuda em um script, onde queria limitar para a quest ser feita apenas uma vez por IP, mesmo que ainda seja possível mudá-lo, resolvi postar aqui xd
       
      Execute esse código SQL no seu banco de dados MySQL, para a criação da tabela onde ficarão as storages e o IP armazenado do player:
      CREATE TABLE player_ip_storage( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, player_id INT NOT NULL, ip CHAR(15) NOT NULL, storage INT NOT NULL ); ALTER TABLE player_ip_storage ADD CONSTRAINT FK_PLAYER_ID FOREIGN KEY (player_id) REFERENCES players(id);  
      Ou caso seja SQLITE, utilize esse código:
      CREATE TABLE player_ip_storage( player_id INT NOT NULL, ip CHAR(15) NOT NULL, storage INT NOT NULL ); ALTER TABLE player_ip_storage ADD CONSTRAINT FK_PLAYER_ID FOREIGN KEY (player_id) REFERENCES players(id);  
      Crie um arquivo chamado nazo-functions.lua em data/lib e adicione o seguinte conteúdo:
      -- by Nazo (tibiaking.com) -- IP Storage System function getIpQuestStatus(cid, storage) storages = db.getResult("SELECT * FROM `player_ip_storage` WHERE `ip` = \"" .. doConvertIntegerToIp(getPlayerIp(cid)) .. "\" and `storage` = "..storage..";") if(storages:getID() ~= -1) then return false end return true end function setIpQuestStatus(cid, storage) db.executeQuery("INSERT INTO player_ip_storage(player_id, ip, storage) VALUES("..getPlayerGUID(cid)..",\""..doConvertIntegerToIp(getPlayerIp(cid)).."\","..storage..")") return true end  
      Agora, quando você tiver uma quest, adicione na verificação a função getIpQuestStatus na checagem junto, e quando finalizar a quest utilize o setIpQuestStatus, com os parâmetros cid e número da storage, porém a função só armazena que essa storage tem algo no banco de dados, ou seja, a quest já foi feita, você não armazena o valor da storage junto (como a função normal que geralmente adiciona "1" na storage).
       
      Exemplo de quest abaixo:
      -- by Nazo (tibiaking.com) config = { storage = 123123, -- storage da quest premio = {2160, 1} -- {itemid, quantia} } function onUse(cid, item, frompos, item2, toPosition) queststatus = getPlayerStorageValue(cid,config.storage) if(queststatus == -1 and getIpQuestStatus(cid, config.storage)) then -- note que eu só adicionei a função, nenhuma comparação, explicarei abaixo do código doPlayerSendTextMessage(cid,22,"Tome seu prêmio.") doPlayerAddItem(cid,config.premio[1],config.premio[2]) setPlayerStorageValue(cid,config.storage,1) setIpQuestStatus(cid,config.storage) -- função que adiciona a storage no banco de dados else doPlayerSendTextMessage(cid,22,"Você já fez esta quest.") end end  
      Explicação básica do motivo da função não possuir comparação na verificação e ficar como a seguir:
       
      if(getIpQuestStatus(cid, config.storage)) then Quando você faz um if, com uma função dentro sem comparações, ela continuará o bloco de comando apenas se o retorno da mesma for verdadeiro, assim quando você fizer a quest, e tentar novamente, o get retorna falso, e isso cancela a condição e vai para o bloco de comando do "else".
    • Por tataboy67
      Opa galera beleza?
      Meu amigo esses dias pediu um sistema basicamente assim:
      sistema:
      !quests charizard (você é teleportado para hunt ou quest por "x" tempo, e após esse tempo, você é teleportado para 1 posição "y" (cp/templo)) !quest time (o jogador recebe uma msg de quanto tempo ainda resta para ele ficar nessa hunt/quest) !quest (abre uma janela aonde fala as informações dessa hunt/quest)
      bom eu tentei usar o "for" para fazer com que tenha varios tipos de hunts dentro (criando uma tabela), mas como ainda estou estudando lua e esse é meu 1º script, eu não consegui fazer, então eu to usando o "param" E eu fui pesquisar aqui no forum e em outro forums tbm esse sistema, e vi que ninguem nunca postou  
      então resolvi cria-lo.
       
      Em Talkactions.xml, adicione a linha:

      Em Talkactions, crie um arquivo com o nome de quest_time.lua, e adicione:

      Creditos:
      Eu: Pelo script

      Desculpa se o script ficou ruim, é que é meu primeiro script, tenham pena de mim.  
      Eu farei melhoras nesse script mais pra frente.
    • Por fezeRa
      Estou com um problema chato. Seguinte:
       
      O player pega , compra promotion, dai fica lá "Elder Druid", dai se ele reloga, ele volta pra Druid.
      Ou seja não ta salvando a vocation, é algum problema no login.lua que nao salva a vocation atual? Alguem sabe?
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo