Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 03/29/14 em todas áreas

  1. Wend ll

    PDA By: Bolz:: Versão [GOD anna]

    Fala galera do xtibia, Hoje estou trazendo o servidor PDA by: Bolz editado por mim, Passei um bom tempo Editando ele Espero que gostem;; • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; └ Creditos. • Informações Basicas • • Erros do servidor • • PrintScreen • • Download's • Servidor PDA by: Bolz [Editado Por Mim ] http://www.4shared.com/rar/06OG8lB5ba/pda_by_bolz_verso_god_anna.html? OTClient:: http://www.4shared.com/rar/x5LgTQKLce/OTclient.html? @Atualizado 02/04/2014 • Menu: ├ Ediçoes; ├ Prints; ├ Download; • Edições / ajustes • • PrintScreen • • Download's • Servidor PDA by: Bolz [Editado Por Mim v2 ] http://www.4shared.com/rar/_lB31rwxba/PDA_By_Bolz_Verso_GOD_anna_v2.html? OTclient v2:: http://www.4shared.com/rar/aiqka_kQce/OTclient_v2.html? • Creditos • Slicer (pelo servidor) Brun123 (por alguns scripts, e por criar o pda) Stylo Maldoso (pelo mapa) Bolz (por editar Maior Parte do Server) Eu ( por Corrigir Varios bugs e Editar varias coisas no Servidor) Gabrielsales ( pelos Systemas:: "Held item", "Ditto system" ) valakas ( Por ter ajudado a resolve o Bug da Barra de Ataques do OTclient v2) Xtibia (por alguns scripts) Cometem OQ acharam do Server Tou parando com as atualizações por enquanto POr causa das Provas (Tenho que Passa) Mais quando terminar as Aulas posto Nova atualiazação... Obrigado a Todos que Elogiaram minha edição nesse Belo servidor
    8 pontos
  2. caotic

    onDropLoot(cid, item)

    Ola galera xtibianaaa. Event droploot acontece quando um monstro ou player dropa 1 item. Vamos la: Vá em creatureevent.cpp e procure: bool CreatureEvents::playerLogin(Player* player) { //fire global event if is registered bool result = true; for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { if(it->second->getEventType() == CREATURE_EVENT_LOGIN && !it->second->executeLogin(player) && result) result = false; } return result; } Logo em seguida coloque: bool CreatureEvents::dropLoot(Creature* creature, Item* item) { bool result = true; for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { if(it->second->getEventType() == CREATURE_EVENT_DROPLOOT && !it->second->executeDropLoot(creature, item)) result = false; } return result; } Procure: else if(tmpStr == "preparedeath") m_type = CREATURE_EVENT_PREPAREDEATH; Coloque em seguida: else if(tmpStr == "droploot") m_type = CREATURE_EVENT_DROPLOOT; Logo apos procure: case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath"; Coloque abaixo: case CREATURE_EVENT_DROPLOOT: return "onDropLoot"; Procure: case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList"; Coloque embaixo: case CREATURE_EVENT_DROPLOOT: return "cid, item"; Procure: uint32_t CreatureEvent::executeLogout(Player* player, bool forceLogout) { //onLogout(cid, forceLogout) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(player->getPosition()); std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(player) << std::endl; scriptstream << "local forceLogout = " << (forceLogout ? "true" : "false") << std::endl; scriptstream << m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ char desc[35]; sprintf(desc, "%s", player->getName().c_str()); env->setEventDesc(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(player->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); lua_pushboolean(L, forceLogout); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executeLogout] Call stack overflow." << std::endl; return 0; } } Coloque logo apos: uint32_t CreatureEvent::executeDropLoot(Creature* creature, Item* item) { //onDropLoot(cid, item) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; env->streamThing(scriptstream, "item", item, env->addThing(item)); scriptstream << m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ char desc[35]; sprintf(desc, "%s", player->getName().c_str()); env->setEventDesc(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); LuaScriptInterface::pushThing(L, item, env->addThing(item)); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executeDropLoot] Call stack overflow." << std::endl; return 0; } } Vá em creatureevent.h e procure:CREATURE_EVENT_PREPAREDEATH, Coloque abaixo: CREATURE_EVENT_DROPLOOT Procure: uint32_t executeTarget(Creature* creature, Creature* target); Coloque abaixo: uint32_t executeDropLoot(Creature* creature, Item* item); Vá em player.h na função: void Player::dropLoot(Container* corpse) Troque por esta função: void Player::dropLoot(Container* corpse) { if(!corpse || lootDrop != LOOT_DROP_FULL) return; uint32_t start = g_config.getNumber(ConfigManager::BLESS_REDUCTION_BASE), loss = lossPercent[LOSS_CONTAINERS], bless = getBlessings(); while(bless > 0 && loss > 0) { loss -= start; start -= g_config.getNumber(ConfigManager::BLESS_REDUCTION_DECREAMENT); bless--; } uint32_t itemLoss = (uint32_t)std::floor((5. + loss) * lossPercent[LOSS_ITEMS] / 1000.); for(int32_t i = SLOT_FIRST; i < SLOT_LAST; ++i) { Item* item = inventory[i]; if(!item) continue; Creature* creature = NULL; bool deny = false;item creature = g_game.getCreatureByID(getID()); CreatureEventList droploot = getCreatureEvents(CREATURE_EVENT_DROPLOOT); for(CreatureEventList::iterator it = droploot.begin(); it != droploot.end(); ++it) { if(!(*it)->executeDropLoot(this, item)) deny = true; } if(!deny) { uint32_t rand = random_range(1, 100); if(skull > SKULL_WHITE || (item->getContainer() && rand < loss) || (!item->getContainer() && rand < itemLoss)) { g_game.internalMoveItem(NULL, this, corpse, INDEX_WHEREEVER, item, item->getItemCount(), 0); sendRemoveInventoryItem((slots_t)i, inventory[(slots_t)i]); } } } } Vá em monster.cpp e procure: void MonsterType::dropLoot(Container* corpse) { Item* tmpItem = NULL; for(LootItems::const_iterator it = lootItems.begin(); it != lootItems.end() && !corpse->full(); ++it) { uint32_t owner = corpse->getCorpseOwner(); Creature* creature = g_game.getCreatureByID(owner); if((tmpItem = createLoot(*it)) && g_creatureEvents->dropLoot(creature, tmpItem)) { if(Container* container = tmpItem->getContainer()) { if(createChildLoot(container, (*it))) corpse->__internalAddThing(tmpItem); else delete container; } else corpse->__internalAddThing(tmpItem); } } corpse->__startDecaying(); uint32_t ownerId = corpse->getCorpseOwner(); if(!ownerId) return; Player* owner = g_game.getPlayerByID(ownerId); if(!owner) return; LootMessage_t message = lootMessage; if(message == LOOTMSG_IGNORE) message = (LootMessage_t)g_config.getNumber(ConfigManager::LOOT_MESSAGE); if(message < LOOTMSG_PLAYER) return; std::stringstream ss; ss << "Loot of " << nameDescription << ": " << corpse->getContentDescription() << "."; if(owner->getParty() && message > LOOTMSG_PLAYER) owner->getParty()->broadcastMessage((MessageClasses)g_config.getNumber(ConfigManager::LOOT_MESSAGE_TYPE), ss.str()); else if(message == LOOTMSG_PLAYER || message == LOOTMSG_BOTH) owner->sendTextMessage((MessageClasses)g_config.getNumber(ConfigManager::LOOT_MESSAGE_TYPE), ss.str()); } Evento em uso: function onDropLoot(cid, item) local block = {2221, 1221, 2922} for i=1, #block do if item.itemid == block[i] then return false end end return true end
    4 pontos
  3. homersapiens

    Diamond Shop

    Diamond Shop Para Instalar é bem fácil, extraia o arquivo game_shop.rar na pasta modules do OT Client(otc) Depois disso extraia esse arquivo shop.rar na pasta data/images Daí você pergunta: Ta mas e como funciona? Simples, por Talkactions, para configurar basta criar as talkactions no server. Para ficar mais fácil, tente criar as talkactions com as mesmas falas. /buyaddon -- para outfits !buy -- para vips #box# -- para box 4 !clan -- para clans Imagens: Só Postarei o Shop, os scripts são por sua conta! Algum Erro Poste no Tópico(Não atenderei dúvidas via pm/skype etc...) Créditos *Reps São Bem Vindos
    3 pontos
  4. 1 ponto
  5. OtavioJdS

    Pokemon Skyfall V.2

    [8.5] Pokemon SkyFall V. 2 Olá galera, venho aqui trazer minhas edições ao servidor Pokemon SkyFall do Gabrieltxu, fiquei um bom tempo editando para por online, mas por uns motivos não pude, então vim disponibilizar para vocês, espero que gostem. ► Conteúdo » Pokémons da 1° até a 4° geração. » Servidor Sem level . » Servidor já ajustado para usar OTclient com Barra de vida etc.. » Servidor com um MAPA Unico Com 2 Continentes . 1° Kanto 2° Hoen + Sinooh . » Sprites Novas e Atualizadas. ► Mudanças » Inquisition Quest acrescentada e teleport escondido. » Registeel adicionado (não tinha na versão anterior). » Concertado e adicionado novos itens para comprar no Shop Diamond. » Concertado corpos e pokemons » Dentre muitos outros... ► Prints ► Erros Do Servidor » Poucos, nada dificil de resolver. ► Acc God: 333/55555 ► Download » Servidor http://www.4shared.com/rar/GURzveX_ce/Pokemon_SkyFall_V2.html >> Scan https://www.virustotal.com/pt/url/ed14906ea7209fdc85f333a50cd5c966b358fecff34cbe8ba0d89721ed44a266/analysis/1395609370/ >> Cliente https://mega.co.nz/#!SJgGyagI!MmxCOiYPhCQElJIkXapFMRwJ54cAa2ubNrXjYXyReFo ► Créditos Eu – Otavio JdS GabrielTxu Zeref Shirou LekoDs Guidark21 Equipe Pokemon Galaxy betinhownz666 Glauber
    1 ponto
  6. Conteudo Retirado.
    1 ponto
  7. gabrielbsales

    [PDA] New Ditto System[PXG]

    Bom, esse ditto system: -Copia o pokemon e o balanceia sem necessidade de puxa-lo. -Copias Habilidades... Primeiramente, vá no some functions.lua - Localizado na pasta lib. E adicione isto no final(depois do ultimo end): Bom, essas são as funções de transformar e destransformar. Agora, vá no order.lua - Localizado no actions/scripts. E procure por: -------- TRANSFORM ---------- Apague tudo aqui dentro, até o: -------- LIGHT -------------- Ali dentro, bote: Pronto, ditto ja está tranformando, agora falta o !revert, para isso vá em talkactions/scripts e crie um arquivo(.lua) com nome de dittorevert, e dentro coloque: Agora, no talkactions.xml adicione esta linha: <talkaction words = "!revert;/revert" hide="yes" event = "script" value = "dittorevert.lua"/> Se fizer tudo corretamente, funcionará normalmente. Gif: Créditos: Gabrielbsales(sou op faço tudo solo)
    1 ponto
  8. 115757

    [Arquivado]ohayo!

    1 ponto
  9. meubk

    Aura System

    Olá hoje venho trazer um sistema não tão inovador por varios servers tem, porem o meu é mto diferente, para escolher sua aura vc precisa conversar com um npc, onde vc pode configurar para ser paga, precisar de level, ou somente para premiuns, no meu sistema está disponiveis as seguintes auras: Fire Ice Earth Death Holy Energy Que são os tipos mais comuns de magias do tibia, bom no script, enquanto vc está parado a aura são simples efeitos que acompanham o player e não foi feio por OnThink que pode causar lags no servidor, foi feito de um modo diferente, qndo vc está sendo atacado dependendo da chance escolhida a aura libera poderes, acertando alvos que estão te atacando, isso acontece automaticamente. Bom chega de explicação e vamos a instalação. Entre na pasta data/lib e crie um arquivo chamado configAura.lua e cole o seguinte código: -- [[ AURA SYSTEM LIB (BY: XXOTSERVXX) ]] -- -- [[ CONFIGURAÇÕES DO NPC ]] -- npc = { level = 1, -- level para pegar aura (1 para não precisar) price = 0, -- preço para comprar a aura (0 para ser gratis) premmy = false, -- precisar ser premium (false para não precisar) } -- [[ OUTRAS CONFIGURAÇÕES ]] -- auexchance = 20 -- chance de acontecer uma explosão de aura(maixmo 100) aurast = 56897 -- storage da aura (troque se ja estiver usando ela) Bom nesse script é onde você vai poder configurar variias coisas do script, é só seguir os comentários no script. Continuando na mesma pasta data/lib crie outro arquivo com o nome libAura.lua e cole o seguinte script: -- [[ FUNÇÕES ]] -- au = { ["fire"] = {ef = {5, 6, 15, 36}, sh = 3, dmg = COMBAT_FIREDAMAGE}, ["ice"] = {ef = {41, 42, 43}, sh = 28, dmg = COMBAT_ICEDAMAGE}, ["earth"] = {ef = {8, 45, 20}, sh = 29, dmg = COMBAT_EARTHDAMAGE}, ["death"] = {ef = {17, 34, 38}, sh = 31, dmg = COMBAT_DEATHDAMAGE}, ["holy"] = {ef = {39, 49}, sh = 30, dmg = COMBAT_HOLYDAMAGE}, ["energy"] = {ef = {11, 47, 48}, sh = 35, dmg = COMBAT_ENERGYDAMAGE} } function isAura(cid) if type(getPlayerStorageValue(cid, aurast)) == "string" then return true end return false end function addAura(cid, aura) return setPlayerStorageValue(cid, aurast, aura) end function getAura(cid) return getPlayerStorageValue(cid, aurast) end function startAura(cid, aura) a = au[aura] if not isCreature(cid) then return true end doSendMagicEffect(getThingPos(cid), a.ef[math.random(1, #a.ef)]) addEvent(startAura, 2000, cid, aura) end arrex = createCombatArea{ {0, 0, 1, 0, 0}, {0, 1, 1, 1, 0}, {1, 1, 2, 1, 1}, {0, 1, 1, 1, 0}, {0, 0, 1, 0, 0} } function sendExplosion(cid, aura, model) rateatk = math.ceil(getPlayerLevel(cid)/2*1,5) a = au[aura] min, max = rateatk/2, rateatk if model == 1 then doAreaCombatHealth(cid, a.dmg, getThingPos(cid), arrex, -min, -max, a.ef[math.random(1, #a.ef)]) elseif model == 2 then for i = 0, 3 do doSendDistanceShoot(getThingPos(cid), getPositionByDirection(getThingPos(cid), i, 1), a.sh) doAreaCombatHealth(cid, a.dmg, getPositionByDirection(getThingPos(cid), i, 1), 0, -min, -max, a.ef[math.random(1, #a.ef)]) end end end function getPositionByDirection(position, direction, size) -- TFS FUNCTION local n = size or 1 if(direction == NORTH) then position.y = position.y - n elseif(direction == SOUTH) then position.y = position.y + n elseif(direction == WEST) then position.x = position.x - n elseif(direction == EAST) then position.x = position.x + n elseif(direction == NORTHWEST) then position.y = position.y - n position.x = position.x - n elseif(direction == NORTHEAST) then position.y = position.y - n position.x = position.x + n elseif(direction == SOUTHWEST) then position.y = position.y + n position.x = position.x - n elseif(direction == SOUTHEAST) then position.y = position.y + n position.x = position.x + n end return position end Neste script não é recomendado mexer a não ser que vc seje um scritper e saiba oque faça. Agora entre na pasta data/creaturescripts/scripts e crie um arquivo chamado creatureAura.lua e cole o seguinte código: function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHLOSS then if isAura(cid) then if math.random(1, 100) < auexchance then sendExplosion(cid, getAura(cid), math.random(1, 2)) end end end return true end function onLogin(cid) if isAura(cid) then startAura(cid, getAura(cid)) end return true end Também não é recomendando mexer, continuando nesta mesma pasta (data/creaturescripts/scripts) procure pelo login.lua e no final do script antes do return true end, cole isto: registerCreatureEvent(cid, "loginAura") registerCreatureEvent(cid, "statsAura") Vá na pasta anterior data/creaturescripts e procure pelo arquivo creaturescripts.xml e adicione as seguintes tags: <event type="login" name="loginAura" event="script" value="creatureAura.lua"/> <event type="statschange" name="statsAura" event="script" value="creatureAura.lua"/> Agora entre na pasta data/npc e crie um arquivo chamado Npc Aura.xml e cole o seguinte codigo: <?xml version="1.0" encoding="UTF-8"?> <npc name="Npc Aura" script="npcAura.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="55" body="53" legs="42" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Ola, diga {aura} para ver as auras disponiveis."/> </parameters> </npc> Entre na pasta data/npc/scripts e crie um arquivo chamado npcAura.lua e cole o seguinte código: 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 if msgcontains(msg, 'aura') then if not isAura(cid) then selfSay('Temos disponiveis as seguintes auras: {fire}, {ice}, {earth}, {death}, {holy} e {energy}, qual você quer aprender ?', cid) talkState = 1 else selfSay('Você já tem á '..getAura(cid).." aura.", cid) end elseif isInArray({"fire", "ice", "earth", "death", "holy", "energy"}, msg) and talkState == 1 then if getPlayerLevel(cid) < npc.level then return selfSay("Desculpe mais para aprender a aura é preciso level "..npc.level..".") end if getPlayerMoney(cid) < npc.price then return selfSay("Desculpe mais para aprender a aura é preciso "..npc.price.."gps.") end if not isPremium(cid) and npc.premmy then return selfSay("Desculpe mais para aprender a aura é preciso ser premium.") end addAura(cid, msg) startAura(cid, getAura(cid)) doPlayerRemoveMoney(cid, npc.price) selfSay("Você acaba de receber á "..getAura(cid).." aura.") talkState = 2 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Bom para quem não entende de script é recomendando mexer somente no configAura.lua da pasta data/lib, lá é possivel configurar de modo funcional. Obrigado por ter visto este tópico Fuii.
    1 ponto
  10. Dbko

    Hirashin kunai

    eae Galera Eu Vejo Muitos Garotos querendo A Scripts Do Hirashin Kunai Que Nao Passe Por cima Da Agua E Etc Hoje Eu vi um Scripts porem estava passando entao eu Reditei o Scripts Nao sei quem Crio Mas Editei E Deixei Assim Em Seu Actions Scripts Copie um Arquivo lua e renomei para Hiraishin.lua e cole Isso Dentro function onUse(cid, item, fromPosition, itemEx, toPosition) local pos = fromPosition local aqui = getPlayerPosition(cid) local vocs = {150, 300, 562, 563, 564, 565, 566, 567, 568} local agua = {4610, 4612, 4611, 4664, 4613, 4666, 4646, 4654, 4609, 4665, 4608, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825, 4645} local parede = {1030, 1029, 1028, 1032, 1034, 1033, 873, 919, 874, 1037, 4472, 4475, 4471, 3388, 3363, 3398, 3408, 3417, 3420, 3407, 3368, 2701, 5130} local pedra = {874, 919, 873, 2784, 2778, 3330, 4471, 4475, 4473, 4472, 4474, 4468, 4478, 4469, 4470, 4479} if getDistanceBetween(aqui, toPosition) >= 4 then return doPlayerSendTextMessage(cid, 27, "Não pode.") elseif(not(isSightClear(aqui, toPosition, 1))) then return doPlayerSendTextMessage(cid, 27, "Isso E Impossivel.") elseif(getTilePzInfo(aqui)) then return doPlayerSendCancel(cid, "voce nao pode usar quando estiver em protect zone.") elseif(isInArray(agua, itemEx.itemid)) then return doPlayerSendTextMessage(cid, 27, "voce nao pode usar em agua") elseif(isInArray(parede, itemEx.itemid)) then return doPlayerSendTextMessage(cid, 27, "voce nao pode usar em paredes") elseif(isInArray(pedra, itemEx.itemid)) then return doPlayerSendTextMessage(cid, 27, "voce nao pode usar em pedras") elseif(not(isInArray(vocs, getPlayerVocation(cid)))) then return doPlayerSendTextMessage(cid, 27, "Desculpe Apenas Vocacao Minato Para Usar.") end if(doTeleportThing(cid, toPosition, false)) then doSendMagicEffect(pos, 252) doSendMagicEffect(toPosition, 252) end return doPlayerSendCancel(cid, "Desculpe Nao Foi Possivel.") end e em Actions.xml Se coloque <action itemid="7382" event="script" value="hiraishin.lua" allowfaruse="1"/> Caso Nao saiba Mudar a Vocation local vocs = {150, 300, 562, 563, 564, 565, 566, 567, 568} So Colocar o Id Da sua vocation Do Minato Ateciosamente, Luan Mello
    1 ponto
  11. Gabriel Couto

    Mudanças na equipe!

    Mudanças na equipe! Fala aí galerinha do XTibia, estou criando esse tópico para anunciar mudanças em nossa equipe! Nosso cargo de Supervisor de OTServ acaba de ser preenchido com o Omega, que era moderador responsável por scripting! Há poucos dias, sugeri internamente a sua promoção, assim como havia feito com o vital900 (hoje na seção de tibia global), e a proposta foi aceita por todos os membros da equipe que votaram! Então, Gostaria de parabenizar o membro, que tem se dedicado e vinha fazendo um ótimo trabalho em sua seção e como moderador. Esperamos que ele possa trazer novidades para a equipe de otserv, assim como na seção por inteira! Boa sorte com suas novas funções e espero que os membros possam te ajudar nessa nova experiência aqui no XTibia! Enquanto isso, nosso antigo membro da equipe volta à sua seção como Moderador! O Tonynh irá atuar na seção de design, e de quebra, vai ficar de olho no nosso barzinho, após ter recebido a minha indicação, e após muita insistência minha! Nosso estagiário de Tibia Global, JPedroTibianno também recebeu um up e agora é assistente da área, após um ótimo trabalho com vários tutoriais nas últimas duas semanas! Esperamos que continue seu trabalho! E, por último, e não menos importante, o DuuhCarvalho se junta à nossa equipe no estágio de scripting, após uma temporada com a capa de desenvolvedor! Parabéns e boa sorte nessa equipe! Abraços, Gabriel Couto.
    1 ponto
  12. Pequena Prainha Localizada Ao Sul Da City Principal =D Sou Iniciante, Não Me Julguem =D
    1 ponto
  13. DuuhCarvalho

    System Item Summon.

    O system item summon funciona assim: Ao dar use em 'X' item, no caso eu use o item : , Você summona uma criatura aleatoriamente. E ao dar use Novamente você remove a criatura . vá em data / actions / scripts... Crie um arquivo.lua e cole isso dentro : local monsters = {"Demon", "Rat", "Orc", "Medusa", "Dragon", "Ferumbras"} -- todos os monsters que podem ser summonados. local time = 1 -- tempo em minutos para usar o item novamente. local storage = 10923 -- storage qualquer, que não esteja em uso. function onUse(cid, Item, fromPosition, itemEx, toPosition) local pos = getCreaturePosition(cid) local summon = getCreatureSummons(cid) if (table.maxn(summon) < 1) then if getPlayerStorageValue(cid, storage) - os.time() <= 0 then local mst = monsters[math.random(#monsters)] doConvinceCreature(cid, doCreateMonster(monsters[math.random(#monsters)], pos)) doPlayerSendTextMessage(cid, 22, "Você summonou uma Criatura!") setPlayerStorageValue(cid, storage, os.time() + time*60) for _, pid in ipairs (getCreatureSummons(cid)) do doSendMagicEffect(getCreaturePosition(pid), 15) doCreatureSay(pid, "Vou Te Ajudar", TALKTYPE_ORANGE_1) end else doPlayerSendCancel(cid, "Você só pode usar esse item a cada "..time.." Minuto(s).") end elseif (table.maxn(summon) > 0) then for _, pid in ipairs(getCreatureSummons(cid)) do doCreatureSay(pid, "Tchau", TALKTYPE_ORANGE_1) doSendMagicEffect(getCreaturePosition(pid), 2) doRemoveCreature(pid) end doPlayerSendTextMessage(cid, 22, "Você Removeu A Criatura.") end return true end obs: tudo que você deve configurar , está explicado no script. Agora vá em data / actions / actions.xml... e coloque a tag : <action itemid="4870" script="Nome do Arquivo.lua" /> -- itemid = Id do item, no caso ta o item que mostrei no inicio. Demonstração em Imagens : Simples, porém útil . Sem sono e no tédio saiu isso Abraços.
    1 ponto
  14. Cyclops pelo Mundo! Tudo mundo já caçou essa criatura, uma das mais clássicas de todo o Tibia. Neste tutorial vou mostrar não um, mas cinco lugares interessantes para caçar os famosos cyclops, são eles, Femor Hills, Forsaken Mine, Mount Sternum, Mistrock e Cyclopolis. - Dividi o tópico em duas partes pois aqui está mostrando a mensagem "Desculpe, mas você postou mais imagens do que o número máximo permitido" - Link para a parte 1 aqui! Mount Sternum Mistrock Cyclopolis Informações e Loots dos Cyclops Nome: Cyclops HP: 260 XP: 150 Forte Contra: Holy e Energy Neutro Contra: Físico, Fire e Ice Fraco Contra: Death e Earth. Imune Contra: Nada Loot: 0-65 gold coins, battle shield, halberd, club ring, cyclops trophy, dark helmet, health potion. Nome: Cyclops Drone HP: 325 XP: 200 Forte Contra: Holy, Energy e Ice. Neutro Contra: Físico e Fire. Fraco Contra: Death e Earth. Imune Contra: Nada Loot: 0-24 gold coins, cyclops toe, battle shield, halberd, cyclops trophy, club ring, dark helmet, strong health potions. Nome: Cyclops Smith HP: 435 XP: 255 Forte Contra: Holy, Fire e Energy. Neutro Contra: Físico e Ice. Fraco Contra: Death e Poison. Imune Contra: Nada Loot: 0-70 gold coins, battle shield, battle hammer, battle axe, cyclops toe, dark helmet, cyclops trophy, strong health potion, double axe, club ring, spiked scquelcher. Valores dos Loots: Club RIng: 100gps Dark Helmet: 250gps Cyclops Trophy: 500gps Battle Hammer: 120gps Battle Axe: 80gps Cyclops Toe: 55gps Double Axe: 260gps Halberd: 400gps Battle Shield: 95gps Spiked Squelcher: 5.000gps
    1 ponto
  15. Toma function getPlayerInPos(position) return isPlayer(getTopCreature(position)) end
    1 ponto
  16. IJaX

    [Show Off] Outra Foto Do Meu Serve =D

    Sou Iniciante Espero Que Possam Compreender Meus Erros , =D
    1 ponto
  17. Ótimo mapa, parabéns.
    1 ponto
  18. prainha hum acho que deveria por area nas beradas toda se e uma praia e nao colocar avores dentro da praia e afastar mais essas avores deixar perto ou ate mesmo afastado so coqueiros de vez dessas arvores ai
    1 ponto
  19. Na pasta Data/Talkactions/Scripts crie um script chamado: shinytable.lua, e cole o código abaixo dentro: local tables = { "Pokemon - Shiny Stones:", "Elder Charizard - 5", "Shiny Venusaur - 5", } function onSay(cid, words) return doPlayerPopupFYI(cid, table.concat(tables, "\n")) end Agora em Data/Talkactions abra o arquivo Talkaction.xml e adicione a tag: <talkaction log="no" words="!shinystone" event="script" value="shinytable.lua"/> Configurando: Repita essa linha varias vezes "Shiny Name - 5",. embaixo de "Shiny Venusaur - 5", Vermelho: Nome do Shiny Azul: Stones Necessárias. Exemplo: local tables = { "Pokemon - Shiny Stones:", "Elder Charizard - 5", "Shiny Venusaur - 5", "Shiny Name - 5", "Shiny Name - 5", "Shiny Name - 5", "Shiny Name - 5", } function onSay(cid, words) return doPlayerPopupFYI(cid, table.concat(tables, "\n")) end
    1 ponto
  20. Aberos

    Diamond Shop

    kd os creditos do Viktor(Gristony)
    1 ponto
  21. min add skype luan.mello63 eu vo lhe ajuda quando chegar em casa pós estou celular chegando daqui a 40 minutos
    1 ponto
  22. se voce estiver usando o nto shinobi antigo mude para o novo o entao troca o distro como junior falo a cima isso e erro quando player executar magias d+ aew o seu server cai isso ja acontesceu comigo falou se ajudei
    1 ponto
  23. flagoa

    [Encerrado]TESTAR SERVIDOR TIBIA 9.81

    Olá galera... preciso de algumas pessoas para me ajudar, jogando um pouco meu servidor tibia 9.81. Tenho certeza de que vai superar suas expectativas! Mapa sem bugs (se acharem retiro na hora!). Sistema de !fly, vip's, premium, monstros editados para o servidor, quests exclusivas (com histórias e passagens secretas). Enfim, meu servidor é totalmente direcionado à jogabilidade do rpg... algo que está se perdendo no tibia (servidores). Temos zombie arena, arena de thais totalmente inovadora, castle, sistema de eventos como por exemplo "devovorga" idêntico ao global, batlefield e tudo que se deve ter no servidor tibia para garantir muita diversão! Durante o teste do servidor, estou totalmente aberto a diálogos pelo ts. Infelizmente, o teste está disponível apenas por hamachi. Rede: Lagoa Serei muito grato pela ajuda, e tenho certeza que irão se surpreender com a qualidade do servidor. Aguardo vocês!
    1 ponto
  24. BrenoNeto

    EkzART - Desenvolvendo Habilidades

    Claro, entra em contato via skype.
    1 ponto
  25. function onStatsChange(cid, attacker, type, combat, value) if getPlayerTown(cid) == getPlayerTown(attacker) and type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS then return false end return true end tag em login.lua : registerCreatureEvent(cid, "Nome do Evento") tag em creaturescripts.xml : <event type="statschange" name="Nome do Evento" event="script" value="Nome do Script.lua"/> testa ae..
    1 ponto
  26. pessoa93

    Mudanças na equipe!

    Tonynh seu lindo, saudades! parabéns pela moderação.
    1 ponto
  27. Muito legal, vale a pena conferir, só o que eu acho que vai zoar o server são os lendários, mais tirando isto muito legal.
    1 ponto
  28. Wend ll

    PDA By: Bolz:: Versão [GOD anna]

    Obrigado
    1 ponto
  29. Dbko

    PDA By: Bolz:: Versão [GOD anna]

    Gostei muito do Mapá Aprovado
    1 ponto
  30. SamueLGuedes

    PFW - Pokemon Fire World

    Não é só porque é Spriter, que não pode fazer sistemas. eu sou mapper, e faço scripts tambem '-'
    1 ponto
  31. Conectei o cliente com um ipchanger que encontrei na otland, ele não mostra, testei o ipchanger com outro servidor 10.31 e deu certo, no caso deste servidor somente entra até a parte de escolha do characters depois mostra offline. Quem conseguir rodar em win 32x sem problemas e puder compartilhar ficarei grata.
    1 ponto
  32. Frenvius

    Fairy Tail Online [FTO]

    Mais um exemplar, ainda não atualizado
    1 ponto
  33. DuuhCarvalho

    System Recompensa por Level

    Brigado : D Espero que realmente usem , abraços .
    1 ponto
  34. Hyaki

    Daarky [Show off - Iniciante]

    Tentei fazer uma espada agora, não sei porque mas itens de gelo são fodas *u* Espada de Gelo (algo do gênero)
    1 ponto
  35. Cyclops pelo Mundo! Tudo mundo já caçou essa criatura, uma das mais clássicas de todo o Tibia. Neste tutorial vou mostrar não um, mas cinco lugares interessantes para caçar os famosos cyclops, são eles, Femor Hills, Forsaken Mine, Mount Sternum, Mistrock e Cyclopolis. - Dividi o tópico em duas partes pois aqui está mostrando a mensagem "Desculpe, mas você postou mais imagens do que o número máximo permitido" - Link para a parte 2 aqui! Femor Hills Forsaken Mine Informações e Loots dos Cyclops Nome: Cyclops HP: 260 XP: 150 Forte Contra: Holy e Energy Neutro Contra: Físico, Fire e Ice Fraco Contra: Death e Earth. Imune Contra: Nada Loot: 0-65 gold coins, battle shield, halberd, club ring, cyclops trophy, dark helmet, health potion. Nome: Cyclops Drone HP: 325 XP: 200 Forte Contra: Holy, Energy e Ice. Neutro Contra: Físico e Fire. Fraco Contra: Death e Earth. Imune Contra: Nada Loot: 0-24 gold coins, cyclops toe, battle shield, halberd, cyclops trophy, club ring, dark helmet, strong health potions. Nome: Cyclops Smith HP: 435 XP: 255 Forte Contra: Holy, Fire e Energy. Neutro Contra: Físico e Ice. Fraco Contra: Death e Poison. Imune Contra: Nada Loot: 0-70 gold coins, battle shield, battle hammer, battle axe, cyclops toe, dark helmet, cyclops trophy, strong health potion, double axe, club ring, spiked scquelcher. Valores dos Loots: Club RIng: 100gps Dark Helmet: 250gps Cyclops Trophy: 500gps Battle Hammer: 120gps Battle Axe: 80gps Cyclops Toe: 55gps Double Axe: 260gps Halberd: 400gps Battle Shield: 95gps Spiked Squelcher: 5.000gps
    1 ponto
  36. Mistrock é MUITO BOM! Só tem Cyclops, nada mais pra atrapalhar. Upei do level 30 ao 48 principalmente lá, era 1 level a cada 1h~1h30, cheguei a cravar 80k/h com bônus de paladin. Só que abaixo do 45, não é muito bom ir sem um Stealth Ring, principalmente na área inferior que é mais dificil (tem buracos com 3~4 smiths juntos). Na área superior, eu recomendaria a partir do 40, que já vai sem stealth Só achei que é potion demais. Eu ia com 20 de cada, mas como dropava mais HP do que eu usava, passei a levar 10/30. Eu usei 1 ou 2 pra pegar todos esses levels.
    1 ponto
  37. beto06

    {SHOW OFF} RastaLegion

    eu tiraria o musgo do ground e os cristais porque acho que não combinam.. fora isso dá pra distribuir o gravel de uma forma melhor se quiser também
    1 ponto
  38. RastaLegion

    {SHOW OFF} RastaLegion

    Obrigado =) Acabado. aceito dicas e comentarios
    1 ponto
  39. Sem dúvidas esse é o tópico do gênero que mais durou até hoje! A maioria já teria descontinuado.. rs Parabéns Alex, tenho certeza que você já salvou uma boa galera.. kkk
    1 ponto
  40. local items = {{ID, quantidade}, {ID, quantidade}, {ID, quantidade}, {ID, quantidade}, {ID, quantidade}, {ID, quantidade}} local min_level = x --Level mínimo para pegar os items do baú. local time = 60 --Em minutos. local storage = 91838 function onUse(cid, item, frompos, item2, topos) if getPlayerLevel(cid) >= min_level then if getPlayerStorageValue(cid, storage) < os.time() then local it = items[math.random(#items)] doPlayerAddItem(cid, it[1], it[2]) doPlayerSendTextMessage(cid, 27, "Você recebeu "..it[2].." "..getItemNameById(it[1])..". Você poderá pegar sua próxima recompensa em "..time.." minutos.") setPlayerStorageValue(cid, storage, os.time() + time * 60) else return doPlayerSendCancel(cid, "Você pegou sua recompensa recentemente.") end else return doPlayerSendCancel(cid, "Você não possui o nível adequado para pegar a recompensa ["..min_lv.."].") end return true end
    1 ponto
  41. tenta assim se não for tenta assim:
    1 ponto
  42. local items = { --[[id = id do item, count = quantidade, chance = chance ]]-- [1] = {id = 7735, count = 1, chance = 2}, [2] = {id = 7735, count = 1, chance = 5}, [3] = {id = 7735, count = 1, chance = 10}, [4] = {id = 7735, count = 1, chance = 100} } local storage = 123 -- storage local time = 60 -- tempo em minutos. function onUse(cid, item, fromPos, itemEx, toPos) if getPlayerStorageValue(cid, storage) - os.time() <= 0 then for i = 1, #items do if (items.chance > math.random(1, 100)) then doPlayerAddItem(cid, items.id, items.count) doPlayerSendCancel(cid, "Você Ganho! O Item "..getItemNameById(items.id).."!") else doPlayerSendCancel(cid, "Você não ganhou nada, volte em 1 hora.") end setPlayerStorageValue(cid, storage, os.time()+time*1*60) end else doPlayerSendCancel(cid, "Você só pode pegar sua recompensa a cada 1 hora.") end return true end
    1 ponto
  43. Crazyskezi

    Naruto sennin pedido :/

    Amigo vou seguir seu tópico, vou continuar vendo, quero essa mesma coisa. porém me ajude se poder. http://www.xtibia.com/forum/topic/230745-ajuda-sprit-nao-quer-entrar-no-serv/
    1 ponto
  44. Novo Vídeo adicionado, Como adicionar outfit. Obrigado lucas, continuarei postando mais videos para a galera.
    1 ponto
  45. Pronto, desculpe esqueci de por público.
    1 ponto
  46. warotserv

    PvP Team

    Este sistema faz com que o server seja divido em 2 times, o time vermelho e o time azul. em "data\creaturescripts\scripts" crie um arquivo chamado "pvpTeam.lua" e cole o seguinte código redTeamSpawn = { x = 218, y = 172, z = 7} -- red team spawn position blueTeamSpawn = { x = 218, y = 170, z = 7} -- blue team spawn position redTeamParticipants = {} blueTeamParticipants = {} function teamLength(team) -- return the number of players in team local count = 0 for _ in pairs(team) do count = count + 1 end return count end function playerJoin(cid) -- try to join player in event if ableToJoin(cid) then redTeamParticipantsLength = teamLength(redTeamParticipants) blueTeamParticipantsLength = teamLength(blueTeamParticipants) if redTeamParticipantsLength <= blueTeamParticipantsLength then redTeamParticipants[cid] = true doPlayerSendTextMessage(cid,22,"Voce foi escolhido para ser do time vermelho.") doTeleportThing(cid, redTeamSpawn) else blueTeamParticipants[cid] = true doPlayerSendTextMessage(cid,22,"Voce foi escolhido para ser do time azul.") doTeleportThing(cid, blueTeamSpawn) end return TRUE else return FALSE end end function playerRemove(cid) -- remove player from event (if its participating) if isParticipating(cid) then if redTeamParticipants[cid] == true then redTeamParticipants[cid] = nil else blueTeamParticipants[cid] = nil end return TRUE else return FALSE end end function isParticipating (cid) -- verify if player is participating of the event if blueTeamParticipants[cid] == true or redTeamParticipants[cid] == true then return TRUE else return FALSE end end function ableToJoin (cid) -- checks if players are able to join if isPlayer(cid) and not isParticipating(cid) then return TRUE else return FALSE end end function arePlayersOfSameTeam (cid1, cid2) -- checks if the players are of the same team if ((blueTeamParticipants[cid1] == true and blueTeamParticipants[cid2] == true) or (redTeamParticipants[cid1] and redTeamParticipants[cid2])) then return TRUE else return FALSE end end function onLogin(cid) -- checks if it's really a player and if it's only if isPlayer(cid) then if isParticipating(cid) == true then return FALSE -- Ooops! If the script reachs here, we gotta verify what's going wrong else if playerJoin(cid) == true then return TRUE -- everything gone as expected else return FALSE -- Ooops! If the script reachs here, we gotta verify what's going wrong end end else return TRUE end end function onLogout(cid) -- this function is essential to not unbalance the teams if isParticipating (cid) then return playerRemove(cid) end return TRUE end function onAttack(cid, attacker) -- verify if both are players if not isPlayer(cid) or not isPlayer(attacker) then return TRUE end -- are those players participating of the event? if not isParticipating(cid) or not isParticipating (attacker) then return TRUE end if arePlayersOfSameTeam(cid, attacker) then -- a player of the same team cannot attack the other!! return FALSE else return TRUE end end function onStatsChange(cid, attacker, t, combat, value) -- verify if both are players if not isPlayer(cid) or not isPlayer(attacker) then return TRUE end -- verify if both are participating of PVP if isParticipating(cid) and isParticipating(attacker) then -- both are participating of event -- verify if both are of the same team if arePlayersOfSameTeam(cid, attacker) then -- they're of the same team. Only heals are acceptable if t == STATSCHANGE_HEALTHGAIN or t == STATSCHANGE_MANAGAIN then return TRUE else return FALSE end else -- they're not of the same team. Only damages are acceptable if t == STATSCHANGE_HEALTHGAIN or t == STATSCHANGE_MANAGAIN then return FALSE else return TRUE end end else -- one or both are not participating of event return TRUE end -- getting local player1Team = monstersTeam[getCreatureName(cid)] -- return if it has no team if player1Team == nil then return TRUE end -- getting monster that is attacking team local monster2Team = monstersTeam[getCreatureName(attacker)] -- return if it has no team if monster2Team == nil then return TRUE end -- check if they're of the same team if monster1Team == monster2Team then -- if they're of the same team, returning false will not allow the damage to be done to its partner return FALSE else return TRUE end return TRUE end agora, em "creaturescripts.xml" adicione o seguinte <event type="attack" name="PvpTeam1" event="script" value="pvpTeam.lua"/> <event type="statschange" name="PvpTeam2" event="script" value="pvpTeam.lua"/> <event type="login" name="PvpTeam3" event="script" value="pvpTeam.lua"/> <event type="logout" name="PvpTeam4" event="script" value="pvpTeam.lua"/> depois, no arquivo "login.lua" que se encontra em "data\creaturescripts\scripts" adicione registerCreatureEvent(cid, "PvpTeam1") registerCreatureEvent(cid, "PvpTeam2") registerCreatureEvent(cid, "PvpTeam3") registerCreatureEvent(cid, "PvpTeam4") Bom, é isso. Espero ter ajudado. P.S.: Não me importo que roubem meus créditos e/ou postem em outros fórums.
    1 ponto
  47. otc client ja tem seu proprio bot ou faza um bot para otc otc é script entao tem que fazer o bot em script
    1 ponto
  48. vmAth

    Hokai City

    Versão: 9.6 Download: Clique aqui Créditos: Hokai.
    1 ponto
  49. beto06

    [Mapping] Cave - Básico

    Bom, irei dividir o tutorial em três passos: 1. Bordas/Shape A dica é fazer com calma as bordas da caverna, nada muito reto dependendo do tema. O minimap (M) pode ajudar um pouco. Comece por algo pequeno para praticar. Nesse caso, estou fazendo uma caverna de Rotworm: 2. Grounds/Gravel Coloque o ground e dê uma variada para não ficar muito 'entediante'. Feito isso, adicione o gravel em bons lugares como nos cantos e nas pontas das bordas da caverna. Veja como eu fiz: 3. Detalhes Temáticos Dependendo do tema da sua caverna, (se for, por exemplo, de Tarantulas, adicione teias, etc...) adicione os detalhes com coerência. Como esta é de Rotworms; cogumelos (ID 2792), musgo (ID 5557 e 5563), plantas (ID 5397), pedrinhas (ID 3653 e 3611) e tufos (ID 6219) é o necessário: é isso, acho que está simples de se aprender uma base. Valeu http://2.imgland.net/fo6tgM.png http://2.imgland.net/CKW0D5.png http://2.imgland.net/EyPMPb.png
    1 ponto
  50. Vodkart

    Battlefield Event!

    Na verdade ta indentado, o xtibia que quebra a identação ._.
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...