Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 03/11/13 em %
-
2 pontos
-
[8.6] Eternal Kingdoms Map
Nerival reagiu a PedroXtibiaaaa por um tópico no fórum
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 Screenshots1 ponto -
AFL Sistema de Som Para Opentibia
Demonbholder reagiu a caotic por um tópico no fórum
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 -
[ Recomendado! ] [9.44] Crystal Server - 2.3Pl1 (Infinity Crystal)
Mauroxdddadada reagiu a Tryller por um tópico no fórum
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 SS1 ponto -
[Tutorial] Trocando Os Itens De Seu Rme
Strikerzerah reagiu a Paraibinha por um tópico no fórum
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+ ai1 ponto -
Rank System
Demonbholder reagiu a comedinhasss por um tópico no fórum
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. Oneshot1 ponto -
Lua Messenger
Erimyth reagiu a Demonbholder por um tópico no fórum
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 -
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
-
Proteger exp e magic level
Queissozik reagiu a SkyLigh por um tópico no fórum
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 -
Inicio Castelo
BrenoNeto reagiu a BlueDragon por um tópico no fórum
Sem nada pra fazer comecei a fazer este castelo. Falta bastante coisa ainda1 ponto -
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 end1 ponto
-
Ver o que vocês acham . Se vocês quererem as renders . so falar no tópico ..1 ponto
-
[Encerrado] Qual melhor server e site para um narutibia!
Janekogut reagiu a LuckinhaSan por um tópico no fórum
Narutibia Layout - Tenta Esse... Modern Acc Eu Acho.1 ponto -
1 ponto
-
funçao doPlayerSetVocation(cid,voc)
nbb147 reagiu a Demonbholder por uma questão
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 -
1 ponto
-
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
-
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
-
[Encerrado] [PEDIDO]Editar esse script
Drk Shadow reagiu a Skymagnum por um tópico no fórum
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 -
AFL Sistema de Som Para Opentibia
Demonbholder reagiu a caotic por um tópico no fórum
Abra o batch com bloco de notas e coloque isto: start tibia.exe1 ponto -
AFL Sistema de Som Para Opentibia
Demonbholder reagiu a caotic por um tópico no fórum
Unir o afl junto ao executável do client? Tu pode colocar o batch do afl para executar o client também1 ponto -
AFL Sistema de Som Para Opentibia
Demonbholder reagiu a caotic por um tópico no fórum
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 bom1 ponto -
AFL Sistema de Som Para Opentibia
Demonbholder reagiu a caotic por um tópico no fórum
E na pasta do client. Ta bastante bagunçado tudo. Mais amanha eu vo organizar os arquivos.1 ponto -
Rank System
Demonbholder reagiu a comedinhasss por um tópico no fórum
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 -
Rank System
Demonbholder reagiu a comedinhasss por um tópico no fórum
Tenta postar o erro no tópico dele para que eu possa estar verificando ._.1 ponto -
Rank System
Demonbholder reagiu a comedinhasss por um tópico no fórum
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 -
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
-
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
-
Importando Mapas Do Client Para O Flash
lorrancard reagiu a fsg por um tópico no fórum
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 -
Getclosestnumber(N)
Roksas reagiu a Demonbholder por um tópico no fórum
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 -
Introdução À Programação Lua
MichelHelmer reagiu a joaohd por um tópico no fórum
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 -
Como criar movements ?
Demonbholder recebeu uma reação por uma questão
Levante-se da cadeira do computador, vá ao parque, dê uma caminhada e pronto, você criou um movemento0 pontos