Postado Novembro 1, 2014 10 anos eu queria um npc que teleportasse um player para um determinado local porem só se eles estivesse em um determinado nivel por exemplo: teleportar um player level 200 para baixo para uma arena, apenas no level 200 para baixo. ou uma porta que se abrisse apenas para players do nivel 200 para baixo, nada mais que isso obrigado
Postado Novembro 1, 2014 10 anos npcarena.lua (data/npc/scripts): local tab = { level = 200, pos = {x = 123, y = 456, z = 7} } 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 if (msgcontains(msg, 'arena')) then talkState[talkUser] = 1 selfSay('Are you sure you want to be teleported to the arena?', cid) elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if (getPlayerLevel(cid) <= tab.level) then talkState[talkUser] = 0 doTeleportThing(cid, tab.pos) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) else talkState[talkUser] = 0 selfSay('I can only teleport players with level '..tab.level..' or less.', cid) end elseif (msgcontains(msg, 'no') and talkState[talkUser] == 1) then talkState[talkUser] = 0 selfSay('Okay.', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Arena.xml (data/npc): <npc name="Arena" script="data/npc/scripts/npcarena.lua" access="5" lookdir="1"> <health now="1000" max="1000"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|. I can teleport you to the {arena}." /> </parameters> </npc> leveldoor.lua (data/actions/scripts): local tab = { lvl = 200, msg = "Apenas players até o level "..tab.lvl.." podem entrar." } function onUse(cid, item, frompos, item2, topos) if getPlayerLevel(cid) <= tab.lvl then doTeleportThing(cid, topos) doSendMagicEffect(frompos, CONST_ME_MAGIC_BLUE) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tab.msg) doSendMagicEffect(frompos, CONST_ME_POFF) end return true end Tag - actions.xml (data/actions): <action actionid="ACTIONID" script="leveldoor.lua"/> Editado Novembro 1, 2014 10 anos por Suicide (veja o histórico de edições) The corrupt fear us. The honest support us. The heroic join us.
Postado Novembro 1, 2014 10 anos Visando uns negócios, que vai dar um monte de erros.. Nada haver com código, mas quando você colocou no tópico, eles viraram uns símbolos. Tipo: <action actionid="ACTIONID" script="leveldoor.lua"/> Tony Araújo
Postado Novembro 1, 2014 10 anos Visando uns negócios, que vai dar um monte de erros.. Eu sei disso, não sou cego. Postei tudo corretamente, o erro foi feito pelo redirecionamento do fórum, não foi erro meu. Enfim editei a resposta pra corrigir esses problemas nos codes. The corrupt fear us. The honest support us. The heroic join us.
Postado Novembro 1, 2014 10 anos Eu sei disso, não sou cego. Postei tudo corretamente, o erro foi feito pelo redirecionamento do fórum, não foi erro meu. Enfim editei a resposta pra corrigir esses problemas nos codes. Por acaso você leu o que eu falei? Nada haver com código, mas quando você colocou no tópico, eles viraram uns símbolos. Tony Araújo
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.