Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''rick''.



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 7 registros

  1. Fighter

    VOCATION Vamos lá, a primeira coisa a fazer é criar a tua vocação! Abra a pasta Data/XML/Vocations.xml Coloque isso lá (lembre-se, pode haver no máximo 12 vocations, se teu server tem second promotion e você não pode colocar, ou as delete ou esqueça disso): [spoiler=VOCATION] <vocation id="9" name="Fighter" description="a fighter" needpremium="0" [color="Lime"]gaincap="25" gainhp="10" gainmana="10"[/color] [color="purple"]gainhpticks="3" gainhpamount="300" gainmanaticks="6" gainmanaamount="300" manamultiplier="3.0"[/color] attackspeed="450" soulmax="100" gainsoulticks="120" fromvoc="9"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" armor="1.0"/> [color="DarkOrange"]<skill id="0" multiplier="1.1"/>[/color] <skill id="1" multiplier="1.5"/> <skill id="2" multiplier="1.5"/> <skill id="3" multiplier="1.5"/> <skill id="4" multiplier="1.3"/> <skill id="5" multiplier="1.1"/> <skill id="6" multiplier="1.1"/> </vocation> <vocation id="10" name="Street Fighter" description="a street fighter" needpremium="1" [color="lime"]gaincap="25" gainhp="30" gainmana="10"[/color] [color="Purple"]gainhpticks="8" gainhpamount="500" gainmanaticks="4" gainmanaamount="500" manamultiplier="3.0"[/color] attackspeed="450" soulmax="200" gainsoulticks="15" fromvoc="9" lessloss="30"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" armor="1.0"/> [color="DarkOrange"] <skill id="0" multiplier="1.1"/>[/color] <skill id="1" multiplier="1.5"/> <skill id="2" multiplier="1.5"/> <skill id="3" multiplier="1.5"/> <skill id="4" multiplier="1.3"/> <skill id="5" multiplier="1.1"/> <skill id="6" multiplier="1.1"/> </vocation> Observe que a promotion já está incluída! Em Laranja é o skill de Fist, se quiser diminuir o valor de up dele, AUMENTE, se quer aumentar, DIMINUA! Em Roxo está a regeneração de mana e HP! Em Verde Claro quanto de HP, Cap, e Mana ganha por level! PS: Para o bom funcionamento de itens e outras coisas a seguir, adicione isto ao arquivo function.lua em Data/lib/function [spoiler=FUNCTION] function isFighter(cid) if(isPlayer(cid) == FALSE) then debugPrint("isFighter: Player not found.") return false end return (isInArray({9,10}, getPlayerVocation(cid)) == TRUE) end ARMAS E POTIONS ARMAS Aqui estam algumas armas do Fighter, as suas Gloves (OK, a maioria ficou tosca)! Mude os seguintes IDs no items.XML: CAT GLOVES [spoiler=CAT GLOVES] <item id="5480" article="a" name="cat gloves"> <attribute key="weight" value="3500"/> <attribute key="defense" value="20"/> <attribute key="attack" value="25"/> <attribute key="weaponType" value="fist"/> <attribute key="slotType" value="two-handed"/> <attribute key="extradef" value="1"/> </item> BEAR GLOVES [spoiler=BEAR GLOVES] <item id="5896" article="a" name="bear gloves"> <attribute key="weight" value="3500"/> <attribute key="defense" value="25"/> <attribute key="attack" value="32"/> <attribute key="slotType" value="two-handed"/> <attribute key="weaponType" value="fist"/> </item> WOLF GLOVES [spoiler=WOLF GLOVES] <item id="5897" article="a" name="wolf gloves"> <attribute key="weight" value="3500"/> <attribute key="defense" value="27"/> <attribute key="attack" value="30"/> <attribute key="weaponType" value="fist"/> <attribute key="slotType" value="two-handed"/> </item> DRAGON GLOVES [spoiler=DRAGON GLOVES] <item id="5919" article="a" name="dragon gloves"> <attribute key="weight" value="3500"/> <attribute key="defense" value="32"/> <attribute key="attack" value="37"/> <attribute key="weaponType" value="fist"/> <attribute key="slotType" value="two-handed"/> <attribute key="extradef" value="1"/> </item> BEHEMOTH GLOVES [spoiler=BEHEMOTH GLOVES] <item id="5930" article="a" name="behemoth gloves"> <attribute key="weight" value="3500"/> <attribute key="defense" value="45"/> <attribute key="attack" value="50"/> <attribute key="weaponType" value="fist"/> <attribute key="slotType" value="two-handed"/> </item> PIRATE GLOVES [spoiler=PIRATE GLOVES] <item id="6097" article="a" name="pirate gloves"> <attribute key="weight" value="3500"/> <attribute key="defense" value="24"/> <attribute key="attack" value="27"/> <attribute key="weaponType" value="fist"/> <attribute key="slotType" value="two-handed"/> <attribute key="extradef" value="1"/> </item> GOD GLOVES [spoiler=GOD GLOVES] <item id="5875" name="God Gloves"> <attribute key="attack" value="100"/> <attribute key="weaponType" value="fist"/> <attribute key="extradef" value="2"/> <attribute key="elementDeath" value="50"/> <attribute key="weight" value="3500"/> <attribute key="defense" value="100"/> <attribute key="slotType" value="two-handed"/> <attribute key="extradef" value="3"/> </item> A última Gloves, a GOD, possui atributo de DEATH, então, você terá de colocar no Weapons.xml: [spoiler=WEAPONS.XML] <melee id="5875" level="150" unproperly="1" event="function" value="default"/> <vocation name="Fighter"/> <vocation name="Street Fighter"/> POTIONS Ah não ser que você queira que sua classe seja defazada em Heal, adicione isto na Actions.XML: [spoiler=TAG DA POTION] <action itemid="7488" script="god_spirit.lua"/> E vá na pasta Scripts, e copie qualquer coisa e coloque o nome god_spirit.lua [spoiler=GOD SPIRIT POTION SCRIPT] [color="LemonChiffon"]local MIN_HEALTH = 750 local MAX_HEALTH = 1500 local MIN_MANA = 1000 local MAX_MANA = 1500[/color] local EMPTY_POTION = 7636 local exhaust = createConditionObject(CONDITION_EXHAUST) setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100)) function onUse(cid, item, fromPosition, itemEx, toPosition) if isPlayer(itemEx.uid) == FALSE then return FALSE end if hasCondition(cid, CONDITION_EXHAUST_HEAL) == TRUE then doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED) return TRUE end [color="LightBlue"]if((not(isPaladin(itemEx.uid) or isFighter(itemEx.uid)) or [/color]getPlayerLevel(itemEx.uid) < [color="Pink"]600[/color]) and getPlayerCustomFlagValue(itemEx.uid, PlayerCustomFlag_GamemasterPrivileges) == FALSE) then doCreatureSay(itemEx.uid, "Only [color="lightblue"]fighters and paladins [/color]of level [color="pink"]600[/color] or above may drink this fluid.", TALKTYPE_ORANGE_1) return TRUE end if doCreatureAddHealth(itemEx.uid, math.random(MIN_HEALTH, MAX_HEALTH)) == LUA_ERROR or doPlayerAddMana(itemEx.uid, math.random(MIN_MANA, MAX_MANA)) == LUA_ERROR then return FALSE end doAddCondition(cid, exhaust) doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE) doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1) doTransformItem(item.uid, EMPTY_POTION) return TRUE end Em Rosa está o level para usar a potion, você pode mudar! Em Azul Clarinho está as vocations que usam a Potion! (note que aí os Paladins também usam ela)Em Amarelo Feio HAHA é o tanto que a potion cura de mana e HP!(lembrando que os valores estão extremamente grandes porque meu Server é XP alta! Aproveitando, entrem nele HAHA) Ah, não esquecer de mudar o nome como quiser no Item.XML [spoiler=POTION NO ITEMS.XML] <item id="7488" article="a" name="God Spirit Potion"> <attribute key="weight" value="280"/> </item> Eu editei outras Potions também, como a great Spirit Potion, mas isso depende da tua vontade! SPELLS Chegando ao fim! Como qualquer outra classe do Tibia, ela também tem magias! Eu apenas vou postar algumas ofensivas, se quiserem adicionem outras de Heal e Suporte também! Adicionem tudo isso no spells.XML: WAVE PUNCH [spoiler=WAVE PUNCH TAG] <instant name="wave punch" [color="magenta"]words="exevo hur"[/color] [color="Sienna"]lvl="75" mana="150"[/color] prem="1" needweapon="1" direction="1" exhaustion="2000" needlearn="0" script="Wave Punch.lua"> [color="yellow"] <vocation name="Fighter"/> <vocation name="Street Fighter"/>[/color] </instant> FURY FIST [spoiler=FURY FIST TAG] <instant name="Fury Fist" [color="magenta"]words="exori mas hur"[/color] [color="sienna"]lvl="20" mana="70"[/color] prem="0" needweapon="1" exhaustion="2000" needlearn="0" script="Fury Fist.lua"> [color="yellow"] <vocation name="Fighter"/> <vocation name="Street Fighter"/>[/color] </instant> FURY EXPLOSION [spoiler=FURY EXPLOSION TAG] <instant name="Fury Explosion" [color="Magenta"]words="exori gran hur"[/color] [color="sienna"]lvl="150" mana="200"[/color] prem="1" needweapon="1" exhaustion="2000" needlearn="0" script="fury explosion.lua"> [color="Yellow"] <vocation name="Fighter"/> <vocation name="Street Fighter"/>[/color] </instant> Em amarelo as vocações que usam a magia! Em Rosa Choque a pronúncia da magia! Em Marrom o Level e Mana respectivamente! Agora vamos colocar os Scripts das Spells! Na pasta scripts, copie e cole um arquivo qualquer e renomeie para Wave Punch.lua, delete o que estiver dentro e copie: [spoiler=WAVE PUNCH SCRIPT] [color="darkred"]local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)[/color] [color="Gray"]function getSpellDamage(cid, weaponSkill, weaponAttack) damage_min = (weaponSkill * weaponAttack / 30) * 2.0 damage_max = (weaponSkill * weaponAttack / 30) * 2.5[/color] if(damage_max < damage_min) then local tmp = damage_max damage_max = damage_min damage_min = tmp end return -damage_min, -damage_max end [color="plum"]local area = createCombatArea(AREA_WAVE4, AREADIAGONAL_WAVE4) setCombatArea(combat, area)[/color] setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "getSpellDamage") function onCastSpell(cid, var) return doCombat(cid, combat, var) end Faça o mesmo processo e renomeie para Fury Fist.lua e copie isso dentro: [spoiler=FURY FIST SCRIPT] [color="darkred"]local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)[/color] [color="gray"]function getSpellDamage(cid, weaponSkill, weaponAttack) damage_min = (weaponSkill * weaponAttack / 30) * 1.5 damage_max = (weaponSkill * weaponAttack / 30) * 2.0[/color] if(damage_max < damage_min) then local tmp = damage_max damage_max = damage_min damage_min = tmp end return -damage_min, -damage_max end [color="plum"]local area = createCombatArea(AREA_CIRCLE2X2) setCombatArea(combat, area)[/color] setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "getSpellDamage") function onCastSpell(cid, var) return doCombat(cid, combat, var) end Lá vamos nós de novo, repita tudo e renomeie para fury explosion.lua, e copie dentro: [spoiler=FURY EXPLOSION SCRIPT] [color="DarkRed"]local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)[/color] [color="gray"]function getSpellDamage(cid, weaponSkill, weaponAttack) damage_min = (weaponSkill * weaponAttack / 30) * 2.5 damage_max = (weaponSkill * weaponAttack / 30) * 3.5[/color] if(damage_max < damage_min) then local tmp = damage_max damage_max = damage_min damage_min = tmp end return -damage_min, -damage_max end [color="Plum"]local area = createCombatArea(AREA_CROSS1X1) setCombatArea(combat, area)[/color] setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "getSpellDamage") function onCastSpell(cid, var) return doCombat(cid, combat, var) end Últimas explicações, em Cinza o valor do ataque das magias! Em Rosinha Claro, a área afetada! Em Vinho, o efeito da magia! Aleluia terminamos, e provavelmente tua vocação está pronta para o uso! Postem teus problemas aqui! Aqui segue uma imagem das magias postadas e a luva como fica! (O dano da luva está pequeno pois o GOD tem 10 de fist fighting) Espero que tenham entendido galerinha do mal, perguntas aqui mesmo, estarei respondendo quando puder! CRÉDITOS 10% PEDRODDCUNHA (acho que é assim) e o povo do SUPORTE. Afinal, eu enchi o saco deles com dúvidas para o funcionamento disso! 20% TIO GORDO no seguinte tópico Luva no Tibia Pois ele foi o ponto de partida para a criação da vocação! 70% GOD Rick, ou Ric10! Eu mesmo, HAHA! :happy2: Não seja Sangue-Suga, Agradeça! HAHA Se quiser!
  2. 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:
  3. 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!
  4. [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!
  5. 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!
  6. 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.
  7. 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.
×