FO

Natacao Perfeita!

Por Forcera, 21 de jan. de 2008 em Actions e Talkactions

otserv
script
37
10.4k
ForceraF
21 de janeiro de 2008 às 01:29

Isso mesmo! sistema de natacao. Vi um aqui no Forum, mais ele quando saia da agua ficava com outfit de Citizen.

Mais esse voce voltara para o outfit anterior

 

PS: Tirei esse script de um outro forum. mais estava tudo errado. pois o player conseguia ficar nadando pelo server todo :boos:

Vamos la!?

 

data\movements\movements.xml - Add isso la dentro:

<movevent event="StepIn" actionid="3333" script="swimm.lua"/>

 

data\movements\scripts - cria um arquivo la dentro chamado "swimm.lua" e insira isso dentro:

 

function onStepIn(cid, item, position, fromPosition)

swimvalue = 3330 --storagevalue to check

diveroutfit = { lookType = 267, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookAddons = 0 }

 

standardoutfit = { lookType = getPlayerStorageValue(cid, 3331), lookHead = getPlayerStorageValue(cid, 3332), lookBody =

 

getPlayerStorageValue(cid, 3333), lookLegs = getPlayerStorageValue(cid, 3334), lookFeet = getPlayerStorageValue(cid, 3335), lookAddons =

 

getPlayerStorageValue(cid, 3336) }

isswimming = getPlayerStorageValue(cid, swimvalue)

if isPlayer(cid) then

if (isswimming == -1) or (isswimming == 2) then

pozycja = {x = 124, y = 58, z= 7}

if item.itemid == 4632 then

pos = {x = position.x, y = position.y - 2, z = position.z}

elseif item.itemid == 4633 then

pos = {x = position.x - 2, y = position.y, z = position.z}

elseif item.itemid == 4634 then

pos = {x = position.x, y = position.y + 2, z = position.z}

elseif item.itemid == 4635 then

pos = {x = position.x + 2, y = position.y, z = position.z}

elseif item.itemid == 4636 then

pos = {x = position.x + 2, y = position.y + 2, z = position.z}

elseif item.itemid == 4637 then

pos = {x = position.x - 2, y = position.y + 2, z = position.z}

elseif item.itemid == 4638 then

pos = {x = position.x + 2, y = position.y - 2, z = position.z}

elseif item.itemid == 4639 then

pos = {x = position.x - 2, y = position.y - 2, z = position.z}

elseif item.itemid == 4640 then

pos = {x = position.x + 2, y = position.y + 2, z = position.z}

elseif item.itemid == 4641 then

pos = {x = position.x - 2, y = position.y + 2, z = position.z}

elseif item.itemid == 4642 then

pos = {x = position.x + 2, y = position.y - 2, z = position.z}

elseif item.itemid == 4643 then

pos = {x = position.x - 2, y = position.y - 2, z = position.z}

end

setPlayerStorageValue(cid, 3331, getCreatureOutfit(cid).lookType)

setPlayerStorageValue(cid, 3332, getCreatureOutfit(cid).lookHead)

setPlayerStorageValue(cid, 3333, getCreatureOutfit(cid).lookBody)

setPlayerStorageValue(cid, 3334, getCreatureOutfit(cid).lookLegs)

setPlayerStorageValue(cid, 3335, getCreatureOutfit(cid).lookFeet)

setPlayerStorageValue(cid, 3336, getCreatureOutfit(cid).lookAddons)

setPlayerStorageValue(cid, swimvalue, 1)

doSetCreatureOutfit(cid, diveroutfit, 60000)

 

if item.actionid == 3333 then

player1pos = {x = position.x + 2, y = position.y + 2, z = position.z}

player1 = getThingfromPos(player1pos)

doTeleportThing(cid, player1pos)

doSendMagicEffect(player1pos, CONST_ME_WATERSPLASH)

end

end

if isswimming == 1 then

if item.itemid == 4632 then

dir = 2

elseif item.itemid == 4633 then

dir = 1

elseif item.itemid == 4634 then

dir = 0

elseif item.itemid == 4635 then

dir = 3

elseif item.itemid == 4636 then

dir = 3

elseif item.itemid == 4637 then

dir = 1

elseif item.itemid == 4638 then

dir = 3

elseif item.itemid == 4639 then

dir = 2

elseif item.itemid == 4640 then

dir = 3

elseif item.itemid == 4641 then

dir = 1

elseif item.itemid == 4642 then

dir = 3

elseif item.itemid == 4643 then

dir = 1

end

doSetCreatureOutfit(cid, standardoutfit, 1)

doMoveCreature(cid, dir)

setPlayerStorageValue(cid, swimvalue, 2)

end

end

return TRUE

end

 

if item.actionid == 3333: ActionID do tile que o player vai pisar para pular no lago/praia/piscina etc....

