Histórico de Curtidas
-
TioItachi deu reputação a Kolisium em [System] Frag System Pelo DBFrags System
Ola pessoal, sei que tem alguns scripts de frags system no forum, mas eu achei eles um pouco confusos então decidi fazer o meu e venho por meio deste disponibiliza-lo para quem quiser usar, entaão vamos la:
Testado em TFS-0.4
Passo 1 - Creature Scripts
Passo 2 - Banco de dados
Passo 3 - Ranks gesior:
Passo 4 - Caso queira a talkaction !rank frags
Pronto, acabamos de instalar o script no server.
-
TioItachi deu reputação a rohfagundes em [C++] Level Monsterola =)
estava aqui mexendo nas sources q tenho aqui
e achei um sistema de level nos monstros q tinha em um forum q agora esta morto(kkk)
Source de Teste: otxserver2(FINAL) Baseada na versão: tfs 0.3.7
entao vamos la =)
em configmanager.h
embaixo de:
MONSTER_SPAWN_WALKBACK, coloque:
MONSTER_HAS_LEVEL, em configmanager.cpp
embaixo de:
m_confBool[MONSTER_SPAWN_WALKBACK] = getGlobalBool("monsterSpawnWalkback", true); coloque:
m_confBool[MONSTER_HAS_LEVEL] = getGlobalBool("monsterHasLevel", true); em luascript.cpp
embaixo de:
setField(L, "guildEmblem", mType->guildEmblem); coloque:
setField(L, "levelMin", mType->levelMin); setField(L, "levelMax", mType->levelMax); em map.cpp
embaixo de:
#include "game.h" coloque:
#include "configmanager.h" troque inteiro:
bool Map::placeCreature(const Position& centerPos, Creature* creature, bool extendedPos /*= false*/, bool forced /*= false*/) por:
bool Map::placeCreature(const Position& centerPos, Creature* creature, bool extendedPos /*= false*/, bool forced /*= false*/) { Monster* monster = creature->getMonster(); if (monster && g_config.getBool(ConfigManager::MONSTER_HAS_LEVEL)) { uint8_t level; if (!monster->getMonsterType()->hideLevel) { if (monster->isSummon()) { std::string value; monster->getMaster()->getStorage((std::string)"monster_level", value); uint8_t intValue = atoi(value.c_str()); if (intValue || value == "0") level = intValue; else level = 1; } else level = monster->level; char buffer[10]; monster->name = monster->getName() + " [" + itoa(level, buffer, 10) + "]"; } } bool foundTile = false, placeInPz = false; Tile* tile = getTile(centerPos); if (tile && !extendedPos) { placeInPz = tile->hasFlag(TILESTATE_PROTECTIONZONE); uint32_t flags = FLAG_IGNOREBLOCKITEM; if (creature->isAccountManager()) flags |= FLAG_IGNOREBLOCKCREATURE; ReturnValue ret = tile->__queryAdd(0, creature, 1, flags); if (forced || ret == RET_NOERROR || ret == RET_PLAYERISNOTINVITED) foundTile = true; } size_t shufflePos = 0; PairVector relList; if (extendedPos) { shufflePos = 8; relList.push_back(PositionPair(-2, 0)); relList.push_back(PositionPair(0, -2)); relList.push_back(PositionPair(0, 2)); relList.push_back(PositionPair(2, 0)); std::random_shuffle(relList.begin(), relList.end()); } relList.push_back(PositionPair(-1, -1)); relList.push_back(PositionPair(-1, 0)); relList.push_back(PositionPair(-1, 1)); relList.push_back(PositionPair(0, -1)); relList.push_back(PositionPair(0, 1)); relList.push_back(PositionPair(1, -1)); relList.push_back(PositionPair(1, 0)); relList.push_back(PositionPair(1, 1)); std::random_shuffle(relList.begin() + shufflePos, relList.end()); uint32_t radius = 1; Position tryPos; for (uint32_t n = 1; n <= radius && !foundTile; ++n) { for (PairVector::iterator it = relList.begin(); it != relList.end() && !foundTile; ++it) { int32_t dx = it->first * n, dy = it->second * n; tryPos = centerPos; tryPos.x = tryPos.x + dx; tryPos.y = tryPos.y + dy; if (!(tile = getTile(tryPos)) || (placeInPz && !tile->hasFlag(TILESTATE_PROTECTIONZONE))) continue; if (tile->__queryAdd(0, creature, 1, 0) == RET_NOERROR) { if (!extendedPos) { foundTile = true; break; } if (isSightClear(centerPos, tryPos, false)) { foundTile = true; break; } } } } if (!foundTile) return false; int32_t index = 0; uint32_t flags = 0; Item* toItem = NULL; if (Cylinder* toCylinder = tile->__queryDestination(index, creature, &toItem, flags)) { toCylinder->__internalAddThing(creature); if (Tile* toTile = toCylinder->getTile()) toTile->qt_node->addCreature(creature); } return true; } em monster.h
embaixo de:
virtual ~Monster(); coloque:
std::string name, nameDescription; int32_t level; double bonusAttack, bonusDefense; troque:
virtual const std::string& getName() const {return mType->name;} virtual const std::string& getNameDescription() const {return mType->nameDescription;} virtual std::string getDescription(int32_t) const {return mType->nameDescription + ".";} por:
virtual const std::string& getName() const { return name; } virtual const std::string& getNameDescription() const { return nameDescription; } virtual std::string getDescription(int32_t) const { return nameDescription + "."; } em monster.cpp
embaixo de:
raid = NULL; coloque:
name = _mType->name; nameDescription = _mType->nameDescription; level = (int32_t)random_range(_mType->levelMin, _mType->levelMax, DISTRO_NORMAL); bonusAttack = 1.0; bonusDefense = 1.0; troque inteiro:
void Monster::onCreatureAppear(const Creature* creature) por:
void Monster::onCreatureAppear(const Creature* creature) { Creature::onCreatureAppear(creature); if (creature == this) { //We just spawned lets look around to see who is there. if (isSummon()) { std::string value; this->master->getStorage((std::string)"monster_level", value); uint8_t intValue = atoi(value.c_str()); if (intValue || value == "0") level = intValue; else level = 1; isMasterInRange = canSee(master->getPosition()); } if (g_config.getBool(ConfigManager::MONSTER_HAS_LEVEL)) { this->healthMax = std::floor(this->getMaxHealth() * (1 + (0.1 * (level - 1)))); this->health = this->healthMax; this->bonusAttack += (0.01 * (level - 1)); this->bonusDefense += (0.005 * (level - 1)); } updateTargetList(); updateIdleStatus(); } else onCreatureEnter(const_cast<Creature*>(creature)); } em :
void Monster::doAttacking(uint32_t interval) procure por:
if(maxCombatValue > 0) //defense multiplier = g_config.getDouble(ConfigManager::RATE_MONSTER_DEFENSE); else //attack multiplier = g_config.getDouble(ConfigManager::RATE_MONSTER_ATTACK); e troque por:
if(maxCombatValue > 0) //defense multiplier = g_config.getDouble(ConfigManager::RATE_MONSTER_DEFENSE) * bonusDefense; else //attack multiplier = g_config.getDouble(ConfigManager::RATE_MONSTER_ATTACK) * bonusAttack; em monsters.h
troque:
bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable, isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth, eliminable; por:
bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable, isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth, eliminable, hideLevel; troque:
int32_t defense, armor, health, healthMin, healthMax, baseSpeed, lookCorpse, corpseUnique, corpseAction, maxSummons, targetDistance, runAwayHealth, conditionImmunities, damageImmunities, lightLevel, lightColor, changeTargetSpeed, changeTargetChance; por:
int32_t defense, armor, health, healthMin, healthMax, baseSpeed, lookCorpse, corpseUnique, corpseAction, maxSummons, targetDistance, runAwayHealth, conditionImmunities, damageImmunities, lightLevel, lightColor, changeTargetSpeed, changeTargetChance, levelMin, levelMax; em monsters.cpp
troque:
canPushItems = canPushCreatures = isSummonable = isIllusionable = isConvinceable = isLureable = isWalkable = hideName = hideHealth = eliminable = false; por:
canPushItems = canPushCreatures = isSummonable = isIllusionable = isConvinceable = isLureable = isWalkable = hideName = hideHealth = eliminable = hideLevel = false; embaixo de:
baseSpeed = 200; coloque:
levelMin = levelMax = 1; procure por:
if(!xmlStrcmp(p->name, (const xmlChar*)"health")) { if(readXMLInteger(p, "min", intValue)) mType->healthMin = intValue; if(!readXMLInteger(p, "max", intValue)) { SHOW_XML_ERROR("Missing health.max"); monsterLoad = false; break; } mType->healthMax = intValue; if(!readXMLInteger(p, "now", intValue)) mType->health = mType->healthMax; else mType->health = intValue; } embaixo dele coloque:
else if (!xmlStrcmp(p->name, (const xmlChar*)"level")) { if (!readXMLInteger(p, "max", intValue)) mType->levelMax = 1; else mType->levelMax = intValue; if (!readXMLInteger(p, "min", intValue)) mType->levelMin = mType->levelMax; else mType->levelMin = intValue; } agora nos arquivos dos monstros vc pode colocar
<level min="1" max="6"/> min = level minimo q pode vir no monstro
max = level maximo q pode vir no monstro
obs: se vc colocar essa tag nos monstros sempre vai vir Monstro Level 1
obs²: getMonsterInfo(name) n funcionar para achar o nome do monstro
pq ele pega o nome real q esta no arquivo do monstro q n vai ter o [1](q é o level)
estou tentando arrumar isso mas ainda n consegui
se alguem conseguir arrumar isso avisa ai =)
acho q é so isso
Creditos: 100% OneShot/Garou
-
TioItachi deu reputação a xWhiteWolf em [Pedido] Spell que diminua shielding do alvo--Spell Method by Night Wolf local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, 39) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, true) local config = { tempo = 10, --- tempo que vai durar a spell percent = 20 -- quanto % vai diminuir } local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELDPERCENT, 100-config.percent) setCombatCondition(combat, condition) function onCastSpell(cid, var) return doCombat(cid, combat, var) end
-
TioItachi deu reputação a Vodkart em [Talkactions] Quest/Hunt Por "X" Tempofaltava uma virgula
local config = { quest_name = "charizard", -- nome da quest utilizada no !quest charizard pos_gay = {x=889,y=323,z=7}, -- teleport de ida pra quest tel_back = {x=889,y=319,z=7}, -- teleport de volta (templo) nivel = 1, -- nivel necessario exaust = 300, -- tempo para usar o comando (!quest charizard) (em segundos) time = 60, -- tempo que ficara na quest (em segundos) sto = 20315, -- n mecher sto2 = 20915, -- n mecher message = [[ Informacoes da quest1: Comando para entrar nela: !quest quest1 Nivel necessario: 1 Tempo que tera para completar a quest: 20 segundos Monstros que ira enfrentar: {Charizard}, {Blastoise}, {Venusaur} Premio da quest: 100 TD Experiencia: 100.000xp Sera que voce conseguira passar desse desafio? ]], -- aqui é a mensagem que aparecerá quando digitar : (!quest) } function onSay(cid, words, param, channel) if (param == '') then doPlayerPopupFYI(cid, config.message) return true end if (param == config.quest_name) then if getPlayerLevel(cid) >= config.nivel then if getPlayerStorageValue(cid, config.sto) - os.time() <= 0 and getPlayerStorageValue(cid, config.sto2) - os.time() <= 0 then doTeleportThing(cid, config.pos_gay) doSendMagicEffect(getCreaturePosition(cid),12) setPlayerStorageValue(cid, config.sto, os.time() + config.exaust) setPlayerStorageValue(cid, config.sto2, os.time() + config.time) doPlayerSendTextMessage(cid, 12, "Voce entrou, tera 60 segundos para terminar a missao, caso queira saber quanto tempo falta, fale {!quest time}.") addEvent(doTeleportThing, config.time * 1000, cid, config.tel_back) addEvent(doSendMagicEffect, config.time * 1000, getThingPos(cid), 35) end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "voce nao possui nivel.") end doPlayerSendCancel(cid, "Voce tem que esperar: " ..getPlayerStorageValue(cid, config.sto) - os.time() .." segundos para usar o comando novamente.") end if (param == "time") then if getPlayerStorageValue(cid, config.sto2) - os.time() <= 0 then doSendMagicEffect(getCreaturePosition(cid),3) doPlayerSendCancel(cid, "Voce precisa estar na quest") else doSendMagicEffect(getCreaturePosition(cid),3) doPlayerSendCancel(cid, "Voce tem : " ..getPlayerStorageValue(cid, config.sto2) - os.time() .." segundos para terminar essa quest.") end end return true end
-
TioItachi deu reputação a JZDJ em Download Clients 11+ IP 127.0.0.1Olá galera do TK.
Hoje eu trago vários clientes de Tibia 11+ com IP 127.0.0.1.
Vi que alguns usuários não estão conseguindo algumas versões 11 então resolvi postar aqui.
Estou disponibilizando o EXECUTÁVEL DO CLIENTE.
Para que funcione é só colocar na pasta BIN da versão correspondente.
Também disponibilizei a pasta completa compactada.
Vamos ao que interessa.
Tibia 11.43.5504
127.0.0.1-11.43.5504.exe
SCAN do cliente
Pasta completa: Tibia 11.43.5504.rar
SCAN pasta completa
Tibia 11.44.5516
127.0.0.1-11.44.5516.exe
SCAN do cliente
Pasta completa: Tibia 11.44.5516.rar
SCAN pasta completa
Tibia 11.46.5556
127.0.0.1-11.46.5556.exe
SCAN do cliente
Pasta completa: Tibia 11.46.5556.rar
SCAN pasta completa
Tibia 11.47.5640
127.0.0.1-11.47.5640.exe
SCAN do cliente
Pasta completa: Tibia_11_47.5640.rar
SCAN pasta completa
Tibia 11.47.5674
127.0.0.1-11.47.5674.exe
SCAN do cliente
Pasta completa: Tibia_11_47.5674.rar
SCAN pasta completa
Tibia 11.48.5712
127.0.0.1-11.48.5712.exe
SCAN do cliente
Pasta completa: Tibia_11_48.5712.rar
SCAN pasta completa
Tibia 11.48.5753
127.0.0.1-11.48.5753.exe
SCAN do cliente
Pasta completa: Tibia_11_48.5753.rar
SCAN pasta completa
Tibia 11.49.5813
127.0.0.1-11.49.5813.exe
SCAN do cliente
Pasta completa: Tibia_11_49.5813.rar
SCAN pasta completa
Tibia 11.49.5884
127.0.0.1-11.49.5884.exe
SCAN do cliente
Pasta completa: Tibia_11_49.5884.rar
SCAN pasta completa
Tibia 11.49.5921
127.0.0.1-11.49.5921.exe
SCAN do cliente
Pasta completa: Tibia_11_49.5921.rar
SCAN pasta completa
Tibia 11.49.5983
127.0.0.1-11.49.5983.exe
SCAN do cliente
Pasta completa: Tibia_11_49.5983.rar
SCAN pasta completa
Tibia 11.49.6018
127.0.0.1-11.49.6018.exe
SCAN do cliente
Pasta completa: Tibia 11.49.6018.rar
SCAN pasta completa
Tibia 11.49.6030
127.0.0.1-11.49.6030.exe
SCAN do cliente
Tibia 11.49.6030.rar
SCAN pasta completa
Tibia 11.50.6055
127.0.0.1-11.50.6055.exe
SCAN do cliente
Tibia 11.50.6055.rar
SCAN pasta completa
Tibia 11.51.6099
127.0.0.1-11.51.6099.exe
SCAN do cliente
Tibia 11.51.6099.rar
SCAN pasta completa
Tibia 11.52.6104
127.0.0.1-11.52.6104.exe
SCAN do cliente
Tibia 11.52.6104.rar
SCAN pasta completa
Tibia 11.55.6239
127.0.0.1-11.55.6239.exe
SCAN do cliente
Tibia 11.55.6239.rar
SCAN pasta completa
Tibia 11.56.6239
127.0.0.1-11.56.6239.exe
SCAN do cliente
Tibia 11.56.6239.rar
SCAN pasta completa
Tibia 11.57.6239
127.0.0.1-11.57.6239.exe
SCAN do cliente
Tibia 11.57.6239.rar
SCAN pasta completa
Tibia 11.58.6239
127.0.0.1-11.58.6239.exe
SCAN do cliente
Tibia 11.58.6239.rar
SCAN pasta completa
Tibia 11.58.6239 ATUALIZADO
127.0.0.1-11_58.6239.exe ATUALIZADO
SCAN do cliente
Tibia 11.58.6239 ATUALIZADO.rar
SCAN pasta completa
Tibia 11.59.6424
127.0.0.1-11.59.6424.exe
SCAN do cliente
Tibia 11.59.6424.rar
SCAN pasta completa
Tibia 11.60.6457
127.0.0.1-11.60.6457.exe
SCAN do cliente
Tibia 11.60.6457.rar
SCAN pasta completa
Tibia 11.65.6492
127.0.0.1-11.65.6492.exe
SCAN do cliente
Tibia 11.65.6492.rar
SCAN pasta completa
Tibia 11.65.6507
127.0.0.1-11.65.6507.exe
SCAN do cliente
Tibia 11.65.6507.rar
SCAN pasta completa
Tibia 11.66.6516
127.0.0.1-11.66.6516.exe
SCAN do cliente
Tibia 11.66.6516.rar
SCAN pasta completa
Tibia 11.70.6535
127.0.0.1-11.70.6535.exe
SCAN do cliente
Tibia 11.70.6535.rar
SCAN pasta completa
Tibia 11.70.6543
127.0.0.1-11.70.6543.rar
SCAN do cliente
Tibia 11.70.6543.rar
SCAN pasta completa
Tibia 11.70.6548
127.0.0.1-11.70.6548.rar
SCAN do cliente
Tibia 11.70.6548.rar
SCAN pasta completa
Tibia 11.70.6555
127.0.0.1-11.70.6555.rar
SCAN do cliente
Tibia 11.70.6555.rar
SCAN pasta completa
Espero que eu tenha ajudado.
Créditos:
A Cip pelos clientes e a mim por ter alterado os ips nos mesmos.
REP+ é sempre bom e não dói.
Abraços.
ATT ,
Jaurez/JZDJ
-
TioItachi deu reputação a xWhiteWolf em (Resolvido)Como eu faço o Sistema Training igual ao NTO BRvelho olha a imagem e olha oque tu me falou.. Não tem nada a ver, óbvio que deu erro, eu fiz o script pra um mapa que não é o teu. Tá vendo porque não dá certo? Agora eu to puto da vida e você vai ficar sem o sistema, não era muito mais fácil vc ter passado as drogas das posições de inicio? Você me falou que era uma cabana de trainer a cada 11 sqms pra > e 12 pra /\, o script foi feito pra trainers em uma linha e não pra duas linhas. Caramba cara.
O erro no script foi que eu esqueci uma virgula, agora se vc quiser usar esse sistema vai ter que refazer o mapa pra uma linha só de trainers e colocar rangey = 0.
-
TioItachi deu reputação a Elwyn em Tibia está zerado + preview [GPS SYSTEM]Assim eu fico encabulado
-
TioItachi deu reputação a xWhiteWolf em Tibia está zerado + preview [GPS SYSTEM]Graças ao nosso marvilhoso colega Elwyn o tibia foi zerado hoje dia 09/03/2015 haha. Ele lançou uma função crucial pra fazer qualquer script relacionado à movimentação ao combinar o algoritmo de pathFinding da source à uma função Lua.
Sei que muita gente não frequenta a seção de programming OU não entendeu nada doque eu falei mas pqp, deem uma rápida olhada noque dá pra criar:
Isso é um GIF de um sistema que eu to tentando fazer desde novembro de 2014 e que agora eu finalmente consegui terminar graças à genialidade desse mito. Trata-se de uma talkaction que vc digita !Lugarquevcquerir e o personagem vai andando automaticamente até o local e quando chega ele manda uma msg avisando que vc chegou ao destino, semelhante a um GPS!!!!!11111
Fora que com isso podemos controlar os movimentos do NPCS!!!!111 Dá pra fazer uma fucking quest que vc tem que seguir o npc até um altar secreto e seilá, ele é um npc normal que vende backpack/rope/shovel mas qnd dá 18h de um certo dia ele visita a tumba e volta pra cidade (e vc tem que seguir ele pra descobrir isso). SUCH RPG!!!!!
Sei lá, eu animei demais com isso >.<
As possibilidades são tantas que eu não consigo nem me conter AUHIEUHIUHI dá pra fazer MUITA coisa cara, inclusive vou tentar trazer os scripts relacionados à essa função pra vocês.
Se você gostou das idéias, sério, não clica em gostei no meu tópico, vai lá no tópico do elwyn e clica... ele é o verdadeiro mito que resolveu isso.
-
TioItachi deu reputação a Orochi Elf em [OTC] Script Installer v0.1[OTCodes] Script Installer v0.1
Salve galera do TibiaKing, hoje venho apresentar pra vocês o Script Installer. Eu criei este software na intenção de ajudar os mais novatos no assunto. Bom a função deste programa é instalar o script automaticamente no servidor.
Caso tenha bug, reporte aqui no tópico mesmo por favor.
- Mini LOG
- A cada novo processo realizado pelo programa, é adicionado ao LOG.
- Programa inteligente -> Ele detecta qual é o tipo de script (Action/Talkaction entre outros)
- O programa só está funcionando com os seguintes tipos (Action/CreatureScriot/GlobalEvents/Movements/Talkactions)
Vídeo demonstrativo da versão 0.1
https://www.youtube.com/watch?v=VJAeQ42Fndo&feature=youtu.be
Download do programa está anexado ao tópico.
OTC Script Installer.rar
-
TioItachi deu reputação a Orochi Elf em Catch Window v1.3[MOD] Catch Window v1.3
Bom.. todos conhecem a nova janela, que quando algum jogador captura um pokemon, que nunca capturou antes, abre na tela informando quantas pokebolas (PokeBalls, GreatBalls, SuperBalls e UltraBalls), o jogador gastou para capturar aquele pokemon, e mostra também quanto de experiencia o jogador ganhou por capturar aquele pokemon.
Instalação.
Por enquanto o PDA, é o único servidor que está adaptada no tópico, se alguém adaptar para outros servidores, e quiser compartilhar, será muito bem vindo. Obrigado
Pokemon Dash Advanced
Vá na pasta Lib / Catch System.lua, e procure por:
doAddPokemonInCatchList(cid, poke) E abaixo adicione:
CW_Count(cid, poke, typeee) CW_Caught(cid, poke) Agora procure por:
doIncreaseStatistics(poke, true, false) E abaixo adicione:
CW_Count(cid, poke, typeee) Agora, vá na pasta Lib / Crie um arquivo chamado "CatchWindow_lib.lua".
E dentro adicione -> Link Direto (PasteBin) <- Atualizado v1.3 !
Agora baixe o arquivo"CatcherWindow.rar", e extrai-a os arquivos dentro da pasta MODS da pasta do OTClient.
Editando...
No arquivo que voce colocou na LIB, tem uma tabela chamada "CW_Pokes", lá voce adiciona os pokemons e os configura.
["bulbasaur"] = {DB_Balls = 500001, DB_PK = 900001, ID_Portrait = 11989, P_Experience = 5000}, Legenda:
[NomeDoPokemon] = {DB_Balls = Numero da storage, que irá ficar salvo as balls usadas.
DB_Pk, Numero da storage, que irá ficar salvo se o pokemon foi capturado ou não.
ID_Portrait = Item ID do Portrait de cada pokemon
P_Experience = A quantidade de experiencia que o jogador irá ganhar ao capturar este pokemon.}
Vídeo:
https://www.youtube.com/watch?v=9ERSelYANFY&feature=youtu.be
Galera, eu estou com uma meta de conseguir 30 rep+ neste tópico, GO!
Créditos: Tony Araújo (OrochiElf) 100%
catcherWindow.rar
-
TioItachi deu reputação a haith em HealBot 2.0Bom dia, a um tempo atrás eu havia iniciado um projeto e não contente como ele era de não poder ser expanssivo fui atrás de criar algo que ao invez de possibilitar apenas 3 healaers como antigamente possibilite de 5 até o infinto kapsoakspoak, mentira só vai até 9 por enquanto pelo fato de eu não conseguir criar uma prioridade maior que 9 por que não dava para comparar depois pra fazer a seleção...
Mas em fim vamos as novidades e dessa vez estarei disponibilizando para download na versão 10.30...
Lembrando que todas as minhas ações no bot são completamente indetectaveis pois fiz o pressionamento de teclas em absolutamente qual quer função! nenhuma funciona sem configurar as hotkeys corretamente exceto o Sio que ele deixa você escolher se quer usar HK ou quer que ele escreve!
Lembrando que o projeto foi feito em Delphi e eu pretendo continuar ele e sempre ter idéias para melhorar a jogabilidade...
Estou postando primeiro no TibiaKing pois foi com o forum da qui que eu consegui desenvolver o HealBot
Alo ADM's desculpe se postei algo errado não sou muito bom com mexer em fóruns!!!! mais caso precise editar algo é só avisar!
~~~~~~~~~~~~~~~~~~~~~~~~~~ Download e Scan's ~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~ Vamos ao Heal Bot ~~~~~~~~~~~~~~~~~~
Ao abrir o Bot como sempre ele informa em qual cliente irá funcionar... é sempre no ultimo que foi aberto então... funciona em MC normalmente.
Versão 10.31 e inferiores
Aqui é a cara de apresentação do bot, sempre verifique se as informações estão certo pois caso esteja errado provavelmente vai dar algum erro nas funções, nunca está errado mais vai saber né...
Heal Sem configurar...
Heal configurado com todas as verificações possíveis humanamente ao bot! Conforme você vai adicionando a prioridade ele vai ordenando de 1 até 9 lembrando que 1 deve ser a mais importante e 9 um Exura por exemplo no meu caso foi, Exura Vita, Exura Gran, Exura...
- Aqui contando com o novo sistema juicer phillphis valita de encher a mana de X até Y apenas se descer de X! para quem não entendo se você coloca 15% até 60% ele só começa a encher a mana em 15% e vai enchendo até chegar em 60%...
-Com mais funções de treinar ml runando e ainda depois que acabar o soul começar a soltar sei la utana vid, o que tiver na hotkey,
-Eat foot ele faz um random de 1 a 3 minutos e aperta o hotkey podendo ser até 3x em 1min como também 3x em 3min vai depender da loucura do bot de fazer os cálculos com os hex do seu computador!
- Auto Spells é pra tipo cansei de soltar Utana vid a cada tempo se coloca ali a magia e o time dela, cansei de usar Utura gran se coloca o hotkey e o tempo que leva... bem facil
Função de curar os amiguinhos...
Funciona de 2 jeitos... você pode configurar o bot deixando WRITE SIO " na hora de selcionar o hotkey que ele vai escrever letra por letra Exura sio "Tibia King (lembrando que pode estar escirot TiBIA KINg tudo no maiusculo e minusculo que ele reconhece só não pode estar escrito errado!)
E também pode configurar com Hotkey, f1,f2,f3, shift 12... o que quiser com as hotkey é mais seguro pois se você digita algo em cima do sio ele digita e manda tudo tipo Exura Sio "tibiaking pkpkpk corre negada...
No demais tudo certo funciona perfeitamente e é claro LEIAM AS CONDIÇÕES DE HEALAR!!!!!!
Tools...
Aqui temos varias funções de auto spells... lembrando que as funções de Auto spells que contem para selecionar a mana significa que você pode usar inumas magias e por isso é preciso editar a mana...
Anti-idle faz seu char girar e ficar para baixo em um random de 3 a 7 minutos
Auto enter se seu char for desconectado ele apenas aperta enter para entrar de novo nada muito sofisticado
Life Crystal Exchanging serve para você trocar seus 200 life crystal por life ring apenas abrindo o chat com o npc e apertando no start que ele faz tudo sozinho!
Cpinter Experience serve para contar a exp que você fez numa hunt ou algo do tipo... basta clicar em GET EXP e depois ativalo que ele começa a contar
O Walk Better ainda não arrumei algo para funcionar corretamente e sem usar ferramentas que dão ban...
Player target
Na minha principal idéia era fazer um puta combo de sd que arrancasse a cabeça de tudo mundo mas acabou não funcionando em alguns computadores... Então por enquanto ainda não funciona direito apenas se você ja tiver clicado no player ele aperta é claro o botão da runa ou exevo gran mas flam sei la o que se vai colocar ai!
Salvando tudo isso que foi configurado....
Basta clicar em Save On Character Name e depois quando entrar de novo é claro Load From Character Name
Ele salva esse arquivo aonde você executou o bot então se você abriu da área de trabalho ele vai salvar o arquivo la... se você jogou o .exe do bot em uma pasta ele salva la... e é obvio não vai carregar se não estiver na mesma pasta
Logo após salvar ele fazer um arquivo igual a esse é claro com o nome do seu char!
Fim.
Usem para diversão!
-
TioItachi deu reputação a Thayam em Thayam's Show OffFalae nação TK!
Venho vendo muitos vídeos e tutoriais dos nossos amigos aqui do fórum e me deu vontade (até necessidade devido a um projeto em andamento) de aprender sprite!
Posso citar como minhas inspirações:
Way20
Elder
Nodgard
Daniel
e mais uns que eu não lembro o nome agora!
Resolvi trabalhar um pouco na questão de coloração, pois vejo que é o grande problema para usuários que estão começando a spritear e trabalhei em um flame do ataque do Charizard! E também na coloração do Shiny Lucario (já que meu servidor não possui essa sprite)!
OBS: O desenho do flame e do lucario não são meus, eu somente alterei as cores e tentei aplicar alguns conceitos que vejo no fórum e trouxe para saber qual a opinião de vocês!
Segue imagens:
Flame Mega Zard:
Shiny Lucario:
(Ingame ficou muito daorinha *-*)
EDIT:~
Sereia feita para o Brundelicia (ainda em aprimoramento)
Sereia 2.0
Tanque de mergulho feito para o oiuhygwueuho
Gengarite (mega stone para mega evoluir gengar)
Oshawott feito para o xddidixd
Rubi feito para ajudar o gabisa
Diamante feito também para ajudar o gabisa
Esmeralda lapidada
Espada para o gabisa
Thayam's Shield
Brazilian's Armor
Capitão América's Shield:
Escudo para brunds:
Espada Elder:
Gostaria da opnião de vocês, e que vocês pudessem me dizer no que errei e no que eu posso trabalhar para aperfeiçoar minhas habilidades cada vez mais!
OBS2: O USO NÃO É LIVRE POR ENQUANTO
Depois que eu terminá-los e chegar a um resultado totalmente satisfatório estarei disponibilizando eles e outros para vocês!
E ai, o que acharam? Gostaria muito da opinião de todos e se possível dos meus inspiradores!
Grande abraço a todos!
Créditos:
A magia utilizada foi o Exevo Gran Mas Flam do Tibia
Sprites do flame e do Lucario foram pegas do servidor Pyrus OT (godxande)
Coloração (Baseada na da PxG, mas feita por mim, uso não permitido das imagens)
-
TioItachi deu reputação a Bruno Minervino em Wand of ElementsIntrodução:
É uma wand que ataca vários elementos aleatoriamente, porém não somente isso, você pode alterar o elemento dela com uma talkaction.
Instalação:
Vá até data/weapons/scripts e crie um arquivo chamando wandelementos.lua e coloque o seguinte conteúdo:
local min, max = 1700,1900 --Ataque mínino e ataque máximo local w = { [1] = {ef = 36, sh = 3, dmg = COMBAT_FIREDAMAGE}, [2] = {ef = 42, sh = 28, dmg = COMBAT_ICEDAMAGE}, [3] = {ef = 46, sh = 38, dmg = COMBAT_POISONDAMAGE}, [4] = {ef = 17, sh = 31, dmg = COMBAT_DEATHDAMAGE}, [5] = {ef = 47, sh = 35, dmg = COMBAT_ENERGYDAMAGE}, [6] = {ef = 36, sh = 31, dmg = COMBAT_PHYSICALDAMAGE}, [7] = {ef = 49, sh = 37, dmg = COMBAT_HOLYDAMAGE} } function onUseWeapon(cid, var) local effect = getPlayerStorageValue(cid, 4561) local target = getCreatureTarget(cid) if target ~= 0 then local wx = w[effect] or w[math.random(#w)] doSendDistanceShoot(getThingPos(cid), getThingPos(target), wx.sh) addEvent(doAreaCombatHealth, 100, cid, wx.dmg, getThingPos(target), 0, -min, -max, wx.ef) end return true end Altere o min e max de acordo com sua necessidade.
Agora vá em data/weapons/weapons.xml e coloque o seguinte conteúdo:
<wand id="7424" level="100" mana="30" event="script" value="wandelementos.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="5" showInDescription="0"/> <vocation id="6" showInDescription="0"/> </wand> Altere o id, level e mana de acordo com sua necessidade.
Agora vamos configurar a talkaction que troca os elementos.
Vá até data/talkactions/scripts e crie um arquivo chamando elementos.lua e coloque o seguinte conteúdo:
local config = { wand_id = 7424, --ID da wand types = { ["all"] = -1, --Ataca os elementos aleatoriamente ["fire"] = 1, ["ice"] = 2, ["poison"] = 3, ["death"] = 4, ["energy"] = 5, ["physical"] = 6, ["holy"] = 7 } } function onSay(cid, words, param) local wand_left = getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid local wand_right = getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid if wand_left ~= config.wand_id and wand_right ~= config.wand_id then doPlayerSendCancel(cid, "Voce deve estar equipado com uma ".. getItemNameById(config.wand_id) .." para usar este comando.") return true end if config.types[param] then setPlayerStorageValue(cid, 4561, config.types[param]) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Sua wand ira atacar ".. param .. ".") else local str = "" for i, _ in pairs(config.types) do str = str .. ", ".. i end doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Os elementos disponiveis sao: ".. string.sub(str, 3, #str) ..".") end return true end Altere o wand_id conforme configurado em weapons.
Agora vá em data/talkactions/talkactions.xml e coloque o seguinte conteúdo:
<talkaction words="!elemento;/elemento" event="script" value="elementos.lua"/> Exemplo de funcionamento:
https://www.youtube.com/watch?v=HHmZ1RpsrD0
Gostaria de deixar um agradecimento especial para MaXwEllDeN, pela ajuda.
-
TioItachi deu reputação a xWhiteWolf em Darkness Pact QuestHoje vou ensinar vocês a fazer uma quest com bastante RPG (e com um pouquinho de esforço talvez o melhor sistema já visto num OTSERV!!)
É uma quest que você tem um determinado tempo pra matar um monstro e entrar num teleporte ou a passagem será bloqueada
"tá, mas oque difere essa quest de qualquer script de arena que tenha aí pelo fórum?"
na verdade nada, mas no meu server eu coloquei um tempo bem ridículo (8 segundos) e é tecnicamente impossível chegar do outro lado.
"então você fez uma quest que não dá pra fazer, é isso mesmo?"
não meu caro amigo, é uma quest que foi feita pra ser pensada. Um dos players entra na quest e termina ela, daí outro player ativa a alavanca e ele passa.. fazendo com que o pessoal só consiga passar com a ajuda de um amigo. Se você conseguir trabalhar em equipe em prol de um prêmio a sua recompensa é a oportunidade de fazer um pacto com as trevas.
"masoque??"
isso mesmo que você entendeu, você ganha a chance de abrir mão da sua vida (literalmente) pra receber uma spell nova.
~~ Hoje eu vou ensinar a reproduzirem esse sistema caralhudo no server de vocês:
Tudo começa no map editor quando você vai fazer uma área + ou - igual a essa e colocar os seguintes actions/unique ids
Agora vamos aos scripts:
actions\scripts\newquest.lua
Feito isso você vai precisar preparar uma sala aonde o player será teleportado caso ele consiga passar e coloque uma alavanca nessa sala.
Na alavanca você deve colocar o actionid 6102 e uma plaquinha explicando sobre o pacto
daí você adiciona isso no actions.xml
<action actionid="6102" script="alavanca de magia.lua"/> e crie o script 'alavanca de magia.lua' que deverá conter o seguinte:
Feito tudo isso agora só falta criar a magia Target Spell que no caso é essa daqui:
e colocar no spells.xml:
<instant name="Target Spell" words="exevo res" lvl="120" maglv="10" mana="500" exhaustion="3000" prem="0" needlearn="1" script="especiais/seguidor.lua"> <vocation id="6"/> <vocation id="7"/> <vocation id="5"/> <vocation id="8"/> </instant> FIM.
Agora você só precisa editar as actions pra rodarem de acordo com as posições do seu server então vamos às explicações:
SCRIPT1:
local tempo = 8000 ---- tempo até a porta fechar
local wall1 = {x=612, y=345, z=7, stackpos=1} -- local da primeira pedra
local pos1 = getThingfromPos(wall1)
local wall2 = {x=653, y=345, z=7, stackpos=1} --- local da segunda pedra
local pos2 = getThingfromPos(wall2)
local monster1 = {x=615, y=345, z=7, stackpos=1} --- local que cria o monstro, no caso eu uso o Juggernaut mas vc pode editar dentro do script
local posmonster1 = getThingfromPos(monster1)
local monster3 = {x=654, y=345, z=7, stackpos=1} --- Ultima posição antes do teleporte, serve pra remover o monstro
local idparede = 9788 --- id do obstáculo q será criado
local alavanca = {x=610, y=344, z=7, stackpos=1} -- POSIÇÃO DA ALAVANCA
local alavancapos = getThingfromPos(alavanca) SCRIPT2:
local topos = {x=609, y=345, z=7, stackpos=1} -- posição que vai ser teleportado caso clique na alavanca de 'FAIL QUEST'
Espero que vocês tenham curtido
Aqui tem mais duas imagens pra vocês
Alavanca:
Magia:
EXPLICANDO A MAGIA: Os morcegos seguem a direção que você tá olhando, se vc tiver um target eles seguem o target.
-
TioItachi deu reputação a Coyoty em [Movement] Ponte por Level !Criei o script para ajudar um membro do forum e vou estar disponibilizando para outros players que precisarem!
Script:
function onStepIn(cid, item, position, fromPosition) local level = 2 if getPlayerLevel(cid) ~= level then doTeleportThing(cid, fromPosition, true) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) doPlayerSendCancel(cid,"Só players de level " .. level .. " podem passar.") else doTeleportThing(cid, {x = getPlayerPosition(cid).x - 1, y = getPlayerPosition(cid).y, z = getPlayerPosition(cid).z}) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) end return TRUE end Na pasta "Data/movements/movements.xml" adicione: <movevent event="StepIn" actionid="id" script="NOME.lua"/>
Em id, você coloca no RME clicando com o direito na tile e adicionando em "actionid" !
E em NOME, um nome qualquer para o arquivo(o mesmo que vc usou para adicionar o script).
Lembrando que -1 no x o player vai para <, +1 vai para >
No y: -1 para cima, +1 para baixo
-
TioItachi deu reputação a Godfather em [NPC] Mensageira - Players deixam mensagens num bloco de notasOi. Eu fiz esse NPC para que ele possa deixar mensagens em um bloco de notas para que os administradores vejam. É uma forma de comunicação com os jogadores.
[data/npc/Mensageira.xml]
<npc name="Mensageira" script="data/npc/scripts/messenger.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="347" head="20" body="100" legs="50" feet="99" corpse="2212"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|. Eu tenho a função de deixar mensagens para que o administrador possa ler mais tarde, como críticas, ou simplesmente um bom dia. Gostaria de deixar uma {mensagem}?"/> </parameters> </npc> [data/npc/scripts/messenger.lua]
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local moneyTo = {} local playerTo = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end if talkState[cid] == 1 then selfSay("A mensagem \""..msg.."\" foi deixada. Obrigado pela contribuicao! Sua mensagem sera revisada por um administrador.", cid) local texto = "" local read = io.open("mensagens.txt", "r") texto = read:read("*all") read:close() local write = io.open("mensagens.txt", "w") write:write(texto.."["..getPlayerName(cid)..", "..os.date("%c").."]: \""..msg.."\"\n") write:close() talkState[cid] = 0 elseif msgcontains(msg, 'mensagem') then selfSay("Escreva a mensagem que voce gostaria de deixar. Pede-se rever o texto e escrever claramente o que deseja. Spam causa banimento por IP.", cid) talkState[cid] = 1 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Aí você deixa ele no templo, sei lá, faz qualquer coisa Só pra avisar, o mensagens.txt fica na pasta raiz do servidor, lá onde tem config.lua -
TioItachi deu reputação a thalia em [NPC] Mate o monstro e complete sua tarefa.Olá (: , estou aqui de novo com um npc bom para servidores RPG'
~~> Como funciona? <~~
Você fala com o npc, o npc sumona um monstro e após matar este monstro,
ele te dá uma reconpensa.
~~> Como Instalar? <~~
-> Vá em data/creaturescripts/creaturescripts.xml e add essa tag:
<event type="death" name="NPC" event="script" value="npcquest.lua"/> ->Agora vá em creaturescripts/scripts e crie um novo arquivo com o nome npcquest.lua e bote isto dentro: function onDeath(cid, corpse, killer) local monstName = "Monk" -- nome do monstro local Storage = 9755 -- nao mude if isMonster(cid) then if string.lower(getCreatureName(cid)) == string.lower(monstName) then setPlayerStorageValue(killer[1], Storage, 1) doCreatureSay(killer[1],'Você completo sua tarefa.',TALKTYPE_ORANGE_1) end end return TRUE end ->Agora você vai no xml do monstro que você escolheu e lá no final do script antes do </monster>, você add: <script> <event name="NPC"/> </script> ->Agora em data/npc, crie um novo arquivo com o nome Jhow.xml e bote isto dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Jhow" script="data/npc/scripts/jhow.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="138" head="96" body="95" legs="0" feet="95" addons="0"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|, voce quer testar suas habilidades?" /> <parameter key="module_keywords" value="1" /> </parameters> </npc> ->Agora vá em npc/script e crie um novo arquivo com o nome de jhow.lua e bote isto dentro: local nomeMonst = "Monk" -- Nome do mosntro que ele vai sumonar local itemid = 2150 local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid if getPlayerStorageValue(cid, 9755) == -1 then if(msgcontains(msg, 'yes')) then selfSay('Mate este monstro para completar sua tarefa.', cid) doCreateMonster(nomeMonst,getThingPos(cid)) talkState[talkUser] = 1 end return true end if getPlayerStorageValue(cid, 9755) == 1 then selfSay('Você matou o monstro e ganhou um item.', cid) doPlayerAddItem(cid, itemid,1) setPlayerStorageValue(cid, 9755,2) talkState[talkUser] = 0 return true end if getPlayerStorageValue(cid, 9755) == 2 then selfSay('Você já fez esta tarefa.', cid) talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) ->Agora volte lá em creaturescripts/scripts/ e procure por login.lua e antes do ultimo return true add isto: registerCreatureEvent(cid, "NPC")
Pronto amigo! NPC instalado :},
COMENTEM Por favor
-
TioItachi deu reputação a caiooldschool em [ELFBOT] Hotkeys & Shortkeys By Caio' Old SchoolAll Vocations Hotkey's. " Essas Hotkeys Abaixo são pra todas as vocações "
-------------------------------------
movesw -> num1
moves -> num2
movese -> num3
movew -> num4
movee -> num6
movenw -> num7
moven -> num8
movene -> num9
Dash -> Qualqer Tecla.
----------------------------------
exivalast | wait 1000 -> num5 . Essa hotkey vai exivar o ultimo player Exivou.
exivatarget | wait 1000 -> Exiva no utlimo target.
auto 200 exivatarget | wait 1000 -> auto exiva target
auto 200 exivalast | wait 1000 -> auto exiva.
auto 200 say exani hur up -> Qualquer Tecla . Magia para subir
auto 200 say exani hur down -> Qualquer Tecla . Magia Para Descer
spyup -> num+
spydown -> num-
----------------------------------
Shortkeys -> A diferença entre Shortkeys e hotkeys é, em vez de usar uma tecla para ativar , necessita escrever no Default do tibia pra ativar.
auto 200 listas 'Strong Haste' | stronghaste -> Renova Seu " Utani Gran Hur "
auto 200 listas 'Mana Shield' |manashield -> Renova Seu " Utamo Vita "
safe soulf enemy | wait 1000 -> Vai tacar soul fire no seu inimigo
safe soulf target | wait 1000 -> Vai tacar soul fire no seu target
auto 100 keepmagwall -> Vai ficar tacando mw no ultimo mw que vc usou
safe magwall enemy | wait 1000 -> Essa Hotkey Jogara 1 mw na frente do Enemy. (Lembra o Enemy Tem Que Estar Adicionado Em " LIST ")
safe magwall target | wait 1000 -> Essa jogara 1 mw na frente do seu target.
auto 200 listas 'Stack' | stackitems -> agrupa itens stacaveis
----------------- KNIGHT_HOTKEYS -----------------
auto 200 listas 'Fierce Berserk - Whirlwind Throw' | if [$monstersaround.1 >= 2] if [$mppc > 10] ifnoplayeronscreen say 'Exori Gran' | if [$monstersaround.2 = 1] if [$mppc > 10] isattacking say 'Exori Hur'
auto 100 listas 'GHP' | if [$hppc <85] say 'Exana Mort' | ghealth 70 self -> Cura 85% da vida com Exana Mort e usa ghp com 70%
auto 100 listas 'UHP' | if [$hppc <85] say 'Exana Mort' | uhealth 70 self -> Cura 85% da vida com Exana Mort e usa uhp com 70%
auto 200 listas 'MP' | if [$mppc <=75] mana self
auto 200 listas 'Anti Paralyze' | healparalysis Exana Mort
auto 200 listas 'Strong Haste' | charge
auto 200 listas 'Haste' | haste
auto 200 listas 'Blood Rage' | if [$inpz == 0]{say utito tempo | wait 10800 | say Utito Tempo | wait 200 say Utito Tempo} -> Auto Blood Rage.
----------------- PALADIN_HOTKEYS -----------------
auto 100 listas 'HP' | if [$hppc <90] say 'Exura San' | gsmana 70 self
auto 200 listas 'MP' | if [$mppc <=70] gsmana self
auto 200 listas 'Anti Paralyze' | healparalysis Exura San | safe uhpc 45 friend
auto 200 listas 'Divine Caldera - Divine Missle' | if [$monstersaround.2 >= 2] if [$mppc > 10] ifnoplayeronscreen say 'Exevo Mas San' | if [$monstersaround.2 = 1] if [$mppc > 10] isattacking say 'Exori San'
auto 9800 listas 'Strong Haste' | say 'Utamo Tempo San'
auto 200 listas 'Haste' | haste
auto 20000 listas 'Ammo' | refillammo -> Refil Munição (Lembra que a bp deve estar aberta com as munições) (1000 = 1 SEGUNDO , pode trocar o tempo)
----------------- SORCERER_HOTKEYS -----------------
auto 200 listas 'Auto UE' | if [$monstersaround.3 >= 2] if [$mppc > 10] ifnoplayeronscreen say 'Exevo Gran Mas Vis' | if [$monstersaround.2 = 1] if [$mppc > 10] isattacking say 'Exori Vis'
auto 200 listas 'Auto UE and SD' | if [$monstersaround.3 >= 2 && $mp > 1200 && $playersaround.6 == 0]{say 'exevo gran mas vis'} | isplayeronscreen useoncreature 3155 target
auto 100 listas 'HP' | if [$hppc <90] say 'exura vita'
auto 200 listas 'MP' | if [$mppc <=80] gmana self
auto 200 listas 'Anti Paralyze' | healparalysis exura vita | safe uhpc 70 friend
auto 200 attack lasttarget | sd target | wait 500 -> Vai fica usando sd no ultimo target
----------------- DRUID_HOTKEYS -----------------
auto 200 listas 'Auto UE' | if [$monstersaround.3 >= 2] if [$mppc > 10] ifnoplayeronscreen say 'Exevo Gran Mas Frigo' | if [$monstersaround.1 = 1] if [$mppc > 10] say 'Exori Frigo'
auto 200 listas 'Auto UE and Rune' | if [$monstersaround.3 >= 2 && $mp > 1200 && $playersaround.6 == 0]{say 'exevo gran mas frigo'} | isplayeronscreen useoncreature 3155 target
safe attack target | sd target | wait 1000
safe attack enemy | sd enemy | wait 1000
auto 200 listas 'Anti Paralyze' | healparalysis exura vita | safe sio 70 friend
safe attack enemy | paralyze enemy | wait 1500
safe attack target | paralyze target | wait 1500
auto 200 attack lasttarget | sd target | wait 1000
auto 200 attack target | paralyze target | wait 500
----------------- OTHERS_HOTKEYS -----------------
auto 100 listas 'Auto UE' | if [$monstersaround.4 >=3 && $playersaround.10 == 0] {say 'MAGIA'} -> Usa MAGIA so quando nao tem ngm na tela
auto 200 listas 'Gold Coin - Platinum Coin' | stackitems | if [ $itemcount.3031 >= 100 ] equipbelt 3031 | if [$beltslot.id == 3031 && $beltslot.count == 100] useitem 3031
auto 200 listas 'Platinum Coin - Crystal Coin' | stackitems | if [ $itemcount.3035 >= 100 ] equipbelt 3035 | if [$beltslot.id == 3035 && $beltslot.count == 100] useitem 3035
auto 200 | listas 'Crystal coin - Gold Nugget' | stackitems | if [ $itemcount.3043 >= 100 ] equipbelt 3043 | if [$beltslot.id == 3043 && $beltslot.count == 100] useitem 3043
auto 200 if [$mppc <= 60] equipboots 6529 | if [$mppc >= 85] equipboots 3079 -> Hotkey Softboots mppc <=60 , é mana q vai ekipar , >= 85 é a mana desejada para tirar e por a boots desejavel
auto 400 if [$bootsslot.id == 6530 && $winitemcount.6529 == 0] equipboots 3079 -> Se a Soft Acaba troca pela BOH
auto 400 if [$bootsslot.id == 9020 && $winitemcount.9019 == 0] equipboots 9019
auto 100 if [$itemcount.7378 < 5] {playsound 'defaultmessage.wav' | wait 2500} -> Alarme para itens [ 7378 ] éo ID do item poem qlqr ID , e <5 é a quantidade pode mudar pra qnts vc quizer
auto 100 if [$itemcount.'mana potions' <= 5] {setfollowwaypoints off | if [$battlesign == 0] logout | foreach 'shootablemonsters' $kill {if [$kill != 0] {setattackmode 'offensive' 'chase' | attack $kill.id | useoncreature ID $kill.id | break}}} -> Mate todos os monstros e Logue se estiver com menos de 5 mana potions. ( so mudar o nome do item e o valor desejavel )
auto 100 if [$itemcount.'mana potions' <= X] {playsound 'lowmfs.wav' | flash} | if [$itemcount.'mana potions' == 0] countitems 268 -> Alerta se estiver com pouca mana potions ( Onde ta x voce coloca a quantidade e 268 é o ID entao troque pelo o ID do item )
auto 1000 listas 'Auto UE' | if [$monstersaround.4 >= 5 && $mp > 1200]{say 'exevo gran mas vis'} -> monstros em volta = monstersaround.4 ( esse 4 sao os sqms ) pode mudar pra qnts quiser
lembrando q a tela so tem 7 sqm pra kd direçao ( creio q é 7) e esse >=5 sao qnts monstros em volta é necessarior pra usar a spell é a quantidade de mana necessaria pra usar a spell
auto 100 ifplayerattacking {if [$fileisline.'safelistpk.txt'.'$pk.name' == 0 && $pk.name != $name && $target != $pk] attack $pk.id} -> Revidar PK
auto 100 foreach 'newmessages' $msg if [$msg.content ? 'Loot of a Serpent Spawn:']{opengrounditem xxxx | wait 1000} -> Abrir corpo Onde tem os 'xxxx' coloca o id do corpo ( Editavel ) [ pode ser utilizado para serpent spawn ]
scrollview -> Permite que vc olhe alguns sqms fora da tela
auto 100 if [$playersaround.10 == 0 && $monstersaround.1 >= 1] { istargeting say 'Exori Gran' } | if [$playersaround.10 >= 1] { istargeting say 'Exori Hur'} -> Qd tive algum player na tela vai para de usar exori gran e passa usar exori hur
auto 10 listas 'Push MAX' | moveitemonground $posx [$posy-1] $posz $posx $posy $posz|moveitemonground $posx [$posy+1] $posz $posx $posy $posz|moveitemonground [$posx-1] [$posy-1] $posz $posx $posy $posz|moveitemonground [$posx-1] $posy $posz $posx $posy $posz|moveitemonground [$posx-1] [$posy+1] $posz $posx $posy $posz| moveitemonground [$posx+1] [$posy-1] $posz $posx $posy $posz|moveitemonground [$posx+1] $posy $posz $posx $posy $posz|moveitemonground [$posx+1] [$posy+1] $posz $posx $posy $posz -> ( puxa tudo ao redor para debaixo )
auto 200 if [ $itemcount.285 >= 1 ] dropitems 285 | wait 100 | if [ $itemcount.284 >= 1 ] dropitems 284 | wait 100 | if [ $itemcount.283 >= 1 ] dropitems 283 - Drop vial vazio
auto 100 ifplayerattacking {if [$fileisline.'safelistpk.txt'.'$pk.name' == 0 && $pk.name != $name && $target != $pk] attack $pk.id} -> Revidar PK
auto 200 if [ $itemcount.285 >= 1 ] dropitems 285 | wait 100 | if [ $itemcount.284 >= 1 ] dropitems 284 | wait 100 | if [ $itemcount.283 >= 1 ] dropitems 283 -> Drop Vial Vazio
auto 100 listas 'Anti- Push' | setcolor 0 200 500 || dropitems 283 284 285 | ifnot [$topitem.$posx.$posy.$posz == 3031] dropitemsxyzamount $posx $posy $posz 3031 2 | ifnot [$topitem.$posx.$posy.$posz == 3492] dropitemsxyzamount $posx $posy $posz 3492 2 -> Anti-Push
auto 100 isnottargeting {if [$followed.name != 'NAME FRIEND'] follow 'NAME FRIEND'} -> Vai Dar Fallow nessa pessoa ( Mude NAME FRIEND para o nome da player )
auto 100 listas 'Reconnect' | if [$hp == 0] {xlog | if [$connected == 0] {reconnect | wait 2000 | gotolabel start}} else {if [$connected == 0] {reconnect | wait 5000}}
auto 180000 reconnect -> Auto reconnect ( 60000 = 1 MiNUTO )
auto 200 setoutfitcolor '$name' $self.color1 $self.color2 $self.color3 $self.color4 3 -> O outfit que vc esta usando fica Full
auto 100 if [$curmsg.sender == 'Name Do Combo Leader' && $curmsg.content == 'Magia Que o Combo Leader Vai Usa' && $curmsg.isdefault] {say 'Magia Que vc Vai Usar' | wait 1900} -> COMBO , da pra faze COMBO UE E O QUE QUIZER.
if [$targetingon || $caveboton] {statusmessage 'ElfBot NG - CaveBot Paused' | stopattack | settargeting off | setcavebot off | wait 400 | end} | if [$targetingon == 0 || $caveboton == 0] {statusmessage 'ElfBot NG - CaveBot Resumed' | settargeting on | setcavebot on | wait 400} -> Pausa Cavebot
----------------- TRANING_AFK -----------------
auto 100 if [$mp >=Mana] say 'Magia' -> So trocar o numero que vc deseja da mana e a magia
auto 100 listas 'Anti-Idle' | if [$self.dir == 0] {set $dir 0 | set $firdir 'turnn' | set $secdir 'turns'} | if [$self.dir == 1] {set $dir 1 | set $firdir 'turne' | set $secdir 'turnw'} | if [$self.dir == 2] {set $dir 2 | set $firdir 'turns' | set $secdir 'turnn'} | if [$self.dir == 3] {set $dir 3 | set $firdir 'turnw' | set $secdir 'turne'} | if [$time > $idletime] {exec $secdir | wait 1500 | exec $firdir | wait 1500 | if [$self.dir == $dir] $idletime [$time+60]} -> ANTI IDLE
auto 30000 eatfood -> Comer Sozinho
Anti Idle - auto 1000 listas 'Anti Idle' | set $MIN 13 | turns | wait 300 | turnn | wait 300 | turne | wait 300 | turnw | wait [$MIN * 60000] -> ANTI IDLE
----------------- NAVIGATION -----------------
auto 100 displaymap -> Você pode ver exatamente onde estão seus amigos
auto 100 altnavdisplay -> Você também pode ver onde seus amigos estão sem o mapa
auto 1000 refillmana MP distance -> Cura o companheiro bom pra mages
auto 1000 500 3 -> 500 = o x mana q vc ker q ele cure , 3 sao os sqm q vc vai xega perto do truta
auto 1000 refillhealth HP -> Cura os truta mais usado pelos o kina pq é HP
auto 1000 1300 2 -> 1300 é o tanto x q ele vai curar e o 2 é o sqms
navsay 'combo $enemy.name' -> se for dito por algum líder, irá fazer com que todos os jogadores conectados ao Navigation e com "Trigger Aimbot" habilitado disparem uma SD sobre o melhor target inimigo.
-
TioItachi deu reputação a Orochi Elf em Evitando gambiarrasFala ae galera, bom.. eu tava vendo os scripts de um servidor de pokemon aqui, o sistema de heal (da Nurse Joy).
E quando eu abro o arquivo lua, eu me deparo com isso.
Então, eu vou e faço de um modo, que deixa o script pequeno e leve.
Desta forma, é muito mais fácil editar(caso necessário), e também pra ler.
-
TioItachi deu reputação a Stigal em Como conectar em um VPS Windows?!1. Conexão de Área de Trabalho Remota
Se você contratou um servidor de vps com sistema operacional "Windows", para conectar você poderá utilizar uma ferramenta fornecida pelo mesmo chamado "Microsoft Remote Desktop" que possibilita você a se conectar ao seu servidor. Para utilizar o aplicativo de conexão ao servidor, basta acionar as teclas "Windows" e "R" ao mesmo tempo e, quando aparecer a janela "Executar", digine "mstsc.exe" e basta pressionar o botão "ok", conforme a imagem abaixo:
2. Aguarde até o aplicativo carregar e certifique-se de que a seguinte janela apareça na tela:
Agora digite o endereço do seu servidor (fornecido anteriormente) e clique em "Conectar". Nota: O endereço do servidor é formado pela designação do serviço, seguido da identificação da instancia do servidor e o domínio da empresa que você contratou.
(Exemplo: vps-01.serversoft.com.br).
3. Após “Conectar”, aguarde até que o seu servidor solicite as credenciais de acesso, que você também recebeu anteriormente.
Para um primeiro acesso coloque o usuario .\administrator e sua Senha, (.\administrator indica uma nova conexão) Nota: para servidores em plataforma Windows, normalmente o usuário fornecido é o “administrator” e a senha padrão. Importante: por ser uma senha conhecida, recomendo a troca imediata.
4. Aguarde até que a conexão seja estabelecida e a área de trabalho remota seja apresentada, conforme a figura a seguir:
Observe o número no campo superior direito da tela. Essa é a identificação de sua máquina virtual.
Espero que tenham entendido e gostado.
Atenciosamente, Stigal.
-
TioItachi deu reputação a Hona em Criando instalador para ClientCriando instalador para Client
Download:
baixaki,mediafire,4shared
Abra o aplicativo [ Install Creator ].
Depois você vera uma tela em cima do aplicativo.
Click em avançar.
Agora escolha os arquivos lembrando elis devem estar em uma pasta.
(o programa ira copiar tudo que estiver dentro da pasta)
Depois de escolher os arquivos.
Escolha o idioma de sua preferencia.
Escolha o nome do programa.
Depois click em avançar.
Agora vc escolhe se seu instalador sera full (tela cheia)ou small (pequeno).
Depois click em avançar.
Olhe a imagem abaixo e façam o ki estar nela.
Depois de configurar click em avançar.
Agora coloque tudo sobre o aplicativo que vc quer criar.
Depois click em avançar.
Agora coloque a descrição da sua licença.
Depois click em avançar.
Agora escolha o local a onde o seu jogo sera salvo depois de instalado no pc do jogador.
Depois click em avançar.
Agora vamos criar um atalho para seu arquivo.
Procure seu arquivo .exe na pasta.
Agora coloque o nome do seu atalho.
Depois marque a caixa que diz: Add desktop shortcut
Agora click em avançar.
Aki deixe em branco.
Agora click em avançar
Agora selecione se quer ou não uninstaller.
Depois click em avançar.
Agora marque a caixa que diz do not build the install program
Agora clique em concluir.
Agora click em Build.
Agora escolha onde vai salvar o instalador.
Depois inicie o teste se ficou como vc queria.
Creditos: Adriano C
-
TioItachi deu reputação a Avuenja em DarkxPoke WebsiteAi o planejamento do DxP Website....
Espero comentários Obrigado!
-
TioItachi deu reputação a Jamison Collins em [Resolvido] [Ajuda] Storage Por tempoBem, tem esse modo aqui :
local daysvalue = 7 * 24 * 60 * 60 time = os.time() + daysvalue setPlayerStorageValue(cid, 13340, time) "daysvalue" está representando no caso, 7 dias.
Daqui a 7 dias, o player irá perder o storage 13340.
-
TioItachi deu reputação a Sammy em [Resolvido] [Ajuda] Storage Por tempoCara, sei faze isso por globalevent, mais não sei se é isso que você quer '-'
Script.lua
function onThink(interval, lastExecution) db.executeQuery("DELETE FROM `players_storage` WHERE `id` = 13501";") end Só ve pra mim se na tabela players_storage aonde fica a storage (a coluna), é "id" se não for troque no script acima.
Depois de criar o .lua faça o globalevents.xml
<globalevent name="delete interval="tempo" event="script" value="script.lua"/> Aonde tá tempo, coloque os segundos, lembre-se se eu servidor for em milesegundos coloca em milesegundos .-.
-
TioItachi deu reputação a Meu Ovo em [Resolvido] [Ajuda] Storage Por tempoDÚVIDA SANADA, REMOVIDO !