-
Total de itens
361 -
Registro em
-
Última visita
-
Dias Ganhos
10
Tudo que joaohd postou
-
No 0.3.6 não existe Global.lua. Caso precise dele, simplesmente crie-o ou use o arquivo constant.lua. flw
-
Tente: function onUse(cid, item) local config = { expToAdd = 1000, storageQuest = 2063 } if getPlayerStorageValue(cid, config.storageQuest) <= 0 then doPlayerAddExperience(cid, config.expToAdd) doPlayerSendTextMessage(cid, 27, "You have received ".. config.expToAdd .." experience points.") setPlayerStorageValue(cid, config.storageQuest, 1) else doPlayerSendCancel(cid, "You already have done this quest.") end return true end flw
-
Tente assim: function onUse(cid, item, fromPosition, itemEx, toPosition) local config = { teleportTo = {x = 50, y = 100, z = 7}, removeOnUse = true } if itemEx.itemid == 2249 then doTeleportThing(cid, config.teleportTo) if config.removeOnUse then doRemoveItem(item.uid, 1) end end return true end flw
-
A dúvida foi sanada via msn. A função chama-se getCreaturesInRange. Movido. flw
-
Material de Apoio VI Expressões Para que possamos trabalhar com a linguagem, esta nos oferece alguns recursos aritméticos, lógicos e relacionais, o que chamamos de operadores. Cada tipo de operador tem sua finalidade e sua precedência (privilégio) com relação aos outros. Operadores matemáticos ou aritméticos: São os operadores que possuem a função de realizar uma operação matemática entre os termos e seu retorno é em forma numérica. Em lua, temos suporte aos operadores matemáticos comuns, que podem ser divididos em dois tipos: binários ou unários. E a divisão é feita da seguinte maneira: Binários: "+" (Soma); "-" (Subtração); "*" (Multiplicação); "/" (Divisão) Unário: "-" (Negação) Mas qual a diferença entre eles? Os operadores binários, precisam de dois termos (operandos) para que possa ser utilizado, já o unário, somente 1 termo (operando). Veja um exemplo: Binários: a = 2+1 => a = 3 a = 2-1 => a = 1 a = 2*1 => a = 2 a = 2/1 => a = 2 Unário: a = -2 => a = -2 (dois negativo) Ou seja, o operador unário serve somente para indicar que o número se encontra abaixo de 0 na escala numérica. Lua também nos proporciona um suporte parcial ao operador "^" (Exponenciação) Operadores relacionais São os operadores cuja função é comparar dois termos e sempre retorna um valor booleano (true ou false). Em lua, os operadores que temos à disposição são os listados abaixo: "==" (Igual); "~=" (Diferente); ">" (Maior que); "<" (Menor que); ">=" (Maior ou igual a); "<=" (Menor ou igual a) Operadores lógicos São os operadores que tem como função, executar a lógica booleana entre os termos. A compreensão básica é bem simples, porém, conforme a necessidade do seu uso em conjunto com os outros operadores for aumentando, aumentará também seu nível de dificuldade. Em lua, possuimos apenas o AND e o OR. Observe: local a = 1 == 1 and "Verdadeiro" or "Falso" => a = "Verdadeiro" local a = 1 ~= 1 and "Verdadeiro" or "Falso" => a = "Falso" Concatenação O que é esse raio de "concatenação"? Nada mais é que juntar os elementos. Esta expressão possui seu operador especial que é representado em lua por dois pontos finais "..". Observe: local a = "Concatenei isso" .. " com isso" => a = "Concatenei isso com isso" local a = "Este é o exemplo número " .. 2 => a = "Este é o exemplo número 2" Precedência ou privilégios Como foi dito, cada operador tem seu privilégio sobre o outro, sendo executado primeiro. Abaixo você pode conferir a ordem de relevância dos operadores em ordem decrescente: "^" -- Primeiro a ser executado "not" "-" (Unário) -- Segundos a serem executados "*" "/" -- Terceiros a serem executados "+" "-" -- Quartos a serem executados ".." -- Quintos a serem executados "<" ">" "<=" ">=" "~=" "==" -- Sextos a serem executados "and" -- Sétimo a ser executado "or" -- Último a ser executado Caso se apresentem mais de um com o mesmo privilégio, o que aparece primeiro terá maior prioridade quanto aos demais da mesma relevância. Se precisar de aumentar a relevância de algum operador, deve-se usar parênteses entre os termos e o operador, e este será executado em primeira ordem. É isso. flw
-
[Arquivado]Ytc - Your Tibia Client (Lançamento).
tópico respondeu ao cristofermartins de joaohd em Noticias - Arquivo
Os links estão quebrados... Pode arrumá-los para nós? flw -
[Movements] Editando Go/back System(Pokemon)
tópico respondeu ao BRDominik de joaohd em Lixeira Pública
O seu catch que tem de ser editado, trocando a função doPlayerAddItem por: doAddContainerItem(getPlayerSlotItem(cid, CONST_SLOT_AMMO).uid, POKEBALL_ID, 1) Não esquecendo de editar o "POKEBALL_ID". flw -
Tente: function onUse(cid, item, fromPos, itemEx, toPos) d0 = { [0] = {pokemon = 'Magikarp'}, } d20 = { [0] = {pokemon = 'Magikarp'}, [1] = {pokemon = 'Horsea'}, [2] = {pokemon = 'Poliwag'}, [3] = {pokemon = 'Goldeen'}, [4] = {pokemon = 'Krabby'}, } d40 = { [0] = {pokemon = 'Magikarp'}, [1] = {pokemon = 'Horsea'}, [2] = {pokemon = 'Poliwag'}, [3] = {pokemon = 'Goldeen'}, [4] = {pokemon = 'Krabby'}, [5] = {pokemon = 'Tentacool'}, } d60 = { [0] = {pokemon = 'Magikarp'}, [1] = {pokemon = 'Horsea'}, [2] = {pokemon = 'Poliwag'}, [3] = {pokemon = 'Goldeen'}, [4] = {pokemon = 'Krabby'}, [5] = {pokemon = 'Tentacool'}, [6] = {pokemon = 'Seaking'}, } d80 = { [0] = {pokemon = 'Magikarp'}, [1] = {pokemon = 'Horsea'}, [2] = {pokemon = 'Poliwag'}, [3] = {pokemon = 'Goldeen'}, [4] = {pokemon = 'Krabby'}, [5] = {pokemon = 'Tentacool'}, [6] = {pokemon = 'Seaking'}, [7] = {pokemon = 'Starmie'}, [8] = {pokemon = 'Kingler'}, [9] = {pokemon = 'Seadra'}, } d100 = { [0] = {pokemon = 'Magikarp'}, [1] = {pokemon = 'Horsea'}, [2] = {pokemon = 'Poliwag'}, [3] = {pokemon = 'Goldeen'}, [4] = {pokemon = 'Krabby'}, [5] = {pokemon = 'Tentacool'}, [6] = {pokemon = 'Seaking'}, [7] = {pokemon = 'Starmie'}, [8] = {pokemon = 'Kingler'}, [9] = {pokemon = 'Seadra'}, [10] = {pokemon = 'Staryu'}, [11] = {pokemon = 'Gyarados'}, } local config = { waters = {4614, 4615, 4616, 4617, 4618, 4619, 4608, 4609, 4610, 4611, 4612, 4613, 7236, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825}, } local skill = getPlayerSkillLevel(cid, 6) local playerpos = {x=getCreaturePosition(cid).x, y=getCreaturePosition(cid).y+1, z=getCreaturePosition(cid).z} if not (isInArray(config.waters, itemEx.itemid)) then return doPlayerSendCancel(cid, "You cannot fish here.") end if getPlayerStorageValue(cid, 63215) >= 1 or getPlayerStorageValue(cid, 9393) >= 1 then return doPlayerSendCancel(cid, "Você não pode pescar no surf ou fly.") end doSendMagicEffect(toPos, CONST_ME_LOSEENERGY) doPlayerAddSkillTry(cid, 6, 1) if skill >= 100 then local random = math.random(0, 38) if random <= 11 then doSummonCreature(d100[random].pokemon, playerpos) return true end elseif skill >= 80 then local random = math.random(0, 35) if random <= 9 then doSummonCreature(d80[random].pokemon, playerpos) return true end elseif skill >= 60 then local random = math.random(0, 28) if random <= 6 then doSummonCreature(d60[random].pokemon, playerpos) return true end elseif skill >= 40 then local random = math.random(0, 26) if random <= 5 then doSummonCreature(d40[random].pokemon, playerpos) return true end elseif skill >= 20 then local random = math.random(0, 24) if random <= 4 then doSummonCreature(d20[random].pokemon, playerpos) return true end elseif skill >= 0 and skill < 20 then local random = math.random(0, 10) if random <= 0 then doSummonCreature(d0[random].pokemon, playerpos) return true end end return true end flw
-
Tente assim: function onUse(cid, item, fromPos, itemEx, toPos) d0 = { [0] = {pokemon = 'Magikarp'}, } d20 = { [0] = {pokemon = 'Magikarp'}, [1] = {pokemon = 'Horsea'}, [2] = {pokemon = 'Poliwag'}, [3] = {pokemon = 'Goldeen'}, [4] = {pokemon = 'Krabby'}, } d40 = { [0] = {pokemon = 'Magikarp'}, [1] = {pokemon = 'Horsea'}, [2] = {pokemon = 'Poliwag'}, [3] = {pokemon = 'Goldeen'}, [4] = {pokemon = 'Krabby'}, [5] = {pokemon = 'Tentacool'}, } d60 = { [0] = {pokemon = 'Magikarp'}, [1] = {pokemon = 'Horsea'}, [2] = {pokemon = 'Poliwag'}, [3] = {pokemon = 'Goldeen'}, [4] = {pokemon = 'Krabby'}, [5] = {pokemon = 'Tentacool'}, [6] = {pokemon = 'Seaking'}, } d80 = { [0] = {pokemon = 'Magikarp'}, [1] = {pokemon = 'Horsea'}, [2] = {pokemon = 'Poliwag'}, [3] = {pokemon = 'Goldeen'}, [4] = {pokemon = 'Krabby'}, [5] = {pokemon = 'Tentacool'}, [6] = {pokemon = 'Seaking'}, [7] = {pokemon = 'Starmie'}, [8] = {pokemon = 'Kingler'}, [9] = {pokemon = 'Seadra'}, } d100 = { [0] = {pokemon = 'Magikarp'}, [1] = {pokemon = 'Horsea'}, [2] = {pokemon = 'Poliwag'}, [3] = {pokemon = 'Goldeen'}, [4] = {pokemon = 'Krabby'}, [5] = {pokemon = 'Tentacool'}, [6] = {pokemon = 'Seaking'}, [7] = {pokemon = 'Starmie'}, [8] = {pokemon = 'Kingler'}, [9] = {pokemon = 'Seadra'}, [10] = {pokemon = 'Staryu'}, [11] = {pokemon = 'Gyarados'}, } local config = { waters = {4614, 4615, 4616, 4617, 4618, 4619, 4608, 4609, 4610, 4611, 4612, 4613, 7236, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825}, } local skill = getPlayerSkillLevel(cid, 6) local playerpos = {x=getCreaturePosition(cid).x, y=getCreaturePosition(cid).y+1, z=getCreaturePosition(cid).z} if(isInArray(config.waters, itemEx.itemid)) then if getPlayerStorageValue(cid, 63215) >= 1 or getPlayerStorageValue(cid, 9393) >= 1 then doPlayerSendCancel(cid, "Você não pode pescar no surf ou fly.") return true end doSendMagicEffect(toPos, CONST_ME_LOSEENERGY) doPlayerAddSkillTry(cid, 6, 1) if skill >= 100 then local random = math.random(0, 38) if random <= 11 then doSummonCreature(d100[random].pokemon, playerpos) return true end else if skill >= 80 then local random = math.random(0, 35) if random <= 9 then doSummonCreature(d80[random].pokemon, playerpos) return true end else if skill >= 60 then local random = math.random(0, 28) if random <= 6 then doSummonCreature(d60[random].pokemon, playerpos) return true end else if skill >= 40 then local random = math.random(0, 26) if random <= 5 then doSummonCreature(d40[random].pokemon, playerpos) return true end else if skill >= 20 then local random = math.random(0, 24) if random <= 4 then doSummonCreature(d20[random].pokemon, playerpos) return true end else if skill >= 0 and skill < 20 then local random = math.random(0, 10) if random <= 0 then doSummonCreature(d0[random].pokemon, playerpos) return true end return true end return true end return true end return true end end else doPlayerSendCancel(cid, "You cannot fish here.") end return true end flw
-
Sim, tem que colocar no movements.xml. flw
-
Material de Apoio Loops Antes de começarmos, o que vem a ser um loop em programação? Um loop é a repetição de um bloco de código por diversas vezes, com a finalidade de verificar uma condição, economizar linhas e alterar estados de variáveis. Em lua, temos três estruturas capazes de realizar loops, o comando while, o comando repeat e o comando for veremos agora como proceder para fazer um loop usando o while. Compreendendo o WHILE: O comando while, pode ser entendido como "enquanto" e deve vir junto a uma condição. Ou seja, ele executa e testa a condição enquanto esta não for satisfeita. Vejamos um exemplo: i = 10 while i>0 do print(i) i = i-1 end Como podemos observar no exemplo acima, temos uma variável i com o valor 10 e a estrutura while comparando i a 0, mostrando o valor de i e decrementando seu valor em 1 (subtraindo 1 do valor). Logo, neste exemplo teremos uma contagem regressiva de 10 até 0, quando a condição será obedecida e o laço terminado. Podemos ainda fazer uso do comando break para terminar o laço em algum ponto de sua execução: a = 1 while true do print(a) a = a + 1 if a > 10 then break end end Neste segundo exemplo, o while está configurado para executar infinitamente, entretanto, dentro do bloco de execução, temos uma condição if que caso a seja maior que 10, ele encerra o laço. Neste segundo exemplo, nos será mostrado os números de 1 a 10 em ordem crescente. A estrutura REPEAT: O comando repeat, é a segunda estrutura que podemos usar para fazer loops. Sempre vem acompanhado de outro comando, o until. Pode ser compreendido como "repita até que". Sua sintaxe é parecida ao do while, e também obedece a uma condição. Enquanto falsa, ele executa. Quando verdadeira, o laço é interrompido. Observem um exemplo: i = 3 repeat print(i) i = i-1 until i==0 Como vemos, no início, definimos a variável que será usada para controlar o laço e colocamos um decremento. É importante ressaltar a condição que o until impõe: caso i seja igual a 0, interrompa. O comando acima, deverá mostrar-nos os números de 3 a 0 em ordem decrescente. O comando repeat também pode ser usado junto ao break: i = 1 repeat print(i) i = i+1 if i>10 then break end until false Caso não tivessemos o if para controlar o ponto de interrupção, o comando executaria infinitamente, pois no until, não temos condição, logo será sempre falsa. O todo poderoso FOR: Este comando, apesar de sua simplicidade, é complicado de se entender completamente, hoje darei apenas uma pincelada. Haverá outro tutorial somente usando o for. O for em lua, apresenta dois usos possíveis para fazermos laços. A primeira, é a forma numérica e a segunda, chama-se sequencial. Não explicarei a diferença funcional entre elas, somente mostrarei como fazer loops usando-as. A forma numérica é bem direta: for i = 1, 3 do print(i) end A variável i não precisa ser declarada anteriormente. No caso desta estrutura, a variável assume os valores de 1 a 3 e repete o bloco com estes valores. Em sua forma sequencial, precisamos fazer uso de tabelas. Observe: for i, x in pairs({"Indice 1", "Indice 2", "Indice 3"}) do print(i, x) end No caso acima, será mostrada uma estrutura mais ou menos assim: 1 Indice 1 2 Indice 2 3 Indice 3 Bom, acho que isso é tudo. flw
-
O usuário conseguiu o que desejava: http://www.xtibia.com/forum/topic/148683-funcoes/ Movido. flw
-
Tente assim: elseif msgcontains(msg, "beber") or msgcontains(msg, "comer") then selfSay("Diga-me oque quer beber ou comer?", cid) flw
-
[Leia Atentamente] (Sobre: Tirando Dúvidas) (V.870)
tópico respondeu ao rod_doidim de joaohd em Lixeira Pública
Estou em dúvida quanto o melhor lugar para o tópico. O conteúdo é de grande valia. Vou encaixá-lo na seção "Começando seu servidor". flw -
Não posso apagar posts. Simplesmente editem como foi feito em alguns. flw
-
talkaction [Talkaction]Sistema M1 Até M6 + Tutorial De Edições.
tópico respondeu ao peewee de joaohd em Actions e Talkactions
Vamos parar as brigas por aqui né... Ambos os usuários negativados por ofensas. flw -
Parece que a discussão de vocês veio de fora do fórum. O tópico postado primeiro foi este, vamos evitar discussões que não acrescentem nada à comunidade. Peço para que entendam e se resolvam. flw
-
O local não é o certo, porém não vejo local algum onde encaixá-lo. Creio que já foi solucionado. Fecharei o tópico. Caso tenha algo a falar com o membro, mande uma pm para ele ou pergunte no tópico do servidor. flw
-
Aprovado e movido. flw
-
Tente assim: function onUse(cid, item) local c = { firstPos = {x = 50, y = 100, z = 7}, secondPos = {x = 51, y = 100, z = 7}, storage = 1000 } if getPlayerStorageValue(cid, c.storage) <= 0 then doTeleportThing(cid, c.firstPos) else doTeleportThing(cid, c.secondPos) end return true end flw
-
Fechado a pedido do autor. flw
-
Ok, dúvida sanada e tópico movido. Evite fazer double post somente para relatar que já resolveu seu problema. Clique no botão editar e escreva no próprio tópico ou reporte solicitando o fechamento que iremos fazê-lo. flw
-
Bem legal você estar se dedicando a aprender scripting hein. Espero que continue se esforçando e aprendendo cada vez mais. Bom sistema. Parabéns. flw
-
Tente assim: function onStepIn(cid, item, pos) local c = { cost = 50, monstName = "Trainer", monstPos = {x = 50, y = 50, z = 10}, templePos = {x = 50, y = 50, z = 10} } if doPlayerRemoveMoney(cid, c.cost) then doSummonCreature(c.monstName, c.monstPos) else doTeleportThing(cid, c.templePos) end return true end flw
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.