Jump to content

Recommended Posts

Atualmente este script está dando experiência fixa e eu gostaria que ele estivesse ganhando em porcentagem (configurável) e se ele matar um player 10 leveis(configurável) menor que o dele não ganhar experiência nenhuma

Se for possível adicionar a perda de experiência ao matar com o mesmo IP em porcentagem e não fixa.

 

  function onKill(cid, target)
--config----------------------------
local lvl = getPlayerLevel(cid) --players level
local nlvl = getPlayerLevel(cid) + 1 -- add 5 levels
--end-------------------------------
    if isPlayer(target) == TRUE then
        if getPlayerIp(cid) ~= getPlayerIp(target) then
                        local exp = (50 * (lvl) * (lvl) * (lvl) - 130 * (lvl) * (lvl) + 400 * (lvl)) / 5
                        local nexp = (50 * (nlvl) * (nlvl) * (nlvl) - 130 * (nlvl) * (nlvl) + 400 * (nlvl)) / 5
                        local newexp = nexp - exp
                        doPlayerAddExp(cid,newexp)
                        doSendAnimatedText(getPlayerPosition(cid), "Orgasmic~", 198)
                else
            doPlayerAddExperience(cid, -90000000)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"You have been punished for killing a player of the same IP.")
        end
        end
    return TRUE
end 

 

Link to post
Share on other sites

Não entendi a parte de ganhar em 'porcentagem', o ganho de XP está seguindo as fórmulas 'exp' e 'nexp'. Dá mais detalhes de como quer, e assim que possível eu vejo pra ti.

 

PS: Acho que ficaria legal se a fórmula fosse calculada em cima do level do player que morreu, e não em cima do lvl de quem matou (como está atualmente), daí colocar um limite de lvl tbm, pra evitar que jogadores iniciantes matem high lvl e abusem do ganho de xp.

Link to post
Share on other sites

17 minutos atrás, Pisces disse:

Não entendi a parte de ganhar em 'porcentagem', o ganho de XP está seguindo as fórmulas 'exp' e 'nexp'. Dá mais detalhes de como quer, e assim que possível eu vejo pra ti.

 

PS: Acho que ficaria legal se a fórmula fosse calculada em cima do level do player que morreu, e não em cima do lvl de quem matou (como está atualmente), daí colocar um limite de lvl tbm, pra evitar que jogadores iniciantes matem high lvl e abusem do ganho de xp.

@Pisces Eu gostaria que o jogador que matou o outro player ganhar uma porcentagem da exp perdida do jogador e que essa porcentagem seja configurável e ao matar um player level menor que o dele não ganhar exp

e se matar o jogador com o mesmo IP perder a experiência que ele ganharia do jogador que ele matou, nem sei se isso é possível nesse script.

Eu não conseguir deixar explicado isso no post por não entender sobre script estou começando agora e estou aprendendo conforme eu vou pesquisando vou aprendendo

Edited by Breniinx (see edit history)
Link to post
Share on other sites

A quantidade de XP que o jogador irá receber tu consegue definir nas variáveis "exp", "nexp", e "newexp", basta alterar as operações matemáticas que estão sendo feitas dentro delas. Modifiquei pra que o cálculo seja feito em cima do level do jogador inimigo, assim fica algo mais proveitoso e menos "fixo". Testa aí e me fala:

 

Spoiler

function onKill(cid, target)
local lvlCid = getPlayerLevel(cid)
local lvlTarget = getPlayerLevel(target)

------------- Em exp/nexp/newexp são as fórmulas de cálculo para decidir qual será a XP que o jogador irá obter.

  local exp = (50 * (lvlTarget) * (lvlTarget) * (lvlTarget) - 130 * (lvlTarget) * (lvlTarget) + 400 * (lvlTarget)) / 5
  local nexp = (50 * (lvlCid) * (lvlCid) * (lvlCid) - 130 * (lvlCid) * (lvlCid) + 400 * (lvlCid)) / 5
  local newexp = (exp - nexp) / 2
  local punishment = 2 -- Valor que será multiplicado pelo resultado de 'newexp'. (Punição por matar player do mesmo IP)

  if (isPlayer(target)) and (lvlTarget >= lvlCid)then
    if getPlayerIp(cid) ~= getPlayerIp(target) then
      doPlayerAddExp(cid, newexp)
      doCreatureSay(cid, "You earned " .. newexp .. " points of experience.", TALKTYPE_MONSTER)
    else
      doPlayerAddExperience(cid, -((newexp) * punishment))
      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"You have been punished for killing a player of the same IP.")
    end
  end
  return true
end 

 

 

Link to post
Share on other sites

7 horas atrás, Pisces disse:

A quantidade de XP que o jogador irá receber tu consegue definir nas variáveis "exp", "nexp", e "newexp", basta alterar as operações matemáticas que estão sendo feitas dentro delas. Modifiquei pra que o cálculo seja feito em cima do level do jogador inimigo, assim fica algo mais proveitoso e menos "fixo". Testa aí e me fala:

 

  Ocultar conteúdo




function onKill(cid, target)
local lvlCid = getPlayerLevel(cid)
local lvlTarget = getPlayerLevel(target)

------------- Em exp/nexp/newexp são as fórmulas de cálculo para decidir qual será a XP que o jogador irá obter.

  local exp = (50 * (lvlTarget) * (lvlTarget) * (lvlTarget) - 130 * (lvlTarget) * (lvlTarget) + 400 * (lvlTarget)) / 5
  local nexp = (50 * (lvlCid) * (lvlCid) * (lvlCid) - 130 * (lvlCid) * (lvlCid) + 400 * (lvlCid)) / 5
  local newexp = (exp - nexp) / 2
  local punishment = 2 -- Valor que será multiplicado pelo resultado de 'newexp'. (Punição por matar player do mesmo IP)

  if (isPlayer(target)) and (lvlTarget >= lvlCid)then
    if getPlayerIp(cid) ~= getPlayerIp(target) then
      doPlayerAddExp(cid, newexp)
      doCreatureSay(cid, "You earned " .. newexp .. " points of experience.", TALKTYPE_MONSTER)
    else
      doPlayerAddExperience(cid, -((newexp) * punishment))
      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"You have been punished for killing a player of the same IP.")
    end
  end
  return true
end 

 

 

a parte da punição por matar pelo mesmo ip não está funcionando e não aparece nenhum erro na distro, o resto tá funcionando perfeitamente, eu sei que estou pedindo demais mas não teria como deixar de forma mais clara essa formula de cálculo ? eu sinceramente não entendi nada e sobre a diferença de level deve  está na formula também e como eu não entendi fica difícil fazer alguma modificação eu queria que o jogador que matar o outro for 100 leveis menor ganhar 50% da exp perdida se forem level igual ou 10 nivel de diferença ganhar 100% da exp perdida e se ele for 20 nivel ou mais não ganhar exp nenhuma, se tiver varios player matando 1 jogador a exp seja shareada de forma igual dentro das condiçôes citada.

 

não precisa ser necessariamente esse script, se você tiver algum outro funcional que consiga fica o mais próximo possivel das condiçôes citada eu ficaria grato eternamente.

 

eu acho que já estou pedindo demais mas se não for possivel tudo bem, o script tá funcionando perfeitamente tirando a parte do IP

Edited by Breniinx (see edit history)
Link to post
Share on other sites

10 horas atrás, Pisces disse:

As fórmulas são apenas cálculos comuns (adição, subtração, etc..) de acordo como você desejar. Irei pensar em um outro script, de modo que fique mais claro e envio aqui no tópico. 😁

Estarei esperando ansiosamente :)

Link to post
Share on other sites

Estava com pouco tempo.. Mas estranho não estar funcionando a parte do IP, sendo que é a mesma linha de código que tu enviou anteriormente kkk

 

O script só vai funcionar se o target for um jogador e que este seja maior ou igual ao level do cid, talvez você matou alguém de level inferior.

Link to post
Share on other sites

3 horas atrás, Pisces disse:

Estava com pouco tempo.. Mas estranho não estar funcionando a parte do IP, sendo que é a mesma linha de código que tu enviou anteriormente kkk

 

O script só vai funcionar se o target for um jogador e que este seja maior ou igual ao level do cid, talvez você matou alguém de level inferior.

Jogador morto level 550, o killer era 600 e ambos com mesmo ip porque sou eu testando e não teve punição ou não entendi direito?

gif_morte.gif

Em 20/01/2021 em 15:39, XGaduX disse:

@WooX Ver se resolver esse...

Serei eternamente grato

Link to post
Share on other sites

