Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 02/15/16 em todas áreas
-
Fala galera, tudo bem? Venho trazer pra vocês uma nova magia que fiz. Ela é basicamente um puxão que da um pouco de dano. Gif Em spells.xml coloque essa tag: <instant name="Energy Grab" words="exori grab vis" needtarget="1" lvl="40" mana="20" prem="1" range="5" blockwalls="1" exhaustion="2000" groups="1,2000" icon="122" needlearn="0" event="script" value="attack/energy grab.lua"> <vocation id="3"/> <vocation id="7"/> </instant> Em scripts/attack crie um arquivo chamado energy grab.lua e coloque o conteúdo abaixo: local grab_time = 350 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_ENERGYBALL) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) function onTargetCreature(cid, target) addEvent(executeGrab, grab_time, cid, target) end setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") function executeGrab(cid, target, param) d = param or -1 if not isPlayer(cid) then return false end if not isCreature(target) then return false end local cpos, ppos = getCreaturePosition(target), getCreaturePosition(cid) local dir = getDirectionTo2(cpos, ppos) if d == -1 then doSendDistanceShoot(cpos, ppos, CONST_ANI_ENERGYBALL) end if getDistanceBetween(cpos, ppos) > 1 then doMoveCreature(target, dir) end if (d > 1 or d == -1) then addEvent(executeGrab, 30, cid, target, getDistanceBetween(cpos, ppos)) end return true end function performCombat(cid, combat, var) return doCombat(cid, combat, var) end function onCastSpell(cid, var) return doCombat(cid, combat, setSpellTarget(cid, var)) end Para funcionar corretamente, isso é puxando quem estiver na frente da magia e nao o target inicial é necessário que você utilize o sistema disponibilizado por mim neste tópico: http://www.xtibia.com/forum/topic/239458-spells-checando-interferencias-na-trajetoria/ Caso contrário, troque a linha return doCombat(cid, combat, setSpellTarget(cid, var)) por return doCombat(cid, combat, var). Bom, é isso. Espero que gostem. Abraços,4 pontos
-
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.3 pontos
-
First Itens
SkyLigh e um outro reagiu a Night Wolf por uma questão
[3] = { --equipment {{2389, 5}, {2660, 1}, {8923, 1}, {2456, 1}, {2544, 50}}, --container {{2120, 1}, {2554, 1}, {7618, 1}} [iD DA VOCAÇÃO] -- equipamentos {{itemid, quantidade}} --- container [VEM DENTRO DA BP] {{itemid, quantidade}}2 pontos -
First Itens
Marco Oliveira e um outro reagiu a SkyLigh por uma questão
local config = { [1] = { --equipment {{2175, 1}, {2190, 1}, {8819, 1}, {8820, 1}}, --container {{2120, 1}, {2554, 1}, {7620, 1}} }, [2] = { --equipment {{2175, 1}, {2182, 1}, {8819, 1}, {8820, 1}}, --container {{2120, 1}, {2554, 1}, {7620, 1}} }, [3] = { --equipment {{2389, 5}, {2660, 1}, {8923, 1}, {2456, 1}, {2544, 50}}, --container {{2120, 1}, {2554, 1}, {7618, 1}} }, [4] = { --equipment {{2509, 1}, {2465, 1}, {2481, 1}, {2478, 1}}, --container {{8601, 1}, {8602, 1}, {2439, 1}, {2120, 1}, {2554, 1}, {7618, 1}} } } function onLogin(cid) local player = Player(cid) local targetVocation = config[player:getVocation():getId()] if not targetVocation then return true end if player:getLastLoginSaved() == 0 then for i = 1, #targetVocation[1] do player:addItem(targetVocation[1][1], targetVocation[1][2]) end local backpack = player:addItem(1988) for i = 1, #targetVocation[2] do backpack:addItem(targetVocation[2][1], targetVocation[2][2]) end end return true end2 pontos -
[OrochiElf] New OTRestarter v1.0
Arnz190 reagiu a Tony Araujo por um tópico no fórum
New OTRestarter version: 1.0 developer: Tony Araújo (OrochiElf) pt. Gabriel Nogueira (Idéias) Funções: - Auto Restarter (Ele inicia o servidor assim que ele não detectar mais que o processo está ativo, ou seja, toda vez que o seu servidor fechar sozinho, o programa automaticamente irá reconhecer e irá reinicia-lo.) - Auto Crash Timer (Uma nova função inédita foi adicionada, esta função é responsável por detectar quando o processo do servidor para de funcionar, algo que acontece frequentemente, então ele irá reconhecer e reiniciar o processo.) - Auto Restarter Timer (Outra função nova adicionada nesta versão, esta função é responsável por programar os horários que você deseja reiniciar o seu servidor. ela é bastante usada para evitar o desperdício de memória usada no consumo do processo do servidor, ou seja, quando um servidor está ativo por muito tempo o gasto de memória aumenta, então esta função irá reiniciar o processo do seu servido de acordo com os horários que você marcar. Para próxima versão: - OTRestarter hosting (Esta função será uma inovação bastante bacana, ela dará o direito de você acessar o Restarter *que estará provavelmente instalado no VPS/Dedicado do servidor* sem que a pessoa precise acionar a conexão remota, ou seja, funcionará parecido com um FTP Control, você poderá controlar o Restarter e ter acesso as informações gravadas no LOG do programa através de um simples client, deixando possível ser acessado em computadores diferentes, e em breve uma versão para mobile/celular.) Imagem do funcionamento do programa: Download: Link Aqui1 ponto -
[Download] Remakes,pedras,paredes,escadas e Montanhas PXG
Lord Stryton reagiu a kaleudd por um tópico no fórum
1 ponto -
Boa noite galera, Estou a alguns dias tentando resolver um problema que tive com o OTC: ao usar a função doCreatureSetHideHealth simplesmente o player trava e não consegue fazer nada até o hidehealth ser desfeito. Isso ocorre porque, na source do OTC, a declaração de morte é feita baseada em porcentagem de vida e essa inexiste quando o hideHealth é acionado, somente a vida total e a vida máxima é que continuam com valores relevantes. Então, o OTC simplesmente te considera como um morto vivo quando você usa hideHealth e você não pode realizar nenhuma ação no jogo a não ser deslogar. Após alguns dias fuçando consegui finalmente resolver o problema e vim compartilhar a solução com vocês. 1) Na source do seu OTC vá em creatures.cpp. Crie as funções abaixo: double Creature::getLocalPlayerHealth() { return g_game.getLocalPlayer()->getHealth(); } bool Creature::isDead() { if (!isLocalPlayer()) return m_healthPercent <= 0; double m_health = getLocalPlayerHealth(); return m_health <= 0; } Substitua: if(m_healthPercent < 1) // creature is dead return; por if(m_healthPercent < 1) // creature is dead if (!isLocalPlayer()) return; 2) Vá em creature.h e troque a declaração da função isDead() por: bool isDead(); 3) Em game.cpp troque a função proccessDeath por: void Game::processDeath(int deathType, int penality) { if (m_localPlayer->getHealth() > 0){ m_dead = true; m_localPlayer->stopWalk(); g_lua.callGlobalField("g_game", "onDeath", deathType, penality); } } Pronto, o seu OTC agora suporta a função doCreatureSetHideHealth (e de bônus você consegue enxergar o seu player com uma barra preta e seu nome, apesar dos outros não te verem). Bom é simples, mas útil espero que ajude. Abraços,1 ponto
-
Me adiciona no skype, linus.1759, que te coloco em um grupo que foi criado com esse próposito... lá vão tirar eventuais dúvidas que você tiver.1 ponto
-
Criando page de RESET Personagem.
Thillys Alves reagiu a Furabio por uma questão
Uffa até que fim tive tempo pra terminar, coloquei a tabela de resets, só não adicionei todos os lvl de resets e quantos resets são adicionados a db, vou deixar isso por conta de você pois é simples ... Melhorei o código e resolvi os problemas citados se aparecerem mais algum só deixar abaixo : Não se esqueça de adicionar a tabela resets na sua database na tabela players, para isso basta rodar esse comando : ALTER TABLE players ADD resets tinyint(11) NOT NULL; Ps : Já ia me esquecendo. para adicionar o restante dos levels na tabela basta apertar ctrl + F e procurar por $resetTable a forma de adicionar está na tabela explicando em formato de comentários.1 ponto -
Projeto Valhala (2016)
Sirarcken reagiu a MuriloCavalcantti por um tópico no fórum
Curti, mas os boxs estão bugados, acerte eles e coloque no mesmo estilo que o menu, mas tá legal, parabéns!1 ponto -
[Spells] Checando Interferências na Trajetória
kaleudd reagiu a Night Wolf por um tópico no fórum
@@Caronte, acho q ele quis dizer estilo o Q da miss fortune no league of legends... qnd vc dá um tiro e mata o bixo o tiro rebate com dobro de dano se tiver alguém atrás (seguindo a direção), ficaria muito legal ter algo nesse sentido tb.1 ponto -
Baiak MoazOT | V1.2
Caronte reagiu a Marco Oliveira por um tópico no fórum
encontrei esse mapa abandonado nas profundezas do mega, ele é um baiak 100% diferente pois todo o mapa foi modificado. ele não está 100% ainda falta algumas hunts VIP e configurar os itens. Espero que façam bom proveito do meu projeto de coração, pois trabalhei muito nele. E se alguém terminar e por online me avisem, quero dar uma jogada pra ver como ficou! Caso tenha algum problema com o servidor baixe as sources oficiais dele clicando AQUI. Principais Quest's Annihilator Pits OF Inferno Demon Helmet Monstros VIP'S Hydra VIP Demon VIP Infernalist VIP Grim Reaper VIP Medusa Vip FrostDragon VIP Warlock Vip Atualizações Versão 1.2 Adicionado Itens Vips. Adicionado NPC para venda de canivetes. Adicionado canivetes e obsidian knife. Vários Scripts atualizados. Versão 1.1 Bug das Houses corrigidos. Stages fixados. Fixado Outfit Account Manager Scripts corrigidos. Adicionado evento de DoubleXp Remoção de scripts não utilizados. Clique aqui para fazer o download. Clique aqui para o scan.1 ponto -
Systema premium account com piso
Caronte reagiu a bernardes22 por uma questão
Outro [15/02/2016 14:25:48] [Error - MoveEvents Interface] [15/02/2016 14:25:48] data/movements/scripts/premiumTile.lua:onStepIn [15/02/2016 14:25:48] Description: [15/02/2016 14:25:48] (luaDoPlayerSendCancel) Player not found Arrumei o erro kk, na linha 12 tava cid, era creature que tinha que coloca lá kk Obrigado <31 ponto -
Systema premium account com piso
bernardes22 reagiu a Caronte por uma questão
mesmo primeiro post, eu to editando, pega o script.. eu esqueci de uma letra... mesmo primeiro post, eu to editando, pega o script.. eu esqueci de uma letra...1 ponto -
1 ponto
-
Systema premium account com piso
bernardes22 reagiu a Caronte por uma questão
só muda isso: <movevent type="StepIn" actionid="4207" event="script" value="premiumTile.lua" />1 ponto -
substitua em modules/client_options/ graphics.rar1 ponto
-
Systema premium account com piso
bernardes22 reagiu a Caronte por uma questão
Opa isso que dá configurar uma tag sem consultar o .xml kkkk, acabei meclando tag de TFS 1.+ com TFS 0.4, já está consertado...1 ponto -
É mesmo, troque pra isso então: for _, pid in pairs(getPlayersOnline()) do setPlayerStorageValue(pid, 1827311, 0) if isInArea(getThingPos(pid), {x = 500, y = 574, z = 6}, {x = 575, y = 620, z = 6}) or isInArea(getThingPos(pid), {x = 511, y = 588, z = 5}, {x = 556, y = 607, z = 5}) or isInArea(getThingPos(pid), {x = 511, y = 588, z = 4}, {x = 556, y = 607, z = 4}) or isInArea(getThingPos(pid), {x = 511, y = 588, z = 3}, {x = 556, y = 607, z = 3}) or isInArea(getThingPos(pid), {x = 481, y = 580, z = 7}, {x = 683, y = 798, z = 7}) then doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid))) end end1 ponto
-
Arrumado, obrigado.1 ponto
-
Troca: local st = getPlayerStorageValue(pid, 1827311) local i = getPlayerVocation(pid) if st > mx[i%4] then... por local st = getPlayerStorageValue(pid, 1827311) local i = getPlayerVocation(pid) local index = i%4 if index == 0 then index = 4 end if st > mx[index] then1 ponto
-
Eu já sei o pq, vou editar aqui 2 segundos. Troca: local st = getPlayerStorageValue(pid, 1827311) local i = getPlayerVocation(pid) if st > mx[i%4] then... por local st = getPlayerStorageValue(pid, 1827311) local i = getPlayerVocation(pid) local index = i%4 if index == 0 then index = 4 end if st > mx[index] then1 ponto
-
Troca pointNumber(mx) por pointNumber(mx) E ae?1 ponto
-
Systema premium account com piso
bernardes22 reagiu a Caronte por uma questão
function onStepIn(creature, item, position, fromPosition) if not isPlayer(creature) then return false end if isPremium(creature) then doPlayerSendMessageText(creature,20, "Welcome to premium area!") doSendMagicEffect(getThingPos(creature), CONST_ME_MAGIC_BLUE) else doTeleportThing(creature,fromPosition) doPlayerSendCancel(cid, "You're not premium.") doSendMagicEffect(getThingPos(creature), CONST_ME_POFF) end return true end <movevent type="StepIn" actionid="4207" event="script" value="premiumTile.lua" /> Certifique-se que não tem nenhuma actionid igual, atualizei o post, esqueci de um parêntesis.1 ponto -
Simplesmente Foda, ta perfeito assim ;D1 ponto
-
[Download] Remakes,pedras,paredes,escadas e Montanhas PXG
Drakopoulos reagiu a kaleudd por um tópico no fórum
foi add a download as pedras e as paredes que nociam e ricardo pediram. @ricardoberk as escadas ainda não achei,quando eu achar irei upar junto.1 ponto -
Spell para TFS 1x, Teleporta Tile
Thillys Alves reagiu a Night Wolf por uma questão
local times = 3 --Quantos SQMs o jogador irá se mover. function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 2 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function onCastSpell(cid) local playerPos = getThingPos(cid) for i = 1, times do playerPos:getNextPosition(getCreatureLookDirection(cid)) if not isWalkable(playerPos, i == times, i == times, i == times) then doPlayerSendCancel(cid, "Sorry, destination not possible.") return false end end doTeleportThing(cid, playerPos) return true end1 ponto -
Bom, sem muito a falar irei tentar explicar tudo O Pokemon T.E.S foi começou a 9 meses atrais por 3 pessoas, tinha a intençao de ser um servidor serio porem pouco a pouco aprendi que PDA, tem muitas limitaçoes. Eu simplemente iria pagar o host, outros 2 amigos iriam ficar encargados dos scripts e maps, porem ambos desistiram do projecto poucos dias apos ter começado ate agora fikei só com esse server tentando arrumar bugs com meus conenhimentos (nemhum) em td... o Servidor tem uns 9 meses online, no momento esta com host mesmo assim muito lagado por causa de bugs o projecto é 1 coisa pequena, e estou procurando 1 scripter, tenho a intençao de pagar por scripts porem sem ser muito oque tiver que pagar, é um servidor PDA por isso acho que não vale a pena usar muita grana para um servidor sem sources. Emfin... resumindo: procuro scripter que estiver querendo ganhar 1 pouco de grana mas sem exagerar... fikei louco qndo me pediram 700 reais por um launcher emfin irei deixar o grupo do meu servidor https://www.facebook.com/groups/1618330061742838/ qualquer coisa manda PM seja no FB ou aqui Eu vi que Xtibia quer que eu fale as "Metas" entao... simples: ter um servidor estavel sem lag por causa de scripts mal feitos.1 ponto