Postado Novembro 4, 2020 4 anos TFS 0.4 1- Queria um script de um npc que seria tipo um barco, mas ao inves de entregar gold, você pagaria um item pra ele. ou 2- Queria um script de piso q você pisa no sqm e se tiver com 1 item na bp você é teleportado para um lugar (Tipo o livro da poi) o item deve sumir Editado Novembro 4, 2020 4 anos por Orientalz (veja o histórico de edições)
Postado Novembro 4, 2020 4 anos Em (data/npc/scripts) crie teleport.lua dentro coloque Spoiler local tab = { pos = {x = 123, y = 456, z = 7}, -- posição x, y, z do local a teleportar o player item = {5432, 1}, -- {itemID, count} price = 0 } 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, 'teleport')) then talkState[talkUser] = 1 selfSay('Are you sure?', cid) selfSay('Remember..you need '..tab.item[2]..' '..getItemNameById(tab.item[1])..' and '..tab.price..' crystal coins to be teleported.', cid) elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if (getPlayerItemCount(cid, tab.item[1]) >= tab.item[2] and doPlayerRemoveMoney(cid, tab.price * 10000)) then doTeleportThing(cid, tab.pos) doPlayerRemoveItem(cid, tab.item[1], tab.item[2]) doPlayerRemoveMoney(cid, tab.price * 10000) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) selfSay('Have a good trip.', cid) else talkState[talkUser] = 0 selfSay('I can not teleport you. You do not have the required items.', cid) end elseif (msgcontains(msg, 'no') and talkState[talkUser] == 1) then talkState[talkUser] = 0 selfSay('Okay, maybe another time.', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Em (data/npc) crie teleport.xml dentro coloque Spoiler <npc name="Teleporter Man" script="data/npc/scripts/teleport.lua" access="5" lookdir="1"> <health now="1000" max="1000"/> <look type="123" head="45" body="67" legs="79" feet="10" addons="1"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|. I can {teleport} you to an area." /> </parameters> </npc> Ajudei?? Rep+ ? Editado Novembro 4, 2020 4 anos por Thony D. Serv (veja o histórico de edições)
Postado Novembro 4, 2020 4 anos Autor 33 minutos atrás, Thony D. Serv disse: Em (data/npc/scripts) crie teleport.lua dentro coloque Mostrar conteúdo oculto local tab = { pos = {x = 123, y = 456, z = 7}, -- posição x, y, z do local a teleportar o player item = {5432, 1}, -- {itemID, count} price = 0 } 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, 'teleport')) then talkState[talkUser] = 1 selfSay('Are you sure?', cid) selfSay('Remember..you need '..tab.item[2]..' '..getItemNameById(tab.item[1])..' and '..tab.price..' crystal coins to be teleported.', cid) elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if (getPlayerItemCount(cid, tab.item[1]) >= tab.item[2] and doPlayerRemoveMoney(cid, tab.price * 10000)) then doTeleportThing(cid, tab.pos) doPlayerRemoveItem(cid, tab.item[1], tab.item[2]) doPlayerRemoveMoney(cid, tab.price * 10000) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) selfSay('Have a good trip.', cid) else talkState[talkUser] = 0 selfSay('I can not teleport you. You do not have the required items.', cid) end elseif (msgcontains(msg, 'no') and talkState[talkUser] == 1) then talkState[talkUser] = 0 selfSay('Okay, maybe another time.', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Em (data/npc) crie teleport.xml dentro coloque Mostrar conteúdo oculto <npc name="Teleporter Man" script="data/npc/scripts/teleport.lua" access="5" lookdir="1"> <health now="1000" max="1000"/> <look type="123" head="45" body="67" legs="79" feet="10" addons="1"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|. I can {teleport} you to an area." /> </parameters> </npc> Ajudei?? Rep+ ? Como remove a parte do price man?
Postado Novembro 4, 2020 4 anos 2- Da para fazer da seguinte forma e que eu consegui fazer foi: O player passa pelo tile perde o item, porém não é teleportado, da para você colocar um portal logo na frente do tile para o player ser teleportado para a pos desejada. caso queira utilizar, tá ai: Em movements/script/crie um arquivo.lua e coloque: Spoiler function onStepIn(cid, item, position, fromPosition) local id,amount = 2419,1 -- id, quantidade para poder passar pelo tile if not doPlayerRemoveItem(cid, id, amount) then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, 25, "Você só pode passar se tiver " .. amount .. " " .. getItemNameById(id) .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end return true end Em movements.xml adiciona: <movevent type="StepIn" actionid="25364" event="script" value="nomedoarquivo.lua"/> Configurando: actionid="25364" -- Action que você coloca na tile no RME. Editado Novembro 4, 2020 4 anos por Nysman (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.