OT

Base Speed E Sinal De Diferença Em Lua

Por othereality, 11 de fev. de 2012 em Scripts

20
3.1k
13 de fevereiro de 2012 às 02:05

cara, você pode colocar variáveis fora da função main sim!

 

o que não pode é colocar variáveis que chamam os argumentos da função main, pois ela ainda não foi declarada.

 

exemplo:

 

local name = "Demonb"

function onLogin(cid)

print(name)
end

 

funciona.

 

local name = getCreatureName(cid)

function onLogin(cid)

print(name)
end

 

não funciona, pois o argumento cid só foi declarado na função main.

 

--

 

20gehx2.png

 

é brincadeira né cara... olha o bar.

 

--

 

@topic

 

na verdade, a função doChangeSpeed não necessita de uma soma ou subtração no argumento.

 

speed atual -> 500

 

doChangeSpeed(cid, 300)

 

speed final -> 800

 

logo, o correto seria:

 

function onLogin(cid)

if getCreatureSpeed(cid) ~= 300 then
doChangeSpeed(cid, -(getCreatureSpeed(cid)-getCreatureBaseSpeed(cid)))
end

return true
end

 

tenta ai, depois avisa se deu certo.

Editado Fevereiro 13 por Demonbholder

otherealityO
13 de fevereiro de 2012 às 02:57

Então.

vlw pela explicação das variáveis.

--

Que é brincadeira eu saquei né!

--

 

doChangeSpeed(cid, -(getCreatureSpeed(cid)-getCreatureBaseSpeed(cid)))

Isso faria o player ficar com speed negativa!

 

Se o player ta level 101

a base speed é 200

ele vai ter 400 de speed. (cada level da 2 e já começa no 1)

 

dai iria tirar dele a speed que é 400 e tirar a basespeed que é 200.

ia ficar -200 \o/

--

Meu scipt no final ficou assim:

 

function onLogin(cid)
local nbw = 400
local cs = getCreatureSpeed(cid)
doChangeSpeed(cid, (-cs +nbw))
return true
end

 

E como eu tava procurando isso faz tempo e já tinha até pedido mas ninguém soube me responder, resolvi fazer um tuto:

http://www.xtibia.co...__fromsearch__1

Com os devidos créditos.

Editado Fevereiro 13 por OtheReality

13 de fevereiro de 2012 às 04:31

eu não testei nem nada, mas pelo que eu li dessa função, ela adiciona o número no argumento na velocidade atual do player.

 

ou seja:

 

val atual = 500

 

doChangeSpeed(cid, -(getCreatureSpeed(cid)-getCreatureBaseSpeed(cid))) no caso -> doChangeSpeed(cid, -(500-200))

 

isso da -300

 

ai ele adiciona 500 - 300

 

ficando com 200.

 

não é assim que funciona a função não?

Editado Fevereiro 13 por Demonbholder

otherealityO
13 de fevereiro de 2012 às 05:07

AAhhh é verdade!

é que eu achei que o primeiro menos tava dentro do parêntese tipo

(-x -y)

oque daria

-(x+y)

Se ta certo sim.

 

Mas só pra constar:

 

eu peguei um player com:

speed 284

base speed 280

e troquei a função pra

doChangeSpeed(cid, -(getCreatureSpeed(cid)-getCreatureBaseSpeed(cid)))

Mas quando eu loguei o player continuou com 284 de speed o.O

 

Não entendi porque mas dai pra ter certeza eu troquei a função, já substituindo os valores:

doChangeSpeed(cid, -(284 -280))

E ai funcionou direito como deveria.

 

ps:Mas não se preocupemos em resolver isso porque minha duvida já foi resolvida.

ps do ps:A menos que já saibam o motivo dai não tem porque não postar né.

Editado Fevereiro 13 por OtheReality

13 de fevereiro de 2012 às 05:39

hmmm

 

vê o que as funções:

 

 

getCreatureSpeed(cid)

getCreatureBaseSpeed(cid)

 

tão retornando...

 

pode usar com print. print(getCreatureSpeed(cid))