Ir para conteúdo
Entre para seguir isso  
Dark

o°ºo Pisos o°ºo

Recommended Posts

Dark    3
Dark

titulopisospl0.png

 

 

.....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 position
end

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
Acko

muito bom cara.

 

vou começar a mecher nos scripts. ;)

Compartilhar este post


Link para o post
Blazeiker    0
Blazeiker

OMG!!!

 

Vo dar uma estudada neste script, vou testa-lo e depois edito oque achei xD

 

Fuiz...

 

:bye:

Compartilhar este post


Link para o post
GdNp    0
GdNp

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
FeMartins12

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
The Killer

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
Nord

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
Dark

@ 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
Cloaky

Opa,

*D@rK~

  • Bem simples mas muito bem organizado, gostei.

Sem mais,

Cloaky\~\

Compartilhar este post


Link para o post
GDLib    2
GDLib

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
Dark

@ GDLib

 

Finalmente vi um comentario seu em algum topico meu :D...

 

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
medel

Mano muito legal esse script PARABENS e continue assim :]

Compartilhar este post


Link para o post
Roger    0
Roger

Muito Bom

Parabens pelo topico

Compartilhar este post


Link para o post
God_BoladAUm    0
God_BoladAUm

Como sempre arrasando hien dark ^^

 

adoro seus tutoriais ;D

nota 10

 

fuiz

Compartilhar este post


Link para o post
Bangue    0
Bangue

Legal =]

Gostei..Interesante ..

 

Aprovado

Compartilhar este post


Link para o post
Zugo    0
Zugo

muito bom, dá para inventar muita coisa com esse script!! Parabens!

Compartilhar este post


Link para o post
Kadmus7    0
Kadmus7

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
Machine!

nossa cara muito fma esse pisos

Compartilhar este post


Link para o post
Addicted    1
Addicted

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
Dean W.

~ D@rK

Belo script e bela criatividade

gostei muito ;)

Compartilhar este post


Link para o post
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×