Postado Março 3, 2015 10 anos Fala ai galerinha do Tk, estou trazendo hoje meu 1 script, não posso dizer que é 100% meu pois tive ajuda da lista de funções do Matheus e tirei a ideia do RadBr, então vou colocar 1 credito a eles.O script é de uma quest unica que para acessa-la você deve clicar em uma placa no caso, você pode mudar para outro item se quiser! Funciona da seguinte maneira:O player clica na placa, se ele nunca tiver feito a quest e tiver o level necessario para faze-la ele é teleportado para posição inicial da quest, porém se ele já fez a quest ou não tem o level necessario para fazer ele é teleportado para o templo ou para a posição que você desejar ! Para adicionar você deve ir até data/actions/scripts, copiar e colar um arquivo .lua e renomear ele para questunica.lua, depois apague tudo dentro do arquivo e cole isso: function onUse(cid, item, fromPos, itemEx, toPos) pos = {x = 160, y = 54, z = 7} -- Local da quest caso nunca tenha feito. pos2 = {x = 160, y = 56, z = 7} -- Local para teleportar, caso já tenha feito. local storage = 13909 -- Storage da placa, se for mudar não se esqueça de mudar também no script questunicabau.lua !! local plevel = 16 -- Level minimo para fazer a quest. if getPlayerStorageValue(cid,storage) == -1 then if getPlayerLevel(cid) >= plevel then doTeleportThing(cid,pos) doSendMagicEffect(toPos,2) -- Efeito ao teleportar para a quest, para ver mais efeitos diga /z e o numero do efeito, se quiser mudar é só alterar no valor 2 doSendMagicEffect(fromPos,2) else doPlayerSendTextMessage(cid,25,"Voce precisa ser level "..plevel.." para fazer essa quest.") end else doTeleportThing(cid,pos2) doPlayerSendCancel(cid, "Voce ja fez essa quest!") doSendMagicEffect(pos2,29) -- Efeito ao teleportar para fora da quest, para ver mais efeitos diga /z e o numero do efeito, se quiser mudar é só alterar no valor 2 doSendMagicEffect(fromPos,2) return 1 end end Agora vá em data/actions e abra o actions.xml, depois adicione essa linha: <action uniqueid="13909" script="questunica.lua"/> Então terminamos de adicionar a uniqueid que da acesso a quest, agora vamos adicionar o baú da quest.Vá até data/actions/scripts, copiae e cole um arquivo .lua e renomeie ele para questunicabau.lua, depois apague tudo dentro do arquivo e cole isso: function onUse(cid, item, frompos, item2, topos) storage = 13910 -- Storage do baú da quest. premio = 2393 -- ID do premio da quest. storageplaca = 13909 -- Storage da placa para entrar na quest. Não se esqueça de mudar nos 2 scripts, caso queira mudar. nome = "Demon Helmet" if item.uid == storage then if getPlayerStorageValue(cid,storage) == -1 then doPlayerSendTextMessage(cid,25,"You have found a "..nome..".") doPlayerAddItem(cid,2493,1) setPlayerStorageValue(cid,storage,1) setPlayerStorageValue(cid,storageplaca,1) else doPlayerSendTextMessage(cid,25,"The is empty.") return true end end end Agora vá em data/actions e abra o actions.xml, depois adicione essa linha: <action uniqueid="13910" script="questunicabau.lua"/> Agora para montar a quest no seu OT, você coloca o uniqueid 13909 na placa ou em outro objeto para teleportar o player até a quest e o uniqueid 13910 no baú no final da quest, assim quando ele clicar no baú não poderá fazer novamente a quest. Bom é isso, espero que gostem do script, se tiver algo errado, algo faltando ou até mesmo algo que facilite o uso de outros membros, é só me dizer que eu tento arrumar. Creditos: RadBr 5% - Pela ideia da quest! Matheus 10% - Pela lista de funções, sem ela não teria o script oakpsk.
Postado Março 3, 2015 10 anos Simples mas pode ajudar alguns. Obrigado por compartilhar. Peço que, se possível, leia sobre endentação .. melhora muito a leitura do código, igualmente o espaço depois de vírgulas.Este tópico foi movido: Para: "OTServ → Scripting → Actions e TalkActions" Dê uma lida nessa código que eu refiz do seu script ... quem sabe pode te ajudar aprender mais. local table = { positionTrue = {x = 160, y = 54, z = 7}, -- Local da quest caso nunca tenha feito. positionFalse = {x = 160, y = 56, z = 7}, -- Local para teleportar, caso já tenha feito. storageQuest = 13909, -- Storage da quest. levelMin = 16, rewardQuest = {id_item = 2493, quantidade = 1, nome = "Demon Helmet"} } function onUse(cid, item, fromPos, itemEx, toPos) if item.uid == 13909 then if getPlayerStorageValue(cid, table.storageQuest) < 1 then if getPlayerLevel(cid) >= table.levelMin then doTeleportThing(cid, table.positionTrue) doSendMagicEffect(toPos, 2) else doTeleportThing(cid, table.positionFalse) return doPlayerSendCancel(cid, "Voce precisa ser level superior a ".. table.levelMin ..".") end else doTeleportThing(cid, table.positionFalse) return doPlayerSendCancel(cid, "Voce ja fez essa quest!") end elseif item.uid == 13910 then if getPlayerStorageValue(cid, table.storageQuest) < 1 then doPlayerSendTextMessage(cid, 25, "You have found a ".. table.rewardQuest.nome ..".") doPlayerAddItem(cid, table.rewardQuest.id_item, table.rewardQuest.quantidade) setPlayerStorageValue(cid, table.storageQuest, 1) else doTeleportThing(cid, table.positionFalse) return doPlayerSendCancel(cid, "Voce ja fez essa quest!") end end return true end <action uniqueid="13909" script="questFirst.lua"/> <action uniqueid="13910" script="questFirst.lua"/>
Postado Março 3, 2015 10 anos Autor Simples mas pode ajudar alguns. Obrigado por compartilhar. Peço que, se possível, leia sobre endentação .. melhora muito a leitura do código, igualmente o espaço depois de vírgulas. Este tópico foi movido: Para: "OTServ → Scripting → Actions e TalkActions" Dê uma lida nessa código que eu refiz do seu script ... quem sabe pode te ajudar aprender mais. local table = { positionTrue = {x = 160, y = 54, z = 7}, -- Local da quest caso nunca tenha feito. positionFalse = {x = 160, y = 56, z = 7}, -- Local para teleportar, caso já tenha feito. storageQuest = 13909, -- Storage da quest. levelMin = 16, rewardQuest = {id_item = 2493, quantidade = 1, nome = "Demon Helmet"} } function onUse(cid, item, fromPos, itemEx, toPos) if item.uid == 13909 then if getPlayerStorageValue(cid, table.storageQuest) < 1 then if getPlayerLevel(cid) >= table.levelMin then doTeleportThing(cid, table.positionTrue) doSendMagicEffect(toPos, 2) else doTeleportThing(cid, table.positionFalse) return doPlayerSendCancel(cid, "Voce precisa ser level superior a ".. table.levelMin ..".") end else doTeleportThing(cid, table.positionFalse) return doPlayerSendCancel(cid, "Voce ja fez essa quest!") end elseif item.uid == 13910 then if getPlayerStorageValue(cid, table.storageQuest) < 1 then doPlayerSendTextMessage(cid, 25, "You have found a ".. table.rewardQuest.nome ..".") doPlayerAddItem(cid, table.rewardQuest.id_item, table.rewardQuest.quantidade) setPlayerStorageValue(cid, table.storageQuest, 1) else doTeleportThing(cid, table.positionFalse) return doPlayerSendCancel(cid, "Voce ja fez essa quest!") end end return true end <action uniqueid="13909" script="questFirst.lua"/> <action uniqueid="13910" script="questFirst.lua"/> Nossa, fez 1 diferença enorme, ficou BEM mais facil de entender e bem mais organizado, valeu pela ajuda
Postado Agosto 20, 2015 9 anos Eu adicionei esse Script no meu ot do jeito que o Administrador coloco ali no posto dele vejam se esta certo local table = { positionTrue = {x = 1070, y = 2115, z = 7} positionFalse = {x = 3972, y = 1447, z = 6} storageQuest = 13909 levelMin = 20 rewardQuest = {id_item = 2493, quantidade = 1, nome = "Demon Helmet"} } function onUse(cid, item, fromPos, itemEx, toPos) if item.uid == 13909 then if getPlayerStorageValue(cid, table.storageQuest) < 1 then if getPlayerLevel(cid) >= table.levelMin then doTeleportThing(cid, table.positionTrue) doSendMagicEffect(toPos, 2) else doTeleportThing(cid, table.positionFalse) return doPlayerSendCancel(cid, "Voce precisa ser level superior a ".. table.levelMin ..".") end else doTeleportThing(cid, table.positionFalse) return doPlayerSendCancel(cid, "Voce ja fez essa quest!") end elseif item.uid == 13910 then if getPlayerStorageValue(cid, table.storageQuest) < 1 then doPlayerSendTextMessage(cid, 25, "You have found a ".. table.rewardQuest.nome ..".") doPlayerAddItem(cid, table.rewardQuest.id_item, table.rewardQuest.quantidade) setPlayerStorageValue(cid, table.storageQuest, 1) else doTeleportThing(cid, table.positionFalse) return doPlayerSendCancel(cid, "Voce ja fez essa quest!") end end return true end eu acho que tem alguma coisa errada ai por que quando eu coloco o server online da um erro [Error - LuaScriptInterface::loadFile] data/actions/scripts/Quest Unica.lua:3: ' }' expected (to close '{' at line 1) near 'positionFalse' [Warning - Event::loadScript] Cannot load script (data/actions/scripts/Quest Uni ca.lua) data/actions/scripts/Quest Unica.lua:3: '}' expected (to close '{' at line 1) ne ar 'positionFalse' [Error - LuaScriptInterface::loadFile] data/actions/scripts/Quest Unica.lua:3: ' }' expected (to close '{' at line 1) near 'positionFalse' [Warning - Event::loadScript] Cannot load script (data/actions/scripts/Quest Uni ca.lua) data/actions/scripts/Quest Unica.lua:3: '}' expected (to close '{' at line 1) ne ar 'positionFalse' alguém pode me ajudar pf
Postado Agosto 20, 2015 9 anos Logicamente não vai funcionar, você esqueceu das vírgulas após cada variável da tabela. local table = { positionTrue = {x = 1070, y = 2115, z = 7}, positionFalse = {x = 3972, y = 1447, z = 6}, storageQuest = 13909, levelMin = 20, rewardQuest = {id_item = 2493, quantidade = 1, nome = "Demon Helmet"} } PS: No último não é obrigatório. Editado Agosto 20, 2015 9 anos por zipter98 (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.