Ir para conteúdo

Featured Replies

Postado

E ai galera, esses dias eu estava tentando fazer um script que o pessoal procura muito que é o famoso sistema de saga, que consiste no seguinte, o player só pode atacar e ser atacado por uma devida criatura se possuir certa storage caso contrario a criatura não ira se mover, bom, consegui fazer quase tudo em lua, só que existe um pequeno problema, que é o seguinte, esse problema está na parte que retorna a speed da criatura, a speed não retorna, tudo funciona corretamente exceto essa parte, tudo por conta do 'return false', esse comando retorna toda a função fazendo com que o onAttack não funcione ou seja o player não seja atacado mesmo possuindo a storage, peça humildemente a ajuda de vocês e agradeço desde já qualquer intenção, script:

 

local name, storage = 'fire devil', 11112
local sto = 800000
local speedchange = 0
function onAttack(cid, target)
if isMonster(cid) and getCreatureName(cid):lower() == name and isPlayer(target) and getCreatureStorage(target, storage) < 0 then
setPlayerStorageValue(cid, sto, getCreatureSpeed(cid))
doChangeSpeed(cid, -getCreatureSpeed(cid))
doChangeSpeed(cid, speedchange)
return false
end
if isMonster(cid) and getCreatureName(cid):lower() == name and isPlayer(target) and getCreatureStorage(target, storage) > 1 then -- O ERRO PERTENCE A ESSA PARTE
doChangeSpeed(cid, -getCreatureSpeed(cid))
local oldspeed = getPlayerStorageValue(cid, sto) == -1 and getCreatureBaseSpeed(cid) or getPlayerStorageValue(cid, sto)
doChangeSpeed(cid, oldspeed)
return false -- O PROBLEMA ESTA AQUI
end
return true
end
function onCombat(cid, target)
if isPlayer(cid) and getCreatureStorage(cid, storage) < 0 and isMonster(target) and getCreatureName(target):lower() == name then
doPlayerSendCancel(cid, 'You cannot attack this monster.')
return false
end 
if isMonster(cid) and getCreatureName(cid):lower() == name and isPlayer(target) and getCreatureStorage(target, storage) < 0 then
return false
end
return true
end
function onKill(cid, target, lastHit)
if isMonster(target) and getCreatureName(target):lower() == name and isPlayer(cid) and getCreatureStorage(cid, storage) > 0 then
doCreatureSetStorage(cid, storage, -1)
end
return true
end

 

Postado
16 minutos atrás, nbb147 disse:

E ai galera, esses dias eu estava tentando fazer um script que o pessoal procura muito que é o famoso sistema de saga, que consiste no seguinte, o player só pode atacar e ser atacado por uma devida criatura se possuir certa storage caso contrario a criatura não ira se mover, bom, consegui fazer quase tudo em lua, só que existe um pequeno problema, que é o seguinte, esse problema está na parte que retorna a speed da criatura, a speed não retorna, tudo funciona corretamente exceto essa parte, tudo por conta do 'return false', esse comando retorna toda a função fazendo com que o onAttack não funcione ou seja o player não seja atacado mesmo possuindo a storage, peça humildemente a ajuda de vocês e agradeço desde já qualquer intenção, script:

 


local name, storage = 'fire devil', 11112
local sto = 800000
local speedchange = 0
function onAttack(cid, target)
if isMonster(cid) and getCreatureName(cid):lower() == name and isPlayer(target) and getCreatureStorage(target, storage) < 0 then
setPlayerStorageValue(cid, sto, getCreatureSpeed(cid))
doChangeSpeed(cid, -getCreatureSpeed(cid))
doChangeSpeed(cid, speedchange)
return false
end
if isMonster(cid) and getCreatureName(cid):lower() == name and isPlayer(target) and getCreatureStorage(target, storage) > 1 then -- O ERRO PERTENCE A ESSA PARTE
doChangeSpeed(cid, -getCreatureSpeed(cid))
local oldspeed = getPlayerStorageValue(cid, sto) == -1 and getCreatureBaseSpeed(cid) or getPlayerStorageValue(cid, sto)
doChangeSpeed(cid, oldspeed)
return false -- O PROBLEMA ESTA AQUI
end
return true
end
function onCombat(cid, target)
if isPlayer(cid) and getCreatureStorage(cid, storage) < 0 and isMonster(target) and getCreatureName(target):lower() == name then
doPlayerSendCancel(cid, 'You cannot attack this monster.')
return false
end 
if isMonster(cid) and getCreatureName(cid):lower() == name and isPlayer(target) and getCreatureStorage(target, storage) < 0 then
return false
end
return true
end
function onKill(cid, target, lastHit)
if isMonster(target) and getCreatureName(target):lower() == name and isPlayer(cid) and getCreatureStorage(cid, storage) > 0 then
doCreatureSetStorage(cid, storage, -1)
end
return true
end

 

Não entendi porque esse return false está aí, essa é a condição que o player poderia atacar, porque tem o storage necessário e a speed retorna, troque por um return true

Postado
  • Autor

quando coloco return true, o personagem que possui a storag ao chegar perto da criatura é atacada mas o monstro fica travando, tipo, anda e para, anda e para, e se eu me afastar muito do monstro ele para totalmente e só volta a andar quando o personagem encosta novamente no monstro

Editado por nbb147 (veja o histórico de edições)

Postado
  • Autor

mas ai não seria o que preciso, isso dai já é outra parada, mas de qualquer maneira agradeço.

sem contar que isso dai é pra tfs 1.1, o meu tfs é 0.3, os locais são diferentes

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo