Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 08/31/15 em todas áreas

  1. Eae 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 REP
  2. [8.54] Servidor + Client Naruto B&W [EXCLUSIVO]

    LoLos reagiu a Eytor por uma resposta no tópico

    1 ponto
    OLÁ USUARIOS DO TIBIA KING .. HOJE ESTAREI TRAZENDO UMA NOVIDADE .. O SERVIDOR DE NTO EXCLUSIVO DO NTO BLACK & WHITE(AKELE OT NOVO QUE FOI CRIADO A 1 MES POR E MIN E POR O [ADM] Johnatan). VALE LEMBRAR QUE O NTO BLACK WHITE FOI UM DOS SERVIDORES DE NARUTIBIA QUE MAIS CRESCEU NOS ULTIMOS TEMPOS .. EM APENAS 1 SEMANA DE NTO JÁ ATINGIMOS A META DE 70 ~ 80 USUARIOS ONLINE FIXOS DIARIOS, E ESSE É O SERVIDOR MAIS RECENTE DO NTO BLACK WHITE BASEADO NO DO SERVIDOR MADARA RINNEGAN EDITADO POR MIN E POR O JOHNATA. ANTES DE MAIS NADA GOSTARIA DE EXPLICAR O MOTIVO DE TAR POSTANDO O SERVER .. BEM O JOHNATAN ERA QUEM FAZIA PRATICAMENTE TUDO NAS ATUALIZAÇÕES E TAALS .. POREM ELE PAROU COM NTO AI TIVE QUE DESMONTAR O NTO B&W PORQUE EU NÃO TINHA CONDIÇÕES PRA DAR CONTA DO NTO SOZINHO. CHEGA DE BLABLA E VAMOS LÁ!! [+] NOVIDADES & CARACTERISTICAS [+] ERROS E BUGS [+] PRINTS DO SERVER [+] DOWNLOAD [+] CREDITOS [+] NOVIDADES & CARACTERISTICAS [+] ERROS E BUGS [+] PRINTS DO SERVER [+] Downloads Servidor Naruto B&W: Clique Aqui Client(descompilado): Clique Aqui [+] Creditos - Madara Rinnegan (servidor base) - [ADM] Johnata Editar Praticamente Todo o Servidor - Eu Por umas Besteiras q eu Coloquei e Por Postar GOSTOU DO SERVIDOR? DA UM REP++
  3. [8.6] Tibia Harry Potter

    mattei123 reagiu a johnmlkzika por uma resposta no tópico

    1 ponto
    HARRY POTTER ONLINE Servidor TIBIA HARRY POTTER Alguma vez voce pensou que poderia ser um aluno de HOGWARTS? Agora é sua chance! Venha para o Harry Potter Online e fassa amigos, pegue varinhas, voe de vassoura e muito mais! Estou disponibilizando o servidor pois meu projeto do Harry Potter Online foi por agua abaixo, por causa de um cara que conseguiu rippar as sprites do quilante... Meu projeto já estava 90% andado, mas agora ferrou-se tudo. Então estou mandando a parte do meu projeto que está pronta, porem com sprites do quilante (Já ESTA TUDO ADAPTADO) - O QUE VOCE VAI TER QUE FAZER: Ajustar o servidor... Já estou te dando quase tudo de mao beijada, agora é só fazer alguns ajustes. Como: adicionar NPC, fazer action de compra de TOGA, e coisas simples! Bem.. é isso aproveitem! Distro Totalmente Estavel Sem bugs Sem virus Sem motherfuckingthings! Apenas alegria! -O QUE TEM NO SERVIDOR: •1 Classes: Aluno •O player ao upar um level, ganha "POINTS" para trocar por LIFE OU MANA assim torna o jogo mais sensivel •Mapa Proprio •JA EXISTE VIP E DONATES - AJUSTE PARA O NESCESSARIO -O QUE FALTA NO SERVIDOR: •AJUSTAR LIFE/HIT/LOOT DE MONSTROS - AJUSTAR OS SPRITES DAS HORCRUX (MAS O SISTEMA JA ESTA FUNCIONANDO CORRETAMENTE) -SISTEMAS: • Vassoura • Preparar poçoes (voce pega o axe [iD:2386], usa-o naqueles crystais que estaão espalhados pelo servidor, e com o crystal na backpack, use a magia "preparar", isso vai fazer com que seu caldeirão tenha carga,dai voce poderá dar USE no vial em cima do caldeirão para terminar sua poção!) -SITE HTML INCLUSO! DOWNLOAD: http://depositfiles....files/csh0uuxil http://depositfiles....files/csh0uuxil (INCLUSO: SERVIDOR, CLIENTE, SITE) SCREENS: REP+ PRA MIM POW! SCAN: https://www.virustot...sis/1342184200/ Por Virus Total CREDITOS: Beddy Erickrusha - fez a parte do mapa do entorno de HOGWARTS,obrigado man! Johnmlkzika Por Ter Compartlhado
  4. Global 11/12x [v32] - New Falcons - New Asuras - Warzone 4,5,6 - Exercise Training - Raids 100% - Monstros 100% - Trainer Offline 100% - Trainer Online 100% - Taming system funcionando 100%; - Database completa - War System 100% - Global MAP Full - Store 100% - Imbuement - Prey System - Entre outros sistemas. Projeto no: GITHUB Scan Vírus Total IMAGES Créditos:
  5. Anél de Experiência' [Exp Ring]

    HaragOT reagiu a Adriano SwaTT por uma resposta no tópico

    1 ponto
    Eu tentei achar aqui no TibiaKing o Anél de Experiência (Ring of Experience ou Exp Ring), e só achei um tutorial, mas está meio imcompleto e confuso... No entanto decidi postar este que criei há alguns meses. Como o nome diz, é um anél que aumenta a experiência de sua caçada' (configurável) \o/ Vamos lá... 1º Passo 2º Passo <movevent type="Equip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/> <movevent type="DeEquip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/> <movevent type="Equip" itemid="7708" slot="ring" event="script" value="exp_ring.lua"/> <movevent type="DeEquip" itemid="7708" slot="ring" event="script" value="exp_ring.lua"/> Pronto, em "movements.xml" é só. 3º Passo Aqui, temos duas opções... O Exp Ring Tradicional é para server com Experiência fixa, ou seja, a EXP é sempre a mesma.. Já o Exp Ring por Stages é para server que a Experiência varia de acordo com o level do player. Clique no Spoiler referente ao seu server. EXP RING Tradicional: function onEquip(cid, item, slot) doTransformItem(item.uid, 7697, 1) doPlayerSendTextMessage(cid, 22, 'Agora ganha 2x mais experiencia!') doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")*0.2) return TRUE end function onDeEquip(cid, item, slot) doTransformItem(item.uid, 7708, 1) doPlayerSendTextMessage(cid, 22, 'Experiencia extra cancelada.') doPlayerSetExperienceRate(cid, 1) return TRUE end EXP RING por Stages: function onEquip(cid, item, slot) local rate = {} if getPlayerLevel(cid) <= 200 then rate = 1.3 elseif getPlayerLevel(cid) > 200 and getPlayerLevel(cid) <= 280 then rate = 1.15 elseif getPlayerLevel(cid) > 280 then rate = 1.05 end doTransformItem(item.uid, 7697, 1) doPlayerSendTextMessage(cid, 22, "Sua experiencia foi aumentada em "..((rate - 1)*100).." %.") doPlayerSetExperienceRate(cid, rate) return TRUE end function onDeEquip(cid, item, slot) doTransformItem(item.uid, 7708, 1) doPlayerSendTextMessage(cid, 22, "Sua experiencia esta de volta ao normal.") doPlayerSetExperienceRate(cid, 1.0) return TRUE end Salve-o e feche o arquivo. Para aprender configurar a rate do Script clique no spoiler abaixo: Azul: É o valor em vezes que aumentará a experiência. Ex: Onde está o "2" no código, você pode substituir por quantas vezes que que seja a multiplicação da EXP' (2 é igual a 2x mais Exp)... Ou pode por em porcentagens usando como está abaixo: 1.5 = 50% 1.2 = 20% E assim sucessivamente. Se quer um Anel de Experiencia Recarregável (como soft boots), clique no Spoiler abaixo. Configurações do NPC: Recolhe: "broken experience ring" Custo: "50k" Devolte: "Brand-New Experience Ring" 5º Passo É, acho que é isso... Qualquer coisa postem aqui para resolvermos juntos. Eu editei o Script, criei o NPC e criei o Tutorial. Créditos pelo tutorial: AdrianoSwaTT Créditos pelo Exp Ring Stages: Vodkart Créditos pelo Script: OTLand Abraços, espero que seja útil' 2º Passo <movevent type="Equip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/> <movevent type="DeEquip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/> <movevent type="Equip" itemid="7708" slot="ring" event="script" value="exp_ring.lua"/> <movevent type="DeEquip" itemid="7708" slot="ring" event="script" value="exp_ring.lua/"> Pronto, em "movements.xml" é só. 3º Passo function onEquip(cid, item, slot) doTransformItem(item.uid, 7697, 1) doPlayerSendTextMessage(cid, 22, 'Agora ganha 2x mais experiencia!') doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")*0.2) return TRUE end function onDeEquip(cid, item, slot) doTransformItem(item.uid, 7708, 1) doPlayerSendTextMessage(cid, 22, 'Experiencia extra cancelada.') doPlayerSetExperienceRate(cid, 1) return TRUE end 4º Passo <!--?xml version="1.0" encoding="UTF-8"?--> <npc name="Joalheiro" script="data/npc/scripts/Sell/ring_repair.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"> <look type="128" head="40" body="37" legs="116" feet="95" addons="0"> <parameters> <parameter key="message_greet" value="Just great, another ... 'customer'. Hello, |PLAYERNAME|. If you want to trade, let's get it over with."> <parameter key="message_farewell" value="That's music in my ears."> <parameter key="message_walkaway" value="Yeah, get lost."> <parameter key="message_onsendtrade" value="Yeah, buy something."> <parameter key="module_shop" value="1"> </parameters> </npc> Salve e feche. Agora vá na pasta ( Data / NPC / Scripts / Sell ) e crie um arquivo com o nome "ring_repair.lua" (pode copiar um arquivo existente e renomeá-lo). Após fazer isto, abra este arquivo (ring_repair.lua) e cole o código abaixo dentro. Obs: se tiver algo escrito do arquivo, apague-o e deixe somente o código abaixo. 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, 'ring') or msgcontains(msg, 'experience')) then selfSay('Do you want to repair your experience ring for 50000 gold coins?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if(getPlayerItemCount(cid, 2122) >= 1) then if(doPlayerRemoveMoney(cid, 50000) == TRUE) then doPlayerRemoveItem(cid, 2122, 1) doPlayerAddItem(cid, 7697) selfSay('Here you are.', cid) else selfSay('Sorry, you don\'t have enough gold.', cid) end else selfSay('Sorry, you don\'t have the item.', cid) end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then talkState[talkUser] = 0 selfSay('Ok then.', cid) return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Salve e feche.
  6. Trade OFF - Shop Offline

    Trunksontibia reagiu a Natanael Beckman por uma resposta no tópico

    1 ponto
    Esse 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.
  7. 1 ponto
    fala ae galera bom como prometido fiz uma video-aula encinando a configurar o seu xampp versão (1.7.3), abrir porta no roteador, abrir portas no firewall, configurar o config.lua, o config do site (modern acc), rápida explicação de como criar ip no, no-ip. acho que é isso bom espero que ajude vocês fiquem com o video: DOWNLOAD: Xampp 1.7.3 ASSISTA EM HD https://www.youtube.com/watch?v=Z2r2wGWpVWU tópico para configurar root, do seu xampp Clique Aqui o tópico é bem explicativo para se algum passo que você não entender da video aula pode também olhar no tópico. se gostou da +rep créditos Brunds (pelo video) alissonfgp (pelo tópico)
  8. 1 ponto
    OTChecker é uma ferramenta para jogadores e OT admins. O sistema coleta informações de jogadores e OT Servers e as utiliza para enviar notificações. Para jogadores: Encontre os melhores servidores e veja informações legais sobre eles. Você pode receber notificações quando um jogador for visto online ou avançar de level. Além disso, você pode seguir seus servers favoritos e saber quando eles estiverem offline, dentre outras opções. Para admins: Dê ao seu OT uma página bonita, mais visibilidade e veja informações úteis. Configure canais de notificação e aumente a competitividade entre seus jogadores. Diversas opções estão disponíveis. Beta test liberado! Lembre-se de selecionar o pacote Beta Tester ao criar sua conta. Site: https://otchecker.net Alguns guias: Como adicionar um server na OT List/Grid Aumentando o tamanho máximo das Network Messages Configurando notificações de OTServers e Players
  9. 1 ponto
    Fala galera, hoje venho trazer um mapa editado por mim umpouco parecido com o "BaiakWars" vamos lá oque contem nesse baiak? -Novo Templo -Castle 24HRS (Unico) com aviso de invasores -Paladin arrumado, agóra pode healar com potion e atacar ao mesmo tempo -Utito Tempo San Arrumado Agóra não da mais Exausted em outras magias -Dodge System -Critical System -Itens Donates para vender no Site ou no Jogo -Itens VIP a mostra no templo -Todos itens DONATES dando as skills normalmente -Vários Teleports -Novas Hunts -Look Frags -Potions Editadas -War System -Muitas quests -City editada para um PvP muito melhor -Arena PVP -Fast Attack ROX Para melhor PvP -Quest de set free para Pally/Kinas -Quest de set free para Mages -quest para armas editadas -Treiners com novos visual -30% a mais de experiencia para players donates -10% a mais de experiencia para guild que domina o Castle 24HRS E muito mais! Comandos principais: !dodoge !critical !stamina !aol !bless !notice. Vamos as imagens: templo http://imgur.com/eY4hWyI teleports http://imgur.com/Xd8YUg8 Quests http://imgur.com/o9beGwi castle http://imgur.com/CfAiSBI hunts do castle http://imgur.com/4ix1RD7 area donate http://imgur.com/NGWOA7H Acc do GOD: 5/god Download :http://www.4shared.com/rar/hlajskCyce/DiegoWars.html Scan: https://www.virustotal.com/pt/file/7585ec4867213d5f9230eb1f554a4f320756c37db53406f2b9b80e1d75037cbf/analysis/1413409264/ Créditos Dieguiin XP Marcos Vinicius OBS: Decupem se o tópico ficou meio bagunçado Gostou? Da um Rep+
  10. Obrigatoriamente leia tudo! Atualizado 01/07/2014 Opa galera mais uma vez eu trazendo o melhor para todos. Hoje vou postar o sistema de Guild de Points que eu utilizo em meu OTserver, acredito que dificilmente será encontrado por ae um tão completo e sem bugs igual o que será postado logo abaixo, é um sistema completo que é utilizado pelo líder da guild executando um comando que, se tiver de acordo com as regras que seram feitas por você, todos os membros da guild iram receber os pontos uma unica vez, lembrando que quando os pontos são adicionados a um player ele não receberá entrando em outra guild e não receberá criando outro personagem na conta, resumindo ele só receberá uma unica vez na conta e com um player só. E um dos detalhes que me causava dor de cabeça era que quando um líder executava o comando, quem estava online recebia os pontos, mais quem estava offline não recebia, isso acontecia normalmente porque tem guilds que contém 50, 70, 100 players, portanto nem sempre todos estavam online. O comando só pode ser executado uma vez por dia cada guild, para não gerar processamentos desnecessários e assim um mal funcionamento do servidor. Cada administrador pode configurar seu sistema da forma que quiser, por ser um sistema muito simples, você pode bota que todos os players estejam no minimo level x, que a guild só possa executar o comando quando estiver quantidade x de players online, isso é bom porque traz um certa dificuldade para fraudes de pontos, e o sistema só vira bagunça dependendo do que você vai oferecer no seu shop guild, eu particularmente só utilizei esse comando porque muitas guilds grandes pediam pontos, eles me cobravam uma quantidade x de pontos e eu cobrava uma quantidade x de player então pra automatizar o processo e não ter dor de cabeça foi feito todo esse sistema. Se você analisar bem vai ver que tudo isso só gera mais crescimento ao seu servidor. Bom, vamos ao sistema: Em talkactions.xml, adicione a tag abaixo: <talkaction words="!guildpoints" event="script" value="guildpoints.lua"/> Na pasta talkactions/scripts faça um .lua com o nome guildpoints e dentro dele adicione os coder abaixo: GuildPointsConfigs = { ExecuteIntervalHours = 24, NeedPlayersOnline = 10, NeedDiferentIps = 6, MinLevel = 80, AddPointsForAcc = 9 } function getGuildPlayersValidAccIDS(GuildID, MinLevel) local RanksIDS = {} local AccsID = {} local ValidAccsID = {} Query1 = db.getResult("SELECT `id` FROM `guild_ranks` WHERE guild_id = '".. GuildID .."'") if(Query1:getID() == -1) then return ValidAccsID end for i = 1, Query1:getRows() do table.insert(RanksIDS, Query1:getDataInt("id")) Query1:next() end Query2 = db.getResult("SELECT `account_id` FROM `players` WHERE `rank_id` IN (".. table.concat(RanksIDS, ', ') ..") AND `level` >= ".. MinLevel .."") if(Query2:getID() == -1) then return ValidAccsID end for i = 1, Query2:getRows() do local AccID = Query2:getDataInt("account_id") if #AccsID > 0 then for k = 1, #AccsID do if AccID == AccsID[k] then AddAccList = false break end AddAccList = true end if AddAccList then table.insert(AccsID, AccID) end else table.insert(AccsID, AccID) end Query2:next() end Query3 = db.getResult("SELECT `id` FROM `accounts` WHERE `guild_points_stats` = 0 AND `id` IN (".. table.concat(AccsID, ', ') ..")") if(Query3:getID() == -1) then return ValidAccsID end for i = 1, Query3:getRows() do local AccID = Query3:getDataInt("id") if #ValidAccsID > 0 then for k = 1, #ValidAccsID do if AccID == ValidAccsID[k] then AddAccList = false break end AddAccList = true end if AddAccList then table.insert(ValidAccsID, AccID) end else table.insert(ValidAccsID, AccID) end Query3:next() end return ValidAccsID end function onSay(cid, words, param, channel) if(getPlayerGuildLevel(cid) == 3) then local GuildID = getPlayerGuildId(cid) Query = db.getResult("SELECT `last_execute_points` FROM `guilds` WHERE id = '".. GuildID .."'") if(Query:getID() == -1) then return true end if Query:getDataInt("last_execute_points") < os.time() then local GuildMembers = {} local GuildMembersOnline = {} local PlayersOnline = getPlayersOnline() for i, pid in ipairs(PlayersOnline) do if getPlayerGuildId(pid) == GuildID then if getPlayerLevel(pid) >= GuildPointsConfigs.MinLevel then table.insert(GuildMembersOnline, pid) end end end if #GuildMembersOnline >= GuildPointsConfigs.NeedPlayersOnline then local IPS = {} for i, pid in ipairs(GuildMembersOnline) do local PlayerIP = getPlayerIp(pid) if #IPS > 0 then for k = 1, #IPS do if PlayerIP == IPS[k] then AddIPList = false break end AddIPList = true end if AddIPList then table.insert(IPS, PlayerIP) end else table.insert(IPS, PlayerIP) end end if #IPS >= GuildPointsConfigs.NeedDiferentIps then local ValidAccounts = getGuildPlayersValidAccIDS(GuildID, GuildPointsConfigs.MinLevel) db.executeQuery("UPDATE `guilds` SET `last_execute_points` = ".. os.time() +(GuildPointsConfigs.ExecuteIntervalHours * 3600) .." WHERE `guilds`.`id` = ".. GuildID ..";") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "".. #ValidAccounts .." Players received points") if #ValidAccounts > 0 then db.executeQuery("UPDATE `accounts` SET `guild_points` = `guild_points` + " ..GuildPointsConfigs.AddPointsForAcc .. ", `guild_points_stats` = ".. os.time() .." WHERE `id` IN (" .. table.concat(ValidAccounts, ',') ..");") for i, pid in ipairs(GuildMembersOnline) do local PlayerMSGAccID = getPlayerAccountId(pid) for k = 1, #ValidAccounts do if PlayerMSGAccID == ValidAccounts[k] then doPlayerSendTextMessage(pid, MESSAGE_INFO_DESCR, "You received "..GuildPointsConfigs.AddPointsForAcc .." guild points.") break end end end end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only ".. #IPS .." players are valid, you need ".. GuildPointsConfigs.NeedDiferentIps .." players with different ips.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Has only ".. #GuildMembersOnline .." players online you need ".. GuildPointsConfigs.NeedPlayersOnline .." players online at least from level ".. GuildPointsConfigs.MinLevel ..".") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "The command can only be run once every "..GuildPointsConfigs.ExecuteIntervalHours .." hours.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only guild leader can request points.") end return true end No coder acima bem no inicio tem as linhas seguintes para configurar: ExecuteIntervalHours = 24, ( Intervalo para execução do comando, ae está de 24 em 24hrs) NeedPlayersOnline = 10, (Quantos players é preciso está online para poder executar o comando.) NeedDiferentIps = 6, (Quantos IPS diferentes são necessários para executar o comando no exemplo ae tem 6.) MinLevel = 80, (Aqui adicione o level minimo, é necessário que todos os player da guild tenha o level pedido para o lider executar o comando.) AddPointsForAcc = 9, (Aqui é a quantidade de pontos para adicionar em cada player da guild.) Em data/globalevents/scripts crie um arquivo chamado shopguild.lua e adicione o code a seguir: local SHOP_MSG_TYPE = MESSAGE_EVENT_ORANGE local SQL_interval = 30 function onThink(interval, lastExecution) local result_plr = db.getResult("SELECT * FROM z_ots_guildcomunication WHERE `type` = 'login';") if(result_plr:getID() ~= -1) then while(true) do local id = tonumber(result_plr:getDataInt("id")) local action = tostring(result_plr:getDataString("action")) local delete = tonumber(result_plr:getDataInt("delete_it")) local cid = getCreatureByName(tostring(result_plr:getDataString("name"))) if isPlayer(cid) then local itemtogive_id = tonumber(result_plr:getDataInt("param1")) local itemtogive_count = tonumber(result_plr:getDataInt("param2")) local container_id = tonumber(result_plr:getDataInt("param3")) local container_count = tonumber(result_plr:getDataInt("param4")) local add_item_type = tostring(result_plr:getDataString("param5")) local add_item_name = tostring(result_plr:getDataString("param6")) local received_item = 0 local full_weight = 0 if add_item_type == 'container' then container_weight = getItemWeightById(container_id, 1) if isItemRune(itemtogive_id) == TRUE then items_weight = container_count * getItemWeightById(itemtogive_id, 1) else items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count) end full_weight = items_weight + container_weight else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) if isItemRune(itemtogive_id) == TRUE then full_weight = getItemWeightById(itemtogive_id, 1) else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) end end local free_cap = getPlayerFreeCap(cid) if full_weight <= free_cap then if add_item_type == 'container' then local new_container = doCreateItemEx(container_id, 1) local iter = 0 while iter ~= container_count do doAddContainerItem(new_container, itemtogive_id, itemtogive_count) iter = iter + 1 end received_item = doPlayerAddItemEx(cid, new_container) else local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) doItemSetAttribute(new_item, "description", "This item can only be used by the player ".. getPlayerName(cid) .."!") doItemSetAttribute(new_item, "aid", getPlayerGUID(cid)+10000) received_item = doPlayerAddItemEx(cid, new_item) end if received_item == RETURNVALUE_NOERROR then doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS GuildShop.') db.executeQuery("DELETE FROM `z_ots_guildcomunication` WHERE `id` = " .. id .. ";") db.executeQuery("UPDATE `z_shopguild_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";") else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS GuildShop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.') end else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS GuildShop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.') end end if not(result_plr:next()) then break end end result_plr:free() end return true end Em data/globalevents/globalevents.xml adicione a seguinte tag: <globalevent name="shopguild" interval="300" event="script" value="shopguild.lua"/> Certo, a parte do servidor é esta, ta feita, vamos adicionar a database o coder a seguir: ALTER TABLE `accounts` ADD `guild_points` INTEGER(11) NOT NULL DEFAULT 0; ALTER TABLE `accounts` ADD `guild_points_stats` INT NOT NULL DEFAULT '0'; ALTER TABLE `guilds` ADD `last_execute_points` INT NOT NULL DEFAULT '0'; CREATE TABLE `z_shopguild_offer` ( `id` int(11) NOT NULL auto_increment, `points` int(11) NOT NULL default '0', `itemid1` int(11) NOT NULL default '0', `count1` int(11) NOT NULL default '0', `itemid2` int(11) NOT NULL default '0', `count2` int(11) NOT NULL default '0', `offer_type` varchar(255) default NULL, `offer_description` text NOT NULL, `offer_name` varchar(255) NOT NULL, `pid` INT(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`)) CREATE TABLE `z_shopguild_history_item` ( `id` int(11) NOT NULL auto_increment, `to_name` varchar(255) NOT NULL default '0', `to_account` int(11) NOT NULL default '0', `from_nick` varchar(255) NOT NULL, `from_account` int(11) NOT NULL default '0', `price` int(11) NOT NULL default '0', `offer_id` int(11) NOT NULL default '0', `trans_state` varchar(255) NOT NULL, `trans_start` int(11) NOT NULL default '0', `trans_real` int(11) NOT NULL default '0', PRIMARY KEY (`id`)) CREATE TABLE `z_shopguild_history_pacc` ( `id` int(11) NOT NULL auto_increment, `to_name` varchar(255) NOT NULL default '0', `to_account` int(11) NOT NULL default '0', `from_nick` varchar(255) NOT NULL, `from_account` int(11) NOT NULL default '0', `price` int(11) NOT NULL default '0', `pacc_days` int(11) NOT NULL default '0', `trans_state` varchar(255) NOT NULL, `trans_start` int(11) NOT NULL default '0', `trans_real` int(11) NOT NULL default '0', PRIMARY KEY (`id`)) CREATE TABLE IF NOT EXISTS `z_ots_guildcomunication` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `type` varchar(255) NOT NULL, `action` varchar(255) NOT NULL, `param1` varchar(255) NOT NULL, `param2` varchar(255) NOT NULL, `param3` varchar(255) NOT NULL, `param4` varchar(255) NOT NULL, `param5` varchar(255) NOT NULL, `param6` varchar(255) NOT NULL, `param7` varchar(255) NOT NULL, `delete_it` int(2) NOT NULL DEFAULT '1', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13107; Olha estamos quase finalizando tudo, só precisamos terminar a parte de web. O meu GuildShop eu copiei meu shopsystem.php e fiz umas modificações, simples você pode fazer o mesmo é menos trabalhoso. Copie o shopsystem.php renomeie para shopguild.php, após abra-o e modifique como manda a seguir: shop_system para shopguild_system premium_points para guild_points premium points para guild points z_shop_offer para z_shopguild_offer shopsystem para shopguild z_shop_history_pacc para z_shopguild_history_pacc z_shop_history_item para z_shopguild_history_item z_ots_comunication para z_ots_guildcomunication Ou utilize este já pronto: shopguild.php O shopguildadmin.php está no link abaixo, basta fazer o mesmo procedimento: shopguildadmin.php Em index.php add: case "shopguild"; $topic = "Shop Guild"; $subtopic = "shopguild"; include("shopguild.php"); break; case "shopguildadmin"; $topic = "ShopGuild Admin"; $subtopic = "shopguildadmin"; include("shopguildadmin.php"); break; Vá em config.php adicione: $config['site']['shopguild_system'] = 1; $config['site']['access_adminguild_panel'] = 9; Vá em layouts.php adicione abaixo de buypoints: <a href='?subtopic=shopguild'> <div id='submenu_shopguild' 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_shopguild' class='ActiveSubmenuItemIcon'style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Shop Guild</div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a> Em layouts.php add depois do shopadmin: if($group_id_of_acc_logged >= $config['site']['access_adminguild_panel']) echo "<a href='?subtopic=shopadmin'> <div id='submenu_shopguildadmin' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)'onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_shopguildadmin' class='ActiveSubmenuItemIcon'style='background-image:url(".$layout_name."/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'><font color=red>! ShopGuild Admin !</font></div> <div class='RightChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div> </div> </a>"; Em shopsystem.php procure por: elseif($action == 'show_history') { if(!$logged) { $main_content .= 'Please login first.'; } else{ $items_history_received = $SQL->query('SELECT * FROM '.$SQL->tableName('z_shop_history_item').' WHERE '.$SQL->fieldName('to_account').' = '.$SQL->quote($account_logged->getId()).' OR '.$SQL->fieldName('from_account').' = '.$SQL->quote($account_logged->getId()).';'); if(is_object($items_history_received)) { foreach($items_history_received as $item_received) { if($account_logged->getId() == $item_received['to_account']) $char_color = 'green'; else $char_color = 'red'; $items_received_text .= '<tr bgcolor="#F1E0C6"><td><font color="'.$char_color.'">'.$item_received['to_name'].'</font></td><td>'; if($account_logged->getId() == $item_received['from_account']) $items_received_text .= '<i>Your account</i>'; else $items_received_text .= $item_received['from_nick']; $items_received_text .= '</td><td>'.$item_received['offer_id'].'</td><td>'.$item_received['price'].' Points</td><td>'.date("j F Y, H:i:s", $item_received['trans_start']).'</td>'; if($item_received['trans_real'] > 0) $items_received_text .= '<td>'.date("j F Y, H:i:s",$item_received['trans_real']).'</td>'; else $items_received_text .= '<td><b><font color="red">Not realized yet.</font></b></td>'; $items_received_text .= '</tr>'; } } $paccs_history_received = $SQL->query('SELECT * FROM '.$SQL->tableName('z_shop_history_pacc').' WHERE '.$SQL->fieldName('to_account').' = '.$SQL->quote($account_logged->getId()).' OR '.$SQL->fieldName('from_account').' = '.$SQL->quote($account_logged->getId()).';'); if(is_object($paccs_history_received)) { foreach($paccs_history_received as $pacc_received) { if($account_logged->getId() == $pacc_received['to_account']) $char_color = 'green'; else $char_color = 'red'; $paccs_received_text .= '<tr bgcolor="#F1E0C6"><td><font color="'.$char_color.'">'.$pacc_received['to_name'].'</font></td><td>'; if($account_logged->getId() == $pacc_received['from_account']) $paccs_received_text .= '<i>Your account</i>'; else $paccs_received_text .= $pacc_received['from_nick']; $paccs_received_text .= '</td><td>'.$pacc_received['pacc_days'].' days</td><td>'.$pacc_received['price'].' Points</td><td>'.date("j F Y, H:i:s", $pacc_received['trans_real']).'</td></tr>'; } } $main_content .= '<center><h1>Transactions History</h1></center>'; if(!empty($items_received_text)) $main_content .= '<center><table BORDER=0 CELLPADDING=1 CELLSPACING=1 WIDTH=95%><tr width="100%" bgcolor="#505050"><td colspan="6"><font color="white" size="4"><b>&nbsp;Item Transactions</b></font></td></tr><tr bgcolor="#D4C0A1"><td><b>To:</b></td><td><b>From:</b></td><td><b>Offer name</b></td><td><b>Cost</b></td><td><b>Bought on page</b></td><td><b>Received on '.$config['server']['serverName'].'</b></td></tr>'.$items_received_text.'</table><br />'; if(!empty($paccs_received_text)) $main_content .= '<center><table BORDER=0 CELLPADDING=1 CELLSPACING=1 WIDTH=95%><tr width="100%" bgcolor="#505050"><td colspan="5"><font color="white" size="4"><b>&nbsp;Pacc Transactions</b></font></td></tr><tr bgcolor="#D4C0A1"><td><b>To:</b></td><td><b>From:</b></td><td><b>Duration</b></td><td><b>Cost</b></td><td><b>Added:</b></td></tr>'.$paccs_received_text.'</table><br />'; if(empty($paccs_received_text) && empty($items_received_text)) $main_content .= 'You did not buy/receive any items or PACC.'; } } Troque por: elseif($action == 'show_history') { if(!$logged) { $main_content .= 'Please login first.'; } else{ $items_history_received = $SQL->query('SELECT * FROM '.$SQL->tableName('z_shop_history_item').' WHERE '.$SQL->fieldName('to_account').' = '.$SQL->quote($account_logged->getId()).' OR '.$SQL->fieldName('from_account').' = '.$SQL->quote($account_logged->getId()).';'); if(is_object($items_history_received)) { foreach($items_history_received as $item_received) { if($account_logged->getId() == $item_received['to_account']) $char_color = 'green'; else $char_color = 'red'; $items_received_text .= '<tr bgcolor="#F1E0C6"><td><font color="'.$char_color.'">'.$item_received['to_name'].'</font></td><td>'; if($account_logged->getId() == $item_received['from_account']) $items_received_text .= '<i>Your account</i>'; else $items_received_text .= $item_received['from_nick']; $items_received_text .= '</td><td>'.$item_received['offer_id'].'</td><td>'.$item_received['price'].' Points</td><td>'.date("j F Y, H:i:s", $item_received['trans_start']).'</td>'; if($item_received['trans_real'] > 0) $items_received_text .= '<td>'.date("j F Y, H:i:s",$item_received['trans_real']).'</td>'; else $items_received_text .= '<td><b><font color="red">Not realized yet.</font></b></td>'; $items_received_text .= '</tr>'; } } $itemsguild_history_received = $SQL->query('SELECT * FROM '.$SQL->tableName('z_shopguild_history_item').' WHERE '.$SQL->fieldName('to_account').' = '.$SQL->quote($account_logged->getId()).' OR '.$SQL->fieldName('from_account').' = '.$SQL->quote($account_logged->getId()).';'); if(is_object($itemsguild_history_received)) { foreach($itemsguild_history_received as $itemguild_received) { if($account_logged->getId() == $itemguild_received['to_account']) $char_color = 'green'; else $char_color = 'red'; $itemsguild_received_text .= '<tr bgcolor="#F1E0C6"><td><font color="'.$char_color.'">'.$itemguild_received['to_name'].'</font></td><td>'; if($account_logged->getId() == $itemguild_received['from_account']) $itemsguild_received_text .= '<i>Your account</i>'; else $itemsguild_received_text .= $itemguild_received['from_nick']; $itemsguild_received_text .= '</td><td>'.$itemguild_received['offer_id'].'</td><td>'.$itemguild_received['price'].' Points</td><td>'.date("j F Y, H:i:s", $itemguild_received['trans_start']).'</td>'; if($itemguild_received['trans_real'] > 0) $itemsguild_received_text .= '<td>'.date("j F Y, H:i:s",$itemguild_received['trans_real']).'</td>'; else $itemsguild_received_text .= '<td><b><font color="red">Not realized yet.</font></b></td>'; $itemsguild_received_text .= '</tr>'; } } $paccs_history_received = $SQL->query('SELECT * FROM '.$SQL->tableName('z_shop_history_pacc').' WHERE '.$SQL->fieldName('to_account').' = '.$SQL->quote($account_logged->getId()).' OR '.$SQL->fieldName('from_account').' = '.$SQL->quote($account_logged->getId()).';'); if(is_object($paccs_history_received)) { foreach($paccs_history_received as $pacc_received) { if($account_logged->getId() == $pacc_received['to_account']) $char_color = 'green'; else $char_color = 'red'; $paccs_received_text .= '<tr bgcolor="#F1E0C6"><td><font color="'.$char_color.'">'.$pacc_received['to_name'].'</font></td><td>'; if($account_logged->getId() == $pacc_received['from_account']) $paccs_received_text .= '<i>Your account</i>'; else $paccs_received_text .= $pacc_received['from_nick']; $paccs_received_text .= '</td><td>'.$pacc_received['pacc_days'].' days</td><td>'.$pacc_received['price'].' Points</td><td>'.date("j F Y, H:i:s", $pacc_received['trans_real']).'</td></tr>'; } } $paccsguild_history_received = $SQL->query('SELECT * FROM '.$SQL->tableName('z_shopguild_history_pacc').' WHERE '.$SQL->fieldName('to_account').' = '.$SQL->quote($account_logged->getId()).' OR '.$SQL->fieldName('from_account').' = '.$SQL->quote($account_logged->getId()).';'); if(is_object($paccsguild_history_received)) { foreach($paccsguild_history_received as $paccguild_received) { if($account_logged->getId() == $paccguild_received['to_account']) $char_color = 'green'; else $char_color = 'red'; $paccsguild_received_text .= '<tr bgcolor="#F1E0C6"><td><font color="'.$char_color.'">'.$paccguild_received['to_name'].'</font></td><td>'; if($account_logged->getId() == $paccguild_received['from_account']) $paccsguild_received_text .= '<i>Your account</i>'; else $paccsguild_received_text .= $paccguild_received['from_nick']; $paccsguild_received_text .= '</td><td>'.$paccguild_received['pacc_days'].' days</td><td>'.$paccguild_received['price'].' Points</td><td>'.date("j F Y, H:i:s", $paccguild_received['trans_real']).'</td></tr>'; } } $main_content .= '<center><h1>Transactions History</h1></center>'; if(!empty($items_received_text)) $main_content .= '<center><table BORDER=0 CELLPADDING=1 CELLSPACING=1 WIDTH=95%><tr width="100%" bgcolor="#505050"><td colspan="6"><font color="white" size="4"><b>&nbsp;ShopServer Item Transactions</b></font></td></tr><tr bgcolor="#D4C0A1"><td><b>To:</b></td><td><b>From:</b></td><td><b>Offer name</b></td><td><b>Cost</b></td><td><b>Bought on page</b></td><td><b>Received on '.$config['server']['serverName'].'</b></td></tr>'.$items_received_text.'</table><br />'; if(!empty($itemsguild_received_text)) $main_content .= '<center><table BORDER=0 CELLPADDING=1 CELLSPACING=1 WIDTH=95%><tr width="100%" bgcolor="#505050"><td colspan="6"><font color="white" size="4"><b>&nbsp;ShopGuild Item Transactions</b></font></td></tr><tr bgcolor="#D4C0A1"><td><b>To:</b></td><td><b>From:</b></td><td><b>Offer name</b></td><td><b>Cost</b></td><td><b>Bought on page</b></td><td><b>Received on '.$config['server']['serverName'].'</b></td></tr>'.$itemsguild_received_text.'</table><br />'; if(!empty($paccs_received_text)) $main_content .= '<center><table BORDER=0 CELLPADDING=1 CELLSPACING=1 WIDTH=95%><tr width="100%" bgcolor="#505050"><td colspan="5"><font color="white" size="4"><b>&nbsp;ShopServer VIP Transactions</b></font></td></tr><tr bgcolor="#D4C0A1"><td><b>To:</b></td><td><b>From:</b></td><td><b>Duration</b></td><td><b>Cost</b></td><td><b>Added:</b></td></tr>'.$paccs_received_text.'</table><br />'; if(!empty($paccsguild_received_text)) $main_content .= '<center><table BORDER=0 CELLPADDING=1 CELLSPACING=1 WIDTH=95%><tr width="100%" bgcolor="#505050"><td colspan="5"><font color="white" size="4"><b>&nbsp;ShopGuild VIP Transactions</b></font></td></tr><tr bgcolor="#D4C0A1"><td><b>To:</b></td><td><b>From:</b></td><td><b>Duration</b></td><td><b>Cost</b></td><td><b>Added:</b></td></tr>'.$paccsguild_received_text.'</table><br />'; if(empty($paccs_received_text) && empty($items_received_text)) $main_content .= 'You did not buy/receive any items or PACC.'; if(empty($paccsguild_received_text) && empty($itemsguild_received_text)) $main_content .= 'You did not buy/receive any items or PACC.'; } } Finalmente terminamos! Bom todo esse processo é feito só para facilitar tudo pra você e o player e pra diferenciar o Shop System do Shop Guild, porque um sustenta as despesas do server e o outro atrai player, porque pra conseguir player é preciso ter player. Galera acredito que não esteja faltando nada, espero que gostem e tudo que eu poder fazer para nossas melhoras estarei postando, me desculpem meus erros de português mais o que importa aqui é o script está correto, abraços! Créditos: Natanael Beckman LukeSkywalker (Raphael Luiz) .lua 100% Não proíbo ninguém de copia o tópico só peço que onde você adicione inclua os créditos mencionados.
  11. [MOD] Pokedex Window para base PDA v1.0 Atualizada

    deivaoo reagiu a K4yk por uma resposta no tópico

    1 ponto
    Fala galera, beleza ? Esse é meu primeiro tópico no fórum e venho trazer a vocês a versão 1.0 do mod de pokedex desenvolvido pelo david0703 no tópico : http://www.tibiaking.com/forum/topic/56524-mod-pokedex-window-para-base-pda-v10/ Eu adicionei novas imagens de pokémons que estavam faltando e fiz um simples recolor. Atualizações : - Adicionada Imagens da 1,2,3 geração completas e junto um background editável para novas imagens; - Lembrando que pokémons shinys tem a mesma imagem que as do pokémons normais ( Para alterar, basta remover a linha 75 do arquivo game_pokedex.lua, na pasta modules/game_pokedex de seu client ) dito no tópico do david0703; - Novo recolor ( cor ) da pokedex; Como instalar : 1 - Fazer o Download do arquivo .rar no final do tópico; 2 - Copie a pasta modules pro seu client; 3 - Substitua os arquivos; Segue uma imagem atualizada da pokedex : Download : Opção 1 (Dropbox) : https://www.dropbox.com/s/89vshj7oplx2xpt/modules.rar?dl=0 Opção 2 (Google Drive) : https://drive.google.com/open?id=0B20tGF1vePLLUGxZZ0o3bzljSmM Opção 3 (4Shared) : http://www.4shared.com/rar/28Z3A-bece/modules.html? Opção 4 (Mediafire) : http://www.mediafire.com/download/fe366mxgr4ctmaf/modules.rar Opção 5 (Sendspace) : https://www.sendspace.com/file/8f6kyz Scan : Dropbox: https://www.virustotal.com/pt/url/f8bf595b2881615777ac3ea27181d81dadc9457158d14818b8ec1f6393f60df3/analysis/1464223801/ Google Drive: https://www.virustotal.com/pt/url/12752f92323aae975c0a59ccd9c4854fe3118a0cee7178231e25c7ba38f1fbe8/analysis/1464223450/ 4Shared: https://www.virustotal.com/pt/url/0e6a5bb535b01eda4433c760cca295d85488318f705b025d6ed5559a744e6eb3/analysis/1464223772/ Mediafire: https://www.virustotal.com/pt/url/fab687cb595a04b29175decb3c06200190d79d8da99d362e6e7d58305b6ffa2f/analysis/1464224350/ Sendspace: https://www.virustotal.com/pt/url/dfa7a05d8df51422a5b06f0a055d897ac3105ad38a835ccef382236fb987ff16/analysis/1464224097/ Caso um Link esteja quebrado tente outros, se todos estiverem quebrados avise ! AJUDEI ? REP +
  12. Criando Dois Items Com A Mesma Sprite

    Guru reagiu a Spraypaint por uma resposta no tópico

    1 ponto
    Apresentação Hoje estarei ensinando a criar dois ou mais itens com a mesma sprite! Copiando o item Depois de baixar o seu otitemeditor,de load em seu obtm: Agora você ira acha o item que você vai querer duplicar "clonar".Ao encontrar o item você ira clicar em Tools/Copy Item. Feito isso o otitemeditor ira gerar um novo item com a mesma sprite mais com o Sid diferente do antigo.Confira na imagen! Salve seu otbm e pegue o Sid do novo item que você acaba de fazer com ele iremos editar o Items.xml Configurando o Novo Item Bem depois de clonar o seu item la no otitemeditor, você ira abrir agora o seu items.xml para configurar o novo item.Depois de abrir você ira adicionar um novo config para seu item no caso da minha armadura eu adiconei assim: <item id="Sid do seu novo item" article="a" name="Nome do item"> <attribute key="weight" value="3500"> <attribute key="armor" value="1"> <attribute key="slotType" value="body"> </attribute></attribute></attribute></item> Preenchido ficou +- assim <item id="12622" article="a" name="iten 2"> <attribute key="weight" value="3500"> <attribute key="armor" value="1"> <attribute key="slotType" value="body"> </attribute></attribute></attribute></item> Progamas Usados http://www.4shared.c...dgabrielzim.rar https://www.virustot...sis/1340733058/ Creditos
  13. 1 ponto
    Olá Galera do Tibiaking! Hoje Vim Trazer Para voçes uma base parecida com OtPokémon pois editei muito nessa base em breve teremos v2 com as sprites substituidas base (PDA). Vamos Ao Que Importa Alguns Dos Nossos Sistemas Abaixo Agora vamos ao que interessa informaçoes do servidor começando com os Sistemas. Sistemas Moves System: 80% Caught System: 50% Go-Back System: 50% Portrait System: 50% Evolution System: 100% Ginasios 90% (Tentar Adicionar mais na V2) Changelog do servidor: • A Opçao Pokebag Do Client Esta Com o Sistema do Cassino Retire que Sera Aberto Normalmente Versao 1.0 • Adicionei Shiny Clefable - Shiny Wigglytuff - Shiny Tangrowth e Shiny Roserade • • Arrumei Os Attakes Dos Pokemons pareçidos com o OtPokémon (V2 Serao Todos) • • Adicionado Boost System Beta ( Esta Apenas Aumentar 300 De Hp, V2 Sera Arrumado ) • • Todos Os Shinys Alterados para Poderem Usar Level 1 e as Magias Tambem • • o Atake "Healarea" Nao Heala Players Apenas os Pokémons Downloads: Servidor Client (Pode usar este normal) Scan do Servidor Equipe: Apenas eu.
  14. Mapper King

    8923561 reagiu a Caronte por uma resposta no tópico

    1 ponto
    O Mapper King segue o mesmo propósito do Spriter King, espero que curtam e participem do tópico. Um membro desafia o atual Rei O Rei escolhe um tema para um duelo de Mapas. Os dois tem 3 (três dias) para fazer o mapa do duelo, se o Rei não fizer, o membro que desafiou se torna rei, se o membro que desafiou não fizer, o rei atual permanece. A imagem do mapa deve ser enviada para: [email protected]. Apenas uma imagem será aceita e deve conter os padrões deste tópico: Como tirar imagens in-game O rei e o desafiante não podem votar, muito menos dizer qual é o seu mapa; Os membros votam no mesmo tópico, mas devem justificar o voto. O primeiro a ficar com uma diferença de 4 votos positivos se torna rei ou permanece rei se já for. O atual rei receberá uma conquista, se ele perder o trono, perderá a conquista para o membro que o venceu. () O rei tem 72h para dizer o tema após o desafio ter sido feito. *NOVO! Se houver repetitivamente empate sem diferença de votos (após 20 votos no total), os dois participantes ficam sem o título MapperKing; Após isso, um terceiro participante desafiará os dois que empataram, estes, escolherão juntos o tema. Entretanto, a votação será separada, nesse duelo de 3 participantes, o primeiro que atingir uma diferença de 3 votos ganhará a coroa Uma vez votado, o membro não pode mudar o voto. Então para começar, eu me declaro o Atual rei, o primeiro da linhagem, quem será o pobre camponês que me desafiará? (Divirtam-se ) Duelos:
  15. [8.60] EmpericOT BaiakVip15

    Igorzerah reagiu a Pepeco por uma resposta no tópico

    1 ponto
    EmpericOT Olá galera do TK, venho trazer para vocês um Baiakzik vip 15, com algumas modificações. Mais informações dentro do OT (Comandos e Introdução). Duvidas Skype: Empericot • Modificações • › Quests. › Itens. › Runas. › Monstros. › Depot Modificado. › Emperic City (não disponível ainda para players, em construção para próxima versão ). › Magias (regule de acordo com seu exp ). › Templo Modificado (Mais bonito ). › Scripts (AntiMB, Chuva...). • Imagens • Download (Scan junto com o download, 4shared ja tem scan ) Senha: emperic • Créditos • DeathRocks – Por criar o ZIK 15 Pepeco – Modificações OTServ Original AQUI
  16. 1 ponto
    • Naruto Seven Com Client Descompilado [Download] • • Menu: ├ Informações; ├ Jutsus; ├ Ajustes; ├ Erros; ├ Prints; ├ Download; ├ CLIENT DESCOMPILADO; └ Creditos. • Informações Basicas • • Jutsus Do Servidor • • Ajustes No Servidor • • Erros Do Servidor • • PrintScreen • • Download's • Servidor 8.54 (4shared) http://www.mediafire.com/download/99upszbnbb7aklb/Nrtao+V.2.rar Cliente Do Servidor Compilado (4shared) http://www.4shared.com/file/Ny7GcYzw/Client_NSOexe.html Cliente Do Servidor DECOMPILADO! (4shared) - BASE. http://www.4shared.com/file/qjK7OGx7/Naruto_Seven.html Cliente Do Servidor ExTNL DECOMPILADO! (4shared) - VELHO. http://www.4shared.com/rar/_1lmtHS4/Stigal_-_ExTNL_Descompilado.html Cliente Do Servidor Nto Brasil v3.0 DECOMPILADO! (MediaFire) - VELHO. http://www.mediafire.com/?xvho2po19rq47ks Cliente Do Servidor ExTNL (NEW 25/12) DECOMPILADO! (4shared) - NOVO! http://www.4shared.com/rar/bn6j1oy9/Stigal_ExTNL_175_DESCOMPILADO.html? Cliente Do Servidor NtoBR (NEW 23/11) DECOMPILADO! (4shared) - NOVO! http://www.4shared.com/rar/LxXBOOmA/Stigal_NTOBrasil_01_DESCOMPILA.html? Cliente ASKL DECOMPILADO! (MegaUpload) - OFFILINE! http://www.megaupload.com/?d=L2DD5Y96 • Creditos • 80% Eu (Stigal) Motivo: "Edição Mediana / Final" "Ajustes" "Topico". 20% Dono (ADM Seven) Motivo: "Edição Inicial". Servidor Atualisado: 05/Dezembro/2011 Downloads Atualisado: 19/Dezembro/2012
  17. [Pokémon] Gender System

    smowking reagiu a Gabrieltxu por uma resposta no tópico

    1 ponto
    Eai galera tudo beleza? então hoje venho compartilhar um sisteminha que vi muitas pessoas querendo , sem mais delongas segue o tutorial , espero que gostem. Lembrando que precisa de sources para conseguir colocar esse sistema no seu servidor . Em Monster.cpp: Troque essa linha: setSkull(mType->skull); Por essa aqui : if(!isSummon()){setSkull((Skulls_t) random_range(2, 4)); } e pronto todos os pokémons terão Skulls aleatorias de 2,3 e 4 OBS: mude o 2 e o 4 para o numero da skull desejada tipo 2 fêmea e 4 macho. Se quiser deixar uns Pokémons com skulls pré definidas, faça o seguinte: if(!isSummon()) {if (_mType->name == "nidoran male") setSkull(SKULL_WHITE); else if (_mType->name == "nidoran female") setSkull(SKULL_RED); else setSkull((Skulls_t) random_range(3, 4)); }
  18. Efeitos & Textos animados (Tudo junto num só script)

    JcA reagiu a Lyu por uma resposta no tópico

    1 ponto
    Olá, hoje venho trazer um script que permite usar efeitos mágicos e textos animados em um só script sem ter que ficar criando vários arquivos .LUA com os nomes (texto, texto1, texto2, effect1, tpeffects2) e etc.. Bom, em data/globalevents/globalevents.xml adicione isso : <globalevent name="effects" interval="1500" script="effectandtext.lua"/> Agora em data/globalevents/scripts crie um arquivo effectandtext.lua, abra-o e adicione isso : local positions = { ["Templo"] = {pos = {x = 1097, y = 1062, z = 7}, color = {205, 210}, effect = {}}, ["Teleports"] = {pos = {x = 1096, y = 1063, z = 7}, color = {205, 210}, effect = {39}}, ["Area Vip"] = {pos = {x = 1096, y = 1063, z = 7}, color = {205, 210}, effect = {39, 10}} } function onThink(cid, interval, lastExecution) for t, pos in pairs(positions) do for _, effect in ipairs(pos.effect) do if(#pos.effect > 0) then doSendMagicEffect(pos.pos, effect) end end doSendAnimatedText(pos.pos, t, #pos.color > 0 and pos.color[math.random(#pos.color)] or 215) end return true end "Aah mas eu n quero que faça efeito em baixo do texto, blabla.." Simples : em effect, deixe a tabela vazia. Exemplo : ["Templo"] = {pos = {x = 1097, y = 1062, z = 7}, color = {205, 210}, effect = {}} ou você pode usar mais de um efeito no mesmo texto, basta você ir adicionando. Exemplo : effect = {30, 40, 50} se você não declarar as cores em 'color = {}', a cor padrão será branca. créditos : Halls Santos
  19. (Naruto) Naruto Legend 2.0 - Com Tp

    whit3w0lf reagiu a Bruno Maciell por uma resposta no tópico

    1 ponto
    [8.54] Naruto Legend V2.0 - Com Teleports! Informações: - Novo Mapa RPG, com teleports (Com Levels); - Novas Organizações (Akatsuki, anbu, sannin, shippuden, hokage, etc); - Novas Transformações; - 24 Vocações; - Novos Jutsus; - Novos Itens; - Novos Sistemas e comandos; - Novos Monstros; - 3 Vilas; - Ajeitei o servidor para rodar em sqlite (Account Manager já configurado). - Sistema Premium (Com Premium Zone). - Servidor 100% estável; - E mais! Prints Download Servidor & Scan: Download: http://www.mediafire...1e54136t4b7855m Scan: https://www.virustot...sis/1355872674/ Download Client & Scan: Incluso tibia.spr e tibia.dat! Download: http://www.mediafire...9fdj1y9nc4ta1fy Scan: https://www.virustot...sis/1355873069/ Créditos: Tfs Team Uffox Wono-CJ SmoOkeR
  20. Informação Não importa o que a pessoa digite, ela em hipótese nenhuma conseguirá falar. Exemplo: azhaurn.servegame.com azhaurn...servegame....com azhaurn!!! serve game!!! com a z h a u r n servegame c o m Se ela digitar tipo assim, mesmo assim, não conseguirá falar. Instalando blocklinks.lua local blockedLinks = {'PALAVRA 1', 'PALAVRA 2', 'PALAVRA 3', 'PALAVRA 4'} local muteStorage = 16246 local muteTime = 2 -- EM SEGUNDOS -- END OF CONFIG -- local blockedLinksData = {} local separator = '[ !\t%$%^%+%-%.%%_,<>]*' for _, linkText in pairs(blockedLinks) do local data = {} data.link = linkText data.preg = '.*' for c in string.gmatch(linkText, '.') do if(c == '.') then data.preg = data.preg .. '.*' else data.preg = data.preg .. c .. separator end end data.preg = data.preg .. '.*' table.insert(blockedLinksData, data) end function isLegalMessage(words) for _, blockedLink in pairs(blockedLinksData) do if(string.match(words, blockedLink.preg) ~= nil) then return false, blockedLink.link end end return true, '' end function onSay(cid, words, param, channel) words = words .. ' ' .. param local legalMessage, forbiddenLink = isLegalMessage( string.lower(words)) if(not legalMessage) then local muteStorageValue = getPlayerStorageValue(cid, muteStorage) if(muteStorageValue > os.time()) then doPlayerSendCancel(cid, 'You are still muted for ' .. muteStorageValue-os.time() .. ' seconds.') return true end setPlayerStorageValue(cid, muteStorage, os.time()+muteTime) if(channel == CHANNEL_DEFAULT) then doCreatureSay(cid, '...', TALKTYPE_SAY) end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Link: ' .. forbiddenLink .. ' PROIBIDO.') return true end return false end talkactions.xml <talkaction words="illegalWords" default="1" script="blocklinks.lua"/> Modificando Em local blockedLinks = acrescente o link ou a palavra que você quer que a pessoa não consiga falar. Créditos Gesior.pl
  21. (Resolvido)AJUDA COM ESSE SCRIPT

    gutalo reagiu a Sekk por uma resposta no tópico

    1 ponto
    tenta usar esse aqui: Basta configurar à gosto. Colocar os nomes das voc, os IDs e etc...
  22. TOP LEVEL FORA DE ESQUADRO

    vikingmu reagiu a Marcio Santos por uma resposta no tópico

    1 ponto
    Eai mlk colar isso em Layout dps de <div id="Themeboxes">
  23. Sobre scripts

    cristianvrb reagiu a Snowsz por uma resposta no tópico

    1 ponto
    O tópico foi movido para a área correta, preste mais atenção da próxima vez! Leia as regras do fórum: http://tibiaking.com/forum/topic/1281-regras-gerais/?p=7680 Este tópico foi movido: De: "OTServ → Suporte OTServ → Suporte de Scripts" Para: "OTServ → Suporte OTServ → Suporte de OTServ Geral"
  24. Screenshot Como se usa Use !exp nomedomonstro E então aparecerá: Instalando monster.lua function onSay(cid, words, param, channel) local exp = getConfigValue('rateExperience') local time = 60 -- EM SEGUNDOS if param == "" then doPlayerSendCancel(cid, "Param Needed(For Ex:!exp rotworm)") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) return true end if not getMonsterInfo(param) then doPlayerSendCancel(cid, "Monster Name Is Incorrect") return true end if exhaustion.check(cid, 1023) then doPlayerSendCancel(cid, "You Need To Wait "..math.floor(exhaustion.get(cid,1023))..".") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) return true end if getExperienceForLevel(getPlayerLevel(cid)+1) > getPlayerExperience(cid) then local exped = getExperienceForLevel(getPlayerLevel(cid)+1) - getPlayerExperience(cid) local monsterned = string.lower(getMonsterInfo(param).experience) * exp local expneed = math.floor(exped / monsterned)+1 doPlayerPopupFYI(cid, "You need to kill "..expneed.." "..param.." to advance to Level "..getPlayerLevel(cid)+1 .."") exhaustion.set(cid, 1023, time*1000) elseif getPlayerExperience(cid) > getExperienceForLevel(getPlayerLevel(cid)+1) then local exped2 = getPlayerExperience(cid) - getExperienceForLevel(getPlayerLevel(cid)+1) local monsterned2 = string.lower(getMonsterInfo(param).experience) * exp local expneed = math.floor(exped2 / monsterned2)+1 doPlayerPopupFYI(cid,"You need to kill "..expneed2.." "..param.." to advance to Level "..getPlayerLevel(cid)+1 .."") exhaustion.set(cid, 1023, time*1000) end return true end talkactions.xml <talkaction words="!exp" event="script" value="monster.lua"/> ATENÇÃO Se seu servidor for de exp stages, apenas mude: local exp = getConfigValue('rateExperience') para: local exp = getExperienceStage(getPlayerLevel(cid)) Créditos tetra20, Erexo
  25. [TFS 1.0] Ranking diferente in-game

    GOD Vitor reagiu a Tricoder por uma resposta no tópico

    1 ponto
    Screenshots ​ Comando !highscores Instalando /globalevents/globalevents.xml <globalevent type="startup" name="Highscore" script="highscores.lua"/> <globalevent interval="10800000" name="Highscores" script="highscores.lua"/> /globalevents/scripts/highscores.lua local QueryList = { ['Level'] = {'`name`, `level` AS `score` FROM `players`', 'ORDER BY `experience` DESC'}, ['Magic Level'] = {'`name`, `maglevel` AS `score` FROM `players`', 'ORDER BY `maglevel` DESC, `manaspent` DESC'}, --['Storage'] = {'`players`.`name` AS `name`, `value` AS `score` FROM `player_storage` LEFT JOIN `players` ON `player_storage`.`player_id` = `players`.`id`', 'AND `key` = 1550 ORDER BY `value` DESC'} } for i, skill in ipairs({'fist','club','sword','axe','dist','shielding','fishing'}) do local index = (skill == 'dist' and 'Distance' or skill:gsub('^%l',string.upper)) .. (i < 6 and ' Fighting' or '') QueryList[index] = {'`name`, `skill_' .. skill .. '` AS `score` FROM `players`','ORDER BY `skill_' .. skill .. '` DESC, `skill_' .. skill .. '_tries` DESC'} end function updateHighscores() for skill, query in pairs(QueryList) do local t, Query = {}, db.storeQuery('SELECT ' .. query[1] .. ' WHERE `deletion` = 0 AND `group_id` < 3 ' .. query[2] .. ' LIMIT 30;') if Query ~= false then repeat table.insert(t, {result.getDataString(Query, 'name'), result.getDataInt(Query, 'score')}) until not result.next(Query) result.free(Query) setGlobalStorageValue(skill, t) end end setGlobalStorageValue('highscores', os.time()) end function onStartup() updateHighscores() end function onThink(interval) updateHighscores() return true end /creaturescripts/creaturescripts.xml <event type="modalwindow" name="Highscores" script="highscores.lua"/> /creaturescripts/scripts/highscores.lua SkillWindow = { [1337] = 'Local highscores at ' .. getConfigInfo('serverName'), [1338] = 'Level', [1339] = 'Magic Level', [1340] = 'Shielding', [1341] = 'Distance Fighting', [1342] = 'Sword Fighting', [1343] = 'Club Fighting', [1344] = 'Axe Fighting', [1345] = 'Fist Fighting', [1346] = 'Fishing', --[1347] = 'Storage' } highscores = ModalWindow(1337, SkillWindow[1337], 'Choose a category:') for i, skill in ipairs({'Level','Magic','Shielding','Distance','Sword','Club','Axe','Fist','Fishing'}) do highscores:addChoice(i, skill) end --highscores:addChoice(10, 'Storage') highscores:addButton(1, 'Show') highscores:addButton(2, 'Close') highscores:addButton(3, 'Info') highscores:setDefaultEnterButton(1) highscores:setDefaultEscapeButton(2) highscores:setPriority(true) function string.diff(diff) --by Colandus and fixed by Cykotitan local format = { {'day', diff / 60 / 60 / 24}, {'hour', diff / 60 / 60 % 24}, {'minute', diff / 60 % 60}, {'second', diff % 60} } local out = {} for k, t in ipairs(format) do local v = math.floor(t[2]) if(v > 0) then table.insert(out, (k < #format and (#out > 0 and ', ' or '') or ' and ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or '')) end end local ret = table.concat(out) if ret:len() < 16 and ret:find('second') then local a, b = ret:find(' and ') ret = ret:sub(b+1) end return ret end function string.abbr(first, final, limit) local str = first .. final if str:len() > limit then str = first:sub(1, limit-(final:len())) .. final end return str end function sendSkillWindow(cid, windowId) local highscore = ModalWindow(windowId, 'Ranking for ' .. SkillWindow[windowId], 'Scroll down for entire list') for rank, score in ipairs(getGlobalStorageValue(SkillWindow[windowId])) do highscore:addChoice(rank, string.abbr(rank .. '. ' .. score[1], '... ' .. score[2], 30)) end highscore:addButton(1, 'Back') highscore:addButton(2, 'Close') highscore:addButton(3, 'Info') highscore:setDefaultEscapeButton(2) highscore:setPriority(true) highscore:sendToPlayer(cid) end function onModalWindow(cid, modalWindowId, buttonId, choiceId) if not SkillWindow[modalWindowId] then return end if buttonId == 3 then doPlayerPopupFYI(cid, 'Local highscores were last updated ' .. string.diff(os.time()-getGlobalStorageValue('highscores')) .. ' ago.') elseif buttonId == 1 then if modalWindowId == 1337 then sendSkillWindow(cid, 1337+choiceId) else highscores:sendToPlayer(cid) end return end return unregisterCreatureEvent(cid, 'Highscores') end /talkactions/talkactions.xml <talkaction words="!highscores" script="highscores.lua" /> /talkactions/scripts/highscores.lua function onSay(cid, words, param) registerCreatureEvent(cid, 'Highscores') highscores:sendToPlayer(cid) return false end Créditos cbrm
  26. (Resolvido)como reverter um distance effect?

    574747 reagiu a Snowsz por uma resposta no tópico

    1 ponto
    function onThink(interval, lastExecution) for _, name in ipairs(getOnlinePlayers()) do local cid = getPlayerByName(name) if getPlayerStorageValue(cid, 9899) >= 1 then doSendAnimatedText(getPlayerPosition(cid), "[VIP]", 29) local spot = getThingPosition(cid) doSendDistanceShoot({x = spot.x + 1, y = spot.x + 1, z = spot.z}, spot, 37) doSendDistanceShoot({x = spot.x - 1, y = spot.y - 1, z = spot.z}, spot, 37) doSendDistanceShoot({x = spot.x + 1, y = spot.y - 1, z = spot.z}, spot, 37) doSendDistanceShoot({x = spot.x - 1, y = spot.y + 1, z = spot.z}, spot, 37) end end return true end
  27. @Larissa Azhaurn, dá para simplificar o script: -- Free bless local freeBless = { level = 50, blessTotal = 5, } if player:getLevel() <= freeBless.level then for i = 1, freeBless.blessTotal do doPlayerAddBlessing(player, i) end end @chateadoagr, é só editar nesta linha, sendo que se o player level menor ou igual ao level indicado ele recebe o free_bless: level = 50,
  28. [MOD] First Itens por vocação!

    diarmaint reagiu a Fir3element por uma resposta no tópico

    1 ponto
  29. Wolve's ShowOff*> Miller <

    Fae1z reagiu a Arttxel por uma resposta no tópico

    1 ponto
    Armadura pro Spriter King Alguns sprites 1 Troll Forest with mage's head. 2 Aquatic Sentinel. 3 Demon Garrosh. 4 Dwarvem Hammer. 5 Katana. 6 Lizardman. O USO NÃO È PERMITIDO! Planta du mal free for use
  30. [EK 50+] Forest Fury Camp

    hugobueno reagiu a EdsonJunior por uma resposta no tópico

    1 ponto
    $2.00 - Solid Script EXPERIÊNCIA 40K - 50K / hora LUCRO 0K - 10K / hora VOCAÇÃO KNIGHT DIFICULDADE EASY INFORMAÇÕES Iniciar no depot de Carlin DOWNLOAD 50+ EK Forest Fury Camp.zip
  31. 1 ponto
    Descrição Em 0.x há o comando !q, porém, esse script que trago à vocês, mostra diferente a quantidade de money. Em vez de aparecer assim; You have 100000000 gold. Aparecerá dessa forma: You have 1 KK Instalando Vá em money.lua na pasta talkactions e substitua tudo por: function onSay(cid, words, param, channel) local money = getPlayerMoney(cid) local kk = 100000000 local hd = 10000000 if (money > 0 and money < 1000) then money = money.." gp." elseif (money >= 1000 and money < hd) then money = money / 1000 .." K." elseif (money >= hd and money < kk) then money = money / 100000 .." K." elseif (money >= kk) then money = money / kk .. " KK." end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have " .. money ) return true end Créditos Joe Rod
  32. Boss map

    tirso reagiu a Tricoder por uma resposta no tópico

    1 ponto
    Categoria: Mapa. Versão: 8.60 Créditos: Snuggles Anexos: Download | Scan Screenshot;
  33. Elfbot não reconecta ao morrer

    459856 reagiu a tiago.bordin1988 por uma resposta no tópico

    1 ponto
    Então quando meu char morre ele não reconecta de novo pois fica aparecendo essa janela "You are dead". mesmo usando a Hotkeys: auto 100 ifnot $connected { reconnect | wait 1000}, alguém saberia como resolver isso?
  34. Duvidas kpdo server!

    Mrgabroh reagiu a Pay My Pass por uma resposta no tópico

    1 ponto
    O ip só da pra mudar com Hex Editor.
  35. Duvidas kpdo server!

    Mrgabroh reagiu a Pay My Pass por uma resposta no tópico

    1 ponto
    Vou dar uma olhada e ver se consigo adicionar alguns pokes se eu conseguir passo aqui um tutorial. Em questão seu catch.lua testei ele, mas nao apareceu erro na distro mas realmente fica como se o poke nao tivesse sido adicionado para catch. estou passa aqui um catch.lua, tente usa-lo e se der erro avise catch.lua
  36. Duvidas kpdo server!

    Mrgabroh reagiu a Pay My Pass por uma resposta no tópico

    1 ponto
    Olha o tutorial novamente editei uma coisa nele que pode ajudar no catch rate. ja esse erro q ta dando no seu server, significa q tem um erro na linha 1 do script, provavelmente algum simbolo errado. Copia o seu catch.lua e coloca dentro de um spoiler q dai eu vejo onde esta o erro. Quanto aos codigos, tenta colocar uma virgula dentro do script depois do nome [kpdo]Cater
  37. Duvidas kpdo server!

    Mrgabroh reagiu a Pay My Pass por uma resposta no tópico

    1 ponto
    Olha, testei aqui e nao deu erro nenhum, se puder posta uma print do erro que está dando, e em spoiler deixa o seu script catch.lua.
  38. Duvidas kpdo server!

    Mrgabroh reagiu a Pay My Pass por uma resposta no tópico

    1 ponto
    EDITANDO A XP: Onde está Vermelho, são coisas que você nao pode modificar, em Verde, são os itens modificaveis, Azul é a xp do servidor, que no caso está 2, ali você pode mudar a seu gosto deixando da forma que bem entender. PLAYER XP Depois de ter configurado a xp no config.lua, vá na pasta data/xml e abra o arquivo stages.xml(isso se você não o desativou no config.lua) ali estará: onde minlevel será o level inicial para a stage começar a funcionar e maxlevel será o level onde a stage terminará. multiplier é por quanto a xp será multiplicada enquanto o player estiver dentre o leveis do minlevel e do maxlevel. E assim você modifica a xp do player. POKEMON XP Acredito que para editar a xp de quanto o pokemon irá receber, seria preciso editar assim: Abra as pasta data/creaturescripts/script depois abra o arquivo pokelevel.lua e procure por: Azul level em que poke deve esta para receber a xp em que o Verde estará multiplicando. Ex: Até o level 16 o pokemon estará recebendo a xp multiplacada por 2. EDITANDO O CATCH: Etendido isso edite conforme você queira, lembrando que para editar a chance de catch você só deve mudar o numero que estiver na frente de local catchrate = que no caso do esquema acima é 1 espero que tenha entendido @Edit: para aumentar o catch rate basta ir na pasta data/lib e abrir o arquivo catchrate.lua:
  39. Knight Implode/Explode

    Yatos reagiu a xWhiteWolf por uma resposta no tópico

    1 ponto
    Eu tava brincando de "vamos procurar uns scripts legais e tentar melhorá-los" e eis que eu me deparei com duas spells muito legalzinhas num forum americano e decidi editá-las pra que elas funcionassem em conjunto. Feito isso eu acabei criando o seguinte sistema de combos: O cara solta a primeira spell e ele tem 5 segundos pra soltar a segunda spell, NÃO É POSSÍVEL UTILIZAR A SEGUNDA SPELL SEM TER USADO A PRIMEIRA ANTES e se o player tentar usar a primeira spell novamente nesses 5 segundos ele vai perder 15% de vida.... só se atentem ao fato de que a segunda magia deve ser bem mais forte que a primeira pra coisa ter graça. Primeiro de tudo crie dois scripts chamados kaesar7.lua e kaesar9.lua em kaesar7.lua adicione o seguinte: e em kaesar9.lua adicione o seguinte: e em spells.xml adicione: <instant name="Implode" words="knight implode" lvl="120" mana="200" prem="1" blockwalls="1" exhaustion="1000" needlearn="0" event="script" value="attack/kaesar9.lua"> <vocation id="4"/> <vocation id="8"/> </instant> <instant name="Explode" words="knight explode" lvl="120" mana="200" prem="1" blockwalls="1" exhaustion="1000" needlearn="0" event="script" value="attack/kaesar7.lua"> <vocation id="4"/> <vocation id="8"/> </instant> Bom, ambos scripts são complexos mas as edições são bem parecidas com qualquer outra magia. No script 1 vc pode editar aqui: local stepDelay = 75 --- tempo entre um e outro.. quanto menor mais rápido a magia sai local spins = 2 --- numero de voltas que vai dar antes de explodir local percent = 15 --- porcentagem de vida que perde caso use a spell 2x seguidas Créditos: 90% pro Colandus (o cara que fez os scripts) 10% pra mim por ter editado tudo e feito as magias serem dependentes
  40. Monstros Passivos

    Ricardo Monteiro reagiu a jacareverde por uma resposta no tópico

    1 ponto
    @DeadAlive essa versão da sua source não suporta storage em forma de letras vamos dizer assim, tente mudar "hostile" para 1800 não esqueça de mudar no creature script. @topic como fazer o monstro voltar a ser passive quando o player morre ou foge?
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo