Ir para conteúdo

tibiaa4e

Conde
  • Total de itens

    912
  • Registro em

  • Última visita

  • Dias Ganhos

    1

Tudo que tibiaa4e postou

  1. @up Hm se me deu boas ideias xD E não falo nada errado eu vou dar uma reorganizada xD E vlw pela ajuda Os principais erros de um script sempre veem de um usuario eu só testo ela umas 2x
  2. Pasta Enciclopedia com todos os links de outros tutoriais ! http://www.xtibia.com/forum/Pasta-Data-Enc...r-E-t99746.html Tutorial de Movements Bem, inicialmente minha ideia era aderir movements e talk actions juntos. Porém as talk actions evoluiram nesses 3 meses de planejamento e trabalho arduo... Infelizmente meus tutoriais, pelo menos os ultimos parecem que foram esquecidos, espero que esses futuros sejam uteis para pelo menos 10 pessoas, que já valerá a pena. Funções Ao contrario das actions os movements possuem mais de uma função. Ela possue 4 funções são elas : E fora algumas coisas que são apenas organizadas nos movements.xml onStepIn e onStepOut Essas funções foram por anos, suplicadas pelos scripters lua para a SVN, e apenas na RevBattleSys, elas foram atendidas. Elas executam o script quando se movimenta sobre o tile ou item indicado, isso revolucionou os ots e quests antes sonhadas foram possiveis. Os dois tem a mesma sintaxe, a diferença é que um é executado ao pisar no item, e o outro ao sair dele. function onStepIn(cid, item, position, fromPosition) Onde : cid: Creature Id, ou seja, o Player item: Item executado na ação position:Posição do player ou do item utilizado(normalmente os dois) fromPosition: A posição que ele veio (OnStepIn) ou a posição que ele irá (onStepOut) O modo de programa-lo é praticamente o mesmo das actions. Bem depois de muitos tutoriais, usar um script facil, seria substimar a cabeça dos guerreiros que leram todos esses longos tutoriais, então vamos aumentar o nivel de dificuldade: --Function by Ta4e 28/09/2008-- --90% Arena quest in tibia rl-- --Version 3.0-- function onStepIn(cid, item, position, fromPosition) --Position of create a globet-- globet1 = {x=1215, y=869, z=7, stackpos = 1} globet2 = {x=1215, y=876, z=7, stackpos = 1} globet3 = {x=1215, y=883, z=7, stackpos = 1} ------------------------------------------------------------------------------------------------------------------------------------------------ if item.actionid == 5010 then doTransformItem(item.uid, 425) if getPlayerStorageValue(cid,5017) == -1 then local golden = doCreateItem(8698,1,globet1) doSetItemSpecialDescription(golden, 'Vencedor foi'..getPlayerName(cid)..'.') doSendMagicEffect(globet1,10) setPlayerStorageValue(cid,5017,1) else doSendMagicEffect(globet1,2) end elseif item.actionid == 5011 then doTransformItem(item.uid, 425) if getPlayerStorageValue(cid,5016) == -1 then local golden = doCreateItem(7370,1,globet2) doSetItemSpecialDescription(golden, 'Vencedor foi'..getPlayerName(cid)..'.') doSendMagicEffect(globet2,10) setPlayerStorageValue(cid,5016,1) else doSendMagicEffect(globet2,2) end elseif item.actionid == 5012 then doTransformItem(item.uid, 425) if getPlayerStorageValue(cid,5015) == -1 then local golden = doCreateItem(7371,1,globet3) doSetItemSpecialDescription(golden, 'Vencedor foi'..getPlayerName(cid)..'.') doSendMagicEffect(globet3,10) setPlayerStorageValue(cid,5015,1) else doSendMagicEffect(globet3,2) end end end O script acima é o que faz o troféu da arena, não é tão avançado assim. Ele faz ao se pisar no item com actionid 5010, 5011 ou 5012 executar as ações acima. Ai ele transforma o item no item 425 (chão de dp "pisado"), checa se o player tem o storage, coloca uma descrição especial e manda os efeito e os storage. Acho que se você leu o tutorial de actions, você entende como fazer scripts com onStepIn e OnStepOut Caso você saiba fazer actions e ache estranho isso, apenas pense : Nas actions você imagine o script quando o player clicar em algo Aqui é quando ele andar em algo, pisar ou sair (Otimos para armadilhas) Aqui um script simples, porém pode ser util. No caso ela se inspirou no script da Inquisition Quest, quando se mata o boss Ungreez. No caso apenas o que sair da sala com mais exp leva o addon. Então eu criei esse script De uma olhada no meu script da Demon Oak, pode te dar um pouco de inspiração (existem outros, porém não estou lembrando) onAddItem e onRemoveItem Essas ai já são diferentes, tem umas frescuras e você demorará para acostumar com algumas coisas. A sintaxe dos dois é igual então : function onAddItem(moveitem, tileitem, pos) [cor=a]moveitem:[/color] O item que foi movido ou seja o escolhido para o script [cor=a]tileitem:[/color] A "pica" do additem, ele é o item que receberá o outro item ou item principal. [cor=a]pos:[/color] Posição do moveitem ou tileitem (depende de uma coisa) Bem essa "pica" de tileItem, foi meio dificil de eu aprender, como sempre o meu amigo Soulblaster foi que descobriu ainda na epóca do revBattleSys. E veja que não existe cid nele. function onAddItem(moveitem, tileitem, pos) if moveitem.itemid == 2048 then doRemoveItem(moveitem.uid, 1) doTransformItem(tileitem.uid, 6280) end end Esse script imbecil é o que faz o bolo pegar a vela e transforma-lo no outro bolo. <movevent event="AddItem" tileitem="1" itemid="6279" script="cake.lua"/> Veja a tag dele no movements.xml Agora vou explicar Quando se coloca tileitem = "1", esse item será o que recebe e o principal. No caso esse 6279 é o tileitem. Veja que o bolo que é importante nesse script, ele só se transforma se receber a vela. Ao mover o item 2048 (vela) no tileitem (o item 6279 indicado no movements), ele irá remover o moveitem (vela) e transforma o tileitem (bolo) em bolo com vela (6280) Veja que essa porcaria complica até um script de 3 linhas, e bem inutil como esse. Entenda que não daria para fazer ao contrario. Como jogar o bolo na vela, por isso o bolo é o tileitem. A maioria dos scripts o tileitem é 1, Outro exemplo é o scarab coin. Que quando você adiciona ele e está no fire você é teleportado para o outro lado: function onAddItem(moveitem, tileitem, pos) local checkpos = {x=1024, y=899, z=8, stackpos=253} local gopos = {x=1026, y=897, z=8, stackpos=253} local getcheck = getThingfromPos(checkpos) if moveitem.itemid == 2159 and tileitem.actionid == 5050 then doSendMagicEffect(pos,15) doRemoveItem(moveitem.uid, 1) if getcheck.itemid > 0 then doTeleportThing(getcheck.uid,gopos) doSendMagicEffect(gopos,10) doSendMagicEffect(checkpos,10) end end end Esse já é maior, porém é facinho também Se o moveitem for 2159(scarab coin) e o o tileitem tiver actionid 5050 (o coal, aquela bandeja verde) começa o script Ele manda o efeito de fogo e remove o scarab coin. Se o player tiver no fogo azul (pos checkpos) ele teleporta ele para a gopos e manda aquele efeito de teleport no local antigo. Se não tiver nada lá ele apenas queima a moeda. A tag do movements.xml é <movevent event="AddItem" tileitem="1" actionid="5050" script="scarab.lua"/> Aqui fuçando achei um exemplo que não é tileitem. A parchment quest do tio Soul (Primeiro script de movements que vi, isso em 4 foruns brasileiros e internacionais). ---Criado por Soulblaster(Xtibia)--------7.8 function onRemoveItem(item, tileItem, pos) --editando as variaveis-- demonpos1 = {x=815, y=684, z=15} demonpos2 = {x=815, y=688, z=15} demonpos3 = {x=821, y=684, z=15} demonpos4 = {x=821, y=688, z=15} posicaoX = 818 posicaoY = 685 posicaoZ = 15 ----------------------- if pos.x == posicaoX and pos.y == posicaoY and pos.z == posicaoZ then doSummonCreature("Demon", demonpos1) doSummonCreature("Demon", demonpos2) doSummonCreature("Demon", demonpos3) doSummonCreature("Demon", demonpos4) end return 1 end <movevent event="RemoveItem" tileitem="0" itemid="4857" script="parchment.lua" /> Ele tem algumas coisas maiores, porém funcionou lindamente. Ao remover o item (4857) da posição estipulada ele sumona dos demons e deixa o cara lascado. Simples e facil de explicar. Porque não tem tileitem... Espero que tenham entendido essa parte No caso do RemoveItem é a mesma coisa, mesma regra Aqui um ultimo scritp que engloba os dois scripts e pode dar ideias : -- Ignore o nome tosco das variaveis function onAddItem(moveitem, tileitem, position) local pos1 = {x=918, y=703, z=12, stackpos = 1} local posi1 = getThingfromPos(pos1) if moveitem.itemid == 5995 and tileitem.actionid == 15030 then doSetItemActionId(posi1.uid,15031) end return TRUE end function onStepIn(cid, item, position, fromPosition) if item.itemid == 1387 and item.actionid == 15031 then macaco1 = getPlayerExperience(cid) setPlayerStorageValue(cid,15032,macaco1) local total = macaco1 - macaco if total >= 500 then setPlayerStorageValue(cid,15031,2) end elseif item.itemid == 1387 and item.actionid == 15032 then macaco = getPlayerExperience(cid) if getPlayerStorageValue(cid,15031) == -1 then setPlayerStorageValue(cid,15030,macaco) end end end Claro que essa logica só funciona com uma sala unica e com apenas o ungreez. (dava para fazer com creatures scripts) No caso quando o monstro morre (onAddItem e o id do corpo dele em tile com actionid 15030) o teleport ao final da sala fica com uid 15031. E ai quando o player sai, o script checa a exp que ele tem. Porém quando ele entrou na sala o script ja checou o exp dele, ai ele compara e ve se a diferença for 500 ou + ele adiciona o storage necessario para o NPC. Bem, isso será explicado melhor no tutorial de Mega Quests (ou algo parecido com esse nome) Movements.xml Para se declarar o script no movements.xml deve se estipular o nome do arquivo, item principal e evento: <movevent event="StepIn" actionid="6015" script="dream.lua"/> <movevent event="StepOut" uniqueid="32193" script="dotile.lua" /> <movevent event="AddItem" tileitem="1" itemid="6279" script="cake.lua"/> <movevent event="RemoveItem" tileitem="0" itemid="4857" script="parchment.lua" /> Um exemplo de cada, isso é facil. Porém em movements.xml não se faz apenas declaração Isso ficará mais claro com o tutorial de items, porém se você ja fuçou e manja um inglês tecnico matará isso facinho. Se você é curioso, ja desceu o movements.xml e viu um monte de treco estranho. São as funções onEquipItem e onDeEquipItem Essas funções são executadas quando o player se equipa ou desequipa de um item com o id estipulado <movevent event="Equip" itemid="2195" slot="feet" function="onEquipItem"/> Esse codigo faz o servidor perceber que esse item 2195 (boots of haste) faz algo especial, arrumado no item.xml E também : <movevent event="Equip" itemid="7886" slot="feet" function="onEquipItem"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer" showInDescription="0"/> <vocation name="Druid"/> <vocation name="Elder Druid" showInDescription="0"/> </movevent> Nesse caso o item 7886 (sei lá) só poderá ser usado em sorcerer,master ou druid e elder. E esse showInDescription é aquela mensagem quando se da look, dizendo que ela só pode ser usada em sorcerer ou druid. No caso ela não mostrará que master e elder podem usar, o que seria idiota. O default delá é 1. No caso apenas essas vocações poderão usar o item, ou no minimo ter os efeitos certos (não me lembro se só bloquea o item ou não deixa nem o player colocar) Bem para ajudar esse slot é o local, então eles são A do arrow deve ser arrow e da backpack o mesmo. (eu acho, to sem sources para verificar) E quando você for mudar o slot da mão, lembre se de programar as duas. <movevent event="DeEquip" fromid="8905" toid="8909" slot="right-hand" function="onDeEquipItem"/> <movevent event="Equip" itemid="8900" slot="left-hand" level="30" function="onEquipItem"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer" showInDescription="0"/> <vocation name="Druid"/> <vocation name="Elder Druid" showInDescription="0"/> </movevent> <movevent event="DeEquip" itemid="8900" slot="left-hand" function="onDeEquipItem"/> <movevent event="Equip" itemid="8900" slot="right-hand" level="30" function="onEquipItem"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer" showInDescription="0"/> <vocation name="Druid"/> <vocation name="Elder Druid" showInDescription="0"/> </movevent> E sempre use o DeEquip e Equip e os dois slots! Bem espero que seja util esse breve tutorial, e você guerreiro que anda lendo essa monte de porcaria consiga fazer algo e aprender. Peço que comentem, deem sugestões no meu SACO (Serviço de Antendimento ao Cliente hOnorario[Já pensaram besteira]), e me ajudem a melhorar isso. Esperem os proximos, que devido a falta de tempo podem demorar, mais sempre terá essa qualidade (é uma porcaria, mais sei que vocês ama!!!)
  3. Adicionado depois de --UPDATE-- Dois fix que arrumarão alguns erros
  4. Os brasileiros arrebentam na google Um brasileiro parece q inventou uma API para o androide o novo celular dela Ele fez um jogo da velha e ganho mo grana preta... Google tem dinheiro para comprar o Brasil!!!
  5. falta os npc de banco aqui que são melhores q esses
  6. esse npc funfa em 8.4... As funções são as mesmas Claro se vc usar o tfs Não as distros lixos que tem por ai (exceção do open tibia, porém lá acho q n funfa)
  7. Você está criando entre aspas dupla ? O limite do nome da guild é estipúlado no config.lua pelo q me lembre veja se o player tem lvl necessario e tudo mais No meu ot de teste eu criei uma normalmente como o nome "legatomics"
  8. Não funcionou direito isso parece uma critica Se você quiser resolver que tal colocar o erro que nós tentaremos resolver... E poderá ser o mesmo erro de muitos e poderá ser concertado ou explicado...
  9. tibiaa4e

    Xtibia Midia

    Uia auhahua tem cada uma aqui osso Esses dias to ouvindo muito : Miley Cyrus - Full Circle, Driveway e talz
  10. Parabens... Agora o Rickz vai ter q sair do Cz e ser moderador xD (tomare que ele não modere como joga para o bem do xtibia) O merchant não conheço mais deve ser competente
  11. Ué você entendeu o erro e depois fez mistureba... Seu ot não tem esses monstros ai ele não sumona... baixe um que tenha e adicione elas no seu ot
  12. O concerto da minha bola de cristal fico caro e ai não consegui pega-la ainda Porém você pode me ajudar também... Diga a versão da sua distro e a do tibia ai poderemos conversar
  13. Melhor programa para editar php !? Bloco de Notas!!! E esse post não deveria estar em downloads !?
  14. Em spells.xml TUdo que tiver needlearn = "0" Coloca needlearn = "1"
  15. local cost = 1000 -- custo do serviço local newpos = {x=684, y=606,z=7} function broadcastIt(cid, message, keywords, parameters, node) if (doPlayerRemoveMoney(cid,cost) == TRUE) then broadcastMessage(''.. getCreatureName(cid) ..' says: '.. message ..'') doTeleportThing(cid,newpos) 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()) Se sanou sua duvida reporte o topico como Dúvida Sanada
  16. selfSay(''So, Konoha village, say yes to go!') Se abriu aspa dupla e fechou com aspas simples... Se sanou sua duvida reporte o topico como Dúvida Sanada
  17. Legal um concorrente pro tfs @ingles EH verdade vamo traduzir, já que saber inglês é inutil mesmo neh Vamu só falar Brasileiro!!
  18. Assim As pessoas que apenas baixam ots e reclamam de tudo... São preguiçosas e não querem aprender a mexer em sql Então elas irão parar de mecher por isso ? Otimo!!! Sql é melhor, mais rapido, milhares de vezes mais seguro e mais organizado... Imaginei um otserver com 900 players o cara iria se lascar para editar COm sql eh facim... Da até para fazer um site melhor... Portanto viva ao sql
  19. Versão 2.0 postada Bugs e problemas póstem que tentarei resolver o mais rapido possivel
  20. Vamos entender... Lag para começar eh um travamento causado por algum fator externo ou normalmente porque seu computador não tem suporte para o programa... Esse tutorial faz o otserver ser o programa primario (mesmo assim programas microsoft ainda tem prioridade maior) Ou seja só será util se vc jogar tibia e rodar servidor... E sobre só funcionar em ots xml é irreal Já que o banco de dados não influecia muito na execução do otserver... Isso é prosopopéia flácida para acalentar bovinos...
  21. Hehe belo tuto Tomare que a comunidade se interesse @eventide Ah eu prefiro Java tbm... Como é multi plataforma gere eh melhor E um programador java ganha bem mais que um c ou c++
  22. Eu fiz uma talk action assim para gms Também acho que é mais script que tutorial Mais não é eu quem decide xD Coloque entre a tag code para melhor compreeensão local price = 3020 --Backpack+poções local item = 7590 --Great Mana Potion --100% by Tprocheira --100% by Tprocheira function onUse(cid, item, item2, fromPosition, toPosition) if getPlayerMoney(cid) >= price then doPlayerRemoveMoney(cid, price) container = doPlayerAddItem(cid, 2000) for i = 1, 20 do doAddContainerItem(container, item) end else doPlayerSendCancel(cid, "Sorry, you don't have enough money!") end end
  23. tibiaa4e

    Npc 8.4

    Ja me reportaram esse erro uma vez EH erro da distro colega Aguarde uma atualização da SVN ou do TFs TEAM
  • Quem Está Navegando   0 membros estão online

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