Dark 3 #1 Postado 31 Dezembro, 2007 .....Indice .....• Instalando o script .....• Vocação .....• Level .....• Quest .....• Contem .....• Acesso .....Depois de muito tempo (e coloca muito nisso) sem postar nenhum script ou tutorial, estou aqui de volta ^^. .....Vou mostrar um script de piso especial. Ja vi muita gente querendo pisos que só passa determinado level, determinada vocação, e assim vai, então hoje vou mostrar para vocês um script, onde você poderá colocar para passar apenas com: Determinada Vocação Determinado Level Um StorageValue maior que -1 (usado para Quests) Determinado item Determinado acesso .....Vou explicar como editar o script. É bem simples... Vamos lá: •Instalando o script • .....Abra a pasta do seu OTServ e vá até data/movements/scripts e copie qualquer arquivo .lua e renomei ele para pisos.lua, após fazer isso, abra ele, apague oque estiver dentro e cole isso: Obs: (Caso você esteja iniciando em scripts, eu recomendo que ao invez de copiar e colar, vá digitando ^^) --==--==--==--== Não mexer ==--==--==--==--function teleport(player)dir = getPlayerLookDir(player)pos = getPlayerPosition(player) if dir == 0 then position = {x=pos.x, y=pos.y+1, z=pos.z} elseif dir == 1 then position = {x=pos.x-1, y=pos.y, z=pos.z} elseif dir == 2 then position = {x=pos.x, y=pos.y-1, z=pos.z} elseif dir == 3 then position = {x=pos.x+1, y=pos.y, z=pos.z} end return positionend function onStepIn(cid, item, pos) if isPlayer(cid) == TRUE then --==--==--==--== Vocação ==--==--==--==-- if item.actionid == 2000 then voc_true = {1,2,3,4} voc = getPlayerVocation(cid) for a = 1, table.getn(voc_true) do if voc == voc_true[a] then vocation = 1 break else vocation = 0 end end if vocation == 0 then doTeleportThing(cid,teleport(cid)) doSendMagicEffect(getPlayerPosition(cid),5) doPlayerSendTextMessage(cid, 22,"Você não tem a vocação requerida para passar") doPlayerSendCancel(cid,"Sorry, not possible") end --==--==--==--== Level ==--==--==--==-- elseif item.actionid == 2001 then level = 50 lvl = getPlayerLevel(cid) if lvl < level then doTeleportThing(cid,teleport(cid)) doSendMagicEffect(getPlayerPosition(cid),5) doPlayerSendTextMessage(cid, 22,'Apenas pessoas com level '.. level ..' ou mais podem passar' ) doPlayerSendCancel(cid,"Sorry, not possible") end --==--==--==--== Quest ==--==--==--==-- elseif item.actionid == 2002 then storage = {2000, 2001} for b = 1, table.getn(storage) do value = getPlayerStorageValue(cid,storage[b]) if value > -1 then quest = 1 break else quest = 0 end end if quest == 0 then doTeleportThing(cid,teleport(cid)) doSendMagicEffect(getPlayerPosition(cid),5) doPlayerSendTextMessage(cid, 22,'Desculpe, mas você não pode passar' ) doPlayerSendCancel(cid,"Sorry, not possible") end --==--==--==--== Contem ==--==--==--==-- elseif item.actionid == 2003 then item_id = {2552, 2553} for c = 1, table.getn(item_id) do item = getPlayerItemCount(cid,item_id[c]) if item > 0 then contem = 1 break else contem = 0 end end if contem == 0 then doTeleportThing(cid,teleport(cid)) doSendMagicEffect(getPlayerPosition(cid),5) doPlayerSendTextMessage(cid, 22,'Desculpe, mas você não tem o item necessario para pode passar' ) doPlayerSendCancel(cid,"Sorry, not possible") end --==--==--==--== Acesso ==--==--==--==-- elseif item.actionid == 2004 then acesso_true = {2,5} player = getPlayerAccess(cid) for d = 1, table.getn(acesso_true) do if player == acesso_true[d] then acesso = 1 else acesso = 0 end end if acesso == 0 then doTeleportThing(cid,teleport(cid)) doSendMagicEffect(getPlayerPosition(cid),5) doPlayerSendTextMessage(cid, 22,'Desculpe, mas você não tem acesso seficiente para pode passar' ) doPlayerSendCancel(cid,"Sorry, not possible") end end end end . .....Salve o arquivo e então vá até data/movements/ e abra o arquivo movements.xml, e então adicione isso: <movevent event="StepIn" actionid="[color=Red][b]2000[/b][/color]" script="[b][color=Blue]pisos.lua[/color][/b]" /><movevent event="StepIn" actionid="[color=Red][b]2001[/b][/color]" script="[b][color=Blue]pisos.lua[/color][/b]" /><movevent event="StepIn" actionid="[b][color=Red]2002[/color][/b]" script="[b][color=Blue]pisos.lua[/color][/b]" /><movevent event="StepIn" actionid="[color=Red][b]2003[/b][/color]" script="[b][color=Blue]pisos.lua[/color][/b]" /><movevent event="StepIn" actionid="[b][color=Red]2004[/color][/b]" script="[b][color=Blue]pisos.lua[/color][/b]" /> . Vermelho → ActionId dos pisos Azul → Nome do arquivo .....Pronto, agora irei explicar como modificar, um por um: • Vocação • --==--==--==--== Vocação ==--==--==--==-- if item.actionid == [color=Red][b]2000[/b][/color] then voc_true = {[b][color=Blue]1[/color][/b],[b][color=Blue]2[/color][/b],[color=Blue][b]3[/b][/color],[color=Blue][b]4[/b][/color]} voc = getPlayerVocation(cid) for a = 1, table.getn(voc_true) do if voc == voc_true[a] then vocation = 1 break else vocation = 0 end end if vocation == 0 then doTeleportThing(cid,teleport(cid)) doSendMagicEffect(getPlayerPosition(cid),[color=Green][b]5[/b][/color]) doPlayerSendTextMessage(cid, 22,[b][color=DarkOrange]"Você não tem a vocação requerida para passar"[/color][/b]) doPlayerSendCancel(cid,"Sorry, not possible") end . .....Esta parte do script corresponde ao piso onde apenas certas vocações podem passar: 2000 → Este numero aqui corresponde ao actionid que você deverá colocar no piso para que nele so passe as vocações que você determino no script {1,2,3,4}→ Estes numeros repesentam as vocações que poderão passar no piso, então por exemplo, se você quer que passe no piso apenas paladin (3) e knight (4), você ira colocar dentro das chaves {3,4}. Para saber o numero das vocações, olhe no arquivo vocations.xml 5 → O numero do efeito magico que aparecera no player se ele não puder passar no piso "Você não tem a vocação requerida para passar" → Mensagem que aparecera ao player caso ele não possa passar no piso • Level • --==--==--==--== Level ==--==--==--==-- elseif item.actionid == [color=Red][b]2001[/b][/color] then level = [b][color=Blue]50[/color][/b] lvl = getPlayerLevel(cid) if lvl < level then doTeleportThing(cid,teleport(cid)) doSendMagicEffect(getPlayerPosition(cid),[b][color=Green]5[/color][/b]) doPlayerSendTextMessage(cid, 22,[b][color=DarkOrange]'Apenas pessoas com level '.. level ..' ou mais podem passar'[/color][/b] ) doPlayerSendCancel(cid,"Sorry, not possible") end . .....Esta parte do script corresponde ao piso onde apenas certo level pode passar: 2001 → Este numero aqui corresponde ao actionid que você deverá colocar no piso para que nele so passe o level que você determino no script 50 → Este numero corresponde ao level que podera passar pelo piso, aqui no caso será apenas pessoas com level igual ou superior a 50 5 → O numero do efeito magico que aparecera no player se ele não puder passar no piso 'Apenas pessoas com level '.. level ..' ou mais podem passar' → Mensagem que aparecera ao player caso ele não possa passar no piso • Quest • --==--==--==--== Quest ==--==--==--==-- elseif item.actionid == [color=Red][b]2002[/b][/color] then storage = {[color=Blue][b]2000[/b][/color], [b][color=Blue]2001[/color][/b]} for b = 1, table.getn(storage) do value = getPlayerStorageValue(cid,storage[b]) if value > -1 then quest = 1 break else quest = 0 end end if quest == 0 then doTeleportThing(cid,teleport(cid)) doSendMagicEffect(getPlayerPosition(cid),[b][color=Green]5[/color][/b]) doPlayerSendTextMessage(cid, 22,[b][color=DarkOrange]'Desculpe, mas você não pode passar' [/color][/b]) doPlayerSendCancel(cid,"Sorry, not possible") end . .....Esta parte do script corresponde ao piso onde apenas players com os storages values determinados no script maiores de -1 2002 → Este numero aqui corresponde ao actionid que você deverá colocar no piso para que nele so passe players com o(s) Storage(s) Value(s) diferente de -1 {2000, 2001}→ Estes numero corresponde ao Storage Value que deverão ser maiores de -1 para o player poder passar. Geralmente em scripts, é usado um storage value para verificar se o player fez ou não uma determinada quast. O numero padrão do storage value é -1, e geralmente quando é feito uma quest o storage value muda para 1. Aqui você vai colocar os storage values que você que que seja verificado. Por exemplo, na quest da balinha de goma o script mudou o storage value 3000 para 1, então você vai colocar ali entre chaves {3000}, então apenas players que fizeram a quest da balinha de goma vão conseguir passar aqui. Ou se você quer que passe se tiver o storage value 3000, 3001 ou 3002 maior que -1 você vai colocar entre chaves {3000, 3001, 3002} 5 → O numero do efeito magico que aparecera no player se ele não puder passar no piso 'Desculpe, mas você não pode passar' → Mensagem que aparecera ao player caso ele não possa passar no piso • Contem • --==--==--==--== Contem ==--==--==--==-- elseif item.actionid == [b][color=Red]2003[/color][/b] then item_id = {[color=Blue][b]2552[/b][/color], [color=Blue][b]2553[/b][/color]} for c = 1, table.getn(item_id) do item = getPlayerItemCount(cid,item_id[c]) if item > 0 then contem = 1 break else contem = 0 end end if contem == 0 then doTeleportThing(cid,teleport(cid)) doSendMagicEffect(getPlayerPosition(cid),[b][color=Green]5[/color][/b]) doPlayerSendTextMessage(cid, 22,[b][color=DarkOrange]'Desculpe, mas você não tem o item necessario para pode passar' [/color][/b]) doPlayerSendCancel(cid,"Sorry, not possible") end . .....Esta parte do script corresponde ao piso onde o player apenas passara se tiver certo item 2003 → Este numero aqui corresponde ao actionid que você deverá colocar no piso para que nele so passe o player que tiver um dos itens que você determino no script {2552, 2553}→ Estes numero corresponde ao id dos itens que o player tem que ter para que ele possa passar no piso, aqui no caso, o player so ira passar se tiver o item de id 2552 ou o item de id 2553 5 → O numero do efeito magico que aparecera no player se ele não puder passar no piso 'Desculpe, mas você não tem o item necessario para pode passar' → Mensagem que aparecera ao player caso ele não possa passar no piso • Acesso • --==--==--==--== Acesso ==--==--==--==-- elseif item.actionid == [b][color=Red]2004[/color][/b] then acesso_true = {[b][color=Blue]2[/color][/b],[color=Blue][b]5[/b][/color]} player = getPlayerAccess(cid) for d = 1, table.getn(acesso_true) do if player == acesso_true[d] then acesso = 1 else acesso = 0 end end if acesso == 0 then doTeleportThing(cid,teleport(cid)) doSendMagicEffect(getPlayerPosition(cid),[b][color=Green]5[/color][/b]) doPlayerSendTextMessage(cid, 22,[color=DarkOrange][b]'Desculpe, mas você não tem acesso seficiente para pode passar'[/b][/color] ) doPlayerSendCancel(cid,"Sorry, not possible") end . .....Esta parte do script corresponde ao piso onde o player apenas passara se tiver certo acesso 2003 → Este numero aqui corresponde ao actionid que você deverá colocar no piso para que nele so passe o player que tiver o acesso que você definiu no script {2,5} → Estes numero corresponde ao acesso que podera passar pelo piso, ou seja apanas players com acesso 2 ou 5 5 → O numero do efeito magico que aparecera no player se ele não puder passar no piso 'Desculpe, mas você não tem acesso seficiente para pode passar'→ Mensagem que aparecera ao player caso ele não possa passar no piso .....Bem é isso, caso encontrem algum bug, ou tenham alguma duvida, podem postar aqui que na medida do possivel eu tentarei atende-los. Espero que tenham gostado, entendido e que seja util para vocês. Até a proxima.... Compartilhar este post Link para o post
Acko 0 #2 Postado 31 Dezembro, 2007 muito bom cara. vou começar a mecher nos scripts. Compartilhar este post Link para o post
Blazeiker 0 #3 Postado 31 Dezembro, 2007 OMG!!! Vo dar uma estudada neste script, vou testa-lo e depois edito oque achei xD Fuiz... Compartilhar este post Link para o post
GdNp 0 #4 Postado 31 Dezembro, 2007 Sempre com seus maravilhosos tutoriais, embora este de uma dificuldade inferior aos anteriores, mas muito bem feito. Não é atoa que hoje está como guarda da otnet.Parabéns e um feliz ano novo. Compartilhar este post Link para o post
FeMartins12 0 #5 Postado 31 Dezembro, 2007 gostei bastante do tuto...;] mais sera q teria como por required premium tpw a area p.a de rook... se tive como posta aew plx... mais vlw msm assim vlw bye Compartilhar este post Link para o post
The Killer 0 #6 Postado 31 Dezembro, 2007 Excelente script ! Só acho que não precisava por for "letra" = 1, era soh por for _, e dpois por [1] invez da letra oO Compartilhar este post Link para o post
Nord 2 #7 Postado 31 Dezembro, 2007 Script excelente e muito bem explicado, fazia tempo que não via trabalho seus e esse me deixou impressionado, ah e também foi engraçado a parte da quest da balinha de goma xD, to esperando mais scripts seus!!! Compartilhar este post Link para o post
Dark 3 #8 Postado 1 Janeiro, 2008 @ The Killer è que eu acho que assim fica mais organizadinho e bunitinho ^^ @ FeMartins12 Se der depois eu faço e posto aqui @ Nord e GdNp Vlw ^^ Compartilhar este post Link para o post
Cloaky 0 #9 Postado 1 Janeiro, 2008 Opa, *D@rK~ Bem simples mas muito bem organizado, gostei. Sem mais, Cloaky\~\ Compartilhar este post Link para o post
GDLib 2 #10 Postado 1 Janeiro, 2008 Vou ser sincero, o script está mal feito, mas claro que não vou apenas criticar, vou propor mudanças: Você usa: voc = getPlayerVocation(cid) lvl = getPlayerLevel(cid) value = getPlayerStorageValue(cid,storage[b]) Note que essas variáveis só são usadas uma vez, portanto, é uso de memória atoa. Agora vejamos esse trecho: doTeleportThing(cid,teleport(cid)) doSendMagicEffect(getPlayerPosition(cid),5) doPlayerSendTextMessage(cid, 22,'Apenas pessoas com level '.. level ..' ou mais podem passar' ) doPlayerSendCancel(cid,"Sorry, not possible") Aparentemente nada de errado, mas se você for ver, você repete isso várias vezes mudando apenas a frase, então, porque não criar-se uma função com um parâmetro referente a mensagem? Isso reduz o código e faz o processar mais rápidamente. E variáveis como: storage = {2000, 2001} item_id = {2552, 2553} Dentre outras, elas estão sendo interpretadas como variáveis globais, e mesmo que você não dê inclusão de arquivos, o processamento será mais lento, então, recomendo usar "local". Compartilhar este post Link para o post
Dark 3 #11 Postado 2 Janeiro, 2008 @ GDLib Finalmente vi um comentario seu em algum topico meu ... Vou ser sincero, o script está mal feito, mas claro que não vou apenas criticar, vou propor mudanças: Eu não diria mal feito, existe scripts piores, eu acho que poderia estar melhor Você usa: voc = getPlayerVocation(cid) lvl = getPlayerLevel(cid) value = getPlayerStorageValue(cid,storage) Note que essas variáveis só são usadas uma vez, portanto, é uso de memória atoa. É realmente uso de memoria atoa, virou costume definir variaveis a tudo, vou tentar parar com essa mania Agora vejamos esse trecho: doTeleportThing(cid,teleport(cid)) doSendMagicEffect(getPlayerPosition(cid),5) doPlayerSendTextMessage(cid, 22,'Apenas pessoas com level '.. level ..' ou mais podem passar' ) doPlayerSendCancel(cid,"Sorry, not possible") Aparentemente nada de errado, mas se você for ver, você repete isso várias vezes mudando apenas a frase, então, porque não criar-se uma função com um parâmetro referente a mensagem? Isso reduz o código e faz o processar mais rápidamente. Esta parte não entendi muito bem :x E variáveis como: storage = {2000, 2001} item_id = {2552, 2553} Dentre outras, elas estão sendo interpretadas como variáveis globais, e mesmo que você não dê inclusão de arquivos, o processamento será mais lento, então, recomendo usar "local". Eu nunca me acostumei a definir uma variavel como local, mas vou tentar ^^ Vou seguir suas sugestões para que eu possa melhorar ^^ Compartilhar este post Link para o post
medel 0 #12 Postado 2 Janeiro, 2008 Mano muito legal esse script PARABENS e continue assim :] Compartilhar este post Link para o post
Roger 0 #13 Postado 21 Janeiro, 2008 Muito Bom Parabens pelo topico Compartilhar este post Link para o post
God_BoladAUm 0 #14 Postado 21 Janeiro, 2008 Como sempre arrasando hien dark ^^ adoro seus tutoriais ;D nota 10 fuiz Compartilhar este post Link para o post
Bangue 0 #15 Postado 26 Janeiro, 2008 Legal =] Gostei..Interesante .. Aprovado Compartilhar este post Link para o post
Zugo 0 #16 Postado 29 Janeiro, 2008 muito bom, dá para inventar muita coisa com esse script!! Parabens! Compartilhar este post Link para o post
Kadmus7 0 #17 Postado 28 Fevereiro, 2008 Otimas scripts tava procurando um issu a tempo to com uns problemao na nu meu ot e issu vai me ajuda e muito vlw DarK! Compartilhar este post Link para o post
Machine! 2 #18 Postado 28 Fevereiro, 2008 nossa cara muito fma esse pisos Compartilhar este post Link para o post
Addicted 1 #19 Postado 28 Fevereiro, 2008 Parabéns DarK! Adorei o script e como sempre, você explica muito bem Parabéns, novamente! Obrigado por postar! RcD~ Compartilhar este post Link para o post
Dean W. 0 #20 Postado 28 Fevereiro, 2008 ~ D@rK Belo script e bela criatividade gostei muito Compartilhar este post Link para o post