koninhoo 0 Postado Dezembro 19, 2008 Share Postado Dezembro 19, 2008 (editado) Olá gente, vim aqui compartilhar com vocês um script que eu fiz com muito suor. • Função: Passar por uma porta somente se houver feito algumas quests, ou ações necessárias para avançar na mesma. Por exemplo: na Pits of Inferno há 7 Seals, e em cada um há um trono no final, ao subir no trono um script irá adicionar um Storage Values ao char. Completando-se todas as Seals irá haver 7 Storage Values diferentes registrados no devido char, então quando apertar na porta final da quest você será transportado para o outro lado dela, com o mesmo efeito da Level Door, porém, se caso ao contrário a pessoa não completar todas as Seals, irá aparecer esta devida mensagem ao tentar atravessar a porta: You are need complete all Seals.. data/actions/scripts/questdoor.lua function onUse(cid, item, frompos, item2, topos) if item.uid == 4058 then status1 = getPlayerStorageValue(cid,4053) status2 = getPlayerStorageValue(cid,4054) status3 = getPlayerStorageValue(cid,4055) status4 = getPlayerStorageValue(cid,4056) status5 = getPlayerStorageValue(cid,4057) if status1 == 1 then if status2 == 1 then if status3 == 1 then if status4 == 1 then if status5 == 1 then end end end pos = getPlayerPosition(cid) if pos.x == topos.x then if pos.y < topos.y then pos.y = topos.y + 1 else pos.y = topos.y - 1 end elseif pos.y == topos.y then if pos.x < topos.x then pos.x = topos.x + 1 else pos.x = topos.x - 1 end else doPlayerSendTextMessage(cid,24,'Stand in front of the door.') return 1 end doTeleportThing(cid,pos) doSendMagicEffect(topos,12) else doPlayerSendTextMessage(cid,24,'You are need complete all Seals.') end return 1 else return 0 end end end Legenda: █ - O UniqueID usada na porta. █ - Storage necessário para abrir a porta. █ - Mensagem quando não houver todas as Storages. Como podem ver, no script só há 5 Storage Value, porém que quiser adicionar mais você terá que seguir esta ordem: status1 = getPlayerStorageValue(cid,4053)status2 = getPlayerStorageValue(cid,4054) status3 = getPlayerStorageValue(cid,4055) status4 = getPlayerStorageValue(cid,4056) status5 = getPlayerStorageValue(cid,4057) status6 = getPlayerStorageValue(cid,4058) if status1 == 1 then if status2 == 1 then if status3 == 1 then if status4 == 1 then if status5 == 1 then if status6 == 1 then Legenda: █ - Tags novas adicionadas. E assim por diante... data/actions.xml <action uniqueid="4058" script="questdoor.lua" /> Legenda: █ - O UniqueID usada na porta. Espero que tenham entendidos. PS.1: Qualquer dúvida ou problemas observados avisem aqui, por favor. Koninhoo~ Editado Dezembro 19, 2008 por Koninho Link para o comentário https://xtibia.com/forum/topic/103037-quest-door/ Compartilhar em outros sites More sharing options...
koninhoo 0 Postado Dezembro 19, 2008 Autor Share Postado Dezembro 19, 2008 Creio que este tópico era pra está em Downloads de Actions, não? Se era eu errei, desculpe. Koninhoo~ Link para o comentário https://xtibia.com/forum/topic/103037-quest-door/#findComment-660020 Compartilhar em outros sites More sharing options...
DarkFilho 0 Postado Dezembro 22, 2008 Share Postado Dezembro 22, 2008 ae cara gostei muito parabens!! eu tava presisando que soh pra botar na poi flwww Link para o comentário https://xtibia.com/forum/topic/103037-quest-door/#findComment-661816 Compartilhar em outros sites More sharing options...
xXxhalloweenxXx 0 Postado Dezembro 22, 2008 Share Postado Dezembro 22, 2008 =( Link para o comentário https://xtibia.com/forum/topic/103037-quest-door/#findComment-661992 Compartilhar em outros sites More sharing options...
JhonSena 0 Postado Dezembro 22, 2008 Share Postado Dezembro 22, 2008 um poco complicado , + legal xD Link para o comentário https://xtibia.com/forum/topic/103037-quest-door/#findComment-662056 Compartilhar em outros sites More sharing options...
DaNDaNrOxX 15 Postado Dezembro 23, 2008 Share Postado Dezembro 23, 2008 =( Usuário xXhalloweenXx alertado em 10% por flood. Eu já havia lhe alertado outras vezes e parece que você continua. Da próxima vez você será suspenso também. Abraço Link para o comentário https://xtibia.com/forum/topic/103037-quest-door/#findComment-662369 Compartilhar em outros sites More sharing options...
tibiaa4e 86 Postado Dezembro 23, 2008 Share Postado Dezembro 23, 2008 (editado) Bela ideia Porém achei alguns erros nele, vc confudiu alguns ends e ifs. E no caso ele só ia checar se você tem 2 storage Porém voce usou base de scripts antigos da pra deixar esse script melhor e menor function onUse(cid, item, frompos, item2, topos) status1 = getPlayerStorageValue(cid,4053) status2 = getPlayerStorageValue(cid,4054) status3 = getPlayerStorageValue(cid,4055) status4 = getPlayerStorageValue(cid,4056) status5 = getPlayerStorageValue(cid,4057) if item.uid == 4058 then if status1 == 1 and status2 == 1 and status3 == 1 and status4 == 1 and status5 == 1 then doTransformItem(item.uid, item.itemid + 1) doTeleportThing(cid, toPosition, TRUE) else doPlayerSendTextMessage(cid,24,'You are need complete all Seals.') end end end Assim não prescisa estar de frente a porta e ela vai fechar quando você sair dela Igual a porta de level mesmo Editado Dezembro 23, 2008 por tibiaa4e Link para o comentário https://xtibia.com/forum/topic/103037-quest-door/#findComment-662453 Compartilhar em outros sites More sharing options...
Vi Vanderlaysk 0 Postado Dezembro 30, 2008 Share Postado Dezembro 30, 2008 Pow vey .. maneiro .. mas tipo Se eu quiser em vez de 'cid' colocar 'uid' nos StorageValue ? Pq tipo ... 'cid' eh a id do item ... certo ? 'uid' é unique id da parte da quest ou de outras quests num eh ? Vc poderia fazer o resto também... tipo .. a parte da quest q faz 'SetPlayerStorageValue' ... pq tem muita gente q nao sabe (inclusive eu) Abraço mano e obrigado por colaborar ! Link para o comentário https://xtibia.com/forum/topic/103037-quest-door/#findComment-665409 Compartilhar em outros sites More sharing options...
gorno 2 Postado Janeiro 6, 2009 Share Postado Janeiro 6, 2009 @tibiaa4e Amigo, eu encontrei 2 bugs em seu scritp: 1- A porta não puxa o player para dentro dela quando abre. 2- A se duas pessoas clicarem na porta ao mesmo tempo, ou um player clicar duaz vezes, a porta some! Você poderia corrigir isso pra mim? Arenciosamente, Gorno. Link para o comentário https://xtibia.com/forum/topic/103037-quest-door/#findComment-669561 Compartilhar em outros sites More sharing options...
Slinix 1 Postado Fevereiro 5, 2009 Share Postado Fevereiro 5, 2009 Vlw man , Ajudou muito em Uma quest que estou bolando a Dias , Tks ae , Vlw mesmo =D , gora pra completar só falta 1 NPC que adiciona Storage U.u Link para o comentário https://xtibia.com/forum/topic/103037-quest-door/#findComment-691094 Compartilhar em outros sites More sharing options...
gnomow157 0 Postado Fevereiro 5, 2009 Share Postado Fevereiro 5, 2009 Realmente, Meu server (ultraxot.servegame.com [on]) Tem a xp 100x, mas quero deixar ele o mais rpg possivel, e melhor que isso impossivel, agora vo pode fazer as quests dos itens de addon igual do global... SUAHUDHAUSDUAHDS... se aqui tivesse OT$ eu te doava. Link para o comentário https://xtibia.com/forum/topic/103037-quest-door/#findComment-691119 Compartilhar em outros sites More sharing options...
satan666 12 Postado Fevereiro 15, 2009 Share Postado Fevereiro 15, 2009 precisava disso pr termina minha POI vlw ae manow.... Link para o comentário https://xtibia.com/forum/topic/103037-quest-door/#findComment-696326 Compartilhar em outros sites More sharing options...
Schiavinato 7 Postado Fevereiro 6, 2010 Share Postado Fevereiro 6, 2010 function onUse(cid, item, frompos, item2, topos) if item.uid == 4058 then status1 = getPlayerStorageValue(cid,4053) status2 = getPlayerStorageValue(cid,4054) status3 = getPlayerStorageValue(cid,4055) status4 = getPlayerStorageValue(cid,4056) status5 = getPlayerStorageValue(cid,4057) if status1 == 1 then if status2 == 1 then if status3 == 1 then if status4 == 1 then if status5 == 1 then end end end pos = getPlayerPosition(cid) if pos.x == topos.x then if pos.y < topos.y then pos.y = topos.y + 1 else pos.y = topos.y - 1 end elseif pos.y == topos.y then if pos.x < topos.x then pos.x = topos.x + 1 else pos.x = topos.x - 1 end else doPlayerSendTextMessage(cid,24,'Stand in front of the door.') return 1 end doTeleportThing(cid,pos) doSendMagicEffect(topos,12) else doPlayerSendTextMessage(cid,24,'You are need complete all Seals.') end return 1 else return 0 end end end end end Ta ae, esse agora funciona perfeitamente... O script do tibiat4ae realmente tava com bug, quando clicava na porta, ela ficava se transformando em outra e outra... E o original do Koninho tava dando erro no console Agora ta arrumado PS: Desculpe reviver o tópico :] Link para o comentário https://xtibia.com/forum/topic/103037-quest-door/#findComment-844553 Compartilhar em outros sites More sharing options...
Posts Recomendados