O script por completo só funciona se o level do jogador morto for maior que o level do jogador que matou, assim como pediu ali atrás:

"e ao matar um player level menor que o dele não ganhar exp."

E o gif que mostrou ali, o player é lvl 600 e está matando um 550 :d

 

Se o Bruno for level 500, e matar o Guilherme que é lvl 400, o script não vai ser executado. Porque está configurado para que funcione apenas se o Guilherme tiver um level maior que o do Bruno.

Dá pra colocar a punição independente do level, mas não faz sentido dado o contexto. Visto que se o jogador for de level menor, ele não ganhará experiência nem nada.

Link to post
Share on other sites

1 minuto atrás, Pisces disse:

O script por completo só funciona se o level do jogador morto for maior que o level do jogador que matou, assim como pediu ali atrás:

"e ao matar um player level menor que o dele não ganhar exp."

E o gif que mostrou ali, o player é lvl 600 e está matando um 550 :d

 

Se o Bruno for level 500, e matar o Guilherme que é lvl 400, o script não vai ser executado. Porque está configurado para que funcione apenas se o Guilherme tiver um level maior que o do Bruno.

Dá pra colocar a punição independente do level, mas não faz sentido dado o contexto. Visto que se o jogador for de level menor, ele não ganhará experiência nem nada.

Kksk verdade ficou bem confuso, mas da uma olhada nesse script eu uso ele!! teria como você colocar essa mesma punição que ele citou no arquivo dele no meu? pvp_enforced.lua 
Scan - https://www.virustotal.com/gui/file/45d542a42c0723558a28c39acd4efd8c7a38b4b128ff8388f24ce20c700a3adf/detection

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By Felippe Reine014
      Uso versao do tfs 1.3
      Fala galera do TK  queria pedir a ajuda de voces com um script de action que ao dar use em uma alavanca o player ganhe uma outfit e o player precisa de uma certa quantidade de um item para ganhar outfit, e daria a outfit de acordo se o player e male ou female agradeço desde ja galera
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • By knepperzik
      Qual o motivo deste tópico? 
      Boa noite/dia/tarde, gostaria de uma script "action" que ao usar item dê uma skin para o player.
      Porem para uma vocação especifica.
      Exemplo: Item que da a skin para o naruto, somente o naruto pode usar, quando alguma outra vocação for usar apareça "Somente Naruto pode usar essa skin.".
       
      Estava tentando fazer algumas gambiarras porem nenhuma funcionou
      estava tentando usar a função " getPlayerVocation(cid) " mas não consegui encaixar ela na script.
       
      Id da vocação Naruto: 1

       
       
      Estou utilizando essa script! créditos: @Celulose @ITALOx
       
       
    • By Lethal M
      .Qual servidor ou website você utiliza como base? 
      TFS 1.3  TibiaGlobal 12.60
       
      Qual o motivo deste tópico? 
      Estou usando um talkaction para mudar de vocação em modal window mas quando confirmo nada acontece




      talkactions
       
       
      creaturescripts

       
       
       
    • By daniel.braga989
      Olá, Bom Dia, Boa Tarde, Boa Noite, Como vcs estão ? espero que bem.

      Estou com probleminha chato aqui, se alguém poder ajudar, agradeço de coração.

      Seguinte, tenho um projeto OTX 8.60 e não estou conseguindo utilizar a MAGIC WALL no server, toda vez que tento utilizar  aparece uma mensagem de bloqueio dizendo ''' Você não pode utilizar JUTSU EM AREA enquanto estiver RED/BLACK skull''

      Obs: Todas as contas testada não estava pz,red ou black skull, ate no personagem GOOD não consigo utilizar a Magic Wall.

      Obs: Não sei se ajuda, mas Procurei na source e achei 3 arquivo com essa mensagem '''Você não pode usar jutsus de area enquanto estiver Red/Black Skull''

      Arquivos >> ''OTXtarget''   '''player.cpp''  e  ''''player.o''
       
    • By raphado
      .Qual servidor ou website você utiliza como base? Otserv Global 12.51
       
      Qual o motivo deste tópico? Gostaria de diminuir o tempo que o corpo morto do bicho fica no chão, apodrecendo ele mais rápido! Me indicaram o itens.xml acho, mas tem milhares!! Existe algum jeito mais fácil? Obrigado!!
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo