Ir para conteúdo

Matheuus

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Curtir
    Matheuus deu reputação a Yan Liima em [8.60] TFS 0.4 Rev3996 War & Cast   
    @Levyzera @gabirugcm @Kozac @leozincorsair @vinagon
    Após muitos pedidos eu atualizei a source! Desculpe a demora e pelos problemas. Por favor, baixem a  source novamente.
     
    Caso dê algum problema de lua no linux, executem isto:
    apt-get install lua50 liblua50 liblua50-dev wget http://www.lua.org/ftp/lua-5.1.4.tar.gz tar -xzvf lua-5.1.4.tar.gz cd lua* make linux && make install @Gabz1822 adicionei o projeto no Visual Studio
  2. Gostei
    Matheuus deu reputação a Yan Liima em [8.60] TFS 0.4 Rev3996 War & Cast   
    Salve salve pessoal, no inicio desse ano estava dando uma estudada e mexendo com a TFS 0.4 rev3884, e vi que havia alguns bugs e que não tinha Cast incluso. Com base nisso decidi atualizar e otimizar a source, já que ainda ela é uma das mais utilizadas no mundo de Otserv.  Decidi compartilhar esse meu trabalho com vocês! Acredito que possa ser uma das melhores REV atualmente.
     
    Conto com o seu feedback, caso haja algum bug, algo que tenha que mudar/optimizar, não exite em avisar aqui no tópico. Toda ajuda será bem vinda xD
     
    The Forgotten Server, Tibia Versão: 8.60
    O que contém nela?
     
    Dentro da pasta contém o config.lua com todas as tag já adicionadas.
     
    Não esquecam de executar a Query do Cast na sua DB:
     
    Downloads uint8(Effects até 255)
    Distro: TheForgottenServer.exe
    Src + datapack: Source & Data
    Recentes atualizações: GitHub
    Downloads uint8 sem o CAST incluso
    Distro: TheForgottenServer.exe
    Src + datapack: Source & Data
    -------------------------------------------------------
    Downloads uint16(Effects até 65534)
    Distro: TheForgottenServer.exe
    Src + datapack: Source & Data
    É necessário fazer a modificação do Hexadecimal no cliente. Aqui tem um já pronto: Cliente.exe(com mc) ou Cliente.exe(sem mc) (só será necessario se utilizar a src com o uint 16.)
    Lembrado também que precisa utilizar a lib 000-constant.lua deste datapack.
    -------------------------------------------------------
    Scans:
    Distro(uint8) & Distro(uint16)
    Source
    Cliente
     
    Obs: Os virus detectado é um falso positivo, então não se preocupem!
     
    A distro foi testada em Windows e em Linux Ubuntu 12.04, 14.04, em
    ambos funcionaram muito bem!
    É compatível com 16 também e o 18.04 é necessário fazer uma alteração que é possível encontrar no post desse tópico. 
     
    É possível compilar em Dev Cpp e Visual-Studio. 
     
    E para quem se interessa em saber onde se localiza os code do Cast, aqui está uma imagem. Você pode achar procurando por "//CAST"
     
    Façam um ótimo aproveito ?
  3. Gostei
    Matheuus deu reputação a Yan Liima em [8.60] Wodbo Wars v5.9 + Site + Client Download   
    Salve salve galera do TK! Hoje vos trago o Wodbo Wars versão 5.9(de 2016)
    Creio que muitos daqui que joga dbo deve conhecer esse servidor, atualmente ele está online!
    Pra quem não sabe eu já fui da equipe, ajudei a dar inicio ao projeto, corrigindo bugs, scripts,mexendo com site,db etc... Por conta de mesquice do Arkam, ele me tirou da equipe e ai rolou treta entre eu e ele.
    Muitos já devem saber a história. Enfim...
    Decidi trazer para vocês pois faz muito tempo que a galera vive enchendo o saco para mim postar.
    E como esse servidor não tem nenhum valor para mim, só guardava e não postava por respeito ao Matheus P.(Arkam), mesmo tendo nossas intrigas, ele é um grande rapaz. Decidi postar, já que o mesmo não liga mais!
    Imagens:
    Bom, não estarei postando a distro original, estarei deixando a que ele utilizou no inicio. Recomendo vocês baixarem alguma src(source) e compilarem. Recomendo utilizar a do @Fir3element.
    No site dele oficial tem um bug de gerar várias vezes a RK, concertei isso para vocês. Assim podendo gerar apenas uma vez!
    A base utilizado nesse servidor foi o Dbo Hunter(criado pelo Renan), esse servidor tem umas gambiarras, mas creio que irá ajudar muitas pessoas que não tem muita experiência de começar do 0. Utilizem como base, sejam criativos e entre pra concorrência
     
    DOWNLOAD:
     
    Créditos:
    Matheus Pacheco(Arkam or Arkamed)
    Yan Liima(Night)

    As vezes certas pessoas se aproveita de outras para poder chegar longe. ;(
    Façam um bom aproveito, abraços!
  4. Gostei
    Matheuus deu reputação a Yan Liima em [System] Trade Points   
    #Introdução
    Reparei que muitas pessoas estão atrás desse sistema que o DBOBR e NTOBR usa, e atualmente o VitorSubhi postou um, porém é necessário modificar as sources. Apesar de achar o dele bem melhor, estarei deixando este meu sistema(não é necessário mexer nas sources).
     
    #Funcionamente
    O jogador vai até um NPC e compra um papel, após ter comprado ele pode estar dando trade nesse papel e negociando com algum jogador em troca de qualquer item. Ao finalizar a negociação, os points são transferidos/removidos(caso houver points na conta). Também é possivel comprar o papel por comando, estarei disponibilizando ambos para vocês.
     
    #Alguns prints:
     
    Estarei deixando o script para vocês em inglês, modifique como quiser
    Então vamos lá...
    #Instalação
    Em data/lib crie um arquivo chamado tradepoints.lua cole isto dentro:
     
    Em data/creaturescripts/tradepoints.lua:
     
    TAG:
    <event type="tradeaccept" name="Trade_Points" event="script" value="tradepoints.lua"/> <event type="traderequest" name="Trade_Points_Request" event="script" value="tradepoints.lua"/> login.lua
    registerCreatureEvent(cid, "Trade_Points") registerCreatureEvent(cid, "Trade_Points_Request") NPC XML:
    <?xml version="1.0" encoding="UTF-8"?> <npc name="Frodo" script="data/npc/scripts/trade_points.lua" walkinterval="2000" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="275" head="114" body="113" legs="113" feet="113" corpse="2212"/> <parameters> <parameter key="module_shop" value="1" /> <parameter key="message_greet" value="Hello |PLAYERNAME|. I sell some utensils and Premium Points Transfer for you to transfer points to other players, remember to buy use '10' to 10 points." /> </parameters> </npc> Data/npc/scripts/trade_points.lua:
     
    Caso queira que a compra do papel seja feita por talkactions, aqui está:
     
    Prontinho xD
    Agradecimentos ao @lordzetros por ajudar na função scanContainer.
    obs: testado em TFS 0.4
  5. Obrigado
    Matheuus deu reputação a Yan Liima em (Resolvido)player mata outro e ganha item ,dinheiro e xp.   
    @Storm thanks! só faltou o #items que também é necessario alterar.
    @EmoooooPra que serveria o anti MC? bom, tenta ai:
    local config = { items = {{2160,20},{2148,2}}, -- ID DO ITEM, QUANTIDADE level = 1, -- Quanto irá adicionar de level storage = 673420 -- Storage } function onDeath(cid, corpse, deathList) if not isPlayer(cid) then return true end local killer = deathList[1] local ip = true if #config > 0 and isInArray(config,getPlayerIp(killer)) then ip = false end if ip and isPlayer(killer) and getPlayerStorageValue(killer, config.storage) <= 0 then doPlayerAddExperience(killer, (getPlayerExperience(cid) + config.level)) for i = 1, #config.items do doPlayerAddItem(killer, config.items[i][1], config.items[i][2]) setPlayerStorageValue(killer, config.storage, 1) end return true end return true end function onLogin(cid) registerCreatureEvent(cid, "LootPlayerDeath") return true end Apenas com a storage:
    local config = { items = {{2160,20},{2148,2}}, -- ID DO ITEM, QUANTIDADE level = 1, -- Quanto irá adicionar de level storage = 673420 } function onDeath(cid, corpse, deathList) if not isPlayer(cid) then return true end local killer = deathList[1] if isPlayer(killer) and getPlayerStorageValue(killer, config.storage) <= 0 then doPlayerAddExperience(killer, (getPlayerExperience(cid) + config.level)) for i = 1, #config.items do doPlayerAddItem(killer, config.items[i][1], config.items[i][2]) setPlayerStorageValue(killer, config.storage, 1) end return true end return true end function onLogin(cid) registerCreatureEvent(cid, "LootPlayerDeath") return true end  
  6. Curtir
    Matheuus deu reputação a Yan Liima em (Resolvido)[Pedido] Após morte voltar em local aleatório   
    Creaturescript:
    local hospitalpos = { [1] = {x = 1021, y = 981, z = 7}, -- posições pra onde o player será teleportado ao morrer [2] = {x = 1026, y = 981, z = 7}, [3] = {x = 1030, y = 981, z = 7}, } local str = 66666 function onDeath(cid, position) registerCreatureEvent(cid, "DeathPlayerHospital_L") if isPlayer(cid) then setPlayerStorageValue(cid, str, 1) end return true end function onLogin(cid) registerCreatureEvent(cid, "DeathPlayerHospital") if isPlayer(cid) then if getPlayerStorageValue(cid, str) == 1 then setPlayerStorageValue(cid, str, -1) doTeleportThing(cid, hospitalpos[math.random(#hospitalpos)], true) end end return true end <event type="login" name="DeathPlayerHospital_L" event="script" value="arquivo.lua"/> <event type="death" name="DeathPlayerHospital" event="script" value="arquivo.lua"/>  
  7. Curtir
    Matheuus recebeu reputação de WooX em (Resolvido){PEDIDO} Player morrer e ficar cm auréola na cabeça   
    alterei como disse, coloquei mais effect. Ele pisca rapidinho e volta. Até q ficou legal! Tentei deixar o repeatTime 0 com a nova duração do efeito. E ele fica parado, so que se eu correr ele deixa um rastro dos effect por 1s ou menos q isso kk fica estranho. Mas em questao foi resolvido. Irei deixar piscando por 1s msm com essa duração de effect tbm o pisca ficou tooop vlw irmao tu é 10
  8. Curtir
    Matheuus deu reputação a WooX em (Resolvido){PEDIDO} Player morrer e ficar cm auréola na cabeça   
    Editei meu post, atualiza o script e tenta de novo.
  9. Curtir
    Matheuus deu reputação a WooX em (Resolvido){PEDIDO} Player morrer e ficar cm auréola na cabeça   
    Não tive tempo de testar.
     
    --<event type="death" name="deathAureola" event="script" value="aureola.lua"/>-- --<event type="login" name="loginAureola" event="script" value="aureola.lua"/>-- local time = 3 * 60 -- Tempo que ficará com a aureola local repeatAfter = 2 -- Tempo para repetir o efeito local effect = 69 -- ID do efeito local storage = 36678 function onDeath(cid, corpse, deathList) setPlayerStorageValue(cid, storage, os.time() + time) return true end function onLogin(cid) registerCreatureEvent(cid, "deathAureola") if getPlayerStorageValue(cid, storage) > os.time() then doSendRecursiveEffect(cid, getPlayerStorageValue(cid, storage) - os.time()) end return true end function doSendRecursiveEffect(cid, time) if isCreature(cid) then if time > 0 then doSendMagicEffect(getThingPos(cid), effect) addEvent(doSendRecursiveEffect, repeatAfter*1000, cid, time-repeatAfter) else setPlayerStorageValue(cid, storage, 0) return end end end  
  10. Curtir
    Matheuus deu reputação a Yan Liima em (Resolvido)[Pedido] Bonus cast open e bloquear para x area   
    @DeathRocks esse é um pedido que a galera costuma ignorar. As vezes por ser chato de fazer, mas não deixa de ser interessante... Apesar do que muitos pensa, isso é algo facil de se fazer, e pra não dizer que ninguém te ajudou, irei tentar ajuda-lo, pois to de bobeira mesmo ksksks. Vamos lá...
     
    Aqui está o seu novo mods:
     
    Em seu creaturescript crie um arquivo com qualquer nome e coles isto lá:
    function onKill(cid, target) if isPlayer(cid) and isMonster(target) then if getPlayerStorageValue(cid, 1013120) >= 1 then local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier) local count = ((getMonsterInfo(string.lower(getCreatureName(target))).experience*1.05*exp)/2) -- 1.05 = 5% doPlayerAddExperience(cid, count) addEvent(doSendAnimatedText, 500, getCreaturePosition(cid), '+'..count, math.random(50,60)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você ganhou 5% a mais de exp por estar com cast ligado.") end return true end return true end TAG:
    <event type="kill" name="ExpCast" event="script" value="arquivo.lua"/> Agora vá em seu login.lua e adicione isso junto com os demais:
    registerCreatureEvent(cid, "ExpCast") Ainda em login.lua procure pela mensagem de ultimo login, por padrão ele estará assim:
    str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "." Logo abaixo adicione:
    setPlayerStorageValue(cid, 1013120,0) setPlayerStorageValue(cid, 1013121,0)
    Prontinho xD
    Não tinha como eu testar aqui, então se der algum problema me avise. Sobre o de não usar o cast em trainers eu coloquei ali para você por a posição do fromPosition e toPosition. Mas ai só evitaria de poder ativar o cast nessa área, caso o jogador já tenha ativado antes de ir para esse local, irá funcionar normal. Não consegui pensar em algo para cancelar o cast...
  11. Gostei
    Matheuus deu reputação a WooX em (Resolvido)[PEDIDO] Script animatedtext top guild   
    Pelo o que eu entendi você quer que o texto apareça apenas para membros que estão na top guild, e não para as 4 primeiras no ranking como a query que você postou está buscando. Se realmente for este o caso, a função não precisa retornar uma tabela e sim apenas um ID. Obs: não tive tempo de testar o script.
     
    --<globalevent name="topguild" interval="10000" event="script" value="topguild.lua"/>-- local function getTopGuild() local query = "SELECT `g`.`id` AS `id`, `g`.`name` AS `name`, COUNT(`g`.`name`) as `frags` FROM `killers` k LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `pk`.`player_id` = `p`.`id` LEFT JOIN `guild_ranks` gr ON `p`.`rank_id` = `gr`.`id` LEFT JOIN `guilds` g ON `gr`.`guild_id` = `g`.`id` WHERE `k`.`unjustified` = 1 AND `k`.`final_hit` = 1 GROUP BY `name` ORDER BY `frags` DESC, `name` ASC LIMIT 1;" local queryResult = db.storeQuery(query) if queryResult then local guildID = result.getDataInt(queryResult, "id") result.free(queryResult) return guildID end return false end function onThink(interval, lastExecution) local topGuild = getTopGuild() for _, cid in ipairs(getPlayersOnline()) do if getPlayerGuildId(cid) == topGuild then doSendAnimatedText(getCreaturePosition(cid), "TOP GUILD", COLOR_RED) end end return true end Créditos pela base do script ao @Fir3element
     
  12. Obrigado
    Matheuus deu reputação a Fir3element em (Resolvido)[PEDIDO] Script animatedtext top guild   
    Fiz meio incompleto, falta terminar a função que retorna as top guilds...
    Se alguém quiser terminar ?
    --
    globalevents.xml
    <globalevent name="topguild" interval="1000" event="script" value="topguild.lua"/>  
    scripts/topguild.lua
    local function getTopGuild() local info = db.getResult("???") if info:getID() ~= -1 then local guildid = info:getDataInt("???") info:free() return guildid -- deve retornar uma tabela end return false end function onThink(interval, lastExecution) local topGuild = getTopGuild() -- deve retornar uma tabela com os IDs das guilds. Ex.: {5, 9, 1, 10, 7} for _, cid in ipairs(getPlayersOnline()) do if(isInArray(topGuild, getPlayerGuildId(cid))) then doSendAnimatedText(getCreaturePosition(cid), "TOP GUILD", COLOR_RED) end end return true end  
  13. Curtir
    Matheuus deu reputação a Vodkart em [8.6] Task System 4.0! (Task system + Daily Task System)   
    Removido:
     
    *Boss Room
    *Rank Task
    *Prêmios para os 10 primeiros a terminar todas as tasks
     
    Adicionado:
     
    *Daily Task System (Sistema exclusivo de Task diario, podendo pegar 1x a cada 24 hrs, irei explicar mais depois.)
    *Task agora é por progresso, você não pode sair e voltar, terá que terminar a task 1 para avançar para a task  2, assim sucessivamente.
    *Task Points
    *Level para realizar a task
    *Nova talkaction que mostra uma janela de informações sobre o level da task, premios que irá receber, progresso, etc...
    *Items para entrega(Se o jogador deverá levar algum item junto com a quantidade de monstro morta) para finalizar a task
    *Sistema de look Task (Varia de acordo com a sua quantidade de Task Points, podendo ficar por exemplo como "Huntsman", "Ranger", etc...(alterável)
    *Mods e npc mais "clean", várias linhas removidas e o sistema está mais rápido
    *Vou Adicionar "scripts extras" Como:
    --> Tile que só passa quem tiver permissão depois de finalizar determinada quest
     --> Npc de Boss Room para entrar e enfrentar o monstro quem fez determinada quest
     
     
    [+] Resumo do Task system + Daily Task System [+]
     
    Task System: É o sistema de task "original", onde consiste em matar determinada quantidade de monstros(E entregar certo itens <- é configurável), para receber recompensas como Exp, Money e Items.
     
    Algumas mudanças do simple task 3.0 para o 4.0 foram:
     
    [+] O sistema agora é por progresso, isso quer dizer que você terá que ir terminando a quest para avançar para a seguinte.
    [+] O sistema Também recebeu uma alteração, fazendo com que as Tasks precisem que o jogador tenha um level determinado
    [+] A tabela para edição está mais fácil, fazendo com que você adicione ou remova monstros com mais tranquilidade, inclusive alterações das Rewards da Task.
     
    Daily Task System: É um sistema que desenvolvi para que os jogadores sempre estejam se comunicando com o npc de Task, no caso da Task Diaria, vária de acordo com o level do jogador, por exemplo:
     
    Jogadores entre level 6 ao 49 poderá cair em uma dessas 3 Task Diarias: Orcs, Tarantulas ou Wyverns
    Jogadores entre level 50 ao 79 poderá cair em uma dessas 3 Task Diarias: Dragons, Wailing Widows ou Ancient Scarabs
     
    E por ai vai, claro que você poderá aumentar as Task Diarias dependendo do level, eu fiz 3 para cada level que é pra postar, mas tudo isso você pode aumentar! Dependendo do seu servidor.
     
    E sim, você pode fazer a TASK "ORIGINAL" e a TASK "DIARIA" ao mesmo tempo! Ambas são distintas e possuem Rewards diferenciadas!
     
    No caso da Task diaria, levando em conta que você começou a fazer ela no dia 08/01 ás 20:00 Hrs, você tem até o dia 09/01 ás 20:00Hrs para termina-la e receber a recompensa, caso termine antes, a Task diaria só irá ficar disponível para repetição a partir desta mesma data 09/01 20:00 Hrs;
     
    [+] Caso você não termine a tempo, não tem problema, basta esperar este horário e começar uma nova Task.
    [+] Caso você começou a Daily Task e terminou antes desta data. mas por algum motivo esqueceu de entregar e a mesma passou do prazo, não tem importância, caso você tenha matado todos os monstros até 09/01 20:00 Hrs, você poderá entregar está Task em qualquer horário para receber suas Rewards e começar uma task a partir do momento em que você entregou! (INJUSTIÇA AQUI NÃO CARALHO).
     
    [+] Comandos Adicionais [+]
     
    /task -- Mostra as informações da sua Task Atual, como Nome da Task, Level, Rewards, Monstros que você poderá matar, Se tem que entregar algum Item junto, etc...
    /task daily -- É basicamente mostra a mesma informação da Task Principal, porém mostra também qual o prazo limite para entrega da task.
    /task counter -- É um comando que ATIVA ou DESATIVA o contador de monstros mortos na task no seu Channel.
     
    [+] Imagens [+]
     
    Cline neste link para ver algumas imagens da Task : http://imgur.com/a/eLIY3
     
     
     
    ------------------------------------------------ // --------------------------------------------------------------
     
    [+] Instalação do Sistema [+]
     
    Requisitos: Nível Médio de conhecimento em scripting LUA
     
    Pasta Mods
     
    Simple Task.xml
     
    https://pastebin.com/raw/P5hqMC3j
     
    NPC:
     
     
    Ludger.xml
     
    https://pastebin.com/raw/R56yLWHw
     
    simple_task.lua
     
    https://pastebin.com/raw/1mRzJ6aJ
     
    ---------------------------------------------- // ----------------------------------
     
    [+] configuração [+ ]
     
    Task System Principal
     
    task_sys = { [1] = {name = "Trolls", start = 176201, monsters_list = {"Troll","Troll champion"}, level = 8, count = 40, points = 0, items = {}, reward = {}, exp = 2000, money = 2000} }  
    [1]  --> O número entre os colchetes [] significa a ordem da Task, como a Task é por progresso sempre começará no 1 e irá pro [2], assim sucessivamente.
    name --> É o nome da task que o jogador irá fazer.
    start --> é a storage que indicará se o jogador começou a Task
    monster_list ={} --> É o nome dos monstros em que o jogador deverá caçar para completar a Task
    level --> É o level necessário para dar inicio á Task
    count --> É o número de monstros que o jogador tem que matar para completar a Task
    points --> Aqui determinada quantos Task points o jogador irá receber ao completar a Task
    items = {} --> Aqui determinada se além de matar os monstros, o jogador terá que entregar item também! Caso tenha só colocar o {ITEM_ID, QUANTIDADE} EX:
    items = {{2173,1},{2160,10},{2493,2}} rewad --> Aqui determinada se o jogador irá receber itens ao terminar a Task, mesma formula do items /\
    reward = {{2520,1},{2173,1}} exp --> Se o jogador irá receber Exp ao terminar a task. 0 ou quantidade de exp
    Money --> Se o jogador irá receber dinheiro ao terminar a task. 0 ou quantidade de dinheiro
     
     
    Daily Task System
     
    daily_task = { [1] = {name = "Orcs" ,monsters_list = {"Orc Berserker","Orc Rider","Orc Leader","Orc Warlord"}, count = 100, points = 0, reward = {}, exp = 5000, money = 10000} }  
    Segue o padrão da Task original, exceto que não precisa entregar items para o npc!
     
    Como funciona A randomização de level de acordo com a Daily task?
     
    Procure por está tabela em MODS
     
    local t = { [{6,49}] = {1,3}, [{50,79}] = {4,6}, [{80,129}] = {7,9}, [{130,math.huge}] = {10,12} }  
    entre as chaves e colchetes é o level do jogador para as Daily Task, Você pode adicionar quantas você quiser!
     
    Digamos que:
     
    [{6,49}] = {1,3}  --> Quer dizer que entre o level 6 ao 49 o jogador poderá cair na Daily Task número 1(Orcs), 2(Tarantulas) ou 3(Wyvern)!
    [{50,79}] = {4,6} --> Quer dizer que entre o level 50 ao 79 o jogador poderá cair na Daily Task número 4(Dragons), 5(Wailing Widows) ou 6(Ancient Scarabs)!
    ...
    [{130,math.huge}] = {10,12} --> Quer dizer que o jogador level 130 ou MAIS poderá cair na Daily Task número 10(Undead Dragons), 11(HydraS) ou 12(Ghastly Dragons)!
     
     
    Look Rank System
    Procure por está tabela em MODS
     
    local ranks = { [{1, 20}] = "Huntsman", [{21, 50}] = "Ranger", [{51, 100}] = "Big Game Hunter", [{101, 200}] = "Trophy Hunter", [{201, math.huge}] = "Elite Hunter" }  
    Entre 1-20 Task points o Rank será Huntsman
    Entre 21-50 Task posints o Rank será Ranger
    Entre 51-100 Task Points o rank será Big Game Hunter
    etc...
    Altere como quiser!
     
     
  14. Obrigado
    Matheuus deu reputação a Yan Liima em (Resolvido)Página Mostrando A Equipe Da Staff   
    No seu config do site você tem que editar o diretorio do teu servidor...
    <?php if($groups = simplexml_load_file($config['site']['server_path'].'/data/XML/groups.xml') or die('<b>Could not load groups!</b>')) foreach($groups->group as $g) $groupList[(int)$g['id']] = $g['name']; $list = $SQL->query("SELECT `name`, `online`, `group_id`, `world_id`, `account_id` FROM `players` WHERE `group_id` > 1 ORDER BY `group_id` DESC"); $showed_players = 0; $main_content .= '<center><h2>Equipe Do Baiak Alpha</h2></center>'; $group_id = 0; foreach($list as $gm) { if($group_id != (int)$gm['group_id']) { if($group_id != 0) $main_content .= '</table>'; $main_content .= '<center><h2>'.$groupList[(int)$gm['group_id']].'</h2></center> <table border="0" cellspacing="1" cellpadding="4" width="100%"> <tr bgcolor="'.$config['site']['vdarkborder'].'"> <td width="75%"><font class=white><b>Nome</b></font></td> <td width="15%"><font class=white><b>Status</b></font></td> <td width="20%"><font class=white><b>Mundo</b></font></td>'; $group_id = (int)$gm['group_id']; } if($config['site']['show_flag']) { $account = $SQL->query('SELECT * FROM `accounts` WHERE '.$SQL->fieldName('id').' = '.$gm['account_id'].'')->fetch(); $flag = '<image src="http://images.boardhost.com/flags/'.$account['flag'].'.png"/> '; } $main_content .= '<tr bgcolor="'.(is_int($showed_players++ / 2) ? $config['site']['darkborder'] : $config['site']['lightborder']).'" class="over"><td>'.$flag.'<a href="?subtopic=characters&name='.urlencode($gm['name']).'">'.$gm['name'].'</a></td><td><font color="'.($gm['online'] == 0 ? 'red">Offline' : 'green">Online').'</font></td><td>'.$config['site']['worlds'][$gm['world_id']].'</td></tr>'; } $main_content .= '</table>'; ?> Se não der use este outro que modifiquei, não irá precisar do groups.xml, só editar no proprio PHP.
     
  15. Gostei
    #Introdução
    Bom hoje estarei trazendo aqui o sistema de Ping feito pelo Mock, com uma pequena adaptação feita por mim para funcionar em TFS 0.4(talvez podendo funcionar em outras)
    Pois o que ele disponibilizou foi apenas para TFS 0.3.6 e nem foi muito utilizado pela comunidade. Muitos servidores daqui para download tem script no talk mas a lib está totalmente errada e não tem o code nas sources.
    Esse sistema tem varias utilizades, podendo usar o comando !ping para verificar seu ms ou até mesmo por para kikar jogadores com ms muito alto...
    Se você não sabe o cliente já tem um sistema de ping, e getOtsystime é como os.time () + os.clock (), você tem ano, mês, dia, hora, minutos, segundos, milisegundos...
    Enfim chega de enrolação e vamos lá!
     
    Code para TFS 0.4 e OTX:
     
    Code para TFS 0.3.6
     
    LIB:
     
     
    Prontinho, agora seu servidor está pronto para utilizar as funções de Ping. Seja criativo!
    Ahh você é daqueles que quer tudo na mão né? Aqui vai um talkactions para ver o ping.
     
    Em talkactions/scripts crie um arquivo chamado playerping.lua, cole isto dentro:
    -- Script by Yan Liima(Night for tibiaking.com) function onSay(cid, words, param, channel) local ms = ping.CheckPing(cid) doPlayerSendTextMessage(cid,22,"Ping aproximado --> ["..ms.."].") return true end Em talkactions.xml
    <talkaction words="!ping" event="script" value="playerping.lua"/>  
  16. Obrigado
    Matheuus deu reputação a Yan Liima em (Resolvido)Remover todos de uma area as X horas   
    Obrigado por me trocar pelo Vod , seus porra 
    local sala = {{x = 93, y = 84, z = 7}, {x = 101, y = 191, z = 7}} -- Canto superior esquerdo/inferior direito da sala onde os jogadores vão estar function onTime() for _, cid in ipairs(getPlayersOnline()) do if isInRange(getCreaturePosition(cid), sala[1], sala[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doPlayerSendTextMessage(cid, 22, "Você foi teleportado para o templo delicia.") end end return true end <globalevent name="Teleport" time="01:52:10" event="script" value="arquivo.lua"/>  
  17. Curtir
    Matheuus deu reputação a Yan Liima em (Resolvido)ERRO NA SOURCE (SCRIPT DE MINERAÇÃO)   
    Ele está tentando executar uma função que não existe em seu servidor. Em libs/050-function.lua adicione isto:
    function setItemName(uid,name) return doItemSetAttribute(uid,'name',name) end Vê se funciona agora.
  18. Obrigado
    Matheuus deu reputação a Yan Liima em (Resolvido)[Error - NpcScript Interface]   
    Tente:
     
    Ouu:
     
  19. Gostei
    Matheuus deu reputação a Vodkart em (Resolvido)[PEDIDO] Script de !support   
    @Matheuus 
    local min_group_id = 1 -- aqui vai contar a partir do 2, 3, 4 ... function onSay(cid, words, param, channel) local query, str = db.getResult("SELECT `name`, `group_id` FROM `players` WHERE `group_id` > "..min_group_id), "--> STAFF <--\n\n[Group]Nick | Status\n" if (query:getID() ~= -1) then repeat local _ = query:getDataString("name") local target_online = getPlayerByNameWildcard(_) if (not target_online or (isPlayerGhost(target_online) and getPlayerGhostAccess(target_online) > getPlayerGhostAccess(cid))) then status = "Offline" else status = "Online" end str = str .. "\n ["..getGroupInfo(query:getDataInt("group_id")).name.."]".._.." | "..status until not(query:next()) query:free() end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str) return true end  
  20. Haha
    Matheuus deu reputação a Vodkart em [8.6] Task System 4.0! (Task system + Daily Task System)   
    @Matheuus Primeiro me da a bunda e trato feito
  21. Gostei
    Matheuus deu reputação a Nazo em (Resolvido)Ajuda em melhorar script de add/remover dias premium   
    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 and getPlayerPremiumDays(getPlayerByName(name2)) >= id2 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, não existe ou tem menos dias de premium do que será removido.")     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  
  22. Haha
    Matheuus recebeu reputação de francis silva em SNOWBAL EVENT TIBIA   
    Legal da sua parte publicar o evento aqui pra galera. Porem n entendi pq vc n colocou os devidos creditos. E removeu na parte da lib o credito da ChaitoSoft e colocou o seu nome... Tenho o sistema e a minha LIB veio assim:
    No site deles tem o sistema a venda e tu trouxe aqui de graça, legal... Mas tu apenas copiou o script dos cara e alterou uma linha pra galera pensar que o sistema é teu. Triste
  23. Gostei
    Matheuus deu reputação a Yan Liima em Acabando premium account e ir direto pro templo   
    O primeiro que te mandei com certeza irá dar certo. Da até pra fazer por outro script, mas não será necessario. Teste que irá dar certo.
    function onLogin(cid) local pos = {x = 153, y = 52, z = 7} if isPremium(cid) then setPlayerStorageValue(cid, 6787656, 1) elseif getPlayerStorageValue(cid, 6787656) == 1 and not isPremium(cid) then doTeleportThing(cid, pos) doPlayerSetTown(cid,1) doSendMagicEffect(getPlayerPosition(cid), 240) setPlayerStorageValue(cid, 6787656, -1) setPlayerStorageValue(cid, 6787657, 1) doRemoveCreature(cid) end return TRUE end function onLogin(cid) if getPlayerStorageValue(cid, 6787657) == 1 then doPlayerPopupFYI(cid, "Sua Premium Expirou!\nNao Deixe De Visitar Nosso SHOP.") setPlayerStorageValue(cid, 6787657, -1) end return TRUE end  
  24. Gostei
    Matheuus deu reputação a Yan Liima em Acabando premium account e ir direto pro templo   
    function onLogin(cid) local pos = {x = 153, y = 52, z = 7} if isPremium(cid) then setPlayerStorageValue(cid, 6787656, 1) elseif getPlayerStorageValue(cid, 6787656) == 1 and not isPremium(cid) then doTeleportThing(cid, pos) doPlayerSetTown(cid,1) doSendMagicEffect(getPlayerPosition(cid), 240) setPlayerStorageValue(cid, 6787656, -1) setPlayerStorageValue(cid, 6787657, 1) doRemoveCreature(cid) end return TRUE end function onLogin(cid) if getPlayerStorageValue(cid, 6787657) == 1 then doPlayerPopupFYI(cid, "Sua Premium Expirou!\nNao Deixe De Visitar Nosso SHOP.") setPlayerStorageValue(cid, 6787657, -1) end return TRUE end  
  25. Curtir
    Matheuus deu reputação a Yan Liima em (Resolvido)Ao morrer pra monster não perder xp, nem skills   
    Fiz aqui, testa ai
    Em creaturescript/scripts crie um arquivo com o nome qualquer e coloque isto dentro:
    -- Script by Yan Liima(Night) function onDeath(cid, corpse, deathList) if not isPlayer(cid) then return true end local loot = false -- Se o jogador morrer ele irá perder o loot? local xp = false -- Se o jogador morrer ele irá perder EXP? local loss = getConfigValue('deathLostPercent') local killer = deathList[1] -- Não mexa aqui if isMonster(killer) then doCreatureSetDropLoot(cid, loot) doPlayerSetLossPercent(cid, PLAYERLOSS_SKILLS, 0) doPlayerSetLossPercent(cid, PLAYERLOSS_MANA, 0) if xp == false then doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 1) end end return TRUE end XML:
    <event type="death" name="ProtegerPlayer" event="script" value="nome_do_arquivo.lua"/> Login.lua:
    registerCreatureEvent(cid, "ProtegerPlayer") Cara o unico problema vai ser o PLAYERLOSS_EXPERIENCE, bem provavel que ele buga e faz o jogador voltar pro nv1. Muitos reclamam sobre isso. Se acontecer o mesmo, tente trocar para Blessing

Informação Importante

Confirmação de Termo