Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 07/19/16 em todas áreas
-
Pet System Simples
Pet System Simples
Genadilson Nzinho e 2 outros reagiu a Kemmlly por uma resposta no tópico
3 pontosHa um tempo atrás eu procurei um Pet System bem simples pro meu servidor, e achei um muito bacana. TFS: 0.4 Tibia: 8.6 O sistema original foi postado pelo @Luquinha no tópico: O script funciona corretamente, eu fiz apenas algumas alterações e queria compartilhar caso vocês tenham as mesmas exigências que eu; * Ao tentar usar o PET em PZ não da mais erro na distro, sobe um efeito FAILED! no player e manda uma mensagem. * Agora cada PET precisa de um storage para ser usado, no meu caso, cada PET tem sua quest individual. O script modificado: function onUse(cid, item, frompos, item2, topos) local dolls = { [11256] = {pet = "Rat"}, [11207] = {pet = "Demon"}, [5791] = {pet = "Dragon"}, } local go = dolls[item.itemid] local summon = getCreatureSummons(cid) --------------------------------------------------- if not (getTilePzInfo(getCreaturePosition(cid))) then if #summon >= 1 then for _, pid in ipairs(summon) do doRemoveCreature(pid) doCreatureSay(cid, ""..go.pet..", Recuar!", TALKTYPE_ORANGE_1) end return true end if item.itemid == 5791 then if getPlayerStorageValue(cid, 6666) == 1 then doConvinceCreature(cid, doSummonCreature(go.pet, getCreaturePosition(cid))) doCreatureSay(cid, ""..go.pet..", GO!", TALKTYPE_ORANGE_1) else doPlayerSendTextMessage(cid, 19, "Voce precisa da quest para usar esse PET!") doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180) end end if item.itemid == 11256 then if getPlayerStorageValue(cid, 4444) == 1 then doConvinceCreature(cid, doSummonCreature(go.pet, getCreaturePosition(cid))) doCreatureSay(cid, ""..go.pet..", GO!", TALKTYPE_ORANGE_1) else doPlayerSendTextMessage(cid, 19, "Voce precisa da quest para usar esse PET!") doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180) end end if item.itemid == 11207 then if getPlayerStorageValue(cid, 4445) == 1 then doConvinceCreature(cid, doSummonCreature(go.pet, getCreaturePosition(cid))) doCreatureSay(cid, ""..go.pet..", GO!", TALKTYPE_ORANGE_1) else doPlayerSendTextMessage(cid, 19, "Voce precisa fazer a quest para usar esse PET!") doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180) end end else doPlayerSendTextMessage(cid, 19, "Voce nao pode sumonar seu PET em Protect Zone!") doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180) return true end end Creditos: @Luquinha @Roksas @Kemmlly3 pontos -
[Item] - Absorver Dano
[Item] - Absorver Dano
rodox2008 e um outro reagiu a Mathwsz por uma resposta no tópico
2 pontosPRIMEIRAMENTE, SE EU ESTIVER EM ÁREA ERRADA POR FAVOR ME CORRIGEM ! UMA BOA NOITE E VAMOS LÁ ! Salve galera do TK! Hoje venho trazer para vocês um script muito bacana que funciona da seguinte maneira: Ex: Eu tenho uma boots, e a cada 1000 de hit tomado, ela irá absover, e depois disso automaticamente começará contar 2 minutos até que ela recarregue e bloqueie o dano.. Ou seja, se eu tomo um hit de 2k e a boots está carregada, ela irá absover metade do dano.. Sem longas demores vamos lá! Em Data/Creaturescript.xml adicione: <event type="statschange" name="bootsbloqued" event="script" value="bootsbloqued.lua"/> Em data/Creaturescript/scripts , crie um arquivo chamado bootsbloqued.lua ou se você quer por outro nome no arquivo, modifica a tag do creaturescript.xml, e adicione o seguinte: local config = { percent = 0.5, --- porcentagem do dano que irá levar (0.5 = 50%) storageskill = 19501, -- storage da skill itemplace = 8, -- lugar q ela deve estar (8 é o feet) itemid = 1234, -- id do item damagemin = 100 --- minimo de dano que deve ser pro player absorver } function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHLOSS and isCreature(attacker) and value >= config.damagemin then if getPlayerSlotItem(cid, config.itemplace).itemid == config.itemid then if getPlayerStorageValue(cid, config.storageskill) >= 1 then value = math.ceil(value*(config.percent)) setPlayerStorageValue(cid, config.storageskill, getPlayerStorageValue(cid, config.storageskill)-1) doTargetCombatHealth(attacker, cid, combat, -value, -value, 255) doPlayerSendTextMessage(cid, 23, "Your "..getItemNameById(config.itemid).." absorved "..value.." of damage.") return false end end end return true end Agora, em Data/action.xml adicione: <action itemid="ID DO ITEM" script="bootsbloqued.lua"/> Agora, em data/action/script , crie um arquivo chamado bootsbloqued.lua e adicione: local config = { storagetempo = 19500, -- storage que contará os segundos storageskill = 19501, -- storage que vai dizer se a skill está ativada ou desativada itemid = 1234, -- id do item itemplace = 8, -- feet tempo = 2*60 -- tempo em segundo para recarregar ( 2 min ) } function onUse(cid, item, frompos, item2, topos) if getPlayerStorageValue(cid, config.storageskill) <= 0 and (getPlayerSlotItem(cid, config.itemplace).itemid == config.itemid) then if getPlayerStorageValue(cid, config.storagetempo) - os.time() <= 0 then timenow = os.time() + config.tempo setPlayerStorageValue(cid, config.storagetempo, timenow) setPlayerStorageValue(cid, config.storageskill, 1) doPlayerSendTextMessage(cid, 23, "You activated your "..getItemNameById(config.itemid)..", it's ready to absorb damages!") for j= 0,(config.tempo -1) do addEvent(function() if isPlayer(cid) then doPlayerSendCancel(cid, "Time until next use: ".. config.tempo - j .." second(s)") end end, (50+(j*1000))) end else doPlayerSendTextMessage(cid, 23, "You have to wait ".. getPlayerStorageValue(cid, config.storagetempo) - os.time() .." second(s) until you can use it again!") end else doPlayerSendTextMessage(cid, 23, "Your "..getItemNameById(config.itemid).." is already active or it isn't equiped.") end return true end É isso galera, prontinho! ObS : Esse script não é meu, porém acho ele muito bacana e criativo, então já deixo avisado! Dúvidas, poste aí e um grande abraço.2 pontos -
[8.60] Baiak ROX ! Editado By DeathRocks [Cast + Wars System]
[8.60] Baiak ROX ! Editado By DeathRocks [Cast + Wars System]
Veigh reagiu a DeathRocks por uma resposta no tópico
1 pontoEae Galera do TibiaKing É o seguinte Hoje trago a vocês o Baiak Rox Editado por Min Espero que Gostem Oque eu Fiz ? | Novo Visual do Templo Totalmente ICE | Critical System | Task System | Dodge System | Run Event (CORRIDA MALUCA) | Reset System (ÁREA EXCLUSIVA COM CASTELO E HUNTS) para resetar fale !reset | Guild Frags System ( ACESSO AO PROMOTE E ITENS EXCLUSIVOS ) | War System (100% RODANDO EM SQLITE) | Cast System (100% Roda em Mysql ) ( Para Ativar vai em Config.lua e ache | enableCast = false | mude para true ) Duvidas entrem em http://www.tibiaking...os-na-distro/ | PvP Balanceado Agora com mais RPG | Armas Arrumadas Para Melhor PvP | Varios Eventos Automaticos | Battle Field Event | Capture The Flag Event | City War | Adicionado CASTLE 24HORAS (COM CASTELO) e AVISOS DE INVASORES | Itens DONATES | Área DONATE ~~ (Só Entra Quem Usar o Itens de Premium Days) | Vários Novos Script | Fast Atk Arrumado | Distro 0.4 Rodando 100% ( Se For 64x Bits) | Refinamento ( Aprimora seus Equipamentos ) | Frags no Look | Npc Hero Seller (Vende Itens Exclusivos para quem tiver honor points) Obs:Consegue no GFS) | Entre Outras Coisas | SENHA DO GOD: rox/styller | Aqui Vai Umas Prints | Castelo Reset System | Nova Imagem do Templo | Área Donate | Mostra de Itens Donate + Eventos | Download | Scan | Créditos | Gostou ? Então dei um REP1 ponto -
[8.6] TOP 5 LEVEL no BroadCast
[8.6] TOP 5 LEVEL no BroadCast
bagulhoescroto reagiu a Vodkart por uma resposta no tópico
1 pontoMe pediram para postar uma especie de propaganda, onde aparecia os top level do servidor, no caso está configurado para aparecer os 5 leveis mais alto, como mostra a imagem: como esse script está no meu servidor faz anos, resolvi jogar para a molecada: Data/globalevents/script topleveis.lua function onThink(interval, lastExecution) local max, query = 5, db.getResult("SELECT `name`, `level` FROM `players` WHERE `id` > 6 AND `group_id` < 2 ORDER BY `level` DESC, `name` ASC;") local str = "TOP "..max.." Rank Level:\n\n" if (query:getID() ~= -1) then k = 1 while true do str = str .. "\n " .. k .. " - "..query:getDataString("name").."["..query:getDataInt("level").."]" k = k + 1 if not(query:next()) or k > max then break end end query:free() end doBroadcastMessage(str, 22) return true end TAG: <globalevent name="TopLevels" interval="3600" event="script" value="topleveis.lua"/>1 ponto -
Launcher AutoUpdate C#
Launcher AutoUpdate C#
premii reagiu a GabrielSapient por uma resposta no tópico
1 pontoGalera sempre procurei um Launcher AutoUpdate para meu servidor, depois de muita pesquisa e pouco conhecimento consegui fazer um em C#, está ai: 1. Download: • Download | • Scan 2. Oque ele faz: • Verifica a existência da versão local na pasta do cliente; • Se a versão do arquivo não existir, ele assume que a versão é "1.0" e cria um arquivo de versão; • Verifica arquivo .xml no servidor de atualização; • Baixar atualizações para todas as versões maiores do que a versão atual do cliente (atualiza tudo em apenas formato de arquivo .zip); • Extrai os arquivos .zip; • Exclui os arquivos .zip após a extração; • Arquiva a versão atualizada na pasta do cliente; • E, finalmente, desbloqueia o botão "Start Game". 3. Como editar: • Abra o arquivo .sln na pasta "VS Project" com o Visual Studio: Procure por: string Server = "http://127.0.0.1/Updates/"; • Altere o http://127.0.0.1/Updates/ para qualquer URL que você estará hospedando suas atualizações. • Agora vamos procurar por: Process.Start("OTClient PkR DX9.exe", "\\Pokémon Rusty"); • Modifique o OTClient PkR DX9.exe pelo nome do .exe do seu Client. • \\Pokémon Rusty e a pasta que está seu .exe e vai ficar seu Launcher. (troque sem tirar os "\\") • No Visual Studio, selecione o controle WebBrowser(Neste caso, o nome "patchNotes") e alterar a url do "http://127.0.0.1/"para o caminho do arquivo index.html, na pasta do host: OBS: Isto á opcional, é apenas um template em .html. Você pode remove-lo e editar da maneira deseja. • Agora apenas jogue o .exe, .dll e o arquivo version da pasta "Launcher\VS Project\Launcher v2\bin\Debug ou Release" para a pasta de seu Client: Pronto! Agora e com o Site. • No host do site, apos colarmos a pasta Updates, editamos o arquivo Updates.xml, para cada atualização adicionamos um <update> fechamos com </update> como no exemplo do arquivo. Colocamos o arquivo atualização em .zip nessa mesma pasta, editando a versão e o nome no arquivo: • No arquivo version.txt colocamos a versão da nova atualização: • Uma dica para o .zip de atualização é colocar em pastas o caminho no client desejado a fazer update. Exemplo: data/things/854 nesta pasta colocaremos os arquivos que será substituído, no exemplo foi Tibia.spr e .dat. Depois compactamos e deixamos na pasta Updates, sem esquecer de colocar o nome no arquivo Updates.xml. 4. Dica • Pronto! Agora e só criar um instalador com o launcher, com atalho na área de trabalho (o launcher é o .exe que você colocou no client). Você pode modificar o launcher do jeito que quiser, o arquivo index.html e etc. Quando abrir o arquivo ele irá atualizar, liberar o botão "Start Game", e quando você clicar vai fechar o Launcher e abrir o Client. 5. Créditos Eu - Pelo launcher e pelo tutorial.1 ponto -
Trade OFF - Shop Offline
Trade OFF - Shop Offline
Trunksontibia reagiu a Natanael Beckman por uma resposta no tópico
1 pontoEsse sistema disponibiliza uma negociação offline, onde você oferta um item e esse item é divulgado no site do server e qualquer player pode comprar o item utilizando um comando especificado. Crie uma arquivo .lua dentro da pasta data/talkactions/scripts com o nome auctionsystem.lua, dentro do mesmo adicione o code: local config = { levelRequiredToAdd = 20, maxOffersPerPlayer = 5, SendOffersOnlyInPZ = true, blocked_items = {2165, 2152, 2148, 2160, 2166, 2167, 2168, 2169, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2343, 2433, 2640, 6132, 6300, 6301, 9932, 9933} } function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.") return true end local t = string.explode(param, ",") if(t[1] == "add") then if((not t[2]) or (not t[3]) or (not t[4])) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.") return true end if(not tonumber(t[3]) or (not tonumber(t[4]))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don't set valid price or items count.") return true end if(string.len(t[3]) > 7 or (string.len(t[4]) > 3)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "This price or item count is too high.") return true end local item = getItemIdByName(t[2]) if(not item) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item wich such name does not exists.") return true end if(getPlayerLevel(cid) < config.levelRequiredToAdd) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don't have required (" .. config.levelRequiredToAdd .. ") level.") return true end if(isInArray(config.blocked_items, item)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "This item is blocked.") return true end if(getPlayerItemCount(cid, item) < (tonumber(t[4]))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, you don't have this item(s).") return true end local check = db.getResult("SELECT `id` FROM `auction_system` WHERE `player` = " .. getPlayerGUID(cid) .. ";") if(check:getID() == -1) then elseif(check:getRows(true) >= config.maxOffersPerPlayer) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't add more offers (max. " .. config.maxOffersPerPlayer .. ")") return true end if(config.SendOffersOnlyInPZ) then if(not getTilePzInfo(getPlayerPosition(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You must be in PZ area when you add offert to database.") return true end end if(tonumber(t[4]) < 1 or (tonumber(t[3]) < 1)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to type a number higher than 0.") return true end local itemcount, costgp = math.floor(t[4]), math.floor(t[3]) doPlayerRemoveItem(cid, item, itemcount) db.executeQuery("INSERT INTO `auction_system` (`player`, `item_name`, `item_id`, `count`, `cost`, `date`) VALUES (" .. getPlayerGUID(cid) .. ", \"" .. t[2] .. "\", " .. getItemIdByName(t[2]) .. ", " .. itemcount .. ", " .. costgp ..", " .. os.time() .. ")") doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You successfully add " .. itemcount .." " .. t[2] .." for " .. costgp .. " gps to offerts database.") end if(t[1] == "buy") then if(not tonumber(t[2])) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Wrong ID.") return true end local buy = db.getResult("SELECT * FROM `auction_system` WHERE `id` = " .. (tonumber(t[2])) .. ";") if(buy:getID() ~= -1) then if(getPlayerMoney(cid) < buy:getDataInt("cost")) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don't have enoguh GP.") buy:free() return true end if(getPlayerName(cid) == getPlayerNameByGUID(buy:getDataInt("player"))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, you can't buy your own items.") buy:free() return true end if(getPlayerFreeCap(cid) < getItemWeightById(buy:getDataInt("item_id"), buy:getDataInt("count")))then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You try to buy a " .. buy:getDataString("item_name") .. ". It weight " .. getItemWeightById(buy:getDataInt("item_id"), buy:getDataInt("count")) .. " cap oz. and you have only " .. getPlayerFreeCap(cid) .. " oz. free capacity. Put some items to depot and try again.") buy:free() return true end if(isItemStackable((buy:getDataString("item_id")))) then doPlayerAddItem(cid, buy:getDataString("item_id"), buy:getDataInt("count")) else for i = 1, buy:getDataInt("count") do doPlayerAddItem(cid, buy:getDataString("item_id"), 1) end end doPlayerRemoveMoney(cid, buy:getDataInt("cost")) db.executeQuery("DELETE FROM `auction_system` WHERE `id` = " .. t[2] .. ";") doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You bought " .. buy:getDataInt("count") .. " ".. buy:getDataString("item_name") .. " for " .. buy:getDataInt("cost") .. " gps!") db.executeQuery("UPDATE `players` SET `auction_balance` = `auction_balance` + " .. buy:getDataInt("cost") .. " WHERE `id` = " .. buy:getDataInt("player") .. ";") buy:free() else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Wrong ID.") end end if(t[1] == "remove") then if((not tonumber(t[2]))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Wrong ID.") return true end if(config.SendOffersOnlyInPZ) then if(not getTilePzInfo(getPlayerPosition(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You must be in PZ area when you remove offerts from database.") return true end end local delete = db.getResult("SELECT * FROM `auction_system` WHERE `id` = " .. (tonumber(t[2])) .. ";") if(delete:getID() ~= -1) then if(getPlayerGUID(cid) == delete:getDataInt("player")) then db.executeQuery("DELETE FROM `auction_system` WHERE `id` = " .. t[2] .. ";") if(isItemStackable(delete:getDataString("item_id"))) then doPlayerAddItem(cid, delete:getDataString("item_id"), delete:getDataInt("count")) else for i = 1, delete:getDataInt("count") do doPlayerAddItem(cid, delete:getDataString("item_id"), 1) end end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your offert has been deleted from offerts database.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "This is not your offert!") end delete:free() else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Wrong ID.") end end if(t[1] == "withdraw") then local balance = db.getResult("SELECT `auction_balance` FROM `players` WHERE `id` = " .. getPlayerGUID(cid) .. ";") if(balance:getDataInt("auction_balance") < 1) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don't have money on your auction balance.") balance:free() return true end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You got " .. balance:getDataInt("auction_balance") .. " gps from auction system!") doPlayerAddMoney(cid, balance:getDataInt("auction_balance")) db.executeQuery("UPDATE `players` SET `auction_balance` = '0' WHERE `id` = " .. getPlayerGUID(cid) .. ";") balance:free() end return true end Em seguida em talkactions.xml adicione a tag: <talkaction words="!offer" event="script" value="auctionsystem.lua"/> No banco de dados execute as querys: CREATE TABLE `auction_system` ( `id` int(11) NOT NULL auto_increment, `player` int(11), `item_id` int(11), `item_name` varchar(255), `count` int(11), `cost` int(11), `date` int(11), PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; ALTER TABLE `players` ADD `auction_balance` INT( 11 ) NOT NULL DEFAULT '0'; Na pasta do seu site crie um arquivo chamado tradeoff.php, em seguida adicione o code: <?PHP $auctions = $SQL->query('SELECT `auction_system`.`player`, `auction_system`.`id`, `auction_system`.`item_name`, `auction_system`.`item_id`, `auction_system`.`count`, `auction_system`.`cost`, `auction_system`.`date`, `players`.`name` FROM `auction_system`, `players` WHERE `players`.`id` = `auction_system`.`player` ORDER BY `auction_system`.`id` DESC')->fetchAll(); $players = 0; $main_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><TD CLASS=white><b>Instruction<b></TD></TR><TR BGCOLOR='.$config['site']['darkborder'].'><TD><center><h2>Commands</h2><b>!offer add, itemName, itemPrice, itemCount</b><br /><small>example: !offer add, plate armor, 500, 1</small><br /><br /><B>!offer buy, AuctionID</b><br /><small>example: !offer buy, 1943</small><br /><br /><b>!offer remove, AuctionID</b><br /><small>example: !offer remove, 1943</small><br /><br /><b>!offer withdraw</b><br /><small>Use this command to get money for sold items.</small></center></TR></TD></TABLE><br />'; if(empty($auctions)) { $main_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><TD CLASS=white><b>Auctions</b></td></TR><TR BGCOLOR='.$config['site']['darkborder'].'><TD>Currently is no one active Auction.</TD></TR></TABLE>'; $main_content .= '<br /><p align="right"><small>System created by <a href="http://otland.net/members/vDk/">vDk</a>.</small></p>'; } else { foreach($auctions as $auction) { $players++; if(is_int($players / 2)) $bgcolor = $config['site']['lightborder']; else $bgcolor = $config['site']['darkborder']; $cost = round($auction['cost']/1000, 2); $content .= '<TR BGCOLOR='.$bgcolor.'><TD><center>'.$auction['id'].'</center></TD><TD><center><img src="/item_images/'.$auction['item_id'].'.gif"/></center></TD><TD><center>'.$auction['item_name'].'</center></TD><TD><center><a href="?subtopic=characters&name='.urlencode($auction['name']).'">'.$auction['name'].'</a></center></TD><TD><center>'.$auction['count'].'</center></TD><TD><center>'.$cost.'k<br /><small>'.$auction['cost'].'gp</small></center></TD><TD><center>!offer buy, '.$auction['id'].'</center></TR>'; } $main_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><TD CLASS=white><b><center>ID</center></b></TD><TD class="white"><b><center>#</center></b></TD><TD class="white"><b><center>Item Name</center></b></TD><TD class="white"><b><center>Player</center></b></TD><TD class="white"><b><center>Count</center></b></TD><TD class="white"><b><center>Cost</center></b></td><TD class="white"><b><center>Buy</center></b></td></TR>'.$content.'</TABLE>'; $main_content .= '<br /><p align="right"><small>System created by <a href="http://otland.net/members/vdk.1553/">vDk</a>.</small></p>'; } ?> Em layouts.php adcione o code: <a href="?subtopic=tradeoff"> <div id="submenu_tradeoff" class="Submenuitem" onmouseover="MouseOverSubmenuItem(this)" onmouseout="MouseOutSubmenuItem(this)"> <div class="LeftChain" style="background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);"></div> <div id="ActiveSubmenuItemIcon_tradeoff" class="ActiveSubmenuItemIcon" style="background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);"></div> <div id="ActiveSubmenuItemLabel_tradeoff" class="SubmenuitemLabel">Trade Off</div> <div class="RightChain" style="background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);"></div> </div> </a> Pra finalizar em index.php adicione esse code: case "tradeoff"; $topic = "Trade Off"; $subtopic = "tradeoff"; include("tradeoff.php"); break; - E pronto galera clica em GOSTEI e comenta no tópico.1 ponto -
[CTF] Capture The Flag 2.0(Automático)
[CTF] Capture The Flag 2.0(Automático)
Deathstroke reagiu a MaXwEllDeN por uma resposta no tópico
1 ponto#Introdução Este é um sistema de rouba bandeira, no qual tem dois times que se enfrentam e tentam se infiltrar na fortaleza do inimigo, roubar a bandeira dele e retornar para sua base com ela. #Instalação Faça o download do sistema (anexado ao tópico) e cole na pasta do seu servidor. Atualizado 28/03/2014 Após ter instalado os arquivos nas suas respectivas pastas e instalado as tags nos arquivos xml, abra a pasta do seu servidor, e em seguida abra a pasta spells/scripts/support, e abra o arquivo invisible.lua com algum editor de texto, depois de function onCastSpell(cid, var) cole isso: if (getPlayerStorageValue(cid, 16700) ~= -1) then return doPlayerSendCancel(cid, "Você não pode usar invisible durante o CTF!") and doSendMagicEffect(getThingPos(cid), 2) end ficando assim: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_INVISIBLE) setConditionParam(condition, CONDITION_PARAM_TICKS, 200000) setCombatCondition(combat, condition) function onCastSpell(cid, var) if (getPlayerStorageValue(cid, 16700) ~= -1) then return doPlayerSendCancel(cid, "Você não pode usar invisible durante o CTF!") and doSendMagicEffect(getThingPos(cid), 2) end return doCombat(cid, combat, var) end #Configuração Como na maioria dos meus códigos: as configurações ficam na lib, então: waitpos = {x = 93, y = 117, z = 6}, -- Posição da sala de espera tppos = {x = 92, y = 117, z = 7}, -- Onde o TP vai aparecer days = {2, 5, 7}, -- Dias que o evento vai abrir xp_percent = 0.5, -- Porcentagem de xp que o player vai receber quando ganhar timeclose = 1, -- Tempo para iniciar o CTF winp = 10, waitpos = {x = 93, y = 117, z = 6}, -- Posição da sala de espera Posição onde os players que entrarem no teleport vão ficar esperando, até o evento iniciar tppos = {x = 92, y = 117, z = 7}, -- Onde o TP vai aparecer Posição de onde o teleport vai aparecer days = {2, 5, 7}, -- Dias que o evento vai abrir Dias que o evento vai iniciar. xp_percent = 0.5, -- Porcentagem de exp que o player vai ganhar Quando o evento acaba, os players da equipe que venceu ganham uma quantidade de experiência baseada na experiência que eles já têm, exemplo: Meu player tem 1200000000 de exp, quando o evento acabar, ele vai ganhar 0.5% da exp que ele tem, no caso desse exemplo 6000000 de exp. timeclose = 1, -- Tempo, em minutos, para iniciar o CTF Tempo para o teleport sumir e os players que estão na sala de espera serem teletransportados para o evento. winp = 10, -- Quantos pontos uma equipe precisa marcar para vencer Quantos pontos uma equipe precisa marcar para vencer o evento. Para configurar o horário que o evento vai abrir, é só você modificar na tag do globalevents.xml: <globalevent name="CTFCheck" time="19:33:00" event="script" value="CTFMax.lua"/> Você não precisa criar as bandeiras pelo map editor. O script irá adicioná-las automaticamente. É isso, essa versão é uma remake, vários bugs reportados pela galera na v.1 foram corrigidos, o script ficou mais simples Capture The Flag.rar1 ponto -
PokeXLegend
PokeXLegend
MarcosGattini reagiu a padreesss por uma resposta no tópico
1 pontoOlá Pessoal Sou Novo Aki Vim Traser Meu 1° Post De Base Lendaria, Editei Essa Base Não Sei De Quem é a Base, Mais a Editei pra uma amigo mais ele não quis mais, dai eu resolvi pegar essa base so com megas de pokemons Bons vamos la. [Pokemons Adicionados] Arch Heatran. [100%] Hoopa Unbound. [100%] Shiny Hoopa Unbound. [100%] Genesect Star. [100%] Fallen Jirachi. [100%] Majestic Lugia. [100%] Black Kyogre. [100%] Black Groudon. [100%] Zygarde. [100%] Shiny Zygarde. [100%] Power Charizard. [100%] Shiny Power Charizard. [100%] Power Raichu. [100%] Shiny Power Raichu. [100%] Power Arcanine. [100%] Shiny Power Arcanine. [100%] Power Venusaur. [100%] Shiny Power Venusaur. [100%] Power Blastoise. [100%] Shiny Power Blastoise. [100%] Fotos: http://prntscr.com/bg3e47 [Boxs Adicionadas] Xerneas Box Level 6000. [100%] Yveatal Box Level 4000. [100%] [Sistemas Novos] Fotos: http://prntscr.com/bg3baw NPC [SHOP] Donate. [100%] Fotos: http://prntscr.com/bg3gzq NPC [SHOP] Stone. [100%] [Removidos Do Map] Megas De Boxs Trocados Por Power Pra Tirar um Pouco Do Lag. Retirado Lag [70%] [Removidos] Removidos Bugs [70%] Removido Bug Que Dava Erro Ao Logar No Account manager [100%] [Sprints De Todas Box Trocadas] Box1 a Box19. [Download] Servidor+Client: https://mega.nz/#!60EDlLiT!LnAvjmlPLZ_FDTHU3KG0pH0yVJ4md8BCM61s_ayIH4Y [Scan] Servidor+Client: https://www.virustotal.com/pt/file/5fc602ad54c6a668ca06daa96e24239c3c19b0c5e118e04af09abf9c31f16352/analysis/1466248383/ [Scan Avast] : Servidor+Client: http://prntscr.com/bhvydx [Contato] Facebook: https://www.facebook.com/everton.jesus.541 ponto -
Servidor PokeXPower V3 By Draw (ATUALIZADO Com A V3, 21/05/2016)
Servidor PokeXPower V3 By Draw (ATUALIZADO Com A V3, 21/05/2016)
Arl King reagiu a Mauro Sérgio por uma resposta no tópico
1 pontoBom Pessoal Esse é Meu Primeiro Post Aqui Então Se Não Estiver Na Areá Certa Por Favor Mova-o, Sem Mais Delongas Vamos Falar Do Servidor. Informações Básicas: O Servidor Contém 4 Gerações De Pokemons Completa, E Vários Shinys, Também Contem Mega Pokemons (Mais De 30), O Mapa é Parecido Com O Do OTPokemon, Varias Quests Interessantes Feitas. Os Servidor Tem Alguns Sistemas Tais Quais: Clãn System (No Total De 8, E Cada Um Da Outfit E Outras Coisas) Police Ou Rocket System, Permitindo O Player Escolhe Um Lado Da Força Kk (Ganha Tambem Uma Outfit Exclusiva) O Servidor Contém Tambem Boost Stone System (Boost Até +60) E Claro Não Podemos Deixa De Citar A Bike System Com Almento De Velocidade Configuravel. No Mapa Também Tem PVP E Trade Center (Para O PVP Funcionar Quando Ligar Serve Click Em World Type > PVP-Enforced. Falando Um Pouco Do Client... Bom Ele é Bem Comum é Um OTC Com Todas Função Funcionando. Erros: Alguns Faceis De Tirar Na Parte Dos Pokemon Sem Potrait Alguns Pokemon (Não Acho Que Seja Erro Pois Da Pra Por Facil) Prints: ATUALIZAÇÃO V3 Link Do Download Do Client E Servidor V1. http://www.4shared.com/rar/1tIOhOdOba/Base_PxP_Servidor_E_Client_V1.html Link De Download Do Client E Servidor V2. http://www.4shared.com/rar/ZMe4QFWDce/Pokemon_X_Power.html Link De Download Do Client E Servidor V3 http://www.mediafire.com/download/kx6kobli6va034s/Pokemon+X+Power.rar Scan: https://www.virustotal.com/pt/file/b830f6800401d37e8ac7d2b0ae809c5a79a472f2373ec5ac5d561ccc354dab11/analysis/1452782049/ Creditos A Mim Que Fiz Tudo, Mais Informações No Site: http://maurosg8.wix.com/dwpoketibia1 ponto -
Fire Storm Event "Tempestade de fogo" Automatico
Fire Storm Event "Tempestade de fogo" Automatico
Fabio Leandro reagiu a Klauguns por uma resposta no tópico
1 pontoBom galera a um tempo eu procuro esse evento os que eu encontrei aki não funcionou no meu ot e depois de muito procurar acabei encontrando em um outro fórum estrangeiro e resolvi trazer esse conteúdo pro tibiaking . Eu testei esse evento no tfs 0.4 rev 3777 criado por Luanluciano93 . chega de bla bla bla e vamos ao que interessa : Como funciona o evento ? O evento funciona da seguinte forma , assim que começar o evento os players devem digitar o comando " !fire join " logo apos ele é teleportado para dentro do evento onde deve aguardar o inicio da tempestade , em seguida desviar se o mais rápido da chuva de fogos se ele for atingido ele será teleportado para o templo e o ultimo player que ficar no evento se torna o vencedor . Na pasta do seu servidor tem uma pasta mods , abra essa pasta , copie e cole um arquivo com o nome w-fire.xml depois cole esse script dentro desse arquivo que tu criou . Agora vamos configurar o local que o player vai ser teleportado , a área que a tempestade de fogo vai cair , o local que o player atingido e o ganhador vai ser teleportado , os prêmios e o mais importante o horário que vai abrir o evento que é 100% automático .. Configurar prêmio: fireStormRewards = { random = false, rew = {2160,30,2494,1,2495,1} <<< aki esta configurado para dar 300k + demon armor + demon legs , configure a seu gosto Configurar posições : fireStormKickPosition = {x=160,y=51,z=7} <<< aki você coloca a posição do seu templo ou cidade que desejar , pois é o local onde o player será teleportado ao terminar o evento e os players que forem atingidos pela tempestade fireStormCenterRoomPosition = {x=767,y=959,z=7} <<< aki você vai colocar o local que o player será teleportado quando ele disser "!fire join" fireStormRangeX_RangeY = {51,50} <<< aki você vai colocar a area da tempestade quanto maior for os números , maior será a área atingida . <globalevent name="fireStormTime" time="23:25" event="script"> <<< aki você configura o horário que tu quiser . Se quiserem usar o mesmo mapa que usei é só clicar AQUI Pronto galera como eu apenas trouxe o conteúdo para o tibiaking e caso esteja contra as regras peço aos moderadores para retirar o tópico e quanto aos créditos eu realmente não sei quem criou esse sistema se alguém souber me informe que postarei os devidos créditos .1 ponto -
[Gesior] Widget Top Level BOX
[Gesior] Widget Top Level BOX
Thiagodourado1 reagiu a KekezitoLHP por uma resposta no tópico
1 pontoPara quem deseja ter um box igual a este em seu site: 1º Baixe o arquivo: http://www.sendspace.com/file/ejr1jt Virus Total: https://www.virustot...sis/1360784756/ 2º Extraia os arquivos na pasta do seu layout. 3º Abra layout.php e procure por: <div id="Themeboxes"> 4º Para quem tem pouco mais de experiencia vou falar da seguinte forma: Copie esta linha antes de fechar a div themeboxes. <?php include($layout_name.'/widget_rank.php'); ?> Para quem não entendeu o que eu disse, fica meio complicado explicar onde inserir a linha, então, depois desta linha que disse para pesquisar vá copiando a linha do passo 4º e atualizando o site até obter um resultado agradável. Meu layout.php fico assim: <div id="Themeboxes"> <div id="NewcomerBox" class="Themebox" style="background-image:url(<?PHP echo $layout_name; ?>/images/themeboxes/newcomer/newcomerbox.gif);"> <div class="ThemeboxButton" onClick="BigButtonAction('?subtopic=createaccount')" onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" style="background-image:url(<?PHP echo $layout_name; ?>/images/buttons/sbutton.gif);"><div class="BigButtonOver" style="background-image:url(<?PHP echo $layout_name; ?>/images/buttons/sbutton_over.gif);"></div> <div class="ButtonText" style="background-image:url(<?PHP echo $layout_name; ?>/images/buttons/_sbutton_jointibia.gif);"></div> </div> <div class="Bottom" style="background-image:url(<?PHP echo $layout_name; ?>/images/general/box-bottom.gif);"></div> </div> <div id="PremiumBox" class="Themebox" style="background-image:url(layouts/tibiacom/images/themeboxes/premium/premiumbox.gif);"> <div class="ThemeboxButton" onClick="BigButtonAction('?subtopic=donate')" onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" style="background-image:url(layouts/tibiacom/images/buttons/sbutton.gif);"><div class="BigButtonOver" style="background-image:url(layouts/tibiacom/images/buttons/sbutton_over.gif);"></div> <div class="ButtonText" style="background-image:url(http://i54.tinypic.com/25uqof8.gif);"></div> </div> <div class="Bottom" style="background-image:url(layouts/tibiacom/images/general/box-bottom.gif);"></div> </div> <?php include($layout_name.'/widget_rank.php'); ?> </div> Creditos Kekezitolhp Duvidas ou erros só pergunta1 ponto -
Como criar TalkAction de spellbook (!spells)
Como criar TalkAction de spellbook (!spells)
Fransuar N reagiu a lutavio2 por uma resposta no tópico
1 pontoe ae pessoal!! vou ensinar vcs a colocarem a uma TalkAction no seu ot 8.6 que serve para vcs verem o spellbook sem precisar te-lo apenas digitando !spells. 1º: primeiramente va na pasta do seu ot vá em data/talkactions e clique no arquivo xml chamado talkactions (vc pode abri-lo com bloco de notas ou com OTScript Live!) adicione a linha de comando em player se preferir <talkaction words="!spells" event="script" value="talkspellbook.lua"/> obs*: coloque como os outros! salve e feche 2º: depois vá em data/talkactions/scripts copie e cole um arquivo .lua (formato LUA) renomeie para talkspellbook abra-o apague tudo e cole: function onSay(cid, words, param, channel) local count = getPlayerInstantSpellCount(cid) local text = "" local t = {} for i = 0, count - 1 do local spell = getPlayerInstantSpellInfo(cid, i) if spell.level ~= 0 then if spell.manapercent > 0 then spell.mana = spell.manapercent .. "%" end table.insert(t, spell) end end table.sort(t, function(a, b) return a.level < b.level end) local prevLevel = -1 for i, spell in ipairs(t) do local line = "" if prevLevel ~= spell.level then if i ~= 1 then line = "\n" end line = line .. "Spells for Level " .. spell.level .. "\n" prevLevel = spell.level end text = text .. line .. " " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n" end doShowTextDialog(cid, words, text) return TRUE end SALVE E Feche agora abra seu ot e com qualquer player digite !spells que vai abri o spellbook! gente esse é meu primeiro post ake no tibia king espero que tenham gostado (clika em gostei pra me ajuda)1 ponto -
Npc que teleporta player para vários lugares...
local tab = { pos = {x = 1004, y = 1021, z = 7}, -- posição x, y, z do local a teleportar o player pos1 = {x = 1004, y = 1021, z = 7}, -- posição x, y, z do local a teleportar o player pos2 = {x = 1004, y = 1021, z = 7}, -- posição x, y, z do local a teleportar o player pos3 = {x = 1004, y = 1021, z = 7}, -- posição x, y, z do local a teleportar o player pos4 = {x = 1004, y = 1021, z = 7}, -- posição x, y, z do local a teleportar o player pos5 = {x = 1004, y = 1021, z = 7}, -- posição x, y, z do local a teleportar o player pos6 = {x = 1004, y = 1021, z = 7}, -- posição x, y, z do local a teleportar o player pos7 = {x = 1004, y = 1021, z = 7}, -- posição x, y, z do local a teleportar o player } local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if (not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid if (msgcontains(msg, 'lugar')) then selfSay('Boa viagem!', cid) doTeleportThing(cid, tab.pos) elseif (msgcontains(msg, 'lugar2')) then selfSay('Boa viagem!', cid) doTeleportThing(cid, tab.pos1) elseif msgcontains(msg, 'lugar3') then selfSay('Boa viagem!', cid) doTeleportThing(cid, tab.pos2) elseif msgcontains(msg, 'lugar4') then selfSay('Boa viagem!', cid) doTeleportThing(cid, tab.pos3) elseif msgcontains(msg, 'lugar5') then selfSay('Boa viagem!', cid) doTeleportThing(cid, tab.pos4) elseif msgcontains(msg, 'lugar6') then selfSay('Boa viagem!', cid) doTeleportThing(cid, tab.pos5) elseif msgcontains(msg, 'lugar7') then doTeleportThing(cid, tab.pos6) selfSay('Boa viagem.', cid) elseif msgcontains(msg, 'lugar8') then doTeleportThing(cid, tab.pos7) selfSay('Boa viagem.', cid) else return false end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())1 ponto
-
[DxP] Exclusivo Poketibia OpenSource+Cliente+Site+DB
Te recomendo um vídeo no youtube se quer fazer com site para deixar on:https://www.youtube.com/watch?v=qkz4-w2z1ik Mas se quiser deixar on sem usar site, é só pegar a config.lua das source e colocar na pasta do servidor, quando pedir p substituir, substitua.1 ponto
-
Procuro ajuda MULTI ARROWs
1 pontoTenta copiar o erro do distro que dá, lá geralmente mostra a linha, ficaria mais fácil identificar o problema. Sugiro que dê melhor nome para seu titulo, fica muito vago "Procuro ajuda", tente ser mais especifico, claro no que procura ajuda.1 ponto
-
(Resolvido)Da um HELP aqui !
(Resolvido)Da um HELP aqui !
bebemeiohomem reagiu a Thiago Rulexz por uma resposta no tópico
1 pontoDownload Scan1 ponto -
[Resolvendo] Exit-Trainer
1 pontoOlá, muitos hoster de OT Server e inclusive HOSTER de Baiak sofre com esse problema Alguns deixam ele mesmo pra dá player, outros não gostam (COMO EU), isso causa a banição de 30 dias no OT Server List Nesse Tópico irei ensinar a quem não sabe arrumar esse pequeno erro chato dos OT Server Em creaturescripts > creaturescript.xml adiciona isso: <!-- Idle --> <event type="think" name="Idle" event="script" value="idle.lua"/> Agora em creaturescripts > scripts > idle apague tudo oque está lá e coloca isso: local config = { idleWarning = getConfigValue('idleWarningTime'), idleKick = getConfigValue('idleKickTime') } function onThink(cid, interval) if(getTileInfo(getCreaturePosition(cid)).nologout or getCreatureNoMove(cid) or getPlayerCustomFlagValue(cid, PlayerCustomFlag_AllowIdle)) then return true end local idleTime = getPlayerIdleTime(cid) + interval doPlayerSetIdleTime(cid, idleTime) if(config.idleKick > 0 and idleTime > config.idleKick) then doRemoveCreature(cid) elseif(config.idleWarning > 0 and idleTime == config.idleWarning) then local message = "You have been idle for " .. math.ceil(config.idleWarning / 60000) .. " minutes" if(config.idleKick > 0) then message = message .. ", you will be disconnected in " local diff = math.ceil((config.idleWarning - config.idleKick) / 60000) if(diff > 1) then message = message .. diff .. " minutes" else message = message .. "one minute" end message = message .. " if you are still idle" end doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, message .. ".") end return true end Agora em Creaturescripts > Scripts > login.lua adiciona essa tag: registerCreatureEvent(cid, "Idle") Pra você alterar o tempo do exit basta abrir o config.lua e configura-lo nessa parte aqui: idleWarningTime = 9 * 60 * 1000 idleKickTime = 10 * 60 * 1000 É isso galera, qualquer dúvida só postar aqui. OBS: Esse tópico não foi copiado, nem pegado de nenhum site/fórum, eu criei esse tópico todo, então, se for postar em outro fórum coloque os créditos.1 ponto
-
Spell-maker Para um Servidor de Naruto {Help}
Spell-maker Para um Servidor de Naruto {Help}
Matheus Reis reagiu a cocazul por uma resposta no tópico
1 ponto{ Spell-maker} Ola Galera então queria sabe se existe algum spell maker Compativel com um Servidor de Naruto 8.54 tendo as Sprites das spells. Ex: quando eu for usa o spell-maker quero coloca minhas sprites do meu cliente nele Eu tentei use em um Spell maker que eu usava pra tibia mas n deu certo parace que n e compativel oque quero faze acha algum spell maker compativel com meu cliente 8.54 talves e pq as sprites das spells n foi compativel com o sistema do spell maker pq ele e so pra tibia ai se mudou as sprites deu error ne. Então oque eu quero e simplesmente um Spell maker compativel com meu cliente naruto 8.54 que de pra adiciona minhas sprites de spell nele. e nem vem fala pra mim passa o cliente que n e necessario e pq qualquer cliente de naruto e quase tudo mesma coisa so muda as sprites versão 8.54 Ou alguem poderia me ensina um jeito de arruma a spell como coloca o efeito que sai nele vo passa uma aqui. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- //spells.lua// local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ANI_SHIVERARROW) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_NONE) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 35, 38, 55, 58) local arr= { {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, {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,0,0,1,0,0,0,0,0}, {0,0,0,0,0,2,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0}, } local area = createCombatArea(arr) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- spells.xml <instant name="Kattatonot" words="Kakunotonout" aggressive="0" lvl="300" maglv="35" mana="5000" soul="2" needtarget="1" direction="0" exhaustion="0" prem="0" enabled="1" needlearn="0" script=".lua"><vocation name="Paladin"/></instant> Como Pode ver ela n tem o id do Efeito de ira sair ao hitar o alvo ou o efeito que ira sair quando o player fazer o jutsu. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Uma Spells.lua Que e criada sem progama. local config = { efeitoTele = 3, -- efeito q ira aparacer a cada teleport. efeitoDamage = 134, -- efeito q ira aparecer ao hitar no alvo hits = 1, -- quantos hits vai dar delay = 500, -- intervalo de tempo a cada hit min = 3000, -- dano minimo max = 5400, -- dano maximo damage = COMBAT_PHYSICALDAMAGE -- tipo do dano } function isWalkable(pos, creature, pz, proj) -- 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 not pz then return false end local n = not proj and 3 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 getPosDirs(p, dir) -- mkalo return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z} end function validPos(pos) tb = {} for i = 1, 8 do newpos = getPosDirs(pos, i) if isWalkable(newpos) then table.insert(tb, newpos) end end table.insert(tb, pos) return tb end spell141 = { start141 = function (cid, target, markpos, hits) if not isCreature(cid) then return true end if not isCreature(target) or hits < 1 then doTeleportThing(cid, markpos) doSendMagicEffect(getThingPos(cid), config.efeitoTele) return true end posAv = validPos(getThingPos(target)) rand = #posAv == 1 and 1 or #posAv - 1 doSendMagicEffect(getThingPos(cid), config.efeitoTele) doTeleportThing(cid, posAv[math.random(1, rand)]) doAreaCombatHealth(cid, config.damage, getThingPos(target), 0, -config.min, -config.max, config.efeitoDamage) addEvent(spell141.start141, config.delay, cid, target, markpos, hits - 1) end } function onCastSpell(cid) local position1 = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y+1, z=getThingPosition(getCreatureTarget(cid)).z} target = getCreatureTarget(cid) if target then spell141.start141(cid, target, getThingPos(cid), config.hits) doSendMagicEffect(position1, 138) end return true end simplesmente ali 134 o efeito da spells no progama que uso n tem nada de poder escolher entao ja e mais complicado cria spells de naruto com progama assim. eu queria sabe onde acha na pasta do ot os numeros de efeito de cada spells ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Imagem Mostrando um progama que achei pra cria spells so pra cliente tibia. :/ Então galera esse e um progama pra cria spells pra tibia como pode ver na imagem queria um progama pra cria spells para naruto pq ali mostra elementos e efeito de tibia ai fica ruim ou alguem poderia me ensina a quando eu cria a spells por esse progama me ensina a modificala pra fica compativel com meu ot. +rep pra quem ajudaaa Pls UP PELO MENOS ALGUEM LE O TOPICO NINGUEM ATE AGORA DEU UMA OLHA AFF1 ponto -
(Resolvido)Como criar client Próprio com New client [POKETIBIA]
(Resolvido)Como criar client Próprio com New client [POKETIBIA]
MichelLahn reagiu a Factur por uma resposta no tópico
1 pontoVá para Modules/Client_Entergame/ Neste local abra o arquivo chamado "Entergame.lua" Ápos abri-lo Segure CTRL e aperte F Em Localizar escreva UniqueServer Marque a opção Abaixo Clicke em Localizar Próxima Você vai parar neste código --EnterGame.setUniqueServer(hostName, port, protocolVersion, windowWidth, windowHeight) EnterGame.setUniqueServer('pokevicio.ddns.net', 7171, 854, 270, 210) Edite Nesta linha: Onde está escrito pokevicio.ddns.net é o ip, apague ele e coloque o seu Bom agora feche salve e se conecte Se funcionou marque um Gostei e um Melhor Resposta1 ponto -
Como criar um script de quest
1 pontoComo criar um Script de quest Bom é bem simples fazer um Script de Quest, mais tem muita gente que ainda não sabe então irei ensinar através deste tópico. Primeiramente vá até a pasta "Actions" e depois vá em "Scripts" agora faça um arquivo chamadoQuest1.lua, e bote isso dentro dele: return TRUE end Legenda: Vermelho: É a Storage pode colocar qual quer numero, mais ele não deve existir em outra actions. Azul: É o ID do item. Agora volta na pasta "Actions" e abra o arquivo "Actions.xml" e coloque isto dentro dele: Agora para terminar a quest vá no Baú no seu mapa editor e bote o ActionID nele que no caso é "9595" observe a foto: Foto eu editei pelo paint nao ta uma grande coisa mais da pra ter uma ideia de como e1 ponto
-
(Resolvido)[PEDIDO] Editar Items.
(Resolvido)[PEDIDO] Editar Items.
Rodrigo94 reagiu a xWhiteWolf por uma resposta no tópico
1 pontoVocê coloca no items.xml oque vc quer que o item faça, experimenta usar comandos de itens parecidos: Exemplo: Quero que o set de Knight dê skill de club/sword/axe.. daí vc procura algum item que faça isso e só copia a parte que aumenta a skill <attribute key="skillSword" value="3" /> <attribute key="skillAxe" value="3" /> <attribute key="skillClub" value="3" /> Se você quiser que aumente distance é só colocar <attribute key="skillDist" value="3" /> para absorver danos é bem simples <attribute key="absorbPercentPhysical" value="3" /> <attribute key="absorbPercentEarth" value="5" /> <attribute key="absorbPercentDeath" value="6" /> <attribute key="absorbPercentFire" value="-3" /> <attribute key="absorbPercentIce" value="2" /> Perceba que o PercentFire está negativo, é porque ele tem fraqueza contra fogo, positivo ele é bom contra o elemento, negativo ele é fraco contra o elemento. Pra aumentar ML é só usar: <attribute key="magiclevelpoints" value="1" /> Pra aumentar speed é só procurar a BOH e copiar: <attribute key="speed" value="20" /> E não esquece de colocar no final <attribute key="showattributes" value="1" /> para que apareçam os atributos quando o player der look no item. Em <attribute key="slotType" value="necklace" /> Você escolhe que tipo de item aquilo é, os values são: body, two-handed, one-handed, ammo, ring, necklace, legs, feet, head, backpack E PARA FINALIZAR DECLARE TUDO NO MOVEMENTS.XML: <movevent type="Equip" itemid="IDDOITEM" slot="TIPO DE SLOT" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="IDDOITEM" slot="TIPO DE SLOT" event="function" value="onDeEquipItem"/> itemid="IDDOITEM" troque IDDOITEM pelo ID DO ITEM (BEM ÓBVIO, NÉ?) slot="TIPO DE SLOT" coloque um dos slots possíveis, os que são possiveis estão nessa lista aqui: armor feet legs head shield pickupable necklace ring OBSERVAÇÃO FINAL: O SLOT QUE VC DECLARAR NO MOVEMENTS TEM QUE SER DO MESMO TIPO QUE O ITEMS.XML ------------------------------------------------------------------------------------------------------------------------------------------------------------------- Agora as flechas/bows/armas: Essas não precisam declarar no movements.xml mas precisam de um script no weapon.xml 1) Flechas As flechas são bem simples: <attribute key="slotType" value="ammo" /> <attribute key="attack" value="25" /> <attribute key="maxHitChance" value="90" /> <attribute key="weaponType" value="ammunition" /> <attribute key="ammoType" value="arrow" /> <attribute key="shootType" value="arrow" /> slotype = ammo para ficar no lugar da munição (ammo) Attack vc muda a vontade pro que vc quiser MaxHitChance = chance de acertar o hit, qualquer numero menor que 100 apresenta uma chance do hit falhar WeaponType= Tipo de arma, flechas são munições então deixe sempre ammunition ammoTyoe = Tipo de munição, pode ser "arrow" ou "bolt" dependendo doque vc quiser usar, um bow ou um crossbow shootType é o efeito que vai sair, no caso dessa aí seria uma arrow normalzinha mas vc pode colocar qualquer flecha que exista ou até mesmo copiar efeitos de runas Dê ctrl+F no items.xml em shootType e copie diferentes tipos e vá vendo no servidor qual se encaixa melhor na sua opinião. 2) Bows e Crossbows Eu te aconselho copiar de algum item que já exista o modificar oque você quiser <attribute key="slotType" value="two-handed" /> <attribute key="weaponType" value="distance" /> <attribute key="ammoType" value="bolt" /> <attribute key="range" value="5" /> <attribute key="hitChance" value="1" /> isso daqui é um crossbow duas mãos que ataca bolt (podia ser arrows tb) a uma distância de no máximo 5 SQM (modifique o range) a chance de hit padrão dele é 1 e essa hit chance soma com a da munição 3) Wands e Rods <attribute key="weight" value="2900" /> <attribute key="weaponType" value="wand" /> <attribute key="shootType" value="ice" /> <attribute key="range" value="3" /> peso, tipo (mesmo que seja uma rod o tipo é "wand"), tipo de efeito que sai dela (no caso é o ice), distância que ataca (no caso, 3 sqm) Agora no weapons.xml: <wand id="2190" level="7" mana="2" min="8" max="18" type="energy" event="function" value="default"> <!-- Wand of Vortex --> <vocation id="1"/> </wand> id do item, level pra usar, custo de mana por hit, dano minimo e maximo, tipo de ataque, event (deixe function para ele fazer tudo que vc colocou no items.xml) value= não mexa a menos que vc seja um programador C++, vocation vc coloca as classes que podem usar. 1= sorc, 2= druid, 3= pally, 4= kina, 5= master sorc, 6= elder druid, 7= royal pally, 8= elit kina OBS: Você pode colocar isso também para que quando o player dê look não apareça o nome da classe que pode usar aquele determinado item (isso é util quando vc declarar que ambos sorceres e master sorcerers podem usar o item, evitando as repetições quando o player der look no item <vocation id="5" showInDescription="0"/> <vocation id="1"/> 4) Outros tipos de arma É bem simples, só edite oque quiser seguindo o modelo: <attribute key="weight" value="6800" /> <attribute key="defense" value="65" /> <attribute key="attack" value="90" /> <attribute key="weaponType" value="sword" /> <attribute key="extradef" value="5" /> <attribute key="elementIce" value="30" /> <attribute key="slotType" value="two-handed" /> <attribute key="decayTo" value="2401" /> <attribute key="duration" value="60" /> weight = peso defense= defesa q ela dá attack = ataque weapontype = Tipo de arma (sword, axe, club) extradef = defesa extra (fica Defesa 65 +5 nesse caso) ElementIce = adiciona dano elemental à arma, pode usar também ElementFire, ElementEarth e ElementEnergy slotType = se a arma é duas mãos ou não (caso não seja apenas retire essa linha) decayTo = apos um tempo igual a duration (em segundos) ela vira o item de ID 2401 (se não quiser isso apenas remova essas duas ultimas linhas) OBSERVAÇÃO FINAL: Tudo que você não quiser utilizar é só remover a linha do items.xml, e todo tipo de edição em armas deve ser declarado no weapons.xml seguindo o exemplo. (COMO VOCÊ NÃO TÁ CRIANDO NENHUM ITEM E SIM EDITANDO OS QUE JÁ EXISTEM EU TE ACONSELHO A PROCURAR O ITEM LÁ DANDO CTRL F E PROCURANDO PELO ID DOQUE SAIR ADICIONANDO UM MONTE DE LINHA A MAIS QUE TALVEZ DÊ CONFLITO COM AS QUE JÁ EXISTAM). OS ITENS QUE VC COLOCAR PRA DAR SKILL, ML OU PORCENTAGEM ELEMENTAL VOCÊ DEVE DECLARAR NO MOVEMENTS.XML E SE ESSE ITEM FOR PARA UMA DETERMINADA VOCAÇÃO VOCÊ DEVE DECLARAR TAMBÉM SEGUINDO O EXEMPLO: <movevent type="Equip" itemid="7886" slot="feet" event="function" value="onEquipItem"> <vocation id="1"/> <vocation id="5" showInDescription="0"/> <vocation id="2"/> <vocation id="6" showInDescription="0"/> </movevent> <movevent type="DeEquip" itemid="7886" slot="feet" event="function" value="onDeEquipItem"/>1 ponto -
[Resolvido] Tibia .dat e spr que funcione em Item editor 8.60
[Resolvido] Tibia .dat e spr que funcione em Item editor 8.60
Xafixav reagiu a Adriano SwaTT por uma resposta no tópico
1 pontoA diferença é que, um edita o Items.otb, que é na pasta do server e o outro edita o Client. :x Baixe o ItemEditor 0.5.1 este edita o item no server. E o que passei edita o Client. Creio que tenha aqui no forum. Abraços e boa sorte.1 ponto