Ir para conteúdo
  • Cadastre-se

(Resolvido)NPC de quest para Ot 8.60


Ir para solução Resolvido por luanluciano93,

Posts Recomendados

Olá amigos estou aqui mais uma vez para pedir uma coisa, um NPC que peça items para o player e se o player trazer os itens ele ganha um prêmio, só que depois que ele pegasse o prêmio ele não pudesse fazer a quest novamente colocassem tipo uma storage que checa se ele ja fez a quest entendem? Por favor se puderem ajudar agradeço muito meu Ot é 8.60 obrigado comunidade :).

pedir.jpg

Link para o post
Compartilhar em outros sites
  • Respostas 6
  • Created
  • Última resposta

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Popular Posts

local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 FUNCAO_NOME(cid

Olá amigos estou aqui mais uma vez para pedir uma coisa, um NPC que peça items para o player e se o player trazer os itens ele ganha um prêmio, só que depois que ele pegasse o prêmio ele não pudesse fazer a quest novamente colocassem tipo uma storage que checa se ele ja fez a quest entendem? Por favor se puderem ajudar agradeço muito meu Ot é 8.60 obrigado comunidade .

O tópico foi movido para a área correta, preste mais atenção da próxima vez! Leia as regras do fórum: Hidden Content Give reaction to this post to see the hidden content. Este tópico foi movido: De: "OTServ → Scripting → Monsters e NPCs" Para: "OTServ → Suporte OTServ → Suporte de Scripts"

O tópico foi movido para a área correta, preste mais atenção da próxima vez!

Leia as regras do fórum:

Hidden Content

    Give reaction to this post to see the hidden content.

Este tópico foi movido:

De: "OTServScriptingMonsters e NPCs"

Para: "OTServSuporte OTServSuporte de Scripts"

Link para o post
Compartilhar em outros sites

Opa desculpa ae sou novo aqui :) não sei nada dessas coisas

pedir.jpg

Link para o post
Compartilhar em outros sites

um modelo simples de npc para você entender ...

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

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 FUNCAO_NOME(cid, message, keywords, parameters, node)
    if(not npcHandler:isFocused(cid)) then
        return false
    end
        if getPlayerItemCount(cid,2516) >= 1 then -- SE TIVER 1 OU MAIS ITEM COM ID 2516
        if doPlayerRemoveItem(cid,2516,1) then -- remove 1 ITEM DO ITEM COM ID 2516
            npcHandler:say('Here is your item!', cid) -- MENSAGEM AO REMOVER O ITEM
            doPlayerAddItem(cid,5908,1) -- ADD 1 ITEM COM ID 5908
        end
        else
            npcHandler:say('You don\'t have these items!', cid)
    end
end

local node2 = keywordHandler:addKeyword({'teste'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'vocÊ quer testar a função desse script?'})
    node2:addChildKeyword({'yes'}, FUNCAO_NOME, {npcHandler = npcHandler, onlyFocus = true, reset = true})
    node2:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Até mais.', reset = true})

npcHandler:addModule(FocusModule:new())

Se tentar ler ela, você entenderá facilmente ... 

DICA: use o notepad c++ ao envés do bloco de notas.

Link para o post
Compartilhar em outros sites

Eu prestei atenção que ele não storage o players consiguira fazer a quest denovo com ele?

