Ir para conteúdo

Featured Replies

Postado

Olá, estou com um projeto custom rpg do qual me deparei com dois seguintes problemas

 

1 - Erro ao usar key

Criei uma quest, ela entrega a key, setei uma action id na key e na porta mas a porta fica só locked. Gostaria de abrir ela com a chave adquirida na quest para abrir a porta e ela fechar na sequencia ou ela abrir e fechar normalmente com a key.

 

2  -  Npc de task

 Na realidade não sei como montar o script de tempo, gostaria de um npc com task diária, semanal e mensal. Sendo que a semanal e mensal teriam maior variedade de monstros.

 Ex: Você precisa caçar 5 dragon lords para quest diária

 Você precisa caçar 5 giant spiders e 1 the old widow para quest semanal

 Você precisa caçar 5 mummy, 5 faraós e ter concluido ao menos 3 quests semanais.

 

3  -  Acento em scripts

 Alguns npcs estão rodando normalmente com acento, porém os npcs que possuem trade estão bugando os acentos, por exemplo "Olá" ficaria Ol%@a.

 ( Isso é o de menor importância, gostaria de fazer somente pra deixar o servidor bem polido.

 

Agradeço a atenção desde já.

Postado

<?xml version="1.0" encoding="ISO-8859-1"?>
<npc name="Caçador de Dragon Lord" script="data/npc/scripts/NpcDragonLord.lua" floorchange="0" walkinterval="0">
    <health now="100" max="100"/>
    <look type="39" head="24" body="25" legs="100" feet="118" addons="0"/>
    <parameters>
        <parameter key="message_greet" value="Olá |PLAYERNAME|, você gostaria de fazer uma {missao}?" />
    </parameters>
</npc>


 

------  /\ Arquivo NPC XML 

 

Para TFS 0.4

------ \/ Arquivo .Lua do Npc

 

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

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
local qntdade = 1800
local stoTime = 96494
local stoKill = 96495
local premio = 129385600 --em exp!
local msg = string.lower(msg)
local left = math.ceil((getPlayerStorageValue(cid, stoTime) - os.time())/(24 * 60 * 60)) --nao mexe!


if (msgcontains(msg, 'task') or msgcontains(msg, 'missao')) then 
if getPlayerStorageValue(cid, stoTime) ~= -1 and left > 0 and getPlayerStorageValue(cid, stoKill) > 0 then
local faltaMatar = getPlayerStorageValue(cid, stoKill)
local jaMatou = math.abs(getPlayerStorageValue(cid, stoKill)-qntdade)
local prazo = os.date("%d/%m/%y %X", getPlayerStorageValue(cid, stoTime))
selfSay("Você ainda não matou os "..qntdade.." dragons lord, atualmente você matou ".. (jaMatou)..", resta "..faltaMatar..". Seu prazo é de até "..prazo..".", cid)
talkState[talkUser] = 0
return true
elseif getPlayerStorageValue(cid, stoTime) ~= -1 and left <= 0 and getPlayerStorageValue(cid, stoKill) ~= -1 then
selfSay("Infelismente você não matou as "..qntdade.." dragons lord a tempo. Se você quiser, você pode tentar fazer denovo a missao.", cid)
setPlayerStorageValue(cid, stoTime, -1)
setPlayerStorageValue(cid, stoKill, -1)
talkState[talkUser] = 0
return true
elseif getPlayerStorageValue(cid, stoTime) ~= -1 and left > 0 and getPlayerStorageValue(cid, stoKill) == -1 then
local prazo = os.date("%d/%m/%y %X", getPlayerStorageValue(cid, stoTime))
selfSay("Você tem que esperar pelo menos 1 semana para poder pegar essa tarefa denovo. O prazo de acaba dia ".. prazo..".", cid)
talkState[talkUser] = 0
return true
elseif getPlayerStorageValue(cid, stoTime) ~= -1 and left > 0 and getPlayerStorageValue(cid, stoKill) == 0 then
selfSay("Obrigado! você matou os "..qntdade.." dragons lord em menos de 1 semana. Aqui esta sua recompensa! Lembre-se que você pode fazer esta task quantas vezes quiser,desde que tenha concluído 1 semana contado a partir do dia de inicio.", cid)
doPlayerAddExp(cid, premio)    --premio
setPlayerStorageValue(cid, stoKill, -1)
talkState[talkUser] = 0
return true
else
if getPlayerStorageValue(cid, stoTime) ~= -1 and getPlayerStorageValue(cid, stoKill) == -1 then
setPlayerStorageValue(cid, stoTime, -1)    --soh pra evitar problemas...
end
selfSay("Olá! Eu sou caçador de dragons lord. Você quer me ajudar a matar dragons lord?", cid)
talkState[talkUser] = 1
end

elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then
selfSay("Ótimo! Você precisa matar pelo menos "..qntdade.." Dragons Lord em um prazo de 1 semana para eu te dar a recompensa. Aceita?", cid)
talkState[talkUser] = 2

elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 2 then
local semana = 7 * 24 * 60 * 60
setPlayerStorageValue(cid, stoTime, os.time()+semana)
setPlayerStorageValue(cid, stoKill, qntdade)
local sto = getPlayerStorageValue(cid, stoTime)
selfSay("Você já pode começar a matar Dragons Lord! Volte aqui quando matar "..qntdade.." dragons lord para ser recompensado. O prazo é até ".. os.date("%d/%m/%y %X", sto) ..".", cid)

end

return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

---- Adicione Essa Linha no Monstro Dragon Lord Depois do Loot

<script>
<event name="TaskDragonLord"/>
</script>

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

Postado

@diegokenshin Obrigado amigo! Vou testar e aviso aqui qualquer BO, mas pelo que eu vi é uma task só de DL é isso? Essa seria a semanal? E ele consegue setar um storage ou algo assim pra task mensal identificar que ele cumpriu ao menos 3 semanais? Desculpe a noobice XD

Postado

ela e uma task de DL.. semanal  vc pode fazer em 1 Semana a task. caso passe 1 semana ela zera e tem que pedir a missao para o npc novamente. ai pode ser feito essa task toda semana repetidas. 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo