(resolvido) remover speed de criatura e depois retornar

nbb147
Por nbb147
em Scripts

nbb147

My sweet sadness, my favorite feeling. ♪♫
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 06/04/11Posts: 350Char no Tibia: Mulekepirado

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, peça a ajuda de vocês e agradeço desde já, script:

local name, storage = 'fire devil', 11112local sto = 800000local speedchange = 0function onAttack(cid, target)if isMonster(cid) and getCreatureName(cid):lower() == name and isPlayer(target) and getCreatureStorage(target, storage) < 0 thensetPlayerStorageValue(cid, sto, getCreatureSpeed(cid))doChangeSpeed(cid, -getCreatureSpeed(cid))doChangeSpeed(cid, speedchange)return falseendif isMonster(cid) and getCreatureName(cid):lower() == name and isPlayer(target) and getCreatureStorage(target, storage) > 1 then -- O ERRO PERTENCE A ESSA PARTEdoChangeSpeed(cid, -getCreatureSpeed(cid))local oldspeed = getPlayerStorageValue(cid, sto) == -1 and getCreatureBaseSpeed(cid) or getPlayerStorageValue(cid, sto)doChangeSpeed(cid, oldspeed)return false -- O PROBLEMA ESTA AQUIendreturn trueendfunction onCombat(cid, target)if isPlayer(cid) and getCreatureStorage(cid, storage) < 0 and isMonster(target) and getCreatureName(target):lower() == name thendoPlayerSendCancel(cid, 'You cannot attack this monster.')return falseend if isMonster(cid) and getCreatureName(cid):lower() == name and isPlayer(target) and getCreatureStorage(target, storage) < 0 thenreturn falseendreturn trueendfunction onKill(cid, target, lastHit)if isMonster(target) and getCreatureName(target):lower() == name and isPlayer(cid) and getCreatureStorage(cid, storage) > 0 thendoCreatureSetStorage(cid, storage, -1)endreturn trueend

 

 
 

 

Eventide

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 08/10/08Posts: 189

Não tenho certeza do que tô falando, vou apenas especular... Talvez o valor que retorne quando você pega a velocidade da criatura seja a velocidade atual, modificada, que está negativa, e, talvez, esse valor esteja marcado como unsigned na source, se tornando 0 ou NULL, tente pegar esse valor antes de mudá-lo, caso retorne normal, coloque-o em um storage.



?

 

 

1440522_2.png

 

nbb147

My sweet sadness, my favorite feeling. ♪♫
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 06/04/11Posts: 350Char no Tibia: Mulekepirado

mais ai é que ta cara, eu tentei fazer isso, eu relacionei a velocidade que ele estava a uma storage(800000), dessa maneira salvando a velocidade dele, entende?

 
 

 

nbb147

My sweet sadness, my favorite feeling. ♪♫
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 06/04/11Posts: 350Char no Tibia: Mulekepirado

--------------------------EDIT----------------------

o monstro está seguindo o jogador, mas como tem um return false na segunda checagem do onAttack o monstro não ataca o jogador que possui a storage(ou seja, persegue mas não acerta o dano), queria saber como faço para não precisar desse return false, pois ele retorna dizendo que a função onAttack é falsa ;c, com o meu baixo conhecimento sobre script não vejo um meio de fazer isso ;c 

 
 

 

Poccnn

Enquanto houver armas no mundo, haverá guerra!
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 07/03/16Posts: 1418Gênero: Masculino

Usa: return true

"Deus é amor, mas matou 99,99999% de todos os seres viventes do mundo com o diluvio.

Deus é misericórdia, mas condena as pessoas ao tormento eterno do inferno.

Deus é pai, mas abandonou seus filhos a servidão.

Deus é vida, mas condenou a humanidade a morte.

Deus é o senhor. Senhor das guerras, da morte, do ódio.

 

Ninguém que ame a humanidade, mataria 99,99999% da população, não só de humanos, bem como dos demais animais, por amor. Isso não é amor, é doença, psicose de um sádico que gosta de ver sua 'criação' sofrer e ainda quer 'pagar' de misericordioso, de deus amor.

 

