Histórico de Curtidas
-
crocklinux recebeu reputação de cell18 em [v32] GlobalFull 11/12 - New Asuras, Falcons, Warzones 4,5,6 . (Updates Frequentes)ola amigos
Alguém sabe como resolver este erro no data/monster/reptiles/dragons/dragon wrath.xml
[Error - Monsters::deserializeSpell] - Dragon Wrath - Unknown spell name: ghastly dragon wave
[Warning - Monsters::loadMonster] Cant load spell. data/monster/reptiles/dragons/dragon wrath.xml
[Error - Monsters::deserializeSpell] - Dragon Wrath - Unknown spell name: ghastly dragon paralyze
[Warning - Monsters::loadMonster] Cant load spell. data/monster/reptiles/dragons/dragon wrath.xml
Que poder ser ?
-
crocklinux recebeu reputação de vaas em RME 10.37Estou a procura também mas parece que não tem como ainda....
-
crocklinux recebeu reputação de Qwizer em Ajuda Compilar TFS 1.0 DebianFaz assim :
sudo apt-get install libboost-thread-dev libboost-system-dev libxml2-dev liblua5.2-dev libgmp3-dev libmysqlclient-dev
depois : cria pasta mkdir build
depois entra na pasta build
la dentro digita isso da enter ( tem os pontinhos no final : cmake -DCMAKE_BUILD_TYPE=Release ..
depois digita : make
ai so esperar
o resultado :
Scanning dependencies of target tfs [ 1%] Building CXX object CMakeFiles/tfs.dir/src/actions.cpp.o [ 2%] Building CXX object CMakeFiles/tfs.dir/src/admin.cpp.o [ 3%] Building CXX object CMakeFiles/tfs.dir/src/ban.cpp.o [ 5%] Building CXX object CMakeFiles/tfs.dir/src/baseevents.cpp.o [ 6%] Building CXX object CMakeFiles/tfs.dir/src/beds.cpp.o [ 7%] Building CXX object CMakeFiles/tfs.dir/src/chat.cpp.o [ 8%] Building CXX object CMakeFiles/tfs.dir/src/combat.cpp.o [ 10%] Building CXX object CMakeFiles/tfs.dir/src/commands.cpp.o [ 11%] Building CXX object CMakeFiles/tfs.dir/src/condition.cpp.o [ 12%] Building CXX object CMakeFiles/tfs.dir/src/configmanager.cpp.o [ 14%] Building CXX object CMakeFiles/tfs.dir/src/connection.cpp.o [ 15%] Building CXX object CMakeFiles/tfs.dir/src/container.cpp.o [ 16%] Building CXX object CMakeFiles/tfs.dir/src/creature.cpp.o [ 17%] Building CXX object CMakeFiles/tfs.dir/src/creatureevent.cpp.o [ 19%] Building CXX object CMakeFiles/tfs.dir/src/cylinder.cpp.o [ 20%] Building CXX object CMakeFiles/tfs.dir/src/database.cpp.o [ 21%] Building CXX object CMakeFiles/tfs.dir/src/databasemanager.cpp.o [ 23%] Building CXX object CMakeFiles/tfs.dir/src/depotchest.cpp.o [ 24%] Building CXX object CMakeFiles/tfs.dir/src/depotlocker.cpp.o [ 25%] Building CXX object CMakeFiles/tfs.dir/src/fileloader.cpp.o [ 26%] Building CXX object CMakeFiles/tfs.dir/src/game.cpp.o [ 28%] Building CXX object CMakeFiles/tfs.dir/src/globalevent.cpp.o [ 29%] Building CXX object CMakeFiles/tfs.dir/src/guild.cpp.o [ 30%] Building CXX object CMakeFiles/tfs.dir/src/groups.cpp.o [ 32%] Building CXX object CMakeFiles/tfs.dir/src/house.cpp.o [ 33%] Building CXX object CMakeFiles/tfs.dir/src/housetile.cpp.o [ 34%] Building CXX object CMakeFiles/tfs.dir/src/inbox.cpp.o [ 35%] Building CXX object CMakeFiles/tfs.dir/src/ioguild.cpp.o [ 37%] Building CXX object CMakeFiles/tfs.dir/src/iologindata.cpp.o [ 38%] Building CXX object CMakeFiles/tfs.dir/src/iomap.cpp.o [ 39%] Building CXX object CMakeFiles/tfs.dir/src/iomapserialize.cpp.o [ 41%] Building CXX object CMakeFiles/tfs.dir/src/iomarket.cpp.o [ 42%] Building CXX object CMakeFiles/tfs.dir/src/item.cpp.o [ 43%] Building CXX object CMakeFiles/tfs.dir/src/items.cpp.o [ 44%] Building CXX object CMakeFiles/tfs.dir/src/logger.cpp.o [ 46%] Building CXX object CMakeFiles/tfs.dir/src/luascript.cpp.o [ 47%] Building CXX object CMakeFiles/tfs.dir/src/mailbox.cpp.o [ 48%] Building CXX object CMakeFiles/tfs.dir/src/map.cpp.o [ 50%] Building CXX object CMakeFiles/tfs.dir/src/md5.cpp.o [ 51%] Building CXX object CMakeFiles/tfs.dir/src/modalwindow.cpp.o [ 52%] Building CXX object CMakeFiles/tfs.dir/src/monster.cpp.o [ 53%] Building CXX object CMakeFiles/tfs.dir/src/monsters.cpp.o [ 55%] Building CXX object CMakeFiles/tfs.dir/src/mounts.cpp.o [ 56%] Building CXX object CMakeFiles/tfs.dir/src/movement.cpp.o [ 57%] Building CXX object CMakeFiles/tfs.dir/src/networkmessage.cpp.o [ 58%] Building CXX object CMakeFiles/tfs.dir/src/npc.cpp.o [ 60%] Building CXX object CMakeFiles/tfs.dir/src/otpch.cpp.o [ 61%] Building CXX object CMakeFiles/tfs.dir/src/otserv.cpp.o [ 62%] Building CXX object CMakeFiles/tfs.dir/src/outfit.cpp.o [ 64%] Building CXX object CMakeFiles/tfs.dir/src/outputmessage.cpp.o [ 65%] Building CXX object CMakeFiles/tfs.dir/src/party.cpp.o [ 66%] Building CXX object CMakeFiles/tfs.dir/src/player.cpp.o [ 67%] Building CXX object CMakeFiles/tfs.dir/src/position.cpp.o [ 69%] Building CXX object CMakeFiles/tfs.dir/src/protocol.cpp.o [ 70%] Building CXX object CMakeFiles/tfs.dir/src/protocolgame.cpp.o [ 71%] Building CXX object CMakeFiles/tfs.dir/src/protocollogin.cpp.o [ 73%] Building CXX object CMakeFiles/tfs.dir/src/protocolold.cpp.o [ 74%] Building CXX object CMakeFiles/tfs.dir/src/quests.cpp.o [ 75%] Building CXX object CMakeFiles/tfs.dir/src/raids.cpp.o [ 76%] Building CXX object CMakeFiles/tfs.dir/src/rsa.cpp.o [ 78%] Building CXX object CMakeFiles/tfs.dir/src/scheduler.cpp.o [ 79%] Building CXX object CMakeFiles/tfs.dir/src/scriptmanager.cpp.o [ 80%] Building CXX object CMakeFiles/tfs.dir/src/server.cpp.o [ 82%] Building CXX object CMakeFiles/tfs.dir/src/sha1.cpp.o [ 83%] Building CXX object CMakeFiles/tfs.dir/src/spawn.cpp.o [ 84%] Building CXX object CMakeFiles/tfs.dir/src/spells.cpp.o [ 85%] Building CXX object CMakeFiles/tfs.dir/src/status.cpp.o [ 87%] Building CXX object CMakeFiles/tfs.dir/src/talkaction.cpp.o [ 88%] Building CXX object CMakeFiles/tfs.dir/src/tasks.cpp.o [ 89%] Building CXX object CMakeFiles/tfs.dir/src/teleport.cpp.o [ 91%] Building CXX object CMakeFiles/tfs.dir/src/thing.cpp.o [ 92%] Building CXX object CMakeFiles/tfs.dir/src/tile.cpp.o [ 93%] Building CXX object CMakeFiles/tfs.dir/src/tools.cpp.o [ 94%] Building CXX object CMakeFiles/tfs.dir/src/trashholder.cpp.o [ 96%] Building CXX object CMakeFiles/tfs.dir/src/vocation.cpp.o [ 97%] Building CXX object CMakeFiles/tfs.dir/src/waitlist.cpp.o [ 98%] Building CXX object CMakeFiles/tfs.dir/src/weapons.cpp.o [100%] Building CXX object CMakeFiles/tfs.dir/src/wildcardtree.cpp.o Linking CXX executable tfs [100%] Built target tfs The command "make" exited with 0. Done. Your build exited with 0. -
crocklinux deu reputação a Vodkart em [Sistema] Battlefield Event! V.1Mapa BattleField Feito Por AnneMotta :
Mapa Battlefield.rar
Scan: https://www.virustot...sis/1346548669/
Imagens do mapa
Descrição:
- O evento é automático e acontece em determinado dia e hora da semana
- Logo após é aberto um teleport então apenar um número limitado de players entra no evento
- São formados por dois times, os "Black Assassins" e os "Red Barbarians"
- Os times são balanceados automaticamente, quando o último jogador entra, esse teleport é fechado e depois de 5 minutos o evento começa, os 5 minutos são para os players ter tempo de planejar um ataque.
- O sistema tem por finalidade matar todos do time inimigo, e os players que sobreviverem recebem um prêmio.
Bônus:
- Durante o evento é mostrado na tela somente dos jogadores que estão no evento um placar de times.
- Até o último player entrar no evento, ficam mandando broadcast dizendo quanto players faltam para dar inicio ao jogo.
- Se o evento abrir e não atingir a meta de players colocada, o evento é finalizado e os players voltam para o templo.
Lembre-se:
- De colocar Pvp Tool na área
- De colocar área NoLogout
Imagens:
Instalação:
Data > Lib Data > CreatureScript > Script Data > GlobalEvents > Scripts Data > Movements > Script Configurações do evento -
crocklinux deu reputação a GuuhTorres em Pokemon Dash AdvancedPokemon Dash Advanced
• autor: mastercraft/brun123
• versão do distro: TFS 0.36 PL1 (8.54)
Agora, o servidor apresenta outras caractériscas que serão as primeiras vistas em um servidor público:
• Pokedex automática, ao usar em um pokémon, o texto é escrito automaticamente (não é necessário ficar editando arquivo por arquivo).
• Pokémons tem seu próprio level e evoluem ao atingir o level necessário sozinhos, alguns usam stones ainda.
• Cada pokémon tem seus status (offense, defense, special attack, agility).
• Comando !cd parar checar os cooldowns do pokémon.
• Sistema TV/Cam e PC.
• Sistemas de felicidade, influenciando no ataque e evolução.
• Sistema de fome.
• Box que da pokémons.
• NPC que troca nick.
• Novo item "pokeinfo" que mostra quantas pokebolas o player já usou, quantos pokémons já capturou e quais pokémons ele já capturou.
• Potions que healam a vida dos pokemons.
• SPR e DAT do tibia original mantidos, e adicionado maioria dos sprites de pokémon.
• Pokemon Statistics (veja quantas vezes tentaram capturar um pokemon/já capturaram ele).
• Fly com apenas 1 chão embaixo do player, e não vários em volta.
• Pokémons de players podem se atacar desde que os donos estejam em uma party.
• Order funcional com as habilidades dos pokemons (fly, ride, dig, cut, light, rock smash, blink, move).
• Comandos m1 até m12, desta vez configurado para todos os 151 pokémons.
• Pokémons passivos e agressivos, desta vez feito em c++ (sources) melhorando o desempenho.
• Catch com 4 pokébolas, com limite de 6 pokémons e o 7º indo para o CP.
• Nurse heala todos os pokémons de uma só vez, inclusive retira os status de sleep, burn etc.
• Portrait, go back e todos os outros sistemas mais básicos.
Links para download:
Server sem dlls: Clique aqui (atualizado versão 1.4B full)
Scan do server: Clique aqui (scan via VirusTotal)
Download dlls: Download das DLLs do Server
Scan dlls: Scan das DLLs
Download cliente : Download Aqui
-
crocklinux deu reputação a Kimoszin em ALgum exemplo de HUDVocê pode usar a Hook.dll para isso, procure na internet tem injetores feito em delphi.
-
crocklinux deu reputação a gpedro em Correção Clonar items NPC usando ElfBotSe você já teve um servidor, já sabe como que é isso. Por falha humana, em todos npcs esquecerem de definir um valor minimo para os itens agrupáveis ser vendido, com isso se você coloca-se no elfbot auto buyitems IDdoITEM 0 ele iria comprar e não pagar nada. Para os que não corrigiram pelos NPCS tambem há como corrigir pelas sources.
npc.cpp
if(NpcState* npcState = getState(player, true)) { npcState->amount = amount; npcState->subType = count; npcState->itemId = itemId; npcState->buyPrice = getListItemPrice(itemId, SHOPEVENT_BUY); npcState->ignoreCap = ignoreCap; npcState->inBackpacks = inBackpacks; const NpcResponse* response = getResponse(player, npcState, EVENT_PLAYER_SHOPBUY); executeResponse(player, npcState, response); } substitua por if(NpcState* npcState = getState(player, true)) { if(amount <= 0){ amount = 1; } npcState->amount = amount; npcState->subType = count; npcState->itemId = itemId; npcState->buyPrice = getListItemPrice(itemId, SHOPEVENT_BUY); npcState->ignoreCap = ignoreCap; npcState->inBackpacks = inBackpacks; const NpcResponse* response = getResponse(player, npcState, EVENT_PLAYER_SHOPBUY); executeResponse(player, npcState, response); }
Créditos: Matheus Mkalo
-
crocklinux deu reputação a 3visan em [Aula 9] TabelasTabelas
Aula 9
#Introdução
Olá, nessa aula vamos conhecer um elemento que facilita muito a vida de programadores, principalmente quando se trata de um código com muitas variaveis e operações, as tabelas!
Imagine uma tabela como se fosse uma estante com várias gavetas, quantas você desejar, dentro de cada gaveta tem um objeto, temos a gaveta um, a gaveta dois, e assim em diante ... podemos guardar objetos dentro de cada gaveta, tirar objetos delas e também saber o que tem dentro de cada uma, nessa analogia uma tabela é basicamente como se fosse essa estante.
Uma tabela é uma variável estruturada que pode conter vários valores dispostos "dentro" de si (vide analogia), seu inicio é indicado por uma abertura de chave, ela pode conter inúmeros valores, de todos os tipos exceto nulo(nil), desde variáveis até strings, e dentro dela esses valores são separados por vírgulas (,), seu fim é indicado por um fechamento de chave.
Essa definição pode ficar meio confusa aqui, mas garanto que ao longo da aula tudo vai se explicar.
Exemplo:
tb = {1, 2, 3, 4, 5} --> inteiros em uma tabela tb = {"hello", "world"} --> strings em uma tabela tb = {a = 2, b = 3} --> variáveis em uma tabela Como você pode perceber nos exemplos acima a declaração (criação) de uma tabela é semelhante a de uma variável comum, mas perceba que a estrutura é diferente, eu abri uma chave `{´ e dentro dessa chave comecei a colocar os valores que eu quero para cada posição na tabela, como se eu estivesse distribuindo-os nas "gavetinhas" 1, 2, etc, separados por vírgulas, é como se cada virgula indicasse que acaba uma gavetinha e começa outra, mas lembre-se só é permitido um valor em cada "gavetinha" e uma gavetinha não pode não ter valor ou ser nula, e no final ocorre um fechamento da chave `}´ que indica o fechamento/final da tabela. Através desses exemplos e definições percebemos uma coisa, uma tabela é uma variável comum, mas é como se pudessemos guardar vários valores dentro de uma variável só, dentro da tabela, ao invés de criarmos duas variáveis, porque não criamos uma tabela contendo os valores dessas duas variáveis. #Mas e então, qual é a vantagem de se usar tabelas? Além da organização e estruturação veremos mais pra frente jeitos de se manipular tabelas que farão com que seu código fique muito menor e mais prático com o uso delas, acompanhe ... #Agora vamos pra uma parte um pouco mais chatinha, preste atenção Tabelas contém indexes, o que é um index? Os indexes são chaves "primárias" às quais os valores da tabela são associados, todo valor em uma tabela exceto variáveis tem um index, o index se não definido por você é definido pela posição do valor na tabela, e eles tem a simples função de organização e identificação dos valores na tabela: tb = {2, 5, 4, 6} Sobre a tabela acima podemos afirmar que o valor 2 tem o index 1, mas porque? Pois como eu já falei o index é definido pela posição do valor na tabela, começando sempre do 1, então ele é o primeiro valor da tabela, tem a posição 1 E assim em diante, o valor 5 tem index 2, o 4 tem index 3, o 6 tem index 6 e sempre em diante ... Há também a opção de definir o index de um valor manualmente ao invés de simplesmente identifica-los pela posição na tabela, o que pode facilitar a associação de valores: --> [index] = valor tb = {2, 5, [15] = 30} Neste caso foi criada uma tabela, e para um de seus valores foi definido o index 15 manualmente, ou seja, o index do valor 2 é 1, e o do valor 5 é 2 (atribuidos pela posição), já para o valor 30 foi definido o index 15 manualmente, então o index do valor 30 é 15, e não 3 como seria normalmente ... #E como se pega os valores de uma tabela? Há dois meios de se pegar valores de dentro de uma tabela: Através do index do valor ou se a tabela contiver variáveis, atraves dos nomes das variaveis: t = {21, 23, 43, 54} t[2] --> esta sintaxe retornará o valor na tabela 't' no index 2, ou seja, 23 t[3] --> 43 t[4] --> 54 e assim por diante ... Para se obter valores de uma tabela atraves de variaveis inseridas nela é muito mais facil: t = {level = 20, nome = "dragon"} t.level --> 20, 't' é a tabela e 'level' o nome da variavel inserida nela t.nome --> "dragon" #A biblioteca 'table' Existem muitas funções dentro da biblioteca 'table', que são usadas para manipulação de tabelas, aqui vão elas e suas respectivas utilidades: table.concat (table [, sep [, i [, j]]]) --> Dada uma tabela onde todos os elementos são strings ou números retorna os elementos de i ou o inicio e j ou o fim concatenados em sequencia intercalados por 'sep', separador table.insert (table, [pos,] value) --> Insere o valor 'value' na 'pos' (index) na tabela 'table' table.remove (table [, pos]) --> Remove o valor associado ao index 'pos' da tabela 'table' table.sort (table [, comp]) --> Ordena os elementos da tabela 'table' em dada ordem, se comp é fornecido então ele deve ser uma função que recebe dois elementos da tabela e retorna true quando o primeiro é menor do que o segundo #E como uma tabela pode ser util no meu script? Pode ser util na associação de valores, observe este script de troca de sexo, ao inves de dois ifs checando o sexo, como o sexo só pode ser 0 ou 1, voce usa uma tabela: function onUse(cid) local sex = { [0]=1, [1]=0, } doPlayerSetSex(cid, sex[getPlayerSex(cid)]) return true end Se o sexo do jogador for 0, atraves do valor no index 0 na tabela, o sexo é trocado para 1, e vice-versa .. Como também pode ser útil para armazenar configurações ou variáveis: local config = { effect = 1, removeRune = true, combat = 2 } config.effect --> 1 config.removerune --> true config.combat --> 2 #Utilidades 1. O operador # é utilizado em tabelas para retornar o tamanho de uma tabela (referente aos seus elementos, exceto variáveis), exemplo: t = {2, 3, 4, 5, 6} print(#t) --> 5, elementos reconheciveis 2. Tabelas multi-dimensionais, tabelas podem ser colocadas dentro de tabelas e assim por diante, exemplo: tabela = {tabela2 = {tabela3 = {20}}} print(tabela.tabela2.tabela3[1]) --> 20
#Curiosidades
Tabelas são o único mecanismo de estruturação de dados em Lua;
Tabelas podem ser heterogêneas; isto é, elas podem conter valores de todos os tipos (exceto nil).
Existem várias maneiras convenientes de se criar tabelas em Lua
Campos de tabela podem conter funções
*nil = tipo de valor nulo, vazio
Exercicios:
Crie uma tabela, contendo 2 valores inteiros, 2 strings e 2 variaveis.
Printe os elementos semelhantes da tabela separadamente.
OBS: Os valores podem ser aleatórios
Resposta Abaixo:
Creditos:
99% Notorious
1% Vittu
Aula 10 o comando for
-
crocklinux deu reputação a the Nick em Flash Bot Nv 0.0.1Acabei de fazer o mais novo bot para tibia flash...
No momento tem apenas healing, em breve vou colocar rune maker, anti indle, entre outras coisas basicas, e quem sabe no futuro um warbot..
Segue as imagens..
Keys: {F1} a {F12}
shift +
CTRL ^
exemplo: pressionar shift+f1: +{f1}
Browsers Suportados: Firefox
Scan: Virus Total
Download: flash bot NV.rar
-
crocklinux deu reputação a DragonBoss em Função de Hotkey (Simula pressionamento de hotkeys no tibia)Falaaaa galeraa...
Dando continuidade aos meus tutoriais de programação SEM TIBIAAPI, vou postar agora mais uma função que pode ser util a vocês x.x
Ela trabalha de uma forma simples, só ve qual o texto que foi inserido na função, e trabalha a partir disso (se digitei F1 ele vai usar F1 na janela do tibia)...
Um exemplo de utilização é pra healer... por exemplo (em pseucodes ):
se player.vida <= vida.paraHealar então
Hotkey('F1');
Vamos la:
A função é a seguinte:
function hotkey(x :string): string; var h: HWND; i : integer; begin if x ='F1' then i := 112; if x ='F2' then i := 113; if x ='F3' then i := 114; if x ='F4' then i := 115; if x ='F5' then i := 116; if x ='F6' then i := 117; if x ='F7' then i := 118; if x ='F8' then i := 119; if x ='F9' then i := 120; if x ='F10' then i := 121; if x ='F11' then i := 122; 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; Obs: coloque a função abaixo do Implementation, e você pode usa-la no decorrer do programa. Analisando a função ( como sempre x.X ): Ou seja, vamos usar ela assim: Lembrando que o code é bem simples, e só funciona com hotkeys do F1 ao F12 (é só ver o code...mas é fácil adaptar para usar ctrl + F's ) Você pode usar também a função com um edit ou outra coisa do tipo (que seja string)... ou seja: Se no edit1.text tiver escrito F1, ele pressiona essa hotkey no tibia. =] Um code simples, mas, espero que seja util, e que dê ideias de como vocês podem fazer outros sistemas "indetectáveis" pro tibia. flw, abraços galera #Edit Seguindo a sugestão do Flamer para um menor consumo de processamento, fiz uma versão com else if... a função não altera muito (acredito que só seu consumo de processador), ou seja, a utilização fica da mesma forma, se alguém quiser testar a nova função para ver se há mudanças... é a seguinte (só troque a função por essa) : 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;
Flw², Abraços²
-
crocklinux deu reputação a Ti0Branc0 em Criando autoupdate básico.Download com idHTTP e ProgressBar.
Na verdade é meio que um Downloader.
Tutorial:
1- Inicie um novo projeto : File / New / VCL Form Aplication;
2- Coloque um Button, um Edit, um Progressbar e um Label, e um idHTTP (Paleta Indy Clients);
3- No evento OnClick do Button coloque o código abaixo:
var arquivo,caminho : string; MyFile: TFileStream; begin // definir o link caminho:= 'http://127.0.0.1/'; // aqui defini um caminho pardão pro download , pode ser trocado por um edit, etc arquivo:= edit1.text; // nome do arquivo para download MyFile := TFileStream.Create('C:'+arquivo, fmCreate); // local no hd e nome do arquivo com a extensão, onde vai salvar. try IdHTTP1.Get('http://127.0.0.1/'+arquivo, MyFile); // fazendo o download do arquivo finally MyFile.Free; end; 4- No evento OnWork do idHTTP1: ProgressBar1.Position := AWorkCount; 5- No evento OnWorkBegin do idHTTP1: ProgressBar1.Position := 0; ProgressBar1.Max := AWorkCountMax; Label1.caption := "Download em andamente, espere!"; 6- No evento OnWorkEnd do idHTTP1: ProgressBar1.Position := ProgressBar1.Max; Label1.caption := "Download Concluído!";
7- Agora dê F9, e teste a aplicação.
Créditos : Song.
-
crocklinux 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