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. ➥ Regras | Seções OTServ | Seções BOT
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"/> STYLLER OT 2022
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 ➥ Regras | Seções OTServ | Seções BOT
Postado Agosto 20, 2015 10 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 10 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 10 anos por zipter98 (veja o histórico de edições) não respondo pms solicitando suporte em programação/scripting
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.