Não quero seu amor; não quero sua misericórdia, não quero ser seu filho, não quero sua vida, não quero que seja meu senhor.

Tu és um psicótico, doente, hipócrita, assassino; não me venha querer se passar por bondoso, amoroso, misericordioso."

nbb147

My sweet sadness, my favorite feeling. ♪♫
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 06/04/11Posts: 350Char no Tibia: Mulekepirado

quando coloca return true ele fica bugando(travando), acho que é porque o script retorna tudo como verdadeiro, até a parte que tira a speed, conhece algum método de fazer isso sem dar esse problema? ; /

 
 

 

Poccnn

Enquanto houver armas no mundo, haverá guerra!
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 07/03/16Posts: 1418Gênero: Masculino

Se ele está travando é porque ele está caindo em um loop.

Vou analisar esse seu script para tentar averiguar onde esteja o erro.

"Deus é amor, mas matou 99,99999% de todos os seres viventes do mundo com o diluvio.

Deus é misericórdia, mas condena as pessoas ao tormento eterno do inferno.

Deus é pai, mas abandonou seus filhos a servidão.

Deus é vida, mas condenou a humanidade a morte.

Deus é o senhor. Senhor das guerras, da morte, do ódio.

 

Ninguém que ame a humanidade, mataria 99,99999% da população, não só de humanos, bem como dos demais animais, por amor. Isso não é amor, é doença, psicose de um sádico que gosta de ver sua 'criação' sofrer e ainda quer 'pagar' de misericordioso, de deus amor.

 

Não quero seu amor; não quero sua misericórdia, não quero ser seu filho, não quero sua vida, não quero que seja meu senhor.

Tu és um psicótico, doente, hipócrita, assassino; não me venha querer se passar por bondoso, amoroso, misericordioso."

ricardo231

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 05/05/16Posts: 3

Eso se modifica en la sources

nbb147

My sweet sadness, my favorite feeling. ♪♫
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 06/04/11Posts: 350Char no Tibia: Mulekepirado

@Poccnn por favor cara, olha mesmo, por que tá foda, já endoidei muito com esse script, acho que apenas não tenho conhecimento o suficiente ainda para fazer o que desejo, agradeço desde já a sua colaboração.

 

@ricardo231 como? isso evitaria do return false deixar de atrapalhar o 'onAttack'?

 
 

 

Poccnn

Enquanto houver armas no mundo, haverá guerra!
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 07/03/16Posts: 1418Gênero: Masculino

Nao tem nada haver com sources.

Esse seu script está dificil de ser compreendido, então me explica; qual a finalidade desse script?

"Deus é amor, mas matou 99,99999% de todos os seres viventes do mundo com o diluvio.

Deus é misericórdia, mas condena as pessoas ao tormento eterno do inferno.

Deus é pai, mas abandonou seus filhos a servidão.

Deus é vida, mas condenou a humanidade a morte.

Deus é o senhor. Senhor das guerras, da morte, do ódio.

 

Ninguém que ame a humanidade, mataria 99,99999% da população, não só de humanos, bem como dos demais animais, por amor. Isso não é amor, é doença, psicose de um sádico que gosta de ver sua 'criação' sofrer e ainda quer 'pagar' de misericordioso, de deus amor.

 

Não quero seu amor; não quero sua misericórdia, não quero ser seu filho, não quero sua vida, não quero que seja meu senhor.

Tu és um psicótico, doente, hipócrita, assassino; não me venha querer se passar por bondoso, amoroso, misericordioso."

nbb147

My sweet sadness, my favorite feeling. ♪♫
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 06/04/11Posts: 350Char no Tibia: Mulekepirado

Bom, vou explicar cada parte "onAttack", "onCombat" e o "onKill": 

 

