Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 03/29/14 em todas áreas
-
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 servidor8 pontos
-
onDropLoot(cid, item)
Soulviling e 3 outros reagiu a caotic por um tópico no fórum
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 end4 pontos -
Diamond Shop
Oloster Games e 2 outros reagiu a homersapiens por um tópico no fórum
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 Vindos3 pontos -
1 ponto
-
Pokemon Skyfall V.2
gustavoss5 reagiu a OtavioJdS por um tópico no fórum
[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 Glauber1 ponto -
[Pokemon] Servidor Skyfall - Completo
Josemir rosendo reagiu a Gabrieltxu por um tópico no fórum
Conteudo Retirado.1 ponto -
[PDA] New Ditto System[PXG]
steelpzeza reagiu a gabrielbsales por um tópico no fórum
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 -
Aura System
NathanAmaro reagiu a meubk por um tópico no fórum
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 -
Hirashin kunai
Mestrenaruto reagiu a Dbko por um tópico no fórum
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 Mello1 ponto -
System Item Summon.
Killua reagiu a DuuhCarvalho por um tópico no fórum
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 -
Cyclops! [Parte 2, Mount Sternum, Mistrock e Cyclopolis]
vital900 reagiu a JustinnoTibianno por um tópico no fórum
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.000gps1 ponto -
[Dúvida] Função que checa outro player na sala
lucasromero reagiu a Oneshot por uma questão
Toma function getPlayerInPos(position) return isPlayer(getTopCreature(position)) end1 ponto -
Minha Ultima Foto OBS: Do Meu Serve De Digimon :D
IJaX reagiu a NathanAmaro por um tópico no fórum
Ótimo mapa, parabéns.1 ponto -
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 ai1 ponto
-
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")) end1 ponto
-
1 ponto
-
[Resolvido] Erro no nukenin shinobi
Jefferson14789 reagiu a Dbko por uma questão
min add skype luan.mello63 eu vo lhe ajuda quando chegar em casa pós estou celular chegando daqui a 40 minutos1 ponto -
[Resolvido] Erro no nukenin shinobi
Jefferson14789 reagiu a Dbko por uma questão
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 ajudei1 ponto -
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
-
Claro, entra em contato via skype.1 ponto
-
Player só ataca outro se forem moradores de cidades distintas
Mazynho reagiu a DuuhCarvalho por uma questão
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 -
Vai em OTclient\modules\client_entergame e abra o entergame.lua e encontre essa Parte ali onde ta o Ip você troca pelo o seu ,..1 ponto
-
Tonynh seu lindo, saudades! parabéns pela moderação.1 ponto
-
Gostei muito do Mapá Aprovado1 ponto
-
PFW - Pokemon Fire World
homersapiens reagiu a SamueLGuedes por um tópico no fórum
Não é só porque é Spriter, que não pode fazer sistemas. eu sou mapper, e faço scripts tambem '-'1 ponto -
10.37 Melhor RL Map Baseado 1.0! NEW Roshamuul, novas missões e correção de erros! Open-source!
99bd81ay2q reagiu a bridalinnea por um tópico no fórum
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 -
System Recompensa por Level
M i s s reagiu a DuuhCarvalho por um tópico no fórum
Bom o script é simples mais muito útil ! e muito fácil de configurar . vocês podem adicionar quando leveis e items vocês quiserem ! vá em data / creaturescripts / scripts : crie um novo arquivo.lua e cole isso dentro .. local leveis = { [1] = {lvl = 50, item = 2160, quant = 10, sto = 001}, [2] = {lvl = 100, item = 2160, quant = 20, sto = 002}, [3] = {lvl = 200, item = 2160, quant = 40, sto = 003}, [4] = {lvl = 300, item = 2160, quant = 60, sto = 004}, [5] = {lvl = 400, item = 2160, quant = 80, sto = 005}, [6] = {lvl = 500, item = 2160, quant = 100, sto = 006} } function onAdvance(cid, skill, oldLevel, newLevel) local level = getPlayerLevel(cid) for i = 1, #leveis do if level >= leveis[i].lvl and getPlayerStorageValue(cid, leveis[i].sto) <= 0 then doPlayerAddItem(cid, leveis[i].item, leveis[i].quant) setPlayerStorageValue(cid, leveis[i].sto, 1) doPlayerSendTextMessage(cid, 22, "Você upou level "..level.." ou mais, e ganhou "..leveis[i].quant..", "..getItemNameById(leveis[i].item).."!") end end return true end configurando o script : Adicione a tag em script / login.lua .. registerCreatureEvent(cid, "Nome do Evento") e Adicione a tag em creaturescripts.xml : <event type="advance" name="Nome do Evento colocado em login.lua" event="script" value="Nome do Arquivo.lua"/> É isso!1 ponto -
Mensagens ao logar
Pokerangers reagiu a Wend ll por uma questão
Opááh se Tiver com o Problema ainda vai ae:: Vá no seu data\talkactions\scripts e copiei qualquer um Arquivo.lua, e Renomei para talkClan.lua Apague Tudo que tiver dentro e cole isso: Agora vá em data\talkactions\ e em talkactions.xml e Adicione essa Tag::1 ponto -
Avatar - Assinatura - Banner - Sign - Background -
Tonynh reagiu a Alexclusive por uma questão
Vlw pelo reconhecimento Tony, e se eu ti falar que tava pensando hoje em pedir pra fechar o tópico!? Você acredita? Ai veio seu comentário pra salva-lo.1 ponto -
Fairy Tail Online [FTO]
viniciusdrika reagiu a Frenvius por um tópico no fórum
Mais um exemplar, ainda não atualizado1 ponto -
System Recompensa por Level
JeanCristian reagiu a DuuhCarvalho por um tópico no fórum
Brigado : D Espero que realmente usem , abraços .1 ponto -
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
-
Cyclops! [Parte 1, Femor Hills e Forsaken Mine]
vital900 reagiu a JustinnoTibianno por um tópico no fórum
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.000gps1 ponto -
{SHOW OFF} RastaLegion
vital900 reagiu a RastaLegion por um tópico no fórum
Obrigado =) Acabado. aceito dicas e comentarios1 ponto -
Avatar - Assinatura - Banner - Sign - Background -
Alexclusive reagiu a Tonynh por uma questão
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.. kkk1 ponto -
Mudanças na equipe!
vital900 reagiu a DuuhCarvalho por um tópico no fórum
Agradeço a oportunidade ! Estarei sempre fazendo o meu e ajudando . Abraços ><1 ponto -
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 end1 ponto
-
[PEDIDO] Alteração na Boost Machine
lucasweich reagiu a MauricioPC por um tópico no fórum
tenta assim se não for tenta assim:1 ponto -
Quest feita a cada uma Hora (Urgente)
allex9213 reagiu a DuuhCarvalho por uma questão
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 end1 ponto -
Naruto sennin pedido :/
singulani reagiu a Crazyskezi por um tópico no fórum
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 -
Novo Vídeo adicionado, Como adicionar outfit. Obrigado lucas, continuarei postando mais videos para a galera.1 ponto
-
Pronto, desculpe esqueci de por público.1 ponto
-
primeiras sprite
Mestrenaruto reagiu a Dbko por um tópico no fórum
Eae Galera Hoje Vim Aki Mostra Umas Das Minhas Primeiras Sprite Mostra a Gunbai e o Kisame ring em breve vo tentar por Katabara tentativa nidaime Creditos: DBKO Feita Por Min Eu postei está sprite no forum do dbo caso venha alguem falar besteiras falando que ja tava no forum do dbobrasil eu Pus Alta Assim Pra Voces Verem Melhor Quiserem Algumas Sprite Ou Ajuda Com Sprite Se tiver Algo Errado Ai pesso Pra que Min Ajudem so novato na Area De sprite Sou Mapper E Client Maker Querendo min Torna um Scripts Ateciosamente: Luan Mello1 ponto -
Tile teleport storage
HenrikDiamond reagiu a zipter98 por uma questão
Sabe fazer a tag? local STORAGE = x --Storage. local VALUE = x --Valor da storage acima. local POS = {x = x, y = y, z = z} --Para onde será teleportado. function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerStorageValue(cid, STORAGE) >= VALUE then doTeleportThing(cid, POS) doPlayerSendTextMessage(cid, 27, "Você foi teleportado.") return true else return doPlayerSendCancel(cid, "Você não possui a storage.") and doTeleportThing(cid, fromPosition) end return true end1 ponto -
PvP Team
AlissonFabiano10 reagiu a warotserv por um tópico no fórum
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 -
[Dúvida] Elfbot no OTclient
Soulviling reagiu a Strogman por uma questão
otc client ja tem seu proprio bot ou faza um bot para otc otc é script entao tem que fazer o bot em script1 ponto -
[Mapping] Cave - Básico
JustinnoTibianno reagiu a beto06 por um tópico no fórum
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.png1 ponto -
Na verdade ta indentado, o xtibia que quebra a identação ._.1 ponto
