Jump to content
Sign in to follow this  
vdzz

Transpeed

Recommended Posts

vdzz
Servidor testado: TFS 0.3.6 pl

Protocolo: 8.54

Autor: vdzz, dalvorsn

Transpeed

 

Action que montei com a ajuda do Dalvo, após assistir algumas aulas de scripting com o iunix.

Tive a ideia e tentei colocar em prática, após um tempo com a ajuda do Dalvo consegui terminar.

A action acontece a partir do momento em que o player consome o "Dragon Ham", tendo a probabilidade, de um para cem, do player se transforma em um dragon por três minutos e neste tempo em que ele estiver transformado ganhar um bônus em speed.

 

• Intalação

 

Vá em data/actions/scripts/ crie um arquivo x de extensão .lua e coloque isso dentro:

function onUse(cid, item)
local config = {
storage = 222222,
speed = 50,
time = 3
}
local function retira(cid)
	if isCreature(cid) then
		if getPlayerStorageValue(cid, config.storage) == 1 then
			setPlayerStorageValue(cid, config.storage, -1)
			doChangeSpeed(cid, getCreatureSpeed(cid)-50)
		end
	end
end

if math.random(100) == 1 then
	doSetCreatureOutfit(cid,{lookType=34}, config.time*60*1000)
	doChangeSpeed(cid, getCreatureSpeed(cid)+config.speed)
	setPlayerStorageValue(cid, config.storage, 1)
	addEvent(retira,config.time*60*1000)
end
end

 

Agora em data/action/actions.xml coloque esta tag:

<action itemid="2672" event="script" value="X.lua"/>

 

Agora em data\creaturescripts\scripts\login.lua e após OnLogin coloque:

if getPlayerStorageValue(cid, 222222) == 1 then
doChangeSpeed(getCreatureSpeed(cid)-50)
setPlayerStorageValue(cid, 222222, -1)
end

 

Bom proveito com o novo script do seu server. :meliga:

Edited by vdzz

Share this post


Link to post
Share on other sites
Oneshot

Haha, então as aulas estão surtindo efeito? Estou gostando de ver que mais pessoas estão se interessando pela linguagem LUA. :)

 

A idéia em que o script se baseia é um tanto comum, um "utevo res ina" que dá mais velocidade ao jogador, no entanto, não estamos aqui para falar sobre idéias e sim sobre a construção do script.

 

Ao todo, estou gostando de ver seu avanço, parabéns.

 

Criatividade: 45

Código : 45

Utilidade : 55

 

Nota Final : 38 ou C

Remuneração Total: 15V$

Edited by Garou

Share this post


Link to post
Share on other sites
iuniX

Galera ta aprendendo :D

De pouco em pouco eles chegam lá :D

Share this post


Link to post
Share on other sites
Conde2
doChangeSpeed(cid, getCreatureSpeed(cid)-50)
O certo seria

 

doChangeSpeed(cid, getCreatureSpeed(cid)-config.speed)

Uma dica não é muito bom usar tabelas para definir valores constantes.

Para isso declare a variável normalmente, as tabelas são usadas mais para configurações grandes e que se repetem, ou que há necessidade de troca dos valores.

Isso não muda muita coisa, mas ajuda a organizar melhor o script.

Edited by Garou

Share this post


Link to post
Share on other sites
Mock

@vdzz

Dei uma melhorada p vc

local config = {
storage = 222222,
speed = 50,
time = 3
}
function onUse(cid, item)
if math.random(1000) <= 10  then --Fica mais preciso assim.
	doSetCreatureOutfit(cid,{lookType=34}, config.time*60*1000)
	doChangeSpeed(cid, getCreatureSpeed(cid)+config.speed)
	setPlayerStorageValue(cid, config.storage, 1)
	addEvent(function(cid)
		if isCreature(cid) then
			if getPlayerStorageValue(cid, config.storage) == 1 then
				setPlayerStorageValue(cid, config.storage, -1)
				doChangeSpeed(cid, getCreatureSpeed(cid)-50)
			end
		end
	end,config.time*60*1000)
end
end

Share this post


Link to post
Share on other sites
vdzz
@vdzz

Dei uma melhorada p vc

local config = {
storage = 222222,
speed = 50,
time = 3
}
function onUse(cid, item)
if math.random(1000) <= 10  then --Fica mais preciso assim.
	doSetCreatureOutfit(cid,{lookType=34}, config.time*60*1000)
	doChangeSpeed(cid, getCreatureSpeed(cid)+config.speed)
	setPlayerStorageValue(cid, config.storage, 1)
	addEvent(function(cid)
		if isCreature(cid) then
			if getPlayerStorageValue(cid, config.storage) == 1 then
				setPlayerStorageValue(cid, config.storage, -1)
				doChangeSpeed(cid, getCreatureSpeed(cid)-50)
			end
		end
	end,config.time*60*1000)
end
end

Na linha 18, isto:

end,config.time*60*1000)

É assim mesmo? G_G

 

@Topic

 

Valeu pelos comentários.

Share this post


Link to post
Share on other sites
dalvorsn

Sim, a definição de addEvent é assim:

[b]addEvent(function,time, parameters)[/b]

O que ele fez foi colocar a função dentro do addEvent, sinceramente pra mim isso é a mesma coisa que colocar ela como local e chamá-la pelo nome.

Share this post


Link to post
Share on other sites
tigerx2

[+] Dica

Pelo menos o postado no topico, se o player deslogar durante o evento dah erro no console.

 

Como resolver ?

 

Faz um creaturescripts on logout e manda cancelar o evento :)

 

Pelo que li, tem esse erro sim, mas sepah, foi mal :b

Share this post


Link to post
Share on other sites
iuniX
[+] Dica

Pelo menos o postado no topico, se o player deslogar durante o evento dah erro no console.

 

Como resolver ?

 

Faz um creaturescripts on logout e manda cancelar o evento :)

 

Pelo que li, tem esse erro sim, mas sepah, foi mal :b

 

Não precisa disso

if isCreature(cid) then

Se o player não estiver on, o isCreature vai voltar false e não vai executar o escopo...

Share this post


Link to post
Share on other sites
tigerx2

@up

Hmm, eh que quando eu fiz no 0.4,

ao ele verificar isCreature(cid), nao encontra CID, pois o player deslogou,

entao simplesmente me mandava erro no console :b

Share this post


Link to post
Share on other sites
gatokee

Parabéns gostei bastante da sua ideia... mas notei algum erro no script bom você usou o addEvent errado vou explicar você usou assim

addEvent(retira,config.time*60*1000)

mas você não esta explicando para o addEvent para quem ativar a function retira o certo seria:

addEvent(retira,config.time*60*1000,cid)

assim explicando para o addEvent usar o retira em você mesmo apos o tempo determinado...

bom só dei uma olhada rápida caso esteja com duvidas em scripting pode tirar suas duvidas comigo por mp's ^^

Share this post


Link to post
Share on other sites
kaveira11

Eu fiz um teste aqui no meu ot, mas quando o player sai da transformaçao a velocidade continua, algum problema meu?

Share this post


Link to post
Share on other sites
luishtfs

Hehe, legalzinho a teoria, vou testar aqui

Share this post


Link to post
Share on other sites
Serafos

Possibilidades de como reduzir o dano de fire ao se transformar?

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×