O onAttack checa se o player possui certa storage e se ele não tiver o monstro não consegue atacar o ele(nessa parte o player faz uma checagem da velocidade do monstro e guarda ela a ligando a uma storage), se ele tiver a storage o monstro consegue ataca-lo, e caso chegue primeiro um player que não possua ele ficará parado, em seguida se aparecer um player que tenha a storage ele faz a checagem novamente só que retornando a velocidade que o monstro tinha, pois ele guardou pois ele havia guardo. 

 

O onCombat ele faz com que o player não consiga atacar o monstro se ele não possuir storage, se ele possuir simplesmente consegue ataca-lo.

 

O onKill simplesmente retira uma storage e adiciona outra ao matar a criatura.

 

Obrigado por tentar ajudar.

 
 

 

Poccnn

Enquanto houver armas no mundo, haverá guerra!
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 07/03/16Posts: 1418Gênero: Masculino

Entao seria: o player e o monstro só pode atacar determinados seres que tenham a storage.

Teins certeza que a função setPlayerStorageValue, consegue adicionar esse valor em monstros?

Como o player e o monstro adquirem essa store?

Essa questão de paralisar um jogador que não tenha a store, como ele voltaria a andar?

"Deus é amor, mas matou 99,99999% de todos os seres viventes do mundo com o diluvio.

Deus é misericórdia, mas condena as pessoas ao tormento eterno do inferno.

Deus é pai, mas abandonou seus filhos a servidão.

Deus é vida, mas condenou a humanidade a morte.

Deus é o senhor. Senhor das guerras, da morte, do ódio.

 

Ninguém que ame a humanidade, mataria 99,99999% da população, não só de humanos, bem como dos demais animais, por amor. Isso não é amor, é doença, psicose de um sádico que gosta de ver sua 'criação' sofrer e ainda quer 'pagar' de misericordioso, de deus amor.

 

Não quero seu amor; não quero sua misericórdia, não quero ser seu filho, não quero sua vida, não quero que seja meu senhor.

Tu és um psicótico, doente, hipócrita, assassino; não me venha querer se passar por bondoso, amoroso, misericordioso."

nbb147

My sweet sadness, my favorite feeling. ♪♫
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 06/04/11Posts: 350Char no Tibia: Mulekepirado

exatamente, sim, certeza ela adiciona pois como eu disse ela funciona até certo ponto, e eu sei que funciona pois já usei em outras ocasiões, tipo é feito duas checagens a primeira na linha do if é pra saber se o player possui a storage, e a que adiciona ou tira a velocidade do monstro depende da checagem feito no jogador, tipo, checa a storage do jogador se ele possuir, é feito a checagem do monstro e nesse processo é adquirido a sto de velocidade, estou com pressa agora, qualquer coisa te explico mais tarde

 

 
 

 

Poccnn

Enquanto houver armas no mundo, haverá guerra!
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 07/03/16Posts: 1418Gênero: Masculino

O monstro e o player tem que ter a mesma storage?

Como o monstro ganha store?

"Deus é amor, mas matou 99,99999% de todos os seres viventes do mundo com o diluvio.

Deus é misericórdia, mas condena as pessoas ao tormento eterno do inferno.

Deus é pai, mas abandonou seus filhos a servidão.

Deus é vida, mas condenou a humanidade a morte.

Deus é o senhor. Senhor das guerras, da morte, do ódio.

 

Ninguém que ame a humanidade, mataria 99,99999% da população, não só de humanos, bem como dos demais animais, por amor. Isso não é amor, é doença, psicose de um sádico que gosta de ver sua 'criação' sofrer e ainda quer 'pagar' de misericordioso, de deus amor.

 

Não quero seu amor; não quero sua misericórdia, não quero ser seu filho, não quero sua vida, não quero que seja meu senhor.

Tu és um psicótico, doente, hipócrita, assassino; não me venha querer se passar por bondoso, amoroso, misericordioso."

nbb147

My sweet sadness, my favorite feeling. ♪♫
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 06/04/11Posts: 350Char no Tibia: Mulekepirado

não, as storages no caso são diferentes