Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 04/14/15 em %

  1. Benny

    [X] Resource Pack #1

    Fala pessoal ,hoje eu separei varias fractals/nebulas para vocês :3 Pretendo trazer mais conteúdos como este, por isso o "#1" Bem, vamos lá : •PREVIEW• •INFORMAÇÕES• Total : 69 Formato : JPG/PNG Tamanho : 89MB •DOWNLOAD• Mediafire Creditos : greentunic
    4 pontos
  2. DEV C++, aprenda a compila uma source TFS! Downloads(Baixe de acordo as configurações do seu windows): DEV C++ CONFIGURADO PARA 32BITS | SCAN DEV C++ CONFIGURADO PARA 64BITS | SCAN REV 3884 TFS 0.4 | SCAN Certo, feitos os downloads, extrai DEV C++ no Disco C e REV 3884 em Documentos. ====================================== Abra o DEV C++: ====================================== ====================================== Abra a Source: ====================================== ====================================== Localize a pasta da Source e abra o arquivo TheForgottenServer.dev, Documentos> trunk.r3884> dev-cpp> TheForgottenServer.dev: ====================================== ============================================================= ====================================== Aguarde carregar todos os arquivos: ====================================== ====================================== Vamos adicionar o parâmetro -D__CONSOLE__ no teclado digita ALT + P, clique em parameters e adicione o parâmetro... Feito? clique em OK: ====================================== ====================================== Vamos compilar Source, no teclado digite CTRL+F9 e aguarde finalizar o processo: ====================================== ====================================== Se der tudo certo em Log vai estar como mostra a imagem abaixo: ====================================== ====================================== Verifique na pasta Documentos> trunk.r3884> dev-cpp você vai encontrar o arquivo TheForgottenServer.exe e pronto meu parabéns você compilou! ====================================== =========================================== Só isso galera tutorial rápido resumido e útil! Créditos Natanael Beckman! =========================================== Caso você adquira uma source com apenas os arquivos .cpp e .h e não sabe como compilar o projeto, abaixo vamos explicar: Na pasta onde está localizado os arquivos .cpp e .h crie uma pasta chamada dev-cpp, e dentro dela adicione uma imagem icone. Abra o DEV-C++, clique em File> New> Project: Logo em seguida selecione Empty Project, em name terá o nome Project1 altere utilize o nome quer quiser, após isso clique em OK e em seguida selecione a pasta dev-cpp que criamos: Agora selecione a opção Win32GUI caso use source OTX ou TFS selecione Win32Console ao lado << Browse selecione a imagem do icone que está na pasta Dev-Cpp. No mesmo menu na aba Parameters em C++ compiler adicione os seguintes parâmetros: -D__ENABLE_SERVER_DIAGNOSTIC__ -D__ROOT_PERMISSION__ -D__GROUND_CACHE__ -D__USE_SQLITE__ -D__USE_MYSQL__ -D__CONSOLE__ -D__WAR_SYSTEM__ E em Linker adicione as seguintes libs: -lboost_filesystem -lboost_thread -lboost_system -lboost_regex -lsqlite3 -lwsock32 -llua5.1 -lws2_32 -leay32 -lmysql -lxml2 -lgmp -lz -s No mesmo Menu na aba Build Option escreva na segunda coluna horizontal escreva Obj e dê OK. Na lateral terá o nome do seu projeto o meu no caso é The Forgotten Server, clique com o botão direito do mouse em cima do nome e clique na opção Add Project: Selecione na pasta da sua source todos os arquivos .cpp e .h após isso salva o projeto e já pode compilar CTRL+F9: OpenSLL 0.9.8 1º baixe http://devpaks.org/details.php?devpak=73 2° abra Dev-Cpp > Tools > Packager Manager > Install > Seleciona o arquivo baixado e instala, fecha abre e testa! Clica aqui \/
    3 pontos
  3. Bruno

    Wand of Elements

    Introdução: É uma wand que ataca vários elementos aleatoriamente, porém não somente isso, você pode travar um único elemento através de uma talkaction. OBS: Testado em tfs 0.4 Instalação: Vá até data/weapons/scripts e crie um arquivo chamando wandelementos.lua e coloque o seguinte conteúdo: local min, max = 1700,1900 --Ataque mínino e ataque máximo local w = { [1] = {ef = 36, sh = 3, dmg = COMBAT_FIREDAMAGE}, [2] = {ef = 42, sh = 28, dmg = COMBAT_ICEDAMAGE}, [3] = {ef = 46, sh = 38, dmg = COMBAT_POISONDAMAGE}, [4] = {ef = 17, sh = 31, dmg = COMBAT_DEATHDAMAGE}, [5] = {ef = 47, sh = 35, dmg = COMBAT_ENERGYDAMAGE}, [6] = {ef = 36, sh = 31, dmg = COMBAT_PHYSICALDAMAGE}, [7] = {ef = 49, sh = 37, dmg = COMBAT_HOLYDAMAGE} } function onUseWeapon(cid, var) local effect = getPlayerStorageValue(cid, 4561) local target = getCreatureTarget(cid) if target ~= 0 then local wx = w[effect] or w[math.random(#w)] doSendDistanceShoot(getThingPos(cid), getThingPos(target), wx.sh) addEvent(doAreaCombatHealth, 100, cid, wx.dmg, getThingPos(target), 0, -min, -max, wx.ef) end return true end Altere o min e max de acordo com sua necessidade. Agora vá em data/weapons/weapons.xml e coloque o seguinte conteúdo: <wand id="7424" level="100" mana="30" event="script" value="wandelementos.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="5" showInDescription="0"/> <vocation id="6" showInDescription="0"/> </wand> Altere o id, level e mana de acordo com sua necessidade. Agora vamos configurar a talkaction que troca os elementos. Vá até data/talkactions/scripts e crie um arquivo chamando elementos.lua e coloque o seguinte conteúdo: local config = { wand_id = 7424, --ID da wand types = { ["all"] = -1, --Ataca os elementos aleatoriamente ["fire"] = 1, ["ice"] = 2, ["poison"] = 3, ["death"] = 4, ["energy"] = 5, ["physical"] = 6, ["holy"] = 7 } } function onSay(cid, words, param) local wand_left = getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid local wand_right = getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid if wand_left ~= config.wand_id and wand_right ~= config.wand_id then doPlayerSendCancel(cid, "Voce deve estar equipado com uma ".. getItemNameById(config.wand_id) .." para usar este comando.") return true end if config.types[param] then setPlayerStorageValue(cid, 4561, config.types[param]) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Sua wand ira atacar ".. param .. ".") else local str = "" for i, _ in pairs(config.types) do str = str .. ", ".. i end doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Os elementos disponiveis sao: ".. string.sub(str, 3, #str) ..".") end return true end Altere o wand_id conforme configurado em weapons. Agora vá em data/talkactions/talkactions.xml e coloque o seguinte conteúdo: <talkaction words="!elemento;/elemento" event="script" value="elementos.lua"/> Exemplo de funcionamento: Agradeço MaXwEllDeN pela ajuda.
    2 pontos
  4. Nome: Sistema de adicionar e remover premium por comando. Versão testada: TFS 0.4 - Não testado em outras versões! Créditos: Wakon (Script) - William Ferreira (Tópico) Imagem: Vá em data/talkactions/talkactions.xml e adicione essa tag: <talkaction log="yes" words="/pa" access="5" event="script" value="addpremmy.lua" /> Agora vá em data/talkactions/scripts/ e crie um arquivo com o nome addpremmy.lua e cole isso nele: function onSay(cid, words, param) if param == "" then return doPlayerPopupFYI(cid,"Está com problemas?\nAprenda os comandos!\n---------------\nAdicionar premium:\n/pa add days player\n/pa add 30 Wakon\n---------------\nRemover premium:\n/pa remove player\n/pa remove Wakon\n---------------\nVer Premium:\n/pa days player\n/pa days Wakon\n---------------") end if param:lower():find('add') == 1 and 3 then local _,_,id,name = param:lower():find('add (%d+) (.+)') name = name or "" id = tonumber(id or 1) or 1 if tonumber(id) == nil or getPlayerByName(name) == false then return doPlayerSendTextMessage(cid,25,"Adicionar premium:\n/pa add days player\n/pa add 30 Wakon\n [Player: "..name.."]") end if isPlayer(getPlayerByName(name)) == TRUE then doPlayerAddPremiumDays(getPlayerByName(name), id) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Foram adicionados "..tonumber(id).." dias de premium ao jogador "..name..".") doPlayerSendTextMessage(getPlayerByName(name),25,"Você recebeu "..tonumber(id).." dias de premium, relogue para atualizar.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"O jogador "..name.." não esta online ou não existe.") end elseif param:lower():find('remove') == 1 and 3 then local _,_,id2,name2 = param:lower():find('remove (%d+) (.+)') name2 = name2 or "" id2 = tonumber(id2 or 1) or 1 if tonumber(id2) == nil or getPlayerByName(name2) == false then return doPlayerSendTextMessage(cid,25,"Remover premium:\n/pa remove days player\n/pa remove 30 Wakon\n [Player: "..name2.."]") end if isPlayer(getPlayerByName(name2)) == TRUE then doPlayerRemovePremiumDays(getPlayerByName(name2), id2) return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Foram retirados "..tonumber(id2).." dias de premium do jogador "..name2..".") end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"O jogador "..name2.." não esta online ou não existe.") end if param:lower():find('days') == 1 and 3 then local _,_,name3 = param:lower():find('days (.+)') name3 = name3 or "" prem = getPlayerPremiumDays(getPlayerByName(name3)) if isPlayer(getPlayerByName(name3)) == false then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"O jogador "..name3.." não esta online ou não existe.") end if prem >= 1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "O jogador "..name3.." tem "..prem.." dias de premium.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"O jogador "..name3.." é free account.") end end return TRUE end
    2 pontos
  5. Furabio

    [TFS 1.1] Chuva de items

    Tem duas versões, em forma de globalevent e talkaction GLOBAL EVENT -- globalevents.xml <globalevent type="startup" name="RainItems" script="rainitems.lua"/> rainitems.lua local config = { items = {{8306,1}, {2157,2}, {7735,1}, {8306,1}, {2184,1}, {9932,1}, {8306,1}, {9693,1}, {2148, 100}}, interval = 1000, -- time between checks areas = { [1] = { startHour = 19, startMin = 15, waves = 10, interval = 10000, chancePerTile = 10, -- % maxItemsPerWave = 15, from = {x = 1021, y = 994, z = 7}, to = {x = 1024, y = 998, z = 7} }, [2] = { startHour = 18, startMin = 43, waves = 10, interval = 10000, chancePerTile = 10, maxItemsPerWave = 15, from = {x = 1026, y = 995, z = 7}, to = {x = 1028, y = 1001, z = 7} } } } local executed = {} function Position.isPathable(pos) local tile = Tile(pos) if tile == nil then return false end return not tile:hasFlag(TILESTATE_BLOCKSOLID) end function rainWave(arena) local from = config.areas[arena].from local to = config.areas[arena].to local items_spawned = 0 for x = from.x, to.x do for y = from.y, to.y do for z = from.z, to.z do if math.random(1, 100) < config.areas[arena].chancePerTile and items_spawned < config.areas[arena].maxItemsPerWave then local pos = {x = x, y = y, z = z} if Position(pos):isPathable() then local item = math.random(1, #config.items) doCreateItem(config.items[item][1], math.random(1, config.items[item][2]), pos) Position(pos):sendMagicEffect(CONST_ME_MAGIC_RED) items_spawned = items_spawned + 1 end end end end end end function startRain(arena) broadcastMessage("Rain item event begins!") for i = 1, config.areas[arena].waves do if i == 1 then rainWave(arena) else addEvent(rainWave, config.areas[arena].interval * (i - 1), arena) end end addEvent(broadcastMessage, config.areas[arena].interval * (config.areas[arena].waves - 1), "Rain items event ended.") end function checkRain() local hour = tonumber(os.date("%H")) local min = tonumber(os.date("%M")) if not executed[hour] then executed[hour] = {} end for i = 1, #config.areas do if hour == config.areas[i].startHour and min == config.areas[i].startMin then if not executed[hour][min] then startRain(i) addEvent(checkRain, config.interval) executed[hour][min] = true end end if tonumber(os.date("%H", os.time() + (30 * 60))) == config.areas[i].startHour and tonumber(os.date("%M", os.time() + (30 * 60))) == config.areas[i].startMin then if not executed[hour][min] then broadcastMessage("Rain items event will start in 30 minutes.") addEvent(checkRain, config.interval) executed[hour][min] = true end end if tonumber(os.date("%H", os.time() + (1 * 60))) == config.areas[i].startHour and tonumber(os.date("%M", os.time() + (1 * 60))) == config.areas[i].startMin then if not executed[hour][min] then broadcastMessage("Rain items event will start in 1 minute.") addEvent(checkRain, config.interval) executed[hour][min] = true end end end addEvent(checkRain, config.interval) end function onStartup() addEvent(checkRain, 100) end TALK ACTION -- talkactions.xml <talkaction words="/rainitems" separator=" " script="rainitems_command.lua"/> rainitems_command.lua local config = { items = {{8306,1}, {2157,2}, {7735,1}, {8306,1}, {2184,1}, {9932,1}, {8306,1}, {9693,1}, {2148, 100}}, interval = 1000, -- time between checks areas = { [1] = { waves = 10, interval = 10000, chancePerTile = 10, -- % maxItemsPerWave = 15, from = {x = 1021, y = 994, z = 7}, to = {x = 1024, y = 998, z = 7} }, [2] = { waves = 10, interval = 10000, chancePerTile = 10, maxItemsPerWave = 15, from = {x = 1026, y = 995, z = 7}, to = {x = 1028, y = 1001, z = 7} } } } function Position.isPathable(pos) local tile = Tile(pos) if tile == nil then return false end return not tile:hasFlag(TILESTATE_BLOCKSOLID) end function rainWave(arena) local from = config.areas[arena].from local to = config.areas[arena].to local items_spawned = 0 for x = from.x, to.x do for y = from.y, to.y do for z = from.z, to.z do if math.random(1, 100) < config.areas[arena].chancePerTile and items_spawned < config.areas[arena].maxItemsPerWave then local pos = {x = x, y = y, z = z} if Position(pos):isPathable() then local item = math.random(1, #config.items) doCreateItem(config.items[item][1], math.random(1, config.items[item][2]), pos) Position(pos):sendMagicEffect(CONST_ME_MAGIC_RED) items_spawned = items_spawned + 1 end end end end end end function startRain(arena) broadcastMessage("Rain item event begins!") for i = 1, config.areas[arena].waves do if i == 1 then rainWave(arena) else addEvent(rainWave, config.areas[arena].interval * (i - 1), arena) end end addEvent(broadcastMessage, config.areas[arena].interval * (config.areas[arena].waves - 1), "Rain items event ended.") end function onSay(player, words, param) if not player:getGroup():getAccess() then return false end if tonumber(param) then startRain(tonumber(param)) else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, words .. " eventid") end return false end Créditos : zbisu
    2 pontos
  6. Sistema de Loterias por globalevents. Crie um arquivo .lua com o nome lottery dentro da pasta data/globalevents/scripts/loterry.lua, adicione dentro do arquivo o seguinte code: local config = { lottery_hour = "2 hours", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message) rewards_id = {2494, 2472, 2514, 2160}, -- ID dos Itens Sorteados na Loteria crystal_counts = 10, -- Usado somente se a rewards_id for crystal coin (ID: 2160). website = "yes", -- Only if you have php scripts and table `lottery` in your database! days = { "Monday-08:00", "Monday-13:00", "Monday-19:30", "Tuesday-08:00", "Tuesday-13:00", "Tuesday-19:30", "Wednesday-08:00", "Wednesday-13:00", "Wednesday-19:30", "Thursday-08:00", "Thursday-13:00", "Thursday-19:30", "Friday-01:22", "Friday-13:00", "Friday-19:30", "Saturday-21:27", "Saturday-21:28", "Saturday-21:29", "Sunday-08:00", "Sunday-13:00", "Sunday-19:30" } } local function getPlayerWorldId(cid) if not(isPlayer(cid)) then return false end local pid = getPlayerGUID(cid) local worldPlayer = 0 local result_plr = db.getResult("SELECT * FROM `players` WHERE `id` = "..pid..";") if(result_plr:getID() ~= -1) then worldPlayer = tonumber(result_plr:getDataInt("world_id")) result_plr:free() return worldPlayer end return false end local function getOnlineParticipants() local players = {} for _, pid in pairs(getPlayersOnline()) do if getPlayerAccess(pid) <= 2 and getPlayerStorageValue(pid, 281821) <= os.time() then table.insert(players, pid) end end if #players > 0 then return players end return false end function onThink(cid, interval) if table.find(config.days, os.date("%A-%H:%M")) then if(getWorldCreatures(o) <= 0)then return true end local query = db.query or db.executeQuery local random_item = config.rewards_id[math.random(1, #config.rewards_id)] local item_name = getItemNameById(random_item) local data = os.date("%d/%m/%Y - %H:%M:%S") local online = getOnlineParticipants() if online then local winner = online[math.random(1, #online)] local world = tonumber(getPlayerWorldId(winner)) if(random_item == 2160) then doPlayerSetStorageValue(winner, 281821, os.time() + 3600 * 24) doPlayerAddItem(winner, random_item, config.crystal_counts) doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .." " .. getItemNameById(random_item) .. "s! Congratulations! (Next lottery in " .. config.lottery_hour .. ")") else doPlayerSetStorageValue(winner, 281821, os.time() + 3600 * 24) doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " ..getItemNameById(random_item) .. "! Congratulations! (Next lottery in " .. config.lottery_hour .. ")") doPlayerAddItem(winner, random_item, 1) end if(config.website == "yes") then query("INSERT INTO `lottery` (`name`, `item`, `world_id`, `item_name`, `date`) VALUES ('".. getCreatureName(winner).."', '".. random_item .."', '".. world .."', '".. item_name .."', '".. data .."');") end else print("Ninguem OnLine pra ganhar na loteria") end end return true end Recomendamos modificar: - rewards_id = {2494, 2472, 2514, 2160}, -- ID dos Itens Sorteados na Loteria Recomendo de item count apenas o 2160, outros podem bugar. - crystal_counts = 10, -- Usado somente se a rewards_id for crystal coin (ID: 2160). Altere pra mais ou menos o dinheiro. - "Monday-08:00", Ajuste os dias e horários como desejado. Em globalevents.xml, adicione: <!-- Lottery --> <globalevent name="lottery" interval="60000" event="script" value="lottery.lua"/> Não mexa no code acima. Certo, essa é a parte do servidor, agora vamos adicionar as querys necessárias no MySql: CREATE TABLE `lottery` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `item` varchar(255) NOT NULL, `world_id` tinyint(2) unsigned NOT NULL default '0', `item_name` varchar(255) NOT NULL, `date` varchar(256) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; Caso você queria adicionar uma query pra testar o site, veja: INSERT INTO `lottery` (`id`, `name`, `item`, `world_id`, `item_name`, `date`) VALUES(NULL, 'Character', '2470', '0', 'golden legs', '22/05/2014 - 04:49:50'); Agora vamos pra parte do site, crie um arquivo .php com o nome lottery, adicione dentro do arquivo o seguinte code: <?PHP $main_content .= '<center><h1>Lottery</h1><h3>Lotterys held at 09:00, 14:00 and 20:30 hour, brazil time.</h3></center><br><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tr BGCOLOR="'.$config['site']['vdarkborder'].'"><td CLASS=white><center><b>Player Name</b></center></td><td CLASS=white width=184 colspan=2><center><b>Winning Item</b></center></td><td width=50 CLASS=white><center><b>World</b></center></td><td width=100 CLASS=white><center><b>Date and Time</b></center></td></tr>'; $lottery = $SQL->query('SELECT id, name, item, world_id, item_name, date FROM lottery WHERE world_id = 0 ORDER BY id DESC;'); foreach($lottery as $result) { $players++; if(is_int($players / 2)) $bgcolor = $config['site']['lightborder']; else $bgcolor = $config['site']['darkborder']; $main_content .= '<TR BGCOLOR='.$bgcolor.'><TD WIDTH=35%><center><a href="?subtopic=characters&name='.urlencode($result['name']).'">'.$result['name'].'</a></center></td><TD WIDTH=5%><img src=\'/item_images/'.urlencode($result['item']).'.gif\'></td><TD WIDTH=30%><center>'.$result['item_name'].'</center></td><TD WIDTH=7%><center>MegaTibia</center></td></td><TD WIDTH=30%><center>'.$result['date'].'</center></td></tr>'; } $main_content .= '</table>'; ?> Em index.php adicione: case "lottery"; $topic = "Lottery"; $subtopic = "lottery"; include("lottery.php"); break; Em layouts.php adicione o code abaixo: <a href="?subtopic=lottery"> <div id="submenu_lottery" 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_lottery" class="ActiveSubmenuItemIcon" style="background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);"></div> <div id="ActiveSubmenuItemLabel_lottery" class="SubmenuitemLabel">Lottery</div> <div class="RightChain" style="background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);"></div> </div> </a> Pronto galera só isso, não esqueça clica em GOSTEI! Comente, participe do tópico, isso nos ajuda muito. Créditos: .lua - Killua e Matheus .php - Matheus e Natanael Beckman querys - Natanael Beckman e Matheus Atualização 24/05/2014 - Adicionado regras pra não sorteá membro da staff(GM, GOD) - Adicionando sistema de Storage pra não correr o risco de um player ganhar 2x no mesmo dia.
    2 pontos
  7. Bruno

    TopLevel Effect

    Introdução Ele simplesmente manda um efeito para o Top Level caso ele estiver online, além disso, ele checa quando o top é ultrapassado e o efeito passa automaticamente ao novo top. Instalação: Em data/creaturescripts/creaturescripts.xml adicione: <event type="login" name="TopEffect" event="script" value="topeffect.lua"/> <event type="advance" name="CheckTop" event="script" value="topeffect.lua"/>Agora crie um arquivo em data/creaturescripts/scripts com o nome topeffect.lua e adicione: --[[ Script by Bruno Minervino para o Tibia King Caso for postar, colocar os créditos ]] local config = { tempo = 10, --tempo em segundos mensagem = { texto = "[TOP]", --não use mais de 9 caracteres efeito = TEXTCOLOR_LIGHTBLUE --efeito para a função doSendAnimatedText }, efeito = 30, --efeito da função doSendMagicEffect globalstr = 5687 -- uma global storage qualquer q esteje vazia } --[[ Não mexa em nada abaixo ]] local topPlayer = getGlobalStorageValue(config.globalstr) > 0 and getGlobalStorageValue(config.globalstr) or 0 function onLogin(cid) local query = db.getResult("SELECT `id`, `name`, `level` FROM `players` WHERE `group_id` < 2 ORDER BY `level` DESC LIMIT 1") if (query:getID() ~= -1) then local pid = query:getDataString("id") local name = query:getDataString("name") if getPlayerName(cid) == name then if topPlayer ~= getPlayerID(cid) then topPlayer = getPlayerID(cid) end setGlobalStorageValue(config.globalstr, pid) TopEffect(cid) end end registerCreatureEvent(cid, "CheckTop") return true end function onAdvance(cid, skill, oldlevel, newlevel) if skill == 8 then local query = db.getResult("SELECT `id`, `name`, `level` FROM `players` WHERE `group_id` < 2 ORDER BY `level` DESC LIMIT 1") if (query:getID() ~= -1) then local level = tonumber(query:getDataString("level")) if level < newlevel and topPlayer ~= getPlayerID(cid) then doBroadcastMessage("O jogador " .. getPlayerName(cid) .. " tornou-se o novo Top Level. Parabens!", 22) topPlayer = getPlayerID(cid) doSaveServer() setGlobalStorageValue(config.globalstr, getPlayerID(cid)) TopEffect(cid) end end end return true end function TopEffect(cid) if not isPlayer(cid) then return true end if topPlayer == getPlayerID(cid) then doSendAnimatedText(getCreaturePosition(cid), config.mensagem.texto, config.mensagem.efeito) doSendMagicEffect(getCreaturePosition(cid), config.efeito) addEvent(TopEffect, config.tempo * 1000, cid) end end function getPlayerNameById(id) local query = db.getResult("SELECT `name` FROM `players` WHERE `id` = " .. db.escapeString(id)) if query:getID() ~= -1 then return query:getDataString("name") end return 0 end function getPlayerIdByName(name) local query = db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(name)) if query:getID() ~= -1 then return tonumber(query:getDataString("id")) end return 0 end function getPlayerID(cid) return getPlayerIdByName(getPlayerName(cid)) end Espero que gostem
    1 ponto
  8. Global Full [CLIENTS COMPATÍVEIS] 10 e 11.5. [BUGS E DOWNLOAD] BAIXEM E REPORTEM EM: OTXGlobal Full [FEATURES] NEW DEPOT, NEW SPAWN, NEW CAST SYSTEM, NEW NPC SYSTEM VIA BANK BALANCE, NEW CRITICAL BOOST SYSTEM, NEW POTIONS, REWARD SYSTEM, PREY ... [MAPA] FULL GLOBAL MAP WITH FEYRIST TODAS CIDADES E NOVAS AREAS TODAS QUESTS FUNCIONANDO! [EVENTS] WAR-ANTIENTROSA [CONTATO] SKYPE: onjogos WHATSAPP: (66) 998427-4493 [Créditos]Tfs 1.2 Developers -Zbizu - Pitis91 - MatheusMkalo - Gesior - Lundrial - M4G0 - Fish04k - Printer - Djarek - Ninjalulz - Slavidodo - Thexamx - Socket2810 - Ciroc -Absolute - Gordonbay - Mitsuig - Alissonfgp - Gunz - Bruno Minervino - Comedinha -Hirako - Maya - Mattyx14 – Darkjav - Viking Tibia
    1 ponto
  9. Avuenja

    [Sugestão] Adicionar Pastebin e Gist

    Olá, então gostaria de sugerir, a implementação do Gist e Pastebin no fórum se já não tiver. Dai basta colar o link dos mesmo que eles funcionaram. Muitos desenvolvedores usam por terem um editor mais robusto para codigos. Exemplo de como ficam:
    1 ponto
  10. Tony

    [Pedido] Faça seu pedido!

    [Tamanho*]: 300x300px. [Tema*] : Lorem Ipsum. [Tipografia*]: Lorem Ipsum. [Tipo*]: Background. [Outros]: Caso houver um detalhe que o designer possa colocar. [Cores preferenciais]: Vermelho,Azul,Verde.... [*] : OBRIGATÓRIO CASO OS CAMPOS OBRIGATÁRIOS NÃO ESTIVEREM TODOS PREENCHIDOS ENVIAREI UMA MENSAGEM PARA O CRIADOR DO PEDIDO , SE EM 24 HORAS ELE NÃO ALTERAR IREI APAGAR O POST PARA EVITAR POLUIÇÃO NO TÓPICO.
    1 ponto
  11. Fala pessoal, tudo bem? Sou desenvolvedor WEB e há muitos anos trabalho desenvolvendo pra uma empresa de hospedagem painéis de controle pra facilitar a vida do OTadmin. Hoje, gostaria do apoio da comunidade pra listar comigo os melhores sistemas de sites pra OpenTibia, os famosos A.A.C. Vejo que com a volta do fórum precisamos unificar o conteúdo que está espalhado por diversos fórums e sites. Eu conheço esses aqui: - Znote - https://github.com/Znote/ZnoteAAC - ModernAcc - https://otland.net/forums/modern-aac.483/ - Gesior - https://github.com/gesior/Gesior2012 - PandaAAC - https://github.com/pandaac/pandaac - DevAAC - https://github.com/DevelopersPL/DevAAC Que outros vocês podem sugerir? Onde seria o melhor link pra baixá-los? Meu objetivo é trazer todos eles aqui pro fórum onde vou obter as melhores versões, colocar no github e dar uma arrumada aqui na minha máquina e postar aqui no xtibia.com pra vocês. Quem pode contribuir? Posso compartilhar meu github
    1 ponto
  12. Animal Pak

    Noobwar

    Informações: War server Trainers Quests Hunting area Vip System Donator items E mais! Imagens: Download: http://www.mediafire.com/download/rt4q1mcdmsaa5f3/Noobwar+data+git.rar Scan: https://www.virustotal.com/pt/file/a4449b69db35cfc0f3bb8c91a6fafc301899369aecbc48f2fbcde058476da81e/analysis/1427461827/ Créditos: Noobwar team danipopeye
    1 ponto
  13. Subwat

    [Oficial] Refugia (8.60) 26/08/2012 0.0.8

    Subwat não morreu subwat é o rei dos ot fi morre nunca não alias joga ai que é top monster24h.com antigo bloodserv 1/1 acc manager é nois que voa.
    1 ponto
  14. Foxkbt

    Guns Warriors Online

    Guns Warriors Olá Galera do XTibia! LANÇAMENTO SABADO 01/05/2015 Venho apresentar para vocês meu novo projeto, o Guns Warriors, que se trata de um jogo no estilo MOBA (Multiplayer Online Battle Arena), que visa batalhas rápidas e divertidas. No Guns Online você poderá Lutar com seus amigos em batalhas frenéticas usando as armas mais cobiçadas dos clássicos de F.P.S. e suas fases mais conhecidas. o jogo acabou sua fase de teste e será lançado com os seguintes sistemas sistema de Tiro animado sistema de recarga animada sistema de bomba animada sistema de faca animada sistema de mira sistema de colete e capacete modo Death match modo Zombie Por que jogar o Guns Warriors? 1º É um jogo GRÁTIS do qual vc poderá interagir com seus amigos e fazer novos nas partidas mais divertidas. 2º É o primeiro jogo derivado de tibia com armas de fogo animadas quando atiram e recarregam. 3º existem varias armas a serem conquistadas no jogo. 4º você pode evoluir sua patente para ter novas armas e mostrar sua conquista. 5º ao longo que o jogo for atualizando haverão novos modos de jogo com muito mais diversão. 6º teremos uma fase nova a cada quinzena após no inicio do jogo. 7º É o primeiro jogo derivado de tibia onde você pode multilar e decapitar os zumbis. photos Vídeo para saber mais detalhes fique ligado na pagina do facebook: https://www.facebook.com/pages/Guns-Warriors/1404837573164581?ref=hl
    1 ponto
  15. Benny

    [X] Resource Pack #1

    Trago sim ! (: Obrigado pelos comentários, ajudam bastante <3
    1 ponto
  16. Um ótimo projeto, curti muito os updates!
    1 ponto
  17. Aumenta sim, alem do mais você tem que verificar as versões do TFS ser for diferente de uma para a outras algumas adaptações em lua devem ser feitas.
    1 ponto
  18. Prontinho: https://gist.github.com/avuenja/d9b911dabcf925c4bfb9 Um conselho, tente não usar letras maiusculas na programação de code php e html.
    1 ponto
  19. Alem do aumento de SPR, efeitos, novas funções para editar e mais estabilidade no servidor.
    1 ponto
  20. Ótimo, procurei isso funcionando e não encontrei perfeito. Vou testar esse ai. Uma dica, avisa no tópico pro pessoal que for criar USAR A API DE NOTIFICACOES, pois o pagseguro está descontinuando ela e só aparece, pra quem criar conta hoje no pagseguro, a API nova.
    1 ponto
  21. ScythePhantom

    [Show Off] ScythePhantom

    Haha, sim... Mais alguns "prints"...
    1 ponto
  22. DuduPlay01

    Como Criar Um Otserver 8.60 Tibia

    Como criar um OTServer 8.60 sem bugs Tibia Vamos Lá -- 1- Baixe o OTServe Você pode escolher qual quiser o Download New Slayer Yurots 8.60 http://www.4shared.com/file/m6-Ixnup/New_Slayer_Yurots_860.html Scan do New Slayer Yurots 8.60 http://www.speedyshare.com/files/25466905/New_Slayer_Yurots_8.60.rar Está Tudo Ai Após Ter Baixado Estraia-o 2- Coloque-o Na pasta onde desejar e abra o arquivo config.lua com o bloco de notas Agora e Só você configurar Uploaded with ImageShack.us Pronto Observe a imagen e você vai ver que em baixo do '-- Connection config' Vai ter worldId = 0 ip = "127.0.0.1" << Aqui você vai configurar seu Ip Ou seja se for rodar o serve so no seu pc sem ser online vai ser nesse endereço se for coloca online entre no saite www.meuip.com.br e cole o ip que estiver falando Lá. bindOnlyConfiguredIpAddress = false loginPort = 7171 << essa e a porta que você vai rodar seu servidor ok? gamePort = 7172<< e essa tambeim entao procimo passo e Desbloquear as portas do seu roteador e do seu firewall do windows. Clique em Iniciar e em Meus locais de rede. Em Tarefas de rede, clique em Exibir conexões de rede. (Ou clique com o botão direito do mouse em Meus locais de rede e clique em Desktop e em Propriedades.) Clique com o botão direito do mouse na conexão que você usa para a Internet e clique em Propriedades. Clique na guia Avançadas e clique em Configurações. Observação Se o botão Configurações não estiver disponível, o ICF não está ativado para essa conexão e não é necessário abrir portas (porque todas estão abertas). Clique em Adicionar para abrir uma nova porta. Ai você pode coloca Nome da porta: OTServ E Endereço da porta 7171 e adicionar não clique em mais nada depois mesmo procedimento so que com a porta 7172 Você pode coloca o nome da porta OTSERV2 pronto Agora Vamos No seu router Caso sua net for compartilhada não tem problema você precisará entrar no seu roteador e depois no seu modem Vamos lá Primeiro clica iniciar executar e digita cmd ou command Digita ipconfig Vai aparecer gateway Acessa no Internet explorer http://192.168.0.1 supondo que é o gateway Aí vc pode mudar de bridge pra router Se não conseguir entra no abusar.org e pesquisa pelo modelo de seu modem ou entra no site do mesmo e baixa o manual para o procedimento correto para a conversão pro modo roteador. O login é admin e senha deixa em branco ou vice-versa. ou asiim tambeim você consegue Em geral você tem que abrir uma janela do Internet Explorer (ou Firefox, ou similar) e digitar, na barra de endereço, o endereço IP do modem (também varia de MODEM pra MODEM). Daí deve abrir uma página de configuração do MODEM (você provavelmente deve ter que digitar uma senha de administrador -- cada MODEM vem com uma senha padrão) . Depois disso você acessa as configurações do MODEM e vai poder selecionar o modo router em vez de bridge. Alguns IPs comuns em MODEMs são: - 192.168.1.1 - 192.168.0.1 - 10.1.1.1 - 10.0.0.1 (você pode experimentar) Pra isso exidte um programinha amigo xD *-* Para nos ajudar vamos lá Se você informar o modelo do MODEM eu posso explicar melhor o procedimento... Lembrando que o login e Admin e a senha adimin ok Simple Port Forwarding: programa simples que dispensa o uso do sistema operacional que vem embutido em todo roteador. Ele possui suporte para marcas e modelos mais populares. Para ir para a página de download, clique na imagem abaixo: Leia mais em: http://www.tecmundo.com.br/3990-aprenda-a-liberar-portas-em-um-roteador-facilmente.htm#ixzz1XBaYHvKT aqui esta o link do programa http://www.baixaki.com.br/download/simple-port-forwarding-portable.htm Ok Depois Você o estala e coloca todas enformações para ele entrar em seu modem e desbloquear as portas ok? Vou tando para o otserv Volte na pasta onde estraio apos ter configurado o config.lua Abra o de novo e va em rates La voce configura a rate do seu OTServ Feito isso inicie o serve o exe da pasta que esta com o nome New Slayer Yurots Apos ter rodado aparecerá servidor online mais nao aparecera com seu nome ainda no procimo tópico irei acabar de encinar a configurar o config Ok Apos te o change ip estalado abra o tibia lembrando que e a versao 8.60 De change ip mais antes disso baixe o no-ip e crie seu dominio tipo para ficar asim quando as outras pessoas forem entrar darkfrozen.servegame.com Que e meu otserv Apos isso pode da change no ip 192.168.1.1 (lembrado que o gateai padrao) Ou Seja Local Host E depois e so jogar pessoal Bom jogo Qualquer duvida e so Escrever que logo respondereii A pergunta Lembrando -- Que Eu sou ot-admin, maper (edito mapas) ajudo em servidores de my sql e sql lite, E quem quizer eu acesso o pc por programa remoto e configuro o server da pessoa e so falar pooq cansa le esse tutorial ner Mais e isso qualquer coisa em add no msn dudu-play01@hotmail.com Tutorial by: Arthur Carvalho up
    1 ponto
  23. Tony

    Criando Um Cliente 100% Proprio

    Olá pessoal do Xtibia! Hoje vou ensinar a vocês como criar um cliente 100% próprio para seu servidor de tibia. :forward: Créditos :back: :star2: Jakiin :star2: Trazer ao x-tibia :star2: TiraDuvidas :star2: Fazer o Tutorial Este tópico recebeu destaque em nosso portal!
    1 ponto
  24. LordKraytos

    Pokemon--X--advanced{Lord-Kraytos}

    Pokemon--X--Advanced era meu projeto pokemon!Mas eu desistir ent vim postar aq meu projeto para projetos Grandes. Download no final do post. Lembrete-Meu primeiro post . . • Menu : ├ Informações; ├ Erros; ├ Print's; ├ Creditos; └ Download . Informações: OBS:Pokemons de 4 geraçao falta add os corpse no item.xml e nos pokemon--e pokemon de 3 geraçao sera add na v.2. . Erros: . Serao add no servidor v.2: . Imagens: . CREDITOS; 25%eu 30%Anna pela a base usada 40%Bolz pelo mapa e a base 5% Sprites e scripters Xtibia . Download: A v.2 sera com a base do skyfall.irei editar colokar novas sprites.e sistemas!
    1 ponto
  25. Valew Insaend, só n reputo agr pq já excedi o limite hoje EHUAHEm vlw mesmo, vai ajudar pra caramba
    1 ponto
  26. Vocês já devem ter essa criatura mais vai aii uma previa da minha versão dela, caso gostem podem usar podem editar a vontade... se eu tiver tempo mando depois as costas! abrs
    1 ponto
  27. LuckinhaSan

    Manual De Um Servidor

    Aviso: Neste tópico não estarei ensinando como criar um servidor de Pokémon/Open Tibia, ou até mesmo como liberar portas no modem, mas sim, entender tudo do servidor as pastas, os arquivos, e etc... E além disso, dar dicas! Olá a todos, primeiramente não sabia definitivamente o nome para o tópico, mais a função do tópico servirá para que auxilie, que as pessoas entendam arquivos e pastas dos servidores! E vejam as dicas para um servidor de sucesso! ________________________Entendendo arquivos e pastas do servidor Qual e a diferença de uma versão para outra? Quando há atualizações em parte de versão e porquê algo modificou, algo foi corrigido ou algo foi removido/adicionado. Como por exemplo da versão para 8.54 para a 8.60 veja o que aconteceu (as modificações): Fonte - http://pt.wikipedia....%B3ria_do_Tibia Um detalhe é o seguinte, em algumas versões alguns scripts não são possiveis ser instalados/adicionados pois não são compatíveis, ou não possuem a tal função (me corrigem se estiver errado). _____________________________Monstros Os monstros são feitos a partir de arquivos com a extensão .xml, nestes pequenos textos possuem propriedades onde define o seguinte: vida, mana, magic level (para calcular o dano mágico dos monstros), experiência, looktype (o id do outfit dos monstros), as suas vozes, o loot e etc... Abaixo estamos com as informações de um monstro, o kongra. Para cadastrar (maneira de falar) ou adicionar este monstro no jogo e simples, apenas colocar uma linha de um monstro antigo e adicionar uma nova com as informações de seu novo monstro, adiciona esta linha em monsters.xml veja um exemplo: <monster name="Marid" file="djinns/marid.xml"/> colocando as informações de seu monstro: <monster name="Éks Tibia" file="ekstibia.xml"/> __________________________Magias As magias dos servidores são feitas em arquivos com extensão .lua ela também possuem suas propriedades: healar, atacar, animações, área da magia, danos e etc... As magias como os monstros também possuem o .xml, chamado spells.xml mais lá e definido o level que necessitara para utilizar a magia, quantidade de mana que gastará, o magic level que necessita para usar a magia, e etc... __________________________O que é Globalevents? De primeira impressão pode ser algo complicado de entender (foi o que eu tive), mais não, é super simples! Globalevents não e nada mais do que uma pasta onde guarda as funções do clean, serversave e as propagandas. O Clean e o Save sempre acompanham todos os servidores, menos as propagandas que são feitas manualmente ou alguns apenas modificam a existente, mais aqui vou fazer um breve tutorial de como fazer uma: Crie um arquivo em globalevents/scripts com o nome de propaganda.lua e adicione: para finalizar adicione em globalevents.xml o seguinte: <globalevent name="propaganda" interval="1500" script="propaganda.lua"/> _____________________________World World é uma simples pasta onde possui arquivos com extensão otbm, que seria a extensão do RME (Remeres Map Editor). Com estes arquivos é definido o mapa do servidor, caso modificar o mapa com outro nome, não esqueça de alterar no config.lua! _____________________________Logs Logs são os registros de mensagens que passaram pelos channels públicos e até mesmo os comandos que foram efetuados em parte de gamemasters, tutores, seniors tutores e GOD. ____________________________NPCs Os "Non-Playable-Characters", ou NPCs são mais complicados. Os NPC's possuem 2 partes, a parte física (a parte que possui propriedades de vida, falas inicial, falas terminais, entre outras) e a parte de ações que envolve os diálogos por exemplo: Player > Hi NPC > Olá xTibia, para descobrir minhas ofertas diga trade Player > Trade NPC > Boas Compras! Player > Bye NPC > Até a próxima! Os NPCs possuem a base que seria a parte física com a extensão .xml e a onde lista todos os NPCs, a npcs.xml (como de costume em todos servidores). Aviso: Algumas pastas que não citei (talkactions, actions, movements...) são mais complicadas, para entender, nada que uma rápida busca na internet faça o entender! __________________________Dicas para o sucesso do servidor! Na xTibia a alguns tutoriais excelentes! Você pode optar aos seus jogadores um Client Próprio com a seguinte vantagem: acesso rápido. Nesse caso veja o tutorial do Jakiin http://www.xtibia.co...te-100-proprio/ Outra dica é adicionar effects nas actions ou em outras coisas, para deixar o jogo mais "animado". Veja este pequeno tutorial: Feito por: Antharaz Uma dica bem eficaz e fuçar nas funções do servidor, para que você possa aprender sozinho! (detalhe: foi assim que aprendi a fazer scripts entre outros) Muitos servidores de sucesso possuem sistemas, inovações! Porquê não inove também? Adicione novos eventos, novos items, novos monstros, novas quests, novas citys... Mais lembre-se nunca fugir do tema TIBIA. É isso ai galera, pode conter alguns erros e apenas comentarem que estarei arrumando, espero ter ajudado todos! Comentário - Créditos - Doughell
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...