Ir para conteúdo

caotic

Infante
  • Total de itens

    1599
  • Registro em

  • Última visita

  • Dias Ganhos

    7

Tudo que caotic postou

  1. Ola galerinha xtibiana! Hoje vou mostrar um tutorial sobre a utilização de while em tabela. Bem tabelas conseguem guardar múltiplos valores de forma fácil e pratica. O while não e muito utilizado para manipular tabelas mais e possível fazer de forma rápida e funcional. A utilização de um while e UM dos meios de "procurar" os valores em uma tabela. O while perde a sua popularidade em tabelas por causa do for. O while torna - se um pouco mais pesado do que o for além de que a quantidade de linhas gastas no for e bem menor. Neste tutorial explicarei a utilização de while em tabelas: Toda tabela apresenta os números de cada coluna. Exemplo: local tab = { {coluna = "Esta coluna representa a 1"}, {coluna = "Esta coluna representa a 2"}, {coluna = "Esta coluna representa a 3"} } Você deve ter percebido que as colunas são em ordem numéricas crescente e começa na primeira coluna. E importante aprender esta parte para entender o funcionamento da repetição. Para acessar o valor de acordo com a tabela e só colocarmos de tal maneira: tab[Numero da Coluna] Se colocarmos assim: tab[1] sera acessada a seguinte coluna = {coluna = "Esta coluna representa a 1"}, tab[2] sera acessada a seguinte coluna = {coluna = "Esta coluna representa a 2"}, tab[3] sera acessada a seguinte coluna = {coluna = "Esta coluna representa a 3"} Para acessar um valor da tabela basta colocar de tal maneira: tab[Numero da Coluna].value Se colocarmos assim: tab[1].coluna == sera acessado seguinte valor = "Esta coluna representa a 1" tab[2].coluna == sera acessado seguinte valor = "Esta coluna representa a 2" tab[3].coluna == sera acessado seguinte valor = "Esta coluna representa a 3" Se usáramos # em uma tabela. Ela verifica a quantidade de colunas dela. Pronto. Concluímos o básico de tabela agora vamos a utilização do while. Temos que repetir cada coluna e verificar o valor que queremos. local str = { {msg = "Esta na 1 missão", value = 1}, {msg = "Esta na 2 missão", value = 2}, {msg = "Esta na 3 missão", value = 3} } k = 0 ---- Cria um nova variável com o valor de 0 while #str > k do -- Verifica se a variável k e maior que o tamanho de str k = k+1 --- Adiciona o valor +1 a k if str[k].value == 2 then --- Verifica se value e 2 print(str[k].msg) ---- Se o value for 2 ele manda uma print com a mensagem da coluna. break end end Viu como e simples? Agora basta explorar e procurar novas formas de "procurar" valores na tabela. Espero que nos mostre a sua maneira de manipular tabelas. Até a proxima pessoal!
  2. Tópico movido para a seção de dúvidas e pedidos resolvidos.
  3. caotic

    REMOVEDOR DE FRAGS

    Tópico movido para a seção de dúvidas e pedidos resolvidos.
  4. Sem comentarios Incrivel. A Área precisava de um novo toque. Sucesso a área a design e a você tony.
  5. Eu ja sabia, Só que lembrei depois de fazer o script. Então resolvi postar assim mesmo. E também já existe a função Fiz mais 2 funções para o loot do monstro Abraços. Abraços.
  6. Eheuauehue pensei que nunca sairia o sistema do jhon-soft. Incrível vodkart. Não preciso comentar nada. Sistema excelente.
  7. Tudo bem galera? Resolvi fazer 3 funções para manipular loots de monstro Vamos a elas: 1 - getMonsterLootItens(monster) Ela retorna os itens dos loot de uns function getMonsterLootItens(monster) t = {} local monster = io.open("data/monster/"..tostring(monster)..".xml", "r") for i in monster:read("*a"):gmatch('id="(.-)"') do table.insert(t, tonumber(i)) end return t end Para ultilizar ela e muito facil Alguns exemplos: #getMonsterLootItens(monster) Retorna a quantidade de loot que o monstro tem. getMonsterLootItens(monster)[x] Retorna o id do loot de acordo com a posição X da localização do id no xml. Neste script abaixo ele vai adicionar todos os itens do loot do monstro no player: function onSay(cid, words, param, channel) for i = 1, #getMonsterLootItens(param) do doPlayerAddItem(cid, getMonsterLootItens(param)[i]) end end 2- Função getMonsterLootCount(monster, item) Ela retorna a quantidade maximo que o item pode cair do monstro ou seja ela retorna a "countmax = X" function getMonsterLootCount(monster, item) t = {} local monster = io.open("data/monster/"..tostring(monster)..".xml", "r") for i in monster:read("*a"):gmatch('id="'..item..'" countmax="(.-)"') do table.insert(t, tonumber(i)) end return t[1] or 1 end 3 - getMonsterLootChance(monster, item) Ela retorna a chance do item do loot do monstro cair. function getMonsterLootChance(monster, item) t = {} local monster = io.open("data/monster/"..tostring(monster)..".xml", "r") for i in monster:read("*a"):gmatch('<item id="'..item..'"(.-)/><') do local chance = tonumber(i:match('chance="(.-)"')) table.insert(t, chance) end return t[1] or 0 end
  8. caotic

    Monstro! Boss

    O monstro você mesmo faz ^^. Crie um arquivo Lua chamado de monster em creaturescripts: function onDeath(cid, corpse, killer) local monster = "Demon" --- Nome do monstro local item = 26212 --- Id do item if isMonster(cid) and string.lower(getCreatureName(cid)) == string.lower(monster) then doBroadcastMessage("O jogador "..getCreatureName(killer[1]).." conseguiu derrotar o monstro "..monster.." e recebeu o "..item.."") doPlayerAddItem(killer[1], item) return true end return true end Agora vá em creaturescripts.xml e coloque esta tag: <event type="death" name="monster" event="script" value="monster.lua"/> Na xml do monstro coloque isto: <script> <event name="monster"/> </script>
  9. A pedido do usuário. Tópico Fixado enquanto o tópico estiver ativo!
  10. Crie um arquivo lua chamado de life em moveevents: lock = 12 --- Id do outfit heal = 200 -- Quanto de vida ele ira ganhar function onEquip(cid, item, slot) local outfit = getCreatureOutfit(cid) if outfit.lookType == lock then setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)+heal) setPlayerStorageValue(cid, 2212, 1) end return true end function onDeEquip(cid, item, slot) if getPlayerStorageValue(cid, 2212) == 1 then setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)-heal) setPlayerStorageValue(cid, 2212, 0) end return true end Agora vá em moveevents.xml e coloque esta tag: <movevent type="Equip" itemid="2461" slot="head" event="script" value="life.lua"/> <movevent type="DeEquip" itemid="2461" slot="head" event="script" value="life.lua"/>
  11. Crie um arquivo lua em actions chamado de itens e coloque isto local config = { pos = {x=1497, y=1488, z=5}, ---- A posição aonde vai ser teleportado item = 33821 ---- Item que ele vai ganhar } function onUse(cid, item, fromPosition, itemEx, toPosition) doPlayerAddItem(cid, config.item) doTeleportThing(cid, config.pos) return true end Tag: <action uniqueid="82124" event="script" value="itens.lua"/> Agora basta colocar o uniqueid na alavanca.
  12. Sim. Coloque a tag em actions.xml: <action itemid="2146" event="script" value="sum.lua"/>
  13. function onUse(cid, item, frompos, item2, topos) if #getCreatureSummons(cid) > 0 then doPlayerSendCalcel(cid, "Você já sumono um monstro.") return true end local MyCreature = doSummonCreature("super mac",topos) doConvinceCreature(cid, MyCreature) if item.type > 1 then doChangeTypeItem(item.uid,item.type-1) else doRemoveItem(item.uid,1) end return 1 end
  14. caotic

    NPC DE NATAL

    Para ficar mais bonito. Eu fiz um npc de natal que da 1 item da array. E so você ir adiciona o item. Para ganhar um presente diga "natal". Para ver a lista dos itens que pode ganhar diga "itens" local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) local x = {2122, 2123, 2387, 2462} ---- Itens que ele PODE ganhar ou seja ele so ganhara 1 item desta array(Se quiser adicionar mais itens coloque aki) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid function getValueRandomArray(x) local random = math.random(1, #x) return x[random] end function getValuersArray(cid, x) k = 0 str = "Itens do natal oh oh:\n\n" while k < #x do k = k+1 local array = x[k] local itens = getItemNameById(array) str = str .. itens.. "\n" end return str end if msgcontains(msg, 'itens') then local array = getValuersArray(cid, x) doShowTextDialog(cid, 1397, array) return true end if msgcontains(msg, 'natal') then if getPlayerStorageValue(cid, 22166) >= 1 then selfSay('Oh oh você ja ganhou o presente mais te desejo FELIZ NATAL', cid) return true end local item = getValueRandomArray(x) doPlayerSendTextMessage(cid,22,"Toma seu presente Feliz Natal oh oh.") doPlayerAddItem(cid, item) setPlayerStorageValue(cid, 22166, 1) else selfSay('Oh fale natal que te darei seu presente ou itens para saber que itens pode ganhar', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  15. Tópico movido para a seção de dúvidas e pedidos resolvidos.
  16. Cometi um pequeno erro. Deixei a verificação por igualdade sendo que e diferença :S. Já editei pega o script que postei
  17. local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) local pos = {x=1039, y=1072, z=7} -- Local da hunt local posreturn = {x=1039, y=1072, z=7} -- Posiçao onde o player sera teleportado quando acabar o tempo local money = 400000 --- Quanto de dinheiro sera removido config = { time = 1, ---Tempo que ele vai ficar na hunt sabendo que cada numeral equivale a um minuto----- str = 2124, --- Storage que ele necessita msg = "Você não pode entrar" --- Mensagem que irá aparecer se ele não tiver a storage } function doReturnPos() doTeleportThing(cid, posreturn) setGlobalStorageValue(24688, 0) setGlobalStorageValue(24686, none) setPlayerStorageValue(cid, 28680, 0) end if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'chuunin') then if getPlayerStorageValue(cid, config.str) ~= 1 then doPlayerSendTextMessage(cid,22, config.msg) return true end if getGlobalStorageValue(24688) == 1 then doPlayerSendTextMessage(cid,22,"O player "..getGlobalStorageValue(24686).." esta fazendo o teste") return true end if not doPlayerRemoveMoney(cid, money) then doPlayerSendTextMessage(cid,22,""..getPlayerName(cid).." precisa de "..money.." para fazer o chuunin teste") return true end doPlayerRemoveMoney(cid, money) doPlayerSendTextMessage(cid,22,"Obrigado "..getPlayerName(cid).." foi teleportado.") doTeleportThing(cid, pos) setGlobalStorageValue(24688, 1) setGlobalStorageValue(24686, getPlayerName(cid)) setPlayerStorageValue(cid, 28680, 1) addEvent(doReturnPos, config.time*60*1000) else selfSay('Diga chuunin', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  18. Deixa eu aumentar a lista. Pera ae.
  19. @Slicer. Também da para fazer while. Só que vai consumir mais linhas k = 0 player = getPlayersOnline() storage = 2123 setPlayerStorageValue(cid, 2123, 1) while k < #player do k = k+1 if getPlayerStorageValue(player[k], storage) >= 1 then doTeleportThing(cid, getPlayerPosition(player[k])) doSendMagicEffect(getPlayerPosition(cid), 21) break end end return true end Enfim Cada um com sua preferencia
  20. Muito bom luckOake Pelo menos desta vez não uso a bosta de MODS. OneShot e sobrenatural mesmo ehauehuaheaueha'
  21. Tonynh e uma ótima pessoa e tenho certeza que ele irá fazer um excelente trabalho. Parabéns Tonynh.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...