Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 05/12/15 em todas áreas
-
Tp com Limite de Players é um script que determina quantos players podem acessar cada area por vez. Com esse script dá para deixar as hunts mais distribuidas. Veja como funciona com Imagen. Instalando o script: Em data/movements/scripts crie um arquivo com o nome Limitetp.lua e cole este script dentro: local c = { limit = 5, -- Limite de jogadores msgCancel = 'Tp bloqueado. Maximo de jogadores atingido', -- Mensagem quando o limite de jogadores estiver atingido area = { From = {x = 1069, y = 1027, z = 6}, -- Coordenada maxima superior esquerda To = {x = 1071, y = 1030, z = 7}, -- Coordenada minima inferior direita }, pos = {x = 1070, y = 1030, z = 7}, -- Coordenada onde será teletransportado local function getPlayersInArea(fromPos, toPos) local t = {} for _, cid in ipairs(getPlayersOnline()) do if isInRange(getThingPos(cid), fromPos, toPos) then table.insert(t, cid) end end return t end function onStepIn(cid, item, fromPos, toPos) if isPlayer(cid) then if table.getn(getPlayersInArea(c.area.From, c.area.To)) < c.limit then doSendMagicEffect(fromPos, CONST_ME_TELEPORT) doTeleportThing(cid, c.pos) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) else doPlayerSendCancel(cid, c.msgCancel) doTeleportThing(cid, toPos, false) end end return true end Em movements.xml adicione a tag: <movevent type="StepIn" uniqueid="9478" event="script" value="Limitetp.lua"/> Veja a imagem da configuração: Espero que gostem e usem!! Credito: Belerofonte4 pontos
-
[Tutorial] Editar icons de cooldown (spell)
Krono e 2 outros reagiu a Administrador por um tópico no fórum
Os icons do cooldown são aquelas imagens que carregam ao usar uma magia (adicionado na versão 8.70). É possível modificar essas imagens por outras, basta seguir os passos abaixo: Você precisará de: PicEditor | Scan Icon(s) no tamanho 20x20 1. Instale o PicEditor 2. Abra o Pic Editor 3. Vá em file -> open, selecione um client superior a 8.70 (?) e abra o tibia.pic que está dentro da pasta 4. Encontre a imagem abaixo: 5. Agora, com essa imagem, vá, no Pic Editor, em file - export e salve a imagem em algum lugar 6. Abra a imagem utilizando o paint, os icons são todos 20x20, para substituílos basta colar os novos por cima 7. Salve o arquivo, volte ao pic editor, selecione a imagem que você exportou, vá em file - import e selecione a imagem editada 8. File - compile, ele vai exportar um arquivo NOME.pic, você deve jogar esse no client, substituindo o antigo Tibia.pic Foi um tutorial rápido, espero que ajude.3 pontos -
[Encerrado] Nto ;c
Nazistah e um outro reagiu a ZiKaNiGhTh por um tópico no fórum
Gente, alguém pode disponibilizar download de algum server de narutibia ? Para eu usar como base, se possível sem bugs e com algumas vocations a mais. Ficarei eternamente grato quem me ajudar. ):2 pontos -
Tenta assim : local c = { limit = 5, -- Limite de jogadores msgCancel = 'Tp bloqueado. Maximo de jogadores atingido', -- Mensagem quando o limite de jogadores estiver atingido area = { From = {x = 1069, y = 1027, z = 6}, -- Coordenada maxima superior esquerda To = {x = 1071, y = 1030, z = 7}, -- Coordenada minima inferior direita }, pos = {x = 1070, y = 1030, z = 7}, -- Coordenada onde será teletransportado } local function getPlayersInArea(fromPos, toPos) local t = {} for _, cid in ipairs(getPlayersOnline()) do if isInRange(getThingPos(cid), fromPos, toPos) then table.insert(t, cid) end end return t end function onStepIn(cid, item, fromPos, toPos) if isPlayer(cid) then if table.getn(getPlayersInArea(c.area.From, c.area.To)) < c.limit then doSendMagicEffect(fromPos, CONST_ME_TELEPORT) doTeleportThing(cid, c.pos) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) else doPlayerSendCancel(cid, c.msgCancel) doTeleportThing(cid, toPos, false) end end return true end faltava um "}" pra fechar a tabela.2 pontos
-
Compilando TFS 1.3 com vídeo-aula
JapaSuetsugu reagiu a Bruno por um tópico no fórum
Compilando TFS 1.3 no Windows 1. Baixe os softwares requeridos Para compilar o The Forgotten Server no Windows, você vai precisar: Visual Studio 2015 (Compilador) TFS SDK v3.2 (libs) Libs do Boost C++ (32-bits, 64-bits) 2. Instale os softwares requeridos Após ter baixado os softwares listados na etapa acima, comece instalando o Visual Studio e Boost C++. Extraia o TFS SDK v3.2 em qualquer pasta do seu computador e execute o arquivo "register_tfssdk_env.bat" para setar a variável de ambiente do local onde está o TFS SDK, assim nosso compilador irá encontrar as libs quando começar a compilar. Mova o arquivo "register_boost_env.bat" da pasta do TFS SDK para a pasta onde você instalou as libs do Boost C++ e execute-o (se você seguiu os passos do instalador, está esta na pasta chamada boost_1_62_0). 3. Baixe as sources Se você possuir o Git Client instalado, você poderá clonar a última cópia com este comando: > git clone https://github.com/otland/forgottenserver.git Se você não possuir o Git Client instalado, você poderá baixar a última cópia do The Forgotten Server através do link: https://github.com/otland/forgottenserver/archive/master.zip 4. Compilando Procure o diretório vc14 na pasta do The Forgotten Server que você baixou, e abra o arquivo "theforgottenserver.sln". Isso deverá iniciar o Visual Studio 2015 e você estará pronto para continuar. Para configurar a compilação, navegue para Build -> Configuration Manager no menu superior. Um popup deverá aparecer onde você poderá escolher entre "Release" ou "Debug" para compilar, escolha também para qual Platadorma você irá compilar: 32-bits (Win32) ou 64-bits (x64). Para iniciar a compilação, abra o menu Build novamente e clique em Build Solution (Ctrl + Shift + B). 5. Vídeo-aula 6. Créditos Mark - Autor do tutorial e do projeto The Forgotten Server Bruno Minervino - Tradução e gravação do vídeo1 ponto -
1 ponto
-
Bom pessoal, eu estou com um projeto ja a um bom tempo sendo construído sozinho, ja fiz basicamente tudo e a partir de agora que busco inovar o servidor. Não posso mais ficar cuidando de tudo sozinho, chegamos a reta final e é um momento importante. Estou precisando de uma equipe que possa estar atuando comigo nessa reta final. Não será composta de muitos membros, resumidamente eu e um Mapper. Entao quem estiver a fim de participar da equipe entra em contato pela página do projeto no Facebook, estarei deichando logo abaixo para quem quiser ver mais do projeto também.1 ponto
-
FusionPoke Open Beta Test!
Wend ll reagiu a bladeplays por um tópico no fórum
eu mexi um poko nele e pus ele pronto pra ficar online sem da crash !1 ponto -
function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) local from,to = {x = 154, y = 68, z = 7},{x = 160, y = 70, z = 7} if isPlayer(cid) and isMonster(lastHitKiller[1]) and isInRange(getCreaturePosition(cid), from, to) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doCreatureAddHealth(cid, getCreatureMaxHealth(cid), 65535, 256, true) doCreatureAddMana(cid, getCreatureMaxMana(cid)) doRemoveConditions(cid, false) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce saiu da arena.") return false end return true end1 ponto
-
Bug no war sytem
leandrozera reagiu a zetto por um tópico no fórum
Entendi, não é bug no War system, é bug na talkaction de frags. Troque tudo que tem no arquivo da pasta talkactions/scripts/frags por esse. function onSay(cid, words, param, channel) if(not getBooleanFromString(getConfigValue('useFragHandler'))) then return false end local time = os.time() local times = {today = (time - 86400), week = (time - (7 * 86400))} local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `k`.`war` = 0 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(result:getID() ~= -1) then repeat local content = { name = result:getDataString("name"), level = result:getDataInt("level"), date = result:getDataInt("date") } if(content.date > times.today) then table.insert(contents.day, content) elseif(content.date > times.week) then table.insert(contents.week, content) else table.insert(contents.month, content) end until not result:next() result:free() end local size = { day = table.maxn(contents.day), week = table.maxn(contents.week), month = table.maxn(contents.month) } if(getBooleanFromString(getConfigValue('advancedFragList'))) then local result = "Frags gained today: " .. size.day .. "." if(size.day > 0) then for _, content in ipairs(contents.day) do result = result .. "\n* " .. os.date("%d %B %Y %X at ", content.date) .. content.name .. " on level " .. content.level end result = result .. "\n" end result = result .. "\nFrags gained this week: " .. (size.day + size.week) .. "." if(size.week > 0) then for _, content in ipairs(contents.week) do result = result .. "\n* " .. os.date("%d %B %Y %X at ", content.date) .. content.name .. " on level " .. content.level end result = result .. "\n" end result = result .. "\nFrags gained this month: " .. (size.day + size.week + size.month) .. "." if(size.month > 0) then for _, content in ipairs(contents.month) do result = result .. "\n* " .. os.date("%d %B %Y %X at ", content.date) .. content.name .. " on level " .. content.level end result = result .. "\n" end local skullEnd = getPlayerSkullEnd(cid) if(skullEnd > 0) then result = result .. "\nYour " .. (getCreatureSkullType(cid) == SKULL_RED and "red" or "black") .. " skull will expire at " .. os.date("%d %B %Y %X", skullEnd) end doPlayerPopupFYI(cid, result) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You currently have " .. size.day .. " frags today, " .. (size.day + size.week) .. " this week and " .. (size.day + size.week + size.month) .. " this month.") if(size.day > 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Last frag at " .. os.date("%d %B %Y %X", contents.day[1].date) .. " on level " .. contents.day[1].level .. " (" .. contents.day[1].name .. ").") end local skullEnd = getPlayerSkullEnd(cid) if(skullEnd > 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your " .. (getCreatureSkullType(cid) == SKULL_RED and "red" or "black") .. " skull will expire at " .. os.date("%d %B %Y %X", skullEnd)) end end return true end1 ponto -
[PEDIDO] Colocar Efeito em OTClient
CaioValverde reagiu a Wend ll por uma questão
essas coordenadas aqui: {from = {x = 1001, y = 1057, z = 13}, to = {x = 1012, y = 1066, z = 13}, name = 'Party'}, tem que está nesse formato1 ponto -
[Erro] Rme
CaioValverde reagiu a Wend ll por uma questão
passou os arquivos items.xml e items.otb do seu servidor pra pasta Remere's Map Editor\data\854 do RME? e está abrindo o RME com o client das novas sprites adicionadas?1 ponto -
[Encerrado] Poketibia
bladeplays reagiu a Wend ll por um tópico no fórum
Sem dúvidas eu usaria esse servidor que vem sendo atualizado pelo @Lordbaxx e é uma ótima base para projeto sério pois contém as source: http://www.xtibia.com/forum/topic/233665-pokemon-imperium-open-source/ resolvido? se sim clique em melhor resposta para que a tag seja adicionada automaticamente ^^1 ponto -
muito boa essa inovação estimular mais competições entre os membros eu tenho que agradecer todos vocês da equipe que fez de tudo pra trazer de volta o grande Xtibia obg *-*1 ponto
-
Sistema de Aura
CaioValverde reagiu a zipter98 por uma questão
^ como os códigos são interpretados na ordem que estão, haverá erro caso o jogador deslogue. local tab = { [6] = {effect = 70}, [7] = {effect = 70}, [8] = {effect = 70}, [9] = {effect = 70}, [10] = {effect = 70}, [11] = {effect = 70},-- [vocationID] = {effect = Number} [12] = {effect = 70} } local delay = 2 -- tempo do efeito da aura em segundos function ariseAura(cid) if isPlayer(cid) then doSendMagicEffect(getThingPos(cid), tab[getPlayerVocation(cid)].effect) addEvent(ariseAura, delay * 1000, cid) end end function onLogin(cid) if tab[getPlayerVocation(cid)] then ariseAura(cid) end return true end1 ponto -
FusionPoke Open Beta Test!
bladeplays reagiu a Wend ll por um tópico no fórum
Tenho ele mais não, formatei o HD1 ponto -
FusionPoke Open Beta Test!
bladeplays reagiu a Wend ll por um tópico no fórum
Pode mim falar oque editou nesse servidor? pelas informações não vejo nada mudado, porq todas essas edições foram feitas por mim vejo que o cp (centro pokemon) ainda continua o mesmo que eu editei creio que só tiraram o piso com o nome PokéxMostyer! nas prints que você mostrou não vi nada de novo; os megas pokemons, npc vendendo de stone, npc de viajem, npc que vende lendarios, npc que vende outfits , bike e tv system, medalha vip e várias outras coisas foram criadas por mim. fora isso está bom, boa sorte com o OT Edit: não estou mais editando esse servidor porque parei de mexer com PDA, ai doei para um cara e vendi uma copia pra outros1 ponto -
[Encerrado] Poketibia
bladeplays reagiu a Wend ll por um tópico no fórum
Esse (PDA): http://www.xtibia.com/forum/topic/230940-pda-by-bolz-versao-god-anna/ Distro limpinha ^^ se for para projeto sério eu recomendo um servidor com source, e os erros você vai corrigindo de pouco em pouco1 ponto -
[MOD] Pokedex Window para base PDA [v1.0]
bladeplays reagiu a Wend ll por um tópico no fórum
Ótimo MOD, tenho certeza que vários membros iram usar rep+1 ponto -
Script de banir personagem
Furabio reagiu a PobrePreto por uma questão
function onSay(cid, words, param, channel) local param = string.explode(param, ",") local bantypes = { ["ip"] = function() doAddIpBanishment(getIpByName(param[2]) ) return true end,--, mask[, length[, reason[, comment[, admin[, statement]]]]]]), ["name"] = function() doAddPlayerBanishment(param[2]) return true end,--}, type[, length[, reason[, action[, comment[, admin[, statement]]]]]]]), ["account"] = function() doAddAccountBanishment(getAccountIdByName(param[2]) ) return true end,--, playerId[, length[, reason[, action[, comment[, admin[, statement]]]]]]]), } --[[ doRemoveIpBanishment(ip[, mask]) doRemovePlayerBanishment(name/guid, type) doRemoveAccountBanishment(accountId[, playerId]) ]] if words == "/ban" then for i, j in pairs(bantypes) do if (string.lower(param[1]) == i) then doRemoveCreature(getCreatureByName(param[2]), true) return j() and doBroadcastMessage(" [BAN ADVISE]--> O Staff: ["..getCreatureName(cid).."] Baniu o player ["..param[2].."] por "..i..".", MESSAGE_STATUS_WARNING) end end end return true end <talkaction log="yes" access="5" words="/ban" event="script" value="ban.lua"/>1 ponto -
Quest Simples
narutomaniacos reagiu a zipter98 por uma questão
Action: local config = { time = 10, --Tempo para fazer a quest, em minutos. toPosition = {x = x, y = y, z = z}, --Para onde os jogadores serão teleportados. positions = { {x = x, y = y, z = z}, --Posições que os jogadores devem ficar. {x = x, y = y, z = z}, {x = x, y = y, z = z}, {x = x, y = y, z = z}, }, level = 100, --Level mínimo para fazer a quest. storages = {8605, 8606}, } function onUse(cid) local pid = {} if getPlayerStorageValue(cid, config.storages[2]) > -1 then return doPlayerSendCancel(cid, "You already completed that quest.") end for _, online in pairs(getPlayersOnline()) do if getPlayerStorageValue(online, config.storages[1]) > -1 then return doPlayerSendCancel(cid, "Someone is at the quest right now.") end end for i, position in pairs(config.positions) do local p = getTopCreature(position).uid if p < 1 or not isPlayer(p) then return doPlayerSendCancel(cid, "Not enough players to start the quest.") elseif getPlayerLevel(p) < config.level then return doPlayerSendCancel(cid, "Some player is at a level below "..config.level..".") end pid[#pid + 1] = p end for _, player in pairs(pid) do doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, "Good luck at the quest!\nTime: "..config.time.." minutes.") doTeleportThing(player, getClosestFreeTile(player, config.toPosition)) setPlayerStorageValue(player, config.storages[1], 1) end addEvent(function() for _, player in pairs(pid) do if isPlayer(player) and getPlayerStorageValue(player, config.storages[1]) > -1 then doPlayerSendTextMessage(player, 27, "Oh, timeout. Sorry. :/") setPlayerStorageValue(player, config.storages[1], -1) doTeleportThing(player, getTownTemplePosition(getPlayerTown(player))) end end end, config.time * 60 * 1000) return true end Tag: <action actionid="xxx" event="script" value="nome_do_arquivo.lua"/> Troque xxx pelo actionid. Creaturescript: function onLogout(cid) if getPlayerStorageValue(cid, 8605) > -1 then return doPlayerSendCancel(cid, "You can't logout on the quest.") and false end return true end function onLogin(cid) if getPlayerStorageValue(cid, 8605) > -1 then setPlayerStorageValue(cid, 8605, -1) end return true end Tags: <event type="logout" name="questLogout" event="script" value="nome_do_arquivo.lua"/> <event type="login" name="questLogin" event="script" value="nome_do_arquivo.lua"/> Em data/creaturescripts/scripts, abra o arquivo exp2.0.lua. Acima de: if getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 then Coloque: if getPlayerStorageValue(cid, 8605) > -1 then for _, pid in pairs(getPlayersOnline()) do if getPlayerStorageValue(pid, 8605) > -1 then doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid))) doPlayerSendTextMessage(pid, 27, "Someone died and you lost the quest. Better luck on the next time!") setPlayerStorageValue(pid, 8605, -1) end end doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) return false end No código de premiação da quest, coloque as seguintes linhas: setPlayerStorageValue(cid, 8605, -1) setPlayerStorageValue(cid, 8606, 1)1 ponto