Ir para conteúdo
Entre para seguir isso  
jedian

Auto-Walk

Recommended Posts

jedian    0
jedian
Nome: Auto-Walk

Autor: Jedian

Versão Testada: The Forgotten Server 0.3.6 "8.54"

 

Informações Adicionais

Se o jogador estiver usando o colar de id 2319 Dragonfetish.gif, ao falar a palavra1 Irá se mover automaticamente pra frente,

para melhor controle do character durante isso, use Ctrl + Seta Direcional(↑,↓,→,←). para parar o character, deve-se tirar o colar, ou dizer a palavra2.

Requiritos:Função doPushCreature(.......) -By Dokmos(está inclusa no tópico)

Olá pessoal :style:

Ainda sou novo no fórum, pois muitas das coisas que "scripto" deixo para o meu ot, essa eu também ia usar nele, mas se usar, vai ser fácil de alguem copiar e postar, então postei eu mesmo!:weegee:

 

Vamos ao Script:;)

 

Copie um arquivo.lua que está em data/talkactions/scripts, renomeie para autowalk.lua, abra-o, apague tudo e substitua por isso:

 

-- By Jedian

function onSay(cid, words, param)

if getPlayerSlotItem(cid, 2).itemid == 2319 then

if getPlayerStorageValue(cid, 69457) <= 0 then

setPlayerStorageValue(cid, 69457, 1)

local parameters = {cid=cid, words = words, param = param}

addEvent(rid, 0, parameters)

doSendAnimatedText(getPlayerPosition(cid), 'Lets ride!', math.random(1, 255))

return true

end

else

doPlayerSendCancel(cid, 'Put necklace in the correct place')

return true

end

end

 

function rid(parameters)

if getPlayerStorageValue(parameters.cid, 69457) == 1 then

if getPlayerSlotItem(parameters.cid, 2).itemid == 2319 then

doSendMagicEffect(getPlayerPosition(parameters.cid ), 29)

doSendMagicEffect(getPlayerPosition(parameters.cid ), 30)

doSendMagicEffect(getPlayerPosition(parameters.cid ), 28)

doPushCreature(parameters.cid, getPlayerLookDir(parameters.cid), 1, 5000)

local riding = addEvent(rid, 120, parameters)

else

doPlayerSendCancel(parameters.cid, 'Put necklace in the correct place.')

return true

end

end

end

 

Configurações do Script:

 

Em vermelho, está a função que verifica se o jogador tem um colar id 2319, e se ele está no "pescoço"(lugar de colares):palm:então, se quiser mudar o colar, mude os números "2319" que estão lá para o id do colar que você quiser, mas, se você quiser que seja uma bota/armadura/helmet/legs.Então terá que mudar oque está em roxo, para uma tabelinha que estará no final do tópico

Em Verde estão as 3 funções que mandam efeitos enquanto o jogador "corre", elas são os fogos de artifício, coloquei os três, pois dá um efeito muito legal, mas cuidado, tente fazer o colar difícil de se achar, pois muitos jogadores com tantos efeitos, daria lag no servidor, caso prefira apenas um efeito, apague duas dessas três linhas, e edite o efeito a sua preferencia!

Em laranja, a velocidade da "corrida", quanto menor o número, mais rápido é.(ATENÇÃO, teste em um jogador que não seja GOD também, antes de colocar o servidor no ar, pois a reação é diferente)

 

Copie outro arquivo.lua que está em data/talkactions/scripts, renomeie para autowalk2.lua, abra-o, apague tudo e substitua por isso:

function onSay(cid, words, param)

if getPlayerStorageValue(cid, 69457) >= 1 then

setPlayerStorageValue(cid, 69457, 0)

doSendAnimatedText(getPlayerPosition(cid), 'Stop!', math.random(1, 255))

return true

else

doPlayerSendCancel(cid, 'You are not riding.')

return true

end

end

 

Tabela para alteração do slot para legs/armor/etc

 

Slot de Helmet = 1

Slot de Colar = 2

Slot de Backpack = 3

Slot de Armadura = 4

Slot de Mão direita = 5

Slot de Mão esquerda = 6

Slot de Legs(calças) = 7

Slot de Botas(pés) = 8

Slot de Anéis = 9

Slot de Utilitário(onde ficam as flechas, para serem usadas no arco) = 10

TAGs, para colocar em data/talkactions/talkactions.xml

<talkaction words="PALAVRAMAGICAPARAATIVAR" case-sensitive="no" event="script" value="autowalk.lua"/>

<talkaction words="PALAVRAMAGICAPARADESATIVAR" case-sensitive="no" event="script" value="autowalk2.lua"/>

Aí você edita a "PALAVRAMAGICAPARAX" para oque você quiser!

 

[spoiler=Função doPushCreature - By Dokmos]

------------------ Function doPushCreature(uid,direction,distance,time) by Dokmos ------------------

function doPushCreature(uid,direction,distance,time)

if isCreature(uid) == TRUE then

local rand = (2*math.random(0,1))-1

local rand2 = math.random(-1,0)

if direction == 0 then

signal = {0,rand,-rand,rand,-rand,0,-1,-1,-1,0,0,0}

elseif direction == 1 then

signal = {1,1,1,0,0,0,0,rand,-rand,rand,-rand,0}

elseif direction == 2 then

