Postado Dezembro 20, 2020 4 anos Alguém poderia me ajudar nn sei ND sobre script quero criar um npc que eu inicie uma Quest e o players tenha que matar 7 bosses quando o player matar o Boss final o npc dá uma outft a ele e deixa ele passar pra sala das recompensas onde ele pegue x item no baú quem puder me ajudar agradeço muito Editado Dezembro 20, 2020 4 anos por Fabricante Palavras erradas (veja o histórico de edições)
Postado Dezembro 20, 2020 4 anos Este tópico foi movido para a seção de Suporte Otserv. https://github.com/italoxxx1
Postado Dezembro 20, 2020 4 anos Autor 8 minutos atrás, ITALOx disse: Este tópico foi movido para a seção de Suporte Otserv. Obgd primeiro post Aki nn sei muito bem RS
Postado Dezembro 20, 2020 4 anos Não sei se vai ser do seu gosto, segue: NPC/crie um arquivo chamado james.xml ou como preferir e adicione: Spoiler <?xml version="1.0" encoding="UTF-8"?> <npc name="Heren, Primeira Missao" script="james.lua" access="3" lookdir="2" walkinterval="3000" floorchange="0"> <mana now="800" max="800"/> <health now="132" max="200"/> <look type="128" head="58" body="68" legs="109" feet="131" addons="1"/> <parameters> <parameter key="message_greet" value="Olá |PLAYERNAME|, preciso de {ajuda}, existem vermes que veêm de um lugar desconhecido e estão acabando com minhas plantações! "/> <parameter key="module_keywords" value="1" /> </parameters></npc> Agora em NPC/Script crie um arquivo chamado james.lua e adicione: Spoiler local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local quest = 76669 local reward = 70000 local stor = 4151 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) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if(not npcHandler:isFocused(cid)) then return false elseif msgcontains(msg, "sim") and talkState[talkUser] == 1 then npcHandler:say("Muito obrigado! Você será muito bem recompensado {ok}?", cid) talkState[talkUser] = 2 elseif msgcontains(msg, "ok") and talkState[talkUser] == 2 then npcHandler:say("Certo, entre nesse portal, seja cauteloso! Apresse-se!", cid) setPlayerStorageValue(cid, quest, 2) talkState[talkUser] = 0 elseif msgcontains(msg, "ajuda") then local str = getPlayerStorageValue(cid, quest) if(str < 2) then npcHandler:say("Aventureiro, eu preciso que você limpe o lugar de onde esses vermes veêm! Elimine 20 rotworms para mim? {sim} ", cid) talkState[talkUser] = 1 return true elseif(str == 2) then npcHandler:say("Você iniciou missão, volte quando estiver completa.", cid) elseif(str == 3) then npcHandler:say("Muito obrigado por eliminar essas pragas! Aqui está sua recompensa.", cid) setPlayerStorageValue(cid, stor, 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você recebeu uma Storage para ter acesso MUUUUUAAH.") setPlayerStorageValue(cid, quest, 4) elseif(str == 4) then npcHandler:say("Você tem feito o suficiente para mim, Siga ao Norte e encontre Arkires, ele precisa de sua ajuda! ", cid) end talkState[talkUser] = 0 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora em CreatureScript/Script/ crie um arquivo chamado count_quest e adicone: Spoiler local monsters = {--name = storage ["rotworm"] = 55004 } function onKill(cid, target) local monster = monsters[getCreatureName(target):lower()] if(isPlayer(target) == FALSE and monster and getPlayerStorageValue(cid, 76669) == 2) then if getPlayerStorageValue(cid, monster) < 20 then local killedMonsters = getPlayerStorageValue(cid, monster) if(killedMonsters == -1) then killedMonsters = 1 end setPlayerStorageValue(cid, monster, killedMonsters + 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você matou " .. killedMonsters .. " de 20 rotworms.") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você concluiu a missão de eliminar os vermes!") setPlayerStorageValue(cid, 76669, 3) end end return TRUE end Agora em creatureScript.xml add: <event type="kill" name="quest_count" script="count_quest.lua"/> ainda em creaturescript/script/login.lua procure por algum registerCreatureEvent e embaixo adiciona: registerCreatureEvent(cid, "quest_count") Ai você pode cria um local que o player vai poder ter acesso só quando falar com esse NPC terminando a missão, basta adicionar um local com uma porta e adicionar essa action id: 4151 depois adicione em Action/Script/Quests/ nomedaquest.lua: Spoiler function onUse(cid, item, frompos, item2, topos) local storage = 4151 -- coloque o storage aqui if getPlayerStorageValue(cid, storage) > 0 then doTeleportThing(cid, topos) doSendMagicEffect(topos, 10) else doPlayerSendTextMessage(cid, 22, "Você não possui o storage para entrar na porta!") end return TRUE end Por ultimo em Actions.xml add a tang: <action actionid="4151" event="script" value="quests/nomedaquest.lua"/>
Postado Dezembro 21, 2020 4 anos Autor 1 hora atrás, Nysman disse: Não sei se vai ser do seu gosto, segue: NPC/crie um arquivo chamado james.xml ou como preferir e adicione: Mostrar conteúdo oculto <?xml version="1.0" encoding="UTF-8"?> <npc name="Heren, Primeira Missao" script="james.lua" access="3" lookdir="2" walkinterval="3000" floorchange="0"> <mana now="800" max="800"/> <health now="132" max="200"/> <look type="128" head="58" body="68" legs="109" feet="131" addons="1"/> <parameters> <parameter key="message_greet" value="Olá |PLAYERNAME|, preciso de {ajuda}, existem vermes que veêm de um lugar desconhecido e estão acabando com minhas plantações! "/> <parameter key="module_keywords" value="1" /> </parameters></npc> Agora em NPC/Script crie um arquivo chamado james.lua e adicione: Mostrar conteúdo oculto local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local quest = 76669 local reward = 70000 local stor = 4151 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) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if(not npcHandler:isFocused(cid)) then return false elseif msgcontains(msg, "sim") and talkState[talkUser] == 1 then npcHandler:say("Muito obrigado! Você será muito bem recompensado {ok}?", cid) talkState[talkUser] = 2 elseif msgcontains(msg, "ok") and talkState[talkUser] == 2 then npcHandler:say("Certo, entre nesse portal, seja cauteloso! Apresse-se!", cid) setPlayerStorageValue(cid, quest, 2) talkState[talkUser] = 0 elseif msgcontains(msg, "ajuda") then local str = getPlayerStorageValue(cid, quest) if(str < 2) then npcHandler:say("Aventureiro, eu preciso que você limpe o lugar de onde esses vermes veêm! Elimine 20 rotworms para mim? {sim} ", cid) talkState[talkUser] = 1 return true elseif(str == 2) then npcHandler:say("Você iniciou missão, volte quando estiver completa.", cid) elseif(str == 3) then npcHandler:say("Muito obrigado por eliminar essas pragas! Aqui está sua recompensa.", cid) setPlayerStorageValue(cid, stor, 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você recebeu uma Storage para ter acesso MUUUUUAAH.") setPlayerStorageValue(cid, quest, 4) elseif(str == 4) then npcHandler:say("Você tem feito o suficiente para mim, Siga ao Norte e encontre Arkires, ele precisa de sua ajuda! ", cid) end talkState[talkUser] = 0 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora em CreatureScript/Script/ crie um arquivo chamado count_quest e adicone: Mostrar conteúdo oculto local monsters = {--name = storage ["rotworm"] = 55004 } function onKill(cid, target) local monster = monsters[getCreatureName(target):lower()] if(isPlayer(target) == FALSE and monster and getPlayerStorageValue(cid, 76669) == 2) then if getPlayerStorageValue(cid, monster) < 20 then local killedMonsters = getPlayerStorageValue(cid, monster) if(killedMonsters == -1) then killedMonsters = 1 end setPlayerStorageValue(cid, monster, killedMonsters + 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você matou " .. killedMonsters .. " de 20 rotworms.") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você concluiu a missão de eliminar os vermes!") setPlayerStorageValue(cid, 76669, 3) end end return TRUE end Agora em creatureScript.xml add: <event type="kill" name="quest_count" script="count_quest.lua"/> ainda em creaturescript/script/login.lua procure por algum registerCreatureEvent e embaixo adiciona: registerCreatureEvent(cid, "quest_count") Ai você pode cria um local que o player vai poder ter acesso só quando falar com esse NPC terminando a missão, basta adicionar um local com uma porta e adicionar essa action id: 4151 depois adicione em Action/Script/Quests/ nomedaquest.lua: Mostrar conteúdo oculto function onUse(cid, item, frompos, item2, topos) local storage = 4151 -- coloque o storage aqui if getPlayerStorageValue(cid, storage) > 0 then doTeleportThing(cid, topos) doSendMagicEffect(topos, 10) else doPlayerSendTextMessage(cid, 22, "Você não possui o storage para entrar na porta!") end return TRUE end Por ultimo em Actions.xml add a tang: <action actionid="4151" event="script" value="quests/nomedaquest.lua"/> Blz mano vou testar Aki e ver se dá bom 1 hora atrás, Nysman disse: Não sei se vai ser do seu gosto, segue: NPC/crie um arquivo chamado james.xml ou como preferir e adicione: Mostrar conteúdo oculto <?xml version="1.0" encoding="UTF-8"?> <npc name="Heren, Primeira Missao" script="james.lua" access="3" lookdir="2" walkinterval="3000" floorchange="0"> <mana now="800" max="800"/> <health now="132" max="200"/> <look type="128" head="58" body="68" legs="109" feet="131" addons="1"/> <parameters> <parameter key="message_greet" value="Olá |PLAYERNAME|, preciso de {ajuda}, existem vermes que veêm de um lugar desconhecido e estão acabando com minhas plantações! "/> <parameter key="module_keywords" value="1" /> </parameters></npc> Agora em NPC/Script crie um arquivo chamado james.lua e adicione: Mostrar conteúdo oculto local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local quest = 76669 local reward = 70000 local stor = 4151 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) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if(not npcHandler:isFocused(cid)) then return false elseif msgcontains(msg, "sim") and talkState[talkUser] == 1 then npcHandler:say("Muito obrigado! Você será muito bem recompensado {ok}?", cid) talkState[talkUser] = 2 elseif msgcontains(msg, "ok") and talkState[talkUser] == 2 then npcHandler:say("Certo, entre nesse portal, seja cauteloso! Apresse-se!", cid) setPlayerStorageValue(cid, quest, 2) talkState[talkUser] = 0 elseif msgcontains(msg, "ajuda") then local str = getPlayerStorageValue(cid, quest) if(str < 2) then npcHandler:say("Aventureiro, eu preciso que você limpe o lugar de onde esses vermes veêm! Elimine 20 rotworms para mim? {sim} ", cid) talkState[talkUser] = 1 return true elseif(str == 2) then npcHandler:say("Você iniciou missão, volte quando estiver completa.", cid) elseif(str == 3) then npcHandler:say("Muito obrigado por eliminar essas pragas! Aqui está sua recompensa.", cid) setPlayerStorageValue(cid, stor, 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você recebeu uma Storage para ter acesso MUUUUUAAH.") setPlayerStorageValue(cid, quest, 4) elseif(str == 4) then npcHandler:say("Você tem feito o suficiente para mim, Siga ao Norte e encontre Arkires, ele precisa de sua ajuda! ", cid) end talkState[talkUser] = 0 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora em CreatureScript/Script/ crie um arquivo chamado count_quest e adicone: Mostrar conteúdo oculto local monsters = {--name = storage ["rotworm"] = 55004 } function onKill(cid, target) local monster = monsters[getCreatureName(target):lower()] if(isPlayer(target) == FALSE and monster and getPlayerStorageValue(cid, 76669) == 2) then if getPlayerStorageValue(cid, monster) < 20 then local killedMonsters = getPlayerStorageValue(cid, monster) if(killedMonsters == -1) then killedMonsters = 1 end setPlayerStorageValue(cid, monster, killedMonsters + 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você matou " .. killedMonsters .. " de 20 rotworms.") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você concluiu a missão de eliminar os vermes!") setPlayerStorageValue(cid, 76669, 3) end end return TRUE end Agora em creatureScript.xml add: <event type="kill" name="quest_count" script="count_quest.lua"/> ainda em creaturescript/script/login.lua procure por algum registerCreatureEvent e embaixo adiciona: registerCreatureEvent(cid, "quest_count") Ai você pode cria um local que o player vai poder ter acesso só quando falar com esse NPC terminando a missão, basta adicionar um local com uma porta e adicionar essa action id: 4151 depois adicione em Action/Script/Quests/ nomedaquest.lua: Mostrar conteúdo oculto function onUse(cid, item, frompos, item2, topos) local storage = 4151 -- coloque o storage aqui if getPlayerStorageValue(cid, storage) > 0 then doTeleportThing(cid, topos) doSendMagicEffect(topos, 10) else doPlayerSendTextMessage(cid, 22, "Você não possui o storage para entrar na porta!") end return TRUE end Por ultimo em Actions.xml add a tang: <action actionid="4151" event="script" value="quests/nomedaquest.lua"/> entao mano quase isso só que tem que ser um npc que de um outft no final e mata um boss de cada vez tipo mata reporta ai ele da acesso ao tp do boss mata reporta são 5 e depois o boss final que é o sexto ai o cara passe pelo teleporte e ja era pega os itens no bau Editado Dezembro 21, 2020 4 anos por Fabricante palavras erradas (veja o histórico de edições)
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.