Tudo que Xagah postou
-
Comando Pra teleportar pro Templo
Eu coloquei na forma de magias. Crie um arquivo chamado citytp.lua na pasta Scripts das Spells e coloque isto dentro (fiz umas modificações pra não voltar PK e só fazer quando estiver em peace) function onCastSpell(cid, var) local function doTeleport(cid, count) if (not isPlayer(cid)) then return true end doSendAnimatedText(getCreaturePosition(cid), (30 - count).."s", COLOR_ORANGE) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_YELLOW_RINGS) if (count == 30) then return doCreatureSetNoMove(cid, false) and doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) else addEvent(doTeleport, 1000, cid, count + 1) end return true end if (not isPlayerPzLocked(cid)) then if (not getCreatureCondition(cid, 1024)) then return doCreatureSetNoMove(cid, true) and doTeleport(cid, 0) else doPlayerSendTextMessage(cid,MESSAGE_STATUS_SMALL,"You cannot use this command while you are infight.") return false end else doPlayerSendTextMessage(cid,MESSAGE_STATUS_SMALL,"You cannot use this command while you are pz locked.") return false end end Depois, dentro de Spells, insira: <instant name="City Teleport" words="exani hom" lvl="100" mana="0" aggressive="0" selftarget="1" exhaustion="1200000" needlearn="0" event="script" value="citytp.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="3"/> <vocation id="4"/> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="8"/> </instant> Aí o player usará a magia "exani hom". Você pode controlar o tempo pra voltar como se fosse uma magia. No meu server funciona perfetc. Abraço.
-
Ataque Speed
Pra mudar o Speed em arcos (lançadores de munição) devem ser feitas mudanças na Source. Tentei durante semanas corrigir e não consegui. O que dá é pra colocar speed nas stones, spears, royal spears, etc.. Isto porque elas não precisa de um arco, ou crossbow, pra serem lançadas. Isto é o que tenho de conhecimento teórico e de prática por ter procurado por tempos e não tem conseguido.
-
(Resolvido)doChangeTypeItem - Desaparece o item
Não Rolou. Tive que criar uma função de Create item tal com tal type. Mas valeus mesmo assim. Tópico Resolvido.
-
(Resolvido)[PEDIDO] Estatua virar monstro
local idDaEstatua = 2525 local tempoEmSegundosParaVoltar = 30 local nomeDoMonstro = "Hydra" function onUse(cid, item, fromPosition, itemEx, toPosition) doRemoveItem(itemEx.uid, 1) addEvent(doCreateItem, tempoEmSegundosParaVoltar*1000, idDaEstatua, 1, toPosition) addEvent(doSendMagicEffect, tempoEmSegundosParaVoltar*1000, toPosition, CONST_ME_MAGIC_GREEN) doSummonMonster(nomeDoMonstro, toPosition) return true end Acho que dá conta. Tenta aí.
-
(Resolvido)doChangeTypeItem - Desaparece o item
Bring Up My Post!
-
(Resolvido)doChangeTypeItem - Desaparece o item
Olá, estou com o seguinte problema: Quando uso algum item que contém um líquido dentro (um "bucket" por exemplo) ao invés de ele se transformar em um frasco vazio ele desaparece! Alguém tem alguma idéia de como pode ser resolvido? Este é o meu containers.lua local DISTILLERY = {5513, 5514, 5469, 5470} local ITEM_RUM_FLASK = 5553 local TYPE_EMPTY = 0 local TYPE_WATER = 1 local TYPE_BLOOD = 2 local TYPE_BEER = 3 local TYPE_SLIME = 4 local TYPE_LEMONADE = 5 local TYPE_MILK = 6 local TYPE_MANA_FLUID = 7 local TYPE_LIFE_FLUID = 10 local TYPE_OIL = 11 local TYPE_URINE = 13 local TYPE_COCONUT_MILK = 14 local TYPE_WINE = 15 local TYPE_MUD = 19 local TYPE_FRUIT_JUICE = 21 local TYPE_LAVA = 26 local TYPE_RUM = 27 local TYPE_SWAMP = 28 local TYPE_TEA = 35 local oilLamps = {[2046] = 2044} local casks = {[1771] = TYPE_WATER, [1772] = TYPE_BEER, [1773] = TYPE_WINE} local alcoholDrinks = {TYPE_BEER, TYPE_WINE, TYPE_RUM} local poisonDrinks = {TYPE_SLIME, TYPE_SWAMP} local drunk = createConditionObject(CONDITION_DRUNK) setConditionParam(drunk, CONDITION_PARAM_TICKS, 60000) local poison = createConditionObject(CONDITION_POISON) setConditionParam(poison, CONDITION_PARAM_DELAYED, true) -- Condition will delay the first damage from when it's added setConditionParam(poison, CONDITION_PARAM_MINVALUE, -50) -- Minimum damage the condition can do at total setConditionParam(poison, CONDITION_PARAM_MAXVALUE, -120) -- Maximum damage setConditionParam(poison, CONDITION_PARAM_STARTVALUE, -5) -- The damage the condition will do on the first hit setConditionParam(poison, CONDITION_PARAM_TICKINTERVAL, 4000) -- Delay between damages setConditionParam(poison, CONDITION_PARAM_FORCEUPDATE, true) -- Re-update condition when adding it(ie. min/max value) local exhaust = createConditionObject(CONDITION_EXHAUST) setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100)) function onUse(cid, item, fromPosition, itemEx, toPosition) if(itemEx.uid == cid) then if(item.type == TYPE_EMPTY) then doPlayerSendCancel(cid, "It is empty.") return true end if(item.type == TYPE_MANA_FLUID) then if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED) return true end if(not doPlayerAddMana(cid, math.random(80, 160))) then return false end doCreatureSay(cid, "Aaaah...", TALKTYPE_ORANGE_1) doSendMagicEffect(toPosition, CONST_ME_MAGIC_BLUE) doAddCondition(cid, exhaust) elseif(item.type == TYPE_LIFE_FLUID) then if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED) return true end if(not doCreatureAddHealth(cid, math.random(40, 75))) then return false end doCreatureSay(cid, "Aaaah...", TALKTYPE_ORANGE_1) doSendMagicEffect(toPosition, CONST_ME_MAGIC_BLUE) doAddCondition(cid, exhaust) elseif(isInArray(alcoholDrinks, item.type)) then if(not doTargetCombatCondition(0, cid, drunk, CONST_ME_NONE)) then return false end doCreatureSay(cid, "Aaah...", TALKTYPE_ORANGE_1) elseif(isInArray(poisonDrinks, item.type)) then if(not doTargetCombatCondition(0, cid, poison, CONST_ME_NONE)) then return false end doCreatureSay(cid, "Urgh!", TALKTYPE_ORANGE_1) else doCreatureSay(cid, "Gulp.", TALKTYPE_ORANGE_1) end doChangeTypeItem(item.uid,TYPE_EMPTY) return true end if(not isCreature(itemEx.uid)) then if(item.type == TYPE_EMPTY) then if(item.itemid == ITEM_RUM_FLASK and isInArray(DISTILLERY, itemEx.itemid)) then if(itemEx.actionid == 100) then doItemEraseAttribute(itemEx.uid, "description") doItemEraseAttribute(itemEx.uid, "aid") doChangeTypeItem(item.uid, TYPE_RUM) else doPlayerSendCancel(cid, "You have to process the bunch into the distillery to get rum.") end return true end if(isItemFluidContainer(itemEx.itemid) and itemEx.type ~= TYPE_EMPTY) then doChangeTypeItem(item.uid, itemEx.type) doChangeTypeItem(itemEx.uid, TYPE_EMPTY) return true end if(casks[itemEx.itemid] ~= nil) then doChangeTypeItem(item.uid, casks[itemEx.itemid]) return true end local fluidEx = getFluidSourceType(itemEx.itemid) if(fluidEx ~= false) then doChangeTypeItem(item.uid, fluidEx) return true end doPlayerSendCancel(cid, "It is empty.") return true end if(item.type == TYPE_OIL and oilLamps[itemEx.itemid] ~= nil) then doTransformItem(itemEx.uid, oilLamps[itemEx.itemid]) doChangeTypeItem(item.uid, TYPE_NONE) return true end if(hasProperty(itemEx.uid, CONST_PROP_BLOCKSOLID)) then return false end end doDecayItem(doCreateItem(POOL, item.type, toPosition)) doChangeTypeItem(item.uid, TYPE_EMPTY) return true end No console não aparece erro nenhum.
-
ITEM EDITOR 8.6
Não, brow... é outra coisa, outra situação.
-
(Resolvido)Ajuda com o RME (Tool's no Mapa)
Olá, boa noite. Aperta a Tecla "S" que aparece as áreas especiais. Para remover, aperte a tecla "T" que aparecerão as ferramentas. Selecione umas delas, segure a tecla "CTRL" e clique sobre a área. Faça isto com as demais áreas. Abraço.
-
[MONSTER] Como fazer?
Dentro da parte: <monster name="Elder Marowak" file="elder marowak.xml"/> Você tem que especificar, dentro de "file" a pasta que ele está. Vc fez isto? Abraço.
- Bau quest
- (Resolvido)[SUPORTE] Gesior 2012 & Account Manager.
-
[SUPORTE] Ajuda a resolver alguns erros no distro?
Desculpe, não havia visto. Quanto ao "blocklinks.lua", há um tópico aqui no fórum que explica bem certinho sobre a questão de compilação de um sistema que auxilia o block. http://www.tibiaking.com/forum/topic/15828-talkaction-anti-divulgacao-system/page-2 Penso que pode ajudar. Vou terminar umas coisas do trabalho. Assim que chegar posso tentar ver a questão do WarMaster. Abraço.
-
Site com problema...
Se estiver usando o Wamp, olhe lá em baixo (canto inferior direito da tela) onde tem o símbolo dele. Se houver um "cadeado" desenhado em cima é porque não está liberado para a net. Se estiver, clique com o botão direito e marque "put online". Veja aí. Se não der volte.
-
Bau quest
Boa noite novamente. Do modo como está você pode configurar qual item ele deve estar carregando (e quantos também, imagino que no seu caso seja 1) e qual item ele receberá. Se você quiser que ele receba mais de um item do mesmo baú é um script diferente. Além disto, acabei não inserindo um esquema pra não pegar mais de uma vez. Tenta ver se o script funciona. Se funcionar me chama que ajusto pra pegar o item uma vez só.
-
ITEM EDITOR 8.6
O meu aparecia este erro: Unable to load items.otb Como você descreve. Corrigi fazendo uma compilação que aceitasse qualquer ".otb". Fiz assim: Vá na pasta onde ficam as sources do seu executavel e procure por items.ccp, abra ele pelo modo editor(ou pelo seu programa de compilar) e procure por: if(Items::dwMajorVersion == 0xFFFFFFFF) std::clog << "[Warning - Items::loadFromOtb] items.otb using generic client version." << std::endl; else if(Items::dwMajorVersion < 3) { std::clog << "[Error - Items::loadFromOtb] Old version detected, a newer version of items.otb is required." << std::endl; return ERROR_INVALID_FORMAT; } else if(Items::dwMajorVersion > 3) { std::clog << "[Error - Items::loadFromOtb] New version detected, an older version of items.otb is required." << std::endl; return ERROR_INVALID_FORMAT; } else if(Items::dwMinorVersion != CLIENT_VERSION_861) { std::clog << "[Error - Items::loadFromOtb] Another (client) version of items.otb is required." << std::endl; return ERROR_INVALID_FORMAT; e substitua por esse: /*if(Items::dwMajorVersion == 0xFFFFFFFF) std::clog << "[Warning - Items::loadFromOtb] items.otb using generic client version." << std::endl; else if(Items::dwMajorVersion < 3) { std::clog << "[Error - Items::loadFromOtb] Old version detected, a newer version of items.otb is required." << std::endl; return ERROR_INVALID_FORMAT; } else if(Items::dwMajorVersion > 3) { std::clog << "[Error - Items::loadFromOtb] New version detected, an older version of items.otb is required." << std::endl; return ERROR_INVALID_FORMAT; } else if(Items::dwMinorVersion != CLIENT_VERSION_861) { std::clog << "[Error - Items::loadFromOtb] Another (client) version of items.otb is required." << std::endl; return ERROR_INVALID_FORMAT; }*/ e agora é só compilar. Explicação: Foi apenas adicionado a tag /**/ no script para anular essas linhas, ou seja inutilizar elas, fazendo assim com que ao ligar o server o seu distro não verifique a versão do items.otb.
-
Me ajudem por favor
Preciso de duas informações: Qual a versão do seu Global? 8.6? Segundo, seu windows é 32 ou 64 bits?
-
ajuda corpo dos player some muito rapido
Realmente é mais fácil...mas o cara tem que aprender =/ Se achar melhor poste aqui que ajustamos.
-
Site com problema...
A porta 80 é usada para o site, não para o Game. Fez o que eu disse?
-
Sources 0.3.6
De Tibia Normal, Pokemon, DBO?
-
[MONSTER] Como fazer?
Olá, boa noite. Para mudar a vida você altera aqui: <health now="140" max="140"/> Onde a primeira e a segunda devem ser iguais. Já as magias não são alteradas no mesmo arquivo, a não ser a "melee" (ataque de perto, porrada). Se quiser alterar o melee mude aqui: <attack name="melee" interval="2000" chance="100" range="1" min="-50" max="-100"/> Onde interval é quanto tempo demora entre um hit e outor. Chance é a chance de acertar. range é a distância que ele tem que estar pra bater. E min e max é o quanto pode tirar de life (deixe no NEGATIVO, se não o monster vai healar o outro). Para modificar o ataque e tals, tem um tuto bom: http://www.tibiaking.com/forum/topic/28655-pokemon-como-arrumar-experiencia-e-outros/ Veja lá.
-
Como eu faço isto
Olá, boa noite. Sabe o Arquivo que você executa pra abrir o server? Então, aquele arquivo é um compactado com todas as "sources" (fontes). Pra você usar este tutorial você teria que baixar a "Source" e usar um programa para "compilar" tudo. Não é algo muito simples de ser feito. Se tiver intuito de aprender como aprender a compilar posso te passar um tutorial. Abraço.
-
Bau quest
Bom, imagino que sim, então faça o seguinte... crie um arquivo chamado BauQuestItem.lua dentro da pasta data > actions > scripts > other e insira isto dentro: local itemObrigatorio = 2160 -- Insira o ID do item que é obrigatório. local qteItem = 1 -- Insira aqui a quantidade de ite local recompensa = 2155 -- Insira o ID do item que ele vai ganhar local qteRecompensa = 20 -- Insira a quantidade que ele vai ganhar da recompensa function onUse(cid, item, fromPosition, itemEx, toPosition) if (getPlayerItemCount(cid, itemObrigatorio) >= qteItem) then doPlayerAddItem(cid, recompensa, qteRecompensa) return true else doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você precisa de "..qteItem.." ".. getItemNameById(itemObrigatorio).." para fazer esta quest.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return true end end Depois vá no arquivo data > actions > actions.xml e insira esta linha: <action itemid="Coloque o actions que quiser" event="script" value="other/BauQuestItem.lua"/> Depois, abra o Remere Map Editor e dê um duplo clique no baú que terá a quest. Insira o número do ActionID lá.
- Bau quest
-
Rain System !
Olá, boa noite. Vamos por partes. Primeiro vamos testar o "removedor" de pedras. Crie um arquivo chamado removedorDePedras.lua e insira isto dentro (salve-o dentro da pasta data > globalevents > scripts) Faça a modificação do tempo que demora para as pedras voltarem, o ID da pedra e as coordenadas delas. local pedra = 12345 -- O ID da Pedra que vai surgir local minutos = 300 -- O tempo, em minutos, para a pedra reaparecer local function appear(pos) if getThingFromPos(pos).itemid ~= pedra then doSendMagicEffect(pos,17) doCreateItem(pedra,1,pos) end end function onTimer(time) local lugares = { {x = 886, y = 1148, z = 7, stackpos = 1}, -- Coordenada da Pedra 1 {x = 886, y = 1148, z = 7, stackpos = 1}, -- Coordenada da Pedra 2 {x = 886, y = 1148, z = 7, stackpos = 1}, -- Coordenada da Pedra 3 } for i = 1,#lugares do if getThingFromPos(lugares).itemid == pedra then doSendMagicEffect(lugares,15) doRemoveItem(getThingFromPos(lugares).uid) doBroadcastMessage("Event Last Man Standing esta aberto.") addEvent(doBroadcastMessage,60 * 1000,"4 minutos a mais para recrutar jogadores.") addEvent(doBroadcastMessage,120 * 1000,"3 minutos a mais para recrutar jogadores.") addEvent(doBroadcastMessage,180 * 1000,"2 minutos a mais para recrutar jogadores.") addEvent(doBroadcastMessage,240 * 1000,"1 minuto a mais para recrutar jogadores.") addEvent(appear,minutos *60* 1000,lugares) end end return true end Depois vá em data > globalevents > globalevents.xml e insira esta linha: <globalevent name="RemovedorDePedra" time="20:19:00" day="Thursday" script="removedorDePedras.lua"/> Modifique a data e o Dia que o evento deve ocorrer. Teste agora aí.
-
Me ajudem por favor
Desculpe, não compreendi sua dúvida. O que seria este "negócio"?