Ir para conteúdo

TioItachi

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    TioItachi deu reputação a Kolisium em [System] Frag System Pelo DB   
    Frags 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.
  2. Gostei
    TioItachi deu reputação a rohfagundes em [C++] Level Monster   
    ola =)
    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
  3. Curtir
    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
  4. Curtir
    TioItachi deu reputação a Vodkart em [Talkactions] Quest/Hunt Por "X" Tempo   
    faltava 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  
  5. Obrigado
    TioItachi deu reputação a JZDJ em Download Clients 11+ IP 127.0.0.1   
    Olá 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
  6. Gostei
    velho 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.
  7. Gostei
    TioItachi deu reputação a Elwyn em Tibia está zerado + preview [GPS SYSTEM]   
    Assim eu fico encabulado
  8. Gostei
    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.


     
  9. Gostei
    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
  10. Gostei
    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
  11. Gostei
    TioItachi deu reputação a haith em HealBot 2.0   
    Bom 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!
  12. Gostei
    TioItachi deu reputação a Thayam em Thayam's Show Off   
    Falae 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)
  13. Gostei
    TioItachi deu reputação a Bruno Minervino em Wand of Elements   
    Introduçã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.
  14. Gostei
    TioItachi deu reputação a xWhiteWolf em Darkness Pact Quest   
    Hoje 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.
  15. Gostei
    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
  16. Gostei
    TioItachi deu reputação a Godfather em [NPC] Mensageira - Players deixam mensagens num bloco de notas   
    Oi. 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
  17. Gostei
    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
  18. Gostei
    TioItachi deu reputação a caiooldschool em [ELFBOT] Hotkeys & Shortkeys By Caio' Old School   
    All 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 &amp;&amp; $winitemcount.6529 == 0] equipboots 3079 -> Se a Soft Acaba troca pela BOH
    auto 400 if [$bootsslot.id == 9020 &amp;&amp; $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 &amp;&amp; $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' &amp;&amp; $curmsg.content == 'Magia Que o Combo Leader Vai Usa' &amp;&amp; $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.
  19. Gostei
    TioItachi deu reputação a Orochi Elf em Evitando gambiarras   
    Fala 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.
  20. Gostei
    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.
  21. Gostei
    TioItachi deu reputação a Hona em Criando instalador para Client   
    Criando 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

  22. Gostei
    TioItachi deu reputação a Avuenja em DarkxPoke Website   
    Ai o planejamento do DxP Website....
    Espero comentários Obrigado!
     

  23. Gostei
    TioItachi deu reputação a Jamison Collins em [Resolvido] [Ajuda] Storage Por tempo   
    Bem, 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.
  24. Gostei
    TioItachi deu reputação a Sammy em [Resolvido] [Ajuda] Storage Por tempo   
    Cara, 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 .-.
  25. Gostei
    TioItachi deu reputação a Meu Ovo em [Resolvido] [Ajuda] Storage Por tempo   
    DÚVIDA SANADA, REMOVIDO !

Informação Importante

Confirmação de Termo