Ir para conteúdo

Yan Oliveira

Moderador
  • Total de itens

    2187
  • Registro em

  • Última visita

  • Dias Ganhos

    57

Tudo que Yan Oliveira postou

  1. Yan Oliveira

    Pvp enforce wodbo

    De acordo como conversamos no privado, estou mandando o código como pediu. Vai em Data/Creaturescripts/Scripts e crie um arquivo chamado pvp_enforced.lua e adicione o código dentro: local exp -- EXP function onKill(cid, target, lastHit) if isPlayer(cid) and isPlayer(target) then if getPlayerLevel(cid) <= 200 then exp = 200000 doSendAnimatedText(getPlayerPosition(cid), exp, 215) doPlayerAddExperience(cid, exp) doSendMagicEffect(getThingPos(cid), 27) return true elseif getPlayerLevel(cid) > 200 and getPlayerLevel(cid) <= 400 then exp = 300000 doSendAnimatedText(getPlayerPosition(cid), exp, 215) doPlayerAddExperience(cid, exp) doSendMagicEffect(getThingPos(cid), 27) return true else exp = 400000 doSendAnimatedText(getPlayerPosition(cid), exp, 215) doPlayerAddExperience(cid, exp) doSendMagicEffect(getThingPos(cid), 27) return true end return true else return true end return true end Agora em Data/Creaturescripts abra o creaturescripts.xml e adicione a tag: <event type="kill" name="pvp_enforced" script="pvp_enforced.lua"/> Agora em Data/Creaturescripts/Scripts ou Agora em Data/Creaturescripts/Scripts/Player procure o arquivo login.lua e adicione a tag na parte de eventos: registerCreatureEvent(cid, "pvp_enforced") Testa e me fala se deu algum problema.
  2. Yan Oliveira

    PokeSilver

    Parece ser interessante, está online? E como será o exp rate? Não vai ser aqueles OT que você mata um pokémon e upa 5 níveis né? Haha ?
  3. Yan Oliveira

    Box

    Olá amigo, primeiramente, coloque um título mais intuitivo no tópico para ficar mais fácil e legível de outras pessoas procurar. Vá em Data/Actions/Scripts e crie um arquivo.lua chamado box_itens.lua (na codificação coloque como ANSI para evitar problemas com acentuações) e adicione o seguinte código dentro do arquivo: local id_table_item = {2392, 12162, 12338} -- ID DO ITEM (ADICIONE NESSA TABELA TODOS ITENS) local level = 1 -- LEVEL MÍNIMO local id_box = 12338 -- ID DA BOX local quantidade_item = 1 -- QUANTIDADE DE ITEM(S) function onUse(cid, item, frompos, item2, topos) if item.itemid == id_box then -- VERIFICA SE CLICOU NA BOX, ALTERAR O ID DA BOX NA VARIÁVEL if getPlayerLevel(cid) >= level then -- VERIFICA SE O PLAYER TEM O NÍVEL NECESSÁRIO. DEIXEI COMO 1 CASO NÃO QUEIRA QUE TENHA VERIFICAÇÃO DE NÍVEL, POIS O NÍVEL MÍNIMO É 1. QUALQUER COISA SÓ ALTERAR NA VARIÁVEL for i = 1, #id_table_item do doPlayerAddItem(cid, id_table_item[i], quantidade_item) -- SETAR O ID DO ITEM NA TABELA E QUANTIDADE NA VARIÁVEL end doSendMagicEffect(getThingPos(cid), 27) -- EFEITO AO ABRIR A BOX doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Parabéns, você recebeu " ..#id_table_item.. " itens. Confira em sua bag.") -- MENSAGEM PARA O PLAYER QUE PEGA A QUANTIDADE TOTAIS DE ITENS QUE EXISTE DENTRO DA TABELA doRemoveItem(item.uid, 1) -- REMOVE A BOX DA BAG DO PLAYER else doPlayerSendCancel(cid,"Você dever ser no mínimo nível "..level.." para abrir a box.") -- MENSAGEM CASO NÃO TENHA NÍVEL end return true end end Depois vá em Data/Actions e abra o arquivo actions.xml e adicione a tag dentro: <action itemid="ID DA BOX" event="script" value="box_itens.lua"/> <!-- COLOCAR O ID DA BOX ONDE ESTÁ "ID DA BOX" --> Adicione todos os IDs dos itens dentro da tabela. Só lembrando que como eu já fiz para você anteriormente um script de box, nesse script você precisa colocar uma box diferente (id), pois a outra bag já está registrada e se colocar as duas vai dar problema.
  4. Yan Oliveira

    help

    Primeiramente, você deve colocar um título intuitivo para o tópico, títulos assim são incorretos. Qual a versão do TFS que você usa?
  5. Yan Oliveira

    Box por %

    Que bom que funcionou! ? Faço sim, mas você precisa criar um outro tópico para isso, pois além de ser um outro pedido, se alguma outra pessoa quiser o mesmo pedido que o seu já existirá um tópico para isso. Enquanto você cria o tópico, eu irei fazendo o script para você. E lembrando que você precisa criar o tópico na área de pedidos, pois essa área é para scripts já existentes que estão com problemas. Área correta para pedidos de script: https://www.xtibia.com/forum/forum/1260-scripts/
  6. Yan Oliveira

    Box por %

    Sobre vir o valor repetido, foi erro meu, falta de atenção, pois como deixei a variável fora da function onUse ele deixava sempre o valor que gerou randomico fixo. Eu tinha criado a váriavel dentro do escopo, mas ai deixando organizado, comentado e legível para você acabei colocando fora da função. Estarei mandando corrigido. Sobre o seu pedido, eu não acho que vale a pena fazer desse jeito, porque você vai fazer um esforço para duas coisas que na verdade é uma, pois como é aleatório, como você vai saber a porcentagem que vai sair? Não tem como entendeu? De qualquer forma vai ser aleatório, então eu sugiro que deixa a quantidade de itens aleatoriamente direto igual eu fiz. E nem estou falando isso para não precisar fazer, pois se quiser posso tentar fazer, mas a questão é que vai gastar esforço com uma coisa sem necessidade. Mas reflita sobre o que falei e veja se vai aceitar o meu conselho ou se vai querer como pediu inicialmente. Estou mandando o código corrigido, pode testar que agora virá valores aleatórios normal. Mandarei até uma print que testei para comprovar. Substitua o código por esse: local id_item = 2392 -- ID DO ITEM local level = 1 -- LEVEL MÍNIMO local id_box = 12338 -- ID DA BOX function onUse(cid, item, frompos, item2, topos) local quantidade_item = math.floor(math.random(1, 100)) -- GERA A QUANTIDADE DO ITEM RANDOMICAMENTE if item.itemid == id_box then -- VERIFICA SE CLICOU NA BOX, ALTERAR O ID DA BOX NA VARIÁVEL if getPlayerLevel(cid) >= level then -- VERIFICA SE O PLAYER TEM O NÍVEL NECESSÁRIO. DEIXEI COMO 1 CASO NÃO QUEIRA QUE TENHA VERIFICAÇÃO DE NÍVEL, POIS O NÍVEL MÍNIMO É 1. QUALQUER COISA SÓ ALTERAR NA VARIÁVEL doPlayerAddItem(cid, id_item, quantidade_item) -- SETAR O ID DO ITEM NA VARIÁVEL doSendMagicEffect(getThingPos(cid), 27) -- EFEITO AO ABRIR A BOX if quantidade_item > 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Parabéns, você recebeu " ..quantidade_item.. " " ..getItemNameById(id_item) .."s") -- MENSAGEM PARA O PLAYER NO PLURAL CASO SEJA A QUANTIDADE MAIOR QUE 1 else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Parabéns, você recebeu " ..quantidade_item.. " " ..getItemNameById(id_item)) -- MENSAGEM PARA O PLAYER NO SINGULAR SE A QUANTIDADE FOR 1 end doRemoveItem(item.uid, 1) -- REMOVE A BOX DA BAG DO PLAYER else doPlayerSendCancel(cid,"Você dever ser no mínimo nível "..level.." para abrir a box.") -- MENSAGEM CASO NÃO TENHA NÍVEL end return true end end Print: Como pode ver fiz o teste, cliquei 4x na box e veio quantidades diferentes nas 4 vezes. Testa ai e me fala. (Fazendo um adendo, eu troquei no código a função math.abs para math.floor porque o abs pode pegar número real, e o floor só pega inteiro, outro erro meu rs. Também acrescentei uma verificação para caso a quantidade de itens seja maior que um ele fala o nome do item no plural, e com 1 no singular.)
  7. Primeiramente que essa não é a área correta, o certo seria em: https://www.xtibia.com/forum/forum/1253-scripts/ Sobre o seu problema, aparece algum erro na distro quando acontece isso com os pokémons selvagens?
  8. Yan Oliveira

    Script Bau

    @andrefelphes seu pedido foi resolvido?
  9. Yan Oliveira

    Box por %

    Não sei se é assim que quer, porque está meio confuso seu pedido. Mas faça o teste e veja se é assim que você pediu. Vá em Data/Actions/Scripts e crie um arquivo box_random.lua (Crie com a codificação ANSI porque tem textos em português com acentuação, para não dar problema) e adicione o código dentro: local id_item = 12163 -- ID DO ITEM local quantidade_item = math.abs(math.random(1, 100)) -- GERA A QUANTIDADE DO ITEM RANDOMICAMENTE local level = 1 -- LEVEL MÍNIMO local id_box = 12338 -- ID DA BOX function onUse(cid, item, frompos, item2, topos) if item.itemid == id_box then -- VERIFICA SE CLICOU NA BOX, ALTERAR O ID DA BOX NA VARIÁVEL if getPlayerLevel(cid) >= level then -- VERIFICA SE O PLAYER TEM O NÍVEL NECESSÁRIO. DEIXEI COMO 1 CASO NÃO QUEIRA QUE TENHA VERIFICAÇÃO DE NÍVEL, POIS O NÍVEL MÍNIMO É 1. QUALQUER COISA SÓ ALTERAR NA VARIÁVEL doPlayerAddItem(cid, id_item, quantidade_item) -- SETAR O ID DO ITEM NA VARIÁVEL doSendMagicEffect(getThingPos(cid), 27) -- EFEITO AO ABRIR A BOX doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Parabéns, você recebeu " ..quantidade_item.. " " ..getItemNameById(id_item)) -- MENSAGEM PARA O PLAYER doRemoveItem(item.uid, 1) -- REMOVE A BOX DA BAG DO PLAYER else doPlayerSendCancel(cid,"Você dever ser no mínimo nível "..level.." para abrir a box.") -- MENSAGEM CASO NÃO TENHA NÍVEL end return true end end Agora vá em Data/Actions e abra o actions.xml e adicione a tag: <action itemid="ID_BOX" event="script" value="box_random.lua"/> <!-- COLOQUE O ID DA BOX ONDE ESTÁ ESCRITO ID_BOX --> Testei aqui e funcionou, mas testa e me fala se funciona e se é assim que quer.
  10. Yan Oliveira

    Meu Serve Cai

    Você precisa mostrar uma imagem do erro na distro para ficar mais fácil de te ajudar.
  11. Sobre o pedido do tópico, começando pelo primeiro NPC, vá em Data/NPC e crie um arquivo Carl.xml (lembrando que coloquei o nome do arquivo do mesmo nome do npc, caso queira mudar nome do npc sugiro mudar o do arquivo para ficar fácil de fazer manutenções futuras), após criar adicione o seguinte código dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Carl" script="Carl.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="516" head="10" body="15" legs="20" feet="25"/> <parameters> <parameter key="message_greet" value="Olá |PLAYERNAME|, o que você procura?"/> </parameters> </npc> Agora vá em Data/NPC/Scripts e crie um arquivo Carl.lua e adicione o seguinte código dentro: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end -- VARIÁVEIS -- local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid msg = string.lower(msg) local nome_segundo_npc = "Joey" local storage = 9999 ----------------------------------- [ DIALOGO COM NPC] --------------------------------- if msgcontains(msg, 'help') or msgcontains(msg, 'ajuda') or msgcontains(msg, 'missao') then if getPlayerStorageValue(cid, storage) == 1 then selfSay("Você deve falar diretamente com o NPC " ..nome_segundo_npc, cid) talkState[talkUser] = 0 return true else selfSay("Você gostaria de fazer a missão do NPC " ..nome_segundo_npc.. " ?", cid) talkState[talkUser] = 1 return true end elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then selfSay("Agora você está autorizado para fazer a missão do NPC "..nome_segundo_npc.. "!", cid) setPlayerStorageValue(cid, storage, 1) talkState[talkUser] = 0 return true elseif (msgcontains(msg, 'no') or msgcontains(msg, 'não') or msgcontains(msg, 'nao')) and talkState[talkUser] == 1 then selfSay("Ok, fale comigo novamente caso queira fazer a missão do NPC " ..nome_segundo_npc.. ".", cid) talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Segundo NPC: Agora iremos criar o segundo NPC, vá em Data/NPC e crie um arquivo Joey.xml e adicione o código dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Joey" script="Joey.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="1421" head="114" body="119" legs="114" feet="114"/> <parameters> <parameter key="message_greet" value="Olá |PLAYERNAME|, em que posso ajudar? Diga {help}, {ajuda} ou {missão} para mais informações."/> </parameters> </npc> E vá em Data/NPC/Scripts, crie um arquivo Joey.lua e adicione o código dentro: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end -- VARIÁVEIS -- local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid msg = string.lower(msg) local nome_primeiro_npc = "Carl" local nome_terceiro_npc = "Peter" local id_item = 12163 local quantidade_item = 100 local id_item_recebido = 16563 local quantidade_item_recebido = 1 ----------------------------------- [ DIALOGO COM NPC] --------------------------------- if msgcontains(msg, 'help') or msgcontains(msg, 'ajuda') or msgcontains(msg, 'missao') then if getPlayerStorageValue(cid, 9999) == 1 then -- STORAGE DO PRIMEIRO NPC, OU SEJA, VERIFICA SE FALOU COM PRIMEIRO NPC. if getPlayerStorageValue(cid, 10000) == 1 then -- VERIFICA SE JÁ FEZ A MISSÃO DO SEGUNDO NPC selfSay("Você já fez minha missão, agora você deve falar diretamente com o NPC " ..nome_terceiro_npc.. ".", cid) talkState[talkUser] = 0 return true else selfSay("Preciso que você me traga " ..quantidade_item.. " seeds. Você trouxe?", cid) talkState[talkUser] = 1 return true end else selfSay("Você deve falar com o NPC " ..nome_primeiro_npc.. " para conseguir fazer minha missão.", cid) talkState[talkUser] = 0 return true end elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then if getPlayerItemCount(cid, id_item) >= quantidade_item then doPlayerRemoveItem(cid, id_item, quantidade_item) selfSay("Você me trouxe as " ..quantidade_item.. " que eu precisava. Agora você consegue falar com o NPC " ..nome_terceiro_npc.. ".", cid) doPlayerAddItem(cid, id_item_recebido, quantidade_item_recebido) doSendMagicEffect(getThingPos(cid), 29) setPlayerStorageValue(cid, 10000, 1) talkState[talkUser] = 0 return true else selfSay("Você não trouxe a quantidade de seeds que eu preciso. Me traga " ..quantidade_item.. " seeds para prosseguir com a missão.", cid) talkState[talkUser] = 0 return true end return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Terceiro NPC Agora com o terceiro e último NPC, vá em Data/NPC e crie um arquivo Peter.xml e adicione o código dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Peter" script="Peter.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="1413" head="114" body="119" legs="114" feet="114" corpse="2212"/> <parameters> <parameter key="message_greet" value="Olá |PLAYERNAME|, o que você procura aqui? Diga {help}, {ajuda} ou {missão} para mais informações."/> </parameters> </npc> E vá em Data/NPC/Scripts e crie um arquivo Peter.lua e adicione o código dentro: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end -- VARIÁVEIS -- local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid msg = string.lower(msg) local nome_segundo_npc = "Joey" ----------------------------------- [ DIALOGO COM NPC] --------------------------------- if msgcontains(msg, 'help') or msgcontains(msg, 'ajuda') or msgcontains(msg, 'missao') then if getPlayerStorageValue(cid, 10000) == 1 then -- VERIFICA SE FALOU COM SEGUNDO NPC if getPlayerStorageValue(cid, 10001) == 1 then -- VERIFICA SE TERMINOU A TASK selfSay("Você já completou minha missão.", cid) talkState[talkUser] = 0 return true else selfSay("Preciso que você derrote alguns {Charmanders} para mim. Você quer fazer essa missão?", cid) talkState[talkUser] = 1 return true end else selfSay("Você deve falar com o NPC " ..nome_segundo_npc.. " para conseguir fazer minha missão.", cid) talkState[talkUser] = 0 return true end elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim') or (msgcontains(msg, 'task'))) and talkState[talkUser] == 1 then local id_item = 12545 local quantidade_item = 1 local exp = 10000 if getPlayerStorageValue(cid, 10002) == 1 then selfSay("Você completou minha missão! Receba sua recompensa.", cid) doPlayerAddExp(cid, exp) doPlayerAddItem(cid, id_item, quantidade_item) doSendAnimatedText(getThingPos(cid), exp, 27) setPlayerStorageValue(cid, 72451, 1) talkState[talkUser] = 0 return true else if getPlayerStorageValue(cid, 10002) < 0 then selfSay("Vá derrotar todos os {Charmanders} para mim.") setPlayerStorageValue(cid, 35000, 0) talkState[talkUser] = 0 return true elseif getPlayerStorageValue(cid, 10002) == 0 then selfSay("Você ainda não derrotou todos os {100 Charmanders}. Termine a missão primeiro antes de falar comigo.") talkState[talkUser] = 0 return true end return true end return true elseif (msgcontains(msg, 'no') or msgcontains(msg, 'não')) and talkState[talkUser] == 1 then selfSay("Ok, fale comigo novamente caso queira fazer minha missão.", cid) talkState[talkUser] = 0 return true end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora é a configuração da task. Vá em Data/Creaturescripts/Scripts crie um arquivo chamado task_peter.lua e adicione o código dentro: local nome_terceiro_npc = "Peter" local storage_npc = 10002 local storage_contador = 10003 local pokemon = { [1] = {name = "Charmander", count = 100}, } local nome = pokemon[1].name local restante function onKill(cid, target) for _, t in ipairs(pokemon) do local quantidade = t.count if getCreatureName(target) == nome then if getPlayerStorageValue(cid, storage_npc) == 0 then if getPlayerStorageValue(cid, storage_contador) == quantidade then doPlayerSendTextMessage(cid, 27, "Não há mais " ..nome.. " para derrotar.") doPlayerSendTextMessage(cid, 20, "Parabéns! Você concluiu a task do " ..nome_terceiro_npc) setPlayerStorageValue(cid, storage_contador, getPlayerStorageValue(cid, storage_contador) + 1) setPlayerStorageValue(cid, storage_npc, 1) return true elseif getPlayerStorageValue(cid, storage_contador) < quantidade then -- AS STORAGES COMEÇAM COM -1, ENTÃO NESSA PARTE EU APENAS DEFINO COMO 0 PARA NA LINHA SEGUINTE JÁ IR PARA 1. NÃO COLOQUE RETURN NESSE LAÇO PORQUE VAI ENCERRAR O ESCOPO E NÃO VAI CONTAR CORRETAMENTE -- if getPlayerStorageValue(cid, storage_contador) < 0 then setPlayerStorageValue(cid, storage_contador, 0) end setPlayerStorageValue(cid, storage_contador, getPlayerStorageValue(cid, storage_contador) + 1) restante = quantidade - getPlayerStorageValue(cid, storage_contador) doPlayerSendTextMessage(cid, 27, "Faltam " ..restante.. " " ..nome.. "s para derrotar.") return true end elseif (getPlayerStorageValue(cid, storage_npc) < 0) or (getPlayerStorageValue(cid, storage_npc) > 0) then return true end return true end return true end end Agora vá em Data/Creaturescripts e abra o creaturescripts.xml e adicione o evento: <event type="kill" name="task_peter" script="task_peter.lua"/> E por último, vá em Data/Creaturescripts/Scripts ou Data/Creaturescripts/Scripts/Player (dependendo da base tem essa divisão de diretório) e procure pelo arquivo login.lua e procure pela parte dos registros de evento e adicione após o último a linha: registerCreatureEvent(cid, "task_peter") Explicação: Pelo que entendi o primeiro NPC não pedirá nada, só dará acesso ao player, então para o player falar com o segundo NPC ele tem que falar com o primeiro antes! Eu deixei também o valor das storages em sequência para ficar mais fácil de alterar, e deixei o segundo com o valor 10000 como pediu. Eu tinha feito os scripts faz tempo haha, mas eu estava testando na base DXP e nela não funciona o evento onKill, não da erro mas não funciona haha, ai perdi um tempinho até descobrir kk. Mas está ai a série de missão de npc. Testei aqui e todos os NPCs estão funcionando normalmente e a task do creaturescript está funcionando normal também, mas qualquer problema me fale.
  12. Poste o script Exp2.0.lua e Some Functions.lua
  13. Yan Oliveira

    Script Bau

    Olá caro amigo, vá em Data/Actions/Scripts e crie um arquivo chamado quest_bau.lua (Ou com o nome de sua preferência, só não esqueça de colocar o nome do arquivo corretamente em actions.xml), e salve o arquivo com a codificação ANSI, para evitar erro no console. Adicione o código dentro do arquivo: function onUse(cid, item, frompos, item2, topos) -- VARIÁVEIS -- local storage = 33200 -- STORAGE E VALOR DO UNIQUE ID local id_item = 16689 -- ID DO ITEM local quantidade_item = 1 -- QUANTIDADE DO ITEM local level_player = 1 -- LEVEL MÍNIMO DO PLAYER PARA FAZER A QUEST ------------------ CÓDIGO ----------------------- if getPlayerStorageValue(cid, storage) <= 0 then -- VERIFICA SE O PLAYER TEM STORAGE (JÁ FEZ A QUEST), NÃO ESQUEÇA DE VER SE ESTA STORAGE ESTÁ DISPONÍVEL, SENÃO MUDE if getPlayerLevel(cid) >= level_player then -- VERIFICA SE O PLAYER TEM O NÍVEL NECESSÁRIO, DEIXEI COMO 1 PORQUE É O MÍNIMO LEVEL DO JOGO. SÓ MUDAR NA VARIÁVEL if getPlayerSlotItem(cid, CONST_SLOT_AMMO).uid < 1 then -- VERIFICA SE O PLAYER TEM ITEM NO SEGUNDO SLOT doPlayerAddItem(cid, id_item, quantidade_item) -- ITEM QUE O PLAYER RECEBE, SÓ MUDAR O ID E QUANTIDADE doSendMagicEffect(getThingPos(cid), 27) -- EFEITO QUE APARECE NO PLAYER AO RECEBER O ITEM setPlayerStorageValue(cid, storage, 1) -- DA STORAGE PARA O PLAYER return true else doPlayerSendTextMessage(cid, 27, "É necessário estar com o segundo slot vazio para fazer essa quest.") -- TEXTO QUE APARECE NO CHAT doPlayerSendCancel(cid, "É necessário estar com o segundo slot vazio para fazer essa quest.") -- TEXTO QUE APARECE NA TELA return true end else doPlayerSendTextMessage(cid, 27, "Você não tem nível necessário para fazer esta quest.") doPlayerSendCancel(cid, "Você não tem nível necessário para fazer esta quest.") return true end else doPlayerSendTextMessage(cid, 27, "Você já fez essa quest.") doPlayerSendCancel(cid, "Você já fez essa quest.") return true end end Agora em Data/Actions, abra o actions.xml e adicione a seguinte tag: <action actionid="36673" event="script" value="quest_bau.lua"/> -- VERIFIQUE O ESTE ACTION ID JÁ ESTÁ SENDO USADO E SE O NOME DO ARQUIVO CASO MUDE ESTÁ CORRETO Deixei tudo comentado para ficar mais fácil para você. Lembrando que tem que colocar o valor da variável storage como uniqueid no baú pelo Remere's. Testei aqui e está funcionando, qualquer problema me avise.
  14. Que legal que conseguiu encontrar o erro ?, será que você não alterou sem querer? As vezes configurando outras coisas você acabou mudando e não percebeu, ou pegou algum outro script que estava em milissegundos.
  15. A área correta para sua dúvida seria em: https://www.xtibia.com/forum/forum/1254-infraestrutura/ Qual foi o erro que deu? Você precisa colocar print da distro e informar o erro, senão fica difícil de conseguir ajudar.
  16. Você colocou o código que te mandei nesse arquivo Ancienthelm.lua?
  17. Eu fiz esse procedimento e ainda continuo com o mesmo problema. Ainda da o erro igual do autor do tópico.
  18. Sem problemas ^^, eu quero que poste o actions.xml completo, não somente a tag do item. E eu estava vendo aqui, e todos os servers com esse script do helmet tem o valor 1800 na propriedade duration nos atributos do items.xml, tem que ver se não é algum outro script que está manipulando o tempo para 4 horas.
  19. Primeiramente você precisa colocar um título intuitivo para sua dúvida para que fique claro para outros usuários ajudar. E você precisa descrever o script que quer, e explicar qual bug está tendo, lembrando que essa área é voltada para pedidos de scripts e não para de bugs. Para resolver bugs, o certo é na área de suporte de script: https://www.xtibia.com/forum/forum/1253-scripts/
  20. Mas você quer que um único item resete todas as storages ou cada item irá resetar storage de determinada quest?
  21. Esta não é a área correta para sua dúvida, o certo seria na parte de infraestrutura, está área é para pedidos de scripts. A área correta seria em: https://www.xtibia.com/forum/forum/1254-infraestrutura/ Sobre sua dúvida, este server você começou a jogar agora nele? Ou você já jogou antes e começou a dar erro agora?
  22. Aparece algum erro na distro?
  23. Yan Oliveira

    ERRO NA DISTRO

    Você disse que o script que um usuário de outro fórum fez removeu o bug da porta (que você nem mencionou no post) mas não solucionou o problema. Ou seja, ficou confuso porque você só mencionou erro de distro e depois citou outro problema. Mostre agora o erro que aparece na distro com o script que fizeram para você.
  24. Yan Oliveira

    SCRIPT DEPOT

    É só criar um um script que adiciona o depot ou cria ele na casa. A questão é, como você quer que seja gerado esse depot? Se é player fazendo alguma ação ou se ele é criado com alguma comando.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...