Ir para conteúdo

joaohd

Visconde
  • Total de itens

    361
  • Registro em

  • Última visita

  • Dias Ganhos

    10

Tudo que joaohd postou

  1. joaohd

    Global.lua

    No 0.3.6 não existe Global.lua. Caso precise dele, simplesmente crie-o ou use o arquivo constant.lua. flw
  2. 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
  3. joaohd

    Usar Fire Bug

    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
  4. joaohd

    Pedido De Função.

    A dúvida foi sanada via msn. A função chama-se getCreaturesInRange. Movido. flw
  5. 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
  6. Os links estão quebrados... Pode arrumá-los para nós? flw
  7. 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
  8. 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
  9. 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
  10. Sim, tem que colocar no movements.xml. flw
  11. 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
  12. joaohd

    Função

    O usuário conseguiu o que desejava: http://www.xtibia.com/forum/topic/148683-funcoes/ Movido. flw
  13. Tente assim: elseif msgcontains(msg, "beber") or msgcontains(msg, "comer") then selfSay("Diga-me oque quer beber ou comer?", cid) flw
  14. 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
  15. Não posso apagar posts. Simplesmente editem como foi feito em alguns. flw
  16. Vamos parar as brigas por aqui né... Ambos os usuários negativados por ofensas. flw
  17. 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
  18. joaohd

    Leia Leozera

    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
  19. Aprovado e movido. flw
  20. joaohd

    Storage

    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
  21. Fechado a pedido do autor. flw
  22. 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
  23. 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
  24. 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.
×
×
  • Criar Novo...