
Kurwanuss
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
Kurwanuss recebeu reputação de Gordo Zikka em (Resolvido)script de item que teleporta--ACTIONS.xml-- <action itemid="ID do item" script="nome do arquivo.lua"/> ---SCRIPT--- function onUse(cid, item, frompos, item2, topos) local config = { pz = "yes", -- players precisam estar em protection zone para usar? ("yes" or "no"). battle = "yes", -- players deve estar sem battle ("yes" or "no") pos = {x=276, y=71, z=7} ---- Cordenadas } if(config.pz == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"você precisa estar em protection zone pra poder teleportar.") return TRUE end if(config.battle == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você precisa estar sem battler pra poder teleportar.") return TRUE end if item.itemid == 5091 then ---- id do item doPlayerSendTextMessage(cid,22,"Nossa Este Artefato é Muito Poderoso!!!") -- mensagem quando ele for usado doTeleportThing(cid,config.pos) doSendMagicEffect(getCreaturePosition(cid), 10) doSendMagicEffect(frompos,6) end return 1 end
-
Kurwanuss recebeu reputação de Fernandooww em (Resolvido)script de item que teleporta--ACTIONS.xml-- <action itemid="ID do item" script="nome do arquivo.lua"/> ---SCRIPT--- function onUse(cid, item, frompos, item2, topos) local config = { pz = "yes", -- players precisam estar em protection zone para usar? ("yes" or "no"). battle = "yes", -- players deve estar sem battle ("yes" or "no") pos = {x=276, y=71, z=7} ---- Cordenadas } if(config.pz == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"você precisa estar em protection zone pra poder teleportar.") return TRUE end if(config.battle == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você precisa estar sem battler pra poder teleportar.") return TRUE end if item.itemid == 5091 then ---- id do item doPlayerSendTextMessage(cid,22,"Nossa Este Artefato é Muito Poderoso!!!") -- mensagem quando ele for usado doTeleportThing(cid,config.pos) doSendMagicEffect(getCreaturePosition(cid), 10) doSendMagicEffect(frompos,6) end return 1 end
-
Kurwanuss deu reputação a Cat em [PEDIDO] Sprite m4a1não sei se gostou mas o que vale e a intenção rsrs
-
Kurwanuss deu reputação a xWhiteWolf em VoodooAeeeeeee 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.
-
Kurwanuss deu reputação a Cazuza em [Moveevents] Cadeiras curandoNome: Banco/Cadeiras curando Função: Bom, na verdade é bem simples, fiz para meu servidor para dar mais RPG. Funciona da seguinte maneira: Se a vida do jogador for menor que o máximo de vida e se ele não estiver com battle. Entrara em modo de descanso, fazendo que cure sua vida em uma porcentagem X ( configuravel ).de Y em Y tempo ( configuravel)
Versão: Testada somente na "10.31". (OTX Server - Galaxy) Créditos:
Kazuza - (eu) Por ter criado.
xWhiteWolf - Por uma função
"Pasta Servidor > Data > Moveevents > Scripts" crie "Banco.lua". function onStepIn(cid, item, position, fromPosition) local percent = 2 local tempo = 1 function lifesteal(cid) if isCreature(cid) then doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN) doCreatureAddHealth(cid, math.floor(getCreatureMaxHealth(cid) * (percent/100))) if getCreatureHealth(cid) == getCreatureMaxHealth(cid) then stopEvent(steal) end end steal = addEvent(lifesteal, 1000*tempo, cid) end if getCreatureHealth(cid) < getCreatureMaxHealth(cid) then if getCreatureCondition(cid, CONDITION_INFIGHT) then doPlayerSendCancel(cid, 'Voce nao pode descansar se estiver com battle') else lifesteal(cid) end end return true end function onStepOut(cid, item, position, fromPosition) stopEvent(steal) return true end "Pasta Servidor > Data > Creaturescripts > Scripts" crie "Banco.lua".
<movevent type="StepIn" itemid="1662;1663;1664;1665" event="script" value="banco"/> <movevent type="StepOut" itemid="1662;1663;1664;1665" event="script" value="banco.lua"/> OBS: Nos itemid você adiciona os items que quer que cure ao 'sentar'.
-
Kurwanuss deu reputação a slyton em (Resolvido)[Pedido] Cidade De Carlin/\ cara se você não for ajudar, não fala nada só veja o tópico --' até parece que você nunca foi iniciante.
(Kurwanuss) bom cara já tento baixar um mapa global abrir e copiar e jogar ele em algum mapa que você deseja? ou até mesmo copiar e jogar num mapa vazio...
-
Kurwanuss deu reputação a Cat em (Resolvido)[Pedido] Cidade De Carlinremovido
-
Kurwanuss deu reputação a dawanpl em Sistema De FomeBom galera, aqui está o meu primeiro script. Ele é bem básico e até um pouco inútil mas, pode ajudar.
Explicação: O player digita !fome e se ele estiver com fome e se precisar comer, recebe uma mensagem dizendo:
"Você está com fome."
Se a fome dele não estiver no limite, recebe uma mensagem que diz:
"Faltam (x) segundos para você ficar com fome."
Sendo x = segundos.
Vamos ao script.
1º: data > talkactions > scripts
Crie "fome.lua" e dentro coloque:
function onSay(cid, words, param, channel, fome)
local fome = getPlayerFood(cid) if fome>= 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,(" Faltam "..fome.." segundos para você ficar com fome.")) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,(" Você está com fome.")) end
end 2º: data > talkactions > talkactions.xml Insira a seguinte linha: <talkaction log="yes" words="!fome" event="script" value="fome.lua"/>
Espero que gostem
-
Kurwanuss deu reputação a KekezitoLHP em [SISTEMA] Colisão de MagiasNome: Sistema de Colisão de Magias V. 1.0 Autor: Ramza (Ricardo Ianelli) Versão Testada: TFS 0.3.6PL1 (8.54) "PODERÁ FUNCIONA EM VERSÃO 8.54+ FAÇA O TESTE" Introdução
video:
Funcionamento
Do ponto de vista do jogador:
O jogador usa uma magia, digamos, exori frigo. No mesmo momento, o inimigo usa um exori vis por exemplo. As magias voam, e se colidem no ar. Do ponto de vista do scripter: Toda magia antes de ser lançada, salva um storage value, e checa se o inimigo tem o mesmo storage. Caso tenha, ao invés de mandar a magia, manda os efeitos pra uma posição calculada entre os dois pontos, e um efeito de colisão. Caso o criador queira melhorar ainda a função (pra ficar como na versão 2.0 do sistema), pode-se fazer uma checagem de força pra saber qual das duas 'vence', fazendo com que ela atinja o oponente. Para melhores resultados, magias usando addEvent são mais usadas, por isso usarei um exemplo dessa forma aqui no tutorial. 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
Agora adiciona essa função em todas as magias que você deseja a colisão.
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 einovadoras 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.
-
Kurwanuss deu reputação a EddyHavoc em Looking at you [Look]Looking at You
Fala galera do TK, faz tempo que não posto nada, aí vou postar um sistema simples aqui, que ainda não tem no fórum e vejo membros procurando.
DESCRIÇÃO DO SISTEMA: Quando um player der look em você aparecerá em branco uma mensagem no canto inferior da tela: "Nome do Player" is looking at you.
1° - Acesse a pasta MODS e crie um arquivo chamado lookingatyou.xml, coloque isso dentro do arquivo:
<?xml version="1.0" encoding="UTF-8"?> <mod name="peeper" version="1.0" author="" contact="" enabled="yes"> <config name="peeper-config"><![CDATA[ -- anonymously or display peeper name? anonymous = "no" -- ignore players with access (will not show message when they look on someone) hiddenAccess = 3 -- message color (type) messageType = MESSAGE_STATUS_DEFAULT ]]></config> <event type="look" name="peeper-event" event="script"><![CDATA[ domodlib('peeper-config') local config = { anonymous = getBooleanFromString(anonymous), hiddenAccess = hiddenAccess, messageType = messageType } function onLook(cid, thing, position, lookDistance) if(isPlayer(thing.uid) and getPlayerAccess(cid) < config.hiddenAccess) then doPlayerSendTextMessage(thing.uid, config.messageType, (config.anonymous and "Someone" or getPlayerName(cid)) .. " is looking at you.") end return true end ]]></event> <event type="login" name="peeper-login" event="buffer"><![CDATA[ registerCreatureEvent(cid, "peeper-event") _result = true ]]></event> </mod> Bom galera este é o sistema.
Créditos:
EddyHavoc
Slawkens
Testado e funcionando 100%
-
Kurwanuss recebeu reputação de skailord em (Resolvido)script de item que teleporta--ACTIONS.xml-- <action itemid="ID do item" script="nome do arquivo.lua"/> ---SCRIPT--- function onUse(cid, item, frompos, item2, topos) local config = { pz = "yes", -- players precisam estar em protection zone para usar? ("yes" or "no"). battle = "yes", -- players deve estar sem battle ("yes" or "no") pos = {x=276, y=71, z=7} ---- Cordenadas } if(config.pz == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"você precisa estar em protection zone pra poder teleportar.") return TRUE end if(config.battle == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você precisa estar sem battler pra poder teleportar.") return TRUE end if item.itemid == 5091 then ---- id do item doPlayerSendTextMessage(cid,22,"Nossa Este Artefato é Muito Poderoso!!!") -- mensagem quando ele for usado doTeleportThing(cid,config.pos) doSendMagicEffect(getCreaturePosition(cid), 10) doSendMagicEffect(frompos,6) end return 1 end
-
Kurwanuss deu reputação a Spectrus em [Download] [Website] Spectral vBeta1 - WebSite informativo para OTs de Account ManagerWebSite
Spectral vBeta1
Opaa, e ai TKzeross!! Então... Sempre fui muito interessado em aprender a utilizar o Fireworks, mas só ontem eu tomei coragem e baixei, assisti umas vídeo aulas e montei um site informativo que pudesse colocar online para qualquer OT que use Account Manager. Não é muito bonito e nem contem scripts avançadas, eu fiz mais para aprender mesmo, nele fiz o design do site, coloquei uma barra de menu com botões de opções necessárias e coloquei um iframe para não ficar atualizando a página toda vez, assim o site fica mais leve e pratico.
Confiram ele hospedado em um host pago: www.spectral-beta1.com sqn' (Esse host free tem limite de páginas, não irão poder acessar todas.)
Caso a hospedagem fique ruim, confira nas ScreenShots:
Editar o Site:
Vocês podem editar tudo nele, pois estarei postando o arquivo.fw.png para quem tem Firework e partes do site em arquivo.psd para mudar o nome no banner ou nome do OT perto dos créditos e para quem não tem nenhum dos dois, também tem as imagens em branco para serem editadas no Paint.
Em breve faço um tutorial de como colocar ele em uma hospedagem gratuita, editar todo ele,
criar forum no forumeiros e também o "Xat".
Compatibilidade com OTs:
Todos OTs, Alissow, Baiak, GlobalRL, NaruTibia, PokeTibia, WoDBO e outros... (Qualquer OT com Account Manager)
Obs: Depois irei mudar a estrutura do site para que possam mudar o fundo com mais praticidade sem utilizar o Firework, servirá mais para NaruTibia, PokeTibia etc..
Download:
4Shared
Scan:
Vírus Total
Aceito sugestões para melhorar o site.
Créditos:
Spectrus
-
Kurwanuss deu reputação a Alidev em (Resolvido)Bug no remere's map editorkkkkkkkk
Qual a versão do seu server?
Copie os itens.xml e o itens.otb da pasta do seu servidor e procure a pasta do remeres
Geralmente é:
C:\Program Files (x86)\Remere's Map Editor\data
Depois procure a versão do mapa, e troque os itens.xml e o itens.otb e depois abra o mapa recoloque no lugar o que você quiser e reinicie
-
Kurwanuss deu reputação a GiovaniRodrigo em [PEDIDO~~Scripts~~] Baú que da level.Action do item
Crie um arquivo chamado itemexp.lua na pasta data/actions/scripts/other e cole isso
local expReward = 100000 function onUse(cid, item, frompos, item2, topos) if item.actionid == 4056 then doRemoveItem(item.uid, 1) doPlayerAddExp(cid, expReward) doPlayerSendTextMessage(cid, 22, 'You just won '.. expReward ..' experience.') end return TRUE end
Adicione no arquivo actions.xml que esta na pasta data/actions a seguinte linha
<action actionid="4056" event="script" value="other/itemexp.lua"/>
Action do baú
Crie um arquivo chamado questexp.lua na pasta data/actions/scripts/quests e cole isso
local count = 1 function onUse(cid, item, frompos, item2, topos) if item.uid == 42726 then queststatus = getPlayerStorageValue(cid, 43502) if queststatus == -1 or queststatus == 0 then if getPlayerLevel(cid) >= 10 then local item = doPlayerAddItem(cid, 7726, count) doSetItemActionId(item, 4056) setPlayerStorageValue(cid, 43502, 1) doPlayerSendTextMessage(cid, 22, 'You just won '.. count ..' '.. getItemNameById(7726) ..'.') else doPlayerSendTextMessage(cid, 22, 'You don\'t have enough level.') end else doPlayerSendTextMessage(cid, 22, 'It\'s empty.') end end return TRUE end
Adicione no arquivo actions.xml que esta na pasta data/actions a seguinte linha
<action uniqueid="42726" script="quests/questexp.lua" />
Testado e está 100% funcional
Dúvidas? Me avise.
Att.
Giovani Rodrigo
-
Kurwanuss deu reputação a waterson em Tibia Farm {A Medieval MMORPG}Bom Dia,
Introdução;
Olá, a todos, estou aqui para falar de um projeto que vem sido desenvolvido a muito tempo, desde quando estava começando com scripts resolvi ter a ideia de fazer um projeto virar realidade, hoje, é fácil conhecer alguem que já jogou ou pelo menos conhece Harvest Moon, então, este servidor foi baseado em Harvest Moon para ser um Harvest Moon Online, porém com tantas vira-voltas, este servidor acabou passando um pouco do Titulo de Harvest Moon, e caminhou em um direção favorável, se tornou um server um pouco mais realista e medieval! E agora creio que posso chama-lo de Tibia Modificado!
Sistemas;
Plantação;
O sistema de plantação consiste em deixar o jogador ter seu próprio agronegócio virtual, o sistema consiste em vários aspectos, inclusive chuva!
As plantas terão level, quantidade de água nelas, vida, rank, entre outras caracteristicas, quanto maior o level de uma planta menos tempo irá demorar para nascer frutos denovo, e mais frutos virão, assim como o rank! A quantidade de água delas caso chegue ao fim, vai começar a retirar da vida dela, e assim logo logo irá morrer, existirá plantas que demorarão 2 dias para morrer, outros em menos de 12 horas, e isso irá variar com o level tbm, quanto maior o level menor a quantidade maxima de agua que elas aguentam segurar ou seja, morte em menos tempo, mas não adianta apenas dizer afinal uma imagem vale mais do que mil palavras, eis ai a print!
Construção;
Este sistema ainda não teve nenhum RMK, portanto irei postar uma foto bem antiga de uma casa construida com o sistema, não tem muito oque dizer, apenas que as casas serão apenas enfeites para os terrenos, e poderão ser equipadas com equipamentos que ajudarão o jogador, como por exemplo bigorna(necessaria para forjar items), utensilios para cozinha, e oque pretendo fazer tbm é logo logo adicionar um sistema de empregados e que precisará de casas com vários quartos!
Mineração;
Sistema que irá servir para obter itens como joias e metais, necessários para forjar itens como armas, armaduras, e até mesmo utensílios como pá, picareta, e até mesmo pregos para ser usado no sistema de construção!
PRINT
Forja;
Sistema de forja consiste em forjar itens como armas, utensílios e até mesmo itens para ser usados em outros sistemas (prego,panela,etc)
Animais(pets);
O jogadores poderão ter "bichinhos de estimação", sendo estes Vaca, Cavalo, Ovelha, Porco, Patos, e muito mais!
Não muito oque dizer afinal o sistema é auto explicativo! O animais terão Level, Nome, e atributos, como por exemplo speed entre outros estes atributos são dados dependendo do animal e aumentados dependendo do level!
Como Obter!
Cercadinho, local onde você poderá deixar seus animais!
Agora eles podem ficar andando livremente pelo terreno, não se esqueça, caso eles saiam dos terrenos eles irão desaparecer em segundos!
Vocações;
Todas as vocações são bem balanceadas para ter um PVP adequado, e um característica que acredito ser única, deste servidor é que as vocações todas tem as arvores de talento, estilo MMORPG;
Luz
Para relembrar as antigas versões do tibia onde você descia em uma caverna e se não tivesse uma tocha, não conseguia ver absolutamente nada! Pensando nisso porém não aproveitar 100% da interface do novo client com gráficos aperfeiçoados e travar a Ambient Light em no maximo 5%, e é isso mesmo que fizemos, veja só!
Shop System
O sistema de shop é um sistema onde o jogador poderá fazer o seu comércio, ainda estão na versão de testes do sistema e logo logo apresentará novas Features
O Shop!
Informações do NPC contratado!
Informações da loja
A Lista do que foi comprado no seu shop
Atributos do NPC;
Atributos!
* Business = Responsável pelo n° de items que pode ser colocado a venda!
* Charisma = Responsável pela taxa paga pelos items (Inicialmente a 10%) ou seja o jogador venderá o item por 100 e somente receberá 90; quanto maior a atributo charisma menor a taxa (Os valores exatos ainda não foram definidos)
* Deal = Este atributo ele garante uma chance de vir um item raro durante a transação que poderá ser dado tanto para o comprador quanto para o vendedor, ou seja, a pessoa poderá receber um item como por exemplo lottery ticket entre outros! (A chance é bem pequena e aumenta conforme o skill DEAL) (Os items irão para o depot tanto do comprador quanto do vendedor)
* Economic = Este skill irá diminuir o salário do NPC, ou seja supondo que o salário dele seja 500 dollars e se tiver este atribute irá reduzir em 10% o salário será reduzido para 450 dollars, e quanto maior o atribute maior a porcentagem reduzida!
* Lucky = Este atributo irá garantir uma chance de a venda não envolver taxas ou seja independente do valor atual da taxa, o vendedor receberá o valor completo!
O Level do NPC irá aumentar de acordo com o número de vendas daquele NPC, ou seja se um jogador comprar do NPC X o NPC X irá receber a experiencia! Se a pessoa tiver mais de 1 NPC irá randomizar quem receberá a experiencia (sujeito a mudanças[Não tenho certeza quanto a isso afinal dependendo do tamanho do terreno, o jogador poderá falar hi trade e o NPC que "ouvir" primeiro irá receber, lembrando que haverá 2° andar para as lojas!(A pessoa irá construir)])
A cada level o NPC receberá 1 ponto em atributos para você aumentar no que quiser!
Launcher;
Agora o client vem acompanhado com um Launcher que irá atualiza-lo automaticamente
Nada muito complicado de usar
Shop de animais;
Sistema de shop de animais
MAPA;
O mapa não é muito grande, mas ficará maior e maior com o passar das atualizações, a cada mês uma nova atualização e provavelmente uma nova Hunt, e logo logo novas ilhas! VENHA EXPLORAR
Gaian Tribute
Esta é uma "guilda", que propõe missões em grupos com o uso de salas mapas rank e muito mais, confira!
Mobs raros, bosses
Podendo aparecer em qualquer canto, eis alguns mobs encontrados ultimamente no servidor, será que existem mais?
Ai está agora uma pequena tabela para saber oque está pronto e oque falta!
Website, estou usando a versão comum do Gesior Acc Maker, e portanto quero poder arranjar alguem que possa fazer um site em melhores condições! O remake de alguns sistemas antigos, Woodcutting, Culinária(fazer poções e comida), entre outros, já existe um sistema, porém quero faze-los novamente de forma a deixa-los mais agradavel! A configuração das salas(3 a 8) do 1° mapa do GT; A configuração correta do sistema de forja com oque irá precisar para forjar, level e tudo mais para cada um dos itens! Faltam alguns NPCs no mapa, como os NPCs das primeiras quest e de alguns vendedores! Faltam fazer o sistema de algumas quests! Falta serem adicionados novos bosses ao server; Eventos semanais e mensais (SEM IDEIAS) Sistema de chuva(não é importante mas...) Ilha do tutorial Acertar os primeiros itens. Balancear a ultima vocação "Archer" Facilitar a informação no servidor, afinal muitos não saberão como fazer certas coisas e irão desistir de jogar por não saberem, então a criação de tutorias, e até mesmo videos é fundamental! Sistema de culinária Online! => Servidor já se encontra online para o publico! Sistema de venda de animais, doenças e de compra de animais; REFORMANDO
Dados:
Site: www.tibiafarm.com
O download do client está no site!
Latest News!
Pessoal, as atualizações se encontram pelo tópico, leiam todas as paginas que vocês irão encontrar inúmeros updates!
-
Kurwanuss deu reputação a waterson em Tibia Farm {A Medieval MMORPG}RMK do sistema de Animais está quase pronto! 80%
O Sistema em sí está pronto agora, só falta criar um sistema para alimentar os animais e talz to pensando em algo além de apenas usar a comida na vaca, algo do tipo que possa alimentar todas de uma vez só!
Prós do sistema pós-RMK!
* Agora os animais poderão morrer se não forem alimentados!
* Os animais agora poderão fugir do terreno, e se isso acontecer ele será excluído automaticamente!
* Os animais podem andar livremente pelo terreno invés de ficar preso em um cercadinho 3x2!
* É possivel para um jogador não vip ter até 10 animais no terreno e para jogadores vip até 25 animais!
Ideias novas para o sistema!
* Os 3 animais, porco(free), urso(vip), e leões(vip), como não servem para "nada", a ideia é deixar que eles se reproduzam, e forme outros semelhantes no terreno! ou podem criar no terreno itens como por exemplo dung (fezes) que poderá ser usado como adubo(que divide por 2 o tempo para qualquer evolução da planta)! -- AINDA ESTOU PENSANDO EM OUTRAS ALTERNATIVAS PARA ESTES ANIMAIS, SE TIVEREM ALGUMA IDEIA MANDA AE!
* A galinha irá deixar no terreno dung de péssima qualidade, que aumenta a velocidade em 10%, e deixará tbm ovos! -- ISSO ACONTECE AUTOMATICAMENTE A CADA X SEGUNDOS, E ELA TEM UMA CHANCE X DE ACONTECER
* Ainda tenho ideias como se tiver 2 animais um macho e uma femea, tem chance(bem pequena mesmo) de nascer um novo animal(se tiver slot para animais suficiente) -- GRANDE CHANCE DE EU FAZER
CHANGE-LOG para versão 0.4 (quando chegar a um o servidor será lançado!)
-
Kurwanuss recebeu reputação de Sadness em (Resolvido)Área PVPFaz Como Se Você Fosse Adicionar Essa Zona Mas Segure O CTRL.
-
Kurwanuss deu reputação a kaiquegabriel em Teleport Citizen pelo RMEBom, não é nada complicado configurar isso, pelo próprio map editor você pode fazer e funciona perfeitamente em todas as versões. Você vai precisar do Remeres Map Editor, caso não tenha, você pode achar a última versão aqui no nosso forum mesmo.
Vamos lá! Primeiramente, vá até o templo que deseja configurar o teleport, feito isso, aperte Ctrl + T ou segue a imagem;
Agora, vá na cidade que você quer configurar, para descobrir o ID dela;
Depois disso, vá até o teleport e adicione uma action com o número 3002IDDACIDADE que você descobriu. No meu caso, ficaria assim;
Agora dê OK e salve seu mapa, feito isso é só ir testar.
Caso você tenha experiência com comandos de GOD ingame, abra o mapa editor apenas para checar o ID da cidade, depois de /attr action 3002ID de frente pro teleport que também funciona.
Espero que tenham entendido, qualquer dúvida é só perguntar.
Atenciosamente
-
Kurwanuss deu reputação a MaXwEllDeN em [Aula 1] IntroduçãoIntrodução
Aula 1
O que é scripting?
Do modo mais simples possível: scripting é o ato de programar. O nome scripting vem do nome "script".
O que é um script?
De um modo geral, um script é um bloco de código escrito em uma linguagem de programação interpretada, ou seja, ele precisa que alguma coisa leia ele e possa "traduzir" seu conteúdo. Lembre-se de que "script" não é um termo específico de Open Tibia Servers.
O que é uma linguagem de programação interpretada?
Os brasileiros falam português, ingleses falam inglês e chineses falam mandarim, e com isso o mundo é composto por várias línguas.
No mundo da programação não é diferente. Existem várias línguas que podem ser usadas, cada uma com uma característica e modo de escrever diferente (Assim como o português é diferente do inglês).
Entre estas linguagens, existem 2 tipos: as linguagens interpretadas e as linguagens compiladas (Não-interpretadas). Podemos fazer uma comparação tosca com a vida real: o português seria uma linguagem interpretada (Nosso cérebro precisa "traduzir" a mensagem), e os desenhos seriam a língua compilada (Nosso cérebro reconhece automaticamente a "mensagem" do desenho).
As linguagens compiladas são aquelas que não precisam ser lidas por nenhum programa, pois "conversam" diretamente com o computador, enquando a linguagem interpretada não consegue se comunicar com o computador, então a linguagem compilada recebe a mensagem do codigo interpretado e traduz numa linguagem que o computador entenda, dai a linguagem interpretada pode conversar com o computador (Desde que alguém traduza suas mensagens).
Voltando para a parte de Open Tibia Servers, a linguagem compilada é a linguagem usada no seu servidor: o .exe no Windows, por exemplo, e a linguagem interpretada são os scripts .lua. O seu servidor compilado vai ler os scripts .lua e traduzir o conteúdo deles para que o computador possa executar o que o script manda.
Se os scripts são escritos em linguagens interpretadas, qual é a linguagem dos script usados nos Open Tibia Servers?
Os Open Tibia Servers usam uma linguagem de programação (Interpretada) chamada Lua, que foi feita aqui no Brasil mesmo.
Características da linguagem de programação Lua:
Linguagem de Programação Interpretada Linguagem de Programação Imperativa ou Programação Procedural Linguagem de Scripts ou Linguagem de Extensão Pequena, Fácil, Leve e Eficiente " Lua foi criada por um time de desenvolvedores do Tecgraf da PUC-Rio, a princípio, para ser usada em um projeto da Petrobras. Devido à sua eficiência, clareza e facilidade de aprendizado, passou a ser usada em diversos ramos da programação, como no desenvolvimento de jogos (a LucasArts, por exemplo, usou a linguagem no jogo Escape from Monkey Island), controle de robôs, processamento de texto, etc. Também é freqüentemente usada como uma linguagem de propósito geral. "
Wikipédia - Lua (Linguagem de Programação)
O que eu preciso para aprender Lua e começar a produzir meus scripts?
Paciência (Embora seja de fácil aprendizado, você vai levar algum tempo para aprender a linguagem)
Humildade (Nunca se sinta o melhor, nem ridicularize aqueles que tiverem um conhecimento menor que o seu)
Vontade (Não adianta fazer as coisas sem o menor interesse, você não chegará a lugar nenhum sem vontade)
Criatividade (O principal para produzir um script é ter a idéia do que você vai fazer)
Conhecer a Lógica da Programação (Não se preocupe, eu vou ensinar a Lógica da Programação nas próximas aulas.)
Interpretador Lua (Para testar seus scripts, claro. Você pode usar o seu OTServer para testar, e ainda usar um interpretador Lua para testar seus scripts simples fora do OTServer)
Editor Lua (Não é realmente necessário, uma vez que você pode usar um editor de textos qualquer, como o bloco de notas, mas ter um Editor Lua vai ajudar muito, e alguns até vêm com um Interpretador Lua junto!)
Pagar uma taxa de R$ 700,00, afinal, não estou escrevendo estas aulas de graça! (OK, não precisa pagar nada, mas no mínimo poste seus scripts aqui e ajude a seção a crescer ) Onde posso encontrar um Interpretador e/ou Editor Lua?
Como interpretador (No caso de produzir scripts para Open Tibia Servers) você deve usar um servidor próprio, pessoal somente para testar os scripts que você fez, e pode usar também um Interpretador Lua geral, para testar seus scripts fora dos OTServers.
Como Editor Lua você pode usar qualquer editor de textos, mas eu recomendo usar um editor que seja próprio para a linguagem Lua. Existem dois editores que já vem com um Interpretador Lua "embutido". São eles: OTScript Live! [Download] e SciTE (Scintilla) [Download].
Exercício-Tarefa:
Pesquise mais na internet sobre a linguagem Lua, Scripts, etc...
Somente dúvidas serão aceitas aqui! Comentários que não forem dúvidas serão apagados e os autores serão reportados!
Essa aula foi escrita por uma raposa levada Skyen Hasus, todos os créditos são dele.
Aula 2 - Lógica da programação >> Script Live By colex.rar
-
Kurwanuss deu reputação a bielzinhocrazy em Heal aura systemOlá pessoal do TibiaKing,
Hoje venho trazer um script sistema de auras, que explicado superficialmente, é uma bolha de luz que te rodeia constantemente (é possível mudar o efeito visual da aura, como você poderá conferir no script), e possui uma chance pré-determinada pela pessoa, em porcentagem, de curar a cada volta que dá no player. Para ligar a aura digite !aura on, e para desligar !aura off. Vocês podem conferir como funciona assistindo o vídeo a seguir :
Bom, vamos aos códigos.
Primeiro, na pasta de seu OT, vá em data\talkactions\scripts, e crie um novo arquivo chamado aura.lua, e coloque isto nele (serão necessários dois storages) :
-- CONFIGURAÇÕES aurastr = 25950 -- storage da aura estr = 25951 -- storage para o exhaust porcentagem = 40 -- chance de curar em cada volta da aura, em porcentagem quantheal = 10 -- porcentagem do hp máximo que cada cura irá curar. (No caso, irá curar 10% do hp máximo cada cura) tempo = 1180 -- tempo para dar uma volta no player (este tempo foi o que achei mais agradável visualmente, é recomendável não mudar) tipoaura = 30 -- número do efeito da aura (efeito de distância, pode ser identificado com /x no jogo) efeitocura = 49 -- número do efeito quando a cura chega ao player (efeito de posição fixa, pode ser identificado com /z no jogo) -- Função que chama a aura function efeitosAura(i,tm,cid) if(isCreature(cid)) then local atual = getCreaturePosition(cid) local posaura = { {x=(atual.x)-1, y=(atual.y)-1, z=atual.z}, {x=atual.x, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=atual.y, z=atual.z}, {x=(atual.x)+1, y=(atual.y)+1, z=atual.z}, {x=atual.x, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=atual.y, z=atual.z}, } local chances = math.random(100) if(chances<=porcentagem/8 and getCreatureHealth(cid)<getCreatureMaxHealth(cid)) then doCreatureAddHealth(cid, getCreatureMaxHealth(cid)/quantheal) if(i<=8 and i>1) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, atual, tipoaura) else doSendDistanceShoot({x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, atual, tipoaura) end doSendMagicEffect(atual, efeitocura) end if(i==8) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, tipoaura) elseif(i<8) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[i+1].x, y=posaura[i+1].y, z=posaura[i+1].z}, tipoaura) end if(i<=8 and getPlayerStorageValue(cid, aurastr)==2) then i = i+1 tm = tempo/8 return addEvent(efeitosAura,tm,i,tm,cid) elseif(i>8 and getPlayerStorageValue(cid, aurastr)==2) then return efeitosAura(1,0,cid) else return TRUE end else return TRUE end end -- Função principal function onSay(cid, words, param, channel) if(param=="on") then if getPlayerStorageValue(cid, estr) > os.time() then doPlayerSendCancel(cid, "Espere "..(getPlayerStorageValue(cid, estr) - os.time()).." segundos para poder habilitar aura novamente.") else if(getPlayerStorageValue(cid, aurastr)==2) then doPlayerSendCancel(cid,"Sua aura já está habilitada.") elseif(getPlayerStorageValue(cid, aurastr)==-1) then doPlayerSendCancel(cid,"Aura ligada!") setPlayerStorageValue(cid, aurastr, 2) efeitosAura(1,tempo/8,cid) end end elseif(param=="off") then if(getPlayerStorageValue(cid, aurastr)==2) then setPlayerStorageValue(cid, estr, os.time()+2) setPlayerStorageValue(cid, aurastr, -1) doPlayerSendCancel(cid,"Aura desligada!") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Digite '!aura on' para ligar sua aura, e '!aura off' para desligá-la.") end return TRUE end As configurações estão comentadas, portanto é só modificar de acordo com as suas preferências.
Agora, em data\talkactions, abra o arquivos talkactions.xml, e cole isto dentro dele :
<talkaction words="!aura" event="script" value="aura.lua"/> Após feito isso, para evitar erros ao player logar, será necessário criar um script que mudará o storage da aura toda vez que o player se logar novamente, para isso, vá em data\creaturescripts\scripts e crie um arquivo chamado auralogin.lua, e cole isto :
function onLogin(cid) aurastr = 25950 -- storage da aura setPlayerStorageValue(cid, aurastr, -1) return TRUE end Após isto, vá em data\creaturescripts e abra o arquivo creaturescripts.xml, e cole o seguinte código nele :
<event type="login" name="AuraLogin" script="auralogin.lua"/> E pronto! Agora é só desfrutar do sistema.
OBS : Se você der /reload talkactions no OT em execução, com algum player estando com aura em execução, elas serão interrompidas e será necessário usar !aura off, e !aura on, para reabilitá-las. Portanto cuidado!
Créditos : Eu mesmo(Fakezim/BielzinhoCrazy/GMLeal, tanto faz o nick rererere) Obrigado pessoal!
-
Kurwanuss deu reputação a bielzinhocrazy em Sistema de aprimoramento da movimentaçãoOlá pessoal,
Hoje venho trazer pra vocês um sisteminha que acabei de criar, para auxiliar a movimentação de nossos players, fazendo com que além de spells de velocidade, também tenham um recurso a mais. Funciona da seguinte maneira : para os personagens melee (paladin e knight), há um grande impulso em que eles correm super rápido até o próximo obstáculo (monstros, paredes, etc) ou até a quantidade limite de posições para se avançar do talkaction, soltando efeitos de fogo pelos pés. É possível controlar sua direção de corrida pressionando ctrl+direção. Já os personagens mágicos, druid e sorcerer, canalizarão um poder de luz e após isso, se teleportarão, em linha reta, até o próximo obstáculo, ou até a quantidade de posições limite. Não é possível utilizar continuamente, porque senão seria bastante apelativo, então coloquei uma quantidade de exhaust, no meu caso, 10 segundos, porém você pode modificar no script. Para vocês terem ideia de como funciona, fiz um vídeo (com resolução ruim a propósito, peço perdão), que está logo à seguir :
Bom, cada uma das categorias(melee, magic) tem sua vantagem, e sua desvantagem.
Melee :
-Vantagem : é possível controlar as direcionais com ctrl.
-Desvantagem : pode ser atingido durante a movimentação.
Magic :
-Vantagem : aparece instantaneamente na posição destino, após a focalização de energia.
-Desvantagem : não pode desviar de obstáculos.
Para usar, apenas digite !move.
Agora, vou mostrar-lhes os códigos e como devem ser colocados e configurados.
Em data\talkactions\scripts, crie um novo arquivo chamado move.lua, e cole o seguinte código :
local exhauststorage = 20209 -- storage para o exhaust local exhaust = 10 -- tempo do exhaust em segundos local quantpos = 30 -- posições x ou y que o personagem irá avançar, por exemplo, aqui irá se mover 30 posições pra direção em que estiver local voc = { --dependendo da vocação, a movimentação será diferente {3,4,7,8,11,12}, -- vocações melee, que no caso são knight e paladin {1,2,5,6,9,10}, -- vocações mágicas, que são sorc e druid } --Função da movimentação para paladin e knight function moveMelee(cid, t) if(isCreature(cid)) then local tmp = getPlayerLookPos(cid) if(not isCreature(getThingFromPos(tmp).uid) and doTileQueryAdd(cid, tmp)==1 and t>0) then doCreatureSetNoMove(cid, 1) t = t-1 doSendMagicEffect(getCreaturePos(cid), 15) doMoveCreature(cid, getPlayerLookDir(cid)) return addEvent(moveMelee, 10, cid, t) else doCreatureSetNoMove(cid, 0) return TRUE end else return TRUE end end --Função da movimentação para sorcerer e druid function moveMagic(cid) if(isCreature(cid)) then local tmp = getCreaturePos(cid) local dir = getPlayerLookDir(cid) for i=1, quantpos do if(dir==0) then tmp = {x=tmp.x, y=tmp.y-1, z=tmp.z} elseif(dir==1) then tmp = {x=tmp.x+1, y=tmp.y, z=tmp.z} elseif(dir==2) then tmp = {x=tmp.x, y=tmp.y+1, z=tmp.z} elseif(dir==3) then tmp = {x=tmp.x-1, y=tmp.y, z=tmp.z} end if(doTileQueryAdd(cid, tmp)~=1) then if(dir==0) then tmp = {x=tmp.x, y=tmp.y+1, z=tmp.z} elseif(dir==1) then tmp = {x=tmp.x-1, y=tmp.y, z=tmp.z} elseif(dir==2) then tmp = {x=tmp.x, y=tmp.y-1, z=tmp.z} elseif(dir==3) then tmp = {x=tmp.x+1, y=tmp.y, z=tmp.z} end break end end doTeleportThing(cid, tmp) doSendMagicEffect(getCreaturePos(cid), 49) doSendAnimatedText(getCreaturePos(cid), "Tchum!", 144) doCreatureSetNoMove(cid, 0) return TRUE else return TRUE end end --Efeitos para a movimentação de sorc e druid function magicEffect(cid, i) if(isCreature(cid)) then local atual = getCreaturePosition(cid) local posefeitos = { {x=(atual.x)-1, y=(atual.y)-1, z=atual.z}, {x=atual.x, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=atual.y, z=atual.z}, {x=(atual.x)+1, y=(atual.y)+1, z=atual.z}, {x=atual.x, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=atual.y, z=atual.z}, } if(i<=8) then doSendMagicEffect({x=posefeitos[i].x, y=posefeitos[i].y, z=posefeitos[i].z}, 39) end if(i>8) then doSendMagicEffect(atual, 49) doSendAnimatedText(atual, "Voosh", 144) return moveMagic(cid) end return addEvent(magicEffect, 50, cid, i+1) else return TRUE end end --Função principal function onSay(cid, words, param) if(getPlayerStorageValue(cid, exhauststorage)>os.time()) then doPlayerSendCancel(cid, "Voce deve esperar "..(getPlayerStorageValue(cid, exhauststorage)-os.time()).." segundos para usar a movimentação novamente.") return TRUE else setPlayerStorageValue(cid, exhauststorage, os.time()+exhaust) local v = getPlayerVocation(cid) for i=1, #voc[1] do if(v==voc[1][i]) then return moveMelee(cid, quantpos),doCreatureSay(cid, "Movimentação ultra rápida!", 1) end end return magicEffect(cid, 1),doCreatureSay(cid, "Teleport!", 1),doCreatureSetNoMove(cid, 1) end end Agora vá em data\talkactions\talkactions.xml, e adicione uma nova linha com o seguinte conteúdo :
<talkaction words="!move" event="script" value="move.lua"/> O código está comentado, então agora é só configurar e usar de acordo com as suas preferências!
OBS : Fica a seu critério colocar se apenas vip podem utilizar esse sistema, se será necessário mp, ou soul, ou hp, ou qualquer coisa que precise. Tudo isso pode ser incrementado na função principal (onSay).
Créditos : eu mesmo (GMLeal/ BielzinhoCrazy/ Fakezim) tanto faz Bom, é isso aí pessoal, bom proveito, e obrigado!