Jump to content

Search the Community

Showing results for tags 'script'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • A Cidade OTBR
    • OTServ Brasil
    • Atendimento
    • Taverna
  • OpenTibia
    • Notícias e Discussões
    • Suporte - Dúvidas, Bugs, Erros
    • Downloads
    • Tutoriais
    • Show-Off
    • Divulgação de Servidores
    • Projetos e Formações de Equipes
  • Outros
    • Design

Found 74 results

  1. Antes de fazer a sua pergunta, tenha certeza de ter lido as regras da seção e o guia abaixo: [Hidden Content] [Hidden Content] Descreva em algumas palavras a base utilizada. (Nome do servidor / Nome do cliente / Nome do website / etc.). TFS 1.3 / Versão 10.98 Base: Client 12x Qual é a sua pergunta? Boa noite, desculpe se estiver no local errado, eu estou montando um OtServ porém queria colocar alguns itens nele com atributos que ele não possui, um exemplo: Este item de Fansite do TibiaWiki ([Hidden Content]) Virar um item equipável para um mage. Vi alguns tutoriais de como mudar atributos dos itens e não sei se apenas trocar a descrição no items.xml e movements.xml ou weapons.xml seria o correto, se alguém tiver uma luz eu ficaria grato. Outro ponto também, queria criar algum tipo de XP Boost igual tem no Global, que compra pelo store e vem como um item utilizavél. Obrigado e boa noite. 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. Scripting Sala de Boss

    Antes de fazer a sua pergunta, tenha certeza de ter lido as regras da seção e o guia abaixo: [Hidden Content] [Hidden Content] Descreva em algumas palavras a base utilizada. (Nome do servidor / Nome do cliente / Nome do website / etc.). Ex: The Forgotten Server 1.3, Versão: 10.98. Base: OTServBR-Global, Versão: 12.00. Qual é a sua pergunta? Pessoal tenho esse código que achei por ai na net ( mas como é antigo resolvi criar um novo post para ver se soluciona ): Ele vai na pasta Movements, e serve para criar uma Boss Room onde só entra 1 pessoa por vez. Enfim, ela faz quase tudo que está escrita pra fazer ( spawna o boss, seta o tempo para kickar o jogador ), porém não está limpando a sala e nem deixando o mesmo jogador repetir o boss. Coloquei ai no script para o boss poder ser feito de 1 em 1 minuto, porém ele não deixa o personagem fazer mais de 1 vez. Criei um item para dar ao personagem o Storage 9000, esse item qdo usado some e o personagem ganha o storage, então ele consegue entrar no TP. Acontece que depois que ele sai ele não consegue entrar mais, como se o storage tivesse sido removido, mas no banco de dados do PHPMYADMIN fica 9000 lá em players_storage. Ps: Se usar novamente o item de storage ele acaba conseguindo ir de novo no boss porém, somente +1 vez (???) Agradeço desde já ^^. 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:
  3. Antes de fazer a sua pergunta, tenha certeza de ter lido as regras da seção e o guia abaixo: [Hidden Content] [Hidden Content] Descreva em algumas palavras a base utilizada. (Nome do servidor / Nome do cliente / Nome do website / etc.). Ex: The Forgotten Server 1.3, Versão: 10.98. Base: Uso The Forgotten Server 1.3, Versão: 10.98. Qual é a sua pergunta? Coloquei o sistema Slot em Equips do MOCK, mas deu uns erros. Primeiro deu erro quando ligo o server. E segundo deu erro quando eu tento usar o item para dar o slot (mesmo com o primeiro erro, tentei ver se funcionada) O codigo usado é o MESMO que ele colocou no post Slot em Equips, não mudei nada. 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:
  4. Scripting Recompensa ao passar de Level

    Antes de fazer a sua pergunta, tenha certeza de ter lido as regras da seção e o guia abaixo: [Hidden Content] [Hidden Content] Descreva em algumas palavras a base utilizada. (Nome do servidor / Nome do cliente / Nome do website / etc.). Ex: The Forgotten Server 1.3, Versão: 10.98. Base: otservbr, 12x, myaac Qual é a sua pergunta? Como faço para adicionar umas recompensas quando o player passar de level? ex: pegou nv 20 ganhou 20 crystal coins, nivel 50 ganhou 30.. eu adicionei essa linha no creatureScripts.xml e criei um arquivo chamado LevelUpReward.lua dentro da pasta scripts com esse codigo: mas ainda assim nada aconteceu ao atingir um novo nivel.
  5. Programação YurOTS 7.6

    Olá, Vou ir direto no assunto. Tenho uma distro que eu uso, e o config,lua dela contém essa parte: --------------------------- DAMAGE PERCENTS --------------------------------- -- Forms of attacks with any weapon -- Full Attack,Balanced,Full Defense attackforms = {"1.1", "0.9", "0.8"} -- Forms of Defense of the Shield (NO IS INCLUDED ARMOR) -- Full Attack,Balanced,Full Defense defenseforms = {"0.3", "0.5", "0.8"} -- Damage Form/x -- Knight, Paladin -- Default - {"1.2","1.2"} dmg = {"0.5","0.5"} Alguém sabe me dizer se existe esses códigos, OU A BASE, pra mim colocar em uma source?
  6. 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!!!
  7. Ola, instalei o sistema de War Of Emperor no meu servidor e está ocorrendo alguns bugs na hora que os geradores morrem: _woe.lua: Alguém pode me ajudar? Qualquer coisa posto parte do script aqui. (The Forgotten Server, version 0.4_DEV (rev 3777))
  8. Olá gostaria de pedir a ajuda de você com um script, para ExtremeOT 7.6 XML, o server fica meio salaga as vezes por ter muito lixo no chão e estou querendo bolar um sistema de auto clean, e como não tenho as sources não consigo fazer, porem estive pensando e tenho um NPC que tem accesso de GOD e ele faz anuncios no /B eu gostaria que ele fizes esse anuncio "Clean map em 1 min, guarde seus itens", "clean map em 30 segundos, guarde seus itens" isso a cada umas 4 horas mais ou menos e logo em seguida mande o comando /clean. O script ja esta pronto porem ele fala de maneira aleatoria por um tempo que eu especifiquei, gostaria que alguem me ajudasse a editar esse script para o que eu citei acima script que eu tenho é esse:
  9. Scripting [TFS 1.x] Ajuda para script

    Bom dia, Pedi um script e conseguir, porem não consegui adaptar para as pos que preciso algum pode ajudar. Script dos fogos das estatuas dos falcons: As posições abaixos:
  10. The Forgotten Server 1.3, Versão: 10.98 Bom dia pessoal! Minha dúvida é a seguinte: Estou fazendo um sistema em que vou ter que fazer uma busca por vários registros. Como eu busco e percorro esses registros utilizando as funções existentes? Eu conheço algumas funções de executar query, buscar resultado, mas não encontrei nenhum exemplo de como percorrer vários resultados. Só encontrei como pegar os valores do primeiro resultado. Ex: De código Obs: Sei mexer com banco de dados, não sei percorrer as linhas do resultado utilizando os comandos lua do servidor Forgotten.
  11. Scripting Ajuda a configurar ! rep++

    -- Monday = Segunda -- Tuesday = Terça -- Wednesday = Quarta -- Thursday = Quinta -- Friday = Sexta -- Saturday = Sabado -- Sunday = Domingo function onLogin(cid) DoubleDays = {"Sunday"} if isInArray(DoubleDays, os.date("%A")) then doPlayerSetRate(cid, SKILL__LEVEL, 2.0) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[Double XP] \ Today we are in Double XP event! \ Enjoy.") end return true end ou arruma esse script para tfs 0.3.6 local amuletId = 2160 function onKill(creature, target) local player = Player(creature) if player:getSlotItem(CONST_SLOT_NECKLACE).itemid == amuletId then if target:isMonster() then local pos = target:getPosition() local corpse = Tile(pos):getTopDownItem() if corpse:getType():isCorpse() and corpse:getType():isMovable() then if corpse:isContainer() then local str = "[Double Loot Amulet] Duplicated loot: " for i = corpse:getSize()-1, 0, -1 do local item = corpse:getItem(i) str = str..item:getCount().."x "..item:getName()..", " doAddContainerItem(corpse, item:getId(), item:getCount()) end str = string.sub(str, 1, #str-2).."." player:sendTextMessage(TALKTYPE_ORANGE_2, str) pos:sendMagicEffect(31) end end end end return true end
  12. Olá, eu gostaria de saber como fazer uma quest onde o player clica no baú e ganhe exp. Eu tenho alguns scripts salvos, porém não sei fazer a quest no map editor pra colocar exp pra cada tipo de quest. questexp.lua
  13. 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!
  14. Pet System Você fala !pet e terá um cachorrinho de estimação, falando !pet outra vez ele sumirá, não é possível fazer pets em zonas de proteção. Se seu pet morrer não importa, é possível fazer ele quantas vezes quiser. No futuro estarei adicionando mais tipos de pet como gatos e esquilos, mas por enquanto é só o cachorro. Na pasta data/talkactions/scripts de seu ot crie um arquivo com nome de pet.lua e coloque isto: function doPlayerAddSummon(cid, name, pos) local creature = doSummonCreature(name, pos) doConvinceCreature(cid, creature) return creature end function onSay(cid, words, param) local petUid = 0 local pos = getCreaturePosition(cid) local store = getPlayerStorageValue(cid, 1000) if words == "!pet" then if store == -1 then if getTilePzInfo(pos) == FALSE then petUid = doPlayerAddSummon(cid, "Dog", pos) setPlayerStorageValue(cid, 1000, petUid) else doPlayerSendCancel(cid, "You can not call your pet in a protection zone.") end else if isCreature(store) == TRUE then doRemoveCreature(store) setPlayerStorageValue(cid, 1000, 0) else if getTilePzInfo(pos) == FALSE then petUid = doPlayerAddSummon(cid, "Dog", pos) setPlayerStorageValue(cid, 1000, petUid) else doPlayerSendCancel(cid, "You can not call your pet in a protection zone.") end end end end end Agora só falta adicionar esta tag no talkactions.xml na pasta data/talkactions: <talkaction words="!pet" script="pet.lua"/> Não era necessário colocar isto abaixo no script, mas para futuras modificações que farei será importante: Até a próxima e se doarem OT$ ficarei muito feliz. E não esqueçam das sugestões, elas são importantes mas nada muito difícil por favor.
  15. Senhores, sejam todos muito bem-vindos. Você que possui experiência com OTSERVER (Programador, Scripter, Mapper...) e esteja a procura de um projeto sério, se você é uma pessoa engajada e comprometida com suas responsabilidades e que sabe trabalhar em grupo, aqui é o seu lugar. NEXUSWAR O projeto NEXUSWAR acabou de sair do forno, é isso mesmo, a ideia é desenvolver um projeto com mapa global na versão 8.6 compatível com a realidade para que possamos oferecer a melhor das experiências do Tibia Global, com GUERRAS, EVENTOS, BIG QUESTS, RAIDS e outros... [+] Sistemas [-] Visão geral do projeto Até o momento este e o percentual do projeto. Progresso |||||||||| (0%) [+] Informações do Servidor Mapa Global Full Versão 8.60 [+] A equipe Essa são nossas vagas! Programador (Vaga em aberto) Scripter (Vaga em aberto) Mapper (Vaga em aberto) [+] Contato Rápido Skype: [email protected] WhatsApp: (11) 96261-4291
  16. Pessoal coloquei um ot online e uns amigos fizeram suas contas e vieram sem nenhum item mesmo com o script no creaturescripts funcionando mas depois nao funciona mais o que faço ? alguem tem o script de quest com os itens iniciais ? ja que nao ta dando certo
  17. Scripting ajuda com house + stamina

    galera tenho um ot... ja des de 2012 e voltei a hostiar e tem 2 coisas q preciso arrumar house > alguma script q faça com que o player perca a house se ficar uns 30dias of ( pq ja abri esse ot e ele ficou mais de 1 ano on sem reset, e mt house parada ) stamina > quando player morre esta voltando stamina full.. achei alguns tópicos na net, porem nem um resolvido.. (nao tem e nem vou colocar sistema de algum item para ficar full stamina ) (New Slayer Yurots 8.6)
  18. Servidor em constante desenvolvimento buscamos uma equipe bem qualificada para ser remunerada! contato pelo servidor merlinpvp.servegame.com ou www.facebook.com/merlinbaiakteam
  19. TFS 1.0 Skill Point System

    Opa galera, eu vi esse script em outro fórum e trouxe aqui para compartilhar com vocês porque achei a ideia bacana. O script é uma forma de customizar seu personagem à medida que ele vai avançando de level. O avanço de level dá ao jogador "pontos", os quais podem ser utilizados para comprar HP, MP e niveis de skills. O grande benefício desse sistema é que jogadores de um mesmo level podem ser radicalmente diferentes e podem se especializar, como no caso de uma equipe/time (um druida com pontos pode se especializar em HP e MP e virar o healer do time, enquanto um knight pode se especializar somente skills para ser o atacante e outro em HP para ser o tank e bloquer) Algumas imagens do funcionamento (retiradas do outro tópico original): Agora que já se interessou pelo sistema, vamos aplicá-lo em nosso servidor! Em /creaturescripts/scripts/skillpoints.lua local SkillPoints = { [1] = 1, [2] = 1, [3] = 1, [4] = 1, [5] = 1, [6] = 1, [7] = 1, [8] = 1, } function onAdvance(cid, skill, oldlevel, newlevel) if not (SkillPoints[getPlayerVocation(cid)]) then return true end if (skill == 8) then if (getPlayerStorageValue(cid, 14573) < newlevel) then if (getPlayerStorageValue(cid, 14574) < 0) then setPlayerStorageValue(cid, 14574, 0) setPlayerStorageValue(cid, 14573, 0) end setPlayerStorageValue(cid, 14573, newlevel) setPlayerStorageValue(cid, 14574, getPlayerStorageValue(cid, 14574) + (newlevel - oldlevel) * (SkillPoints[getPlayerVocation(cid)])) doCreatureSay(cid, '+1 Skill Point!', TALKTYPE_ORANGE_1) end end return true endEm /creaturescripts/scripts/login.lua, adicione player:registerEvent("SkillPointSystem")Em /creaturescripts/creaturescripts.xml, adicione <event type="advance" name="SkillPointSystem" script="skillpoints.lua"/>Em /talkactions/scripts/skillpoints.lua local SkillPoints = { [1] = 1, [2] = 1, [3] = 1, [4] = 1, [5] = 1, [6] = 1, [7] = 1, [8] = 1, } function onSay(cid, words, param) local player = Player(cid) local vocation = Player(cid) if not (SkillPoints[getPlayerVocation(cid)]) then return false end local param = param:lower() local p2 = param:split(",") if (getPlayerStorageValue(cid, 14574) < 0) then setPlayerStorageValue(cid, 14574, 0) end local skillids = { ["shielding"] = 5, ["sword"] = 2, ["axe"] = 3, ["club"] = 1, ["fist"] = 0, ["distance"] = 4 } local attributes = { ["health"] = {np = 1, vl = 2, skn = "Hit Points"}, ["energy"] = {np = 1, vl = 2, skn = "Mana Points"}, ["magic"] = {np = 15, vl = 1, skn = "Magic Level"}, ["shielding"] = {np = 15, vl = 1, skn = "Shielding Skill"}, ["sword"] = {np = 15, vl = 1, skn = "Sword Skill"}, ["axe"] = {np = 15, vl = 1, skn = "Axe Skill"}, ["club"] = {np = 15, vl = 1, skn = "Club Skill"}, ["fist"] = {np = 15, vl = 1, skn = "Fist Skill"}, ["distance"] = {np = 15, vl = 1, skn = "Distance Skill"}, } if (param == "check") then doPlayerPopupFYI(cid, "<<<<< Skill Points >>>>> \n\nPoints Available: ".. getPlayerStorageValue(cid, 14574) .."\nPoints Per Level: ".. SkillPoints[getPlayerVocation(cid)]) elseif (p2[1] and p2[1] == "add") and (attributes[p2[2]]) and (tonumber(p2[3])) then local creature = Creature(cid) local cpos = creature:getPosition() if (getPlayerStorageValue(cid, 14574) < tonumber(p2[3]) * attributes[p2[2]].np) then doPlayerSendCancel(cid, "you need more skill points go hunt!") return cpos:sendMagicEffect(CONST_ME_POFF) end if (p2[2] == "health") then player:setMaxHealth(player:getMaxHealth() + attributes[p2[2]].vl * tonumber(p2[3])) player:addHealth(attributes[p2[2]].vl * tonumber(p2[3])) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have been rewarded with ".. tonumber(p2[3]) * attributes[p2[2]].vl .. "Hit Points") elseif (p2[2] == "energy") then player:setMaxMana(player:getMaxMana() + attributes[p2[2]].vl * tonumber(p2[3])) player:addMana(attributes[p2[2]].vl * tonumber(p2[3])) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have been rewarded with ".. tonumber(p2[3]) * attributes[p2[2]].vl .. "Mana Points") elseif (p2[2] == "magic") then player:addManaSpent(math.ceil((Vocation(getPlayerVocation(cid)):getRequiredManaSpent(player:getBaseMagicLevel() + 1) - player:getManaSpent()) / configManager.getNumber(configKeys.RATE_MAGIC))) ---Player receives message on Skill Advance elseif(skillids[p2[2]]) then for a = 1, tonumber(p2[3]) do player:addSkillTries(skillids[p2[2]], player:getVocation():getRequiredSkillTries(skillids[p2[2]], player:getSkillLevel(skillids[p2[2]]) + 1) - player:getSkillTries(skillids[p2[2]])) --Player receives message on Level Advance end end setPlayerStorageValue(cid, 14574, getPlayerStorageValue(cid, 14574) - tonumber(p2[3]) * attributes[p2[2]].np) else local msgx = "" for i, v in pairs(attributes) do local add = (v.np > 1) and "s" or "" msgx = msgx .. string.upper(i:sub(1,1)) .. i:sub(2, #i) .. " - ".. v.np .. " points".. add .. " = " .. v.vl .. " ".. v.skn .. "\n" end doPlayerPopupFYI(cid, " <<<<<<<< Add Skill Points >>>>>>>> \n\n Skill Points are used to customize your character\n\n".. msgx .. "\nExample of Use: ".. words .." add,health, 1\n\nPoints available: ".. getPlayerStorageValue(cid, 14574)) end return true endEm /talkactions/talkactions.xml, adicione <talkaction words="!points" separator=" " script="skillpoints.lua"/>Se gostou, poste!<Não testei o script, embora tenham garantido no outro fórum que está funcionando... se não funcionar, poste no próprio tópico os erros relacionados a esse script ou então em nossa seção de dúvidas de scripting ([Hidden Content])>
  20. Olá meu nome é Jean Carlos e estou a procurar de uma equipe com o servidor já online ou preste a abrir. Segue abaixo algumas fotos de trabalhos. [spoiler=Designer] Capa de facebook da pagina do meu clan. Escudo do meu Clan [spoiler=Mapper] OBS: Fotos antigas [spoiler=WebDesigner] Interessado manda pm ou deixar informações a baixo.
  21. Olá pessoal da Otserv, Tudo beleza ? Como vocês já perceberam eu vou postar um Script de Upgrade (Avá?) Segue os dados do script: Vamos começar, 1º vá na pasta de seu servidor e entre data/actions/scripts e crie um novo arquivo chamado Upgrade.lua Dentro deste arquivo coloque o seguinte código: (EXPLICAÇÕES NO SCRIPT) após isso volte em data/actions e abra actions.xml e adicione a seguinte linha: NESTA COR - Coloque o ID de sua pedra de Upgrade (EXTRA) Como adicionar mais itens ? Simples basta pegar o script e Copiar as seguintes linhas: e coloca-las novamente (lembrando de editar) Ficando de assim: Para Assim: [spoiler=Imagens de como funciona] [ATTACH]5375[/ATTACH] Obrigado, Espero que tenham gostado.
  22. Funções iteradoras em Lua

    Iteradores são funções especiais criadas para iterar, ou seja, percorrer, listas, vetores (arrays), matrizes, tabelas ou o que quisermos. Nós criamos iteradores para usar na função for. Um exemplo de iterador que você já deve conhecer é o pairs. Vamos supor que eu tenha a seguinte tabela: k = {1, 2, 3, 4, 5} E eu queira iterar por todos eles imprimindo o seu quadrado. Como faríamos isso? Casualmente, o código seria este: for i = 1, 5 do print(i ^ 2) end Mas e se eu quiser fazer isso várias vezes? Com uma lista que não segue um padrão? Então criamos um iterador, mas primeiro, vamos entender a estrutura de um em pseudocódigo Lua: function iterator(values) local pos = 0 --posição do iterador na lista return function() pos = pos + 1 if values[pos] ~= nil then return values[pos] end return nil end end Perceba que eu não retorno um valor especifico ao chamar a função iterator(), eu retorno uma nova função. Essa função será chamada pelo for até que seu retorno seja nil, onde Lua assume que o iterador acabou. E como eu sei quando acaba? Simples, há uma variável (chamei, neste caso, de pos) que armazena a posição dentro do array values do próximo valor a ser retornado. A cada iteração, o valor aumenta em 1 dentro da função. Quando eu acessar um índice dentro do array que não existe, seu valor (values[pos]) será nil, portanto eu testo essa condição. Parece bastante complexo, mas vamos voltar ao exemplo do quadrado. Chamarei minha função iteradora de square: function square(numbers) local pos = 0 return function() pos = pos + 1 if values[pos] ~= nil then return values[pos] ^ 2 end return nil end end A cada chamada da função de retorno, eu aumento a posição e retorno este elemento elevado ao quadrado. Então, usarei a função assim: for i in square(k) do print(i) end Que funciona como o esperado: O que mais podemos fazer com iteradores? Podemos, por exemplo, bloquear uma palavra usando a função onTalk do xotservx (pesquise no Google): local palavra = "jujuba" function splitWords(phrase) local pos = 0, words = phrase:gmatch("%w+") return function() pos = pos + 1 if words[pos] ~= nil then return words[pos] end return nil end end function onTalk(cid, type, text, position) for w in splitWords(text) do if w = palavra then return false end end return true end Claro que esse exemplo é bastante simplório, mas demonstra a utilidade dos iteradores. Neste caso, eu testo todas as palavras que o player falou para encontrar uma palavra especifica que eu defini. Podemos transformar isso tudo em um loop while, para você entender um pouco melhor: local words = splitWords(text) while w = words() do if w == nil then break end if w = palavra then return false end end end return true Usando o iterador, ganhamos organização no código e o controle do for. Espero que façam bom uso de iteradores para organizar seus códigos
  23. Limitar Guild

    Bem, gostaria de um script, ou config lua, que limitasse o tamanho da guild para no maximo 15 pessoas. Grato quem puder me ajudar.
  24. Delay em Escadas.

    [spoiler=Padrão] Nome: Delay em Escadas; Autor: MiltonHit, Mirto; Testada: Sim, TFS 0.3.6 (8.54). Olá, hoje vou postar um script muito simples, porém bastante legal e útil. Ele é o seguinte, quando o player sobe ou desce uma escada, o script faz o player esperar um tempo configurável não repetir a mesma ação, ou seja, ele terá de esperar o tempo que você determinar para subir ou descer alguma escada novamente, ideal para servidores que tem muito PvP de escadas. Em data/movements/scripts copie um arquivo qualquer .lua e renomeie para stairs.lua, apague tudo que estiver la dentro e coloque o seguinte code: function onStepIn(cid, item, position, fromPosition) local storage = 89301 --storage gravada local delay = 1 --tempo configuravel do delay if (getPlayerStorageValue(cid, storage) <= os.time()) then setPlayerStorageValue(cid, storage, os.time()+delay) return true else doTeleportThing(cid, fromPosition, false) doPlayerSendCancel(cid, "Wait one moment for use this stair.") end return true end Bom, agora vem a parte mais "chata", você precisa setar o id de todas escadas do servidor, tanto as que descem quanto as que sobem, eu vou postar a lista que eu fiz para o meu servidor (8.54) mais se o seu servidor for outra versão com certeza você terá de alterar os IDS, vá em data/movements/movements.xml e adicione a seguinte linha: <movevent type="StepIn" itemid="459;8564;8565;8566;8560;8561;8562;8563;8559;6924;6923;6922;6918;6919;6920;6917;9574;480;5259;5260;3687;3688;9573;1388;1390;1392;1394;5258;6921;6130;6129;6128;411;423;4836;9846;432;433;4837;475;429;3138;8282;476;3219;3220;8283;479;4834;4835;7925;7924;1396;1385;8372;6915;6913;6911;6909;3685;3683;3681;8374;8376;8378" event="script" value="stairs.lua"/> Pronto, está tudo instalado! Só não se esqueça que se você não configurar essa linha acima de acordo com o seu servidor, você poderá ter problemas. Abraços, qualquer coisa dá um grito.
  25. [Ultilitário] Controle de Script v1

    [C]ontrole de cript Olá, estava sem nada pra fazer, e um belo tempo sem programar, então procurei por um ultilitário para gerenciar scripts .lua, e não achei. Então resolvi criar um. Descrição: O programa gerencia scripts .lua, no caso: actions, creaturescripts, globalevents, movements, npcs, lib, talkactions, e weapons. Fotos do programa: [spoiler=Visualizar] Download: Controle de Script: Link 1: Clique Aqui. / Link 2: Clique Aqui. Scan: Clique Aqui. Créditos: Ronaldo Dias ( Eu, BlueeYakuzy). Gostou ? Comente, e doe V$ ! Caso gostarem, irei fazer um update pra versão 2.
×