Líderes
-
Guilherme.
HéroiPontos580Total de itens -
-
-
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 11/02/11 em todas áreas
-
[CreatureEvent] Rank Militar
[CreatureEvent] Rank Militar
Mathias Silva e um outro reagiu a Guilherme. por uma resposta no tópico
2 pontosOlá galerinha do Tibia King ! Hoje vim trazer para vocês um MOD que achei muito foda. O script atribui um 'rank' militar ao player que tem certa quantidade de frags, é parecido com o REP System, bom agora vamos aos 'finalmente' ! Primeiro entre em /mods/ e crie um arquivo com o nome de ranks.xml agora coloque o código abaixo, salve e feche o arquivo. Você pode editar facilmente o nome do Rank e a quantidade de Frags necessários para obtelo seguindo o padrão: [1] - Quantidade de Frags "Private First Class" - Nome do Rank <?xml version = "1.0" encoding = "UTF-8"?> <mod name = "Military Ranks" version = "1.0" author = "Teckman" enabled = "yes"> <config name = "ranks"><![CDATA[ titles = { [5] = "Private First Class", [10] = "Specialist", [15] = "Corporal", [20] = "Sergeant", [25] = "Staff Sergeant", [30] = "Sergeant First Class", [35] = "Master Sergeant", [40] = "First Sergeant", [45] = "Sergeant Major", [50] = "Command Sergeant Major", [55] = "Sergeant Major of the Army", [60] = "Second Lieutenant", [65] = "First Lieutenant", [70] = "Captain", [75] = "Major", [80] = "Lieutenant Colonel", [90] = "Colonel", [100] = "Brigadier General", [110] = "Major General", [120] = "Lieutenant General", [140] = "General", [170] = "General of the Army" } fragsStorage = 600 ]]></config> <event type = "look" name = "ranksLook" event = "script"><![CDATA[ domodlib("ranks") function onLook(cid, thing, position, lookDistance) if(isPlayer(thing.uid)) then local rank = {rank = "Private", frags = 0} for k, v in pairs(titles) do if(math.max(0, getPlayerStorageValue(thing.uid, fragsStorage)) > k - 1) then if(k - 1 > rank.frags) then rank.rank, rank.frags = v, k - 1 end end end doPlayerSetSpecialDescription(thing.uid, "\n Military rank: " .. rank.rank) end return true end ]]></event> <event type = "kill" name = "ranksKill" event = "script"><![CDATA[ domodlib("ranks") function onKill(cid, target) if(isPlayer(target)) then setPlayerStorageValue(cid, fragsStorage, math.max(0, getPlayerStorageValue(cid, fragsStorage) + 1)) if(titles[getPlayerStorageValue(cid, fragsStorage)]) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You advanced to military rank: " .. titles[getPlayerStorageValue(cid, fragsStorage)] .. ". Congratulations " .. titles[getPlayerStorageValue(cid, fragsStorage)] .. "!") end end return true end ]]></event> <event type = "login" name = "ranksLogin" event = "script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid, "ranksKill") registerCreatureEvent(cid, "ranksLook") return true end ]]></event> </mod> Os créditos do script vão para Teckman;2 pontos -
NPC Reflect Item
NPC Reflect Item
1215171 e um outro reagiu a Aluccard por uma resposta no tópico
2 pontosOlá! A pedidos de muitos, resolvi fazer um npc de reflect que não possui segredo algum. Simplesmente coloque o código que segue abaixo na pasta indicada e pronto. Estará resolvido, você terá um npc que vende items de reflect. Coloque esse arquivo na pasta data\npc Cody.xml <?xml version="1.0" encoding="UTF-8"?> <npc name="Cody" script="data/npc/scripts/Cody.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="143" head="95" body="94" legs="132" feet="86" addons="2"/> </npc> Agora dentro da pasta data\npc\script Cody.lua local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 -- Config -- local reflectid = 2341 local percent = 20 local cost = 10000 function AddReflectItem(cid, message, keywords, parameters, node) if(not npcHandler:isFocused(cid)) then return false end if doPlayerRemoveMoney(cid, cost) then if doPlayerAddReflectedItem(cid, reflectid, percent) then return true else selfSay("No momento estou indisponivel.") doPlayerAddMoney(cid, cost) return false end else selSay("Voce não possui o dinheiro total!") return false end end reflect = keywordHandler:addKeyword({'reflect'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'You want to buy a reflect item? It cost '.. cost ..' gps'}) reflect:addChildKeyword({'yes'}, AddReflectItem, {}) reflect:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then.', reset = true}) npcHandler:addModule(FocusModule:new()) É isso aí, um exemplo simples de como criar um item a sua escolha, só editar o reflectId e com custo em money só editar o cost. Sem mais, Aluccard. Obs: Esqueci de mencionar que É necessário ter o sistema de reflect que se encontra em mods no forum.2 pontos -
Informações sobre atualização
Informações sobre atualização
Apocalipse e um outro reagiu a AL4sKiM por uma resposta no tópico
2 pontosBoas noticias! O MegaNo0body está trabalhando no bot esses ultimos dias e me foi avisado que virá muitas melhorias, amanha será um dia de teste de estabilidade. Será lancada uma nova versão com os bugs corrigidos o mais rapido possivel. NOVA VERSãO YEAH! Então... Aguardamos!2 pontos -
[GlobalEvent] Estações do Ano
[GlobalEvent] Estações do Ano
poko360 reagiu a Guilherme. por uma resposta no tópico
1 pontoOlá galera, vim trazer mais um maravilhoso e criativo script do Teckman. *OBS; O Script não contém todos os items para todas as estações. Funciona assim: Quando você abrir o server ele irá substituir os items de acordo com as estações do ano, por exemplo, vai substituir as árvores por árvores de neve, pedras por pedras de neve, e assim por diante. O Script vai ser executado logo que o server ligar pois ocupa muito do CPU e da memória RAM, mas apenas para grandes mapas e por pouco tempo. Entre em /globalevents/scripts/ e então crie o arquivo seasons.lua, coloque o código abaixo no arquivo, salve e feche. local config = { areas = { [1] = { {x = 954, y = 1001, z = 7}, {x = 992, y = 1026, z = 7} } }, items = { ["winter"] = { [2700] = 2698, -- fir tree [2705] = 8139, -- pear tree [2703] = 2697, -- plum tree [2704] = 7020, -- red maple [2706] = 7071, -- yellow maple [2701] = 2698, -- sycamore [2707] = 7022, -- beech [2708] = 7020, -- poplar [2711] = 7021, -- dwarf tree [2712] = 7023, -- pine [4526] = 6580, -- grass [4527] = 6581, -- grass [4528] = 6582, -- grass [4529] = 6583, -- grass [4530] = 6584, -- grass [4531] = 6585, -- grass [4532] = 6586, -- grass [4533] = 6587, -- grass [4534] = 6588, -- grass [4535] = 6589, -- grass [4536] = 6590, -- grass [4537] = 6591, -- grass [4538] = 6592, -- grass [4539] = 6593, -- grass [4540] = 6580, -- grass [4541] = 6580, -- grass [6216] = 6715, -- grass tuffs [6217] = 6716, -- grass tuffs [6218] = 6717, -- grass tuffs [6219] = 6718, -- grass tuffs [387] = 6966, -- stalagmite [3610] = 6611, -- stones [3614] = 6610, -- stones [3666] = 6713, -- stone [3667] = 6714, -- stone [3668] = 6715, -- stone [468] = 483, -- hole [469] = 484, -- hole [3310] = 485, -- hole [3607] = 6999, -- medium stone [3609] = 7003, -- medium stone [3616] = 7002, -- medium stone [3663] = 7016, -- big stone [3664] = 7017, -- big stone [3615] = 7000, -- medium stone [3608] = 7001, -- medium stone [3659] = 7018, -- medium stone [3660] = 7019, -- medium stone [3617] = 7004, -- big stone [3618] = 7005, -- big stone [3619] = 7006, -- big stone [3620] = 7007, -- big stone [3624] = 7008, -- big stone [3625] = 7009, -- big stone [3626] = 7010, -- big stone [3627] = 7011, -- big stone [3628] = 7012, -- big stone [3629] = 7013, -- big stone [3630] = 7014, -- big stone [3631] = 7015, -- big stone [4470] = 6768, -- mountain [4471] = 6720, -- mountain [4472] = 6719, -- mountain [4476] = 6724, -- mountain [4477] = 6725, -- mountain [4478] = 6726, -- mountain [4479] = 6727, -- mountain [4473] = 6721, -- mountain [4474] = 6722, -- mountain [4475] = 6723, -- mountain [4468] = 6762, -- mountain [4469] = 6761, -- mountain [4542] = 4737, -- grass border [4543] = 4738, -- grass border [4544] = 4739, -- grass border [4545] = 4740, -- grass border [4546] = 4741, -- grass border [4547] = 4742, -- grass border [4548] = 4743, -- grass border [4549] = 4744, -- grass border [4550] = 4745, -- grass border [4551] = 4746, -- grass border [4552] = 4747, -- grass border [4553] = 4748, -- grass border } }, seasons = { ["monday"] = "winter", ["tuesday"] = "winter", ["wednesday"] = "autumn", ["thursday"] = "autumn", ["friday"] = "spring", ["saturday"] = "summer", ["sunday"] = "summer" } } function onStartup () doSetGameState(GAMESTATE_CLOSED) addEvent(doSetGameState, 1000 * 15, GAMESTATE_NORMAL) for i = 1, table.maxn(config.areas) do for x = ((config.areas)[i][1]).x, ((config.areas)[i][2]).x do for y = ((config.areas)[i][1]).y, ((config.areas)[i][2]).y do for z = ((config.areas)[i][1]).z, ((config.areas)[i][2]).z do for k, v in pairs(config.items[config.seasons[string.lower(os.date("%A"))]]) do pos = {x = x, y = y, z = z} if(getTileItemById(pos, k).uid > 0) then doTransformItem(getTileItemById(pos, k).uid, v) end end end end end end return true end Agora entre em /globalevents/globalevents.xml adicione a TAG abaixo, salve e feche. <globalevent name="seasons" type="start" event="script" value="seasons.lua"/> E é isso galera, vocês estão livres para editar o código e adicionar/retirar items, para fazer isso use o map editor ou então o arquivo items.xml para verificar o ID dos items.1 ponto -
[TalkAction] Dungeon Finder
[TalkAction] Dungeon Finder
gabriel28 reagiu a Guilherme. por uma resposta no tópico
1 pontoOlá TibiaKing! Esse script necessita um pouco mais de conhecimento, pois precisa adicionar códigos em C++ ao distro. O script adiciona você em uma espécie de fila, assim que a fila completar 5 pessoas, automaticamente um grupo é formado e as 5 pessoas são teleportadas para dentro da dungeon ou quest. Basicamente funciona assim: Player (Eu): /queue join Player (Outro): /queue join Player (Outro): /queue join Player (Outro): /queue join Player (Outro): /queue join Onde queue significa fila. Uma pequena demonstração Database (MySQL/PHPMyAdmin) CREATE TABLE `dungeon_finder` (`id` INT(8) AUTO_INCREMENT PRIMARY KEY, `player_id` INT(255)) Talkactions function onSay(cid, words, param, channel) if(param == "join") then query = db.getResult("SELECT * FROM `dungeon_finder` WHERE `player_id` = " .. getPlayerGUID(cid) .. "") if(getPlayerStorageValue(cid, CONFIG.DUNGEON_STORAGE) > 1) then if(getPlayerStorageValue(cid, CONFIG.DUNGEON_STORAGE) > os.time()) then doPlayerSendCancel(cid, "You can't join queue with deserter debuff.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return true end end if(CONFIG.AREA) then if(not(isInArea(getPlayerPosition(cid), (CONFIG.AREA).FROMPOS, (CONFIG.AREA).TOPOS))) then doPlayerSendCancel(cid, "You're not in required area to join the queue.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return true end end if(CONFIG.PZ_REQUIRED) then if(not(getTilePzInfo(getPlayerPosition(cid)))) then doPlayerSendCancel(cid, "You're not in protection zone to join the queue.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return true end end if(CONFIG.REQUIRED_LEVEL) then if(getPlayerLevel(cid) < CONFIG.REQUIRED_LEVEL) then doPlayerSendCancel(cid, "You don't have required level to join the queue. The minimum level to join the queue is " .. CONFIG.REQUIRED_LEVEL .. ".") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return true end end if(CONFIG.SKULL) then if(getPlayerSkullType(cid) >= CONFIG.SKULL) then doPlayerSendCancel(cid, "Murderers are not allowed to join the queue.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return true end end if(CONFIG.IN_FIGHT) then if(getCreatureCondition(cid, CONDITION_INFIGHT)) then doPlayerSendCancel(cid, "You can't be in combat in order to join the queue.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return true end end if(isInParty(cid)) then doPlayerSendCancel(cid, "You can't join queue while you are in party group.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return true end if(query:getID() == 0) then doPlayerSendCancel(cid, "You are already listed in queue.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return true end db.executeQuery("INSERT INTO `dungeon_finder` SET `player_id` = " .. getPlayerGUID(cid) .. ";") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE) doCreatureSay(cid, "You've beed queued in dungeon finder - random mode.", TALKTYPE_ORANGE_1) elseif(param == "remove") then query = db.getResult("SELECT * FROM `dungeon_finder` WHERE `player_id` = " .. getPlayerGUID(cid) .. "") if(query:getID() == -1) then doPlayerSendCancel(cid, "You are not listed in the queue.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return true end db.executeQuery("DELETE FROM `dungeon_finder` WHERE `player_id` = " .. getPlayerGUID(cid) .. ";") doCreatureSay(cid, "You've beed removed from queue.", TALKTYPE_ORANGE_1) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_RED) end return true end Globalevents local DUNGEONS = { [1] = {NAME = "Test dungeon", LEVEL = 30, POS = {x = 450, y = 357, z = 15}}, } local condition = createConditionObject(CONDITION_INFIGHT) setConditionParam(condition, CONDITION_PARAM_TICKS, 15000) function onThink(cid, interval) DUNGEON = DUNGEONS[math.random(1, table.maxn(DUNGEONS))] players = {} for i = 1, 1000 do if(table.maxn(players) == 5) then break end query = db.getResult("SELECT * FROM `dungeon_finder` WHERE `id` = " .. i .. ";") if(query:getID() > -1) then pid = getPlayerByName(getPlayerNameByGUID(query:getDataInt("player_id"))) if(getPlayerStorageValue(pid, CONFIG.DUNGEON_STORAGE) > 1) then return true end if(getPlayerLevel(pid) > DUNGEON.LEVEL and getPlayerLevel(pid) < DUNGEON.LEVEL + 50) then table.insert(players, getPlayerGUID(pid)) end query:free() end end if(table.maxn(players) == 5) then for i = 1, 5 do pid = getPlayerByName(getPlayerNameByGUID(players[i])) if(i == 1) then doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_BLUE, "You were chosen to be a dungeon guide.") addEvent(doCreatureSay, 15200, pid, "You and your team were teleported to the " .. DUNGEON.NAME .. ".", TALKTYPE_ORANGE_1) for j = 2, 5 do lid = getPlayerByName(getPlayerNameByGUID(players[j])) doPlayerInviteToParty(pid, lid) end else doPlayerJoinParty(pid, getPlayerByName(getPlayerNameByGUID(players[1]))) end delay = 0 for i = 1, 15 do addEvent(doPlayerSendTextMessage, delay + 1000, pid, MESSAGE_STATUS_CONSOLE_BLUE, "A dungeon group for you has been found. You'll be teleported to the dungeon in " .. 15 - i .. " seconds.") delay = delay + 1000 end doAddCondition(pid, condition) addEvent(doTeleportThing, 15000, pid, DUNGEON.POS) addEvent(doSendMagicEffect, 15000, DUNGEON.POS, CONST_ME_TELEPORT) db.executeQuery("DELETE FROM `dungeon_finder` WHERE `player_id` = " .. players[i] .. ";") if(CONFIG.QUIT_POS) then setPlayerStorageValue(pid, 9001, getPlayerPosition(pid).x) setPlayerStorageValue(pid, 9002, getPlayerPosition(pid).y) setPlayerStorageValue(pid, 9003, getPlayerPosition(pid).z) end setPlayerStorageValue(pid, CONFIG.DUNGEON_STORAGE, 1) end end return true end CreatureEvents function onLogout(cid) query = db.getResult("SELECT * FROM `dungeon_finder` WHERE `player_id` = " .. getPlayerGUID(cid) .. ";") if(query:getID() == -1) then return true end db.executeQuery("DELETE FROM `dungeon_finder` WHERE `player_id` = " .. getPlayerGUID(cid) .. ";") return true end function onLeaveParty(cid) if(getPlayerStorageValue(cid, CONFIG.DUNGEON_STORAGE) == 1) then setPlayerStorageValue(cid, CONFIG.DUNGEON_STORAGE, -1) if(CONFIG.DESERTER_DEBUFF_TIME) then setPlayerStorageValue(cid, CONFIG.DUNGEON_STORAGE, os.time() + CONFIG.DESERTER_DEBUFF_TIME) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You've been marked with deserter debuff for " .. CONFIG.DESERTER_DEBUFF_TIME / 3600 .. " hour/s. For this time you can't join the queue again.") end TMP_POS = CONFIG.QUIT_POS and {x = getPlayerStorageValue(cid, 9001), y = getPlayerStorageValue(cid, 9002), z = getPlayerStorageValue(cid, 9003)} or getPlayerMasterPos(cid) doTeleportThing(cid, TMP_POS) doSendMagicEffect(TMP_POS, CONST_ME_TELEPORT) for i = 9001, 9003 do setPlayerStorageValue(cid, i, -1) end end return true end lib CONFIG = { AREA = false, -- if false then everyone can join queue everywhere, if you want certain area add AREA = {FROMPOS = {}, TOPOS = {}} PZ_REQUIRED = false, -- requirement of standing in pz, if you don't want it just set PZ_REQUIRED = false REQUIRED_LEVEL = 30, -- required level to join the queue, if you don't want it just set REQUIRED_LEVEL = false SKULL = 1, -- skull that is not acceptable while joining queue, if you want players join with skulls just set SKULL = false IN_FIGHT = true, -- if player is in fight he can't join the queue, IN_FIGHT = false to disable QUIT_POS = false, -- if you want player to go back to his previous position (from which he got teleported to the dungeon) set QUIT_POS = true, if set to false it'll teleport player to his temple DESERTER_DEBUFF_TIME = 1800, -- 60 = 1 min, 3600 = 1h DUNGEON_STORAGE = 9005 } C++ luascript.cpp int32_t LuaScriptInterface::luaDoPlayerJoinParty(lua_State* L) { //doPlayerJoinParty(cid, lid) ScriptEnviroment* env = getEnv();[/left] Player* leader = env->getPlayerByUID(popNumber(L)); if(!leader) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } Player* player = env->getPlayerByUID(popNumber(L)); if(!player) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } g_game.playerJoinParty(player->getID(), leader->getID()); lua_pushboolean(L, true); return 1; } Coloque: int32_t LuaScriptInterface::luaDoPlayerInviteToParty(lua_State* L) { //doPlayerInviteToParty(cid, pid) ScriptEnviroment* env = getEnv(); Player* leader = env->getPlayerByUID(popNumber(L)); if(!leader) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } Player* player = env->getPlayerByUID(popNumber(L)); if(!player) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } g_game.playerInviteToParty(player->getID(), leader->getID()); lua_pushboolean(L, true); return 1; } creatureevent.h Depois de: CREATURE_EVENT_PREPAREDEATH, Coloque: CREATURE_EVENT_LEAVEPARTY Depois de: bool playerLogout(Player* player, bool forceLogout); Coloque: uint32_t executeLeaveParty(Player* player); Depois de: uint32_t executePrepareDeath(Creature* creature, DeathList deathList); Coloque: uint32_t executeLeaveParty(Player* player); creatureevent.cpp Depois de: else if(tmpStr == "preparedeath") m_type = CREATURE_EVENT_PREPAREDEATH; Coloque: else if(tmpStr == "leaveparty") m_type = CREATURE_EVENT_LEAVEPARTY; Depois de: case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath"; Coloque: case CREATURE_EVENT_LEAVEPARTY: return "onLeaveParty"; Depois de: case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList"; Coloque: case CREATURE_EVENT_LEAVEPARTY: return "cid"; Depois da função: uint32_t CreatureEvent::executeFollow(Creature* creature, Creature* target)... Coloque: uint32_t CreatureEvent::executeLeaveParty(Player* player) { //onLeaveParty(cid) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); #ifdef __DEBUG_LUASCRIPTS__ std::stringstream desc; desc << player->getName(); env->setEventDesc(desc.str()); #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)); bool result = m_interface->callFunction(1); m_interface->releaseEnv(); return result; } else { std::cout << "[Error - CreatureEvent::executeAdvance] Call stack overflow." << std::endl; return 0; } } game.cpp Mude: bool Game::playerLeaveParty(uint32_t playerId) { Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; if(!player->getParty() || player->hasCondition(CONDITION_INFIGHT)) return false; return player->getParty()->leave(player); } Para: bool Game::playerLeaveParty(uint32_t playerId) { Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; if(!player->getParty() || player->hasCondition(CONDITION_INFIGHT)) return false; CreatureEventList leavePartyEvents = player->getCreatureEvents(CREATURE_EVENT_LEAVEPARTY); for(CreatureEventList::iterator it = leavePartyEvents.begin(); it != leavePartyEvents.end(); ++it) (*it)->executeLeaveParty(player); return player->getParty()->leave(player); } E é isso galera, o local da quest pode ser mudado/adicionado no GlobalEvent, mais uma maravilha do Teckman Depois de: //doPlayerJoinParty(cid, lid) lua_register(m_luaState, "doPlayerJoinParty", LuaScriptInterface::luaDoPlayerJoinParty); Coloque: //doPlayerInviteToParty(cid, pid) lua_register(m_luaState, "doPlayerInviteToParty", LuaScriptInterface::luaDoPlayerInviteToParty); Depois de:1 ponto -
[tutorial] Auto Banker
1 pontoMinha Opinião Bom galera seguinte, Sei que muitos podem discorda mais pra mim o Tibia auto só perde para o neobot, e olhe la que temos que levar em consideração que o tibia auto é free, e a unica coisa que eu fiz no neobot que não fiz no tibia auto foi atacar a distancia, mais acho que fazendo um script no T.A. (tibia auto) da pra fazer isso. Por isso que eu uso o T.A. a muito tempo e nunca fui ban recomendo muiiitooo mesmo o uso deste . Obrigado por ler isso . Começando Primeiramente devemos entender algumas coisas sobre o T.A. digamos que o bot "aprende" a andar em todos os lugares por exemplo se você marca um wp (waypoint) e algum lugar e subir escadas e depois marca outro, ele sabe como chegar la e voltar, não fico bem explicado mais é mais ou menos assim. Mais para ele "aprender o mapa" você tem que selecionar algumas opções, vá na opção "show map" depois Clique em "research map" e em "extended research map" como esta na imagem: Andando na cave Depois de ter feito os passos anteriores, vá em "auto attack" Em baixo ja da janela que vai abrir tem a parte de andar (walker) ali é só você marca o lugar que vc está (ja estando na cave) pra ir adicionando os waypoints é só clicar aonde está marcado na imagem (vá andando pela cave e clicando ali) depois clique em "enable cavebot" que ela vai começar a andar Indo para o Bank Pronto agora o cha já está andando na cave vamos configurar o auto bank Volte ao menu principal do T.A. e clique em Auto Banker Ai é só você configurar como você quer: Em "Banker" você colocara o banco que é para o cha ir depositar Em "deposit when" você colocara quanto de dinheiro é para o cha ir para o banco, lembrando que ele só conta o dinheiro com as bp's abertas ou seja se vc botar pra ir no banco com 4k e deixar só uma bp aberta ele só vai contar 2k (pq a bp só tem 20 espaços) a solução é vc deixar as bp's abertas separadamente. Em "keep on hand" você colocara quanto de dinheiro é para ele tar em mãos , por exemplo se tiver que pagar uma passagem pra voltar pra cave tem que ter uma grana pra isso, que tem essa opção (eiitaa bot fodaa da porra!). Em "caps Below" serve para ele ir no bank com x de cap ou seja se vc colocar 20 aki, quando o cha tiver com 20 de cap ele vai no banco. Em "Module priority" você defini a prioridade de ir ao banco, se botar a maxima, quando juntar a grana ele para de fazer tudo que ta fazendo e vai o banco desmarque a opção "change gold" marque a opção "stop by when going to depot/seller" e desmarque a opção "withdraw up to..." igual a imagem: e clique "enable banking" Parte mais dificil Fassa como eu ensinei no primeiro passo em "show map" marque as duas opções agora vem a perte dificil, va na pasta do tibia auto dentro da pasta do tibia auto tem uma pasta chamada "mods" dentro desta pasta tem um arquivo chamado "tibiaauto-bankers" você pode abrir ele com o Excel para editar. o T.A. trabalha com 3 conjuntos de digitos x,y,z esses 3 digitos juntos formam um lugar do tibia, então vc tem que escrever depois do nome do npc esses cunjuntos de 3 digitos como mostra na imagem acima. exemplo: 33019,32053,6 esse conjunto é um "quadrado" (sqm) do tibia você tem que adicionar esses conjuntos nesta ordem: de mais perto para mais longe do npc. essa que é a parte mais dificil das configurações vc tem que fazer no minimo 10 cunjuntos ou seja 10 desse tipo: 33019,32053,6 Depois de ter feito isso você tem que salvar depois que salvar você pega o seu cha, vai andando para o banco (com as opções do "show map" marcadas) e volta para a cave. Parabéns! agora você pode juntar muitaaa grana Não se esqueça de agradeçer //// Duvidas? postem ai. Obrigado!1 ponto
-
[MOD] Killed Monsters Count
1 pontoÉ um simples MOD que conta quantos monstros você ja matou. Ele exibe em seu look e você tambÉm pode consultar pela talkaction !monsters Logo mais vou aprimorá-lo, e colocar ranks (: Para instalar basta você ir na pasta servidor/data/mods ou só servidor/mods, criar o arquivo monsterskill.xml e colocar lá: <?xml version = "1.0" encoding = "UTF-8"?> <mod name="Monsters Kill" version="1.0" author="Renato Ribeiro" enabled="yes"> <config name="config-monsterskill"><![CDATA[ storage = 1647 killedMonsters = getPlayerStorageValue(cid, storage) ]]></config> <event type="look" name="monsterLook" event="script"><![CDATA[ domodlib("config-monsterskill") function onLook(cid, thing, position, lookDistance) if(isPlayer(thing.uid)) then doPlayerSetSpecialDescription(thing.uid, "\n Killed Monsters: " .. killedMonsters) end return TRUE end ]]></event> <event type="kill" name="monsterKill" event="script"><![CDATA[ domodlib("config-monsterskill") function onKill(cid, target) if(isMonster(target)) then setPlayerStorageValue(cid, storage, math.max(1, getPlayerStorageValue(cid, storage) + 1)) end return TRUE end ]]></event> <event type="login" name="monsterLogin" event="script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid, "monsterLook") registerCreatureEvent(cid, "monsterKill") return TRUE end ]]></event> <talkaction words="!monsters" event="script"><![CDATA[ domodlib("config-monsterskill") function onSay(cid, words, param, channel) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have killed " .. killedMonsters .. " monsters at the moment") return TRUE end ]]></talkaction> </mod> [/code] [color=#ff0000][b]Lembre-se:[/b][/color] script não testado, qualquer bug manda aqui1 ponto
-
[MOD] Killed Monsters Count 2.0 + Premios
[MOD] Killed Monsters Count 2.0 + Premios
darkkonrad reagiu a Renato por uma resposta no tópico
1 pontoO que é? O script é assim, ele conta quantos monstros você já matou até o momento, consultando por [ !monsters ] Agora com a versão 2.0 você pode consultar monstro específico, pela talk [ !monsters Demon ] por exemplo. SE O MONSTRO ESTIVER CONFIGURADO. Ahh, e você também configura a recompensa que ele ganhará ao matar X de determinado monstro =p Vamos lá. Se você já instalou o Killed Monsters Count 1.0 é só abrir o mesmo arquivo e substituir. Caso não, vá em server/data/mods ou server/mods crie o arquivo monsterskill.xml e coloque dentro: <?xml version="1.0" encoding="UTF-8"?> <mod name="Monsters Kill Count and Awards" version="2.0" author="Renato Ribeiro" enabled="yes"> <config name="config-monsterskill"><![CDATA[ local monters = { ['demon'] = { id = 1, qtKill = 250, itemId = xxxx, qtItem = 1 }, ['hydra'] = { id = 2, qtKill = 500, itemId = yyyy, qtItem = 1 }, ['frost dragon'] = { id = 3, qtKill = 750, itemId = zzzz, qtItem = 1}, } storage = 1647 killedMonsters = getPlayerStorageValue(cid, storage) ]]></config> <event type="look" name="monsterLook" event="script"><![CDATA[ domodlib("config-monsterskill") function onLook(cid, thing, position, lookDistance) if(isPlayer(thing.uid)) then doPlayerSetSpecialDescription(thing.uid, "\n Killed Monsters: " .. killedMonsters) end return TRUE end ]]></event> <event type="kill" name="monsterKill" event="script"><![CDATA[ domodlib("config-monsterskill") function onKill(cid, target) if (isMonster(target)) then setPlayerStorageValue(cid, storage, math.max(1, getPlayerStorageValue(cid, storage) + 1)) end if (monsters[string.lower(getCreatureName(target))]) then mName = getCreatureName(target) mId = monsters[string.lower(mName)].id mqtKill = monsters[string.lower(mName)].qtKill mItemId = monsters[string.lower(mName)].itemId mqtItem = monsters[string.lower(mName)].qtItem getMStorage = getPlayerStorageValue(cid, storage + mId) setPlayerStorageValue(cid, storage + mId, math.max(0, getMStorage + 1)) if (getMStorage == mqtKill) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You earned " .. mqtItem .. " " .. getItemNameById(mItemId) .. ".") adding = doPlayerAddItem(cid, mItemId, mqtItem) doSetItemSpecialDescription(adding, "\n Reward to " .. getPlayerName(cid) .. " to kill " .. qtKill .. " " .. mName .. "s") end end return TRUE end ]]></event> <event type="login" name="monsterLogin" event="script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid, "monsterLook") registerCreatureEvent(cid, "monsterKill") return TRUE end ]]></event> <talkaction words="!monsters" event="script"><![CDATA[ domodlib("config-monsterskill") function onSay(cid, words, param, channel) if (monsters[string.lower(param)] or monsters[param]) then killedMonstersX = getPlayerStorageValue(cid, storage + monsters[string.lower(param)] and monsters[string.lower(param)] or monsters[param]) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have killed " .. killedMonstersX .. " " .. param .. "s at the moment.") elseif (param) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Do not have a " .. param .. " task.") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have killed " .. killedMonsters .. " monsters at the moment") end return TRUE end ]]></talkaction> </mod> [/code] [b]Talkactions:[/b] !monsters - consulta quantos monstros você já matou ao total (também aparece no seu look) !monsters NOME - consulta quantos monstros 'NOME' você já matou [b]Pra adicionar novos monstros siga o padrão:[/b] ['frost dragon'] = { id = 3, qtKill = 750, itemId = zzzz, qtItem = 1}, ['nome do monstro'] = { o id tem que ser sequencial, ou seja, se o ultimo for 3, o proximo é 4, depois 5 etc. o qtKill é q quantidade que o cara tem que matar pra ganhar o item. itemId é o id do item que o cara ganha e qtItem é a quantidade que ele ganha. Por exemplo você pode por o id da arrow e na qtItem você poe 100, ele ganha 100 arrows. Agora se for um item que não da pra juntar, mesmo você colocando 100 ele só vai ganhar 1. } [b]Enfim, script não testado, qualquer erro POSTE AQUI![/b] Abraços.1 ponto -
AlienBot Platinum - Estrutura
AlienBot Platinum - Estrutura
KleitonProcurado reagiu a Renato por uma resposta no tópico
1 pontoAlienBot Platinum é a nossa versão 2.0. Fiquem ligados nessa XtremeVersion. O AlienBot 1.0 foi totalmente excluído de nossos planos. O AlienBot Platinum foi começado do zero. 100% INDETECTÁVEL. ├ Options │ ├ Level Spy │ ├ Light Hack │ ├ Dash │ ├ Outfits │ ├ Addons │ ├ Auto Fishing │ ├ ExpToLevel │ ├ Skills/h │ ├ Reconnect │ ├ Integrated Skills ├Tools │ ├ Self Heal │ │ ├ Spell │ │ ├ Potion │ │ ├ Rune │ ├ Heal Friend │ │ ├ Exura Sio │ │ ├ Rune │ │ ├ Potion │ ├ Mana Restore │ │ ├ Potion │ ├ Alerts │ ├ Rune Maker │ ├ Auto Flags │ │ ├ Auto Cure Poison │ │ ├ Auto Cure Paralyze │ │ ├ Auto Utamo │ │ ├ Auto Haste │ ├ Training │ │ ├ Mana Caster │ │ ├ Train with Monks │ │ ├ Train with Slimes │ │ ├ Anti-kick │ │ ├ Eat Food ├War Tools │ ├ Combo Leader │ ├ Catch Sight │ ├ BlackList │ ├ Spell/Rune Attacker ├Cave Bot │ ├ Attacker │ ├ Spell/Rune Attacker │ ├ Walker │ │ ├ Add MyPosition │ │ ├ Ramp - North/South/East/West │ │ ├ Up - Ladder/Rope │ │ ├ Learn │ │ ├ Convert NG Waypoints │ ├ Looting Como estão vendo, falta muita coisa! E ainda quero por mais! SUGESTÕES, EU QUERO SUGESTÕõÕõÕES!!! Sugestões de mais ferramentas, mais utilitários, etc! ACOMPANHEM O TÓPICO FREQUENTEMENTE, SEMPRE ATUALIZAREM AO TERMINAR UMA FERRAMENTA.1 ponto -
[Mod] kill 'em all
1 pontotempim q n faço nada no ps esse é um tuto meu antigao flws1 ponto
-
Tibia Auto
Tibia Auto
Marcos Death reagiu a Arthur por uma resposta no tópico
1 pontoGalera, esse tópico é referente ao Tibia Auto para Tibia 9.2 Para instalar o Tibia Auto é necessário ter o Python 2.4 instalado em seu PC, não precisa se preocupar com Vírus, TibiaAuto é uma empresa e o Python é um das mais famosas linguagens de prograpação do Planeta. Algumas funções: Cave Hunting, Auto Healer, Auto Looter, Ammo restack, Auto Aim, Anti Logout, Rune Maker, Spell Caster, Auto Grouping, Auto Seller, FPS changer, Luz, Food%2 Download do Python. 2.7.2 Download do Tibia Auto pelo site Oficial. Versão 2.14.1 Download do Tibia Auto pelo SorceForge. Versão 2.14.11 ponto