Líderes
-
xWhiteWolf
HéroiPontos3605Total de itens -
-
-
MatteusDeli
MembroPontos104Total de itens
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 06/14/21 em todas áreas
-
[Pedido] Proteger Sevidor Contra Ataque
[Pedido] Proteger Sevidor Contra Ataque
Bruce Pereira reagiu a Endless por uma resposta no tópico
1 pontoPelo visto tu nem procurou no fórum então amigo... Percebi no seu perfil, que cada peido que tu solta, tu vem no fórum pedir papel. Não acha meio errado isso não? Já pensou na possibilidade de estudar 1 pouco sobre o tema? Entender o que é ddos, como se proteger, quais ferramentas existem open sources, ferramentas gratuitas que você pode utilizar e abusar das configurações, firewall que vem no linux que tu poderia configurá-lo de forma simples. Existem N formas de tratar esse tema e que não é apenas "awin como posso corrigir". Todo problema que tu se depara, tu vem no tibiaking pedir pra alguém resolver pra ti, sempre com o argumento "Eu procurei, mas não achei" não amigo, tu não procurou, porque se tivesse procurado, teria achado ¬¬ Abaixo tem 1 tópico sobre 1 mod no apache, vai resolver seu problema, mas pelo amor de deus, começa a procurar as coisas antes de vir no fórum igual 1 parasita apenas para extrair o que você precisa, para VOCÊ ganhar $$... https://tibiaking.com/forums/topic/102167-proteção-contra-ddos-utilizando-mod_evasive-no-apache/1 ponto -
Voodoo
Voodoo
kirabig reagiu a xWhiteWolf por uma resposta no tópico
1 pontoAeeeeeee carai, hoje vim trazer pra vocês meu mais novo sistema *-*. É uma fodenda spell que você seleciona alguém pra ser seu voodoo e a partir disso durante um tempo X ela vai receber todos os hit's que você deveria receber... INCRÍVEL, NÃO? Agora se nesse meio tempo ela deslogar ou entrar em pz você vai tomar o dano normal, mas se ainda tiver nesse tempo X e ela sair ela vai receber o dano instantaneamente (É BOM DEMAIS PRA SER VERDADE). Agora você deve estar imaginando, e se eu usar a magia pra transferir o dano pra um amigo e ele fizer a mesma coisa em mim, pra onde vai o dano? PRA LUGAR NENHUM!!!! Até porque eu já me previni contra esse bug fazendo com que não seja possível fazer alguém de voodoo se ele já tiver alguém de voodoo. Testado em versão 8.54 TFS Crying Damnson mas deve funcionar em todas as versões que tenham a função onStatsChange no creaturescripts. Bom, o script tá 100% funcional e livre de bugs (se vc achar algum eu te dou 3 REP). Agora vamos à mágica: Crie um arquivo em mods com extensão .xml e adiciona isso daqui nele <?xml version="1.0" encoding="UTF-8"?> <mod name="Voodoo System" version="1.0" author="Night Wolf" contact="none" enabled="yes"> ------------------------------------------------------------------------------------ <config name="feitisso"><![CDATA[ configuration = { storage = 24567, tempo = 20, cooldown = 45, effect1 = 13, effect2 = 65 } storagecool = 24568 ]]></config> ---------------------------------------------------------------------------------- <event type="login" name="registerVoodoo" event="script"><![CDATA[ function onLogin(cid) domodlib('feitisso') if getPlayerStorageValue(cid, configuration.storage) > 0 then doPlayerSendTextMessage(cid, 22, "Your victim is not receiving your hits anymore.") doPlayerSetStorageValue(cid, configuration.storage, 0) end registerCreatureEvent(cid,"voodoo") return true end ]]></event> ------------------------------------------------------------------------------------ <instant name="Feitiço" words="voodoo" lvl="50" mana="10" prem="1" range="3" needtarget="1" blockwalls="1" exhaustion="1000" needlearn="0" event="script"> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="8"/> <![CDATA[ function onCastSpell(cid, var) domodlib('feitisso') if not (isPlayer(variantToNumber(var))) then doPlayerSendCancel(cid, "You can only use this spell in players.") return false end if getPlayerStorageValue(variantToNumber(var), configuration.storage) > 0 then doPlayerSendCancel(cid, "You can't make a voodoo of someone who already has a voodoo.") return false end if (os.time() - getPlayerStorageValue(cid, storagecool)) >= configuration.cooldown then if getPlayerStorageValue(cid, configuration.storage) <= 0 then timeleft = (os.time() + configuration.cooldown) doPlayerSetStorageValue(cid, storagecool, timeleft) local target = getPlayerGUID(variantToNumber(var)) doPlayerSetStorageValue(cid, configuration.storage, target) doSendMagicEffect(getPlayerPosition(cid), configuration.effect1) doSendMagicEffect(getThingPos(variantToNumber(var)), configuration.effect1) addEvent(function() if isCreature(cid) then doSendMagicEffect(getPlayerPosition(cid), configuration.effect2) doPlayerSendTextMessage(cid, 22, "Your victim is not receiving your hits anymore.") doPlayerSetStorageValue(cid, configuration.storage, 0) end end, 100+1000*configuration.tempo) elseif getPlayerStorageValue (cid, configuration.storage) > 0 then doPlayerSendCancel(cid, "You've already set a target.") end else doPlayerSendCancel(cid, "Your skill is in cooldown, you must wait "..(configuration.cooldown - (os.time() - getPlayerStorageValue(cid, storagecool))).." seconds.") end return true end ]]></instant> ------------------------------------------------------------------------------------ <event type="statschange" name="voodoo" event="script"><![CDATA[ function onStatsChange(cid, attacker, type, combat, value) domodlib('feitisso') if isPlayer(cid) and (not (attacker == cid)) and (type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS) and getPlayerStorageValue(cid, configuration.storage) >= 1 then local name = getPlayerNameByGUID(getPlayerStorageValue(cid, configuration.storage)) local victim = getCreatureByName(name) if isCreature(victim) and not (getTilePzInfo(getPlayerPosition(victim))) then dano = math.ceil(value) doSendMagicEffect(getPlayerPosition(cid), configuration.effect2) if attacker == victim then doTargetCombatHealth(cid, victim, combat, -dano, -dano, configuration.effect2) else doTargetCombatHealth(attacker, victim, combat, -dano, -dano, configuration.effect2) end return false end end return true end ]]></event> ------------------------------------------------------------------------------------ </mod> aqui você edita os storages da magia e do cooldown, além do tempo que ela dura, o tempo de cooldown (um uso e outro) e os efeitos que vão sair. ------------------------------------------------------------------------------------------------------------- aqui você edita o nome da spell, as palavras pra ela sair, level, custo de mana, se é preciso ser premium pra usar, o range dela, e as vocações que podem usá-la. OBS: se vc quiser que essa spell seja ganha em uma quest (por se tratar de algo bastante apelativo), é só colocar needlearn = "1" e fazer uma quest pra ganhar a spell (tem no meu Darkness Pact Quest uma quest de ganhar Spell, é só ir lá no meu perfil e procurar o tópico). Essa spell não serve somente pra ATS, use a criatividade pra criar uma história e fazer ela se encaixar... foque nos elementos de RPG e tcharam, está feito!. Façam bom uso e espero que não saiam postando em outros lugares sem os devidos créditos. Abraços do lobinho pra vcs PS: a foto ficou meio bosta mas vou postar mesmo assim Eu (sorc) ataquei a zuera e tomei o dano de volta e ainda saiu esse efeitinho bonito. Espero que tenham gostado e usem essa spell como base pra fazer outras coisas maravilhosas pra esse fórum E não esqueça de clicar em "gostei" caso tenha curtido a idéia. Ahhh, e antes que eu me esqueça dos agradecimentos: @ViitinG por me ajudar a testar @CreatServer por me dar a idéia @MaXwEllDeN por me orientar a trocar a table pelo storage possibilitando que o script fosse possível.1 ponto -
Exp Banner
Exp Banner
FlamesAdmin reagiu a MatteusDeli por uma resposta no tópico
1 pontoBoa noite, não sei se já existe este script aqui no fórum caso não aqui está. Este script foi testado na versão 8.6 TFS 0.4, funciona em servidores de Tibia, Pokemon, Narutibia etc... Bom neste script eu tive como base o script de banner da PXG aonde você coloca ele em uma Hunt e ganha uma porcentagem X a mais de experiencia. Instalando o Script - Vá em data/lib crie um arquivo com o nome bannerExp.lua e cole o código abaixo nele: -- Configurações -- effect_invoke_banner = 10 -- efeito que saira no banner quando ele for colocado no chao effect_decay_banner = 2 -- efeito que saira no banner quando o tempo dele acabar effect_kill_banner = 36 -- efeito que saira no banner quando o player matar um monstro e ganhar o bonus de exp banner_radius_x = 5 -- distancia maxima em x que ira ocorreu o bonus banner_radius_y = 5 -- distancia maxima em y que ira ocorreu o bonus time_in_minutes = 60 -- configurado em minutos (caso queira em horas só colocar 60 * 60) remove_banner_item = false -- Se estiver TRUE o item de criacao do banner sera removido do player, caso esteja FALSE o item não sera removido. config_banner = { --[ID DO ITEM CRIAR O BANNER] = {banner_id = ID DO BANNER, exp_bonus = % EXP PLAYER IRA GANHAR, time_left = TEMPO PARA SUBIR O BANNER}, [4865] = {banner_id = 8617, exp_bonus = 20, time_left = 20}, [4866] = {banner_id = 8618, exp_bonus = 25, time_left = 10}, [4867] = {banner_id = 8619, exp_bonus = 35, time_left = 15}, [4868] = {banner_id = 8620, exp_bonus = 45, time_left = 20}, } -- Não Mexer -- time_banner = 7899987 player_use_banner = 78999788 storage_banner_x = 7889911 storage_banner_y = 7889912 storage_banner_z = 7889913 storage_banner_id = 7884544 storage_exp = 7889915 rate_level = SKILL__LEVEL - Agora vá em data/actions/scripts e crie um arquivo chamado bannerexp.lua e cole isto dentro: function onUse(cid, item, frompos, itemEx, topos) if (getPlayerStorageValue(cid, player_use_banner) >= 1) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Voce ja esta usando o banner.") return true end if (config_banner[item.itemid]) then local banner = config_banner[item.itemid] if (remove_banner_item == true or remove_banner_item == TRUE) then doPlayerRemoveItem(cid, item.itemid, 1) end CreateBanner(cid, banner, itemEx) TimeBannerCheck(cid, banner, getThingPos(itemEx.uid)) EffectBanner(getThingPos(itemEx.uid)) end end function CreateBanner(cid, banner, itemEx) doCreateItem(banner.banner_id, getThingPos(itemEx.uid)) doSendMagicEffect(getThingPos(itemEx.uid), effect_invoke_banner) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Voce usou o banner de ["..banner.exp_bonus.."% EXP], ele tem duração de "..banner.time_left.." minuto(s).") setPlayerStorageValue(cid, storage_banner_x, getThingPos(itemEx.uid).x) setPlayerStorageValue(cid, storage_banner_y, getThingPos(itemEx.uid).y) setPlayerStorageValue(cid, storage_banner_z, getThingPos(itemEx.uid).z) setPlayerStorageValue(cid, storage_banner_id, banner.banner_id) setPlayerStorageValue(cid, storage_exp, banner.exp_bonus) setPlayerStorageValue(cid, player_use_banner, 1) setPlayerStorageValue(cid, time_banner, os.time() + (banner.time_left * time_in_minutes)) end function TimeBannerCheck(cid, banner, banner_pos) if not isCreature(cid) then doRemoveItem(getTileItemById(banner_pos, banner.banner_id).uid) doSendMagicEffect(banner_pos, effect_decay_banner) return true end if (getPlayerStorageValue(cid, time_banner) == os.time()) then doRemoveItem(getTileItemById(banner_pos, banner.banner_id).uid) doSendMagicEffect(banner_pos, effect_decay_banner) setPlayerStorageValue(cid, player_use_banner, -1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "O Banner de ["..banner.exp_bonus.."% EXP] terminou.") return true end addEvent(function() TimeBannerCheck(cid, banner, banner_pos) end, 1000) end - Em Actions.XML cole esta tag: <action itemid="4865" script="bannerexp.lua"/> Aonde está 4865 você coloca o(s) ITEM_ID que será usado para summonar o banner no chão. - Agora vá em data/creatureevents/scripts crie um arquivo chamado bannerexp.lua e cole isto dentro dele: function onKill(cid, target) if not isMonster(target) then return true end if (getPlayerStorageValue(cid, storage_banner_id) <= -1) then return true end local banner_pos = {x=getPlayerStorageValue(cid, storage_banner_x), y=getPlayerStorageValue(cid, storage_banner_y), z=getPlayerStorageValue(cid, storage_banner_z)} if (getTileItemById(banner_pos, getPlayerStorageValue(cid, storage_banner_id)).uid >= 1) then if not (CheckPlayerInArea(cid, banner_pos)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Voce esta fora da area do bonus.") end else doPlayerSetRate(cid, rate_level,1) end return true end function CheckPlayerInArea(cid, banner_pos) for x=banner_pos.x-banner_radius_x, banner_pos.x+banner_radius_x do for y=banner_pos.y-banner_radius_y, banner_pos.y+banner_radius_y do local banner_area = {x=x,y=y,z=banner_pos.z} local player = getTopCreature(banner_area).uid if (isPlayer(player)) then AddBonusExp(cid, banner_pos) return true end end end end function AddBonusExp(cid, banner_pos) doPlayerSetExperienceRate(cid, (1+(getPlayerStorageValue(cid, storage_exp)/100))+(getPlayerExtraExpRate(cid)/100)) doSendMagicEffect(banner_pos, effect_kill_banner) end function getPlayerExtraExpRate(cid) return (getPlayerRates(cid)[rate_level]-1)*100 end - Em Creatureevents.XML cole está tag: <event type="kill" name="BannerExp" event="script" value="bannerexp.lua"/> - Agora no arquivo login.lua em data/creatureevents/scripts cole este código antes do último return true: registerCreatureEvent(cid, "BannerExp") if (getPlayerStorageValue(cid, 78999788) >= 1) then setPlayerStorageValue(cid, 78999788, -1) end Explicação: (Configuração fica no arquivo adicionado no data/lib) 1° Aqui você configura a área em que o player tem que estar matando o monstro para poder ganhar o bônus banner_radius_x = 5 -- distancia maxima em x que ira ocorreu o bonus banner_radius_y = 5 -- distancia maxima em y que ira ocorreu o bonus 2° Aqui você adiciona um novo banner (Lembre-se de adicionar o itemid que você colocar entre colchetes lá na tag em Actions.XML) -[ID DO ITEM CRIAR O BANNER] = {banner_id = ID DO BANNER, exp_bonus = % EXP PLAYER IRA GANHAR, time_left = TEMPO PARA SUMIR O BANNER}, É isso... Script básico mais eu acho que vai ser bastante útil para muitos servidores. -- ATUALIZAÇÃO -- - Adicionado mensagem quando o player sair da área do bônus! - Adicionado variável que controla se o item da criação do banner será removido do player ou não. (Alterar a variável remove_banner_item em data/lib/bannerExp.lua).1 ponto -
Ajudem, erro na distro do sv do mitsuig
@sharen 1- O nome do global-spawn.xml esta igual no config.lua ?? 2- Vá em XML, abre o groups.xml e veja o ID se ta certinho.. 3- Nao entendi nn.. Obs: Se lhe ajudei, de um REP+ :D1 ponto
-
(Resolvido)Spell de revidar ataque
(Resolvido)Spell de revidar ataque
kirabig reagiu a xWhiteWolf por uma resposta no tópico
1 pontospells/scripts/especiais/uchihagaeshi.lua local config = { storage = 3482101, cooldown = 20, effect1 = 29 --- efeito que sai qnd usa a spell } function onCastSpell(cid, var) if getPlayerStorageValue(cid, config.storage) == 1 then doPlayerSendCancel(cid, "Your skill is already active.") return false end if os.time() - getPlayerStorageValue(cid, 55694) >= config.cooldown then setPlayerStorageValue(cid, 55694, os.time()) doSendMagicEffect(getCreaturePosition(cid), config.effect1) setPlayerStorageValue(cid, config.storage, 1) doPlayerSendTextMessage(cid, 27, "You activated your skill, the next damage will be reflected.") else doPlayerSendCancel(cid, "Your skill is in cooldown, you must wait "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, 55694))).." seconds.") return false end return true end spells.xml <instant name="testeTK" words="naruto3" lvl="16" mana="500" prem="1" aggressive="0" exhaustion="1000" needlearn="0" event="script" value="especiais/uchihagaeshi.lua"> </instant> creaturescripts.xml: <event type="statschange" name="uchihagaeshi" event="script" value="uchihagaeshi.lua"/> creaturescripts\scripts\uchihagaeshi.lua: local config = { storage = 3482101, effect1 = 17, --- efeito que sai ao dar reflect effect2 = 29 -- efeito que aparece na pessoa que levou reflect } function onStatsChange(cid, attacker, type, combat, value) if value >= 1 and (type == STATSCHANGE_HEALTHLOSS or (getCreatureCondition(cid, CONDITION_MANASHIELD) and type == STATSCHANGE_MANALOSS)) then if getPlayerStorageValue(cid,config.storage) == 1 and isCreature(attacker) then doSendAnimatedText(getCreaturePosition(attacker),"-"..value, 215) doCreatureAddHealth(attacker, -value, true) doCreatureSay(cid,"Uchihagaeshi!", 19) doSendMagicEffect(getCreaturePosition(cid), config.effect1) doSendMagicEffect(getCreaturePosition(attacker), config.effect2) setPlayerStorageValue(cid,config.storage, 0) return false end end return true end creaturescripts\scripts\login.lua: ---------- UCHIHAGAESHI ---------------- registerCreatureEvent(cid, "uchihagaeshi") if getPlayerStorageValue(cid, 3482101) ~= 0 then setPlayerStorageValue(cid, 3482101, 0) end Se for editar storage tem que editar em todos os scripts1 ponto
Líderes está configurado para São Paulo/GMT-03:00