Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 09/09/10 em todas áreas

  1. Alissow OTs 4.11! Esta versão 4.11 foi meio apressada, só adicionamos as features novas do 8.6. Aproveitem. Créditos: Alissow Comedinha Luis Nirk TFS Team Viniply Xedegux Sobre o OT/Mapa: Principais quests: -Annihilator -Inquisition Quest -Pits of inferno -Demon Oak -Solar axe quest -HOTA -MPA quest -The Challenger Monstros: -Total monstros: 10292 -Total spawn: 5587+ Cidades: -12 Cidades -200 Houses+- Raids/Invasões: -Rat -Orshabaal -Ghazbaran -Giant spider/The old window -Ferumbras -Morgaroth Spells: -Magias editadas para balanceamento das vocações Changelog Atualização [3.4 BETA]: - Removido áreas não usadas no mapa, diminuindo o tamanho em MBs - Adicionado Anti Magebomb System - Corrigido bugs no npc addon - Adicionado sistema onde os npcs falam sozinhos (Igual como foi adicionado no global). First ;] - Adicionado Elf village em Venonh ( bem parecida com a do global ;]) - Potions desaparecem quando usadas - Corrigido sistema de Up - Corrigido sistema de Monster Counter - Nova dragon lair em Mirand Theraan (Subsolo) - Adicionado porta de level, que protege leveis baixos acessarem os demons da cidade de Flam - Ampliado deserto da cidade de Mirand Theraan - Adicionado Ilha de Goroma - Adicionado Forbidden islands - Ampliado floresta da cidade de alfon e colocado área de macacos parecida com Banuta. - Ligação de alfon com Mirand Theraan - Corrigido bugs reportados nas portas das casas - Corrigido posição dos buracos e escadas - Adicionado beds em todas as casas - Corrigido bugs em casas de yalahar - Adicionado Blue legs quest ( Koshei The Deathless global) - Corrigidas quase todas as areas de Yalahar - Teleports em Yalahar substituidos por NPCs de teleport do global - Corrigido pequenos erros no npc Capitao Coruja, e adicionado viagem à goroma - diminuido ataque do Eye of the seven - Ice rapier agora quebra - Corrigido npc Banker - Adicionado quase todos os items 8.5 - Adicionado medusa - Adicionado Todos os outfits novos - Corrigido NPC Banker (que dava dinheiro) Script By Ta4e - Corrigido Annihilator Quest - Adicionado Notice System - Adicionado novo distro, compilado por Comedinha Atualização nº 2 [3.4]: Otserv atualizado... Corrigido debugs frequentes Corrigido debugs na magia exevo pan Corrigido bugs nos npcs Roy e Firewalker Adicionados mais novos items 8.5, agora temos 90% dos items novos... Atualização 3.5 [06/08/2009]: - Cidade principal (dorion) totalmente reformada - corrigido blue legs quest - Corrigido alavancas de compra de potions - Adicionado alavancas de compra de runas - Corrigido npc Bank - Adicionado NPC King Arthas, que vende promotion - Adicionado npc Rashid, que vende items. - Arrumado Wild Growth rune - Arrumado Utani Hur - Magias reajustadas - Novo estilo de server save - Ilha de mystic reformulada (by Nirk) - Adicionado nova magia para knights "Exkordium". - Adicionado nova magia para mages (promoted) "Exura Seil". - Adicionado nova magia para mages (promoted) "Exevo Gran Frigo". (arrumar -> sem exhausted nem gasta mana) - Adicionados novos monstros. - Adicionado quest challenge (lvl 250) - Corrigido bug do Dead Cyclops - Bug aol Arrumado - Poi Modificada - Corrigido teleports ghouls yalahar - Modificada demon helmet quest, assim como o premio da quest - Corrigido nome do Hallowed axe - Corrigido bug das houses - Corrigido bug dos items andaveis Atualização Patch 3.5.1 [07/08/2009]: - Corrigido erro na inicialização do Ot - Bug das potions corrigido - Bug do aol corrigido (pelomenos pra mim) - Bug dos outfits corrigido - Corrigido erros nas escadas na ilha PvP - O monstro The Fastest Turtle agora não morre, se tornando um monstro apenas para atrapalhar - Retirada suposta quest dos 3 hellhounds e 1 minishabaal - Adicionado teleport de retorno na Ferumbras Tower - Corrigido posições da raid de The old widow - Corrigido bug das escadas nas minas de demons - Corrigido alguns bugs vistos no mapa Atualização 3.6 [10/08/2009]: - Arrumado bugs criticos - Arrumado comando !promote/!demote - Atualizado Items.xml - Bug das Beds arrumado - Modificações na cidade, como, nature e caves - Nova sala de treino - Adicionado comando !highscores Atualização 3.7! Beta [18/12/2009]: - Guildhall support (Elf) - Nova deathlist(Elf, OpenTibia SVN) - Frags funcionando (Elf) - Atualizado monstros e items (slawkens, KaczooH, Elf) - Novas talkactions: /commands, /wp, /storage, /config, /promote & /demote. (slawkens) - Novas funções lua - Novos creatureevents (slawkens, Elf) - Novos configuráveis (Elf, slawkens) - Modificado ataque de monstros existentes (especialmente outfits e velocidade) (Elf) - Monstros reorganizados & atualizados (Nem todos) (slawkens) - Melhorado sistema de banimentos (Elf) - Reescrita janela de Rule Violation (Elf) - Arrumado Stamina (Elf, OpenTibia SVN) - Casas agora são salvas nas modificações do dono (Elf) - Escadas de yalahar funcionando perfeitamente (Elf, Talaturen) - Sistema de nado & waterball completo (slawkens) - Monstros invisiveis não são mais mandandos ao client (anti bot) (OpenTibia SVN) - Anti-dash (OpenTibia SVN) - Sistema de leilão de casas, possibilidade de usar site para vender casas (house_actions table) (OpenTibia SVN, Elf) - Salvando bot actions para /logs/bots por cada player. Por exemplo, bot pode enviar mensagem com mais de 255 caracteres (slawkens) - Novos raid events- item spawning & disappearing and more (Elf) - Modificações no NPC system (Elf) - NPCs OutfitModule (Elf) - Completo 8.53 support, com wars (Elf) - Completo 8.54 support (Elf) - Arrumado NPC voices (Elf) - Players serão informados quando o Gamemaster logar ou ficar invisivel (slawkens) - Arrumado Player Deaths (Elf, slawkens) - Arrumado Abuso de PZ (slawkens) - Portas agora não ajudam players a entrar em PZ (slawkens) - Magic level formula (OpenTibia SVN, KaczooH) - Memory leaks (Elf) - Queries optimization (Talaturen) - Janelas podem ser abertas do lado de fora da casa- agora apenas GMs podem fazer isso (slawkens) - arrumado Efeitos para o Ghost (GM)- configuravel (slawkens) - Corrigido >> Ghost debugging players (OpenTibia SVN, Elf) - Corrigido erro na promotion (Elf) - Corrigido vários erros no console. (slawkens) - Corrigido Spam de magias (Elf) - Corrigido stamina premium (Elf) - Corrigido Clean (Elf) - Corrigido vários outfits (Elf) - Corrigido Ghost (Elf) - Todas as correções no OpenTibia SVN (Open Tibia SVN, Elf) - Corrigido Todos os crashes possiveis (Elf) - Npcs Corrigidos (Comedinha) - Distro Reformulado (comedinha) - Bugs de reports arrumados (Comedinha) - Novos outfits (Alissow) - Actions Arrumadas (Comedinha) - Libs trocadas (Comedinha) - Talkactions bugadas arrumadas (Comedinha) - Reforma na área Sul da cidade Dorion (Alissow) - Adicionado monstros 8.54 (Alissow) - Corrigido bug das potions infinitas (Alissow) Atualização 3.7 Patch 1 [27/12/2009]: - Rampa na frente da loja de foods retirada (Alissow) - Arrumado bugs de mapa em anknor (Alissow) - Bug na Lib dos npcs corrigido (Alissow) - Bug do acc manager arrumado! (Alissow) - Magias "Exkordium" e "Ice Storm" arrumadas (Alissow) - Monstros 8.54 funcionando (Alissow) - 2º Addon Yalaharian arrumado (Alissow) - Addons Warmaster adicionados no NPC Addoner (Alissow) - Pequenas modificações na cidade principal, Dorion, para melhora da jogabilidade (Alissow) - Comando /Deathlist retirado (Alissow) - Magic Wall Rune arrumada (Alissow) - Quest Annihilator arrumada (Alissow) - "Your depot contain x items" Arrumado (Alissow) - Addons reorganizados, mais facil aggora (Alissow) - Tempo de Red skull e Black skull reduzidos para 24 e 42 horas (Alissow) - Reduzida porcentagem de morte (Alissow) - Acrescentado chance de critical hits (Alissow) - ShowHealingDamage Adicionado (Alissow) - Várias partes do mapa remapeadas (Alissow) - NPCs para recarga de Soft boots & Firewalker boots arrumados [Não testado] (Alissow) - Comando !frags arrumado! (Alissow) - Agora é possivel fazer addons sem precisar do comando !buypremium (Alissow) Atualização 3.8 [17/01/2010]: - Arrumado bug nas escadas do Dlair (Alissow) - Todos os bugs nos NPCs arrumados (Comedinha) - Novas talkactions [a pedidos] (Comedinha) - Deathlist arrumada (Comedinha) - Novo Distro (Comedinha) - MySQL Atualizada (Comedinha) - Firewarker boots não é mais gasta quando não está usando (Comedinha) - Problemas com items no Rashid arrumados (Alissow, Comedinha, Comunidade) - O NPC Banker foi corrigido, mas achei mais seguro retira-lo, visto que ninguem usava e poderia causar outro tipo de bug - Ilha (Sim aqui é uma ilha) de Zao adicionada (Alissow, Barker) - Monstros 8.54 aperfeiçoados (Alissow, Markithu, Zkum) - Reduzido danos da magia Exkordium (Alissow) - Os npcs Dark Rodo e Rachel vendem Blank Runes (Alissow) - Magias que não hitavam anteriormente foram arrumadas (Alissow) - Comando !buypremium arrumado (Alissow) - Arena PVM - Mais conhecida como Arena Svargrond - FUNCIONANDO!!! (Alissow) - Magia LightChain Retirada (Alissow) - Adicionado um sisteminha legal no templo (Alissow) - NPC Rashid retirado (Alissow) Atualização 3.8 Minor Patch 1 [17/01/2010]: - Comando Deathlist retirado novamente, fizemos testes equivocados. Se você é uma das 16 pessoas que baixou a versão anterior (3.8) não precisa baixar esta, basta retirar o comando !deathlist e /deathlist do seu Talkactions.xml, Os comandos causam quedas no servidor. Atualização 3.9 [15/02/2010]: - Cidade principal (Dorion) reformada, novo templo, novo depot, novo porto, novos npcs :] (Alissow) - Adicionado Reputation System (Comedinha, Cybermaster) - Adicionado !bless system (Comedinha) - /info melhorado (Comedinha) - Jail System (Comedinha) - Bug chatinho nos tiles pretos arrumado. - Magic Wall Funcionando! (Alissow) - Agora você pode fazer bolos e pães :] (Comedinha, Jean, Ojani) - Adicionado sistema de casamento (Comedinha, ScorpiOOn93, Alissow) - Loot The Fastest Turtle diminuido (Alissow) - Loot e experiencia do Feromous mais baixo (Alissow) - Sistema de parceis para Dorion funcionando (Alissow) - Guildwar System (Comedinha) - Anti MageBomb System (Comedinha, Huggen) - Adicionado Anti Nuker - Esse funciona! (Comedinha) - Adicionado Map Marks, para os players novos (Alissow, Comedinha) Atualização 4.0 [15/02/2010]: - Cidade Mountain totalmente reformada (Alissow) - Montanha de Goblins de Dorion reformada (Alissow) - Demonic Castle de Dorion reformado (Alissow) - Cidade de Venonh modificada (Luis) - Distro atualizado, funcionando nos clients 8.54, 8.55, 8.56 e 8.57 (Comedinha) - Comando !bless retirado (Alissow) - O NPC Ermes não vende mais items de decoração (Alissow) - Arrumado bugs na Ferumbras Tower (Alissow) - O comando !AFK on agora mantem o player parado (Comedinha) - Arrumado bugs nas escadas da área de DeathFans (Alissow) - Comando !Deathlist funcionando! (Alissow, Doidinmapper, GT Thionix) - Sistema de REP atualizado (Comedinha) - Sistema de Polls (Comedinha) - Banco por comandos (Comedinha) - Novos comandos de addon e accounts (Comedinha) - Sistema de futebol completo! (Comedinha) - Sistema Antibot (Comedinha) - Magia Spared Hur modificada (Alissow, Orzeleagle) - Adicionado sistema de montaria (Alissow, unknown666) - Adicionado Canivetes (Alissow, Siramix) - Nova hunt Subaquatica (Luis) Atualização 4.11! [11/07/2010]: - Versão 8.6, todos os items, outfits e monstros novos (Comedinhasss, Fireelement) - Adicionados os novos monstros 8.6 (Alissow) - Bug das potions arrumado (Comedinha, Matheusmkalo, Gabriel linhares, Fireelement) - Erros das runas arrumado (Comedinha, Gabriel linhares, Matheusmkalo, fireelement) Download Servidor: 4shared Tamanho: 17,416 KB Download: http://www.4shared.com/file/ez8XKrju/860_Alissow_Ots_411.html Link protegido: http://lix.in/-8d4bc0 Scan VirusTotal: http://www.virustotal.com/pt/analisis/983abb574dbb957a75aa1fd29eb804065f775e6a0c43216aa277686d32bce22a-1263702373 Atenção - Acc do God: god/god - LEIA o tópico antes de postar qualquer coisa ou duvida - Reportem se houver algum bug - A database fica na pasta schemas+Database - Proibido o uso do nosso distro sem o nosso consenso, obrigado. Andei percebendo que há muitos mapas feitos por mim em outros servidores postados aqui no xtibia, eu não sei se vocês sabem, mas isso é PLÁGIO. Eu não sou uma pessoa egoista, tudo que eu posto aqui no XTibia é para ser compartilhado, mas desde que mantenham os devidos créditos. Será denunciado qualquer tipo de "roubo" sem minha autorização para beneficio próprio. Eu sei que vocês não se importam muito com isso, eu também não deveria me importar, mas é o tempo e a dedicação de outra pessoa que vocês estão roubando, então peço gentilmente aos que tem conhecimento desses mapas, que me apontem. Não tem graça trabalhar horas e horas e ser roubado em dois minutos.
    2 pontos
  2. comedinhasss

    Passando Um Otserv Para 8.60

    Fala ae galerinha do xtibia... Bom vejo que muitos programadores ainda estão em dúvida para passar o seu ot para 8.6 ... Bom então estou fazendo um tutorial... Testado em tfs 0.3.6pl1 Sources: Em House.cpp: Procure: std::string metachars = ".[{}()\\+|^{:content:}quot;; Substitua por: std::string metachars = ".[{}()\\+|^$*?"; Procure: if(metachars.find(*it) != std::string::npos) outExp += "\\"; Subistitua por: if(metachars.find(*it) != std::string::npos) outExp += ""; Procure: replaceString(outExp, "*", ".*"); replaceString(outExp, "?", ".?"); Subistitua por: replaceString(outExp, "*", ""); replaceString(outExp, "?", ""); Em resources.h: Procure: #define CLIENT_VERSION_MIN 854 #define CLIENT_VERSION_MAX 854 #define CLIENT_VERSION_STRING "Only clients with protocol 8.54 are allowed!" #define STATUS_SERVER_NAME "TheForgottenServer" #define STATUS_SERVER_VERSION "0.3.6" #define STATUS_SERVER_CODENAME "Crying Damson" #define STATUS_SERVER_PROTOCOL "8.54" Substitua por: #define CLIENT_VERSION_MIN 860 #define CLIENT_VERSION_MAX 860 #define CLIENT_VERSION_STRING "Only clients with protocol 8.60 are allowed!" #define STATUS_SERVER_NAME "TheForgottenServer" #define STATUS_SERVER_VERSION "0.3.6" #define STATUS_SERVER_CODENAME "Crying Damson" #define STATUS_SERVER_PROTOCOL "8.60" Em itemloader.h: Procure: CLIENT_VERSION_854 = 16 Substitua e adicione por: CLIENT_VERSION_854 = 16, CLIENT_VERSION_855 = 17, CLIENT_VERSION_856 = 18, CLIENT_VERSION_857 = 19, CLIENT_VERSION_860 = 20 Em items.cpp: Procure: else if(Items::dwMinorVersion != CLIENT_VERSION_854) Substitua e adicione por: else if(Items::dwMinorVersion != 19) Em protocolgame.cpp: Procure: void ProtocolGame::parseAttack(NetworkMessage& msg) { uint32_t creatureId = msg.GetU32(); addGameTask(&Game::playerSetAttackedCreature, player->getID(), creatureId); } Substitua por: void ProtocolGame::parseAttack(NetworkMessage& msg) { uint32_t creatureId = msg.GetU32(); msg.GetU32(); msg.GetU32(); addGameTask(&Game::playerSetAttackedCreature, player->getID(), creatureId); } Também procure: void ProtocolGame::sendCancelTarget() { NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); msg->AddByte(0xA3); } } Substitua por: void ProtocolGame::sendCancelTarget() { NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); msg->AddByte(0xA3); msg->AddU32(0); } } Em spells.cpp (somente em spells.cpp) Procure: g_game.transformItem(item, item->getID(), std::max((int32_t)0, ((int32_t)item->getCharges()) - 1)); Substitua por: g_game.transformItem(item, item->getID(), std::max((int32_t)0, ((int32_t)item->getItemCount()) - 1)); Em tools.cpp: Procure: {"insects", MAGIC_EFFECT_INSECTS} Substitua por: {"insects", MAGIC_EFFECT_INSECTS}, {"dragonhead", MAGIC_EFFECT_DRAGONHEAD} Em const.h: Procure: MAGIC_EFFECT_INSECTS = 0x44, //68 MAGIC_EFFECT_LAST = MAGIC_EFFECT_INSECTS, Substitua por: MAGIC_EFFECT_INSECTS = 0x44, //68, MAGIC_EFFECT_DRAGONHEAD = 0x45, //69 MAGIC_EFFECT_LAST = MAGIC_EFFECT_DRAGONHEAD, Em game.cpp: Procure: void Game::showHotkeyUseMessage(Player* player, Item* item) { int32_t subType = -1; if(item->hasSubType() && !item->hasCharges()) subType = item->getSubType(); const ItemType& it = Item::items[item->getID()]; uint32_t count = player->__getItemTypeCount(item->getID(), subType, false); char buffer[40 + it.name.size()]; if(count == 1) sprintf(buffer, "Using the last %s...", it.name.c_str()); else sprintf(buffer, "Using one of %d %s...", count, it.pluralName.c_str()); player->sendTextMessage(MSG_INFO_DESCR, buffer); } Substitua por: void Game::showHotkeyUseMessage(Player* player, Item* item) { const ItemType& it = Item::items[item->getID()]; uint32_t count = player->__getItemTypeCount(item->getID(), -1); char buffer[40 + it.name.size()]; if(count == 1) sprintf(buffer, "Using the last %s...", it.name.c_str()); else sprintf(buffer, "Using one of %d %s...", count, it.pluralName.c_str()); player->sendTextMessage(MSG_INFO_DESCR, buffer); } Em npc.cpp: Procure: li.itemId = intValue; Embaixo adicione: const ItemType& it = Item::items[li.itemId]; Também procure: if(readXMLInteger(tmpNode, "subtype", intValue)) li.subType = intValue; Embaixo adicione: else { if(it.stackable) li.subType = 1; else if(it.isFluidContainer() || it.isSplash()) li.subType = 0; } Em item.cpp: Procure: s << "("; if(!it.runeSpellName.empty()) s << "\"" << it.runeSpellName << "\", "; s << "Charges:" << subType <<")"; Embaixo adicione: if(!it.runeSpellName.empty()) s << "(\"" << it.runeSpellName << "\")"; Em luascript.cpp: Procure por: //getCreatureHealth(cid) lua_register(m_luaState, "getCreatureHealth", LuaScriptInterface::luaGetCreatureHealth); Embaixo adicione: //getItemParent(uid) lua_register(m_luaState, "getItemParent", LuaScriptInterface::luaGetItemParent); Também procure por: int32_t LuaScriptInterface::luaGetCreatureHealth(lua_State* L) { //getCreatureHealth(cid) ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) lua_pushnumber(L, creature->getHealth()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Substitua por: int32_t LuaScriptInterface::luaGetItemParent(lua_State* L) { //getItemParent(uid) ScriptEnviroment* env = getEnv(); Item* item = env->getItemByUID(popNumber(L)); if(!item) { errorEx(getError(LUA_ERROR_ITEM_NOT_FOUND)); lua_pushnil(L); return 1; } Item* container = item->getParent()->getItem(); pushThing(L, container, env->addThing(container)); return 1; } Em luascript.h: Procure por: static int32_t luaDoRemoveItem(lua_State* L); Embaixo adicione: static int32_t luaGetItemParent(lua_State* L); Pasta Data: Na pasta data\actions\scripts\liquids\potions.lua: Delete tudo e adicione: local config = { removeOnUse = "no", usableOnTarget = "yes", -- can be used on target? (fe. healing friend) splashable = "no", realAnimation = "no", -- make text effect visible only for players in range 1x1 healthMultiplier = 1.0, manaMultiplier = 1.0 } config.removeOnUse = getBooleanFromString(config.removeOnUse) config.usableOnTarget = getBooleanFromString(config.usableOnTarget) config.splashable = getBooleanFromString(config.splashable) config.realAnimation = getBooleanFromString(config.realAnimation) local POTIONS = { [8704] = {empty = 7636, splash = 2, health = {50, 100}}, -- small health potion [7618] = {empty = 7636, splash = 2, health = {100, 200}}, -- health potion [7588] = {empty = 7634, splash = 2, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8}, vocStr = "knights and paladins"}, -- strong health potion [7591] = {empty = 7635, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion [8473] = {empty = 7635, splash = 2, health = {800, 1000}, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion [7620] = {empty = 7636, splash = 7, mana = {70, 130}}, -- mana potion [7589] = {empty = 7634, splash = 7, mana = {110, 190}, level = 50, vocations = {1, 2, 3, 5, 6, 7}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion [7590] = {empty = 7635, splash = 7, mana = {200, 300}, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion [8472] = {empty = 7635, splash = 3, health = {200, 400}, mana = {110, 190}, level = 80, vocations = {3, 7}, vocStr = "paladins"} -- great spirit potion } local exhaust = createConditionObject(CONDITION_EXHAUST) setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100)) function onUse(cid, item, fromPosition, itemEx, toPosition) local potion = POTIONS[item.itemid] if(not potion) then return false end if(not isPlayer(itemEx.uid) or (not config.usableOnTarget and cid ~= itemEx.uid)) then if(not config.splashable) then return false end if(toPosition.x == CONTAINER_POSITION) then toPosition = getThingPos(item.uid) end doDecayItem(doCreateItem(2016, potion.splash, toPosition)) doTransformItem(item.uid, potion.empty) return true end if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED) return true end if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) and not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) then doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_ORANGE_1) return true end local health = potion.health if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.healthMultiplier))) then return false end local mana = potion.mana if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.manaMultiplier))) then return false end doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE) if(not realAnimation) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1) else for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do if(isPlayer(tid)) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid) end end end doAddCondition(cid, exhaust) local v = getItemParent(item.uid) if(not potion.empty or config.removeOnUse) then return true end if fromPosition.x == CONTAINER_POSITION then for _, slot in ipairs({CONST_SLOT_LEFT, CONST_SLOT_RIGHT, CONST_SLOT_AMMO}) do local tmp = getPlayerSlotItem(cid, slot) if tmp.itemid == potion.empty and tmp.type < 100 then doChangeTypeItem(item.uid, item.type - 1) return getPlayerFreeCap(cid) >= getItemInfo(potion.empty).weight and doChangeTypeItem(tmp.uid, tmp.type + 1) or doPlayerAddItem(cid, potion.empty, 1) end end else doChangeTypeItem(item.uid, item.type - 1) doCreateItem(potion.empty, 1, fromPosition) return true end if v.uid == 0 then if item.type == 1 and isInArray({CONST_SLOT_LEFT, CONST_SLOT_RIGHT, CONST_SLOT_AMMO}, fromPosition.y) then doTransformItem(item.uid, potion.empty) else -- serversided autostack should take care of this doPlayerAddItem(cid, potion.empty, 1) doChangeTypeItem(item.uid, item.type - 1) end return true else doChangeTypeItem(item.uid, item.type - 1) local size = getContainerSize(v.uid) for i = 0, size-1 do local tmp = getContainerItem(v.uid, i) if tmp.itemid == potion.empty and tmp.type < 100 then return getPlayerFreeCap(cid) >= getItemInfo(potion.empty).weight and doChangeTypeItem(tmp.uid, tmp.type + 1) or doPlayerAddItem(cid, potion.empty, 1) end end if getContainerSize(v.uid) < getContainerCap(v.uid) then doAddContainerItem(v.uid, potion.empty) else doPlayerAddItem(cid, potion.empty, 1) end end return true end Na pasta data\lib\000-constant.lua: Procure maleOutfits = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325, 328, 335} femaleOutfits = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324, 329, 336} Subistitua por: maleOutfits = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325, 328, 335, 367} femaleOutfits = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324, 329, 336, 366} Em Data\xml\outfit.xml: Delete tudo e Adicione <?xml version="1.0"?> <outfits> <outfit id="1"> <list gender="0" lookType="136" name="Citizen"/> <list gender="1" lookType="128" name="Citizen"/> </outfit> <outfit id="2"> <list gender="0" lookType="137" name="Hunter"/> <list gender="1" lookType="129" name="Hunter"/> </outfit> <outfit id="3"> <list gender="0" lookType="138" name="Mage"/> <list gender="1" lookType="130" name="Mage"/> </outfit> <outfit id="4"> <list gender="0" lookType="139" name="Knight"/> <list gender="1" lookType="131" name="Knight"/> </outfit> <outfit id="5" premium="yes"> <list gender="0" lookType="140" name="Noblewoman"/> <list gender="1" lookType="132" name="Nobleman"/> </outfit> <outfit id="6" premium="yes"> <list gender="0" lookType="141" name="Summoner"/> <list gender="1" lookType="133" name="Summoner"/> </outfit> <outfit id="7" premium="yes"> <list gender="0" lookType="142" name="Warrior"/> <list gender="1" lookType="134" name="Warrior"/> </outfit> <outfit id="8" premium="yes"> <list gender="0" lookType="147" name="Barbarian"/> <list gender="1" lookType="143" name="Barbarian"/> </outfit> <outfit id="9" premium="yes"> <list gender="0" lookType="148" name="Druid"/> <list gender="1" lookType="144" name="Druid"/> </outfit> <outfit id="10" premium="yes"> <list gender="0" lookType="149" name="Wizard"/> <list gender="1" lookType="145" name="Wizard"/> </outfit> <outfit id="11" premium="yes"> <list gender="0" lookType="150" name="Oriental"/> <list gender="1" lookType="146" name="Oriental"/> </outfit> <outfit id="12" premium="yes"> <list gender="0" lookType="155" name="Pirate"/> <list gender="1" lookType="151" name="Pirate"/> </outfit> <outfit id="13" premium="yes"> <list gender="0" lookType="156" name="Assassin"/> <list gender="1" lookType="152" name="Assassin"/> </outfit> <outfit id="14" premium="yes"> <list gender="0" lookType="157" name="Beggar"/> <list gender="1" lookType="153" name="Beggar"/> </outfit> <outfit id="15" premium="yes"> <list gender="0" lookType="158" name="Shaman"/> <list gender="1" lookType="154" name="Shaman"/> </outfit> <outfit id="16" premium="yes"> <list gender="0" lookType="252" name="Norsewoman"/> <list gender="1" lookType="251" name="Norseman"/> </outfit> <outfit id="17" premium="yes"> <list gender="0" lookType="269" name="Nightmare"/> <list gender="1" lookType="268" name="Nightmare"/> </outfit> <outfit id="18" premium="yes"> <list gender="0" lookType="270" name="Jester"/> <list gender="1" lookType="273" name="Jester"/> </outfit> <outfit id="19" premium="yes"> <list gender="0" lookType="279" name="Brotherhood"/> <list gender="1" lookType="278" name="Brotherhood"/> </outfit> <outfit id="20" premium="yes"> <list gender="0" lookType="288" name="Demonhunter"/> <list gender="1" lookType="289" name="Demonhunter"/> </outfit> <outfit id="21" premium="yes"> <list gender="0" lookType="324" name="Yalaharian"/> <list gender="1" lookType="325" name="Yalaharian"/> </outfit> <outfit id="22" premium="yes"> <list gender="0" lookType="336" name="Warmaster"/> <list gender="1" lookType="335" name="Warmaster"/> </outfit> <outfit id="23" default="0"> <list gender="0" lookType="329" name="Wife"/> <list gender="1" lookType="328" name="Husband"/> </outfit> <outfit id="24" premium="yes"> <list gender="0" lookType="366" name="Wayfarer"/> <list gender="1" lookType="367" name="Wayfarer"/> </outfit> </outfits> Em data\items\items.xml: Delete onde estão configurada as runas a seguinte linha (Em Todas) <attribute key="charges" value="x" /> X: Qualquer numero Arquivos para procurar e repassar: Bom gente eu não gravei como era o antigo desse então procure uma frase e repasse Em container.cpp: Procure e repasse: Cylinder* Container::__queryDestination(int32_t& index, const Thing* thing, Item** destItem, uint32_t&) { if(index == 254 /*move up*/) { index = INDEX_WHEREEVER; *destItem = NULL; Container* parentContainer = dynamic_cast<Container*>(getParent()); if(parentContainer) return parentContainer; return this; } else if(index == 255 /*add wherever*/){ index = INDEX_WHEREEVER; *destItem = NULL; } else if(index >= (int32_t)capacity()){ /* if you have a container, maximize it to show all 20 slots then you open a bag that is inside the container you will have a bag with 8 slots and a "grey" area where the other 12 slots where from the container if you drop the item on that grey area the client calculates the slot position as if the bag has 20 slots */ index = INDEX_WHEREEVER; *destItem = NULL; } const Item* item = thing->getItem(); if(item == NULL){ return this; } if(item->isStackable()){ if(item->getParent() != this){ //try find a suitable item to stack with uint32_t n = 0; for(ItemList::iterator cit = itemlist.begin(); cit != itemlist.end(); ++cit){ if((*cit) != item && (*cit)->getID() == item->getID() && (*cit)->getItemCount() < 100){ *destItem = (*cit); index = n; return this; } ++n; } } } if(index != INDEX_WHEREEVER){ Thing* destThing = __getThing(index); if(destThing) *destItem = destThing->getItem(); Cylinder* subCylinder = dynamic_cast<Cylinder*>(*destItem); if(subCylinder){ index = INDEX_WHEREEVER; *destItem = NULL; return subCylinder; } } return this; } Em item.cpp: Procure e repasse: void Item::setDefaultSubtype() { setItemCount(1); const ItemType& it = items[id]; if(it.charges) setCharges(it.charges); } Em player.cpp: Procure e repasse: Cylinder* Player::__queryDestination(int32_t& index, const Thing* thing, Item** destItem, uint32_t& flags) { if(index == 0 /*drop to capacity window*/ || index == INDEX_WHEREEVER){ *destItem = NULL; const Item* item = thing->getItem(); if(item == NULL){ return this; } //find an appropiate slot std::list<Container*> containerList; for(int i = SLOT_FIRST; i < SLOT_LAST; ++i){ Item* inventoryItem = inventory[i]; if(inventoryItem == tradeItem){ continue; } if(inventoryItem == tradeItem){ continue; } if(inventoryItem){ //try find an already existing item to stack with if(inventoryItem != item && item->isStackable() && inventoryItem->getID() == item->getID() && inventoryItem->getItemCount() < 100){ *destItem = inventoryItem; index = i; return this; } //check sub-containers else if(Container* subContainer = inventoryItem->getContainer()){ Cylinder* tmpCylinder = NULL; int32_t tmpIndex = INDEX_WHEREEVER; Item* tmpDestItem = NULL; tmpCylinder = subContainer->__queryDestination(tmpIndex, item, &tmpDestItem, flags); if(tmpCylinder && tmpCylinder->__queryAdd(tmpIndex, item, item->getItemCount(), flags) == RET_NOERROR){ index = tmpIndex; *destItem = tmpDestItem; return tmpCylinder; } containerList.push_back(subContainer); } } //empty slot else if(__queryAdd(i, item, item->getItemCount(), flags) == RET_NOERROR){ index = i; *destItem = NULL; return this; } } //check deeper in the containers for(std::list<Container*>::iterator it = containerList.begin(); it != containerList.end(); ++it){ for(ContainerIterator iit = (*it)->begin(); iit != (*it)->end(); ++iit){ if(Container* subContainer = (*iit)->getContainer()){ if(subContainer == tradeItem){ continue; } Cylinder* tmpCylinder = NULL; int32_t tmpIndex = INDEX_WHEREEVER; Item* tmpDestItem = NULL; tmpCylinder = subContainer->__queryDestination(tmpIndex, item, &tmpDestItem, flags); if(tmpCylinder && tmpCylinder->__queryAdd(tmpIndex, item, item->getItemCount(), flags) == RET_NOERROR){ index = tmpIndex; *destItem = tmpDestItem; return tmpCylinder; } } } } return this; } Thing* destThing = __getThing(index); if(destThing) *destItem = destThing->getItem(); Cylinder* subCylinder = dynamic_cast<Cylinder*>(destThing); if(subCylinder){ index = INDEX_WHEREEVER; *destItem = NULL; return subCylinder; } else return this; } Downloads: Items.otb (8.6): Clique Aqui Items.xml (8.6): Clique aqui Creditos á: darkhaos - Sources Tauku - Sources BlueSilver - Sources Doidin - Data Cykotitan (O do xtibia) - Sources/Data Eu - Data/Sources Outros - Data/Sources Tutorial atualizado: 24/09/2010 Agora Funciona 99,9% perfeito (deve estar faltando um detalhe ou outro) Recomendo fazer tudo o que está mandando para não ocorrer erros
    1 ponto
  3. Update do The Diamond Server para a nova versão do tibia 8.62 Se encontrar algum bug, reporte neste tópico. A nova versão não foi testada, então se houver algum erro reporte aqui. Essa versão é a 1.0.6 BETA, então não tem as novas features 8.62 Peço desculpas pela demora =D, mais é que eu estava sem PC, então não podia compilar A versão 1.0.5 foi o maior FAIL kk, porque não tem ip-changer pra ela The Diamond Server 1.0.6 BETA Build: 3429 Changelog 1.0.6 BETA: - Suporte 8.62. Changelogs Antigos [Download Server] diamond106_beta.zip [Download Sources] Index of /the diamond server/1.0.6 [Repositorio] Browse Source ---------------------- Se gostou? Comente Visite o site official do The Diamond Server TibiaNetworks LLC
    1 ponto
  4. Wyzoxs

    Depot 8.54

    Bom Galera, meu primeiro Post para baixar, espero que gostem ! Lembrando a versão do Depot é 8.54 Depot medieval , só copiar e colar em seu OT ' "Não sabe fazer isso? Simples , Selecione a area com a tecla SHIFT pressionada, dê CTRL+C e vá até onde quer colar e dê CTRL+V" Aqui vão as Screen Shot : 1º ANDAR 2º ANDAR DOWNLOAD Gostou? Aprovou? REP++
    1 ponto
  5. Vilden

    [Ajuda] Recuperar Conta Gesion

    Estou começando agora a mecher com sites, não tenho certeza se vai funcionar por tanto faça um backtup da pasta htdocs. Então, tente reinstala o site..
    1 ponto
  6. 1 ponto
  7. Msfox

    Erro No Gesior_Acc_Maker

    Os characters que vem do site você pode deletar apenas pelo site pela database jamais, porque se não ele da erro na hora de criar personagem e conta. Ajudei? Rep++
    1 ponto
  8. 9005540

    Movemets Para Depot

    Mas cara eu fiz de tudo e aqui n da certo de jeito nenhum!! olha como ta minhas coisas: Script Depot Tiles! function onStepIn(cid, item, pos) if isPlayer(cid) then actionid = 101 if item.actionid > 100 and item.actionid < 125 then actionid = item.actionid end if actionid > 100 then if (getTilePzInfo(pos) == TRUE) then depotitems = getPlayerDepotItems(cid, actionid - 100) if depotitems == 1 then doPlayerSendTextMessage(cid, 23, 'Your depot contains 1 item.') else doPlayerSendTextMessage(cid, 23, 'Your depot contains '.. depotitems ..' items.') end end end end if item.itemid == 446 or item.itemid == 416 or item.itemid == 3216 then doTransformItem(item.uid, item.itemid+1) elseif item.itemid == 426 then doTransformItem(item.uid, 425) end end function onStepOut(cid, item, pos) if item.itemid == 447 or item.itemid == 417 or item.itemid == 3217 then doTransformItem(item.uid, item.itemid-1) elseif item.itemid == 425 then doTransformItem(item.uid, 426) end end Movements agora xml: <!-- Depot Tiles --> <movevent event="StepIn" actionid="101" script="depot tiles.lua" /> <movevent event="StepIn" itemid="446" script="depot tiles.lua" /> <movevent event="StepOut" itemid="447" script="depot tiles.lua" /> <movevent event="StepIn" itemid="425" script="depot tiles.lua" /> <movevent event="StepOut" itemid="426" script="depot tiles.lua" /> <movevent event="StepIn" itemid="416" script="depot tiles.lua" /> <movevent event="StepOut" itemid="417" script="depot tiles.lua" /> <movevent event="StepIn" itemid="3216" script="depot tiles.lua" /> <movevent event="StepOut" itemid="3217" script="depot tiles.lua" /> e agora oq faço??
    1 ponto
  9. (tabulação fico estranha pq eu uso notepad++) A pedidos arrumei os bugs conhecidos e diminui o script Aqui as mudanças : Funcionamento : A arena funciona da seguinte forma : O player prescisará comprar a permissão no Npc Arena custando o valor especificado no npc. Depois ele deverá passar a porta de permissão que só abrirá se ele tiver os storage de compra e se não houver ninguem fazendo nenhum tipo de arena. Depois ele andará e entrará no teleport que sumonará o bicho equivalente ao seu nivel. Nas arenas ao matar um boss a pedra se transformará em teleport ele andará e será teleportado para a proxima sala. Na ultima sala ele será teleportado para a area das recompensas e ganhará um storage que será a prova que ele termino essa missão. E as portas de permissão recompensa deverá ter esse storage. Na sala ele poderá andar no tile e ganhar seu trofeu e depois escolhe 1 entre os 5 prêmios. O script é dividido em 3 arquivos : Movements Arena : Responsavel pelos antigos arena1, arena e trofeu. Ou seja tudo que é em movimentos Actions  reward.lua : É as recompensas das arenas.  Arena door.lua : Esse arquivo checa se os há players fazendo a arena. Bem recomendo que vc faça o download do mapa que “copiei “ do tibia para ter uma melhor localização ou até editar e usar ele mesmo pq não está tão mal... (Mapa da versão 3.0, pois eskeci de trazer o novo, a unica coisa que mudou eh que a porta depois do npc tem actionid 60000 ao inves da outra.) download mapa Em movimentos crie o arena.lua e adicione --Function by Ta4e 07/11/2008-- --90% Arena quest in tibia rl-- --Version 4.0-- --This script make create a globet, summons monsters and create and delete teleports-- function onStepIn(cid, item, position, fromPosition) getele = getThingfromPos(arenaroom) getele1 = getThingfromPos(arenache1) getele2 = getThingfromPos(arenache2) getele3 = getThingfromPos(arenache3) getele4 = getThingfromPos(arenache4) getele5 = getThingfromPos(arenache5) getele6 = getThingfromPos(arenache6) getele7 = getThingfromPos(arenache7) getele8 = getThingfromPos(arenache8) getele9 = getThingfromPos(arenache9) getele10 = getThingfromPos(arenache10) greenhornstatus = getPlayerStorageValue(cid,5000) scrapperstatus = getPlayerStorageValue(cid,5001) warlordstatus = getPlayerStorageValue(cid,5002) ----------------------------------------------------------------------------------------------------------------- if item.itemid == 1387 and item.actionid == 5110 then doTeleportThing(getele.uid,arenapos,0) doSendMagicEffect(arenapos,10) if warlordstatus == 1 then doSummonCreature(bossw1, monsterpos1) setPlayerStorageValue(cid,5002,2) elseif scrapperstatus == 1 then doSummonCreature(bosss1, monsterpos1) setPlayerStorageValue(cid,5001,2) elseif greenhornstatus == 1 then doSummonCreature(bossg1, monsterpos1) setPlayerStorageValue(cid,5000,2) else doPlayerSendCancel(cid,"You need talk to halvar") end elseif item.itemid == 1387 and item.actionid == 5100 then doTeleportThing(getele1.uid,arenapos2,0) doSendMagicEffect(arenapos2,10) getrem1 = getThingfromPos({x=arenache1.x, y=arenache1.y, z=arenache1.z, stackpos =1}) doCreateItem(1354,1,arenache1) doRemoveItem(getrem1.uid,1) if warlordstatus == 2 then doSummonCreature(bossw2, monsterpos2) elseif scrapperstatus == 2 then doSummonCreature(bosss2, monsterpos2) elseif greenhornstatus == 2 then doSummonCreature(bossg2, monsterpos2) end elseif item.itemid == 1387 and item.actionid == 5101 then doTeleportThing(getele2.uid,arenapos3,0) doSendMagicEffect(arenapos3,10) local getrem2 = getThingfromPos({x=arenache2.x, y=arenache2.y, z=arenache2.z, stackpos =1}) doRemoveItem(getrem2.uid,1) doCreateItem(1354,1,arenache2) if warlordstatus == 2 then doSummonCreature(bossw3, monsterpos3) elseif scrapperstatus == 2 then doSummonCreature(bosss3, monsterpos3) elseif greenhornstatus == 2 then doSummonCreature(bossg3, monsterpos3) end elseif item.itemid == 1387 and item.actionid == 5102 then doTeleportThing(getele3.uid,arenapos4,0) doSendMagicEffect(arenapos4,10) local getrem3 = getThingfromPos({x=arenache3.x, y=arenache3.y, z=arenache3.z, stackpos =1}) doRemoveItem(getrem3.uid,1) doCreateItem(1354,1,arenache3) if warlordstatus == 2 then doSummonCreature(bossw4, monsterpos4) elseif scrapperstatus == 2 then doSummonCreature(bosss4, monsterpos4) elseif greenhornstatus == 2 then doSummonCreature(bossg4, monsterpos4) end elseif item.itemid == 1387 and item.actionid == 5103 then doTeleportThing(getele4.uid,arenapos5,0) doSendMagicEffect(arenapos5,10) local getrem4 = getThingfromPos({x=arenache4.x, y=arenache4.y, z=arenache4.z, stackpos =1}) doRemoveItem(getrem4.uid,1) doCreateItem(1354,1,arenache4) if warlordstatus == 2 then doSummonCreature(bossw5, monsterpos5) elseif scrapperstatus == 2 then doSummonCreature(bosss5, monsterpos5) elseif greenhornstatus == 2 then doSummonCreature(bossg5, monsterpos5) end elseif item.itemid == 1387 and item.actionid == 5104 then doTeleportThing(getele5.uid,arenapos6,0) doSendMagicEffect(arenapos6,10) local getrem5 = getThingfromPos({x=arenache5.x, y=arenache5.y, z=arenache5.z, stackpos =1}) doRemoveItem(getrem5.uid,1) doCreateItem(1354,1,arenache5) if warlordstatus == 2 then doSummonCreature(bossw6, monsterpos6) elseif scrapperstatus == 2 then doSummonCreature(bosss6, monsterpos6) elseif greenhornstatus == 2 then doSummonCreature(bossg6, monsterpos6) end elseif item.itemid == 1387 and item.actionid == 5105 then doTeleportThing(getele6.uid,arenapos7,0) doSendMagicEffect(arenapos7,10) local getrem6 = getThingfromPos({x=arenache6.x, y=arenache6.y, z=arenache6.z, stackpos =1}) doRemoveItem(getrem6.uid,1) doCreateItem(1354,1,arenache6) if warlordstatus == 2 then doSummonCreature(bossw7, monsterpos7) elseif scrapperstatus == 2 then doSummonCreature(bosss7, monsterpos7) elseif greenhornstatus == 2 then doSummonCreature(bossg7, monsterpos7) end elseif item.itemid == 1387 and item.actionid == 5106 then doTeleportThing(getele7.uid,arenapos8,0) doSendMagicEffect(arenapos8,10) local getrem7 = getThingfromPos({x=arenache7.x, y=arenache7.y, z=arenache7.z, stackpos =1}) doRemoveItem(getrem7.uid,1) doCreateItem(1354,1,arenache7) if warlordstatus == 2 then doSummonCreature(bossw8, monsterpos8) elseif scrapperstatus == 2 then doSummonCreature(bosss8, monsterpos8) elseif greenhornstatus == 2 then doSummonCreature(bossg8, monsterpos8) end elseif item.itemid == 1387 and item.actionid == 5107 then doTeleportThing(getele8.uid,arenapos9,0) doSendMagicEffect(arenapos8,10) local getrem8 = getThingfromPos({x=arenache8.x, y=arenache8.y, z=arenache8.z, stackpos =1}) doRemoveItem(getrem8.uid,1) doCreateItem(1354,1,arenache8) if warlordstatus == 2 then doSummonCreature(bossw9, monsterpos9) elseif scrapperstatus == 2 then doSummonCreature(bosss9, monsterpos9) elseif greenhornstatus == 2 then doSummonCreature(bossg9, monsterpos9) end elseif item.itemid == 1387 and item.actionid == 5108 then doTeleportThing(getele9.uid,arenapos10,0) doSendMagicEffect(arenapos9,10) local getrem9 = getThingfromPos({x=arenache9.x, y=arenache9.y, z=arenache9.z, stackpos =1}) doRemoveItem(getrem9.uid,1) doCreateItem(1354,1,arenache9) if warlordstatus == 2 then doSummonCreature(bossw10, monsterpos10) elseif scrapperstatus == 2 then doSummonCreature(bosss10, monsterpos10) elseif greenhornstatus == 2 then doSummonCreature(bossg10, monsterpos10) end elseif item.itemid == 1387 and item.actionid == 5109 then doTeleportThing(getele10.uid,rewardpos,0) doSendMagicEffect(rewardpos,10) local getrem10 = getThingfromPos({x=arenache10.x, y=arenache10.y, z=arenache10.z, stackpos =1}) doRemoveItem(getrem10.uid,1) doCreateItem(1354,1,arenache10) if warlordstatus == 2 then setPlayerStorageValue(cid,5002,3) setPlayerStorageValue(cid,5007,1) elseif scrapperstatus == 2 then setPlayerStorageValue(cid,5001,3) setPlayerStorageValue(cid,5006,1) elseif greenhornstatus == 2 then setPlayerStorageValue(cid,5000,3) setPlayerStorageValue(cid,5005,1) end elseif item.itemid == 1387 and item.actionid == 5111 then if warlordstatus == 2 then setPlayerStorageValue(cid,5002,0) elseif scrapperstatus == 2 then setPlayerStorageValue(cid,5001,0) elseif greenhornstatus == 2 then setPlayerStorageValue(cid,5000,0) end elseif item.itemid == 426 then if item.actionid == 5010 then doTransformItem(item.uid, 425) if getPlayerStorageValue(cid,5017) == -1 then local golden = doCreateItem(8698,1,globet1) doSetItemSpecialDescription(golden, 'rox by'..getPlayerName(cid)..'.') doSendMagicEffect(globet1,10) setPlayerStorageValue(cid,5017,1) else doSendMagicEffect(globet1,2) end elseif item.actionid == 5011 then doTransformItem(item.uid, 425) if getPlayerStorageValue(cid,5016) == -1 then local golden = doCreateItem(7370,1,globet2) doSetItemSpecialDescription(golden, 'rox by'..getPlayerName(cid)..'.') doSendMagicEffect(globet2,10) setPlayerStorageValue(cid,5016,1) else doSendMagicEffect(globet2,2) end elseif item.actionid == 5012 then doTransformItem(item.uid, 425) if getPlayerStorageValue(cid,5015) == -1 then local golden = doCreateItem(7371,1,globet3) doSetItemSpecialDescription(golden, 'rox by'..getPlayerName(cid)..'.') doSendMagicEffect(globet3,10) setPlayerStorageValue(cid,5015,1) else doSendMagicEffect(globet3,2) end end end return TRUE end function onAddItem(moveitem, tileitem, position) if moveitem.itemid == 7349 and tileitem.actionid == 5000 then local getrem1 = getThingfromPos({x=arenache1.x, y=arenache1.y, z=arenache1.z, stackpos =1}) doRemoveItem(getrem1.uid,1) doCreateItem(1387,1,arenache1) doMakeEffect(arenache1,13) local getrem1 = getThingfromPos({x=arenache1.x, y=arenache1.y, z=arenache1.z, stackpos =1}) doSetItemActionId(getrem1.uid,5100) elseif moveitem.itemid == 7349 and tileitem.actionid == 5001 then local getrem2 = getThingfromPos({x=arenache2.x, y=arenache2.y, z=arenache2.z, stackpos =1}) doRemoveItem(getrem2.uid,1) doCreateItem(1387,1,arenache2) doMakeEffect(arenache2,13) local getrem2 = getThingfromPos({x=arenache2.x, y=arenache2.y, z=arenache2.z, stackpos =1}) doSetItemActionId(getrem2.uid,5101) elseif moveitem.itemid == 7349 and tileitem.actionid == 5002 then local getrem3 = getThingfromPos({x=arenache3.x, y=arenache3.y, z=arenache3.z, stackpos =1}) doRemoveItem(getrem3.uid,1) doCreateItem(1387,1,arenache3) doMakeEffect(arenache3,13) local getrem3 = getThingfromPos({x=arenache3.x, y=arenache3.y, z=arenache3.z, stackpos =1}) doSetItemActionId(getrem3.uid,5102) elseif moveitem.itemid == 7349 and tileitem.actionid == 5003 then local getrem4 = getThingfromPos({x=arenache4.x, y=arenache4.y, z=arenache4.z, stackpos =1}) doRemoveItem(getrem4.uid,1) doCreateItem(1387,1,arenache4) doMakeEffect(arenache4,13) local getrem4 = getThingfromPos({x=arenache4.x, y=arenache4.y, z=arenache4.z, stackpos =1}) doSetItemActionId(getrem4.uid,5103) elseif moveitem.itemid == 7349 and tileitem.actionid == 5004 then local getrem5 = getThingfromPos({x=arenache5.x, y=arenache5.y, z=arenache5.z, stackpos =1}) doRemoveItem(getrem5.uid,1) doCreateItem(1387,1,arenache5) doMakeEffect(arenache5,13) local getrem5 = getThingfromPos({x=arenache5.x, y=arenache5.y, z=arenache5.z, stackpos =1}) doSetItemActionId(getrem5.uid,5104) elseif moveitem.itemid == 7349 and tileitem.actionid == 5005 then local getrem6 = getThingfromPos({x=arenache6.x, y=arenache6.y, z=arenache6.z, stackpos =1}) doRemoveItem(getrem6.uid,1) doCreateItem(1387,1,arenache6) doMakeEffect(arenache6,13) local getrem6 = getThingfromPos({x=arenache6.x, y=arenache6.y, z=arenache6.z, stackpos =1}) doSetItemActionId(getrem6.uid,5105) elseif moveitem.itemid == 7349 and tileitem.actionid == 5006 then local getrem7 = getThingfromPos({x=arenache7.x, y=arenache7.y, z=arenache7.z, stackpos =1}) doRemoveItem(getrem7.uid,1) doCreateItem(1387,1,arenache7) doMakeEffect(arenache7,13) local getrem7 = getThingfromPos({x=arenache7.x, y=arenache7.y, z=arenache7.z, stackpos =1}) doSetItemActionId(getrem7.uid,5106) elseif moveitem.itemid == 7349 and tileitem.actionid == 5007 then local getrem8 = getThingfromPos({x=arenache8.x, y=arenache8.y, z=arenache8.z, stackpos =1}) doRemoveItem(getrem8.uid,1) doCreateItem(1387,1,arenache8) doMakeEffect(arenache8,13) local getrem8 = getThingfromPos({x=arenache8.x, y=arenache8.y, z=arenache8.z, stackpos =1}) doSetItemActionId(getrem8.uid,5107) elseif moveitem.itemid == 7349 and tileitem.actionid == 5008 then local getrem9 = getThingfromPos({x=arenache9.x, y=arenache9.y, z=arenache9.z, stackpos =1}) doRemoveItem(getrem9.uid,1) doCreateItem(1387,1,arenache9) doMakeEffect(arenache9,13) local getrem9 = getThingfromPos({x=arenache9.x, y=arenache9.y, z=arenache9.z, stackpos =1}) doSetItemActionId(getrem9.uid,5108) elseif moveitem.itemid == 7349 and tileitem.actionid == 5009 then local getrem10 = getThingfromPos({x=arenache10.x, y=arenache10.y, z=arenache10.z, stackpos =1}) doRemoveItem(getrem10.uid,1) doCreateItem(1387,1,arenache10) doMakeEffect(arenache10,13) local getrem10 = getThingfromPos({x=arenache10.x, y=arenache10.y, z=arenache10.z, stackpos =1}) doSetItemActionId(getrem10.uid,5109) end end Nesse novo script, voce prescisa apenas colocar a coordenada especificada como here player teleport da primeira arena (a marrom msm). Mais isso se configura no lib dos movements. Em movements/lib/movement.lua add : --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- arenapos={x=1172, y=925, z=7} --posição do meio da primeira arena rewardpos={x=1208, y=899, z=6} --posicao que ele ira ao matar o ultimo boss-- arenaroom={x=1205,y=934, z=7, stackpos =253} - posição do teleport q ira para a primeira arena-- --posicao que criara os trofeus-- globet1 = {x=1215, y=869, z=7, stackpos = 1} -- warlord globet2 = {x=1215, y=876, z=7, stackpos = 1} --scrapper globet3 = {x=1215, y=883, z=7, stackpos = 1} --greenhorn --Bosses of Warlord Arena-- bossw1 = "webster" bossw2 = "darakan the executioner" bossw3 = "norgle glacierbeard" bossw4 = "the pit lord" bossw5 = "svoren the mad" bossw6 = "the masked marauder" bossw7 = "gnorre chyllson" bossw8 = "fallen mooh'tah master ghar" bossw9 = "deathbringer" bossw10 = "the obliverator" --Bosses of Scrapper Arena-- bosss1 = "avalanche" bosss2 = "kreebosh the exile" bosss3 = "The Dark Dancer" bosss4 = "the hag" bosss5 = "slim" bosss6 = "Grimgor Guteater" bosss7 = "drasilla" bosss8 = "spirit of earth" bosss9 = "spirit of water" bosss10 = "spirit of fire" --Bosses of Greenhorn Arena-- bossg1 = "frostfur" bossg2 = "bloodpaw" bossg3 = "bovinus" bossg4 = "achad" bossg5 = "colerian the barbarian" bossg6 = "the hairy one" bossg7 = "axeitus headbanger" bossg8 = "rocky" bossg9 = "cursed gladiator" bossg10 = "Orcus the cruel" --------------------------------------------------------------------------------------------------------------------------------------------------- --Posicoes de chegada-- arenapos2={x=arenapos.x-12, y=arenapos.y, z=arenapos.z, stackpos = 1} arenapos3={x=arenapos.x-24, y=arenapos.y, z=arenapos.z, stackpos = 1} arenapos4={x=arenapos.x-36, y=arenapos.y, z=arenapos.z, stackpos = 1} arenapos5={x=arenapos.x-30, y=arenapos.y-12, z=arenapos.z, stackpos = 1} arenapos6={x=arenapos.x-18, y=arenapos.y-12, z=arenapos.z, stackpos = 1} arenapos7={x=arenapos.x-6, y=arenapos.y-12, z=arenapos.z, stackpos = 1} arenapos8={x=arenapos.x-12, y=arenapos.y-25, z=arenapos.z, stackpos = 1} arenapos9={x=arenapos.x-24, y=arenapos.y-25, z=arenapos.z, stackpos = 1} arenapos10={x=arenapos.x-18, y=arenapos.y-38, z=arenapos.z, stackpos = 1} --Posicoes de teleport-- arenache1={x=arenapos.x-5, y=arenapos.y, z=arenapos.z, stackpos = 253} arenache2={x=arenapos.x-17, y=arenapos.y, z=arenapos.z, stackpos = 253} arenache3={x=arenapos.x-29, y=arenapos.y, z=arenapos.z, stackpos = 253} arenache4={x=arenapos.x-41, y=arenapos.y, z=arenapos.z, stackpos = 253} arenache5={x=arenapos.x-35, y=arenapos.y-12, z=arenapos.z, stackpos = 253} arenache6={x=arenapos.x-23, y=arenapos.y-12, z=arenapos.z, stackpos = 253} arenache7={x=arenapos.x-11, y=arenapos.y-12, z=arenapos.z, stackpos = 253} arenache8={x=arenapos.x-17, y=arenapos.y-25, z=arenapos.z, stackpos = 253} arenache9={x=arenapos.x-29, y=arenapos.y-25, z=arenapos.z, stackpos = 253} arenache10={x=arenapos.x-23, y=arenapos.y-38, z=arenapos.z, stackpos = 253} --Posição de Sumonar monstros-- monsterpos1={x=arenapos.x+1, y=arenapos.y-3, z=arenapos.z, stackpos =1} monsterpos2={x=arenapos2.x+1, y=arenapos2.y-3, z=arenapos2.z, stackpos =1} monsterpos3={x=arenapos3.x+1, y=arenapos3.y-3, z=arenapos3.z, stackpos =1} monsterpos4={x=arenapos4.x+1, y=arenapos4.y-3, z=arenapos4.z, stackpos =1} monsterpos5={x=arenapos5.x+1, y=arenapos5.y-3, z=arenapos5.z, stackpos =1} monsterpos6={x=arenapos6.x+1, y=arenapos6.y-3, z=arenapos6.z, stackpos =1} monsterpos7={x=arenapos7.x+1, y=arenapos7.y-3, z=arenapos7.z, stackpos =1} monsterpos8={x=arenapos8.x+1, y=arenapos8.y-3, z=arenapos8.z, stackpos =1} monsterpos9={x=arenapos9.x+1, y=arenapos9.y-3, z=arenapos9.z, stackpos =1} monsterpos10={x=arenapos10.x+1, y=arenapos10.y-3, z=arenapos10.z, stackpos =1} --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- function doMakeEffect(pos,effect) pos1={x=pos.x+1, y=pos.y, z=pos.z} pos2={x=pos.x+1, y=pos.y+1, z=pos.z} pos3={x=pos.x+1, y=pos.y-1, z=pos.z} doSendMagicEffect(pos,effect) doSendMagicEffect(pos1,effect) doSendMagicEffect(pos2,effect) doSendMagicEffect(pos3,effect) end e em movements.xml add : <!-- Arena --> <movevent event="AddItem" tileitem="1" actionid="5000" script="arena.lua"/> <movevent event="AddItem" tileitem="1" actionid="5001" script="arena.lua"/> <movevent event="AddItem" tileitem="1" actionid="5002" script="arena.lua"/> <movevent event="AddItem" tileitem="1" actionid="5003" script="arena.lua"/> <movevent event="AddItem" tileitem="1" actionid="5004" script="arena.lua"/> <movevent event="AddItem" tileitem="1" actionid="5005" script="arena.lua"/> <movevent event="AddItem" tileitem="1" actionid="5006" script="arena.lua"/> <movevent event="AddItem" tileitem="1" actionid="5007" script="arena.lua"/> <movevent event="AddItem" tileitem="1" actionid="5008" script="arena.lua"/> <movevent event="AddItem" tileitem="1" actionid="5009" script="arena.lua"/> <movevent event="StepIn" actionid="5010" script="arena.lua"/> <movevent event="StepIn" actionid="5011" script="arena.lua"/> <movevent event="StepIn" actionid="5012" script="arena.lua"/> <movevent event="StepIn" actionid="5100" script="arena.lua"/> <movevent event="StepIn" actionid="5101" script="arena.lua"/> <movevent event="StepIn" actionid="5102" script="arena.lua"/> <movevent event="StepIn" actionid="5103" script="arena.lua"/> <movevent event="StepIn" actionid="5104" script="arena.lua"/> <movevent event="StepIn" actionid="5105" script="arena.lua"/> <movevent event="StepIn" actionid="5106" script="arena.lua"/> <movevent event="StepIn" actionid="5107" script="arena.lua"/> <movevent event="StepIn" actionid="5108" script="arena.lua"/> <movevent event="StepIn" actionid="5109" script="arena.lua"/> <movevent event="StepIn" actionid="5110" script="arena.lua"/> Agora em actions/scripts adicione o reward.lua e coloque : --Function by Ta4e 07/11/2008-- --90% Arena quest in tibia rl-- --Version 4.0-- function onUse(cid, item, frompos, item2, topos) --Storages values when you win a reward-- warlord = 5012 scrapper = 5011 greenhorn = 5010 --Caution when modify-- -------------------------------------------------------------------------------------------------- --ARENA warlord-- if item.uid == 5300 then queststatus = getPlayerStorageValue(cid,warlord) if queststatus == -1 then if getPlayerFreeCap(cid) >= 39.00 then doPlayerSendTextMessage(cid,24,"You have found a blessed sceptre.") doPlayerAddItem(cid,7429,1) setPlayerStorageValue(cid,warlord,1) else doPlayerSendTextMessage(cid,24,"You have found a blessed sceptre. Weighing 39.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end elseif item.uid == 5301 then queststatus = getPlayerStorageValue(cid,warlord) if queststatus == -1 then if getPlayerFreeCap(cid) >= 92.00 then doPlayerSendTextMessage(cid,24,"You have found a Royal Axe.") doPlayerAddItem(cid,7434,1) setPlayerStorageValue(cid,warlord,1) else doPlayerSendTextMessage(cid,24,"You have found a Royal Axe. Weighing 92.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end elseif item.uid == 5302 then queststatus = getPlayerStorageValue(cid,warlord) if queststatus == -1 then if getPlayerFreeCap(cid) >= 50.00 then doPlayerSendTextMessage(cid,24,"You have found a justice seeker.") doPlayerAddItem(cid,7390,1) setPlayerStorageValue(cid,warlord,1) else doPlayerSendTextMessage(cid,24,"You have found a justice seeker. Weighing 50.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end elseif item.uid == 5303 then queststatus = getPlayerStorageValue(cid,warlord) if queststatus == -1 then if getPlayerFreeCap(cid) >= 20.00 then doPlayerSendTextMessage(cid,24,"You have found a present.") container = doPlayerAddItem(cid,1990,1) doAddContainerItem(container, 6558, 1) --panda doAddContainerItem(container, 6574, 1) --chocolate doAddContainerItem(container, 6569,10) --candy doAddContainerItem(container, 7372, 1) --ice cream setPlayerStorageValue(cid,warlord,1) else doPlayerSendTextMessage(cid,24,"You have found a present. Weighing 20.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end elseif item.uid == 5304 then queststatus = getPlayerStorageValue(cid,warlord) if queststatus == -1 then if getPlayerFreeCap(cid) >= 110.00 then doPlayerSendTextMessage(cid,24,"You have found a backpack.") container = doPlayerAddItem(cid,7342,1) doAddContainerItem(container, 2268, 50) doAddContainerItem(container, 2273, 50) doAddContainerItem(container, 7440, 1) doAddContainerItem(container, 7439, 1) doAddContainerItem(container, 6529, 100) setPlayerStorageValue(cid,warlord,1) else doPlayerSendTextMessage(cid,24,"You have found a backpack. Weighing 110.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end --ARENA scrapper-- elseif item.uid == 5305 then queststatus = getPlayerStorageValue(cid,scrapper) if queststatus == -1 then if getPlayerFreeCap(cid) >= 78.00 then doPlayerSendTextMessage(cid,24,"You have found a Cranial Basher.") doPlayerAddItem(cid,4715,1) setPlayerStorageValue(cid,scrapper,1) else doPlayerSendTextMessage(cid,24,"You have found a Cranial Basher. Weighing 78.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end elseif item.uid == 5306 then queststatus = getPlayerStorageValue(cid,scrapper) if queststatus == -1 then if getPlayerFreeCap(cid) >= 61.00 then doPlayerSendTextMessage(cid,24,"You have found a heroic axe.") doPlayerAddItem(cid,7751,1) setPlayerStorageValue(cid,scrapper,1) else doPlayerSendTextMessage(cid,24,"You have found a heroic axe. Weighing 61.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end elseif item.uid == 5307 then queststatus = getPlayerStorageValue(cid,scrapper) if queststatus == -1 then if getPlayerFreeCap(cid) >= 35.00 then doPlayerSendTextMessage(cid,24,"You have found a mystic blade.") doPlayerAddItem(cid,7765,1) setPlayerStorageValue(cid,scrapper,1) else doPlayerSendTextMessage(cid,24,"You have found a mystic blade. Weighing 35.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end elseif item.uid == 5308 then queststatus = getPlayerStorageValue(cid,scrapper) if queststatus == -1 then if getPlayerFreeCap(cid) >= 15.00 then doPlayerSendTextMessage(cid,24,"You have found a present.") container = doPlayerAddItem(cid,1990,1) doAddContainerItem(container, 7184, 1) doAddContainerItem(container, 6574, 1) --chocolate doAddContainerItem(container, 6569,10) --candy doAddContainerItem(container, 7372, 1) --ice cream setPlayerStorageValue(cid,scrapper,1) else doPlayerSendTextMessage(cid,24,"You have found a present. Weighing 15.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end elseif item.uid == 5309 then queststatus = getPlayerStorageValue(cid,scrapper) if queststatus == -1 then if getPlayerFreeCap(cid) >= 158.00 then doPlayerSendTextMessage(cid,24,"You have found a backpack.") container = doPlayerAddItem(cid,7342,1) doAddContainerItem(container, 2304, 50) doAddContainerItem(container, 2311, 50) doAddContainerItem(container, 7365, 100) doAddContainerItem(container, 2457, 100) setPlayerStorageValue(cid,scrapper,1) else doPlayerSendTextMessage(cid,24,"You have found a backpack. Weighing 158.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end --ARENA greenhorn-- elseif item.uid == 5310 then queststatus = getPlayerStorageValue(cid,greenhorn) if queststatus == -1 then if getPlayerFreeCap(cid) >= 158.00 then doPlayerSendTextMessage(cid,24,"You have found a backpack.") container = doPlayerAddItem(cid,7342,1) doAddContainerItem(container, 7364, 100) doAddContainerItem(container, 7365, 100) setPlayerStorageValue(cid,greenhorn,1) else doPlayerSendTextMessage(cid,24,"You have found a backpack. Weighing 158.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end elseif item.uid == 5311 then queststatus = getPlayerStorageValue(cid,greenhorn) if queststatus == -1 then if getPlayerFreeCap(cid) >= 54.00 then doPlayerSendTextMessage(cid,24,"You have found a orcish maul.") doPlayerAddItem(cid,7392,1) setPlayerStorageValue(cid,greenhorn,1) else doPlayerSendTextMessage(cid,24,"You have found a orcish maul. Weighing 54.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end elseif item.uid == 5312 then queststatus = getPlayerStorageValue(cid,greenhorn) if queststatus == -1 then if getPlayerFreeCap(cid) >= 59.00 then doPlayerSendTextMessage(cid,24,"You have found a Blacksteel Sword.") doPlayerAddItem(cid,7406,1) setPlayerStorageValue(cid,greenhorn,1) else doPlayerSendTextMessage(cid,24,"You have found a Blacksteel Sword. Weighing 59.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end elseif item.uid == 5313 then queststatus = getPlayerStorageValue(cid,greenhorn) if queststatus == -1 then if getPlayerFreeCap(cid) >= 73.80 then doPlayerSendTextMessage(cid,24,"You have found a HeadChopper.") doPlayerAddItem(cid,7380,1) setPlayerStorageValue(cid,greenhorn,1) else doPlayerSendTextMessage(cid,24,"You have found a HeadChopper. Weighing 73.80 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end elseif item.uid == 5314 then queststatus = getPlayerStorageValue(cid,greenhorn) if queststatus == -1 then if getPlayerFreeCap(cid) >= 18.00 then doPlayerSendTextMessage(cid,24,"You have found a present.") container = doPlayerAddItem(cid,1990,1) doAddContainerItem(container, 2114, 1) doAddContainerItem(container, 6570, 1) doAddContainerItem(container, 6574, 1) doAddContainerItem(container, 2668,10) doAddContainerItem(container, 7372, 1) setPlayerStorageValue(cid,greenhorn,1) else doPlayerSendTextMessage(cid,24,"You have found a present. Weighing 18.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end end return 1 end e crie também o arena door.lua e adicione : --Function by Ta4e 28/09/2008-- --90% Arena quest in tibia rl-- --Version 4.0-- function onUse(cid, item, fromPosition, itemEx, toPosition) --Storages of Arena NPC-- greenhorn = 5000 scrapper = 5001 warlord = 5002 starting={x=1132, y=882, z=7, stackpos=253} ending={x=1176, y=929, z=7, stackpos=253} trash= {x=1169, y=725, z=13} --------------------------------------------------------------------------------------------------------------------- greenhornstatus = getPlayerStorageValue(cid,greenhorn) scrapperstatus = getPlayerStorageValue(cid,scrapper) warlordstatus = getPlayerStorageValue(cid,warlord) checking={x=starting.x, y=starting.y, z=starting.z, stackpos=starting.stackpos} if item.itemid == 5132 and item.actionid == 60000 then if warlordstatus == 1 or scrapperstatus == 1 or greenhornstatus == 1 then players=0 totalmonsters=0 monster = {} repeat creature= getThingfromPos(checking) if creature.itemid > 0 then if getPlayerAccess(creature.uid) == 0 then players=players+1 end if getPlayerAccess(creature.uid) ~= 0 and getPlayerAccess(creature.uid) ~= 3 then totalmonsters=totalmonsters+1 monster[totalmonsters]=creature.uid end end checking.x=checking.x+1 if checking.x>ending.x then checking.x=starting.x checking.y=checking.y+1 end until checking.y>ending.y if players==0 then current=0 repeat current=current+1 doTeleportThing(monster[current],trash) until current>=totalmonsters doTransformItem(item.uid, 5133) doTeleportThing(cid, toPosition, TRUE) end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You need permission of Halvar to enter in Arena.") end end end </div></div> Esse starting e a posicao de cima q abrange todos os tile da arena ou seja o mais noroeste possivel Ja o ending eh o mais sudeste possivel com a msm caracteristicas Para ele não dar erro vai em others/door.lua e modifique a parte if isInArray(questDoors, item.itemid) == TRUE then if getPlayerStorageValue(cid, item.actionid) ~= -1 then por if isInArray(questDoors, item.itemid) == TRUE and itemEx.actionid < 59999 then if getPlayerStorageValue(cid, item.actionid) >= 1 then e agora em actions.xml adicione : <action uniqueid="5300" script="Reward.lua" /> <action uniqueid="5301" script="Reward.lua" /> <action uniqueid="5302" script="Reward.lua" /> <action uniqueid="5303" script="Reward.lua" /> <action uniqueid="5304" script="Reward.lua" /> <action uniqueid="5305" script="Reward.lua" /> <action uniqueid="5306" script="Reward.lua" /> <action uniqueid="5307" script="Reward.lua" /> <action uniqueid="5308" script="Reward.lua" /> <action uniqueid="5309" script="Reward.lua" /> <action uniqueid="5310" script="Reward.lua" /> <action uniqueid="5311" script="Reward.lua" /> <action uniqueid="5312" script="Reward.lua" /> <action uniqueid="5313" script="Reward.lua" /> <action uniqueid="5314" script="Reward.lua" /> <action actionid="60000" script="arena door.lua"/> NPCS Esse npc é o novo adaptado para TFS 0.3.0 alpha 3 em npc\scripts adiciona arena.lua com isso : 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 msgcontains(msg, 'fight') then selfSay('So you agree to the rules and want to participate in the challenge? Which difficulty do you choose, {Greenhorn}, {Scrapper} or {Warlord}?', cid) talkState[talkUser] = 2 elseif msgcontains(msg, 'rules') then selfSay('What do you want to know? Something about the three different {DIFICULTIES}, the {GENERAL} rules or the {PRICES}? Maybe you also want to know what happens when you die?', cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if msgcontains(msg, 'dificulties') then selfSay('We have three difficulty. The easiest are Greenhorn, the medium are scrapper and the hardest are warlord.', cid) talkState[talkUser] = 0 elseif msgcontains(msg, 'general') then selfSay('Remember that if you die, it is YOUR problem and you won\'t be able to get back to your corpse and your backpack.If you enter in arena or you win or you go to temple.', cid) talkState[talkUser] = 0 elseif msgcontains(msg, 'prices') then selfSay('A greenhorn cost 1000 gold, scrapper cost 5000 golds and a great warlord cost 10000 golds.', cid) talkState[talkUser] = 0 end elseif talkState[talkUser] == 2 then if msgcontains(msg, 'greenhorn') then selfSay('The fee is 1000 gold for one try. Remember that if you die, it is YOUR problem and you won\'t be able to get back to your corpse andyour backpack. Do you really want to participate in the arena in the easiest difficulty?', cid) talkState[talkUser] = 3 elseif msgcontains(msg, 'scrapper') then selfSay('The fee is 5000 gold for one try. Remember that if you die, it is YOUR problem and you won\'t be able to get back to your corpse and your backpack. Do you really want to participate in the arena in the medium difficulty?', cid) talkState[talkUser] = 4 elseif msgcontains(msg, 'warlord') then selfSay('The fee is 10000 gold for one try. Remember that if you die, it is YOUR problem and you won\'t be able to get back to your corpse and your backpack. Do you really want to participate in the arena in the hardest difficulty?', cid) talkState[talkUser] = 5 end elseif talkState[talkUser] == 3 then if msgcontains(msg, 'yes') then if getPlayerStorageValue(cid,5005) == -1 then if(doPlayerRemoveMoney(cid, 1000) == TRUE) then setPlayerStorageValue(cid,5000,1) selfSay('As you wish! You can pass the door now and enter the teleporter to the pits.', cid) end else selfSay('You already win this arena!', cid) end else selfSay('Then not. Get away and don\'t waste my time!', cid) end elseif talkState[talkUser] == 4 then if msgcontains(msg, 'yes') then if getPlayerStorageValue(cid,5006) == -1 then if(doPlayerRemoveMoney(cid, 5000) == TRUE) then setPlayerStorageValue(cid,5001,1) selfSay('As you wish! You can pass the door now and enter the teleporter to the pits.', cid) end else selfSay('You already win this arena!', cid) end else selfSay('Then not. Get away and don\'t waste my time!', cid) end elseif talkState[talkUser] == 5 then if msgcontains(msg, 'yes') then if getPlayerStorageValue(cid,5007) == -1 then if(doPlayerRemoveMoney(cid, 10000) == TRUE) then setPlayerStorageValue(cid,5002,1) selfSay('As you wish! You can pass the door now and enter the teleporter to the pits.', cid) end else selfSay('You already win this arena!', cid) end else selfSay('Then not. Get away and don\'t waste my time!', cid) end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then talkState[talkUser] = 0 selfSay('Ok then.', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) e em npcs adiciona o halvar.xml <npc name="Halvar" script="data/npc/scripts/arena.lua" floorchange="0" access="5"> <health now="150" max="150"/> <look type="143" head="2" body="112" legs="78" feet="116" addons="2" corpse="2212"/> <parameters> <parameter key="message_greet" value="Hello competitor! Do you want to {fight} in the arena or shall I explain the {rules} first "/> </parameters></npc> Bem é isso qualquer bug reporte
    1 ponto
  10. miter

    Monstereditor 4.0

    Legal
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...