Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 03/11/13 em todas áreas

  1. Gears

    Mapping Thread

    Expirou a imagem
    2 pontos
  2. PedroXtibiaaaa

    [8.6] Eternal Kingdoms Map

    Download: Clique aqui Scan: Clique aqui Remere's Map Editor 2.1 Créditos: Artii e o pessoal do Eternal Kingdoms (otland) Versão: 8.60/8.61, testei com 8.70 e funcionou também... O mapa possui o mínimo de bugs possíveis, talvez alguns pequenos bugs simples, todas as houses estão 100%. Cidades: Aleda Leafport Fallen Selroth Seldia Shadow Wood Screenshots
    1 ponto
  3. caotic

    AFL Sistema de Som Para Opentibia

    Ola galera xtibiana. Ate hoje não sabemos porque tibia da ciposft não tem som!. Blah deve ser preguiça deles Mais você não e ciposft e pode ter audio em seu otserv. Pensando nisto desenvolvi o AFL e um sistema que permte executar audio ao jogar seu otserv. Ele utiliza duas bibliotecas Lua Socket e ProteaAudio. O player precisa executar o servidor que e um programa também feito em Lua depois disso o client podera se comunicar e podera passar informações. Para executar som basta ultlizar a "mini - blibioteca" que irei dispobilizar. A instalação e simples então lets go. Vá na sua pasta raiz onde fica seu executal baixe esses arquivos abaixos e coloque eles nela: http://www.mediafire...cc692j7nxrczz6s Pronto lua socket ta instalada em seu servidor. Agora continua na mesma pasta e crie um arquivo Lua chamado de afl e coloque isto: function executeAudio(cid, audio) require('socket') local client = socket.connect("".. doConvertIntegerToIp(getPlayerIp(cid)).."", 1234) if not client then return true end client:send(audio.."\n") client:settimeout(0.1) local msg,stat = client:receive() end function exitAFL(cid) require('socket') local client = socket.connect("".. doConvertIntegerToIp(getPlayerIp(cid)).."", 1234) if not client then return true end client:send("exit\n") client:settimeout(0.1) local msg,stat = client:receive() end Pronto a nossa blibioteca(e.e mini - blibioteca né) foi instalada. Agora vamos em creaturescripts/scripts e coloque isto: function onLogout(cid) dofile("./afl.lua") exitAFL(cid) return true end Agora vá em login.lua e registre o evento: registerCreatureEvent(cid, "afl") Coloque esta tag em talkactions.xml: <event type="logout" name="lfa" register = "1" event="script" value="afl.lua"/> Pronto a parte do client foi instalada. Agora vamos pro servidor: Baixe(link abaixo) os arquivos do servidor lfa. http://www.mediafire...axrb36lbypwp50q Descompacte este arquivo junto com sua pasta do seu client. E protinho!. Vamos a alguns mini - tutos. Instalado: Criando novos Scripts: Colocandos novos sons:
    1 ponto
  4. Crystal Server Olá Venho lhes o Crystal Server. Aviso O Mapa é YurOTs 8.1 editado por mim Thryller (Shynzo). Mapa ainda está incompleto na parte de quests, mas este mapa fez muito sucesso na epoca 8.1 então resolvi atualiza-lo. Conta do GOD é 222222/password Estamos a procura de mappers e pessoas para trabalha na atualização da pasta data, monsters, items.xml, movements entre outras coisas. Lembrando que estas atualizações terão de ser o mais parecidas possiveis com o Tibia Global. [ File changes: M = Modificado D = Deletado A = Adicionado [ 2.3 - PL 1 [ A... ] [ M... Crystal Server.exe config.lua data/weapons/weapons.xml ] [ D... ] ] ] [ Charges [ 2.3 - PL 1 [ ENGLISH Added blackSkullDecreaseHealth at config.lua (Thriller) Fixed possible crash with Modern AAC and OTServ List (Thriller) Fixed weapons bugs http://vapus.net/forum/project.php?issueid=52 ] [ PORTUGUES Adicionado blackSkullDecreaseHealth no config.lua (Thriller) Corrigido crash com Modern AAc e OTServ List (Thriller) Corrigido bug das weapons http://vapus.net/forum/project.php?issueid=52 ] ] ] Downloads Download Server 2.3pl1 Download Dll Files IP Changer Download do IP Changer Source - Baixe apenas se você souber para que serve Download source ------------------------------------------------ Outras versões 2.3 Algumas SS
    1 ponto
  5. Trocando os itens de seu Remere's Map Editor Bom, vejo que muitas pessoas tem dificuldades em trocar os itens de seu RME. Mas como assim, trocar os itens do meu RME??? Voce ja viu no rme, o "Raw Pallete" , ai em tileset o "Other", la fica alguns itens. No seu RME, eles podem estar na versao do tibia 8.54, vou ensinar a voces a colocarem uma versao mais atualizada, ou a que voces quiserem. Então vamos lá: Vá na pasta do seu RME (provavelmente será essa: computador>disco local (C:)>arquivos de programa>remere's map editor) e a pasta será assim: (SS) 2. Clique em Data: 3. Agora, dentro da pasta Data estará assim: 4. Agora voce vai na pasta da versao do seu mapa, por exemplo, alguns mapas abrem com o tibia 8.54 e outros com 8.6 (depende da versão do mapa, aqui no tutorial será com o 8.6, mas caso voce queira fazer com outra versao só fazer o mesmo na pasta da versao que voce queira). Clique em 8.6: 5. Agora dentro da pasta 860, estará assim: 6. Agora dentro da pasta tem esses itens, e no meios deles tem isto: Agora apague-os. 7. Agora, voce escolhe, se quer pegar itens atualizados, (8.7...) ou da pasta do seu ot, se voce quiser pegar da pasta do seu ot, vá na pasta do seu ot e vá em data/itens/ dentro da pasta, provavelmente tera 3 itens la: Items.xml items (em bloco de notas) randomization Copie o items.xml e o items em bloco de notas 8. Agora que copiou os 2, vá em computador>disco local (C:)>arquivos de programa>remere's map editor>data>860 e cole os dois la, agora feche e abra seu RME. Pronto. Gostou ??? Da um REP+ ai
    1 ponto
  6. comedinhasss

    Rank System

    Versão: 3.1 Versão de tibia: 9.7+ Descrição: Como muitos sabem na versão 9.7 a tfs removeu o rank system, e o tibia também adicionou os novos estilos de diálogos. Então eu resolvi fazer um novo rank system com esse sistema. Features: - Rank system em tempo real. - Janela personalisada. - Rank de Frags (Mock) TAG: <talkaction words="!rank;/rank;!ranks;/ranks" event="script" value="rank.lua"/> Script: data/talkactions/rank.lua modaldialog2 = { title = "Rank", message = "Escolha o rank que você quer visualizar:", buttons = { { id = 1, value = "Ver" }, { id = 2, value = "Cancelar" }, }, buttonEnter = 1, buttonEscape = 2, choices = { { id = 1, value = "Fist" }, { id = 2, value = "Club" }, { id = 3, value = "Sword" }, { id = 4, value = "Axe" }, { id = 5, value = "Distance" }, { id = 6, value = "Shield" }, { id = 7, value = "Fish" }, { id = 8, value = "Magic" }, { id = 9, value = "Level" }, { id = 10, value = "Frags" } }, popup = false } function callback2(cid, button, choice) if (button == 1) then local str = "" local name_now if (choice == 1) then str = "--[ Fist Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 0 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 2) then str = "--[ Club Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 1 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 3) then str = "--[ Sword Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 2 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 4) then str = "--[ Axe Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 3 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 5) then str = "--[ Distance Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 4 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 6) then str = "--[ Shield Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 5 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 7) then str = "--[ Fish Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 6 ORDER BY `value` DESC LIMIT 20;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 8) then str = "--[ Magic Rank ]--\n" query = db.getResult("SELECT `maglevel`, `name` FROM `players` WHERE `group_id` < 3 ORDER BY `maglevel` DESC LIMIT 20;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(query:getDataString("name")).." - [" .. query:getDataInt("maglevel") .. "]" k = k + 1 until not query:next() end elseif (choice == 9) then str = "--[ Level Rank ]--\n" query = db.getResult("SELECT `name`, `level`, `experience` FROM `players` WHERE `group_id` < 3 ORDER BY `experience` DESC LIMIT 20;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(query:getDataString("name")).." - [" .. query:getDataInt("level") .. "]" k = k + 1 until not query:next() end elseif (choice == 10) then str = "--[ Kills Rank ]--\n" query = db.getResult("SELECT `p`.`name` AS `name`, COUNT(`p`.`name`) as `frags` FROM `killers` k LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `pk`.`player_id` = `p`.`id` WHERE `k`.`unjustified` = 1 GROUP BY `name` ORDER BY `frags` DESC;") if query:getID() == -1 then str = str .. "\nNinguém matou ninguém." end if (query:getID() >= 0) then k = 1 repeat if k > 20 then break end name_now, l = query:getDataString("name"), string.len(query:getDataString("name")) str = str .. "\n " .. k ..". ".. name_now .." - [" .. query:getDataInt("frags") .. "]" k = k + 1 until not query:next() end end doShowTextDialog(cid, 2529, str) end end function onSay(cid, words, param) addDialog(modaldialog2, 1002, cid, callback2); return true end Como usar: No servidor digite /rank e selecione o tipo de rank ou skill que você deseja visualizar. Video: (Antigo mais explicativo) Creditos: Comedinha (Bruno Carvalho) Mock Tutoriais de query em vários fórums. Oneshot
    1 ponto
  7. Demonbholder

    Lua Messenger

    Faaaaaaaala galera, beleza? Como a seção anda um pouco fraca de conteúdo ultimamente, graças ao início do ano letivo e outros acontecimentos, decidi contribuir um pouco, dessa vez trazendo um sistema que eu havia feito ano passado e deixei guardado. Há alguns dias atrás decidi que iria testa-lo e, por fim, posta-lo. Como funciona? É um sistema de messenger feito em lua utilizando as bibliotecas wx e socket, você pode se comunicar com qualquer outra pessoa que tenha o programa apenas sabendo o nome que ele cadastrou. Por que são dois códigos? Assim como no open tibia, para o sistema funcionar você precisa de alguém hosteando o servidor, pois é o servidor que vai pegar as mensagens enviadas de um cliente e mandar para outro, ou seja, o servidor faz a magica. É seguro? De maneira alguma, é extremamente fácil você descobrir as mensagens que estão sendo enviadas através do servidor, além disso, os códigos não estão encriptados e você pode alterar o código facilmente. Qual o propósito? Eu fiz os códigos há aproximadamente um ano, então não está tão bom como seria se eu fizesse hoje, mas, fiz apenas para fins de aprendizado e decidi postar para quem quiser estudar o código. Dito isso, vamos aos códigos: Client: Servidor: Imagens: Download do client Scan do client É isso, espero que testem e comentem, pois está em fase de testes.
    1 ponto
  8. Delaks

    Subwat Kamikaze V24 [03/10/2012] Atualizado!

    OLÀ GALERA,ESTOU AQUI PARA POSTAR O SUBWAT KAMIKAZE V24! ATUALIZAÇÔES -Adicionado Sala de quests -Adicionado Sala de hunts KM -Templo Modificado -Várias coisas decoradas -Agora com sistema de leilão -Hunts adicionadas -Retirado alguns bugs -Alguns lugares editados -Itens Reestabelecidos IMAGENS! TEMPLO TELEPORTS SUPER VIP SALA DE QUESTS SALA DAS HUNTS DOWNLOAD: http://www.4shared.c...ikaze_V24.html? SCAN: https://www.virustot...sis/1349299549/ È isso ai galera,atualizado o kamikaze,e se puder de um REP+ e comente que agradeço.
    1 ponto
  9. SkyLigh

    Proteger exp e magic level

    Fala galera hoje estou aki trazendo um script que ira proteger o player ate um certo lvl a exp e o magic level vamos lá . vá em data / creaturescripts / scripts / renome algum arquivo para levelprotection.lua é adicione . function onDeath(cid, corpse, deathList) local level = 7121727 -- até que level irá proteger o player de não perder exp & ml if isPlayer(cid) and getPlayerLevel(cid) <= level then doPlayerSetLossPercent(cid, PLAYERLOSS_MANA, 0) doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 0) end return true end em creaturescripts.xml adicione. <event type="death" name="ProtecExp" event="script" value="levelprotection.lua"/> em data / creaturescripts / scripts / login.lua adicione . registerCreatureEvent(cid, "ProtectExp")
    1 ponto
  10. BlueDragon

    Inicio Castelo

    Sem nada pra fazer comecei a fazer este castelo. Falta bastante coisa ainda
    1 ponto
  11. Skymagnum

    Matar player

    function onDeath(cid, corpse, deathList) local percent = 10 local exp = 0 for _, tid in ipairs(deathList) do if isPlayer(cid) then if isPlayer(tid) then exp = math.floor((getPlayerExperience(tid) / 100) * percent) doPlayerAddExp(tid, exp) doCreatureSay(tid, "FRAG", 1) end end end return true end
    1 ponto
  12. SkyLigh

    Music sing

    Ver o que vocês acham . Se vocês quererem as renders . so falar no tópico ..
    1 ponto
  13. Narutibia Layout - Tenta Esse... Modern Acc Eu Acho.
    1 ponto
  14. kaiotp

    Subwat Kamikaze v26

    Estou Arrumando
    1 ponto
  15. em baixo da função doPlayerSetVocation, coloque isso: setPlayerStorageValue(cid, 201303111501, COLOQUE AQUI A VOCAÇÃO) depois, em creaturescripts: function onLogin(cid) if getPlayerStorageValue(cid, 201303111501) ~= -1 then doPlayerSetVocation(cid, getPlayerStorageValue(cid, 201303111501)) end return true end ps: não testei.
    1 ponto
  16. Danilonilo

    Inicio Castelo

    1 ponto
  17. Gears

    Music sing

    Background Preto - Horrivel para essa sign Brush de seta - Não combinou Brush de Linhas - Não combinou Começe a usar c4d's, backgrounds, mapa de degradê, curvas, etc..
    1 ponto
  18. caotic

    Clone copiando look

    function onLook(cid, thing, position, lookDistance) local nome = "Clone das Sombras" if isMonster(thing.uid) and getCreatureMaster(thing.uid) and getCreatureName(thing.uid) == nome then local string = " "..getCreatureName(getCreatureMaster(thing.uid)).." Level-"..getPlayerLevel(getCreatureMaster(thing.uid)).." Vocation - "..getPlayerVocationName(getCreatureMaster(thing.uid)).."" doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string) return false end return true end Coloque a tag em creaturescripts.xml: <event type="look" name="clone" event="script" value="clone.lua"/> Registre o evento em login.lua: registerCreatureEvent(cid, "clone")
    1 ponto
  19. S para adicionar mais monstros você deve modificar dois scripts esse function onUse(cid, item, fromPosition, itemEx, toPosition) local CREATE_M = "Grim Reaper" local CREATE_P = {x = x, y = y, z = z} doTeleportThing(cid, CREATE_P, true) doSummonCreature(CREATE_M, CREATE_P) setPlayerStorageValue(cid, 782739, 1) return true end deixe assim function onUse(cid, item, fromPosition, itemEx, toPosition) local CREATE_M = {"Blastoise", "Mewtwo", "Arceus"} local CREATE_P = {x = x, y = y, z = z} for i = 1, #CREATE_M do doSummonCreature(CREATE_M[i], CREATE_P) end doTeleportThing(cid, CREATE_P, true) setPlayerStorageValue(cid, 782739, 1) return true end e esse function onKill(cid, target, lastHit) local CREATE_M = "Grim Reaper" if getPlayerStorageValue(cid, 782739) > 0 then if getCreatureName(target) == CREATE_M then setPlayerStorageValue(cid, 782739, 0) end end return true end deixando assim function onKill(cid, target, lastHit) local CREATE_M = {"Blastoise", "Mewtwo", "Arceus"} if getPlayerStorageValue(cid, 782739) > 0 then if isInArray(CREATE_M, getCreatureName(target)) then setPlayerStorageValue(cid, 782739, 0) end end return true end lembrando que os nomes dos monstros devem estar iguais nos 2 scripts, senão irá dar erro.
    1 ponto
  20. caotic

    AFL Sistema de Som Para Opentibia

    Abra o batch com bloco de notas e coloque isto: start tibia.exe
    1 ponto
  21. caotic

    AFL Sistema de Som Para Opentibia

    Unir o afl junto ao executável do client? Tu pode colocar o batch do afl para executar o client também
    1 ponto
  22. caotic

    AFL Sistema de Som Para Opentibia

    Coloquei vídeo e imagem no tópico. Organizei o bat do programa para ficar mais organizado agora esta organizado em pastas. Coloquei um client junto ao afl como exemplo. Organizei o tópico Coloquei links novos do mediafire. Agora esta bom
    1 ponto
  23. caotic

    AFL Sistema de Som Para Opentibia

    E na pasta do client. Ta bastante bagunçado tudo. Mais amanha eu vo organizar os arquivos.
    1 ponto
  24. comedinhasss

    Rank System

    Primeiramente gostaria de pedir para que postasse no tópico original. http://www.xtibia.co...prision-system/ Tem até um tutorial explicando: "- O tempo pode ou não ser fixo, é só você digitar /jail (nome do player) para um tempo fixo ou /jail (nome do player), (tempo) para coloca-lo com um tempo especifico." E a tag que eu recomendei já está somente para GM+: access="3"
    1 ponto
  25. comedinhasss

    Rank System

    Tenta postar o erro no tópico dele para que eu possa estar verificando ._.
    1 ponto
  26. comedinhasss

    Rank System

    Infelizmente não, a janela de modal dialogs foi lançada somente para 9.7+ Da para colocar pra abri tipo channel mais tenque faze umas config muito louca no creaturescripts e eu to sem tempo ._.
    1 ponto
  27. BrenoNeto

    [Encerrado]Dragon Ball: The History

    2 ? Bully, aquele tal de Heros Online la que vc me mostrou o cara la do x-men, um de harry potter e esse agr.
    1 ponto
  28. BrenoNeto

    [Encerrado]Dragon Ball: The History

    não se decide ein =0 ta cada hora em um diferente, espero que esse vá pra frente ;D, precisar de qq coisa posso te ajudar ^^
    1 ponto
  29. fsg

    Importando Mapas Do Client Para O Flash

    Importando Mapas do Client Para o Flash Eaaaai pessoal, este tutorial é muito simples, apenas irei usar as imagens do TibiaBR '-' Abaixo vou ensinar como vocês podem importar seus mapas do Client C++ para o Tibia Flash. Mapas sendo importados... Mapas importados! Agora segue como vocês podem fazer isto. Primeiramente abra o Tibia; Após abrir o Tibia, clique em Options; Depois de abrir a opção Options, clique em Export Automap; Pronto, agora abra seu Flash Client e entre na sua conta. Após entrar vá em Options; Agora vá na aba Import/Export e clique em Import Minimap; Depois de clicar em Import Minimap, vá no seu Computador e digite na aba de navegação "%appdata%\Tibia"; Agora irá abrir uma pasta, e selecione o arquivo "ExportedAutomap.dat" e clique no botão Abrir; Agora no Tibia Flash irá aparecer o seguinte: Não cancele, pois não irá funcionar! Imagens: TibiaBR Créditos: Felipe Sartori [XTibia.Com]
    1 ponto
  30. Demonbholder

    Getclosestnumber(N)

    Bom dia, boa tarde, boa noite, galera! Eu estava fazendo um script aqui, e percebi o inconveniente que era não ter essa função. Vocês, scripters, devem saber a função do math.ceil e math.floor, certo? Caso não saiba e queira aprender, clique aqui. Esta função se baseia nesta outras duas funções citadas acima. Ele checa se n está mais perto do math.floor de n, ou do math.ceil de n e retorna uma dessas funções. Vamos a função: function getClosestNumber(n) return math.ceil(n) - n > n - math.floor(n) and math.floor(n) or math.ceil(n) end Simples não? Abraços.
    1 ponto
  31. joaohd

    Introdução À Programação Lua

    Introdução à programação LUA e lógica de programação Assim como todas as linguagens de programação, LUA tem suas particularidades e sua estrutura lógica própria, a qual envolve suas funções, operadores e engines. Para começarmos a programação em LUA, devemos conhecer sua lógica, para que possamos aplicá-la em nossos códigos. Abaixo, você encontra os operadores da linguagem e sua explicação: • “Local” = É usado para a definição de variáveis. Pode ser encontrado também destacando uma função. Neste último caso, seu uso pode ser dispensado quando a função não se encontra embutida na função principal. Exemplo de uso: ► local a = 1 ► function onUse(cid, item, fromPosition, itemEx, toPosition) local function helloWorld() print("Hello World") return TRUE end return helloWorld() end ► function helloWorld() print("Hello World") return TRUE end function onUse(cid, item, fromPosition, itemEx, toPosition) return helloWorld() end Note a diferença entre o segundo e o terceiro exemplos. Em ambos, a função principal é a “onUse”, porém, em um dos casos foi usado o operador “local” destacando a função secundária, que se encontrava embutida na função principal, ou seja, “abaixo” da função principal. • “If” = É usado para definir condições. Ele é bastante usado para tornar o script restrito ao uso não programado. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) > 10 then print("O jogador possui level maior que 10") end return TRUE end Neste exemplo, o código só poderá ser usado para jogadores com level maior que 10 e retornará a mensagem “O jogador possui level maior que 10”. • “Elseif” = Assim como o “if”, é usado para definir condições, porém, seu uso deve estar obrigatoriamente associado ao “if”. Este operador define outras condições para que o código entre em vigor. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) > 10 then print("O jogador possui level maior que 10") elseif getPlayerLevel(cid) == 10 then print("O jogador possui level 10") end return TRUE end Neste exemplo, caso o jogador tenha level maior que 10, o código retornará a mensagem “O jogador possui level maior que 10”, mas se o jogador tiver level 10, o código retornará a mensagem “O jogador possui level 10”. Note que para usar o “elseif”, antes tive de usar um “if”. • “For” = É usado para fazer loops no código, executando várias ações ao mesmo tempo. Seu uso é indicado para encurtamento de scripts, fazendo com que leve menos tempo para o código ser processado e economizando memória. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) local pos = { {x=1, y=2, z=3}, {x=4, y=5, z=6} } for a = 1,2 do doSummonCreature("rat", pos[a]) end return TRUE end Neste exemplo, uma tabela indica as posições onde serão sumonados os monstros. O “for” foi usado para indicar que deveriam ser sumonados 1 rat em cada uma das posições especificadas na tabela. • “While” = É usado para fazer loops no código, porém, diferente do “for”, este executa a ação até ser interrompido. Não é muito usado em OpenTibia pelo fato de usar muita memória para ser executado. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) local i = 0 while i < 10 do print (i) i = i + 1 end return TRUE end No caso acima, a variável “i” foi definida inicialmente como sendo zero. Quando o código é executado, os valores assumidos por “i” são retornados até que “i” chegue ao valor nove, que é quando o código se encerra. • “Else” = É usado para definir o que será feito caso a condição definida anteriormente seja falsa ou verdadeira, de acordo com o código e com o que se deseja. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) >= 10 then print("O jogador possui level 10 ou mais") else print("O jogador possui level 9 ou menos") end return TRUE end Note que foi usado anteriormente um “if” para a definição da condição. Neste exemplo, caso o jogador tenha level 10 ou mais, será retornada a mensagem “O jogador possui level 10 ou mais”. Mas se o jogador não tiver atingido level 10, será retornado “O jogador possui level 9 ou menos”. Operadores matemáticos em LUA Após entender a função de cada operador de linguagem acima, podemos passar aos operadores matemáticos ou “Operadores relacionais”. São usados para fazer a comparação numérica ou de uma string. Veja abaixo: • “<” = É usado para dizer que algo é “menor que” outro. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) < 8 then print("O jogador não possui vocação, pois seu level é menor que oito") end return TRUE end A comparação feita mostra se o jogador possui vocação de acordo com seu level, mostrando se ele tem level mínimo para ter vocação, visto que no Tíbia, jogadores abaixo do level 8 não possuem vocação. • “>” = O inverso de seu antecessor. É usado para dizer que algo é “maior que” outro. Exemplo de uso: ►function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) > 8 then print("O jogador pode posuir vocação") end return TRUE end Neste caso, o código retornará que o jogador pode possuir alguma vocação pois possui level maior que 8. •“<=” = Este operador faz a comparação que algo é “menor ou igual” que/a outro. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) <= 8 then print("O jogador não pode usar exura") end return TRUE end Neste exemplo, o código verifica se o jogador possui level 8 ou menos para dizer se ele pode ou não usar exura, visto que no Tíbia o jogador só pode usar exura se tiver level 9 ou maior. • “>=” = Este operador faz a comparação que algo é “maior ou igual” que/a outro. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) >= 9 then print("O jogador pode usar exura") end return TRUE end Neste caso, o código verifica se o jogador possui level 9 ou mais para dizer se ele pode ou não usar exura. • “==” = Este operador faz a comparação de igualdade. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) == 8 then print("O jogador já pode abandonar rookgaard") end return TRUE end A comparação feita mostra se o level do jogador é ou não 8. Se for 8, o código retorna a mensagem “O jogador já pode abandonar rookgaard”. • “~=” = Este operador faz a comparação de diferença. Exemplo de uso: ► function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) ~= 10 then print("Somente jogadores com level 10 podem usar") end return TRUE end O exemplo restringe o uso apenas a jogadores com level 10. Se o jogador não possuir level 10, o código retorna a mensagem “Somente jogadores com level 10 podem usar”. _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._. Bom, é isso. Tentei fazer um tutorial completo e que ajudasse quem quisesse aprender a linguagem. Tutorial feito totalmente por mim. Espero que esteja bom e espero comentários também. @Editado Editado a fim de corrigir alguns erros de ortografia e nos scripts. Será que ganho um ponto de reputação?
    1 ponto
  32. Visitante

    Como criar movements ?

    Levante-se da cadeira do computador, vá ao parque, dê uma caminhada e pronto, você criou um movemento
    0 pontos
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...