Ir para conteúdo

xBlackWolf

Membro
  • Registro em

  • Última visita

Tudo que xBlackWolf postou

  1. É só o meu NPC que está falando no default? Segue com mensagem para free:
  2. O primeiro erro eu arrumei... já o segundo, não tenho idéia, porque no meu ot 10.35 funciona normal e é script de 8.60... tenta agora e ve se da erro.
  3. xBlackWolf postou uma resposta no tópico em Suporte Tibia OTServer
    Preciso do script da arena pra poder modificar...
  4. xBlackWolf postou uma resposta no tópico em Suporte Tibia OTServer
    Não entendi, vocÊ quer que retire TODOS os frags apenas se tiver skull red ou black? caso contrário ele tira apenas 1 é isso?
  5. Essa é a variavel que armazena o número da vocação, é só trocar os nomes por exemplo sorcerer, paladin etc.. e o numero da vocação: _state.n2 = 3 Não é para adicionar na pasta /scripts, esse é apenas o .xml do NPC. Oracle é um NPC diferente, não tem script. o Script todo está no .xml na pasta NPC. É só criar lá o NPC com esse código ai lá dentro.
  6. Não entendi muito bem, porém se tiver 4 pessoas no SQM, e vc usar target em 1 que está lá naquele SQM, somente o targe vai receber dano, porém o efeito sai no SQM, aparecendo para todos os players q estiverem no SQM, mas somente o target leva dano.
  7. Obrigado :33 sem palavras kk então, depois conversamos sobre isso. No momento estou focado em arrumar erros e terminar o mapa o quanto antes.
  8. @joadson Faltou no arquivo na lib.. a parte que retira os items: for i = 1, #B do if getTileItemById(B[i][2], B[i][1]).uid == 0 then x = false end if x == true then doRemoveItem(getThingfromPos(B[i][2]).uid,1) else doCreateItem(B[i][1], 1, B[i][2]) end end
  9. Não, cara, é um script que teleporta voce na frente da porta e na hr de sair atras da porta. Você não passa pelo meio dela, então.. se você tira o TransformonUse de uma porta fechada, ela vai permanecer fechada para sempre. Sendo assim ativa o teleport e a porta continua intacta.
  10. Ok, então o problema está no Login... tenta agora: function onLogin(cid) queststatus = 0000 if getGlobalStorageValue(queststatus) == 0 then doPlayerSetRate(cid, SKILL__LEVEL, 1.0) setPlayerStorageValue(0003,0) end if getGlobalStorageValue(queststatus) == 1 and getPlayerStorageValue(0003)~=1 then doPlayerSetRate(cid, SKILL__LEVEL, 2.0) setPlayerStorageValue(0003,1) end if getGlobalStorageValue(queststatus) == 1 and getPlayerStorageValue(0003)==1 then doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Todos do servidor receberam 2x exp extra por terem feito a quest!") end return true end Não esqueça de modificar de novo as storages, e se não funcionar me fala a versão do seu tfs.
  11. Cara, muito estranho rsrs, não sei a versão do seu ot é claro.. o meu eh 10.35, mas deveria funcionar, vc pode tbm escolher uma porta que n vai ter em lugar nenhum no mapa, e por ai, ai no item.xml vc tirar o transformOnUse dela
  12. Vamos tentar diferente: function onThink(interval) -- Monday = Segunda -- Tuesday = Terça -- Wednesday = Quarta -- Thursday = Quinta -- Friday = Sexta -- Saturday = Sabado -- Sunday = Domingo EventoUP = {"Monday","Wednesday", "Friday"} EventoTime = {"21:00:00", "18:00:00", "10:00:00"} if isInArray(EventoUP, os.date("%A")) and isInArray(EventoTime, os.date("%X")) then local x = true local B = { [1] = {1547,{x=71, y=620, z=6, stackpos = 1}}, -- posição da barreira [2] = {1547,{x=72, y=620, z=6, stackpos = 1}}, -- posição da barreira [3] = {1547,{x=73, y=620, z=6, stackpos = 1}}, -- posição da barreira [4] = {1547,{x=74, y=620, z=6, stackpos = 1}}, -- posição da barreira [5] = {1547,{x=75, y=620, z=6, stackpos = 1}}, -- posição da barreira [6] = {1547,{x=71, y=618, z=6, stackpos = 1}}, -- posição da barreira [7] = {1547,{x=72, y=618, z=6, stackpos = 1}}, -- posição da barreira [8] = {1547,{x=73, y=618, z=6, stackpos = 1}}, -- posição da barreira [9] = {1547,{x=74, y=618, z=6, stackpos = 1}}, -- posição da barreira [10] = {1547,{x=75, y=618, z=6, stackpos = 1}} -- posição da barreira } for i = 1, #B do if getTileItemById(B[i][2], B[i][1]).uid == 0 then x = false end if x == true then doRemoveItem(getThingfromPos(B[i][2]).uid,1) else doCreateItem(B[i][1], 1, B[i][2]) end end end return true end <globalevent name="nomequalquer" interval="1000" event="script" value="arquivo.lua"/> Intervalo baixo mesmo, para verificar a cada 1 segundo a hora para poder iniciar o evento. Não sei se vai funcionar ou se vai ficar lag, mas tenta e me fala.
  13. Só esqueci de uma coisa: -players que tenham um storage X não podem usar o baú kkk mas já é melhor que nada. Se funcionar da o rep mas não seleciona melhor resposta, que chegando em casa eu adiciono pra você =D (só pra não fecharem o tópico)
  14. Mas aparece algum erro ??
  15. Eu não tenho certeza, mas acho que isso: - o servidor reinicia 1x por dia (não sei se isso também interfere) Irá sim interferir. De qualquer forma, eu fiz aqui espero que dê certo. Em Actions/scripts crie um arquivo .lua e ponha dentro: function onUse(cid, item, fromPosition, itemEx, toPosition) storageTimeInit = 0001 -- storage que marca a hr feita a quest storageTimeFinish = 0002 -- storage que marca qnd a quest acaba if item.uid == 0000 then queststatus = 0000 thetime = os.time() if(getGlobalStorageValue(queststatus) == 1 and thetime > getGlobalStorageValue(storageTimeFinish)) then setPlayerStorageValue(queststatus,0) end if getGlobalStorageValue(queststatus) == 1 and thetime < getGlobalStorageValue(storageTimeFinish) then doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Alguem ja fez essa quest!") else setGlobalStorageValue(storageTimeInit, os.time()) doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Parabens você alterou a exp do servidor!") setGlobalStorageValue(storageTimeFinish, getGlobalStorageValue(storageTimeInit)+432000) setGlobalStorageValue(queststatus,1) end end return true end Lembrese de modificar os valores das storages, 0000, 0001, 0002, o numero da storage 0000 você deverá por no baú pelo rme, em UNIQUEID. Agora, volte para actions.xml e adicione: <action uniqueid="0000" event="script" value="arquivo.lua"/> Troque o valor de 0000 para o mesmo que você pois no script. E mude o nome do arquivo.lua tbm. Agora... Em creaturescripts/scripts crie um arquivo .lua e ponha dentro: function onLogin(cid) queststatus = 0000 if getGlobalStorageValue(queststatus) == 0 then setPlayerExtraExpRate(cid, 1.0) setPlayerStorageValue(0003,0) end if getGlobalStorageValue(queststatus) == 1 and getPlayerStorageValue(0003)~=1 then setPlayerExtraExpRate(cid, 2.0) setPlayerStorageValue(0003,1) end if getGlobalStorageValue(queststatus) == 1 and getPlayerStorageValue(0003)==1 then doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Todos do servidor receberam 2x exp extra por terem feito a quest!") end return true end Mude o 0003 para uma outra storage que não utilize em seu servidor, e mude o 0000 para o mesmo numero adicionado em UNIQUEID no RME e no script de action. Depois em login.lua adicione: registerCreatureEvent(cid, "QuestExp") Em creaturescripts.xml adicione: <event type="Login" name="QuestExp" event="script" value="arquivo.lua"/> Altere apenas o nome do arquivo .lua que voce criou na pasta creaturescripts/scripts Reinicia o servidor se ele estava aberto.. e pronto. Deve funcionar =D Se der erro ou não modificar a exp, me avisa. Se der tudo certo, REP+ =D
  16. @Mattch Sempre utilizei dessa maneira, em meus scripts e nunca obtive um erro.. chegar em casa vou testar em meu servidor, porém quase certeza que funciona dessa maneira sim. Visto que a storage2 está dentro da config. sendo assim, config.storage2 mesmo caso no creaturescript, config[1]. Sua lógica só faria sentido se fosse: local config = { [1] = {49607,49608,0000} , [2] = {49608} } Ai sim, para se referir ao segundo numero dentro da table seria config[1][1] ou config[1][2] para o terceiro. =D
  17. Então tenta utilizar o gate of expertise. No meu servidor está rodando certinho. Boa sorte
  18. Ok, vou modificar aguarde Pronto vamos tentar agora rsrs : local config = { storage = 49607, storage2 = 49608, tempo = 11, } local positions = {} function onCastSpell(cid, var) local itemid = math.random (118, 118) if getPlayerStorageValue(cid, config.storage) <= 0 then if(getPlayerStorageValue(cid, config.storage2) == 1)then setPlayerStorageValue(cid, config.storage, 0) table.remove(positions, getPlayerStorageValue(cid, config.storage)) setPlayerStorageValue(cid, config.storage2,0) end if getPlayerStorageValue(cid, config.storage2) == 0 then table.insert(positions, getThingPos(cid)) setPlayerStorageValue(cid, config.storage, #positions) doDecayItem(doCreateItem(itemid, getThingPos(cid))) doSendMagicEffect(getThingPos(cid), 3) setPlayerStorageValue(cid, config.storage2,1) addEvent(function() if isCreature(cid) then doPlayerSendTextMessage(cid, 22, "Expiro A Hiraishin Kunai.") setPlayerStorageValue(cid, config.storage, 0) table.remove(positions, getPlayerStorageValue(cid, config.storage)) setPlayerStorageValue(cid, config.storage2,0) end end, 1000*config.tempo) elseif getPlayerStorageValue (cid, config.storage) > 0 and getPlayerStorageValue(cid, config.storage2) == 1 then doTeleportThing(cid, positions[getPlayerStorageValue(cid, config.storage)]) doSendMagicEffect(getThingPos(cid), 82) setPlayerStorageValue(cid, config.storage2, 0) setPlayerStorageValue(cid, config.storage, 0) table.remove(positions, getPlayerStorageValue(cid, config.storage)) end end return true end local config = { [1] = {49607} , [2] = {49608} } function onDeath(cid, corpse, deathList) setPlayerStorageValue(cid, config[1], 0) setPlayerStorageValue(cid, config[2], 1) return true end
  19. Cria um arquivo em creaturescripts/scripts e poe dentro: local config = { [1] = {49607} } function onDeath(cid, corpse, deathList) setPlayerStorageValue(cid, config[1], 0) return true end No login.lua: registerCreatureEvent(cid, "onDeathSkill") Em creaturescripts.xml : <event type="death" name="onDeathSkill" event="script" value="arquivo.lua"/> Modifica o arquivo.lua para o nome do arquivo que vc colocou o primeiro código. Imagino que isso vá funcionar, se não funcionar me avisa.
  20. Só criar um arquivo de NPC, e por dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="The Oracle" floorchange="0" walkinterval="0"> <health now="150" max="150"/> <look typeex="1448"/> <interaction range="3" idletime="30"> <interact keywords="hi" focus="1"> <!--These are the keywords will trigger this interaction--> <keywords>hello</keywords> <keywords>greet</keywords> <response> <action name="script"> <!-- if(getPlayerVocation(cid) ~= 0) then selfSay("SORRY, YOU HAVE ALREADY MADE YOUR CHOICE IN LIFE!") _state.isidle = true return end --> if(getPlayerLevel(cid)) >= 8 then selfSay(getCreatureName(cid) .. ", ARE YOU PREPARED O FACE YOUR DESTINY?") _state.b1 = (isPremium(cid) == true) _state.topic = 1 else selfSay("CHILD! COME BACK WHEN YOU HAVE GROWN UP!") _state.isidle = true end </action> </response> </interact> <interact keywords="yes" topic="1"> selfSay(getCreatureName(cid) .. ", WHAT KIND OF PROFESSIONAL DO YOU WANNA BE?") _stage.topic = 2 </interact> <interact keywords="sorcerer" topic="2"> <response text="A SORCERER! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!"> <!--n2: 1 = sorcerer, 2 = druid, 3 = paladin, 4 = knight--> <action name="script"> _state.n2 = 1 _state.topic = 3 </action> </response> </interact> <interact keywords="druid" topic="2"> <response text="A DRUID! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!"> <!--n2: 1 = sorcerer, 2 = druid, 3 = paladin, 4 = knight--> <action name="script"> _state.n2 = 2 _state.topic = 3 </action> </response> </interact> <interact keywords="paladin" topic="2"> <response text="A PALADIN! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!"> <!--n2: 1 = sorcerer, 2 = druid, 3 = paladin, 4 = knight--> <action name="script"> _state.n2 = 3 _state.topic = 3 </action> </response> </interact> <interact keywords="knight" topic="2"> <response text="A KNIGHT! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!"> <!--n2: 1 = sorcerer, 2 = druid, 3 = paladin, 4 = knight--> <action name="script"> _state.n2 = 4 _state.topic = 3 </action> </response> </interact> <!--If the player does not say any profession, repeat our question--> <interact keywords="|*|" topic="2"> <response text="KNIGHT, PALADIN, SORCERER, OR DRUID?"/> </interact> <interact keywords="yes" topic="3"> <response> <!--n1: 1 = carlin, 2 = edron, 3 = thais, 4 = venore--> <!--n2: 1 = knight, 2 = paladin, 3 = sorcerer, 4 = druid--> <action name="script"> selfSay("SO BE IT!") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT) doPlayerSetVocation(cid, _state.n2) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT) </action> <action name="idle" value="1"/> </response> </interact> <interact keywords="bye" focus="0"> <keywords>farewell</keywords> <response text="Good bye. Recommend us, if you were satisfied with our service."/> </interact> <!-- If the event onBusy exists, the npc will make a queue like Tibia, if the event is removed the npc will be able to talk to all customers at the same time without problems. --> <interact event="onBusy"> <response text="WAIT UNTIL IT IS YOUR TURN!"> <action name="addqueue" value="|PLAYER|"/> </response> </interact> <!--This event triggers if the player goes to far away from the npc/logout/idle timeout--> <interact event="onPlayerLeave" focus="0"> <response text="COME BACK WHEN YOU ARE PREPARED TO FACE YOUR DESTINY!"/> </interact> </interaction> </npc> Se der erro me avisa, usei como base o The Oracle. Se ajudar rep+ =D
  21. Utiliza Lock door, aquelas que não abrem. Elas ou então tira do seu actions as ID's das portas que se modificam ao clicar. =)
  22. function onUse(cid, item, toPos) configdoor1 = { [1] = {x=1740,y=1730,z=6}, -- posição na frente da porta para onde o player vai qnd quiser entrar na quest [2] = {x=1740,y=1732,z=6} -- posição na frente da porta para onde o player vai quando clicar para sair na porta } if item.uid == 8800 then if getPlayerStorageValue(cid, 2091) ~= 1 and item.uid == 8800 then doPlayerSendTextMessage(cid,25,'Você precisa encontrar a chave para a porta primeiro!') doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return false end if getPlayerStorageValue(cid, 89042)~=1 and getPlayerStorageValue(cid, 2091)==1 and item.uid == 8800 and doPlayerRemoveItem(cid, 2091, 1)==true then doTeleportThing(cid, configdoor1[1]) doPlayerSendTextMessage(cid,25,'Você pode pegar sua premiação agora!') doSendMagicEffect(getPlayerPosition(cid), 10) setPlayerStorageValue(cid, 89042, 1) return true end if getPlayerStorageValue(cid, 89042) == 1 and item.uid == 8800 then doPlayerSendTextMessage(cid,25,'Adeus! Impossível entrar novamente!') doTeleportThing(cid, configdoor1[2]) doSendMagicEffect(getPlayerPosition(cid), 10) setPlayerStorageValue(cid, 89042, 0) return true end end return true end Em actions.xml: <action uniqueid="8800" event="script" value="nome_do_arquivo.lua"/> Esse é o script, basta mudar as posições, e adicionar a uniqueID na porta: no caso uid = 8800. E também a storage que diz se ele tem a chave ou não no meu caso era a 2091. Ignore a storage 89042 que é para dizer se ele está dentro ou fora da quest, não precisa mexer. Espero que ajude, se ajudar, rep+ =)
  23. Vou te ajudar, estou desenvolvendo o script. Aguarde um minutinho. -------------------------- Bom, não deve ser igual o do global, porque fiz umas modificações em cima de um que já tinha... Ai os oufits e parte visual você edita depois no arquivo do NPC, e não no script. Nesse script você deverá trocar os nomes das Cidades, e a posição de cada uma. Por favor não altere o nome das variáveis, apenas a palavra que o player deverá dizer para ir aquela cidade, por exemplo: elseif msgcontains(msg, 'town 1') then Você deverá mudar apenas o 'Town 1' entre aspas simples, e só. Segue arquivo .lua que deverá estar dentro da pasta NPC\Scripts Agora, em NPC copie um arquivo qualquer de NPC, e substitua: <npc name="Cpt Sparrow" script="data/npc/scripts/travel_boat.lua" walkinterval="2000" floorchange="0"> <health now="150" max="150"/> <look type="75" head="114" body="0" legs="114" feet="0" addons="2"/> </npc> Nesse, você deverá mudar o nome do arquivo, dependendo de como você salvá-lo. Depois no RME adicione o NPC no seu server e teste! Encontrei um sistema Vip que vc mencionou, se a parte de viajar vip não funcionar me avisa. Abrs,
  24. Você utiliza website, começando todos os players como No Vocation ? Abrs,
  25. Seguinte, se for uma spells ONE TARGET ou seja, apenas 1 alvo, o script pode ser feito assim: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 88) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -35.5, 1, -45.5, 1) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Com tag: <instant name="Nome da Spell" words="palavra magica" lvl="16" mana="20" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" groups="1,2000" icon="87" needlearn="0" event="script" value="attack/script_da_magia.lua"> <vocation id="1;5"/> </instant> No seu script você está pegando um local da sua posição até a posição do player, ou seja dando os efeitos em área. Desse jeito que te passei o dano será dado apenas em quem receber o target. Peguei como exemplo o script do exori mort e puis suas formulas. Vê se fica do jeito que você quer. Não adicionei efeito de transição ou seja um efeito de você até o target, se quiser é só adicionar: setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH) em baixo de: setCombatParam(combat, COMBAT_PARAM_EFFECT, 88) Espero que ajude, se ajudar, agradece =D

Informação Importante

Confirmação de Termo