player1pos = {x = position.x + 2, y = position.y + 2, z = position.z}: Para onde o player ira para ao pisar no Tile com o ActionID

 

x + 2 e y + 2 Quantos pos ira pular para que nao tenha players "nadando" em grama .

por exemplo: faz de conta que o player tem que pisar no pos "1000 1000 7" se vc colocar X+2 ele vai se teleportar para o tile "1002 1000 7"

 

 

--->>NA AGUA COLOCAR ID 4620. Senao o player nao conseguira se mover :secret:

 

Com sua experiencia e criatividade! pode ate fazer um trampulim que nem eu! =D

 

Espero que tenho gostado!

:hi:

Editado Janeiro 21 por Forcera

HomeH
21 de janeiro de 2008 às 12:55

Cara me explica melhor isso aki

 

 

if item.actionid == 3333: ActionID do tile que o player vai pisar para pular no lago/praia/piscina etc....

player1pos = {x = position.x + 2, y = position.y + 2, z = position.z}: Para onde o player ira para ao pisar no Tile com o ActionID

 

x + 2 e y + 2 Quantos pos ira pular para que nao tenha players "nadando" em grama .

por exemplo: faz de conta que o player tem que pisar no pos "1000 1000 7" se vc colocar X+2 ele vai se teleportar para o tile "1002 1000 7"

 

 

--->>NA AGUA COLOCAR ID 4620. Senao o player nao conseguira se mover

ForceraF
21 de janeiro de 2008 às 17:32

Desculpa meu amigo, mais nao tem nada mais para explicar....

pra fazer/editar uma script dessas se precisa um minimo de experiencia em Scripts.

NostradamusN
21 de janeiro de 2008 às 17:39

Além de estar faltando os créditos o título está incorreto, para algo estar perfeito o código também deve estar impecável, o que não é o caso.

 

E já que você acha ter tal "mínimo conhecimento de script possível", aprenda a edentar e usar TABs nos códigos, para mostrar isso, caso contrário, seja humilde e ajude sem humilhar as pessoas, pois você não tem cacife para isso.

Editado Janeiro 21 por Nostradamus

gabrielbrrG
21 de janeiro de 2008 às 18:18

Cara onde que eu almento o tempo para nada pq mais ou menos 2 a 5 minutos acaba e aparece o char emcima da agua

HomeH
21 de janeiro de 2008 às 21:48

Forcera eu so bem experiente em scripst mas você não sobe explicar bem pois estava codes fora de seus campos , por isso que pedi uma explicação.

 

Espero que você melhore o poste. :smile_positivo:

HeeemanH
22 de janeiro de 2008 às 19:20

é...

explica direito akela parte cra...

n entendi tb...

tentei de tudo

butei o id da agua..

eu entro e talz

mas n consigo me locomover na agua!

e agora...

noobinhuN
22 de janeiro de 2008 às 20:34

No caminho em que o player poderá andar vocês colocaram id 4620?

22 de janeiro de 2008 às 20:48

O que leva a natação do tibia ser inperfeita?

DeadKennedyD
23 de janeiro de 2008 às 14:38

@Waleker

Se está se referindo ao post do Nostradamus, ele nao falou da natasção,

e sim do Script.

 

@Post

Bem confuso... alem de que "pozycja = {x = 124, y = 58, z= 7}" está boiando ali...

Sem função nenhuma, sem nenhum uso posterior.

 

:hi:

morgado4everM
24 de janeiro de 2008 às 02:57

Vc retirou do OTLand e não tinha nem tem nenhum erro, vc apenas teria que colocar o piso 4620 ate onde vc ker que ele ande, então manera ai pq eu sei que isso ai é Ctrl+C e Ctrl+V!

 

-- EDIT --

pozycja = {x = 124, y = 58, z= 7} era pra o lugar onde o corpo iria caso o player morre-se, mas não deu certo e o dono do script o abandonou, pois se um corpo morre no tile 4620 (Agua que pode anda em cima) o OT buga e cai!

Editado Janeiro 24 por morgado4ever

24 de janeiro de 2008 às 11:20

O certo é por protection zone na água para impedir players de morrer.

SaMuOTS
24 de janeiro de 2008 às 18:25

pow issu ai nm funciona, tipow eli entra na agua mas n anda, ja trokei a id da agua la nm deu certo...

 

-.-" tenta arruma ai neh :icon2:

TwilightT
25 de janeiro de 2008 às 16:39

existe uma borda de areia nova q a cip fez especialmente pra essas areas de nataçao...tente colocar q quando o player pise nesses novos tiles ele entra na agua 1 sqm na frente...e quanda pisar novamente ele sair da agua...:p

ObscuroO
26 de janeiro de 2008 às 20:55

Botei aki e funfo perfeito, mais eu mudei algumas coisas como CONST_ME_WATERSPLASH q aki fico estranho mais o script funfo legal gostei.