Slicer 1070 Postado Janeiro 5, 2013 Share Postado Janeiro 5, 2013 (editado) Ola galera, cabei de fazer um npc de travel que move o player por uma rota determinada no mapa editor! Peguei como base a ideia dos novos npcs de travel da pxg... Vamos la então... 1* Vão na pasta lib/ e criem um arquivo la com o nome Travel.lua, e coloquem isso dentro... function isPosEqual(pos1, pos2) if pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z then return true end return false end function isPosInArray(array, pos) if not next(array) then return false end for i = 1, #array do if isPosEqual(pos, array[i]) then return true end end return false end function moveTravel(cid, posFinal, oldPos) if not isPlayer(cid) then return true end local pos = getThingPos(cid) local oldPos = oldPos or {} if isPosEqual(pos, posFinal) then moveTravel(cid, {x=0, y=0, z=0}, oldPos) doRemoveCondition(cid, CONDITION_OUTFIT) doSendMagicEffect(getThingPos(cid), 21) mayNotMove(cid, false) setPlayerStorageValue(cid, 75846, -1) return true end for i = 0, 7 do local newPos = getPosByDir(pos, i) if not isPosInArray(oldPos, newPos) and getTileInfo(newPos).nologout then doTeleportThing(cid, newPos, true) table.insert(oldPos, pos) if isPosEqual({x=0, y=0, z=0}, posFinal) then return true end addEvent(moveTravel, 150, cid, posFinal, oldPos) return true end end return false end 2* Vão na pasta npc/ e criem o arquivo .xml do npc... Vou deixar um exemplo aki... <?xml version="1.0" encoding="UTF-8"?> <npc name="Nurse Joy" script="Water Travel.lua" walkinterval="350000" floorchange="0" speed="0" lookdir="2"> <health now="150" max="150"/> <look type="1041" head="10" body="15" legs="20" feet="25"/> <parameters> <parameter key="message_greet" value="Hi, you would like to {travel}?."/> </parameters> </npc> 3* Vão na pasta npc/scripts/ e criem um arquivo la com o nome Water Travel.lua e colem isso dentro... local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) posInicial = nil posFinal = nil npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid ---------------------- CONFIGS -------------------------------------- local posis = { --[pos do npc] = {pos inicial, pos final}, [{x = 988, y = 1067, z = 7}] = {posIni = {x = 987, y = 1069, z = 7}, posFinal = {x = 947, y = 1110, z = 7}}, [{x = 945, y = 1112, z = 7}] = {posIni = {x = 947, y = 1111, z = 7}, posFinal = {x = 986, y = 1069, z = 7}}, [{x = 107, y = 77, z = 7}] = {posIni = {x = 110, y = 78, z = 7}, posFinal = {x = 81, y = 79, z = 7}}, [{x = 84, y = 77, z = 7}] = {posIni = {x = 81, y = 78, z = 7}, posFinal = {x = 110, y = 79, z = 7}}, [{x = 116, y = 60, z = 7}] = {posIni = {x = 119, y = 58, z = 7}, posFinal = {x = 72, y = 59, z = 7}}, [{x = 69, y = 62, z = 7}] = {posIni = {x = 72, y = 60, z = 7}, posFinal = {x = 119, y = 57, z = 7}}, } for npcPos, pos in pairs(posis) do if isPosEqual(getThingPos(getNpcCid()), npcPos) then posInicial = pos.posIni posFinal = pos.posFinal break end end if not posInicial then selfSay("A error has occored!", cid) print("A error has occored, npc travel aren't in the correct place!") return false end local outfit = getPlayerSex(cid) == 0 and {lookType = 1440} or {lookType = 1439} --outfit q o player vai ganhar, a 1* eh female e a 2* eh male local msg = msg:lower() ------------------------------------------------------------------------------ if msgcontains(msg, 'travel') then ------------------------- Se nao usarem um serv pokemon podem tirar essa parte! ------------------------------------------- local storages = {17000, 63215, 17001, 13008, 5700} for s = 1, #storages do if getPlayerStorageValue(cid, storages[s]) >= 1 then return selfSay("You can't do that while is Flying, Riding, Surfing, Diving or mount a bike!", cid) and true end end if #getCreatureSummons(cid) >= 1 then return selfSay("Return your pokemon!", cid) and true end -------------------------------------------------------------------------------------------------------------------------- selfSay("Are you sure do you want to travel?", cid) talkState[talkUser] = 1 return true elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'Yes')) and talkState[talkUser] == 1 then selfSay("Ok then, good travel!", cid) doTeleportThing(cid, posInicial, false) doSendMagicEffect(getThingPos(cid), 21) mayNotMove(cid, true) setPlayerStorageValue(cid, 75846, 1) doSetCreatureOutfit(cid, outfit, -1) moveTravel(cid, posFinal) talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Pronto, agora vamos as configurações... Configuraçoes: 1* Aki vocês configuram as posições dos npcs e as posições iniciais e finais da rota q o player vai seguir: local posis = { --[pos do npc] = {pos inicial, pos final}, [{x = 988, y = 1067, z = 7}] = {posIni = {x = 987, y = 1069, z = 7}, posFinal = {x = 947, y = 1110, z = 7}}, [{x = 945, y = 1112, z = 7}] = {posIni = {x = 947, y = 1111, z = 7}, posFinal = {x = 986, y = 1069, z = 7}}, [{x = 107, y = 77, z = 7}] = {posIni = {x = 110, y = 78, z = 7}, posFinal = {x = 81, y = 79, z = 7}}, [{x = 84, y = 77, z = 7}] = {posIni = {x = 81, y = 78, z = 7}, posFinal = {x = 110, y = 79, z = 7}}, [{x = 116, y = 60, z = 7}] = {posIni = {x = 119, y = 58, z = 7}, posFinal = {x = 72, y = 59, z = 7}}, [{x = 69, y = 62, z = 7}] = {posIni = {x = 72, y = 60, z = 7}, posFinal = {x = 119, y = 57, z = 7}}, } 2* Aki vocês configuram a outfit q o player vai ganhar quando começar o travel, podendo ser outfit de moto, carro, kaike e afins: local outfit = getPlayerSex(cid) == 0 and {lookType = 1440} or {lookType = 1439} --outfit q o player vai ganhar, a 1* eh female e a 2* eh male 3* Caso não usem um servidor de pokemon, podem tirar essa parte... ------------------------- Se nao usarem um serv pokemon podem tirar essa parte! ------------------------------------------- local storages = {17000, 63215, 17001, 13008, 5700} for s = 1, #storages do if getPlayerStorageValue(cid, storages[s]) >= 1 then return selfSay("You can't do that while is Flying, Riding, Surfing, Diving or mount a bike!", cid) and true end end if #getCreatureSummons(cid) >= 1 then return selfSay("Return your pokemon!", cid) and true end -------------------------------------------------------------------------------------------------------------------------- 4* Essa é a imagem de como vocês tem q configurar as rotas: Para fazer as rotas usem a ferramenta 'No-Logout' do mapa editor... lembrando que as posições finais tambem tem que ter o piso no-logout! Podem fazer a rota como quiserem, mas por favor, nao tentem 'forçar' o script. Importante: O npc tem q tar imóvel, ele n pode se mover da posição que foi colocada na tabela no script Water Travel.lua! Importante: Esse script foi inicialmente feito para travels na agua, mas eu testei aki e da pra fazer rotas na terra normalmente! Importante: Quem for usar num servidor pokemon olhem o spoiler abaixo: 1* Vão no arquivo actions/scripts/goback.lua e achem essa parte... if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then return true end e deixem assim... if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 or getPlayerStorageValue(cid, 75846) >= 1 then return true end 2* Vão no arquivo movements/scripts/surf.lua e logo abaixo dessa linha: function onStepIn(cid, item, position, fromPosition) coloquem isso.. if getPlayerStorageValue(cid, 75846) >= 1 then return true end 3* Caso usem a barra de pokemons do kpdo: vão em lib/some functions.lua e achem isso... function doGoPokemon(cid, item) e façam a mesma coisa do '1*' ali emcima. Espero que gostem, qualquer duvida ou bug podem postar aki, Vlw! Editado Março 29, 2013 por Slicer Link para o comentário https://xtibia.com/forum/topic/203430-npc-travel-por-rota/ Compartilhar em outros sites More sharing options...
craigmabbit 36 Postado Janeiro 5, 2013 Share Postado Janeiro 5, 2013 muito bom slicer, rep+ Link para o comentário https://xtibia.com/forum/topic/203430-npc-travel-por-rota/#findComment-1431323 Compartilhar em outros sites More sharing options...
HesLife 0 Postado Janeiro 5, 2013 Share Postado Janeiro 5, 2013 é de tibia? Link para o comentário https://xtibia.com/forum/topic/203430-npc-travel-por-rota/#findComment-1431328 Compartilhar em outros sites More sharing options...
Caronte 446 Postado Janeiro 5, 2013 Share Postado Janeiro 5, 2013 Muito bom , se eu tivesse um servidor dedicado não hesitaria a colocar nele . Reputado . ótimo tutorial como sempre e valeu pela dica no meu tutorial slicer Link para o comentário https://xtibia.com/forum/topic/203430-npc-travel-por-rota/#findComment-1431329 Compartilhar em outros sites More sharing options...
Slicer 1070 Postado Janeiro 5, 2013 Autor Share Postado Janeiro 5, 2013 @HesLife funciona em tibia sim.. soh q como soh tenhu serv de pokemon aki, eu fiz nele.. Link para o comentário https://xtibia.com/forum/topic/203430-npc-travel-por-rota/#findComment-1431330 Compartilhar em outros sites More sharing options...
Gabriel Couto 293 Postado Janeiro 7, 2013 Share Postado Janeiro 7, 2013 Se você melhorar a formatação (por em codes), eu coloco no portal, bem interessante! Link para o comentário https://xtibia.com/forum/topic/203430-npc-travel-por-rota/#findComment-1432739 Compartilhar em outros sites More sharing options...
Slicer 1070 Postado Janeiro 7, 2013 Autor Share Postado Janeiro 7, 2013 eu n coloquei em code pq iria fica bemmm grande o post mas... posso tentar por.. ;x Link para o comentário https://xtibia.com/forum/topic/203430-npc-travel-por-rota/#findComment-1432744 Compartilhar em outros sites More sharing options...
Gabriel Couto 293 Postado Janeiro 7, 2013 Share Postado Janeiro 7, 2013 eu n coloquei em code pq iria fica bemmm grande o post mas... posso tentar por.. ;x Dentro dos spoilers é possível, não? Link para o comentário https://xtibia.com/forum/topic/203430-npc-travel-por-rota/#findComment-1432764 Compartilhar em outros sites More sharing options...
Huntre 1 Postado Janeiro 7, 2013 Share Postado Janeiro 7, 2013 Nossa esse script vai ajudar muita gente, parabéns cara nao teste ainda no meu serve mais certeza que vou utilizar ele mais pra frente. Link para o comentário https://xtibia.com/forum/topic/203430-npc-travel-por-rota/#findComment-1432829 Compartilhar em outros sites More sharing options...
Slicer 1070 Postado Janeiro 7, 2013 Autor Share Postado Janeiro 7, 2013 pronto anyur ^^ vlw huntre essa eh ms a ideia ^^ Link para o comentário https://xtibia.com/forum/topic/203430-npc-travel-por-rota/#findComment-1432912 Compartilhar em outros sites More sharing options...
picapau100 1 Postado Janeiro 24, 2013 Share Postado Janeiro 24, 2013 Slicer.. to testando aqui e é o seguinte: fiz aqui e so funcionou um lado da hunt exemplo: local posis = { --[pos do npc] = {pos inicial, pos final}, [{x = 997, y = 1123, z = 7}] = {posIni = {x = 975, y = 1124, z = 7}, posFinal = {x = 1016, y = 1123, z = 7}}, [{x = 1015, y = 1121, z = 7}] = {posIni = {x = 1016, y = 1122, z = 7}, posFinal = {x = 975, y = 1125, z = 7}}, so ta funfando essa parte de baixo >> [{x = 1015, y = 1121, z = 7}] = {posIni = {x = 1016, y = 1122, z = 7}, posFinal = {x = 975, y = 1125, z = 7}}, o lado que tem uma Bola vermelha e o lado que ta funcionando e no lado azul quando vc fala com o npc e depois travel,yes ai vc se teleporta para o lado vermelho que começa ir para o lado azul e outra coisa quando vc ja ta de barco ou outra coisa e ja ta indo para o outro lado etc.. ai vc consegui deslogar, e quando vc desloga vc pode andar na agua rsrs flw ai ^^ Link para o comentário https://xtibia.com/forum/topic/203430-npc-travel-por-rota/#findComment-1448070 Compartilhar em outros sites More sharing options...
Vinc 101 Postado Janeiro 24, 2013 Share Postado Janeiro 24, 2013 cara precisa melhora a identação do script,ta muito feio.e tbm precisa melhora o codigo em si Link para o comentário https://xtibia.com/forum/topic/203430-npc-travel-por-rota/#findComment-1448183 Compartilhar em outros sites More sharing options...
Slicer 1070 Postado Janeiro 24, 2013 Autor Share Postado Janeiro 24, 2013 /\ eu uso OTScript Live! dai ja viu neh... ;/ Link para o comentário https://xtibia.com/forum/topic/203430-npc-travel-por-rota/#findComment-1448400 Compartilhar em outros sites More sharing options...
picapau100 1 Postado Janeiro 24, 2013 Share Postado Janeiro 24, 2013 ta Slicer /\ ¬¬ mais ate agora nao respondeu oq eu falei em cima ¬¬ Link para o comentário https://xtibia.com/forum/topic/203430-npc-travel-por-rota/#findComment-1448524 Compartilhar em outros sites More sharing options...
Slicer 1070 Postado Janeiro 25, 2013 Autor Share Postado Janeiro 25, 2013 sinceramente n intendi nd q vc flo ;x e tpw.. cuidado com esse npc ae.. ele eh grande e eh complicado pegar a pos 'real' dele... Link para o comentário https://xtibia.com/forum/topic/203430-npc-travel-por-rota/#findComment-1449014 Compartilhar em outros sites More sharing options...
Posts Recomendados