Histórico de Curtidas
-
Sartwood deu reputação a Lucas Barreto em [Atualização C1] Colossus Server 10.77 - Servidor NOVOCOLOSSUS SERVER 10.77
Bom Galera do TK, ai vai a minha primeira contribuição para o site. Espero não ter errado ai na postagem e conseguir passar todas informações necessárias para o bom entendimento do Leitor. Sem mais delongas, apresento-lhes o Colossus server.
CIDADES:
Colossus*
Edron
Ankrahmun
Gnombase
Mineland*
Yalahar
Svargrond
Roshamuul
Gray Beach
Rathleton
Alpha Base*
*Cidades Novas do servidor.
- Warzone 1, 2, 3;
- Bank System;
- Gray Beach City completa 100% (incluindo Subsolo);
- Monstros 100%;
- Trainer Offline 100%;
- Trainer Online 100%;
- Todas montarias;
- Taming system funcionando 100%;
- Database completa;
- Wrath of Emperor Quest;
- War System 100%;
- Market System 100%;
- Roshamull Completa100% (incluindo subsolo);
- Oramond Full;
- POI;
- Children of a Revolution Quest;
- The New Frontier Quest;
- Colossus quest;
- Varias quests Items Espalhadas pelo mapa;
- Novos Montros.
- Todas as Magias Balanceadas para um melhor desempenho. (Foi mudado todos os cálculos das magias). Essa mudança foi feita visando obter um maior empenho do jogador para crescer no jogo, pois as formulas antigas cresciam linearmente. Adotei formulas que crescem exponencialmente. Resultado, quem se dedica ao jogo, treina, upa e busca os melhores itens, sera realmente o mais forte.
- Itens vips criados.
- Npcs de Addon postos em uma ilha, todas as quest e execuções de addons são idênticas aos métodos do global, e todos os caminhos são direcionados no mapa.
- Todas as questes requerem missão. A inquisition, por exemplo, segue o mesmo raciocínio da quest global.
- Muitas Hunts novas, todo mapa foi readequado, com isso, talvez as hunts que você encontre no global, não serão as mesma deste servidor.
- A Knightwatch Tower, da dream chalange quest, foi reformulada, seus teleportes levam a Incríveis desafios.
- Praticamente todos os items são acessíveis.
- Wands e rods readequados para uma maior exploração destes items.
- Todos os monstros do Global. Os novos monstros só poderão ser acessados com a conclusão da Colossus quest, que é um desafio e tanto.
- Senha do god = god/god
Dediquei um pouco do meu tempo para estar criando este servidor. Baseei-me no servidor aqui postado pelo Mitsuig
Porem, o mapa foi totalmente editado por mim. Cidade Colossus e Alpha Base foram criadas por mim. As demais cidades foram readequadas para suprir minhas expectativas de jogabilidade do servidor. Todas as quests Globais (Exemplo: POI, Inqui, Children of revolution, The new Frontier, etc.) foram reformuladas para proporcionar mais jogabilidade e iteração no jogo.
Todo mapa foi Sinalizado para guiar os jogadores à seus devidos destinos.
ATENÇÃO: O mapa Não é global, Não é Global Compacto também, Não é Baiak.
Tentei construir um servidor que conduza o jogador para o maior aproveitamento. O mapa é praticamente 100% utilizável, todas as hunts e quests disponibilizam items e recompensas interessantes. Creio que criei um bom servidor pra galera por online ai. Espero que gostem!!
Bom, eu ja disponibilizei com o TFS compilado em Windows. Recomendo que Compilem vocês mesmo.
Esse servidor foi feito usando de modelo o do link acima. Contudo, o mais importante mesmo aquié o SERVIDOR e a DATABASE. O resto podem fazer o download de lá que vai funcionar certinho.
Downloads:
SERVIDOR
Database
WEBSITE
TFS-SDK-2.0
MAP EDITOR
Imagens:
Yalahar
Colossus Quest
Alpha Base
Mineland
Mapa Detalhado
Mapa Detalhado - Colossus City
Colossus
Créditos: Os mesmos do link acima citado. OTLAND - TFS TEAM; Lucas Barreto.
-
Sartwood deu reputação a Kimoszin em Criando um Mini-Bot no Delphi (Sem API)Primeiramente vou comentar um pouco sobre esse magnifico programa que é o delphi,
Para nos desenvolvermos um bot de tibia por exemplo, nos nao usamos o tibiaapi, mais sim muitas funções muitos codigos e muita outras coisas,
Nao é nada extremamente facil, requer um pouco de estudo, mais tudo oque vc fizer vai estar ali para estudo. Entao eu falo para vcs quando nao tiverem nada pra fazer estudem um pouco sobre o delphi.
Ok vamos ao bot
O Bot é simples, treina seu magic level, tem um anti kick e come food,
Visual, olhe como arrumei os meus componentes
Componentes, vamos precisar de:
1 TGroupBox 1 TButton 2 TLabeledEdit 2 TCheckBox 1 TCombobox 2 TLabel 4 TTimer Renomeando componentes, para renomear vc deve ir ate a propriedade name Button -> StartButton Timer1 -> CastSpell Timer2 -> Endereço Timer3 -> Kick Timer4 -> Food LabeledEdit1 -> Spell LabeledEdit2 -> Mana Arrumando Componentes, quando ja estiverem renomeados CastSpell.Enabled.False CastSpell.Interval.700 Kick.Enabled.False Kick.Interval.60000 Food.Enabled.False Food.Interval.30000 Combobox1.Style.csDropDownList Form1.Caption 'Escolha um Nome para o Bot' Variaveis Globais, declare embaixo do Form1 : TForm1 PH : THandle; PID, ThID: DWORD; H : THandle; Funções usadas, declare elas embaixo do {$R *.dfm}, //Função para escrever na janela do Tibia function say(mensagem: string):string; var h: HWND; letra: Integer; B: Byte; begin h := FindWindow(nil, 'tibia'); for letra := 1 to Length(mensagem) do begin B := Byte(mensagem[letra]); SendMessage(h, WM_CHAR, B, 0); end; SendMessage(h, WM_CHAR, 13, 0); end; //Função para ler endereço de memoria do Tibia function LerInt(Address: Integer): Integer; var value:integer; ler :dword; begin H := FindWindow(nil, 'Tibia'); ThID := GetWindowThreadProcessId(H, @PID); PH := OpenProcess(PROCESS_ALL_ACCESS,FALSE,PID); ReadProcessMemory(PH, Ptr(Address), @Value, 4, Ler); Result:=value; end; //Função para aperta uma determinada tecla na janela do Tibia function hotkey(x :string): string; var h: HWND; i : integer; begin if x ='F1' then i := 112 else if x ='F2' then i := 113 else if x ='F3' then i := 114 else if x ='F4' then i := 115 else if x ='F5' then i := 116 else if x ='F6' then i := 117 else if x ='F7' then i := 118 else if x ='F8' then i := 119 else if x ='F9' then i := 120 else if x ='F10' then i := 121 else if x ='F11' then i := 122 else if x ='F12' then i := 123; h := FindWindow(nil, 'Tibia'); // acha a janela do tibia SendMessage(h, WM_KEYdown, i, 0); //pressiona a tecla SendMessage(h, WM_KEYUP, i, 0); //solta tecla end; Depois de botar os componentes, renomea-los e declarar as funções, Vamos botar os devidos codigos nos respectivos componentes Lembrando que é tudo dentro do begin e end, se tiver Var vc deve excluir o begin, e adiciona-lo depois CastSpell if StrToInt(Label2.Caption) > (StrToInt(Mana.Text)) then say(Spell.text) // Se a mana do player for maior que a mana que foi digitada no component mana, entao vai falar a magia Endereço Label2.caption := IntToStr(Lerint($0081CE5C)); // Vai ler o endereço da mana do personagem e transforma em numero para o label2 Kick Var TibiaHandle : THandle; begin TibiaHandle:=FindWindow(nil,'Tibia'); // Pega a janela do Tibia SendMessage(TibiaHandle,WM_KEYDOWN,VK_CONTROL,1); // Pressiona o Ctrl SendMessage(TibiaHandle,WM_KEYDOWN,VK_UP,1); // Pressiona a tecla para cima SendMessage(TibiaHandle,WM_KEYUP,VK_UP,1); // Libera a tecla SendMessage(TibiaHandle,WM_KEYDOWN,VK_DOWN,1); // Pressiona a tecla para baixo SendMessage(TibiaHandle,WM_KEYUP,VK_DOWN,1); // Libera a tecla SendMessage(TibiaHandle,WM_KEYUP,VK_CONTROL,1); // Libera o Ctrl end; Food hotkey(Combobox1.Text) // Pressiona oque tiver no Texto do Combobox StartButton CastSpell.Enabled := not(CastSpell.Enabled); Food.Enabled := not(Food.Enabled); Kick.Enabled := not(Kick.Enabled); if Checkbox1.checked then Kick.Enabled := true else Kick.Enabled := false; if Checkbox2.checked then Food.Enabled := true else Food.Enabled := false; if (Spell.Text <> '') and (Mana.Text <> '') then CastSpell.Enabled := true else CastSpell.Enabled := false; if (Kick.Enabled) or (Food.Enabled) or (CastSpell.Enabled) then StartButton.Caption := 'Stop' else StartButton.Caption := 'Start';
Bom pessoal sei que é simples, mais estou tentando animar o pessoal do forum para usar o Delphi,
ps: Peguei as funções da sessao do delphi, entao esta tudo aqui
Abraços a todos
-
Sartwood deu reputação a KekezitoLHP em Znote AAC Shop [TFS 1.0]Para pessoal que usa o znote website:
Adicione esta em GlobalEvents / globalevents.xml
<globalevent name="Znote Shop" interval="30000" script="znoteShop.lua"/> E vamos pra GlobalEvents / scripts e criar nova lua e nomeá-la 'znoteShop'
function onThink(interval, lastExecution) local players = Game.getPlayers() if #players == 0 then -- 0 players online, no need to execute the script return true end local player for i = 1, #players do player = players[i] local orderQuery = db.storeQuery('SELECT `id`, `type`, `itemid`, `count` FROM `znote_shop_orders` WHERE `account_id` = '.. player:getAccountId() ..' LIMIT 1;') if orderQuery then --Lets check if the players online have orderd something from the shop local orderId = result.getDataInt(orderQuery, 'id') local orderType = result.getDataInt(orderQuery, 'type') local orderItemId = result.getDataInt(orderQuery, 'itemid') local orderCount = result.getDataInt(orderQuery, 'count') result.free(orderQuery) if orderType == 1 then if player:addItemEx(Game.createItem(orderItemId, orderCount or 1)) ~= RETURNVALUE_NOERROR or player:getFreeCapacity() < ItemType(orderItemId):getWeight(orderCount or 1) then --Lets check if player have slot or cape left. Else send to player inbox local parcel = player:getInbox():addItem(2596, 1, false, 1) if not parcel then --If not being able to create parcel we stop the script and retry again. print('[ERROR Znote Shop Globalevents] = Error on creating a parcel.') return true end local letter = parcel:addItem(2598, 1, false, 1) letter:setAttribute(ITEM_ATTRIBUTE_TEXT, 'You have received your shop item. Thanks for donating.') parcel:addItem(orderItemId, orderCount or 1, false, 1) end db.query('DELETE FROM `znote_shop_orders` WHERE `id` = '.. orderId ..';') player:sendTextMessage(MESSAGE_INFO_DESCR, 'Congratulations! You have received '.. orderCount ..'x '.. ItemType(orderItemId):getName() ..'!') end end end return true end Desfrutar
-
Sartwood deu reputação a Natanael Beckman em GesiorACC 2019 8.60 UPDATE 29/06/2019Atualização de 29/06/2019.
Olá meus amigos, essa é a minha última contribuição free que faço na área de OTserver, fiz uma atualização bem completa do Gesior comparando com os que existem disponíveis, não vou falar muito pois grande parte já conhecem... Vou apenas posta algumas imagem das mudanças feitas.
Sempre gostei de evoluir e de oferecer aos demais uma facilidade de obter um material grátis e de qualidade, nunca utilizei meu pouco conhecimento para prejudicar os demais, pelo o contrario sempre foi na intenção de ajudar e se em algum momento falhei, falhei inconscientemente.
- Foi mudado algumas imagens de layout para renovar a estrutura.
- Server Info + Most Power Ful Guilds na mesma estrura.
- Create Account exigindo senhas com letras minusculas, maiúsculas e números, fortalecendo
a segurança do seu cliente e dificultando futuras dores de cabeças.
- Adicionado o mecanismo que identifica os valores de Premuim Points e Backup Points.
- Algumas mudanças de layout.
- Nome do player abaixo linkado.
- Adicionado um Box de doação, com a intenção apenas de complementar
o layout enriquecendo a pagina.
- Fixado o bug edit town, e melhorado o layout.
- Characters.php refeito, nesta imagem é uma visão de uma conta com access admin.
- Visão normal.
- Inventário completo.
- Guilds com visão ampliada.
- Detalhes...
- Novo SHOP com as estrutura de layout melhorada e modernizada.
- Sem BUGs lembre-se do CTRL + F5 para atualizar os cookies nesta pagina.
- Detalhes...
- Detalhes...
- Detalhes...
- Histórico do SHOP...
DOWNLOAD SITE
SHOP.LUA XAMPP 1.7.3 DATABASE LIMPA MYSQL DATABASE COMPLETA MYSQL TUTORIAIS ÚTEIS E COMPATÍVEIS PARA O SITE: PAGSEGURO AUTOMATICO SHOPGUILD BACKUP_POINTS SISTEMA VIP_TIME Créditos: Gesior.pl(WEBMaster) Felipe Monteiro(WEBMaster, WEBDesigner) Natanael Beckman(WEBNada) Nailan (WEBMaster) Ivens Pontes (WEBMaster) Marcio Porto (WEBMaster) Danyel Varejão (Programmer LUA, C++)
-
Sartwood deu reputação a .HuRRiKaNe em [10.35] Venorewarv2 - 32B/64BInformações:
Level inicial 130
Recompensa por kill
Mount's por gold
Addon's por gold
Sem erros no console
E mais!
Imagens:
Download 64B:
http://www.mediafire.com/download/w1meo8wk65czkef/Venorewar10.35v2++64bits.rar
Scan 64B:
http://virusscan.jotti.org/pt-br/scanresult/e7885c3bb9e65a541ffe4b93213e13272eb84ec0
Download 32B:
http://www.mediafire.com/download/5wtbokw7f0no3f4/Venorewar10.35v2_32bits.rar
Scan 32B:
http://virusscan.jotti.org/pt-br/scanresult/f04959c777bfc6b633d9853599cd473942586252
Créditos:
Demonius
Bt
-
Sartwood deu reputação a xWhiteWolf em Mining SystemAntes de tudo queria agradecer ao cara do suporte que me pediu pra fazer isso, achei muito legal a idéia. Fala galera do TK, vim trazer um script bem simpleszinho mas que abre um leque de opções de RPG e diversão pro seu OT.. Trata-se do Mining System, um sistema que você pode utilizar a pick normal (ou uma outra pick especial) para minerar a terra e tentar conseguir items que você pode trocar por dinheiro, items ou utilizar para craftar items. São 70 leveis de Mining que vão upando conforme vc minera.
Enfim, vamos ao script:
actions\scripts\mining.lua:
terra = {351,352,353,354,355} levels = { [-1] = 2229, ---- skull [0] = 1294, --- small stone [1] = 3976, --- worm [10] = 2149, -- Small Emerald [12] = 2146, -- Small Sapphire [15] = 2145, -- Small Diamond [17] = 2150, -- Small Amethyst [20] = 2147, -- Small Ruby [25] = 2144, -- Black Pearls [27] = 2143, -- White Pearls [30] = 2157, -- Gold Nuggets [35] = 2156, --- red gem [36] = 2158, -- blue gem [37] = 2155, -- green gem [38] = 2153, -- violet gem [39] = 2154, -- yellow gem [40] = 7761, -- small enchanted emerald [42] = 7759, -- Small Enchanted Sapphiire [45] = 7762, -- Small Enchanted Amethyst [50] = 7760, -- Small Enchanted Ruby [70] = 2177 -- Life Crystal } local config = { storage = 19333, chance = 40, --- chance de achar um item ou não k = 2, --- constante de level.. quanto maior, mais fácil é upar. (a fórmula é level ao quadrado dividido pela constante) experience = 19334 } function onUse(cid, item, fromPosition, itemEx, toPosition) local drops = {} function getDrops(cid) for i= -1,getPlayerStorageValue(cid, config.storage) do if levels[i] then table.insert(drops, levels[i]) end end return true end if isInArray(terra, itemEx.itemid) then getDrops(cid) doPlayerSetStorageValue(cid, config.experience, getPlayerStorageValue(cid, config.experience)+1) local experience = getPlayerStorageValue(cid, config.experience) if experience >= (8+(getPlayerStorageValue(cid, config.storage)^2))/config.k then doPlayerSetStorageValue(cid, config.storage, getPlayerStorageValue(cid, config.storage)+1) doPlayerSendTextMessage(cid, 27, "Congratulations, you have leveled! Your currect level is "..getPlayerStorageValue(cid, config.storage) ..".") if getPlayerStorageValue(cid, config.storage) == 50 then doPlayerSendTextMessage(cid, 20, "For reaching level "..getPlayerStorageValue(cid, config.storage) .." you have been awarded with Mining Helmet.") doPlayerAddItem(cid, 7497, 1, true) end end if config.chance >= math.random(1,100) then if #drops >= 1 then local item = drops[math.random(1,#drops)] doPlayerSendTextMessage(cid, 27, "You have found a "..getItemNameById(item)..".") doPlayerAddItem(cid, item, 1, true) end doSendMagicEffect(toPosition, 3) else doSendMagicEffect(toPosition, 2) return true end elseif itemEx.itemid == item.itemid then doPlayerSendTextMessage(cid, 27, "You're currenctly level "..getPlayerStorageValue(cid, config.storage)..".") else return false end return true end em terra vc coloca os ids dos chãos em que é possível minerar, levels é o level da skill e o ID do respectivo item que você fica capaz de conseguir após alcançar esse nível. Em outras palavras, no começo vc só consegue minerar skull, no nv 70 vc vai ter a chance de conseguir todos os items anteriores e não só life crystal. O restante das configurações está no meio do script:
local config = {
storage = 19333,
chance = 40, --- chance de achar um item ou não
k = 2, --- constante de level.. quanto maior, mais fácil é upar. (a fórmula é level ao quadrado dividido pela constante)
experience = 19334
}
o storage é onde vai salvar o seu nível
chance é a chance de pegar um item cada vez que minera.
k é a constante de level, o nivel 10 precisa de 10*10/k de experiencia para ser alcançado (com k sendo 2 dá 50 de experiencia), ou seja, com 50 picaretadas na terra vc pega nivel 10.
experience é o storage que fica salvo sua experiencia.
Bônus: Ao alcançar level 50 você ganha o Mining Helmet como prêmio, ele não faz nada de especial mas é como se fosse um troféu. No meu server tem uma série de troféus que voce pode colecionar e fica como sendo uma conquista épica para os players.
e no actions.xml:
<action itemid="2553" script="mining.lua"/> OBS: Sugiro que vcs utilizem uma outra pick pra não dar conflito mas você faz oque quiser.
PS: Uma fotinha pra vcs verem
Espero que tenham gostado!
-
Sartwood deu reputação a xWhiteWolf em Passagem secreta diferenteEai pessoal, vim trazer hoje um sistema de passagem secreta que um amigo viu no Baiak-wars. Não sei qual server é esse e eu não jogo tibia então pra mim tanto faz mas ele gravou um vídeo, pediu um igual e obviamente eu não fiz um igual porque o sistema dos caras era muito ruim uhauheuhauheuhauheuhuhauhe
Enfim, comecei um script do 0 pra fazer exatamente oque ele queria e foi isso daqui que eu consegui:
Explicação: Você clica em algum item escondido pelo mapa e abre uma passagem secreta que vai durar X segundos (configurável), após esse tempo a passagem se fecha; Note que nessas imagens ele não tá escondido já que tem uma FUCKING ARVORE NO MEIO DE UM DESERTO mas você pode colocar uma tocha em cima de uma parede e colocar o actionid na tocha pra ativar e vai ficar super foda e com muito rpg
Ué, mas oque tem de diferente dos outros scripts?
Bem, ele é super fácil de configurar e ele dá a sensação de que o item foi arrastado :]
Bom, se isso não foi o bastante pra você entender então observe essas fotinhas
Tendo entendido tudo vamos à parte mais legal da coisa (SCRIPTAR!!!!)
Você vai precisar criar um arquivo em actions\scripts chamado hidden.lua com o seguinte conteúdo:
local positions = { [1] = {pos = {x=139, y=77, z=7}, id = 1718}, [2] = {pos = {x=140, y=77, z=7}, id = 1718}, [3] = {pos = {x=139, y=76, z=7}, id = 6855, toid = 6884}, [4] = {pos = {x=140, y=76, z=7}, id = 6855, toid = 6884}, } local createpos = { [1] = {pos = {x=138, y=77, z=7}, id = 1718}, [2] = {pos = {x=141, y=77, z=7}, id = 1718} } local tempo = 5 function onUse(cid, item, frompos, item2, topos) if getTileItemById(positions[1].pos, positions[1].id).uid < 100 then doPlayerSendCancel(cid, "Is already open.") return true end doCreatureSay(cid, "You have ".. tempo .." seconds.", 19) function criar_paredes() for i = 1, #positions do if i <= (#positions/2) then doCreateItem(positions[i].id, 1, positions[i].pos) local obst = getTileItemById(createpos[i].pos, createpos[i].id).uid doSendMagicEffect(createpos[i].pos, 2) doRemoveItem(obst, 1) elseif i > (#positions/2) then local obst = getTileItemById(positions[i].pos, positions[i].toid).uid doTransformItem(obst, positions[i].id) end end return true end for i = 1, #positions do local obst = getTileItemById(positions[i].pos, positions[i].id).uid if i <= (#positions/2) and obst ~= 0 then doRemoveItem(obst, 1) doSendMagicEffect(positions[i].pos, 2) doCreateItem(createpos[i].id, 1, createpos[i].pos) elseif i > (#positions/2) and obst ~=0 then doTransformItem(obst, positions[i].toid) end end addEvent(criar_paredes, tempo*1000) return true end Feito isso vc vai precisar declarar no actions.xml a forma que você quer utilizar o script
<action actionid="27004" script="hidden.lua"/> note que vc pode colocar algum itemid, actionid ou uniqueid de sua escolhe, só lembre de mudar no map editor dependendo da forma que vc escolher.
Agora eu vou ensinar vocês a configurarem o meu monstrinho *-*
aqui você tem o tempo que a passagem vai ficar aberta
aqui você vai editar o seguinte: na primeira são as posições dos itens e seus respectivos id's
posição das duas prateleiras e seus id's
posição das paredes, id dela e pra qual id ela vai ser transformada.
aqui você tem as posições que sua prateleira vai se mover e os id's dela.
Lembrando que você pode se sentir livre pra adicionar oque vc quiser e deixar do seu gosto, só lembrando que se vc quiser adicionar mais items ou diminuir itens é só alterar nas duas tabelas seguindo a mesma lógica. Metade pra prateleira, metade pra parede e uma tabela pra fazer as prateleiras se moverem.
Os créditos são 60% meus e 40% do @MaXwEllDeN por ter me dado um norte no começo do script.
Qualquer coisa comenta aí e dá aquele rep+ pra ajudar ;]
-
Sartwood deu reputação a PsyMcKenzie em Sistema de Cortar Madeira V1.0 por PsyMcKenzieBom galera, estou começando minha carreira na área de scripts, e estou fazendo o possível para postar 1 por semana.
Semana passada eu postei o Sistema de Fome
E hoje estou postando o Woodcutting Sistem na versão 1.0, em breve updates. Então, vamos lá!
Em data/actions/scripts, crie um arquivo.lua com o nome de wood e coloque isso:
function onUse(cid, item, frompos, item2, topos) local chance = 70 -- chance de cortar local madeiras = {5941, 5901} -- item que o player irá ganhar local premio = madeiras[math.random(1, #madeiras)] local transformItem = 8786 local texts = {"Tuc", "Toc", "Trec"} local random = texts[math.random(1,#texts)] local vocationUse = 2 local time = 2 -- Minutos para crescer novamente if getPlayerVocation(cid) ~= vocationUse then doPlayerSendTextMessage(cid,22,"Você não tem a vocação necessária para cortar.") return true end if item2.itemid == 2708 or item2.itemid == 2700 or item2.itemid == 6218 or item2.itemid == 2701 or item2.itemid == 2707 then if math.random(1,100) >= chance then doPlayerAddItem(cid,premio, math.random(1, 2)) doTransformItem(item2.uid, transformItem) doSendMagicEffect(topos, 16) doPlayerSendTextMessage(cid,22,"Você cortou uma madeira.") doSendAnimatedText(topos, ""..random.."", TEXTCOLOR_GREEN) doDecayItem(item2.uid) addEvent(doCreateItem, time*60*1000, item2.itemid, 1, getThingPos(item2.uid)) else doSendAnimatedText(topos, ""..random.."", TEXTCOLOR_GREEN) doPlayerSendTextMessage(cid,22,"Você não conseguiu cortar.") end end return true end
Em data/actions/actions.xml adicione a tag:
<action itemid="4874" event="script" value="wood.lua"/>
4874 é o ID do Dwarven Pickaxe.
Imagens:
É isso ai galera. Obrigado!
-
Sartwood deu reputação a EddyHavoc em Looking at you [Look]Looking at You
Fala galera do TK, faz tempo que não posto nada, aí vou postar um sistema simples aqui, que ainda não tem no fórum e vejo membros procurando.
DESCRIÇÃO DO SISTEMA: Quando um player der look em você aparecerá em branco uma mensagem no canto inferior da tela: "Nome do Player" is looking at you.
1° - Acesse a pasta MODS e crie um arquivo chamado lookingatyou.xml, coloque isso dentro do arquivo:
<?xml version="1.0" encoding="UTF-8"?> <mod name="peeper" version="1.0" author="" contact="" enabled="yes"> <config name="peeper-config"><![CDATA[ -- anonymously or display peeper name? anonymous = "no" -- ignore players with access (will not show message when they look on someone) hiddenAccess = 3 -- message color (type) messageType = MESSAGE_STATUS_DEFAULT ]]></config> <event type="look" name="peeper-event" event="script"><![CDATA[ domodlib('peeper-config') local config = { anonymous = getBooleanFromString(anonymous), hiddenAccess = hiddenAccess, messageType = messageType } function onLook(cid, thing, position, lookDistance) if(isPlayer(thing.uid) and getPlayerAccess(cid) < config.hiddenAccess) then doPlayerSendTextMessage(thing.uid, config.messageType, (config.anonymous and "Someone" or getPlayerName(cid)) .. " is looking at you.") end return true end ]]></event> <event type="login" name="peeper-login" event="buffer"><![CDATA[ registerCreatureEvent(cid, "peeper-event") _result = true ]]></event> </mod> Bom galera este é o sistema.
Créditos:
EddyHavoc
Slawkens
Testado e funcionando 100%
-
Sartwood deu reputação a Slaake em [MoveMents] Novo Tipo de TreinerEaew Galera doida!! Como eu nao vi nenhum post como esse aqui no forum, vim mostrar um que eu fiz!!
Eh tipo assim: vc nao precisa ficar botando aquilo tudo de trainers no seu mapa. Nao precisa sofrer aquele Lag, por causa dos Trainers.
Voce pisa em um Tile, e voala! um trainer aparece! e isso mermoo meu fih!!
quer uma explicacao melhor!? =P
Aqui esta!--
La vai o que interessa!
*Vai na "Pasta do OT/data/movements/scripts/"
(cria um arquivo chamado train.lua)
bota isso la dentro:
x=
278
, y=
214
, z=
8
:
Posicao
onde o Primeiro Monk ira Aparecer
x=
278
, y=
216
, z=
8
:
Posicao
onde o Segundo Monk ira Aparecer
(item.actionid ==
242
):
ActionID do Tile
, que quando vc Pisar, ira Summonar os 2 Monks
doSummonCreature("
Training Monk
": Nome do
Monstro
que vc quer que Summone
Onde botar a ActionID 242
Agora crie na mesma pasta um Arquivo chamado train2.lua e coloque isso dentro:
Na posicoes do Monk vc sabe o que colocar ne!?
em: nplayer1pos = {x=290, y=209, z=9}: Bota o lugar onde os Trainers iram ser teleportados, eh tipo um lugar "lixo" para q eles ficam la qndo sumirem do lugar de treinamento
Por Final! Adicione isso \/ em "Pasta do OT/data/movements/movements.xml/"
-------->ComMentS PlX
Créditos:
Forcera (Por editar o script)
Eu (Por trazer ao TibiaKing)
-
Sartwood deu reputação a Skyfall em Tutorial Detalhado: Converter Imagens em .OTBMEae moçada do TibiaKing. Há um tempo atrás eu vi um tutorial onde ensinava transformar uma imagem em um mapa, porém não tive muito sucesso, depois de algum tempo consegui. E hoje vou estar fazendo um Remake do tutorial ensinando vocês a como fazer o mesmo. Tópico Original: http://www.tibiaking.com/forum/topic/12557-converta-imagens-para-otbm/ Nós precisaremos de 3 programas: BitmapToMap Simone Map Editor Rme Vou deixar os links no final do tutorial. Vamos lá: 1º abra o BitmapaToMap e Escolha uma imagem que você queira transformar:
Colorindo: Após selecionar a imagem você deve colori-la, para fazer isso você deve seguir os passos a seguir. OBS: Como é apenas um tutorial não será usado muitos detalhes ou seja será uma imagem Policromática. Em Range coloque a cor de sua borda, no nosso caso preto. Em To>> coloque sua cor secundária, no nosso caso montaremos só o continente ou como outros falam o Shape, por isso não é necessário usar. Em ItemID coloque o ID de qualquer ground. No caso usarei o 4526 (grass). Clique em Add e logo em seguida clique em Colorize Map. Essa última etapa pode demorar alguns minutos dependendo do mapa. Iniciando a conversão. Depois de carregar tudo, é a hora de começarmos a conversão de sua imagem para OTBM. Abaixo de Export to .OTXmap coloque as coordenadas que você quer que o mapa apareça no mapa editor. Eu coloquei 1000 nos dois. Agora clique em Export to .OTXmap. Ele vai perguntar onde você quer salvar. Espere até que esteja salvo (pode demorar um pouco). Após ter salvo, abra o Simone Map Editor, vá File>Open vá onde você salvou o mapa e abra ele. Lembre de mudar a opção para .OTXmap. Depois de abrir o mapa agora você vai salvar ele em .OTBM. Vá em Salvar Como, quando ele pedir para você salvar, no final do nome do mapa você coloca ".otbm" sem as aspas. Agora abra o RME. E Importe o mapa que você salvou como .otbm. O RME vai dizer que o tamanho do mapa é grande e vai perguntar se você quer aumentar, você clica em sim. E Pronto ai está a shape do seu mapa. Resultado (sim é o mapa de avatar): Shape: Mappeado: Link: Rme: http://www.tibiaking.com/forum/topic/22469-remeres-map-editor/ Simone Map Editor e BitMapToMap: http://www.4shared.com/rar/XZoAtBFPce/Tutorial_BitMap_to_Map.html Créditos: EddyHavoc
Mythusz
-
Sartwood deu reputação a ViitinG em (Resolvido)RME pra mapa 10.41Tenta usar esse : http://www.4shared.com/rar/tqXNnpuMba/RME_ViitinG.html
-
Sartwood deu reputação a ViitinG em Evento War CastleOlá galera,vou disponibilizar o mapa para o evento War Castle feito pelo Absolute,espero que gostem !
Link para o tópico do script do evento : http://www.tibiaking.com/forum/topic/35731-castle-war-24h-conquiste-o-trono/
Imagens:
Coordenada do mapa : {x = 1000, y = 1000, z = 7}
Download : Link
Scan : https://www.virustotal.com/pt/url/ab5a9f73db53a3cac3b1e624ccf1e7fe95caf378ef374a0fa260a896cba7f9e6/analysis/1403050891/
-
Sartwood deu reputação a luanluciano93 em [TFS 1.x] EXP Extra para Premium/VipOlá pessoal, a pedido do membro TioSlash fiz essa simples alteração no script padrão, para quem não sabe o script dá uma porcentagem a mais da experiencia ganha por aqueles jogares que são premium accounts ou, se preferir, vip account. (precisa usar o sistema feito por mim)
Em data/events/scripts/player.lua, procure essa função:
function Player:onGainExperience(source, exp, rawExp) Agora ache o fim dela:
return exp end Agora antes do código final da função (^) coloca isso a seguir:
Para premium ganhar a porcentagem a mais:
if self:isPremium() then local exp_extra = 1.2 -- 20% + exp = exp * exp_extra end e para vip ganhar a procentagem a mais:
if self:isVip() then local exp_extra = 1.2 -- 20% + exp = exp * exp_extra end Pronto!
Para editar é fácil, nesta linha: local exp_extra = 1.2 -- 20% +
Dúvidas postem aqui, 2 beijos.