Pesquisar na Comunidade
Mostrando resultados para as tags ''spells''.
Encontrado 93 registros
-
local function kb1(cid) setPlayerStorageValue(cid,555010,0) end function onCastSpell(cid, var) local waittime = 60 -- Tempo de exhaustion local storage = 3030707 local Tile1 = {x = 1226, y = 1134, z = 8} -- onde o player sera teleportado local Tile2 = {x = 1226, y = 1133, z = 8} -- onde o player target teleportado local from1,to1 = {x=967, y=1018, z=7},{x=984, y=1048, z=7} -- KONOHA TRAINER local from2,to2 = {x=967, y=1030, z=6},{x=984, y=1048, z=6} -- KONOHA TRAINER local from3,to3 = {x=967, y=1030, z=5},{x=984, y=1048, z=5} -- KONOHA TRAINER local from4,to4 = {x=1148, y=735, z=7},{x=1163, y=755, z=7} -- YUKIGAKURE TRAINER local from5,to5 = {x=1148, y=735, z=6},{x=1163, y=755, z=6} -- YUKIGAKURE TRAINER local from6,to6 = {x=1148, y=735, z=5},{x=1163, y=755, z=5} -- YUKIGAKURE TRAINER local from7,to7 = {x=424, y=802, z=8},{x=438, y=826, z=8} -- SUNA TRAINER local from8,to8 = {x=424, y=802, z=9},{x=438, y=826, z=9} -- SUNA TRAINER local from9,to9 = {x=424, y=802, z=10},{x=438, y=826, z=10} -- SUNA TRAINER local from10,to10 = {x=1290, y=482, z=7},{x=1309, y=491, z=7} -- VILA TAKUMI TRAINER local from11,to11 = {x=1290, y=482, z=6},{x=1309, y=491, z=6} -- VILA TAKUMI TRAINER local from12,to12 = {x=1290, y=482, z=5},{x=1309, y=491, z=5} -- VILA TAKUMI TRAINER local from13,to13 = {x=1862, y=185, z=7},{x=2045, y=1123, z=7} -- CASTELO WAR local from14,to14 = {x=1862, y=185, z=6},{x=2045, y=1123, z=6} -- CASTELO WAR local from15,to15 = {x=1862, y=185, z=5},{x=2045, y=1123, z=5} -- CASTELO WAR local from16,to16 = {x=1955, y=244, z=10},{x=1968, y=278, z=10} -- CASTELO XP BONUS local from17,to17 = {x = 953, y = 1018, z = 7},{x = 984, y = 1042, z = 7 } -- AREA DE INVASAO local from18,to18 = {x = 762, y = 170, z = 12},{x = 1241, y = 439, z = 12} -- KAMUI local from19,to19 = {x = 762, y = 170, z = 12},{x = 1241, y = 439, z = 11} -- KAMUI local master = getCreatureMaster(cid) local pos = getCreaturePosition(cid) local target = getCreatureTarget(cid) local targetpos = getCreaturePosition(target) local time = 10 -- tempo para voltar em segundos local exceptions = {'Crystal Vilarejo', 'aegis', 'god anderson'} if exhaustion.check(cid, storage) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.") return false end if isInRange(pos, from1, to1) or isInRange(pos, from2, to2) or isInRange(pos, from3, to3) or isInRange(pos, from4, to4) or isInRange(pos, from5, to5) or isInRange(pos, from6, to6) or isInRange(pos, from7, to7) or isInRange(pos, from8, to8) or isInRange(pos, from9, to9) or isInRange(pos, from10, to10) or isInRange(pos, from11, to11) or isInRange(pos, from12, to12) or isInRange(pos, from13, to13) or isInRange(pos, from14, to14) or isInRange(pos, from15, to15) or isInRange(pos, from16, to16) or isInRange(pos, from17, to17) or isInRange(pos, from18, to18) or isInRange(pos, from19, to19) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Voce nao pode usar o Mundo aqui!") return TRUE end local function Teleport_Playerout(cid) doTeleportThing(cid, pos) end local function Teleport_Targetout(target) doTeleportThing(target, targetpos) end local function Teleport_Targetin(target) doTeleportThing(target, Tile2) end setPlayerStorageValue (cid, 555010, 1) if isPlayer(target) then exhaustion.set(cid, storage, waittime) doSendMagicEffect(targetpos, 10) addEvent(Teleport_Targetout, time*1000, target) addEvent(Teleport_Targetin, 0, target) doCreatureSay(cid, "Taimu rain Sharingan", TALKTYPE_MONSTER) if getPlayerStorageValue(cid, 555010) > 0 then for j = 1, 1 do addEvent(function() if isCreature(cid) then kb1(cid) end end, 10000 + ((j-1) * 1)) end end else doPlayerSendCancel(cid, "Voce so pode usar esta magia em players!") end end
-
Fala galera, tudo certo com vocês? Estou tentando implementar um sistema que a princípio parece simples (e deve ser mesmo), mas que está me tirando o sono hahaha A ideia é a do título mesmo, ao matar um monstro o player tem a chance de aprender uma determinada spell. Dei uma pesquisada, criei um script, entretanto ele não funciona (e não da erro no log do servidor) Alguém poderia me dar um help? Provavelmente devo estar escrevendo o código errado, faz tempo que não sei o que é programação :v Desde já obrigado!
-
Olá, estou usando como base o server PokeNumb. Minha dúvida é: os cooldowns das spells dos pokemons estão diminuindo enquanto os pokemons estão dentro das balls. Gostaria que diminuísse somente quando o pokemons está pra fora. Alguém sabe onde posso mudar isso?
-
[21/04/2023 17:21:09] [Error - Spell Interface] [21/04/2023 17:21:09] data/spells/scripts/ps/Multi-Punch.lua:onCastSpell [21/04/2023 17:21:09] Description: [21/04/2023 17:21:09] (luaGetPlayerSlotItem) Player not found [21/04/2023 17:21:14] [Error - Spell Interface] [21/04/2023 17:21:14] data/spells/scripts/ps/Multi-Punch.lua:onCastSpell [21/04/2023 17:21:14] Description: [21/04/2023 17:21:14] (luaGetPlayerSlotItem) Player not found pokemon moves.lua
-
local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 136) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 141) function tsubi(cid, level, maglevel) local min = -(level * 2.0+ maglevel * 4 +50) local max = -(level * 2.0+ maglevel * 4.5 +50) return min, max end setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "tsubi") local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 136) setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, 141) function tsubi1(cid, level, maglevel) local min = -(level * 2.0+ maglevel * 4 +50) local max = -(level * 2.0+ maglevel * 4.5 +50) return min, max end setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "tsubi1") local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 136) setCombatParam(combat3, COMBAT_PARAM_DISTANCEEFFECT, 141) function tsubi1(cid, level, maglevel) local min = -(level * 2.0+ maglevel * 4 +50) local max = -(level * 2.0+ maglevel * 4.5 +50) return min, max end setCombatCallback(combat3, CALLBACK_PARAM_LEVELMAGICVALUE, "tsubi1") local combat4 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 136) setCombatParam(combat3, COMBAT_PARAM_DISTANCEEFFECT, 141) function tsubi1(cid, level, maglevel) local min = -(level * 2.0+ maglevel * 4 +50) local max = -(level * 2.0+ maglevel * 4.5 +50) return min, max end setCombatCallback(combat3, CALLBACK_PARAM_LEVELMAGICVALUE, "tsubi1") local combat5 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 136) setCombatParam(combat3, COMBAT_PARAM_DISTANCEEFFECT, 141) function tsubi1(cid, level, maglevel) local min = -(level * 2.0+ maglevel * 4 +50) local max = -(level * 2.0+ maglevel * 4.5 +50) return min, max end setCombatCallback(combat3, CALLBACK_PARAM_LEVELMAGICVALUE, "tsubi1") local function onCastSpell1(parameters) doCombat(parameters.cid, parameters.combat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, parameters.combat2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, parameters.combat3, parameters.var) end local function onCastSpell4(parameters) doCombat(parameters.cid, parameters.combat4, parameters.var) end local function onCastSpell5(parameters) doCombat(parameters.cid, parameters.combat5, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5 } addEvent(onCastSpell1, 0, parameters) addEvent(onCastSpell2, 200, parameters) addEvent(onCastSpell3, 400, parameters) addEvent(onCastSpell3, 500, parameters) addEvent(onCastSpell3, 600, parameters) return true end Como os efeitos são desproporcionais no meu serve algumas sprtis saem erradas, gostaria de ter o controle da position delas!
-
Ta estranho, olha só o tamanho da área da magia, e quando o player usa, não aparece animação nenhuma, só da o dano sem a animação, OBS é uma magia de área tipo um exevo gran mas flam, porém a ideia dessa magia é um monte de assassin stars saírem do corpo do usuário e se espalharem pela área, para vcs terem uma noção exata do que quero que aconteça é spo pegar o God do server de vocês e escrever o comando /x 18 vcs notarão que sairá um monte de assassins dele, ESSA É A IDEIA DESSA MAGIA,mas isso não está acontecendo, alguém por favor pode me ajudar a desvendar esse mistério??? REP+ local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_REDSTAR) function onGetFormulaValues(cid, level, Skill, factor) damage_min = (Skill * 6 + level * 1.5) * 1 damage_max = (Skill * 6 + level * 1.5) * 1.2 return - math.max(damage_min, damage_max), - math.min(damage_min, damage_max) end combat_arr = { {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,}, } local combat_area = createCombatArea(combat_arr) setCombatArea(combat, combat_area) setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end Dica uma coisa que talvez funcione é criar um evento por fora que gere a animação, pois o dano já funciona certo, só a animação que não aparece, pessoal me ajudem se puder to precisando muito desse script REP+ l
-
Salve meus queridos, tudo bom? Hoje decidi trazer uma pequena alteração na source. Vi que muita galera tem problemas com o limite do caracter da função doShowTextDialog, pois se excender o limite maximo de caractere da debug no client. Isso ocorre principalmente pra galera do derivado que costuma utilizar !spells/!tecnicas/!jutsu para checar os ataques disponiveis que existe pra tal personagem. Se você é GOD, você consegue visualizar todas as spells do servidor , e se no servidor existir muitas, irá causar debug. Diferente do doPlayerPopupFYI, não há uma proteção de limite para TextDialog... Primeiramente, como que eu descobri? Seguinte, eu coloquei o máximo de spells possiveis, ou seja, o máximo de caracteres possiveis na caixinha de texto. Quando eu vi que começou dar debug no cliente, eu retirei alguns caracteres e fui testando. Até que consigui achar o valor máximo! Eu copiei tudo que estava na janela, e em um site online colei todo o conteúdo de lá para saber quantos caracteres existiam ali. E esse foi o resultado: 8192, descobrimos o máximo de caracteres no doShowTextDialog. Após descobrir este valor, eu procurei nas sources e achei! ENTÃO VAMOOOS LÁ! TFS OTX Prontinho! Simples, não? haha
-
Ola pessoal, estou precisando de um script de spell, já testei alguns e todos deram erro. Meu servidor é um baiak 10.90, tfs 1.0 Queria uma magia que funcionasse como stun (incapacitar) durante x segundos, e que o target incapacitado não consiga andar nem usar magias/runas. E se não for muito trabalho, uma variação da mesma spell, mas em área (na mesma área do exori). Edit: esqueci de dizer que tem que ter CD de 1 min Obrigado desde já!
-
Galera baixei a base do pokeRoxy aqui e os pokemon selvagem nao esta dando dano nas spells somento nos ataq basico alguem sabe resolver?
-
Sistema Jinchuuriki De Servidores de Naruto. Selar um dos monstros e ser seu jinchuuriki , usando a magia só quando o Monstro estiver com 20% ou menos de vida. A Magia tem a range de 1 sqm, ou seja, você tem que usar a magia colado no monstro e Apenas um jogador conseguira selar o Monstro e ser seu jinchuuriki. Após selar um dos monstros você será o jinchuuriki dela por 10 dias, caso selar um outro Monstro você perdera a anterior e ficara com a nova e o tempo será renovado! Em data/spells/script crie um arquivo chamado Jinchuuriki.lua local storagecool = 89758local storagemob = 89759local tempo = 10 * 24 * 60 * 60 -- 10 diaslocal mobs = { ["kurama"] = 1, ["hachibi"] = 2, ["demon"] = 3, -- sempre letra minuscula e o numero q ele representa}function onCastSpell(cid, var) local target = variantToNumber(var) if target and isMonster(target) then if getCreatureHealth(target) <= math.floor(0.2 * getCreatureMaxHealth(target)) then if getCreatureName(target) and mobs[getCreatureName(target):lower()] then doPlayerSetStorageValue(cid, storagecool, os.time() + tempo) doPlayerSetStorageValue(cid, storagemob, mobs[getCreatureName(target):lower()]) doSendMagicEffect(getPlayerPosition(cid), 13) -- efeito no player doSendMagicEffect(getPlayerPosition(target), 13) -- efeito no monstro doRemoveCreature(target) doPlayerSendCancel(cid, "Você selou a criatura!") else doPlayerSendCancel(cid, "Essa criatura nao pode ser selada.") end else doPlayerSendCancel(cid, "O monstro precisa ter menos de 20% de vida para ser selado.") end else doPlayerSendCancel(cid, "Spell somente pode ser usada em monstros.") endreturn trueend Em spells.xml <instant name="Selar Bijuu" words="Selar Bijuu" lvl="200" mana="20000" prem="1" range="1" needtarget="1" blockwalls="1" exhaustion="1000" needlearn="0" event="script" value="Jinchuuriki.lua"> <vocation id="1-10"/> </instant> Vantagens de ser um Jinchuuriki: Buff Especial que voce domina ela. data/spells/ Hachibi.lua local tempo = 60 -- tempo em segundoslocal effect = {134} -- effect no playerlocal exausted = 1 -- em minutoslocal points = 60 -- quantos ira aumentar os skillslocal outfit = {lookType = 350}-- outfit que ira darlocal combat = createCombatObject()setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)local condition = createConditionObject(CONDITION_ATTRIBUTES)setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, points)setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, points)setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, points)setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, points)setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, points)setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, points)setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, points)setCombatCondition(combat, condition)local condition = createConditionObject(CONDITION_OUTFIT)setConditionParam(condition, CONDITION_PARAM_TICKS, tempo*1000)addOutfitCondition(condition, outfit)setCombatCondition(combat, condition)function Magica(cid) if isCreature(cid) then for i=1, #effect do local position = {x=getCreaturePosition(cid).x, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z} doSendMagicEffect(position, effect) end endendfunction onCastSpell(cid, var) if getPlayerStorageValue(cid, 91546) ~= 2 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Voce nao eh um jinchuriki da Hachibi!") return false elseif getPlayerStorageValue(cid, 17456)-os.time() > 1 then local seetime = getPlayerStorageValue(cid, 17456)-os.time() local minutes, seconds = math.floor(seetime/60), math.floor(seetime%60) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde "..minutes.." minuto(s) e "..seconds.." segundo(s) para usar novamente!") return false end setPlayerStorageValue(cid, 17456, exausted*60+os.time()) doCombat(cid, combat, var) local tempo2 = 0 while (tempo2 <= (tempo*1000)) do addEvent(Magica, tempo2, cid) tempo2 = tempo2 + 300 end return trueend
-
Este script carrega Spells.xml quando solicitado pelo usuário no painel admin, e cria um arquivo php salvando todas as magias em arrays. Ele tem opções de classificação exatamente como a página do Tibia. Ele funciona com ambas as distribuições 0.2 e 0.3. Preview: Vamos ao tutorial: Configuração: engine/function/general.php Em ?> Adicione function build_spells($xml, $display_groups) { $t_count = 0; $rune = array(); $string = '<?php'."\n".'#Generated spells file from admin panel'."\n".'#Edit at your own risk!'; $string .= "\n".'$show_spells_groups = '.($display_groups ? 'true' : 'false').';'."\n".'$spells = array('; foreach($xml as $key => $value) { if($value['lvl']) { if($key == 'rune') { if($display_groups) { if($value['group'] == NULL) { echo '<span style="color:orange;font-weight:bold">WARNING: Group not found at spell "'.$value['name'].'", set to "Attack".</span><br>'; } $rune[(string)$value['name']] = ($value['group'] == NULL) ? 'Attack' : $value['group']; } continue; } $t_count++; $string .= "\n\t".'array('; if($display_groups) { $string .= "\n\t\t".'"group" => '; { if($value['function'] == 'conjureRune') { $string .= '\''.ucfirst($rune[(string)$value['name']]).'\''; } else { if($value['group'] == NULL) { echo '<span style="color:orange;font-weight:bold">WARNING: Group not found at spell "'.$value['name'].'", set to "Attack".</span><br>'; } $string .= '\''.ucfirst(($value['group'] == NULL) ? 'Attack' : $value['group']).'\''; } } $string .= ','; } $string .= "\n\t\t".'"type" => '; if(config('TFSVersion') == 'TFS_02') { $string .= (($value['function'] == 'conjureRune') ? '\'Rune\'' : '\'Instant\''); } if(config('TFSVersion') == 'TFS_03') { $string .= (($value['value'] == 'conjureRune') ? '\'Rune\'' : '\'Instant\''); } $string .= ','; $string .= "\n\t\t".'"name" => "'.$value['name'].'",'; $string .= "\n\t\t".'"words" => \''.$value['words'].'\','; $string .= "\n\t\t".'"level" => '.$value['lvl'].','; $string .= "\n\t\t".'"mana" => '; $string .= (($value['mana'] == NULL) or ($value['mana'] == '')) ? '\'Var.\'' : $value['mana']; $string .= ','; $string .= "\n\t\t".'"premium" => '; if($value['prem']) { $string .= ($value['prem'] == 1) ? '\'yes\'' : '\'no\''; } else { $string .= '\'no\''; } $string .= ','; $vocs = array(); $string .= "\n\t\t".'"vocation" => array('; foreach($value->vocation as $vocation) { if(config('TFSVersion') == 'TFS_02') { $vocs[] = '\''.$vocation[0]['name'].'\''; } elseif(config('TFSVersion') == 'TFS_03') { if(strpos($vocation[0]['id'], ';') !== FALSE) { $array = explode(';', $vocation[0]['id']); foreach($array as $voc) { $vocs[] = '\''.vocation_id_to_name($voc).'\''; } } else { $vocs[] = '\''.vocation_id_to_name((int)$vocation[0]['id']).'\''; } } } if(count($vocs) < 1) foreach(config('vocations') as $id => $name) if($id > 0) $vocs[] = '\''.$name.'\''; $string .= implode(', ',$vocs).')'."\n\t".'),'; } } $string .= "\n".'); ?>'; echo('Loaded '. $t_count .' spells!<br>'); echo 'File "spell.php" '.(file_exists('spell.php') ? 'updated' : 'created').'!<br>'; $file = fopen('spell.php', 'w'); fwrite($file, $string); fclose($file); } admin.php Antes </ul> <?php include 'layout/overall/footer.php'; ?> Adicione <li> <b>Update spells from file:</b><br> <?php if (!isset($_POST['action'])) { $_POST['action'] = 'undefine'; } if ($_POST['action'] == 'upload') { $xml = $_FILES['file']; $_POST['action'] = 'undefine'; if($xml['tmp_name']) { if($xml['name'] == 'spells.xml') { $groups = (isset($_POST['show_groups']) && $_POST['show_groups'] == 'yes') ? true : false; echo 'Successfully fetched spells.xml!<br>'; echo 'Using temporal file: '. $_FILES['file']['tmp_name'] .'<br>'; build_spells(simplexml_load_file($xml['tmp_name']), $groups); } else { echo '<span style="color:red;font-weight:bold">ERROR: File "spells.xml" not found.</span>'; } } else { echo '<span style="color:red;font-weight:bold">ERROR: Upload failed.</span>'; } } ?> <form enctype='multipart/form-data' method='POST'> <input type='checkbox' name='show_groups' value='yes'> Show spells groups (Only for TFS 0.2.9+)<br> <input type='hidden' name='action' value='upload' /> <input type='file' name='file' /> <input type='submit' value='Submit' /> </form> </li> Crie o arquivo Spell.php e adicione dentro: <?php require_once 'engine/init.php'; include 'layout/overall/header.php'; echo '<h1>Spells</h1>'; if(file_exists('spell.php')) { require_once 'spell.php'; ?> <table> <tr class="yellow"> <td><b>Name</b></td> <?php if($show_spells_groups) echo '<td><b>Group</b></td>'; ?> <td><b>Type</b></td> <td><b>Exp Lvl</b></td> <td><b>Mana</b></td> <td><b>Premium</b></td> </span> </tr> <?php @$sort = $_REQUEST['sort']; if(!isset($sort)) $sort = 'name'; @$vocation = $_REQUEST['vocation']; if(!isset($vocation)) $vocation = 'vall'; if($show_spells_groups) { @$group = $_REQUEST['_group']; if(!isset($group)) $group = 'gall'; } @$type = $_REQUEST['_type']; if(!isset($type)) $type = 'tall'; @$premium = $_REQUEST['_premium']; if(!isset($premium)) $premium = 'pall'; $order = array(); foreach($spells as $key => $row) { $order[$key] = $row[$sort]; } array_multisort($order, SORT_ASC, $spells); foreach($spells as $spell) { if($vocation != 'vall') { if(!in_array($vocation, $spell['vocation'])) continue; } if($show_spells_groups && $group != 'gall') { if($spell['group'] != $group) continue; } if($type != 'tall') { if($spell['type'] != $type) continue; } if($premium != 'pall') { if($spell['premium'] != $premium) continue; } ?> <tr> <td><?php echo '<b>'.$spell['name'].'</b> ('.$spell['words'].')'; ?></td> <?php if($show_spells_groups) echo '<td>'.$spell['group'].'</td>'; ?> <td><?php echo $spell['type']; ?></td> <td><?php echo $spell['level']; ?></td> <td><?php echo $spell['mana']; ?></td> <td><?php echo $spell['premium']; ?></td> </tr> <?php } echo '</table>'; ?> <form action='spells.php' method='post'> <table> <tr class="yellow"> <td colspan=4><b>Spell Search</b></td></tr> <tr class="yellow"> <?php if($show_spells_groups) { echo'<td width=25%><b>vocation</b></td> <td width=25%><b>group</b></td> <td width=25%><b>type</b></td> <td width=25%><b>premium</b></td>';} else { echo'<td width=40%><b>vocation</b></td> <td width=30%><b>type</b></td> <td width=30%><b>premium</b></td>';}?> </tr> <tr> <td valign='top'> <input type='radio' name='vocation' value='vall' checked> all<br> <?php foreach(config('vocations') as $id => $vocation) { if($id > 0) { echo "<input type='radio' name='vocation' value='".$vocation."'> ".$vocation."<br>"; } } ?> </td> <?php if($show_spells_groups) echo" <td valign='top'> <input type='radio' name='_group' value='gall' checked> all<br> <input type='radio' name='_group' value='Attack'> attack<br> <input type='radio' name='_group' value='Healing'> healing<br> <input type='radio' name='_group' value='Support'> support</td>"; ?> <td valign='top'> <input type='radio' name='_type' value='tall' checked> all<br> <input type='radio' name='_type' value='Instant'> instant<br> <input type='radio' name='_type' value='Rune'> rune </td> <td valign='top'> <input type='radio' name='_premium' value='pall' checked> all<br> <input type='radio' name='_premium' value='no'> no<br> <input type='radio' name='_premium' value='yes'> yes </td> </tr> <tr> <td>sort by: <select name='sort'> <option value='name' selected>name <option value='words'>words <?php if($show_spells_groups) echo "<option value='group' >group"; ?> <option value='type' >type <option value='level' >exp lvl <option value='mana' >mana <option value='premium' >premium </select> </td> <td colspan='3'> <input type='submit' name='submit'> </td> </tr> </table> </form> <?php } else { echo 'This page has not been configured yet.'; }; include 'layout/overall/footer.php'; ?> Depois Adicionar o link da página ao seu layout layout padrão: /layout/menu.php Adicione na lista de páginas: <li><a href="spells.php">Spells</a></li> Fim do Tutorial ? Eu não posso garantir que ele vai trabalhar com todas as distros TFS. Lembre-se que você pode editar seu arquivo spell.php, principalmente necessário se você usar spells personalizadas. Créditos: cbrm(otland)
-
Pessoal estava procurando, e até tentei fazer um buff que mudasse a vocação do personagem, e voltasse a anterior quando o buff acabar, e se conseguirem tbm que ele aumente a quantidade de hp e mp. mas so em mudar a vocação pra mim tá ótimo Buff que uso: tfs 0.3.6 local outfit = {lookType = 399} -- Roupa que ira transformar no caso seu corpo ficara em choque local tempo = 12000 * 1000 -- Tempo, nesse caso esta 60 segundos Lembrando que 1000 = 1 segundo local ml = 5 -- quantos ira aumentar o skill de ML local skillfist = 10 -- quantos ira aumentar o skill de Fist local skillsword = 0 -- quantos ira aumentar o skill de Sword local skillaxe = 0 -- quantos ira aumentar o skill de Axe local skillclub = 0 -- quantos ira aumentar o skill de Club local skilldistance = 0 -- quantos ira aumentar o skill de Distance local skillshield = 10 -- quantos ira aumentar o skill de Shield local health = 0 -- A cada 1 segundo quantos aumentar de vida local mana = 55 local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, 42) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, tempo) setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, ml) setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, skillfist) setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, skillsword) setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, skillaxe) setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, skillclub) setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, skilldistance) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, skillshield) setConditionParam(condition, CONDITION_PARAM_OUTFIT, outfit) setCombatCondition(combat, condition) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_SPEED, 100) setConditionParam(condition, CONDITION_PARAM_TICKS, tempo) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setCombatCondition(combat, condition) local condition = createConditionObject(CONDITION_REGENERATION) setConditionParam(condition, CONDITION_PARAM_SUBID, 1) setConditionParam(condition, CONDITION_PARAM_BUFF, TRUE) setConditionParam(condition, CONDITION_PARAM_TICKS, tempo) setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, health) setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 1000) setConditionParam(condition, CONDITION_PARAM_MANAGAIN, mana) setConditionParam(condition, CONDITION_PARAM_MANATICKS, 1000) setCombatCondition(combat, condition) local sys = createConditionObject(CONDITION_OUTFIT) setConditionParam(sys, CONDITION_PARAM_TICKS, tempo) addOutfitCondition(sys, outfit) setCombatCondition(combat, sys) function onCastSpell(cid, var) return doCombat(cid, combat, var) end
-
script Tutorial criar spells (básico mesmo)
um tópico no fórum postou Duuhzinhow Tutoriais de Scripting
Eae galerinha do xtibia, vim aqui hoje para ensinar uma coisa simples, mas que muitos nao sabem, e queriam aprender de uma forma bem facil. Vou ensinar á criar spells básicas de damage, de area, e alvo unico... Primeiro, irei ensinar uma de alvo unico. Vá em data/spells/scripts copie um arquivo .lua e renomeie para o que desejar: Verde: é o tipo do dano, seja physical, fire, earth, ice, energy, lifedrain, manadrain, etc... setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 22) Vermelho: é o numero do efeito que irá até o alvo, voce pode escolher usando o comando "/x" setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -120.2, 1, -125.2, 1) Roxo: é o dano minimo, e maximo da spell. Baseado no level. doSendMagicEffect(position1, 196) Azul claro: Efeito que vai dar no target, quando o efeito "22" bater nele, voce pode escolher pelo comando "/z" E agora, vamos colocar sua spell no spells.xml: <instant name="Nome da spell" words="Nome da spell" lvl="Level necessario" mana="mana que ira gastar" aggressive="1" range="7" blockwalls="1" needtarget="1" exhaustion="1500" needlearn="0" event="script" value="Nome do arquivo.lua"> <vocation id="id da vocaçao"/> Agressive: se for para dar dano coloque "1" se nao for apra dano coloque "0" Blockwalls: se o jutsu pode atravessar paredes coloque "0", se nao atravessar coloque "1" Needtarget: se precisa estar atacando coloque "1" se nao, coloque "0" Exhaustion: Tempo de exalst, 1500 = 1,5 segundos. Bem, fazendo tudo isso certinho, sua spell estará pronta, agora vou explicar uma spell simples de area. ---------------------------------------------------------------------------------------------- Copie qualquer arquivo, e renomeie para o que desejar. Vou utilizar um script bem simples que eu criei agora, só para demonstraçao. local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 214) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -93.5, 1, -106.5, 1) arr1 = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0} } local area1 = createCombatArea(arr1) setCombatArea(combat1, area1) local function onCastSpell1(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var) end function onCastSpell(cid, var) local position1 = {x=getCreaturePosition(cid).x+2, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z} local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) return TRUE end setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) Essa parte, como expliquei na spell anterior, apenas mude o tipo de dano, á seu gosto. setCombatParam(combat1, COMBAT_PARAM_EFFECT, 214) Aqui, voce muda o efeito, que está o numero 214, voce pode modificar, vendo os numeros pelo comando "/z" setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -93.5, 1, -106.5, 1) Aqui, voce escolhe dano minimo e máximo, baseado no level. arr1 = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0} } Essa seria a area da spell, os numeros: 3: local onde o player que executou a spell irá estar. (sempre no meio) 1: local onde sairá a spell, ou seja, onde ira sair o efeito, e ira dar dano. 0: nao sairá nada Agora, vamos coloca a tag da spell em spells.xml: <instant name="Nome da spell" words="Nome da spell" lvl="level necessario" needtarget="0" mana="mana que ira gastar" aggressive="1" exhaustion="1600" needlearn="0" event="script" value="Nome do arquivo.lua"> <vocation id="id da vocaçao"/> O resto ja expliquei na spell anterior. Bem galera, por enquanto é isso, muito simples né.. Estou aceitando criticas e dicas para o topico, que eu estarei editando... e, em breve farei um tutorial mais aprofundado .... Se gostou nao esqueça de deixar seu rep -
Olá galera do XTibia , tudo tranquilo ? Bom , gostaria de pedir a vocês , um NPC que adicionasse uma spell ao player , e mudasse a outfit do mesmo. Exemplo : Bom , é isso galera ^.^ Desde já muito obrigado XD
-
Esta spell ao ser utilizada pelo player teleporta ele para sua cidade com um delay para se teleportar. spells.xml <instant name="Konoha teleport" words="Konoha teleport" lvl="1" mana="0" prem="1" aggressive="0" selftarget="1" exhaustion="10000" needlearn="0" event="script" value="citytp.lua"> </instant> citytp.lua function onCastSpell(cid, var) local waittime = 15.0 -- Tempo de exhaustion local storage = 115518 local function doTeleport(cid, count) if (not isPlayer(cid)) then return true end doSendAnimatedText(getCreaturePosition(cid), (10 - count).."s", COLOR_ORANGE) doSendMagicEffect(getCreaturePosition(cid), 54) if (count == 10) then return doCreatureSetNoMove(cid, false) and doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) else addEvent(doTeleport, 1000, cid, count + 1) end return true end if (not isPlayerPzLocked(cid)) then if (not getCreatureCondition(cid, 1024)) then return doCreatureSetNoMove(cid, true) and doTeleport(cid, 0) else doPlayerSendTextMessage(cid,MESSAGE_STATUS_SMALL,"You cannot use this command while you are infight.") return false end else doPlayerSendTextMessage(cid,MESSAGE_STATUS_SMALL,"You cannot use this command while you are pz locked.") return false end end
-
Gostaria de fazer um pepido, acho q o nome e ''Aura System'', pois bem entei ne um ot server hj e ao falar !aura on ficando o efeito da death rodando intorno no char. Sera que alguem q tenha esse script possa disponibiliazar ?
-
Salve comunidade, estou com um problema em duas magias que possuem a função addEvent. Caso algum programador queira me ajudar, ficarei grato. Versão 10.96, TFS 1.2 Spells:
-
Entao gente, queria saber se alguem poder colocar paralizy nesse script de spells atk -- SpellCreator generated. -- =============== COMBAT VARS =============== -- Areas/Combat for 0ms local combat0_Brush = createCombatObject() setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK) setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatArea(combat0_Brush,createCombatArea({{0, 1, 1, 1, 0}, {1, 1, 1, 1, 1}, {1, 1, 3, 1, 1}, {1, 1, 1, 1, 1}, {0, 1, 1, 1, 0}})) function getDmg_Brush(cid, level, maglevel) return (3000)*-1,(8000)*-1 end setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush") local dfcombat0_Brush = {CONST_ANI_EXPLOSION,0,0,0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1,1,2,0,2,-1,2,-1,-2,0,-2,1,-2,-2,0,-2,1,2,1,2,0,2,-1,-2,-1} -- =============== CORE FUNCTIONS =============== local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part if (isCreature(cid)) then doCombat(cid, c, var) if (dirList ~= nil) then -- Emit distance effects local i = 2; while (i < #dirList) do doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList,y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1]) i = i + 2 end end end end function onCastSpell(cid, var) local startPos = getCreaturePosition(cid) RunPart(combat0_Brush,cid,var,dfcombat0_Brush,startPos) return true end
-
GALERA ALGUÉM MANJA DE PASSIVA no meu serve pelo que vi nos xml config.lua ele ja tem mais quando ligo o game não pega .....nao sei fazer pega
-
Olá Pessoal, Estou precisando da Ajuda De vocês! seus lindos Preciso de uma Magia que recupere Mana. Uma quantia minima e uma máxima. Porém que essa recuperação seja com o player Parado,com um efeito contínuo e se movimentar-se ou entrar em Battle, a magia Para. Já vi parecidos com DBO e tudo mais, mas não consegui Migrar. PS: A Magia não recupera a mana instantaneamente, e sim por TICKS. Obrigado Pessoal! <3
-
Eae pessoal, no meu projeto de dragon ball como poucos conhecem, eu estou tentando utilizar o estilo de spells com troca de outfit, como mostra o gif abaixo. Acham que vale a pena?
-
tfs 0.3.6 [Spells] Checando Interferências na Trajetória
um tópico no fórum postou Skulls Globalevents e Spells
Boa noite galera, tudo bem? Venho compartilhar com vocês hoje um sisteminha que desenvolvi para as magias do tipo "shoot'. Foi feito inicialmente para funcionar com magias que usam a posição do mouse como referência e adaptei para cipclientes poderem usar em runas e magias de tiro. O funcionamento do sistema é simples: Ao usar uma runa ou castar uma magia "shoot" com esse sistema criaturas e objetos no caminho irão interferir na trajetória, isto é, receberão o combate no lugar do alvo inicial. Ilustrativo: Bom, vamos ao que interessa. Vá em data/lib/ e crie um novo arquivo chamado spellsLib.lua (pode-se utilizar também o arquivo spells.lua contido em data/spells/lib). Dentro dele inclua as seguintes funções: IsWalkable (by Nord) GetPositionsAround (by Skulls) CheckInterceptions (by Skulls) SetSpellTarget (by Skulls) Feito isso, está tudo configurado. Basta agora adicionar às magias que você queira. Abra o .lua da magia, por exemplo death strike.lua. Lá você terá, entre outras coisas, a função onCastSpell como abaixo: function onCastSpell(cid, var) return doCombat(cid, combat, var) end Substitua isso por: local range = 5 function onCastSpell(cid, var) if getCreatureTarget(cid) == 0 then doPlayerSendCancel(cid, "Please choose a target.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return false end if getDistanceBetween(getPlayerPosition(cid), getCreaturePosition(getCreatureTarget(cid))) > range then doPlayerSendCancel(cid, "Target is not reachable.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return false endreturn doCombat(cid, combat, setSpellTarget(cid, var)) end Retire qualquer tag que esteja relacionada a target (needtarget, casterTargetOrDirection, etc) Pronto, a sua magia "Exori Mort" será parada por criaturas ou obstáculos (qualquer item que não seja móvel). Bom é isso, espero que gostem. Queria agradecer ao @@nightwolf e ao @Caronte pelas ajudas tentando entender alguns parâmetros e me dando algumas luzes. Ao @@nightwolf, ainda, um agradecimento especial pela maravilhosa lib dele *-*. Abraços, Um exemplo de magia que utiliza esse sistema: http://www.xtibia.com/forum/topic/239460-exori-grab-vis/ @@Daniel, na verdade move pra mim pra Downloads Spells, acho que seria mais correto.- 54 respostas
-
- spells
- interferencia
-
(e 2 mais)
Tags:
-
8.60 Função que paraliza o player enquanto não termina a "Spell"
uma questão postou Hi im Mell Scripts
Olá xTibianos, eu tenho uma dúvida pequena, queria saber se existe alguma função onde o player fica parado quando executa a spell/talkaction, e que esse tempo seja configurável, existe algo assim? -
Script : Spells e versao 8.54 Pokemon Dash Advanced (1.0) Sou nivel medio de experience Bom... Eu ja tenho as Mega evolucaos 100% (so de 15 pokemons) mais falta 1 error aqui que Nao sei como faz vai na imagem e vei o ataque que tem Charizard para poder faz Mega Despois ele tranforma O que eu quero faz e do que o ataque que eu vo usar Colocar esse imagem