Ir para conteúdo

brainless

Campones
  • Total de itens

    26
  • Registro em

  • Última visita

Tudo que brainless postou

  1. ok, agora posta pra mim o conteúdo do seu arquivo data\movements\scripts\arena.lua ^^
  2. só acrescentando, já existe o TFS 3.1 final (superior às versões beta e alpha) http://www.xtibia.com/forum/84-Tfs-31-Official-t108457.html
  3. tem, se vc usa SVN, o link é esse: http://svn.otland.net/public/forgottenserver/tags/0.3.1pl2/
  4. vc provavelmente criou um arquivo .xml (kra nunk mexi com arena então to boiando bonito mas sei como solucionar o erro =D) que tem a seguinte expressão script="lib/movements.lua" se eu estiver certo, basta adicionar uma / antes ficando script="/lib/movements.lua" se der o mesmo erro vc também pode tentar script="/data/lib/movements.lua"
  5. brainless

    [level]

    se não me engano, se vc utilizar a ferramenta pvpTool no map editor, akele tile passa a ser parte de uma 'arena' e morrendo lá vc não perde nada (só aol) faça o teste
  6. eu axo q outra alternativa seria substituir todas as ocorrencias de doPlayerRemoveItems por doPlayerRemoveItem(cid,item,count) sem o S
  7. ta faltando MUITA informação kra =\ o erro completo no console... qual o nome desse arquivo q vc postou, onde ele está, distro do server e acredito eu que ele não tá completo tb
  8. antes depois aproveite e dê uma olhada no Easy Oracle by Brainless http://www.xtibia.com/forum/Easy-Oracle-t108504.html
  9. brainless

    [level]

    config.lua localize troque por
  10. brainless

    [npc]

    data\npc\npc.xml <?xml version="1.0" encoding="UTF-8"?> <npc name="Alto-falante" script="data/npc/scripts/alto falante.lua" walkinterval="2000" floorchange="0" access="6"> <health now="150" max="150"/> <look type="134" head="57" body="59" legs="40" feet="76" corpse="2212"/> </npc> data\npc\scripts\alto falante.lua local cost = 100 -- custo do serviço local broadcastCommand = '/b' function broadcastIt(cid, message, keywords, parameters, node) if (doPlayerRemoveMoney(cid,cost) == TRUE) then selfSay(broadcastCommand..message) else selfSay('I\'m sorry, but you don\'t have the money.') end end 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 npcHandler:setMessage(1,'Hi, |PLAYERNAME|. I can {broadcast} any message for '..cost..'gps') node = keywordHandler:addKeyword({'broadcast'},StdModule.say,{npcHandler=npcHandler,onlyFocus=true,text='What do you want to broadcast?'}) node:addChildKeyword({},broadcastIt,{npcHandler=npcHandler}) npcHandler:addModule(FocusModule:new()) fiz na correria e não testei... mas posta a resposta que chegando no serviço eu te respondo
  11. brainless

    Easy Oracle

    bom, este oracle é mais pra quem tem server grande, e frequentemente adiciona novas cidades, ele traz a facilidade de configurar uma nova cidade ou vocations personalizadas -- AREA EDITÁVEL local Cities = { -- {id,'nome',x,y,z,'premium/free'} {1,'Varak',242,429,12,'premium'}, {2,'Rhyves',159,387,6,'free'}, {3,'Jorvik',469,172,7,'free'}, } local Vocations = { -- {id,'name'} {2,'druid'}, {4,'knight'}, {3,'paladin'}, {1,'sorcerer'}, } local phrases = { -- event = 'phrase', noLevel = 'CHILDREN! COME BACK WHEN YOU\'VE GROWN UP!', greet = 'HELLO, |PLAYERNAME|. ARE YOU PREPARED TO FACE YOUR DESTINY?', askVoc = 'WHAT VOCATION YOU WANT TO BE? ', confirmVoc = 'ARE YOU SURE? THIS DECISION IS IRREVERSIBLE.', askCity = 'DO YOU WANT TO LIVE IN ', confirmCity = {'I\'LL TURN YOU INTO A ',' AND LEAVE YOU IN ',' RIGHT?'}, endMessage = 'GOOD LUCK IN YOUR JOURNEY!', playerDecline = 'COME BACK WHEN YOU FEEL PREPARED', } -- FIM DA ÁREA EDITÁVEL local function mainMe(cid, message, keywords, params, node) doPlayerSetVocation(cid, params.voc[1]) doPlayerSetTown(cid, params.cit[1]) params.npcHandler:releaseFocus(cid) local tmp = getCreaturePosition(cid) doTeleportThing(cid, params.cit[3]) doSendMagicEffect(tmp, CONST_ME_POFF) doSendMagicEffect(params.cit[3], CONST_ME_TELEPORT) end 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 onThink() npcHandler:onThink() end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) if (not npcHandler:isFocused(cid)) then return false end if getPlayerLevel(cid) < 8 then npcHandler:say(phrases.noLevel,cid) npcHandler:releaseFocus(cid) return false end end local cityList = '' local ableCity = {} local node2 = {} local node3 = {} local node4 = {} local pos = {} for i=1,#Cities do pos = {x=Cities[i][3],y=Cities[i][4],z=Cities[i][5]} if (isPremium(cid) == TRUE) then ableCity[#ableCity+1] = {Cities[i][1],Cities[i][2],pos} elseif (Cities[i][6] == 'free') then ableCity[#ableCity+1] = {Cities[i][1],Cities[i][2],pos} end end if #ableCity > 1 then cityList = '{'..ableCity[1][2]..'}' end for i=2,#ableCity-1 do cityList = cityList..', {'..ableCity[i][2]..'}' end phrases.askCity = string.upper(phrases.askCity..cityList..' or {'..ableCity[#ableCity][2]..'}?') local VocList = '{'..Vocations[1][2]..'}' for i=2,#Vocations-1 do VocList = VocList..', {'..Vocations[i][2]..'}' end phrases.askVoc = string.upper(phrases.askVoc..VocList..' or {'..Vocations[#Vocations][2]..'}?') keywordHandler:addKeyword({'no'},StdModule.say,{npcHandler=npcHandler,onlyFocus=true,reset=true,text=phrase s.playerDecline}) local node1 = keywordHandler:addKeyword({'yes'},StdModule.say,{npcHandler=npcHandler,onlyFocus=true,text=phrases.askVoc}) for i=1,#Vocations do node2[i] = node1:addChildKeyword({Vocations[i][2]},StdModule.say,{npcHandler=npcHandler,onlyFocus=true,text=phrases.confirmVo c}) node2[i]:addChildKeyword({'no'},StdModule.say,{npcHandler=npcHandler,onlyFocus=true,text=phrases.askVoc,mo veup=1}) node3[i] = node2[i]:addChildKeyword({'yes'},StdModule.say,{npcHandler=npcHandler,onlyFocus=true,text=phrases.askCity}) for j=1,#ableCity do askCity = string.upper(phrases.confirmCity[1]..Vocations[i][2]..phrases.confirmCity[2]..ableCity[j][2]..phrases.confirmCity[3]) node4[j] = node3[i]:addChildKeyword({string.lower(ableCity[j][2])},StdModule.say,{npcHandler=npcHandler,onlyFocus=true,text=askCity}) node4[j]:addChildKeyword({'no'},StdModule.say,{npcHandler=npcHandler,onlyFocus=true,text=phrases.askCity,m oveup=1}) node4[j]:addChildKeyword({'yes'},mainMe,{voc=Vocations[i],cit=ableCity[j],npcHandler=npcHandler}) end end npcHandler:setMessage(1,phrases.greet) npcHandler:addModule(FocusModule:new()) para adicionar uma nova cidade, bastar ir dps da última e adicionar {id no map editor, nome da cidade, x, y, z, free} e pronto, seu oracle já está pronto pra oferecer a nova cidade! mesmo que não usem, comentem :smile_positivo:
  12. ele tá "perfeito" é a versão final.. não é mais beta... se for encontrado bug é coisa normal que todo server tem, aí é só reportar pra galera da equipe corrigir... to usando pra testes quando vou ajudar a galera da sessão de dúvidas de script e tá se portando MUITO bem tanto no vista quanto no XP
  13. Normalmente não testo os scripts... só quando algo começa a dar muita dor de cabeça (3 ou 4 tentativas sem sucesso) aí eu faço testes e posto apenas o resultado final outro errinho, mas este é coisa de aprendizado percebeu que vc montou uma linha de "parameters" ? então.. ela não é a toa não... é pra usar quando vc chama uma função utilizando addEvent(function, delayTime, parameters) TODAS as variáveis que você usa são enviadas dentro de parameters{} em forma de array ficaria assim então: addEvent(onCastSpell1,100,parameters) addEvent(onCastSpell2,200,parameters) addEvent(onCastSpell3,300,parameters) addEvent(onCastSpell4,400,parameters) addEvent(onCastSpell5,500,parameters) as funções devem ser mudadas para local function onCastSpell[b]X[/b](parameters) doCombat(parameters.cid,parameters.combatX,parameters.var) end teste e me dê uma resposta... agora, se me permite, se deseja trabalhar com estágios, sugiro que aprenda a programar utilizando arrays e loopings, além de o script ficar muito mais limpo, esta edição que vc vai ter que fazer em 3 setores diferentes, por 5 vezes, vc faria em apenas um lugar, apenas uma vez. o script ficaria assim: local myCombat = {} local areas = { { {1, 1, 1}, {1, 2, 1}, {1, 1, 1} }, { {1, 1, 1, 1, 1}, {1, 0, 0, 0, 1}, {1, 0, 2, 0, 1}, {1, 0, 0, 0, 1}, {1, 1, 1, 1, 1} }, { {1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 2, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 1}, [1, 1, 1, 1, 1, 1, 1} }, } areas[4] = areas[2] areas[5] = areas[1] function castMySpell(param) doCombat(param.cid,param.combat,param.var) end for i=1,5 do myCombat[i] = createCombatObject() setCombatParam(myCombat[i], COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(myCombat[i], COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) setCombatFormula(myCombat[i], COMBAT_FORMULA_SKILL, 1, 0, 2, 0) setCombatArea(myCombat[i],createCombatArea(areas[i])) param = {cid=cid,var=var,combat=myCombat[i]} addEvent(castMySpell,i*100,param) end vê como fica mais limpo?? mas matenha o seu até ficar claro como funcionam as funções OK? dando errado ou não, poste a resposta por favor
  14. falha simples: troque por {1,1,1,1,1,1,1}
  15. brainless

    [item]

    data\movements\movements.xml ID do item vocations que podem usar
  16. The Forgotten Server Versão: 3.1 Patch: 2 Codename: Crying Damson Protocolo: 8.4 Onde reportar Bugs: aqui (em inglês) DLL Files: http://www.xtibia.com/forum/Todas-Dlls-Aqui-t50030.html Changelog: link direto Sources: Online / Download com Tortoise SVN Console Version: Scan / Download Gui Version: Scan / Download Via OTLand
  17. http://www.xtibia.com/forum/Melhorando-Os-...rv-t104292.html
  18. se o seu ot tiver o arquivo data\globals.lua mande localizar, veja se existe a função "isPremium(cid)" se o seu ot tiver o arquivo data\lib\function.lua é certeza que terá a função isPremium(cid) aí basta fazer algumas poucas alterações no script do MUTANO: original Corrigido function onStepOut(cid, item, pos) if (not isPremium(cid)) then doMoveCreature(cid, NORTH) doCreatureSay(cid, "Compre VIP para passar aqui.", TALKTYPE_ORANGE_1) else doMoveCreature(cid, SOUTH) end end
  19. desconfio que não vá dar certo mas, não custa tentar arquivo data\items\items.xml procure por adicione a linha <attribute key="charges" value="2" /> antes de </item>
  20. antes de tudo, informo que tem que ser feito com um monstro imóvel onStepIn(cid,item,pos,fromPos) local monster = 'Training Monk' local spawn = {x=100,y=100,z=7} checkpos = {x=spawn.x,y=spawn.y,z=spawn.z,stackpos=256} if (getThingFromPosition(checkpos) == getCreatureByName(monster)) then return false end doSummonCreature(monster,spawn) end algumas considerações trainer e trainer3 possuem o mesmo valor... dispense a ambiguidade, trabalhe apenas com 'trainer' esta checagem é redundante... este script SÓ SERÁ CHAMADO se a action id for 20001, logo, esta condição SEMPRE retornará VERDADEIRO particularmente não entendi esta checagem, se o valor retornado for um monstro, vc causará um erro ao tentar pegar o ITEMid de uma CREATURE por fim, poste a mesnagem de erro COMPLETA do console, estão faltando as informações da linha que está causando o erro
  21. vc detalhou tanto, e acabou faltando os detalhes que realmente importam =\ tente desenhar no paint, o char, e as áreas de efeito, os estágios e poste a imagem. cole aqui, o conteúdo da spell e a mensagem de erro que aparece no console as vezes, foi um comandinho que faltou e sua spell está correta resumindo eu preciso de 1. imagem explicando a área de efeito da magia: 2. conteúdo do arquivo da spell 3. mensagem de erro do console
  22. vc deve ter percebido que eu não gosto muito de npc's em modo CreatureSayCallback né =) então vai aí minha sugestão local keywords {'change','piece','four','amulet'} local phrases = { tradeMsg = 'I can fix all the four pieces of the broken {amulet} into one!', fourpobaMsg = 'Do you want me to fix all the four pieces of that broken amulet?', hasNoMsg = 'You need all four pieces of the broken amulet to get all, or I can\'t fix it!', noMsg = 'I have no time, I\'m a busy man, LEAVE!', startWorking = 'Here we go! Come back in 24 hours to get your necklace.', working = 'Wait until your paste is ready, is a delicate work.', done = 'Take your necklace, it was hard but it was perfect.', } 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 npcHandler:addKeyword({'fix'}, StdModule.say, {npcHandler=npcHandler,onlyFocus=true,text=phrases.tradeMsg}) local node = '' for i=1,#keywords do node = npcHandler.addKeyword({keywords[i]},StdModule.say, {npcHandler=npcHandler,onlyFocus=true,text=phrases.fourpobaMsg}) node:addChildKeyword({'yes'},npcActions,{}) node:addChildKeyword({'no'},StdModule.say, {npcHandler=npcHandler,onlyFocus=true,text=phrases.noMsg,reset=true}) end function npcActions() if getPlayerStorageValue(cid,3218) == nil then local parts = 0 for i=8262,8265 do if getPlayerItemCount(cid,i,1) then parts = parts + 1 end end if parts == 4 then for i=8262,8265 do getPlayerTakeItem(cid,i,1) end setPlayerStorageValue(cid,3218,os.time()+24*60*60) selfSay(phrases.startWorking,cid) else selfSay(phrases.hasNoMsg,cid) end elseif getPlayerStorageValue(cid,3218) < os.time() then selfSay(phrases.working,cid) else selfSay(phrases.done,cid) doPlayerAddItem(cid,8266,1) end npcHandler:resetNpc() end npcHandler:addModule(FocusModule:new()) se não der certo, ou preferir manter o seu, o que eu ACHO que esteja causando os erros são os seguintes pontos: apague TODO o trecho em negrito mude para true boa sorte. Outro ponto que é interessante ressaltar, é a contagem da criação do amuleto, armazenada em um evento caso seu server caia, todos que estiverem com amuleto em espera, perderão os itens entregues ao npc, e não terão dirieto a receber seu amuleto de volta recomendo que faça o storage do tempo em banco de dados substituindo addEvent(recompensa, 86400000, params) por setPlayerStorageValue(cid,storageId,os.time()+24*60*60) e a checagem da seguinte maneira não falou com o npc amuleto em espera amuleto pronto
  23. tira a primeira linha deixa só
  24. socoooorro!! hauhauhauhau tente usar o script do alisson linneker: http://www.xtibia.com/forum/npcaddon-Por-I...ts-t104419.html
  • Quem Está Navegando   0 membros estão online

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