pedir.jpg

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 Under
      Apresentando o Tibia-IA: A IA para Desenvolvimento de Servidores Tibia! 
       O que é o Tibia-IA?
      Um modelo de IA especializado para Tibia! Ele está atualmente em teste gratuito, e eu adoraria que vocês o experimentassem. Basta acessar https://ai.tibiaking.com, criar uma conta e começar a usar totalmente de graça! 
       Versão Experimental Fechada
      Atualmente, algumas funcionalidades ainda estão em desenvolvimento. No momento, apenas a geração de scripts está disponível para o público.
      Se encontrarem qualquer problema nos scripts gerados, me avisem! Vamos juntos construir a IA mais poderosa para ajudar no desenvolvimento de servidores Tibia!  
      Contato direto discord : underewar
       Acesse agora: https://ai.tibiaking.com
       Como funciona?
       Geração automática de scripts LUA para TFS  Suporte a diferentes eventos, criaturas, NPCs, magias, etc.  Ferramenta em constante evolução para aprimorar o desenvolvimento Novidades em breve confira no site. O acesso ao Tibia-IA está disponível para testes GRATUITOS! Até dia 05/05/2025
      Basta criar uma conta em: https://ai.tibiaking.com
      Utilize a IA para gerar seus scripts de forma simples e rápida
      Envie feedbacks para ajudarmos a tornar a ferramenta ainda melhor!

      Problemas relatar diretamente no meu discord pessoal : underewar
       



    • Por Johncore
      Otg Server Global 

      Somos o Otg Server, projeto baseado no TFS 1.3 e OTX3.2,
      Se trata de um servidor baseado no GLOBAL MAP RL.
      Aqui você encontrará baixo uso de recursos como CPU / memoria, prezamos muito por estabilidade e atualizações constantes.

      Agradecemos primeiramente ao Tibiaking pela oportunidade nos concedida,
      somos parceiros oficiais do Tibiaking.com melhor Forum Brasileiro!

       
        
      Especificações :
      - Global Map FULL RL
      - Maioria das Quests com Quest Log 100%
      - Anti Rollback + Auto Restart 100%
      - Source Otimizada (baixo consumo de CPU e memoria)
      - Sem Bug de Clonar dinheiro (Npcs Refeitos
      - Exercise Training 100%
      - Raids 100%
      - Monstros 100%
       
       
       
       

      Imagens :
       
      THAIS TEMPLE
       

       
      FALCONS
       

       
      NEW ASURAS
       

       
      WZ 4,5,6

       

       

      
      Downloads :
       
      PROJETO OFFICIAL GITHUB: 
      https://github.com/otg-br/global-11x
       
      TUTORIAL PARA COMPILAÇÃO:
      https://github.com/otg-br/global-11x/wiki
       
      EXE compilado WIN11 64bits:
      https://github.com/otg-br/global-11x/blob/main/Executavel compilado win11 64bits.rar
       
      GRUPO WHATSAPP OTG SERVER:
      https://chat.whatsapp.com/EWV3dVvS6nt1em7q23FGu7
       
       
       

       Créditos :
      The Forgotten Server
      Otland
      Mark Samman
      Mattyx Otx
      Erick Nunes
      Johncore
      Otg Server contribuidores
      OTX contribuidores
      Otservbr
      Leu
      Marcomoa
      Marson Schneider
      Leandro Baldissera
       
    • Por Deletera
      Atenção! Os arquivos disponibilizados abaixo são da versão 12.64!
      Para obter otserv 12.64+ atualizado com novas áreas e novos gráficos acesse o github oficial do projeto OTX: https://github.com/opentibiabr/otservbr-global
       
      Servidor feito especialmente para jogadores que gostam do Tibia Oldstyle,
      mas colocado na versao 12 com novas funcionalidades, mounts, outfits e itens.  
       
      Todos Outfits sao frees & Addons coletando itens
       
      PVP clássico, old school times
       
      Spells adaptadas a versao 8.60
       
      Mais de 50 quests na Teleport Room
       
      Tasks e Missions para explorar o mapa
       
      Raids automáticas com novos bosses
       
      Reward System desabilitado, loot tradicional (bem melhor assim, certo?)
       
      Áreas custom e inovadoras como Hogwarts
       
      Em resumo, o OT busca ser simples, resgatando a naturalidade do que era o baiak da versão 8.60 em 2009, mas com implementações 12x+
       
      ◄IMAGENS►
      ◄DATAPACK & DLLS►
      » OTX Baiak Styller 12.64 MediaFire (Scan)
       » OtservBR Dlls & Executável (Windows 64x)
      (Antes de rodar o OT verifique de usar a mesma database e configurar o login no config.lua)
       
      ◄CLIENTS►
      » Tibia Client 12.64 MediaFire (Scan)
      (Para conectar ao cliente 12 (localhost), acesse usando 127.0.0.1_client.exe, localizado na pasta bin.)
       
      ◄WEB►
      » [GesiorAcc] para Tibia 12.64 MediaFire (Scan)
      Instale o XAMP para rodar com a data base e site disponíveis
      (não se esquece de alterar o login e senha no config.lua, para o atual a senha do mysql está como "XIPA2")
       
      » [Data base] acc/email e senha: god/god MediaFire (Scan)
      O OT está configurado para aceitar acc no lugar de email (opcional) para usar as acc de testes é senha 123123
       
      ◄Créditos►
      Waldir Teixeira (Saruman/Deletera) &
       
    • Por L3K0T
      Bom, como todos sabem, existe o shop.lua em servidores 0.4 para receber itens. Muitos deles têm loops infinitos ou fazem uma varredura completa no banco de dados, o que pode deixá-los instáveis. Isso ocorre principalmente quando o script não verifica adequadamente se há itens para processar ou se o banco de dados está sobrecarregado com consultas desnecessárias.
      No entanto, com algumas melhorias, podemos otimizar esse processo, garantindo que o servidor se mantenha estável e eficiente. No nosso exemplo, aplicamos algumas mudanças importantes:
       

       
      Checagem eficiente de itens pendentes: A consulta ao banco de dados foi otimizada para verificar se existem realmente itens pendentes para o jogador. Se não houver itens, o script termina sua execução rapidamente, evitando sobrecarga.
      Evitar loops infinitos: O loop foi ajustado para garantir que, se não houver mais itens para processar, o script saia sem continuar verificando o banco de dados, prevenindo loops desnecessários.
      Logs: Foi adicionado um sistema de logs, onde cada transação bem sucedida do jogador é registrada com data e hora, além de informações sobre o jogador e os itens recebidos.
      Execução controlada com intervalos: Ao invés de fazer consultas contínuas ao banco de dados, o script executa checagens de tempos em tempos, configuráveis pelo parâmetro SQL_interval. Isso distribui as verificações ao longo do tempo e evita que o servidor fique sobrecarregado com solicitações simultâneas.
       
      Segue o scripts:
      data/globalevents/scripts/shop.lua
       
      function getCurrentDateTime() local currentDateTime = os.date("%Y-%m-%d %H:%M:%S") return currentDateTime end function createDirectoryIfNotExists(dir) local command = "mkdir -p " .. dir os.execute(command) end function saveLog(message) local logFilePath = "data/logs/shop/shop.txt" local logDir = "data/logs/shop/" createDirectoryIfNotExists(logDir) local currentDateTime = getCurrentDateTime() local logMessage = string.format("[%s] %s\n", currentDateTime, message) local file = io.open(logFilePath, "a") if file then file:write(logMessage) file:close() else print("Erro ao tentar escrever no arquivo de log.") end end SHOP_MSG_TYPE = 19 SQL_interval = 5 function onThink(interval, lastExecution) local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';") if result_plr:getID() == -1 then return true end local hasMoreItems = false while true do local id = tonumber(result_plr:getDataInt("id")) local cid = getCreatureByName(tostring(result_plr:getDataString("name"))) if isPlayer(cid) then hasMoreItems = true local itemtogive_id = tonumber(result_plr:getDataInt("param1")) local itemtogive_count = tonumber(result_plr:getDataInt("param2")) local add_item_name = tostring(result_plr:getDataString("param6")) local received_item = 0 local full_weight = 0 if isItemRune(itemtogive_id) then full_weight = getItemWeightById(itemtogive_id, 1) else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) end local free_cap = getPlayerFreeCap(cid) if full_weight <= free_cap then local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) received_item = doPlayerAddItemEx(cid, new_item) if received_item == RETURNVALUE_NOERROR then doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, string.format("Você recebeu >> %s << da loja.", add_item_name)) doPlayerSave(cid) db.executeQuery("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") db.executeQuery("UPDATE `z_shop_history` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";") saveLog(string.format("[%s] %s (ID: %d), Você recebeu >> %s << da loja.", getCurrentDateTime(), tostring(result_plr:getDataString("name")), id, add_item_name)) end else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, string.format("Você não tem capacidade suficiente para >> %s <<. Necessário: %.2f oz. Disponível: %.2f oz.", add_item_name, full_weight, free_cap)) saveLog(string.format("[%s] %s (ID: %d), Tentou comprar >> %s <<, mas não tinha capacidade suficiente. Necessário: %.2f oz. Disponível: %.2f oz.", getCurrentDateTime(), tostring(result_plr:getDataString("name")), id, add_item_name, full_weight, free_cap)) end end if not result_plr:next() then break end end result_plr:free() if not hasMoreItems then return false end return true end  
      data/globalevents/globalevents.xml
       
      <globalevent name="shop" interval="30000" script="shop.lua"/>  
       
      *Testado em Myaac
      *Testado em OTX2 8.60
      *Testado em Ubuntu 20.04
      *Não precisa criar pasta, ele mesmo cria.
       
      Com essas melhorias, a performance do servidor foi significativamente melhorada, garantindo que o sistema de loja funcione de forma mais estável e eficiente, sem sobrecarregar o banco de dados ou causar lags. Agora, a transação de itens na loja ocorre de forma mais controlada e com menos chance de erros ou travamentos. by @L3K0T
       
    • Por xWhiteWolf
      Bom galera, tem uma coisa bem simples que nem o tibia global fez e que eu to trazendo aqui pra vocês. Trata-se de um pequeno sistema que fará você sempre virar pra direção do seu target ao atacar.
      Testado em TFS 0.3.6 Cliente 8.54.

      Imagem auto explicativa:




      Chega de atacar de costas! 

      Agora pra instalar é bem tranquilo. Abra um arquivo .lua em data\creaturescripts\scripts chamado target e coloque o seguinte conteudo dentro dele:




      Feito isso adicione essa linha no creaturescripts.xml:
      <event type="attack" name="targetCreature" script="target.lua"/> E para finalizar adicione a seguinte tag em creaturescripts\scripts\login.lua:
      registerCreatureEvent(cid, "targetCreature") Espero que vcs tenham curtido, é algo bem simples mas ninguém havia pensado nisso antes (nem o próprio Tibia), é uma coisa bem básica e que torna o jogo bem mais importante e sério. 


      EDIT:: Usem essa versão que está mais completa, na anterior se o target estivesse na diagonal ele não virava.



  • Estatísticas dos Fóruns

    96849
    Tópicos
    519616
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo