Ir para conteúdo

caotic

Infante
  • Total de itens

    1599
  • Registro em

  • Última visita

  • Dias Ganhos

    7

Tudo que caotic postou

  1. Mais eu ia te dar exclusivo. Mais vc não me respondeu seu fdp. Então resolvi postar. Se quiser eu posso ate retirar para vc :3
  2. Corrigi ai: 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"} Eheuaeuhaue' Nem percebi que dobrei o 2. @dalvorsn Muito bom a explicação. Seria interessante mesmo explicar sobre os "stops" como um return ou o break.
  3. Num gosto. Fica muito mais desorganizado.. Ate mais.
  4. O fabio(beeki) pediu um script para min então eu resolvi disponibilizar o mesmo script para vocês xtibianos! O anti bot faz uma pergunta ao player quando ele loga e depois de X tempo. Assim se o player estiver usando um bot de "caça sozinho" ele e detectado e teleportado para uma posição que seria uma cadeia. Esta todo configurado mais pode ser alterado livremente. Vá em lib e crie um arquivo lua chamado de anti bot e coloque este código: local question = { {perg = "1+1 e igual a?", resp = "2"}, {perg = "Qual e o nome verdadeiro do beeki", resp = "Fabio"}, {perg = "Você esta em que level?", resp = "100"} } function doJailforBot(cid, pos) if isPlayer(cid) and getPlayerStorageValue(cid, 23410) == 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[ANTI-BOT] Você foi preso por bot") doTeleportThing(cid, pos) setPlayerStorageValue(cid, 23446, 0) setPlayerStorageValue(cid, 23448, 0) setPlayerStorageValue(cid, 23412, 1) end return true end function respQuestion(cid, resp) if getPlayerStorageValue(cid, 23410) == 1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[ANTI-BOT] O sistema não esta ativo porque ja respondeu") end if getPlayerStorageValue(cid, 23412) == 1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[ANTI-BOT] O sistema não esta ativo porque você esta preso") end if tostring(getPlayerStorageValue(cid, 23446)) == resp then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[ANTI-BOT] Você acertou a respota") setPlayerStorageValue(cid, 23410, 1) return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[ANTI-BOT] Você errou a resposta") end function activeAntiBot(cid, pos, time) if isPlayer(cid) then if getPlayerStorageValue(cid, 23412) == 1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[ANTI-BOT] Você esta preso por uso de bot") end local random = math.random(#question) local perg = question[random].perg local resp = question[random].resp doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[ANTI-BOT] diga a resposta falando /resp(reposta) ("..perg..")") setPlayerStorageValue(cid, 23446, resp) setPlayerStorageValue(cid, 23448, perg) setPlayerStorageValue(cid, 23410, 0) addEvent(doJailforBot, time, cid, pos) end return true end Agora vá em talkactions e crie um arquivo lua chamado de resp e coloque isto: function onSay(cid, words, param, channel) if not param or param == " " or param == "" then doPlayerSendCancel(cid, "Você precisa dizer a respota") return true end return respQuestion(cid, param) end Coloque esta tag em talkactions.xml: Agora vá em creaturescripts e crie um arquivo lua chamado de anti-bot e coloque isto: local jail= {x=1497, y=1488, z=5} local time = 36000 local temp = 3600*1000 --- Tempo para o sistema do anti banimento for ativado function onLogin(cid) function repeatAntiBot(cid, jail, temp, time) activeAntiBot(cid, jail, time) addEvent(activeAntiBot, temp, cid, jail, time) end repeatAntiBot(cid, jail, temp, time) return true end Coloque esta tag em creaturescrips.xml: Registre o evento em login.lua: registerCreatureEvent(cid, "bot")
  5. Este tópico me deu ansiá de vomito. Tópico Closed
  6. Eheuaheue Pensei que a criatura(atacante) que tinha que ter a storage. Script editado OnKill da muito mais laag que onDeath :X
  7. Não gosto de aprovar meus proprios tutoriais. Mais..... Tutorial Aprovado
  8. Tenta criar a database manualmente então Chama ela de ban e coloque estas colunas: player / ip / time
  9. Eu conheço sim o debbuger lua demo. O sinal de diferença foi coloco de maneira incorreta. Obrigado por concertar.
  10. function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) function addManaInTime(cid) local pos = getCreaturePosition(cid) if isPlayer(cid) and getCreatureMana(cid) ~= getCreatureMaxMana(cid) then doCreatureAddMana(cid, 222) doSendMagicEffect(pos, 212) addEvent(addManaInTime, 180, cid) end end addManaInTime(cid) return true end <movevent type="StepIn" itemid="2212" event="script" value="mana.lua"/>
  11. local storage = 22321 --- A storage local item = 2456 --- Item local quant = 40 --- Quantidade do item que ele irá ganhar function onDeath(cid, corpse, killer) if isPlayer(killer[1]) and isPlayer(cid) and getPlayerStorageValue(cid, storage) >= 1 then doPlayerAddItem(killer[1], item, quant) return true end return true end
  12. Sistema Incrível. Publiquei no portal.
  13. Exatamente. O while e um modo mais "grosso" de repetir valores. Então não deixa de ser uma opção.
  14. Repeat e bem menos usado. O tutorial e só para explicar que e possível manipular uma tabela com while.
  15. 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!
  16. Tópico movido para a seção de dúvidas e pedidos resolvidos.
  17. caotic

    REMOVEDOR DE FRAGS

    Tópico movido para a seção de dúvidas e pedidos resolvidos.
  18. Sem comentarios Incrivel. A Área precisava de um novo toque. Sucesso a área a design e a você tony.
  19. Foi tarde. Bjs
  20. 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.
  21. Eheuauehue pensei que nunca sairia o sistema do jhon-soft. Incrível vodkart. Não preciso comentar nada. Sistema excelente.
  22. 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
  23. 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>
  24. A pedido do usuário. Tópico Fixado enquanto o tópico estiver ativo!
  25. 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"/>
  • Quem Está Navegando   0 membros estão online

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