signal = {0,rand,-rand,rand,-rand,0,1,1,1,0,0,0}

elseif direction == 3 then

signal = {-1,-1,-1,0,0,0,0,rand,-rand,rand,-rand,0}

elseif direction == 4 then

signal = {-1,rand2,(-rand2)-1,0,1,rand2+1,rand2,0}

elseif direction == 5 then

signal = {1,-rand2,-((-rand2)-1),0,1,rand2+1,rand2,0}

elseif direction == 6 then

signal = {-1,rand2,(-rand2)-1,0,-1,(-rand2)-1,rand2,0}

else

signal = {1,-rand2,-((-rand2)-1),0,-1,(-rand2)-1,rand2,0}

end

local pos = getThingPos(uid)

nsig = #signal

nvar = 0

 

repeat

nvar = nvar+1

newpos = {x=pos.x+(signal[nvar]),y=pos.y+(signal[(nsig/2)+nvar]),z=pos.z}

newtile = {x=newpos.x,y=newpos.y,z=newpos.z,stackpos=0}

until getTileThingByPos(newtile).uid ~= 0 and hasProperty(getTileThingByPos(newtile).uid,3) == FALSE and queryTileAddThing(uid,newpos) == 1 or nvar == (nsig/2)

 

if distance == nil or distance == 1 then

doTeleportThing(uid,newpos,TRUE)

else

distance = distance-1

doTeleportThing(uid,newpos,TRUE)

if time ~= nil then

addEvent(doPushCreature,time,uid,direction,distance,time)

else

addEvent(doPushCreature,500,uid,direction,distance,500)

end

end

end

end

Adicione isso em data/lib/000-constant.lua

 

 

FIM!

Maaaas, não poderia acabar sem uma SS né?:loool:

Aqui vai: :w00t:(OBS:Na SS estou usando os 3 efeitos de fogos de artifício)

zzzzzzzzzs.jpg

Editado por jedian
Alguns errinhos arrumados

Compartilhar este post


Link para o post
Lwkass    1
Lwkass

Acho que você deveria ter feito todo o script, tipo, até criar uma função própria doPushCreature, mas enfim,

 

Aprovado

Compartilhar este post


Link para o post
jedian    0
jedian

Obrigado por aprovar!

agora, fazer a função, ficaria fodástico pra mim, sou meio novato ainda, to praticando como usar addEvent(...) :hmm:

Compartilhar este post


Link para o post
Fry Lock    0
Fry Lock

Cara não tem como fazer ele parar quando apertar ctrl+ 0 ou control mais outra coisa seila, seria muito util para mim e paras outras pessoas ;)

O script ficou otimo a ideia fico fantastica eu tive uma ideia aidna para deixar o script melhor mais nao vou falar pq acho que é impossivel

bom script para mim ta nota 10

 

Tem como script so funcionar se o control ficar segurando tipow ficar segunando e aperta a direçã oele vai e o script pra parar tem que soltar o control ;)

Compartilhar este post


Link para o post
jedian    0
jedian

@Fry Lock

Acho que não é possível não, mas eu estou trabalhando numa V2 em que seria só dizer outra palavra e ele pararia.

 

@Topic, to trabalhando numa v2 em que é necessário falar outra palavra para que o char pare, tentei fazer no mesmo script usando "if(words == xxx) then" mas n deu certo n, vou usar dois scripts e colocar storages, depois tento! :D

Compartilhar este post


Link para o post
PoRaI    0
PoRaI
-- By Jedian

function onSay(cid, words, param)

if(param ~= "stop") then

if getPlayerStorageValue(cid, 69457) <= 0 then

setPlayerStorageValue(cid, 69457, 1)

local parameters = {cid=cid, words = words, param = param}

stop = addEvent(rid, 0, parameters)

doSendAnimatedText(getPlayerPosition(cid), 'Lets ride!', math.random(1, 255))

else

stopEvent(stop)

return true

end

return true

end

 

function rid(parameters)

if getPlayerStorageValue(parameters.cid, 69457) == 1 then

if getPlayerSlotItem(parameters.cid, 2).itemid == 2319 then

doSendMagicEffect(getPlayerPosition(parameters.cid ), 29)

doSendMagicEffect(getPlayerPosition(parameters.cid ), 30)

doSendMagicEffect(getPlayerPosition(parameters.cid ), 28)

doPushCreature(parameters.cid, getPlayerLookDir(parameters.cid), 1, 5000)

local riding = addEvent(rid, 120, parameters)

else

doPlayerSendCancel(parameters.cid, 'Put necklace in the correct place.')

return true

end

end

end

Assim?

Compartilhar este post


Link para o post
Print Screen    1
Print Screen

E qual é exatamente a utilidade desse "sistema"?

Compartilhar este post


Link para o post
jedian    0
jedian

@PrintScreen Para chegar mais rapido em quests/hunts, pro player dizer , eu tenho um colar 2319(fail) ou etc

 

@PoRaI Acho que é isso mesmo, depois edito, o fórum ta dando erros esquisitos aqui agora :S

muito obrigado :D

Compartilhar este post


Link para o post
jedian    0
jedian

Aff, deu double post :S

Malz ai galera, não tenho idéia do que aconteceu :o

-- EDIT

PoRaI, nem deu certo não, ao falar com o param stop, só não aparecia a fala, mas n mudava nada, nenhum erro no console

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×