Jump to content

Search the Community

Showing results for tags 'Action'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • A Cidade OTBR
    • OTServ Brasil
    • Atendimento
    • Taverna
  • Projetos Open Source
    • Canary
    • OTServBR-Global
    • Mehah OTClient
    • MyAAC
  • OpenTibia
    • Notícias e Discussões
    • Suporte - Dúvidas, Bugs, Erros
    • Downloads
    • Tutoriais
    • Show-Off
  • Outros
    • Design

Found 17 results

  1. Scripting Action - Scrll Exp

    Antes de fazer a sua pergunta, tenha certeza de ter lido as regras da seção e o guia abaixo: https://forums.otserv.com.br/index.php?/forums/topic/168583-regras-da-seção/ https://forums.otserv.com.br/index.php?/forums/topic/165121-como-fazer-uma-pergunta-ou-o-grande-guia-do-usuário-com-dúvidas/ Descreva em algumas palavras a base utilizada. (Nome do servidor / Nome do cliente / Nome do website / etc.). The OTX Server Version: (2.100 - 6000) - Codename: (FINAL) Base: ExtremeOT 7.6 Qual é a sua pergunta? Olá, tentei criar um script de adicionar uma action ao clicar num scroll, de dar 10kk de EXP pra um player, porém ao clicar ele fala que não tenho a vocação necessária. Seguem Scripts Você tem o código disponível? Se tiver poste-o na caixa de código que está dentro do spoiler abaixo: Você tem alguma imagem que possa auxiliar no problema? Se sim, anexe-a dentro do spoiler abaixo:
  2. Abrir Spider Egg

    Abrir SpiderEgg Fala galera, meu primeiro POST no fórum, um script bem básico de uma funcionalidade do global que não vejo em OTs... Caso já tenham feito desconsiderem Hehe! Ao dar USE na Spider Egg ela é aberta e com chances de nascer algum tipo de Spider(spider, tarantula, poison spider, GS...) assim como acontece no global! TUTORIAL Crie um arquivo em actions /other com extensão .lua De o nome que desejar, no meu caso vou salvar como transformSpiderEgg.lua Copie e cole o código no arquivo criado Segue o código do script abaixo: --[[Spider Egg --Classe: Ferramentas (Objetos) --Atributos: Sumona um monstro quando quebrado. --Adicionado: Desconhecido. --Localização: Cavernas de Spiders e Tarantula, encontradas em grande quantidade em Tiquanda. --Notas: Spider Eggs são envolvidos por uma seda muito frágil e irão quebrar quando atacados. Muitas vezes, elas "libertam" uma Spider, uma Poison Spider, ou em casos raros uma Tarantula e em casos extremamente raros Giant Spiders. --Para quebrar o Spider Egg, simplesmente "use" o ovo.]] --[[Spider Egg --Classification: Natural Products --Attributes: Summon a monster when broken. --Add: Unknow --Location: Spider and Tarantula caves, such as those found in Tiquanda. --Notes: Spider Eggs are very fragile and will break when attacked. They will either release nothing, a Spider, a Poison Spider, a Tarantula at rare times and very rarely a Giant Spider. Spiders that come from those eggs will not puff like normal spiders do when taken away too far from their spawn point. --To break the Spider Egg, simply use the egg.]] function onUse(player, item, fromPosition, target, toPosition, isHotkey) math.randomseed(os.time()) n = math.random(0, 1000) -- Gera um número randomico de 0 a 1000 / Generates a random number from 0 to 1000 if n > 999 then Game.createMonster("Giant Spider", item:getPosition()) -- 1/1000 chance de nascer uma GS / chance to be born a GS elseif n >= 985 then Game.createMonster("Tarantula", item:getPosition()) -- 15/1000 chance de nascer uma Tarantula / chance to be born a Tarantula elseif n >= 900 then Game.createMonster("Poison Spider", item:getPosition()) -- 85/1000 chance de nascer uma PS / chance to be born a PS elseif n >= 500 then Game.createMonster("Spider", item:getPosition()) -- 400/1000 chance de nascer uma Spider / chance to be born a Spider else fromPosition:sendMagicEffect(CONST_ME_POFF) -- 500/1000 chance dee falhar / chance of Fail end item:transform(7536) -- << ID DA remains of a spider egg | Transforma na remains of a spider egg / Transform on remains of a spider egg function backInitialId() -- Função para voltar ao Id inicial / Function to return to the initial Id item:transform(7537) -- << ID DA SPIDER EGG end addEvent(backInitialId, 30000) -- Volta a ser Spider Egg em 30 segundos / Back to Spider Egg in 30 seconds end Agora em actions, no actions.xml coloque a action com o ID da spider egg: <action itemid="ID DA SPIDER EGG" script="other/transformsSpiderEgg.lua" /> É isso, espero que gostem e de sugestões de melhoria de código!!!
  3. Scripting Porta de dwacatradoor nao abre

    The OTX Server Global - Version: (3.10) Pessoal essa porta que da acesso ao bau para pegar o family brooch esta me trollando. ele tem que abrir somente se o QuestLine = 2, porem ela nao abre e da a mensagem do ELSE e a QuestLine esta justamente no 2 OBS: EU PASSEI POR ELA COM O COMMANDO DO GOD
  4. Um mano gringo aí pediu algo do tipo, e eu precisava me familiarizar melhor com a orientação a objetos usada em Lua do TFS 1.3, então fiz esse action, onde o player que possui um scroll pode fazer um portal para seu templo, que é usado dando USE mesmo, e sua party inteira pode ir junto para seus respectivos templos se não estiverem pz locked ou com battle, e caso o player não esteja em uma party, apenas o mesmo pode entrar no portal. Tags XML: <action actionid="43443" script="townportalsystem.lua"/> <action itemid="SCROLLID HERE" script="townportalsystem.lua"/> Arquivo townportalsystem.lua em data/actions/scripts/: -- Town Portal Scroll System based in Dota 2 -- by Nazo local config = { portalId = 1231, -- change to portal item id portalTime = 30, -- portal duration in seconds scrollId = 1232, -- change to scroll item id effect = CONST_ME_POFF -- effect id or CONST that appears at the end of time } local function removePortal(portal) if(portal) portal:remove() portal:getPosition():sendMagicEffect(config.effect) else print("A bug has deleted the portal") end end function onUse(player, item, fromPosition, target, toPosition, isHotkey) if(item:getId()==config.scrollId) then portal = Game.createItem(config.portalId, 1, player:getPosition()) if(player:getParty()) then portal:setCustomAttribute("party", player:getParty()) else portal:setCustomAttribute("owner", player:getName()) end portal:setAction(43443) addEvent(removePortal, config.portalTime * 1000, portal) item:remove() else if(not player:isPzLocked() and not player:getCondition(CONDITION_INFIGHT, CONDITIONID_DEFAULT)) then if(item:getCustomAttribute("party")) then if(player:getParty()==item:getCustomAttribute("party")) then player:teleportTo(player:getTown():getTemplePosition(), true) else player:popupFYI("You do not participate in the portal creator's party.") end elseif(item:getCustomAttribute("name") and player:getName() == item:getCustomAttribute("name")) then player:teleportTo(player:getTown():getTemplePosition(), true) else player:popupFYI("You isn't the owner.") end else player:popupFYI("You are PZ locked or in battle.") end end return true end Obs: fiz e testei apenas no TFS 1.3. Obs²: se desejar trocar a action, lembre-se de mudar no código também, procurando por "setAction".
  5. Scripting Erro ao usar PokeDex em si mesmo

    Base: POU - Open Source (0.3.6) Qual erro está surgindo/O que você procura? [Error - Action Interface] data/actions/scripts/pokedex.lua:onUse Description: data/actions/scripts/pokedex.lua:36: attempt to index field '?' (a number value) stack traceback: data/actions/scripts/pokedex.lua:36: in function <data/actions/scripts/pokedex.lua:3> Você tem o código disponível? Se tiver publique-o aqui: local rate = 20 function onUse(cid, item, fromPos, item2, toPos) if not isCreature(item2.uid) then return true end local poke = getCreatureName(item2.uid) if isMonster(item2.uid) then local this = newpokedex[getCreatureName(item2.uid)] local myball = 0 if isSummon(item2.uid) then myball = getPlayerSlotItem(getCreatureMaster(item2.uid), 8) end if not getPlayerInfoAboutPokemon(cid, poke).dex then local exp = this.level * rate doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have unlocked "..getCreatureName(item2.uid).." in your pokedex!") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have gained "..exp.." experience points.") doSendMagicEffect(getThingPos(cid), 210) doPlayerAddExperience(cid, exp) doAddPokemonInDexList(cid, poke) else doShowPokedexRegistration(cid, item2, myball) end return true end if not isPlayer(item2.uid) then return true end local kanto = 0 local johto = 0 --alterado v1.7 \/\/ for i = 1, #oldpokedex do if getPlayerInfoAboutPokemon(item2.uid, oldpokedex[i][1]).dex then if i <= 151 then kanto = kanto+1 elseif i >= 209 then johto = johto+1 end end end --alterado v1.6 local player = getRecorderPlayer(toPos, cid) if cid == player then doPlayerSendTextMessage(cid, 27, "You has unlocked "..kanto.." kanto's and "..johto.." johto's pokémons until now.") doPlayerSetVocation(cid, 9) --alterado v1.6 openChannelDialog(cid) end return true end Agradeço quem puder ajudar!
  6. action Pistol

    Hi. Outro pedido de um user, fiz esse script há um bom tempo. É um script de pistola. Você equipa em uma das mãos, usa a arma em algum monster ou player e boa, atira. Script: data/actions/scripts/pistol.lua: data/actions/actions.xml: <action itemid="xxxx" script="pistol.lua" allowfaruse="1"/> No lugar de xxxx, coloque o id do item que será usado como pistola. Configure aqui: Bom uso, até.
  7. action Soul ring

    Olá pessoas! Fiz um script novo para vocês Quem já jogou DotA sabe que existe um item chamado soul ring. Aos que nunca jogaram, aqui vai a explicação de como ele funciona: É um anel que, ao ser usado, consome 150 de vida e te dá 200 de mana temporariamente. Se você não utilizar essa mana no tempo máximo, você perde ela. Script: data/actions/scripts/soul_ring.lua: data/actions/actions.xml: <action itemid="xxxx" script="soul_ring.lua"/> Substitua xxxx pelo id do item que você usará como soul ring. Configurações: Bom uso, até.
  8. action Jester Doll

    Olá pessoas. Lembro que há um bom tempo atrás fiz um script bem simples para um user, mas que já vi isso sendo pedido umas 50 vezes, sem exageros. Então, vou postar o código do Jester Doll. Funciona assim: Você reúne as partes do boneco, dá use em uma delas e pimba, monta o boneco. Script: - data/actions/scripts/jester_doll.lua: - data/actions/actions.xml: <action fromid="9694" toid="9699" script="jester_doll.lua"/> Bom uso, até.
  9. Moeda da Sorte

    Bom galera, o iuniX me deu uma pequena aula de script e decidi me virar. O Script a seguir faz o seguinte: Você dá use na scarab coin (ou se você modificar no item que você escolher) e tem 10% para ganhar 1kk. (Pode usar a scarab coin em eventos ou monstros dificeis como bosses) Abra data/actions/scripts e lá dentro crie uma pasta chamada moedasorte.lua e ponha isso lá dentro: function onUse(cid, item, pos) if math.random(100) <= 10 then doSendMagicEffect(pos, 30) doPlayerAddItem(cid, 2160, 100) end doRemoveItem(item.uid) return true end E adicione isso no actions.xml: <action itemid="2159" event="script" value="moedasorte.lua"/> o 2159 é o ID do scarab coin, se você quizer mudar o item é ali. Pronto, agora sua moeda da sorte está pronta. Obrigado. ps: Agradeço ao Catios por ter visto o pequeno erro que cometi.
  10. OTServ Live Action! Recrutando!

    OTServ Live Action! Ola, Galerinha da OTNET!!! Quanto tempo ein?(Faz tanto tempo que dei até sorte de acertar a Acc deste perfil kkk...) Bom, voltando a ativa, com uma incrível proposta para vocês... Sim realmente isto é uma proposta séria, não é para criação de servidores, formação de qualquer tipo de equipe, ou algo do gênero, eu estou realmente buscando bons programadores e scripters conhecimento nas seguintes áreas, para que eu concretize uma idéia para auxiliar o mundo do Tibia! ..:: Vagas ::.. Administrador Geral, Idealista e Fundador do projeto - Eu(Pedro Michel) Coordenadores: [Vago!], [Vago!] (Estás vagas só serão preenchidas por pessoas realmente de minha confiança dentro do projeto, então por favor não insista em pedi-la!) Analistas(Idealistas) [Vago!], [Vago!] (Estás vagas só serão preenchidas por pessoas realmente por dentro do projeto, que façam boas analises e tirem conclusões exatas de cada fato ocorrido dentro do projeto!) Designer Gráfico [bioquímico], [Vago!] (Procuro bons designers com grande facilidade em criação de interface de programas etc... Isso será discutido via MSN!) Programadores [Vago!], [Vago!], [Vago!] (Será um trabalho mega importante dentro do projeto, só se inscreva se você realmente tem um bom conhecimento na área da criação de softwares!) Scripters de Tibia(.lua) [Vago!], [Vago!], [Vago!], [Vago!] (Será necessário bons scripters na área do Tibia, para ajudar na configuração e na projeção dos códigos de forma que fique "legível"(Isso será discutido via MSN), estou recrutando scripters que tenho conhecimento dês das versões do Tibia 7.6 até as versões atuais(Creio que seja 8.70) ..:: A idéia ::.. Bom como toda boa idéia, ela veio de erros e principalmente do nada! Enquanto eu estudava um pouco de scripts, notei que algumas pessoas tinham mais facilidade em aprender os scripts em forma de códigos(.lua), e outras por formas mais distintas onde elas compreendiam o que tem que é preciso fazer más não sabiam passar para o papel, por isso veio a idéia do OTServ Live Action!(Nome a ser refeito futuramente)! ..:: O Projeto ::.. Bom o projeto em si está na mesa de planejamento (Quase pronto para fluir), por isso preciso de pelo menos 40% das vagas preenchidas para começar os debates, apresentações mais detalhadas e mais a fundo do projeto, tempo para bolar como ira funcionar, demonstrar o que eu quero proporcionar, qual a finalidade, e por fim ir fazendo testes e criações “BETA” a serem divulgadas(OBS: Esse projeto não tem nenhum intuito de fazer propagandas de nenhum local, a não ser que realmente sejamos motivados a isso) Progresso Geral → ░░░░░░░░░░ 0% Progresso para a primeira BETA → ░░░░░░░░░░ 0% ..:: Proposta Inicial ::.. A proposta é de desenvolver um software cuja função seja de auxiliar os players, na hora de desenvolver scripts e seus derivados (OBS: Não estou aqui visando criar um OTScript Live nem nada do gênero, o OTServ Live Action! é outra coisa....), o software em questão tem uma função única, de auxiliar o player que tem mais dificuldade na hora de "botar no papel" o seu script(idéias). Então com tudo eu posso dizer, se o projeto realmente fluir eu digo, adeus códigos complicados e sérias dificuldades, e bem vindo aos anos 2000 onde o processo é mais rápido, pratico e detalhado! (OBS: Não, eu não sou nenhum deus, nem santo milagreiro, só vejo e falo a verdade, e pretendo concretizá-la!). Neste projeto vamos precisar de pessoas realmente qualificadas, que tenham um bom conhecimento tanto na área de scripts(.lua tibia) quanto na área da programação avançada(Vale qualquer programador(Delphi, C, C++, Visual Basic etc...), dês de que atenta todos os pedidos e não tenha muita dificuldade com o planejado pelo projeto, e nem com o pedido de nossos membros. ..:: Forma de Inscrição ::.. (OBS: Todos os membros serão ouvidos, testados, e avaliados!) Bom galerinha conto com a colaboração de vocês! Qualquer e toda duvida que vocês tenham não deixe de postar aqui mesmo no fórum ou no MSN, breve será criado uma comunidade para o mesmo! Até galerinha e muito obrigado! \\Att \\Pedro Michel!
  11. Demoniac Concentrated Blood

    Nome: Demoniac Concentrated Blood Creditos: Kaya Man [Dragon Souls] Versão testada: 7.92 XML Evolutions 0.7.8 mas acho que pode ser testado em versão mais nova. Explicação: É uma blood diferente quando você clicar nele você vai vira um mounstro e sera healado sua mana e sua hp. Va em data/actions/scripts Em azul é a mana que pode ser healadaEm vermelho é a hp q pode ser healada Agora vai em data/actions/actions.xml
  12. Passagem Secreta

    Função: Passagem secreta Autor: Oxyflavor Versão Testada: New Styller Yourots 0.6.5 (8.54) Informações Adicionais Meu segundo script! >.< Oi pessoal.. To criando um OT Serv, e então decidi aprender um pouco de script.. Este é meu segundo script, então, se houver algum erro que eu não vi, poste! ------------------------- Este script faz com que, ao usar o item com um UniqueID(*), uma parede em uma posição(*) seja removida, e no lugar dela, criada uma escada(tem que ser aquelas escadas de 1 tile só)(*). Tipo uma passagem secreta... *Configurado(a) por você. Bom, vamos ao codigo! \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ Crie um arquivo .lua com o nome que quiser, ou pegue um ja existente da pasta talkactions/scripts, apague tudo oque tem dentro, renomeie para o nome que quiser, e cole isto dentro do novo arquivo: ---[[ Porta secreta, por Oxflavor ]]-- function onUse(cid, item, frompos, item2, topos) local config = { itempos = {x=[color=DarkOrange][b]POSX[/b][/color], y=[color=DarkOrange][b]POSY[/b][/color], z=[b][color=DarkOrange]POSZ[/color][/b], stackpos=1}, -- Posição X, Y e Z da parede/escada msg1 = 'Você acionou a alavanca e uma porta secreta foi aberta!', msg2 = 'Você acionou a alavanca e fechou a porta secreta.', paredeid = [b][color=Blue]x[/color][/b], -- ID Da parede que vai ser removida e aparecer uma escada escadaid = [color=SeaGreen][b]x[/b][/color], -- ID da escada que vai aparecer no lugar da parede idalavanca = [color=Red][b]x[/b][/color], -- UniqueID que vai ter o item que acionar o script. } local getid = getThingFromPos(config.itempos) if getid.itemid == config.paredeid and item.uid == config.idalavanca then doRemoveItem(getid.uid, 1) doCreateItem(config.escadaid, 1, config.itempos) doPlayerSendTextMessage(cid, 22, config.msg1) elseif getid.itemid == config.escadaid and item.uid == config.idalavanca then doRemoveItem(getid.uid, 1) doCreateItem(config.paredeid, 1, config.itempos) doPlayerSendTextMessage(cid, 22, config.msg2) end end Se nao entenderam por ai, entao vo explicar por aqui: ---------------------------------------------- Agora vá em actions / actions.xml, e cole isso no final (mas antes do </actions> <action uniqueid="[b]UNIQUEID[/b]" event="script" value="[color=DarkOrchid][b]NomeDoSeuScript[/b][/color].lua"/> NomeDoSeuScript = Ponha no lugar disso o nome do arquivo que você criou, quando estava lendo o comecinho deste tópico. UNIQUEID = Mesmo valor que você colocou em idalavanca. ---------------------------------------------------------------- Se gostou, por favor, Doe V$, não importa quanto. 1 ja ta bom ;D Bom, é isso. Foi meu segundo script, por isso, ME AVISE SE ENCONTRAR ERROS! -------------------------------------------------
  13. [8.4] Enchant System and Rainbow shield

    Padrão de Postagem: Nome: Enchant System Versão: [8.40+] Tipo do script: Action Servidor Testado: ... Autor: richiadicct Muitos ja devem ter o sistema de encantamento em seu ot, que é encantar gemas em altares do tipo fire/poison/ice/energy e este faz o mesmo só que é atualizado e conta com a possibilidade de encantar o Rainbow Shield. Rainbow Shield Notas: Encantável (cada encanto dura 20 minutos). Com os encantos você pode conseguir: Sparking Rainbow Shield aumenta sua velocidade em 10 levels e possui defesa 36. Fiery Rainbow Shield aumenta seu shielding skill em 3 e possui defesa 36. Icy Rainbow Shield possui defesa 39. Terran Rainbow Shield aumenta sua velocidade de regeneração e possui defesa 37. Chega de explicações qualquer duvida ou erro é só reportar! Vamos la: :soudado: enchant.lua --by Richi~ -- function onUse(cid, item, frompos, item2, topos) local gems = {2146, 2147, 2149, 2150} local egems = {7759, 7760, 7761, 7762} local altars = {{7508, 7509, 7510, 7511}, {7504, 7505, 7506, 7507}, {7516, 7517, 7518, 7519}, {7512, 7513, 7514, 7515}} local weapons = {2383, 7384, 7389, 7406, 7402, 2429, 2430, 2435, 7380, 2454, 2423, 2445, 7415, 7392, 2391, 2544, 8905} local eweapons = {{7763, 7744, 7854, 7869}, {7765, 7746, 7856, 7871}, {7770, 7751, 7861, 7876}, {7766, 7747, 7857, 7872}, {7767, 7748, 7858, 7873}, {7768, 7749, 7859, 7874}, {7769, 7750, 7860, 7875}, {7770, 7751, 7861, 7876}, {7771, 7752, 7862, 7877}, {7772, 7753, 7863, 7878}, {7773, 7754, 7864, 7879}, {7774, 7755, 7865, 7880}, {7775, 7756, 7866, 7881}, {7776, 7757, 7867, 7882}, {7777, 7758, 7868, 7883}, {7839, 7840, 7838, 7850}, {8907, 8906, 8909, 8908}} local type = item.type if type == 0 then type = 1 end local mana = 300 * type local soul = 2 * type if isInArray(gems, item.itemid)== TRUE then for aa=1, #gems do if item.itemid == gems[aa] then a=aa end end if isInArray(altars[a], item2.itemid)== TRUE then if getPlayerMana(cid) >= mana and getPlayerSoul(cid) >= soul then doTransformItem(item.uid,egems[a]) doPlayerAddMana(cid,-mana) doPlayerAddSoul(cid,-soul) doSendMagicEffect(frompos,39) else doPlayerSendCancel(cid,"You dont have mana or soul points.") end else return 2 end elseif isInArray(egems, item.itemid)== TRUE then for bb=1, #egems do if item.itemid == egems[bb] then b=bb end end if isInArray(weapons, item2.itemid)== TRUE then for cc=1, #weapons do if item2.itemid == weapons[cc] then c=cc end end doTransformItem(item2.uid,eweapons[c][b],1000) doSendMagicEffect(frompos,39) doRemoveItem(item.uid,1) else doPlayerSendCancel(cid,"You can't enchanted this.") end else return 0 end return 1 end actions.xml <action itemid="2146" script="enchant.lua" /> <action itemid="2147" script="enchant.lua" /> <action itemid="2150" script="enchant.lua" /> <action itemid="2149" script="enchant.lua" /> <action itemid="7759" script="enchant.lua" /> <action itemid="7760" script="enchant.lua" /> <action itemid="7761" script="enchant.lua" /> <action itemid="7762" script="enchant.lua" /> Espero que gostem!!! Creditos: richiadicct
  14. Escalar System

    E ae Galera, Vo postar aqui um script que pode ser util pra qm gostad e rpg e usa mta criatividade! Agora o Script!Vá em actions/tolls e add um arkivo chamado Scall.lua dentro dele cole isto: local holeId = {[color=Blue]3369, 7062, 7064, 7066, 392, 408, 409, 427, 428, 430, 462, 469, 470, 482, 484, 485, 489, 924, 3135, 3136[/color]} function onUse(cid, item, fromPosition, itemEx, toPosition) local groundTile = getThingfromPos(toPosition) if groundTile.itemid == 7062 or groundTile.itemid == 7066 or groundTile.itemid == [color=Red]3362[/color] then doTeleportThing(cid, {x = toPosition.x, y = toPosition.y - 1, z = toPosition.z - 1}, FALSE) elseif isInArray(holeId, itemEx.itemid) == TRUE then local hole = getThingfromPos({x = toPosition.x, y = toPosition.y, z = toPosition.z + 1, stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE}) if hole.itemid > 0 then doTeleportThing(hole.uid, {x = toPosition.x, y = toPosition.y + 1, z = toPosition.z}, FALSE) else doPlayerSendCancel(cid, "Sorry, not possible.") end else return FALSE end return TRUE end Depois vá em actions.xml e coloque: ----------CONFIGURANDO--------- é o id da corda, no caso a elvenhair é os pisos aond pode ter a montanha/parede é o id da montanha/parede que vc vai escalar! pronto Configure e gogo rpg! c quiser deichar assim eh melhor... pois voce pod bugar algo...c vc souber mudar direitin, use a criatividade! Nesse script vc esacala a Stone wall com a elvehair rope! Ate a proxima! :yes:
  15. Quest Manera!

    Nome: Quets Criativa Autor: eu msm! Versão: TESTADO Em 8.40 Tipo: Action/quest Poh galera, esses dias tava eu tendo umas ideas pro meu ot, e pensei numa base pra fazer uma quest manera, e usei essa! Supomos q seu server tenha 4 cidades; Uma quest criativa poderia ser: em cada cidade você faz uma pequena sala. Nela você coloca um piso especial. uma placa indicando que se quer participar da quests que fique em cima dele! ai voce faz isso nas 4 cidades! e em uma voce coloca uma alavanca! ( na principal de preferencia ) Ao puxar a alavanca, os players das 4 cidades sao teleportados para uma quest!!! manero né? eu axo...hahuhua agora como fazer? crie em action/scripts/quests um arkivo renomeie para o nome que quiser!e coloque: Coloque isso em actions/scripts/quests local playerPosition = { [color=Magenta]{x = 217, y = 364, z = 7, stackpos = STACKPOS_TOP_CREATURE}, {x = 218, y = 364, z = 7, stackpos = STACKPOS_TOP_CREATURE},[/color] } local newPosition = { [color=YellowGreen]{x = 216, y = 375, z = 7}, {x = 216, y = 376, z = 7},[/color] } -- Do not modify the declaration lines below. local player = {0, 0, } local failed = FALSE function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 1945 then for i = 1, 2 do failed = TRUE player[i] = getThingfromPos(playerPosition[i]) if player[i].itemid > 0 then if isPlayer(player[i].uid) == TRUE then if getPlayerStorageValue(player[i].uid, [color=DarkSlateBlue]30015[/color]) == -1 then if getPlayerLevel(player[i].uid) >= [color=Blue]10[/color] then failed = FALSE end end end end if failed == TRUE then doPlayerSendCancel(cid, "Sorry, not possible.") return TRUE end end for i = 1, 4 do doSendMagicEffect(playerPosition[i], CONST_ME_POFF) doTeleportThing(player[i].uid, newPosition[i], FALSE) doSendMagicEffect(newPosition[i], CONST_ME_ENERGYAREA) end doTransformItem(item.uid, item.itemid + 1) elseif item.itemid == 1946 then doPlayerSendCancel(cid, "Sorry, not possible.") end return TRUE end dpois vá em actions.xml e add: <action uniqueid="30015" script="quests/NOMEDOSCRIPT.lua"/> Configurando! è a posição do player, aonde ele deve estar na hra q o principal puxar a alavanca! (configure quantos players quiser é só adicionar mais tags igual eu markei) è a posição que os players vao ser teleportados! 10 é o level do player coloque qual vc kiser! é o unique id q vc vai colocar na alavanca no map editor! isso tudo acima é a configuração basica! se quiser mais detalhes! msg me! Agora não skece de colocar a quest que vc quer! use a criatividade! Foi mal qualquer erro! so novo ak na area... vlw :yes:
  16. Vampirecoffin Quest

    Testado em: Yurots 1.2 Versão 8.1 Olá, este é o meu primeiro tutorial, espero que gostem... Eu utilizei a action em uma quest em que você chega num local com vários caixões...Em um deles você abre (coloquei a unique ID somente em um caixão), recebe um vampire shield e sai um vampire de cada caixão. Criando a action: Crie um arquivo .lua na pasta data/actions/scripts com o nome vampirecoffin, copie isso e cole lá: Salve o arquivo e feche. Explicando: Em azul a posição do primeiro vampire que irá aparecer. Em vermelho a posição do segundo vampire que irá aparecer. Você pode criar quantas posições quiser, assim poderão ser invocadas mais criaturas...simplesmente insira outra linha abaixo das que possuem as "vamppos" assim: Dessa forma, você pode colocar quantos vampires quiser, isso fica ao seu critério, e também se quiser pode colocar mais de um vampire para ser invocado por caixão, ou até outras criaturas, eu coloquei um vampire ao lado de cada caixão. Em verde a Unique ID utilizada pela quest(a que será colocada no caixão). Em azul ciano o "valor" que será adicionado ao player quando o mesmo usar o caixão(assim a quest não poderá ser repetida várias vezes), ou seja, quando alguém tentar abrir o caixão será checado se ele possuí esse "valor" no seu arquivo, se possuir, a action não será realizada. Em laranja a mensagem recebida ao abrir o caixão. Em amarelo o ID do item que receberá ao abrir usar o caixão. Em roxo as criaturas que serão invocadas, com as respectivas posições. Para serem invocadas outras criaturas como demons, por exemplo, é só alterar assim: Você pode usar demonposX, posiçãodobichoX, como você quiser, estou usando vampposX pois a quest é com vampires. A mesma coisa na seguinte parte, é só alterar na "pos" do início e na "pos" do doSummonCreature: Poderia estar assim: Na parte do doSummonCreature: Ficaria assim: Em rosa a mensagem recebida se você tentar abrir o caixão após ter feito a quest. Agora, vá em data/actions e abra o actions.xml com o bloco de notas, e insira isso em uma linha: Pronto, agora salve e a sua action está pronta. ^^ Imagens da quest: Ao achar o caixão: http://img511.imageshack.us/my.php?image=coffin1sp0.png O que será que tem dentro? http://img291.imageshack.us/my.php?image=coffin2zs4.png Abrindo: http://img511.imageshack.us/my.php?image=coffin3ok2.png Vou tentar denovo... http://img291.imageshack.us/my.php?image=coffin4lt6.png Bom...é isso aí Baseada em uma action de The Killer: http://forums.otserv.com.br/showthread.php?t=661 Modificada by: Shibew Aproveitem (Y)
  17. Sistema de Waypoint 2.0 Tópico já editado com a versão 2.0 1. Introdução 2. Script 3 Configuração 4. Configuração(adicionando um novo waypoint) 5. Configuração(editando talkactions.xml) 6. Instruções de uso 1. O que é um sistema de waypoint? Você já jogou Diablo II? Tentei fazer o mais parecido possível, mas pra quem ainda não conhece vou explicar, waypoint, pelo menos nesse caso, é um lugar que você guarda e depois pode se teleportar pra lá na hora que quiser. E como eu fiz isso pra Otserv? Simples(pra explica, não pra faze -.-) quando o player falar a palavra: Waypoint se ele tiver em cima de alguma coordenada válida como waypoint(você vai escolher quais coordenadas são válidas) o waypoint vai ficar ativado pra sempre, depois disso a qualquer hora ele pode falar: GO "nome do local O nome do local é vc quem escolhe, e quando ele ativar o waypoint vai aparecer escrito em uma mensagem. Há, já tava esquecendo quando ele usa esse último código(GO) pra ir pro waypoint ele gasta uma quantidade de mana que você pode escolher quanto é, coloquei isso pra não ficar muito fácil de usar o waypoint. 2. O código Primeiro vá na pasta do seu OT depois em data\talkactions\scripts copie qualquer arquivo renomeie pra waypoint.lua abra com bloco de notas e apague tudo que tem dentro depois copie e código abaixo e cole nesse arquivo. --- Diablo II Waypoint System v2.0 100% By Mililo! Thx for Dark and Forger for tutorials --- function onSay(cid, words, param) --------------------------- CONFIGURAÇÃO ------------------------------------ local lugares = {[color="Sienna"][b]'Thais', 'Carlin'[/b][/color]} local coords = { [color="Red"][b]{x=1104, y=1026, z=7}, {x=1126,y=1043,z=7}[/b][/color] } local mana = [color="Blue"][b]{50,100}[/b][/color] local storages = [b][color="Orange"]{2325, 2326}[/color][/b] exaust = [b][color="SeaGreen"]10[/color][/b] wait_storage = [b][color="DarkSlateGray"]54321[/color][/b] ----------------------FINAL DA CONFIGURAÇÃO --------------------------- playerpos = getPlayerPosition(cid) playermana = getPlayerMana(cid) playerlife = getPlayerHealth(cid) ------------ PARTE I: Salvar o Waypoint ----------- if words == 'Waypoint' or words == 'waypoint' then if playerpos.x == coords[1].x and playerpos.y == coords[1].y and playerpos.z == coords[1].z then n = 1 elseif playerpos.x == coords[2].x and playerpos.y == coords[2].y and playerpos.z == coords[2].z then n = 2 else n = 0 end if n == 0 then doPlayerSendTextMessage(cid, 21, "You cannot use that function here.") else if playerpos.x == coords[n].x and playerpos.y == coords[n].y and playerpos.z == coords[n].z then if getPlayerStorageValue(cid, storages[n]) ~= 1 then doSendMagicEffect(playerpos,13) doPlayerSendTextMessage(cid, 24, "You saved the waypoint of "..lugares[n]..".") setPlayerStorageValue(cid, storages[n], 1) else doPlayerSendTextMessage(cid, 21, "You ever have this waypoint.") end else doPlayerSendTextMessage(cid, 21, "You cannot use that function here.") end end end --------------- PARTE 2: Teleportar para o waypoint ------------ if words == 'GO' then if param == lugares[1] then n2 = 1 elseif param == lugares[2] then n2 = 2 else n2 = 0 end if getPlayerStorageValue(cid, wait_storage) == 0 then if n2 == 0 then doPlayerSendTextMessage(cid, 21, "You do not have the waypoint for this area.") else if param == lugares[n2] then if getPlayerStorageValue(cid, storages[n2]) == 1 then if playermana >= mana[n2] then doTeleportThing(cid, coords[n2]) doSendMagicEffect(coords[n2],13) doPlayerAddMana(cid,-mana[n2]) setPlayerStorageValue(cid,wait_storage, 1) tempo = exaust * 1000 old_life = playerlife addEvent(cansaco,tempo,cid) else doPlayerSendTextMessage(cid, 21, "You do not have enough mana.") end else doPlayerSendTextMessage(cid, 21, "You do not have the waypoint for this area.") end end end else doPlayerSendTextMessage(cid, 21, "You are exhausted.") end end end function cansaco(cid) wait_storage = 54321 setPlayerStorageValue(cid,wait_storage, 0) end O código não é tão grande quanto parece é porque tá bastante espaçado. 3. Configuração Vão olhando pro código e acompanhado as cores que vou falar. Marrom - São os nomes dos waypoints, devem estar entre ' ' e separados por vírgula, thais e carlin foram só exemplos não tava usando mapa global pra testar e as coord não são verdadeiras, além disso usei cidades no exemplo mas você pode colocar waypoints em outras áreas como florestas, desertos etc. Vermelho - São as coordenadas x,y e z dos waypoints de acordo com o tabela de cima. Ex: Os primeiros x,y e z são de thais e os segundos de carlin. Devem ser colocados neste formato: {x=numero,y=numero,z=numero} Azul - Mana gasta pra teleportar pra cada lugar também é de acordo com as tabelas de cima, se não quiser usar mana simplesmente cooloque "0". Laranja - Cada waypoint usa um storage value(eu tinha tentado fazer de um jeito mais simples usando tabelas, mas não consegui ) A única coisa que tem que fazer aqui é colocar um número qualquer que não esteja sendo usado como storage por outro script do seu OT. Verde - Tempo de exhaust em segundos. Cinza - Coloque um número qualquer que não esteja sendo usado como storage no seu OT. As configurações acabam aqui e além de configurar de acordo com seu mapa e OT você com certeza deve querer adicionar outros waypoints(3º, 4º etc) pra tanto é só vc adicionar as terceiras opções nas tabelas que eu mostrei acima e seguir o 4º passo. 4. Adicionando um terceiro waypoint Para adiconar um terceiro waypoint não é difícil, basta copiar as opções do segundo e mudar todos os nº2 para nº3, vou explicar exemplificadamente adiconando um terceiro waypoint chamado "Venore": Primeiro vamos editar as configurações(linhas 8 a 10), assim: local lugares = {'Thais', 'Carlin', 'Venore'} local coords = { {x=1104, y=1026, z=7}, {x=1126,y=1043,z=7}, {x=708,y=502,z=7}} local mana = {50,100,150} local storages = {2325, 2326,2327} Já expliquei sobre isso tudo acima. Agora vamos copiar as linhas 22 e 23 e colar na 24, ou 25 pra dar espaço(aperte Crtl + G pra localizar linha). Feito isso, substitua todos os nº2 por 3 assim: elseif playerpos.x == coords[[color="#ff0000"]3[/color]].x and playerpos.y == coords[[color="#ff0000"]3[/color]].y and playerpos.z == coords[[color="#ff0000"]3[/color]].z then n = [color="Red"]3[/color] Agora copie as linhas 52 e 53 cole na 54 ou 55 e faça o mesmo(substitua todo 2 por 3),ficando assim: elseif param == lugares[[color="Red"]3[/color]] then n2 = [color="#ff0000"]3[/color] E está pronto, simples e rápido, use o mesmo método pra fazer o 4º, 5º, 6º e quantos mais waypoints você quiser! (Y) 5. Talkactions.xml Agora é só abrir o talkactions.xml e colocar isso acima de </talkactions>: <talkaction words=[color="Blue"]"Waypoint"[/color] script="waypointsystem.lua" /> <talkaction words=[color="#0000ff"]"waypoint"[/color] script="waypointsystem.lua" /> <talkaction words=[color="DarkGreen"]"GO"[/color] script="waypointsystem.lua" /> Palavra a falar pra salvar o waypoint(maisculo e minusculo), caso mude essa palavra, vá no script na linha 19: if words == [color="#ff0000"]'Waypoint'[/color] or words == [color="#ff0000"]'waypoint'[/color] then e mude lá também o que está em vermelho. Palavra a falar pra ir ao waypoint, mude no script tb, linha 48 6. Usando Já falei lá no começo como usa mas como agora vcs tem uma idéia melhor de como é o script então vo fla denovo: 1. Ande em cima de algum waypoint e diga waypoint ou outra palavra que você escolheu. 2. Saia de perto desse waypoint e diga GO "nome do waypoint pra voltar pra ele. cya
×