Ir para conteúdo

Omega

Marquês
  • Total de itens

    1165
  • Registro em

  • Última visita

  • Dias Ganhos

    13

Tudo que Omega postou

  1. @Skailord O seu é bem tranquilo. [Testei em 8.6] 1. Você deverá usar dois monstros diferentes, um vai se transformar no outro quando chegar em uma porcentagem de vida configurável. Abra o arquivo .xml do monstro que vai se transformar e adicione <script> <event name="Transformation"/> </script> 2. TAG creaturescripts.xml: <event type="statschange" name="Transformation" event="script" value="monstertrans.lua"/> 3. Arquivo monstertrans.lua em creaturescripts/scripts OBS.: consertei um erro que deixava invocava o monstro com a vida errada (19/09/13 22:31) @Vinne Desculpe por pular a sua vez por enquanto, mas o seu pedido é bem mais complexo
  2. Tenta esse local str = { {msg = "Fale com o mizuki em Konoha.", st = 0, value = 1}, {msg = "Pegue o pergaminho na torre de Konoha.", st = 3426, value = 1}, {msg = "Vá a floresta entre duas pedras e fale com o mizuki.", st = 19896, value = 1}, {msg = "Fale com Ibiki Morino e faça o exame.", st = 89745, value = 1}, } function onSay(cid, words, param) for _, strinfo in pairs(str) do if getPlayerStorageValue(cid, strinfo.st) == strinfo.value then return doShowTextDialog(cid, 1949, strinfo.msg) end end return true end
  3. @Lucasyeah Seus sistemas: a loteria foi bem tranquilo, agora a alavanca foi bem mais chatinha. Tive que refazer umas funções que eu achava que existia e testar bastante pra não dar problemas sérios (brincar com funções de login é perigoso!) 1. Loteria Premium: TAG globalevents.xml<globalevent name="Loteria Premium" interval="7200000" event="script" value="loteriapremium.lua"/> Esse intervalo é o intervalo em milissegundos entre uma execução da loteria e outra. Do jeito que eu coloquei, são 2hs (1h = 3600000ms)Arquivo globalevents/scripts/loteriapremium.lua 2. Alavanca de Experiência Extra: TAG actions.xml<action actionid="ACTIONID" script="extraexplever.lua"/> TAG creaturescripts.xml<event type="login" name="extraExpLogin" event="script" value="extraexplogin.lua"/> lib/extraexp.lua creaturescripts/scripts/extraexplogin.lua actions/scripts/extraexplever.lua As configurações devem ser feitas no arquivo lib. Qualquer dúvida, posta aí. Só achei um bug bem estranho: quando coloquei a extra rate pra 30%, o jogador ficava ganhando experiência quebrada, por exemplo, era pra ganhar 130 e ganhava 129. Quando coloquei pra 50%, passou a ganhar o valor certo.
  4. Adorei a organização do seu pedido, cara. Quem dera todos fossem assim. Entretanto, você deveria procurar um pouco mais no fórum antes de fazer um pedido, usando o sistema de busca (canto superior direito). Procure nesse tópico aqui o seu item para summonar um monstro por item Pacote de Actions Simples e Úteis. Para criar e editar seu próprio monstro, é bem fácil e basta seguir os passos em qualquer um desses tutoriais: Criando e editando monstros por Lordfire Tutorial da pasta monstros por Tibia4ae
  5. function onStepIn(cid, item, position, fromPosition) local storageValue = 1 -- Valor do storage necessário para que o jogador possa passar if not getPlayerStorageValue(cid, 666) == storageValue and not isPremium(cid) then doPlayerSendCancel(cid, 'You need premium account or the 666 storage to pass!.') doTeleportThing(cid, fromPosition) end return true end Aí você coloca uma TAG no movements.xml: <movevent type="StepIn" actionid="4339" script="666tile.lua"/> E salva o arquivo com o nome de 666tile.lua em movements/scripts e coloca o actionid 4339 em cima desse piso
  6. local travelNode = keywordHandler:addKeyword({'central port'} Você mudou essa parte pro nome da cidade que você quer? Se não, posta aqui como ficou o seu NPC pra que eu possa tentar achar o erro
  7. function onUse(cid, item, fromPos) local moneyItem = 10559 local moneyItemCount = getPlayerItemCount(cid, 10559) local items_to_sell = { {itemid = 2516, price = 3, count = 1, uid = 5050}, {itemid = etc, price = 2, count = 1, uid = 5051}, } for _, iteminfo in pairs(items_to_sell) do if item.uid == iteminfo.uid then if doPlayerRemoveItem(cid, moneyItem, iteminfo.price) then doPlayerAddItem(cid, iteminfo.itemid, iteminfo.count or 1) doPlayerSendTextMessage(cid, 25, 'You have bought '.. iteminfo.count ..' '..getItemNameById(iteminfo.itemid)..'.') doSendMagicEffect(getThingPos(cid), 13) else doPlayerSendCancel(cid, 'You need '..iteminfo.price..' points to buy this item.') doSendMagicEffect(getThingPos(cid), 2) end break end end if item.itemid % 2 == 1 then doTransformItem(item.uid, item.itemid + 1) else doTransformItem(item.uid, item.itemid - 1) end return true end Fiz um código único pra você usar em quantas alavancas quiser. Só precisa criar uma tag no actions.xml com um actionid específico. Daí você coloca um uniqueid diferente em cada alavanca. Explicação: Para cada item diferente, faça uma alavanca diferente Para adicionar novos itens, adicione outra linha deste tipo: {itemid = id do item, price = preço em itens do tipo 10559, count = quantos o jogador irá receber, uid = unique id da alavanca}, Não esqueça da vírgula
  8. Cara, preste atenção antes de postar, por favor: Respondendo ao Will, como combinado por Skype, aqui estão as funções que você deve precisar pro evento:
  9. Muito bom, espero que seja aprovado. Na verdade, acho que deveria fixar nas áreas de dúvida! E faltou também pedir pra informar a versão do servidor...
  10. Cara, leia com atenção o meu comentário que tá explicado como faz isso lá. Qualquer dúvida (depois de ler com atenção), posta aqui de volta.
  11. Isso aí, é SQLite. Então você pode usar o SQL Lite studio pra abrir o seu banco de dados (arquivo .s3db na pasta do seu OT). Daí aperta alt+e que vai abrir o editor de querys. Copie a query que tem lá no tópico e clique no ícone do raio. Tópico movido para a seção de dúvidas e pedidos resolvidos.
  12. function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end cr = getThingFromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = STACKPOS_TOP_CREATURE}) if isPlayer(cr.uid) or isMonster(cr.uid) then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return trueend Use essa função pra saber se uma posição é pisável, ou seja, se tem algo que bloqueie. Depois, pode usar isso aqui pra checar se a posição serve: if isWalkable(getPosByDir(getThingPos(cid), getCreatureLookPosition(cid), 1)) then Tópico movido para a seção de dúvidas e pedidos resolvidos.
  13. Aí vai. Crie um arquivo .xml com o nome do seu NPC. Substitua as mensagens que você quiser (mantenha o {travel} no greet porque é com essa palavra que ele diz os destinos. Mude o nome do NPC também. <npc name="Barqueiro Nelson" script="data/npc/scripts/barco.lua" floorchange="0" access="0" level="1" maglevel="1"> <health now="150" max="150"/> <look type="325" head="0" body="114" legs="114" feet="114" corpse="2212"/> <parameters> <parameter key="message_greet" value="Paz, viajante. Diga {travel} e eu direi para onde posso leva-lo" /> <parameter key="message_walkaway" value="Boa viagem!"/> <parameter key="message_farewell" value="Boa viagem!"/> </parameters> </npc> Dentro de npcs/scripts coloque esse código em um arquivo que você deve criar com o nome de barco.lua: Pra cada local travelNode = keywordHandler:addKeyword({'central port'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Você quer ir para Central Port por 200gps?'}) travelNode:addChildKeyword({'yes'}, StdModule.travel, {npcHandler = npcHandler, premium = true, level = 1, cost = 200, destination = {x=119, y=60, z=7} }) travelNode:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, reset = true, text = 'Boa sorte em suas viagens'}) É um local que ele poderá levar. 'central port' é o nome da cidade. text = '...' é o que ele vai dizer pra confirmar se o jogador quer ir. premium = true para precisar de premium e premium = false para jogadores free poderem usar. cost é o custo em gps, destination é a coordenada do lugar. E o último text é o que o NPC manda quando o cara viaja recusa. É só você usar ctrl+c e ctrl+v nessa parte para adicionar novos lugares. keywordHandler:addKeyword({'travel'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Eu posso levá-lo a \'Dragon Land\', \'Dwarven Hideout\', \'Hell Port\', \'Elemental Forest\', \'Frozen Dungeon\', \'Central Port\', \'Hoover City\' ou \'South Jungle\'.'}) No final tem text = '...' Ali você edita o que o NPC vai falar com o jogador disser travel.
  14. Cara, procura saber se seu banco de dados é MySQL ou SQLite. Daí você vai procurando por aí como executar uma query no seu banco de dados, o que é necessário para adicionar aquela função que eu pedi. Depois disso é só voltar lá, fazer como o tópico ensina e adicionar esse código que eu postei. Tudo o que você precisa saber tem aqui no fórum, é só usar a ferramenta de busca e procurar.
  15. Omega

    Weapon Life drain

    Consegui aqui. Testei em 8.6 e ficou bonitinho, mas ajeitar o dano é por sua conta. As configurações estão explicadas no script: Tag no weapons.xml deve conter event="script" value="vampireblade.lua"> Aí você coloca o id da arma, o level e um arquivo em weapons/scripts com o nome de vampireblade.lua Tópico movido para a seção de dúvidas e pedidos resolvidos.
  16. É só criar um arquivo chamado teste.lua em talkactions/scripts com o código acima e pôr essa tag em talkactions.xml: <talkaction log="yes" words="/test;/teste" access="4" event="script" value="teste.lua"/>
  17. Omega

    Erro lib e loot

    Difícil de entender o que você quis dizer, cara. Mas se é dificuldade em achar a linha que eu disse pra consertar, usa ctrl+f. Tópico movido para a seção de dúvidas e pedidos resolvidos.
  18. Adiciona essa função como o tópico mostra: http://www.xtibia.com/forum/topic/220670-accountstoragevalue/ Depois, cria um arquivo chamado firstlogPA.lua em creaturescripts/scripts com esse código: function onLogin(cid) -- Total de dias de PA que serão adicionados quando o jogador se logar pela primeira vez na conta local pdays = 5 if getAccountStorageValue(getPlayerAccountId(cid), 5555) ~= 3 then doPlayerAddPremiumDays(cid, pdays) setAccountStorageValue(getPlayerAccountId(cid), 5555, 3) end return true end E coloca essa TAG no creaturescripts.xml: <event type="login" name="PA login" event="script" value="firstlogPA.lua"/> EDIÇÃO: Não tinha visto as duas últimas respostas de cima, mas não faz sentido adicionar por char. Se não, o cara fica criando novos chars pra adicionar mais dias de PA.
  19. luan, não sei se você entendeu o que esse código faz. Ele gera um arquvo de texto dentro da pasta do seu OT com todas as funções que tem nele. Não faz muito sentido fazer um global event ou creaturescript com isso, mas uma talkaction é mais fácil de ativar. A minha é assim: Aí você usa essa talkaction in-game. Daí você vai na pasta do seu OT, no mesmo lugar que tem o executável e procura um arquivo chamado Your Server Function List.txt. No caso, o meu ficou assim:
  20. Peraí, você quer bloquear que outros jogadores que tiverem menos de 7 dias de premium? Ou você quer dar 7 dias de premium pra quem entrar?
  21. Bom, quero abrir aqui um espaço para pedidos mais complexos, como um evento ou um sistema. Esse tipo de pedido geralmente não é atendido na seção de Pedidos e Dúvidas por ser trabalhoso demais se você for atender todo mundo, mas como eu tô sem ideias, resolvi criar um tópico para atender aos pedidos mais interessantes e publicar no fórum. Considerações: Use o bom-senso, não faça pedidos descabíveis Explique o MÁXIMO que você puder sobre o que você quer, seja específico, descreva EXATAMENTE como deve acontecer Embora eu esteja tentando aprender um pouco, eu não gosto e ainda não sei muita coisa específica sobre servidores derivados, então pedidos deste tipo devem ser postados fora desse tópico Se alguém mais se disponibilizar a atender um pedido postado nesse tópico, por favor deixe um comentário avisando, para que não seja feito duas vezes Recomendo a leitura desse tópico para qualquer pedido/dúvida, mas tais requisitos são especialmente importantes nesse tópico: Dicas para que seu pedido seja atendido
  22. Omega

    Erro lib e loot

    Só tem um erro. É que o script loot.lua chama a biblioteca dos NPCs, por isso parece que tem dois.
  23. Aí, Will, já tinha isso por aqui. O Mock tinha feito e o OneShot refez nesse tópico aqui: http://www.xtibia.com/forum/topic/203686-todas-as-724-linhas-que-se-pode-colocar-em-um-script/#entry1436991 O dele ficou mais simples, mas acho que faz a mesma coisa.
  24. Omega

    Erro lib e loot

    Dá, é? Eu também não consigo ver qual é a versão só pela imagem =/ Fala direito com os outros se você quer ser ajudado, ok? De qualquer jeito, o seu problema é que não existe a função getDistanceTo no seu OT. Tenta trocar: getDistanceTo(cid) Por: getDistanceBetween(getCreaturePosition(cid), getNpcPos()) ou getDistanceBetween(getCreaturePosition(cid), getCreaturePosition(getNpcCid()))
  25. function onStepIn(cid, item, position, fromPosition) local toPos = {x=123, y=345, z=7} -- Aqui a posição para onde o jogador será transportado local itemid,count = 5956,1 if item.actionid == 29529 then if getPlayerItemCount(cid, itemid) < count then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Você precisa de "..count.." "..getItemNameById(itemid).." para passar aqui.") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) else doPlayerRemoveItem(cid, itemid, count) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Sua Jornada Pokemon esta prestes a começar!") doTeleportThing(cid, toPos) end end return true end
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...