Ir para conteúdo
Entre para seguir isso  
vdzz

Transpeed

Recommended Posts

vdzz    15
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:

Editado por vdzz

Compartilhar este post


Link para o post
Oneshot    24
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$

Editado por Garou

Compartilhar este post


Link para o post
iuniX    4
iuniX

Galera ta aprendendo :D

De pouco em pouco eles chegam lá :D

Compartilhar este post


Link para o post
Conde2    0
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.

Editado por Garou

Compartilhar este post


Link para o post
Mock    32
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

Compartilhar este post


Link para o post
vdzz    15
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.

Compartilhar este post


Link para o post
dalvorsn    46
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.

Compartilhar este post


Link para o post
tigerx2    1
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

Compartilhar este post


Link para o post
iuniX    4
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...

Compartilhar este post


Link para o post
tigerx2    1
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

Compartilhar este post


Link para o post
gatokee    0
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 ^^

Compartilhar este post


Link para o post
kaveira11    0
kaveira11

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

Compartilhar este post


Link para o post
luishtfs    1
luishtfs

Hehe, legalzinho a teoria, vou testar aqui

Compartilhar este post


Link para o post
Serafos    0
Serafos

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

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.

×