Postado Janeiro 14, 2021 4 anos 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
Postado Janeiro 14, 2021 4 anos 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.
Postado Janeiro 14, 2021 4 anos Autor 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 Editado Janeiro 14, 2021 4 anos por Breniinx (veja o histórico de edições)
Postado Janeiro 14, 2021 4 anos 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
Postado Janeiro 15, 2021 4 anos Autor 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 Editado Janeiro 15, 2021 4 anos por Breniinx (veja o histórico de edições)
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.