Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''ricardo ianelli''.



Mais opções de pesquisa

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • A Cidade OTBR
    • OTServ Brasil
    • Atendimento
    • Taverna
  • Projetos Open Source
    • Canary
    • OTServBR-Global
    • Mehah OTClient
    • MyAAC
  • OpenTibia
    • Notícias e Discussões
    • Suporte - Dúvidas, Bugs, Erros
    • Downloads
    • Tutoriais
    • Show-Off
  • Outros
    • Design

Encontrado 8 registros

  1. Colisão de Magias

    Nome: Sistema de Colisão de Magias V. 1.0 Autor: Ramza (Ricardo Ianelli) Versão Testada: TFS 0.3.6PL1 (8.54) Introdução Olá a todos! Depois de muito insistir, me chamar de lindo, me oferecer um rim, trabalho escravo, video imitando sidney magal, resolvi liberar a versão primitiva do tão misterioso 'Sistema de Colisão de Magias' pro Iunix e alguns outros que me mandavam PM's o tempo todo querendo saber como funcionava o sistema. Pra quem não conhece ainda, eis um video: Caso não carregue o video: Constantemente vinham pessoas me perguntarem como funcionava, se eu precisei mexer nas sources, querendo comprar, isso e aquilo. Dai, eu falava: "Cara, esse sistema é simples, o forte dele foi a criatividade, mas o sistema em si é algo ridículo" e as pessoas ficavam bravas achando que eu tava mentindo, que era tudo história minha, isso e aquilo. Bem, aqui está a prova de que criatividade é a PRINCIPAL ferramenta de qualquer programador, e que um sistema SIMPLES pode se tornar algo aparentemente tão complexo. Funcionamento Do ponto de vista do jogador: Do ponto de vista do scripter: (chora Iunix, te falei que era simples KKKK) Instalação Na pasta Data, crie um arquivo chamado colisionLIB.lua. Dentro dele, cole isto: function checkColision(cid) -- Function by Ramza (Ricardo Ianelli) if getCreatureTarget(cid) ~= 0 then setPlayerStorageValue(cid, 9001, 'casting') local ppos, enemy = getCreaturePosition(cid), getCreatureTarget(cid) local epos = getCreaturePosition(enemy) if getPlayerStorageValue(enemy, 9001) == 'casting' and getCreatureTarget(enemy) == cid then setPlayerStorageValue(enemy, 9001, 'colision') setPlayerStorageValue(cid, 9001, 'colision') if ppos.x > epos.x and ppos.y > epos.y then cpos = {x = ppos.x - ((ppos.x - epos.x) / 2), y = ppos.y - ((ppos.y - epos.y) / 2), z = ppos.z} elseif ppos.x > epos.x and ppos.y < epos.y then cpos = {x = ppos.x - ((ppos.x - epos.x) / 2), y = epos.y - ((epos.y - ppos.y) / 2), z = ppos.z} elseif ppos.x < epos.x and ppos.y < epos.y then cpos = {x = epos.x - ((epos.x - ppos.x) / 2), y = epos.y - ((epos.y - ppos.y) / 2), z = ppos.z} elseif ppos.x < epos.x and ppos.y > epos.y then cpos = {x = epos.x - ((epos.x - ppos.x) / 2), y = ppos.y - ((ppos.y - epos.y) / 2), z = ppos.z} end doSendDistanceShoot(ppos, cpos, CONST_ANI_ENERGY) doSendDistanceShoot(epos, cpos, CONST_ANI_ENERGYBALL) local value = math.random(1, 3) doSendMagicEffect(cpos, 27+value) return true else return false end end end Agora vamos pegar uma magia bem básica como exemplo para teste. Vamos usar a magia energy strike. Abra o arquivo da magia, estará mais ou menos assim: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Vamos modificar um pouco para o nosso sistema. Deixe-a assim: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) local function spell(cid, var) if getPlayerStorageValue(cid, 9001) ~= 'colision' then doCreatureSay(cid, 'Strike!', TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, 9001, nil) return doCombat(cid, combat, var) end end function onCastSpell(cid, var) checkColision(cid) doCreatureSay(cid, 'Energy...', TALKTYPE_ORANGE_1) addEvent(spell, 2000, cid, var) end Hora de testar, a hora mais difícil! Bem, pra testar esse sistema você precisa de um amigo pra te ajudar, ou de ferramentas ilegais e agilidade. Vamos tomar como exemplo caso você fosse com um amigo testar. Simplesmente usem exori vis um no outro, e vejam o que acontece Comentários Quem já é mais experiente já deve ter sacado o tanto de possibilidades que isso abre, como fazer com magias mais avançadas, comparar magic level, fazer com que caso o ML de um seja maior que o do outro, ela anule a do inimigo mas a sua ainda acerte, fazer sistemas no estilo 'disputa de kame-hame-has' usando spriters sem ser as do tibia, e muitas outras coisas, só vai depender de você usar a sua CRIATIVIDADE. Esse sistema, apesar de simples, é considerado pra mim um dos meus sistemas mais avançados, pois como dizia o sábio programador: "O verdadeiro gênio não é aquele que usa pilhas, ponteiros, matrizes ou funções complexas, e sim aquele que usa a criatividade." Muita gente ofereceu grana preta nesse sistema já, mas eu postei aqui pra lembrar à todos vocês que o que faz um grande programador não é o quão complexas são as funções que você usa e os codes que você faz, e sim, o quão criativas e inovadoras são suas criações. É isso ai galera, deixo meu abraço pra todos vocês, qualquer dúvida é só me perguntar, e eu quero que vocês lembrem que o melhor code é sempre, de longe, aquele mais criativo, não importa se tenha 3, 100 ou 10.000 linhas. Lembrem-se disso, sempre. Abraços, Ramza.
  2. Obs.: Arrumei a imagem do outfit 2! Fala ai galera, venho aqui hoje pedir a opinião de vocês sobre o outfit de Vampire, e explicar um pouco sobre algumas coisas da história que o povo pode ter estranhado. Pra quem não se lembra, uma pequena descrição sobre os vampires: Vamos lá, primeiro os outfits! Outfit 1 Outfit 2 Votem na enquete para eu escolher qual outfit usar! Agora vamos lá! Algumas pessoas em pediram explicações sobre a história, e por que a história do Zodiac fala de cidades como Suno e a pequena Hyrule, mas no tópico sobre o mapa fala de Thais, Venore, e outras cidades do Tibia. Como dito na história, a guerra aconteceu 1000 anos no futuro, ou seja, MUITAS coisas haviam mudado no continente Tibiano, que agora se chamava "Ivalice" devido à junção dos reinos de Carlin e Thais. Thais, que havia sido totalmente destruida pelos constantes ataques dos Orcs, foi reconstruida sobre o império do último rei da geração Tibianus, com ajuda do reino de Carlin, que também vinha sofrendo constantes ataques. O mundo estava se tornando um caos, a terra tremia e o mal queria poder, e estava conseguindo. Ambos os reinos decidiram juntar seus poderes para a criação de uma fortaleza indestrutível, na qual pudessem se preparar para a guerra que estava para vir. Suno, que era uma grande capital construida sobre as ruinas de Outlaw Camp, com investimento de Thais para treinamento e aperfeiçoamento de novas magias e um exército poderosíssimo de Black Mages, agora já rendendo altos lucros ao império devido ao seu incrivel poder destrutivo, também ajudara na construção da fortaleza. Aquele era o centro da esperança dos humanos, aquilo era a grande arma deles, e eles nunca poderiam ser destruidos lá. Com a união dos reinos, a cidade de Thais passou a se chamar 'Neo-Thais', e as obras foram iniciadas para a criação da maior fortaleza já sonhada. Algumas vilas vizinhas também tiveram seus nomes modificados, como Greenshore que passou a ser o centro da produção agrícola para suprir a construção da fortaleza, e teve seu nome modificado para 'Hyrule'. A maior parte da população vivia agora em Carlin e Suno, que eram até agora os lugares mais seguros enquanto a construção da Neo-Thais não terminava. Porém, algo aconteceu. Algo que eles não planejavam. Durante 1 mês, NENHUMA invasão ocorreu em nenhuma das cidades dos reinos. Antes, os ataques eram constantes, e as vezes ocorriam até duas invasões por dia em diversas cidades espalhadas pelo continente. Grupos de identificação enviados para descobrir informações, não voltavam. Algo estava errado, e eles descobriram mais rápido do que desejavam. De cima das torres de Carlin, via-se apenas a poeira sendo lançada ao céu. Em algumas horas, sentia-se o chão tremendo, e o desespero dos moradores. Até que enfim, a batalha se iniciou. "Anjos rebeldes, aliados a Orcs, Trolls e Gremlins, começaram a atacar as principais cidades do continente de Ivalice. Eles eram chamados de "Birds", pois achavam que iriam ganhar a liberdade ao dominar a terra, onde poderiam agir da forma que bem entendessem." O resto, vocês podem ler no tópico da história. Obs.: Sobre o sol, muitos me perguntaram: Se o sol apagou, como ainda tem plantas, como as pessoas vivem, como tudoi não está congelado? Bem, o planeta tem dois sois, porém, um deles só pega uma parte desconhecida do planeta, por isso, Ivalice agora sem um sol é sempre sombra, mas não totalmente congelada. Dizem que existe uma ilha chamada 'Holya' onde o sol brilha, pássaros cantam e a escuridão não existe. Abraços, Ramza.
  3. Servidor testado: TFS 0.3.6 (Provavelmente funciona em anteriores) Autor: Ramza (Rick / Ricardo Ianelli) Idéia de: Dartier Versão: 1.0 Olá a todos! Muitos de vocês não me conhecem, eu sou o Rick :yes: Bem, reparei que algumas pessoas estavam dando idéias sobre um sistema em que o cap (peso) influenciasse (acabei de descobrir que essa palavra é um saco pra escrever, escrevam ai e comprovem :fuu:) na velocidade do char. Pois bem, tentei fazer um sisteminha aqui, acho que ficou legal, testei e funcionou, mas... nada nunca está perfeito, vocês sabem como é :hmm: Bem, é meu primeiro post, espero que gostem, e não esqueçam que não sou que nem o Mock, o Flatronez, o Nord ou o Skyen, sou apenas um "aprendiz" :fail: Vamos lá! Primeiramente, vá até creaturescripts\scripts , faça uma cópia de qualquer arquivo contido lá, apague tudo e cole isto: --[[ FUNCTION MADE BY RICARDO IANELLI FOR THE AVATAR ONLINE ATS - For more informations, check: http://forums.otserv.com.br/f19/avatar-online-avatar-ats-134459 ]] function onThink(cid, interval) local speed, base, peso = getCreatureSpeed(cid), getCreatureBaseSpeed(cid), getPlayerFreeCap(cid) local nspeed = (math.floor([color=Red]((peso / 5 ) + (base))[/color])) if speed ~= nspeed then doChangeSpeed(cid, (nspeed - speed)) end end Repare que eu deixei em vermelho uma parte do script, que é a fórmula usada pra calcular quanto de velocidade aumenta/diminui dependendo do quanto sua capacidade está. Se for mecher, lembre-se de mecher APENAS NA PARTE VERMELHA, a menos que saiba bem o que está fazendo. Agora, vamos para a segunda parte! Abra o arquivo "login.lua" e adicione isto logo abaixo de "function onLogin(cid)" : registerCreatureEvent(cid, "getspeed") Agora, vamos para a parte final! Volte para data\creaturescripts e abra o arquivo creaturescripts.lua, e adicione esta tag ao arquivo: <event type="think" name="getspeed" event="script" value="getspeed.lua"/> E pronto, está feito! Caso esteja com dúvida se está funcionando ou não, pode adicionar a seguinte tag em baixo de if speed ~= nspeed then: doPlayerSendTextMessage(cid, TALKTYPE_ORANGE_1, "Sua velocidade foi trocada com sucesso de "..speed.." para "..nspeed..".") Espero que tenham gostado, desculpe fiz algo "noob" ai no script, mas é que ainda to aprendendo, tá duro, mas to aprendendo (no pain, no gain :fist:) E a propósito, esse script é um dos vários que fiz pro "Avatar Legends". Para conhecerem mais sobre ele é só clicar na minha assinatura Abraços a todos, e tenham uma boa noite, e quem gostou, se quiser doar V$, eu aceito xD OBS.: O SISTEMA ATUALIZA DIRETO, SE VC JOGAR UMA TOCHA NO CHÃO, VAI MUDAR SUA SPEED, NÃO É SÓ QUANDO LOGA NO JOGO NÃO! :yes:
  4. Exiva + minimap.

    [b]Nome:[/b] Exiva player [b]Autor:[/b] Ramza (Ricardo Ianelli) [b]Idéia de:[/b] Dartier [b]Versão Testada:[/b] TFS 0.3.6 (Crying Damson) Atendendo à pedidos, um sisteminha "básico" de exiva aparecendo a posição do player procurado no minimap! :happy2: Eu sei fazer a mark desaparecer, PORÉM, teria de ser criada uma nova função, e tem que mecher nas sources, e muita gente não saberia compilar depois... Então vamos ao script básico mesmo! Ele adiciona uma mark no minimapa com comentários dizendo "The player NOMEDOPLAYER was here." Já é algo útil :yes: É bem simples, vá em data\talkactions\scripts, faça uma cópia de qualquer arquivo, apague tudo que está dentro e cole isto: function onSay(cid, words, param, channel) player = getPlayerByName(param) if isPlayer(player) then if getCreatureMana(cid) >= 20 then doPlayerAddMapMark(cid, getCreaturePosition(player), 9, "The player "..param.." was here.") doPlayerAddSpentMana(cid, 20) return true else doPlayerSendCancel(cid, "You do not have enough mana to use this spell.") end else doPlayerSendCancel(cid, "There is no player with this name.") end end Depois, vá em data\talkactions e abra o arquivo talkactions.xml, e adicione a seguinte tag: <talkaction log="yes" words="exiva" event="script" value="exiva.lua"/> Agora ponha pra rodar o servidor, e fale "Exiva player" e veja o resultado Obs.: Você precisa de 20 ou mais de mana para usar a magia (Y) Obs².: Para melhores resultados, retire a magia exiva do seu spells.xml Lembrando que a grande idéia foi do nosso querido "Dartier", parabéns pela idéia Dartier! :fist: Abração, espero que seja útil à vocês!
  5. [b]Nome:[/b] Sistema de Monster Sleep + Sistema de walk/run [b]Autor:[/b] Ramza (Ricardo Ianelli) [b]Versão Testada:[/b] TFS 0.3.6 (Crying Damson) Introdução Olá a todos! Bem, antes que venham dizer "Carai esse cara roubou a idéia do Dokmos, tnc nobbão :fail:", quem viu o script do Dokmos direitinho sabe que eu que dei a idéia, pois eu estava na época tentando fazer esse sistema que estou postando aqui hoje, para o concurso, porém não obtive a tempo, e deixei que ele usasse minha idéia pra fazer um script dele. E ele criou um bem legal Porém... Eis que finalizei o meu sistema de monstros tirarem uma "soneca" de vez enquanto, e eu digo: Tá muito maneiro! :fist: Todavia, não pense que não dará trabalho introduzir esse sistema no seu servidor, pois dará sim, não vou negar que esse sistema tá meio "POG", pois não conheço as diversas funções que os grandes scripters desse forum conhecem, devido a isso tenho de "improvisar". Funcionamento Para o sistema funcionar, você precisará mecher nos monstros que você quer que durmam, terá de criar uma magia, um creaturescript, duas talkactions, e ter a OTAL instalada para usar a função "hasSqm(pos)". Sim, eu sei que é bastante coisa, mas o sistema envolve outros sistemas que se mostrarão necessários para o bom funcionamento e diferencial do script, como as talkactions walk! e run! O sistema funciona da seguinte forma, as vezes os monstros estão tão cansados que tiram uma soneca, porém, como sabemos, soneca é apenas um breve cochilo, uma dormida "de leve". Então, caso você esteja explorando uma caverna cheia de monstros terríveis, você não irá querer acorda-los fazendo barulho, vai? Portanto, você terá de se aproximar beeeem devagar, andando bem devagarzinho para não fazer barulho, e assim, não acorda-los. Por isso incrementei o sistema de walk (andar) e run (correr) :yes: Instalando Vá até data\creaturescripts\scripts , faça uma cópia de qualquer arquivo, renomeie-o para sleeping.lua, apague tudo que estiver dentro e cole isto, depois salve: function onCombat(cid, target) if getPlayerStorageValue(cid, 9070) == 2 then doCreatureSetLookDir(cid, getPlayerStorageValue(cid, 9071)) return false else return true end end Agora vá em data\creaturescripts e abra o arquivo creaturescripts.xml . Em seguida, adicione a seguinte tag ao arquivo e salve: <event type="combat" name="sleeping" event="script" value="sleeping.lua"/> Agora o próximo passo é ir às talkactions adicionar as funções walk! e run! Vá em data\talkactions\scripts, faça DUAS cópia de qualquer arquivo, renomeie-os para walk.lua e run.lua . Em walk.lua, apague tudo que tiver dentro e cole isto: function onSay(cid, words, param, channel) if getPlayerStorageValue(cid, 9050) == 2 then doChangeSpeed(cid, getCreatureBaseSpeed(cid)-300) doPlayerSendCancel(cid, "You are now walking") setPlayerStorageValue(cid, 9050, 1) else doPlayerSendCancel(cid, "You are already walking") end end E em run.lua, apague tudo que tiver dentro e cole isto: function onSay(cid, words, param, channel) if getPlayerStorageValue(cid, 9050) ~= 2 then doChangeSpeed(cid, getCreatureBaseSpeed(cid) - getCreatureSpeed(cid)) doPlayerSendCancel(cid, "You are now running") setPlayerStorageValue(cid, 9050, 2) else doPlayerSendCancel(cid, "You are already running") end end Agora vá em data\talkactions , abra o arquivo talkactions.xml e adicione as seguintes tags: <talkaction log="yes" words="walk!" event="script" value="walk.lua"/> e <talkaction log="yes" words="run!" event="script" value="run.lua"/> Pronto, estamos quase no final! Agora vá em data\spells\scripts , crie um arquivo chamado sleep.lua e cole isto dentro, depois salve e feche. -- FUNCTION BY RAMZA (RICARDO IANELLI) - DO NOT COPY WITHOUT PERMISSION. local function onSleep(monster, pos, speed) players = getSpectators(pos, 16, 16) for i = 1,#players do if isPlayer(players[i]) then if getPlayerStorageValue(players[i], 9050) == 1 then setPlayerStorageValue(monster, 9071, getPlayerLookPos(monster)) doChangeSpeed(monster, -speed) doSendMagicEffect(getCreaturePosition(monster), 32) setPlayerStorageValue(monster, 9070, 2) addEvent(onSleep, 1000, monster, pos, speed) else doSendMagicEffect(pos, 29) doChangeSpeed(monster, getCreatureBaseSpeed(monster) - speed) doSendAnimatedText(getCreaturePosition(monster), "!", TEXTCOLOR_DARKRED) setPlayerStorageValue(monster, 9070, 1) break end end end end function onCastSpell(cid, var) registerCreatureEvent(cid, "sleeping") if getPlayerStorageValue(cid, 9070) ~= 2 then local pos, vida, speed = getCreaturePosition(cid), getCreatureHealth(cid), getCreatureSpeed(cid) onSleep(cid, pos, speed) return TRUE else return false end end Depois vá em data\spells e adicione isto ao arquivo spells.xml : <instant name="sleep" words="sleep" enabled="0" script="sleep.lua"/> Agora é só ir nos monstros que você quer que durmam, no meu exemplo, fiz no monstro "Monk" e onde estiver assim: <defenses armor="20" defense="22"> <defense name="healing" interval="1000" chance="17" min="30" max="50"> <attribute key="areaEffect" value="blueshimmer"/> </defense> <defense name="speed" interval="1000" chance="10" speedchange="300" duration="3000"> <attribute key="areaEffect" value="redshimmer"/> </defense> </defenses> Você adiciona esta tag: <defense name="sleep" interval="1000" chance="[b][color=Red]15[/color][/b]"> </defense> Ficando assim, no caso do Monk: <defenses armor="20" defense="22"> <defense name="sleep" interval="1000" chance="[b][color=Red]15[/color][/b]"> </defense> <defense name="healing" interval="1000" chance="17" min="30" max="50"> <attribute key="areaEffect" value="blueshimmer"/> </defense> <defense name="speed" interval="1000" chance="10" speedchange="300" duration="3000"> <attribute key="areaEffect" value="redshimmer"/> </defense> </defenses> Reparem que botei '15' ali no chance, pois é um número que eu achei legal, a chance dele durmir. Porém, pra testar, aconselho colocar algo em torno de 30-50. Testando Bem, assim que tiver colocado em todos os monstros que quiser, ou no monstro que quiser usar pra testar, apenas salve tudo e vamos entrar no jogo para que você teste! Faça o seguinte: Entre num char que não seja GM. Use o comando walk! para fazer seu player "andar", para que você não acorde o monstro. Vá andando em direção ao monstro, e caso ele não esteja durmindo, fique de longe esperando que em menos de 1 minuto ele deva durmir. Assim que ele durmir, pode chegar bem pertinho dele para constatar que ele não se meche, não olha pra você, e nem te atacar. Agora, experimente falar run! e saia correndo, pois ele irá acordar e virá te atacar furioso! Agradecimentos Eu gostaria de agradecer ao meu amigo Mock, que me disponibilizou sua função getPosByAreaMOCK(pos, arr). Mesmo eu não a usando mais no sistema, obrigado ursão :yes: Bem, é isso galera, espero que gostem! E POR FAVOR, sugestões, críticas, são MUITO bem vindas, pois me fazem crescer. Agradeço desde já, Ricardo Ianelli. Obs.: Editei o sistema para melhorar o sistema devido à sugestão do usuário "Conde2". Obrigado Conde!
  6. Mensagem anônima de GM's.

    A pedidos, fiz uma talkaction pra mandar uma mensagem à um determinado player sem aparecer o nome do GM, aparecendo apenas "Gamemaster", para que o player não floode o GM. Pode ser útil, então, aqui vai. Coloque isso num script dentro de talkactions\scripts e salve com o nome de amsg.lua function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o nome do personagem e a mensagem.") return true end local t = string.explode(param, ",") msg = t[2] tid = getPlayerByNameWildcard(t[1]) if(not tid or (isPlayerGhost(tid) and getPlayerGhostAccess(tid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. t[1] .. " not found.") return true end doPlayerSendTextMessage(tid, MESSAGE_STATUS_CONSOLE_ORANGE, "Gamemaster: "..msg.."") return true end Depois vá em talkactions.xml e adicione essa tag: <talkaction log="yes" words="/amsg" access="3" event="script" value="amsg.lua"/> E pronto, dai é só falar: /amsg player, msg Abraços a todos!
  7. Sistema de colisão por: Ramza

    E ai galera, só vim aqui mostrar pra vocês um sisteminha legalzinho, que todo mundo AMA, principalmente quem eu boto pra testar comigo, pois vicia :3 DSAHUDSAUDSAHUDSAHDS É o meu sistema de colisão *-* deu trabaaaaaaaalho, mas ficou legal deixem seus comments! Ele funciona assim: Quando uma pessoa usa um feitiço junto comigo, nossos feitiços se colidem e explodem no ar.
  8. Obs.: Não funciona nas versões novas, pois elas não tem a função getPlayerFrags(cid) :fuu: Caso alguém consiga transformar aquela query em sql que tem em talkactions\scripts\frags.lua em uma função, eu edito aqui pra funfar nas versões mais novas de TFS :fist: Abração! Olá galera! Reparei que muitos estavam tendo problemas com frags, já que agora não se configura mais o tempo delas pelo config.lua, então a pedidos, resolvi criar um global event que remova todas as frags de 5 em 5 horas. Você pode configurar o tempo que quiser, se quiser fazer isso de 1 em 1 hora, ou de 2 em 2 dias, aí é com você O script é simples, porém bem útil (Y) Vamos lá, faça uma cópia de qualquer arquivo dentro da pasta globalevents\scripts e renomeie para "removeFrags.lua" Agora abra o arquivo, apague tudo que tiver dentro e coloque isso: [b]function onThink(interval, lastExecution, thinkInterval)[/b] [b] l[color=indigo]ocal players = getPlayersOnline()[/color][/b] [b][color=indigo] for _, pid in ipairs(players) do[/color][/b] [b][color=darkslategray]doPlayerSetRedSkullTicks(pid, (getPlayerRedSkullTicks(pid) + getConfigInfo('timeToDecreaseFrags')) * (- getPlayerFrags(pid)))[/color][/b] [color=darkred][b]doCreatureSetSkullType(pid, 0)[/b][/color] [b] end[/b] [b] [color=sienna] doBroadcastMessage("All frags have been removed. Next remotion in [/color][color=red][color=sienna]5 [/color]hours[/color][color=sienna].")[/color][/b] [b] return true[/b] [b]end[/b] Para quem não conseguir, o dragonlorde deu uma ajuda! Use isso: Obs.: Andei estudando LuaSQL e mudei a funçãozinha do dragonlorde, agora deve funcionar [color=#000000][color=#007700]function [/color][color=#0000bb]onThink[/color][color=#007700]([/color][color=#0000bb]interval[/color][color=#007700])[/color] [color=#0000bb]db[/color][color=#007700].[/color][color=#0000bb]executeQuery[/color][color=#007700]([/color][color=#dd0000]"DELETE * FROM `killers`;"[/color][color=#007700])[/color] [color=#0000bb]db[/color][color=#007700].[/color][color=#0000bb]executeQuery[/color][color=#007700]([/color][color=#dd0000]"UPDATE `players` SET skull = 0, skulltime = 0;"[/color][color=#007700])[/color] [color=#0000bb]doBroadcastMessage[/color][color=#007700]([/color][color=#dd0000]"All frags have been removed. Next remotion in 5 hours."[/color][color=#007700])[/color] [color=#007700] return [/color][color=#0000bb]true[/color] [color=#0000bb]end [/color][/color] Agora vá em globalevents.xml e adicione isso: <globalevent name="removeFrags" interval="[color=red]18000[/color]" event="script" value="removeFrags.lua"/> Pronto, agora é só rodar Agora vou explicar o script: Onde está em... Vermelho: É o tempo de intervalo entre uma remoção e outra. 18000 são 5 horas pois 18000 ai está em segundos, e 18000 segundos = 5 horas (Y) Caso queira mudar, já sabe como fazer né? Mas não se esqueça de mudar a mensagem também caso vá mudar o intervalo. Roxo: É uma função pra pegar todos os players online pra mim, e fazer uma ação em cada um deles. Pra quem não entende muito bem, o "pid" ali é o ID do player na qual ela está checando. Verde: É a função que é executada em todos os players. Marrom: É a mensagem que é mandada após a remoção. Bem, é isso, espero ter ajudado, não quero que isso seja apenas um script pra colocarem no OT, quero que seja também um método de aprendizagem para futuros scripts, e quem sabe alguém não pega o meu script e faz um ainda melhor? Abraços, e um bom desenvolvimento a vocês.
×