
Matheuus
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
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
-
Matheuus deu reputação a Yan Liima em [8.60] TFS 0.4 Rev3996 War & CastSalve 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 ?
-
Matheuus deu reputação a Yan Liima em [8.60] Wodbo Wars v5.9 + Site + Client DownloadSalve 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!
-
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
-
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
-
Matheuus deu reputação a Yan Liima em (Resolvido)[Pedido] Após morte voltar em local aleatórioCreaturescript:
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"/>
-
Matheuus recebeu reputação de WooX em (Resolvido){PEDIDO} Player morrer e ficar cm auréola na cabeçaalterei 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
-
Matheuus deu reputação a WooX em (Resolvido){PEDIDO} Player morrer e ficar cm auréola na cabeçaEditei meu post, atualiza o script e tenta de novo.
-
Matheuus deu reputação a WooX em (Resolvido){PEDIDO} Player morrer e ficar cm auréola na cabeçaNã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
-
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...
-
Matheuus deu reputação a WooX em (Resolvido)[PEDIDO] Script animatedtext top guildPelo 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
-
Matheuus deu reputação a Fir3element em (Resolvido)[PEDIDO] Script animatedtext top guildFiz 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
-
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!
-
Matheuus deu reputação a Yan Liima em (Resolvido)Página Mostrando A Equipe Da StaffNo 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.
-
Matheuus deu reputação a Yan Liima em [Lua & C++] getOtsysTime() + getPlayerPing(cid) + doPlayerSendPing(cid)#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"/>
-
Matheuus deu reputação a Yan Liima em (Resolvido)Remover todos de uma area as X horasObrigado 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"/>
-
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.
-
Matheuus deu reputação a Yan Liima em (Resolvido)[Error - NpcScript Interface]Tente:
Ouu:
-
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
-
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
-
Matheuus deu reputação a
Nazoem (Resolvido)Ajuda em melhorar script de add/remover dias premiumfunction 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
-
Matheuus recebeu reputação de francis silva em SNOWBAL EVENT TIBIALegal 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
-
Matheuus deu reputação a Yan Liima em Acabando premium account e ir direto pro temploO 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
-
Matheuus deu reputação a Yan Liima em Acabando premium account e ir direto pro templofunction 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
-
Matheuus deu reputação a Yan Liima em (Resolvido)Ao morrer pra monster não perder xp, nem skillsFiz 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