Ir para conteúdo
  • 0

[ Resolvido ][Pedido] Se Matar Mc Perder 1 Lvl...


JumentoCuzaum

Pergunta

13 respostass a esta questão

Posts Recomendados

  • 0

Não existe uma função que retire levels do jogador. Acho que dá até para fazer com querys na database, mas aí teria que ficar kickando o jogador se ele matasse um multiclient dele. :)

Link para o comentário
Compartilhar em outros sites

  • 0

Como disse o oneshot, não existe função que retire level, mas teste meu script que vai adicionar 100% da exp do level, só que negativo (tipo -1600 para level 8 (4200) ao 7 (2600))

Fiz baseado em alguns scripts que eu vi, não tive como testar. Deve funcionar no TFS mais recente...

 

Em globalevents\scripts\antimckill.lua:

function onKill(cid, target)
 if (isPlayer(cid) and isPlayer(target)) then
   if (getIPByName(getPlayerNameByGUID(cid)) == getIPByName(getPlayerNameByGUID(target))) then
     exp_perdida = getExpForLevel(getPlayerLevel())-getExpForLevel(getPlayerLevel()-1)
     doPlayerAddExp(cid, exp_perdida)
     return true
   end
 end
end

 

Em globalevents\globalevents.xml:

<event type="kill" name="antimckill" event="script" value="antimckill.lua"/>

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

  • 0

Como disse o oneshot, não existe função que retire level, mas teste meu script que vai adicionar 100% da exp do level, só que negativo (tipo -1600 para level 8 (4200) ao 7 (2600))

Fiz baseado em alguns scripts que eu vi, não tive como testar. Deve funcionar no TFS mais recente...

 

Em globalevents\scripts\antimckill.lua:

function onKill(cid, target)
 if (isPlayer(cid) and isPlayer(target)) then
if (getIPByName(getPlayerNameByGUID(cid)) == getIPByName(getPlayerNameByGUID(target))) then
  exp_perdida = getExpForLevel(getPlayerLevel())-getExpForLevel(getPlayerLevel()-1)
  doPlayerAddExp(cid, exp_perdida)
  return true
end
 end
end

 

Em globalevents\globalevents.xml:

<event type="kill" name="antimckill" event="script" value="antimckill.lua"/>

 

testei e não deu nada tenho que mudar alguma coisa?

Link para o comentário
Compartilhar em outros sites

  • 0

por um motivo n funcionou

va no creaturescript/script/login.lua

e colocque isto antes do ultimo "return TRUE" (n tem aspas)

registerCreatureEvent(cid, "antimckill")

 

e troque o script que o lordfire passo por esse(tinha um pequeno errinho, ia addiona exp inves de tira)

function onKill(cid, target)
 if (isPlayer(cid) and isPlayer(target)) then
   if (getIPByName(getPlayerNameByGUID(cid)) == getIPByName(getPlayerNameByGUID(target))) then
  exp_perdida = getExpForLevel(getPlayerLevel())-getExpForLevel(getPlayerLevel()-1)
  doPlayerAddExp(cid, -(exp_perdida))
  return true
   end
 end
end

@lordfire

esqueceu de negativa o valor e de fala pra ele por o registre

Link para o comentário
Compartilhar em outros sites

  • 0

Verdade, tinha esquecido do register. Quanto aos levels, eu fiz certo e errei porque fiz ao contrário, era pra pegar a exp do level-1 e tirar a do level pra ficar negativo, coloquei ao contrário. Obrigado por ajustar :p

Link para o comentário
Compartilhar em outros sites

  • 0

Dei +REP pro lord por dar o script e amanhã darei seu +REP lordbug99

Por ter ajustado vou testar quando eu ver que deu certo vou postar aqui e reportar o topico...

 

 

@ Edit Bom Ainda Não Deu CERTO :S Matei Um MC Meu e Não Retirou nada :S algum erro alguma coisa que eu tenha que editar?

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

  • 0

Acho que essa tentativa de adicionar pontos de experiência negativos foi uma teoria que não deu certo. Ou seja só com query.

 

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

 

O jogador que matou o multiclient então será kickado e quando voltar a entrar no jogo, terá um level a menos.

Link para o comentário
Compartilhar em outros sites

  • 0

onde coloco? isto?

 

Acho que essa tentativa de adicionar pontos de experiência negativos foi uma teoria que não deu certo. Ou seja só com query.

 

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

 

O jogador que matou o multiclient então será kickado e quando voltar a entrar no jogo, terá um level a menos.

Link para o comentário
Compartilhar em outros sites

  • 0

Oneshot, não vai ter problema de o player experiência suficiente pra avançar esse level retirado?

 

Acho que não, andei testando essa query aqui e ao entrar no jogo, o campo experience é atualizado para o valor da experiência ao ter atingido o level.

 


 

Ao criador do tópico, isso é um creaturescript, siga o mesmo procedimento de instalação passado acima.

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...