Ir para conteúdo
  • 0

O Que Está Errado? PorFavor Algum Scripter Experiente?


JumentoCuzaum

Pergunta

Estou com um BUG muito chato em meu server de war, ao iniciar você é lvl 130, logo se matar algumas pessoas pegará lvl 131 e quando você morre perde o lvl e volta pro 130 não é? pois bem! mas o char não perde o HP nem a MANA que ganhou com isso ou sejá se uma pessoa upar level 131 e morrer ate o 130 o hp e a mana continua de um lvl 131 e o pior se upar level 131 outra vez o char almenta da mesma forma como se fosse pro level 132 mais com exp de level 131 wacko.png

Eai Alguém Ajuda?

 

Obs: tenho um script ant-kill mc se você matar mc você desloga e perde 1 level (funciona perfeitamente) mas acredito que não sejá ele o problema, pois não é so quando mata player vs player pedi um amigo pra criar duas contas e matar

uma a outra ele pegou lvl 131 e deslogou ao logar ele voltou ao 129 e upou o 130 (pois é o minimo de lvl do ot)

mas a mana e hp ainda continuou de 131... assim todos vão bugar... espero que me ajudem!

 

Postei Ai Meu Login.lua:

local config = {
loginMessage = getConfigValue('loginMessage'),
useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
}

function onLogin(cid)
local loss = getConfigValue('deathLostPercent')
if(loss ~= nil) then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
doPlayerAddBlessing(cid, 1)
doPlayerAddBlessing(cid, 2)
doPlayerAddBlessing(cid, 3)
doPlayerAddBlessing(cid, 4)
doPlayerAddBlessing(cid, 5)
end

local accountManager = getPlayerAccountManager(cid)
if(accountManager == MANAGER_NONE) then
local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
if(lastLogin > 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
else
str = str .. " Please choose your outfit."
doPlayerSendOutfitWindow(cid)
end

doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
elseif(accountManager == MANAGER_NAMELOCK) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
elseif(accountManager == MANAGER_ACCOUNT) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.")
end

if(not isPlayerGhost(cid)) then
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
end

registerCreatureEvent(cid, "kill")
registerCreatureEvent(cid, "onPrepareDeath")
registerCreatureEvent(cid, "PlayerLogout")
registerCreatureEvent(cid, "Reward")
registerCreatureEvent(cid, "onPrepareDeath")
registerCreatureEvent(cid, "deathBroadcast")
registerCreatureEvent(cid, "DeathBroadcast")
registerCreatureEvent(cid, "accm")
registerCreatureEvent(cid, "antimckill")

registerCreatureEvent(cid, "Idle")
if(config.useFragHandler) then
registerCreatureEvent(cid, "SkullCheck")
end

registerCreatureEvent(cid, "ReportBug")
return true
end

 

 

Realmente Estou precisando de ajuda...


BUMP!


BUMP!

Editado por FriikoPall
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Se importa de postar o script ant-kill mc?

 

ta aqui:

 

function onKill(cid, target)

if isPlayer(cid) and isPlayer(target) then

if getPlayerIp(cid) == getPlayerIp(target) then

local pid, level = getPlayerGUID(cid), getPlayerLevel(cid)

doRemoveCreature(cid)

db.executeQuery("UPDATE `players` SET `level` = ".. level - 1 .." WHERE `id` = ".. pid ..";")

end

end

return true

end

Editado por FriikoPall
Link para o comentário
Compartilhar em outros sites

  • 0

Já tentou remover ele e rodar o server?

não... mas tipo se eu tirar ele vai fuder o server pq vai ficar sem como eu tomar conta de todos os caras que matam mc ou você acha que tem algum que de pra colocar?

Link para o comentário
Compartilhar em outros sites

  • 0

O erro é simples, e está no seu script de anti-mc

function onKill(cid, target)
        if isPlayer(cid) and isPlayer(target) then
                if getPlayerIp(cid) == getPlayerIp(target) then
                        local pid, level = getPlayerGUID(cid), getPlayerLevel(cid)
                        doRemoveCreature(cid)
                        db.executeQuery("UPDATE `players` SET `level` = ".. level - 1 .." WHERE `id` = ".. pid ..";")
                end
        end
        return true
end

Você reduz o level diretamente no database, fazendo com que o HP/MP do personagem permaneçam o mesmo. Tente trocar pelo script abaixo.

 

Onde local experience, é o valor de experiencia que o player irá perder.

local experience = 10000

function onKill(cid, target)
        if isPlayer(cid) and isPlayer(target) then
                if getPlayerIp(cid) == getPlayerIp(target) then
                        local pid, level = getPlayerGUID(cid), getPlayerLevel(cid)
                        doPlayerAddExperience(cid, -experience)
                end
        end
        return true
end

Obs: o script não foi testado.

 

Espero ter ajudado, até! ;)

Link para o comentário
Compartilhar em outros sites

  • 0

O erro é simples, e está no seu script de anti-mc

function onKill(cid, target)
        if isPlayer(cid) and isPlayer(target) then
                if getPlayerIp(cid) == getPlayerIp(target) then
                        local pid, level = getPlayerGUID(cid), getPlayerLevel(cid)
                        doRemoveCreature(cid)
                        db.executeQuery("UPDATE `players` SET `level` = ".. level - 1 .." WHERE `id` = ".. pid ..";")
                end
        end
        return true
end

Você reduz o level diretamente no database, fazendo com que o HP/MP do personagem permaneçam o mesmo. Tente trocar pelo script abaixo.

 

Onde local experience, é o valor de experiencia que o player irá perder.

local experience = 10000

function onKill(cid, target)
        if isPlayer(cid) and isPlayer(target) then
                if getPlayerIp(cid) == getPlayerIp(target) then
                        local pid, level = getPlayerGUID(cid), getPlayerLevel(cid)
                        doPlayerAddExperience(cid, -experience)
                end
        end
        return true
end

Obs: o script não foi testado.

 

Espero ter ajudado, até! ;)

 

deu certo!!! :D valeu mesmo amigo muuuuuuuuuuuito obrigado!

 

Obs: Dei +REP nos dois! :)

Editado por FriikoPall
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...