|
本帖最后由 治不起脑瘫的兲 于 2021-8-16 23:02 编辑
闲着没事干玩服务器的时候看到别的服有自定义等级插件
然后又闲着没事干想用脚本做一下看看
获得经验后的提示自己看着改改 我懒得弄得那么好康了
这是作者的第一个1.12.2的脚本
制作过程中由于酱油大佬的教程里面有个地方有点问题还浪费了很多时间研究经验值与等级互转(
没有已知bug 有bug记得找作者!!!
用的是timer 如果有冲突记得改id(id:114514) 由于是第一次不知道有什么更好的
最好是给作者说一下1.12.2的监听怎么用 直接改成监听版本的效果会更好
粘贴至 Player 中
主要效果:
1,自定义每级需要的经验
2,没了
彳亍了 不罗嗦了 上代码- var LvneedExp = new Array();
- //在这里设置每级需要经验
- LvneedExp[0] = 100;//0级
- for (var i = 1; i < 10; i++) {//1-10级
- LvneedExp[i] = LvneedExp[i - 1] + 10;
- }
- for (var i = 10; i < 20; i++) {//11-20级
- LvneedExp[i] = LvneedExp[i - 1] + 20;
- }
- for (var i = 20; i < 30; i++) {//21-30级
- LvneedExp[i] = LvneedExp[i - 1] + 100;
- }
- for (var i = 30; i < 40; i++) {
- LvneedExp[i] = LvneedExp[i - 1] + 200;
- }
- for (var i = 40; i < 50; i++) {
- LvneedExp[i] = LvneedExp[i - 1] + 300;
- }
- for (var i = 50; i < 60; i++) {
- LvneedExp[i] = LvneedExp[i - 1] + 500;
- }
- for (var i = 60; i < 70; i++) {
- LvneedExp[i] = LvneedExp[i - 1] + 500;
- }
- for (var i = 70; i < 80; i++) {
- LvneedExp[i] = LvneedExp[i - 1] + 500;
- }
- for (var i = 80; i < 90; i++) {
- LvneedExp[i] = LvneedExp[i - 1] + 1000;
- }
- for (var i = 90; i < 95; i++) {
- LvneedExp[i] = LvneedExp[i - 1] + 10000;
- }
- for (var i = 95; i < 99; i++) {
- LvneedExp[i] = LvneedExp[i - 1] + 50000;
- }
- for (var i = 10; i < 99; i += 10) {
- LvneedExp[i] = 9999999999;
- }
- LvneedExp[99] = 9999999999;
- function init(event) {
- event.player.timers.forceStart(114514, 1, true);
- }
- function timer(e) {
- if (e.id == 114514) {
- var player = e.player;
- var storeddata = player.getStoreddata();
- if (!storeddata.has("displayExp")) {//玩家真实经验条经验值
- storeddata.put("displayExp", 0);
- }
- if (!storeddata.has("trueExp")) {//修改每级需要经验后的经验值
- storeddata.put("trueExp", 0);
- }
- if (!storeddata.has("trueLv")) {//修改每级需要经验后的等级
- storeddata.put("trueLv", 0);
- }
- if (storeddata.get("displayExp") < getEXP(player)) {//如果玩家经验增加了执行假经验事件函数
- FAKEgetExpEvent(player, getEXP(player) - storeddata.get("displayExp"), e);
- storeddata.put("displayExp", getEXP(player));
- }
- }
- }
- function FAKEgetExpEvent(player, vault, e) {
- var storeddata = player.getStoreddata();
- var exp = storeddata.get("trueExp");//获取当前经验
- var lvl = storeddata.get("trueLv");//获取当前等级
- storeddata.put("trueExp", exp + vault);//给玩家增加经验
- exp = storeddata.get("trueExp");
- if (exp >= LvneedExp[lvl]) {//达到升级条件
- while (exp >= LvneedExp[lvl]) {
- exp -= LvneedExp[lvl];
- lvl++;
- }
- storeddata.put("trueExp", exp);
- storeddata.put("trueLv", lvl);
- }
- player.setExpLevel(-1);
- player.setExpLevel(lvl);//修改玩家经验条经验
- var num = (exp / 1.0) / (LvneedExp[lvl] / 1.0);
- player.getMCEntity().func_71023_q(Math.floor(player.getMCEntity().func_71050_bK() * num));//给予玩家经验
- sendActionbar(player, exp + "/" + LvneedExp[lvl] + "[lv" + lvl + "]");
- }
- function sendActionbar(player, message) {
- title(player, "ACTIONBAR", "[{"text":"" + message + ""}]", 1, 3, 1);
- }
- function getEXP(player) {//获取玩家当前经验值
- return player.getMCEntity().field_71067_cb;
- }
- /*
- function ExptoLevel(exp) {//经验值转等级
- switch (true) {
- case exp <= 315:
- return Math.floor(Math.sqrt((exp + 9)) - 3.0);
- case exp <= 1395:
- return Math.floor(Math.sqrt((40 * exp - 7839)) / 10.0 + 8.1);
- case 1:
- return Math.floor((Math.sqrt((72 * exp - 54215)) + 325.0) / 18.0);
- }
- }
- function LeveltoExp(level) {//等级转经验值
- switch (true) {
- case level <= 16:
- return Math.pow(level, 2) + 6 * level;
- case level <= 31:
- return 2.5 * Math.pow(level, 2) + 40.5 * level;
- case level >= 32:
- return 4.5 * Math.pow(level, 2) + 162.5 * level;
- }
- }*/
- function sendActionbar(player, message) {
- title(player, "ACTIONBAR", "[{"text":"" + message + ""}]", 1, 3, 1);
- }
- function title(player, type, message, fadeIn, display, fadeOut) {
- var SPacketTitle = Java.type("net.minecraft.network.play.server.SPacketTitle");
- var IPlayer = Java.type("noppes.npcs.api.entity.IPlayer");
- var EntityPlayerMP = Java.type("net.minecraft.entity.player.EntityPlayerMP");
- var SPacketTitle = Java.type("net.minecraft.network.play.server.SPacketTitle");
- var ITextComponent = Java.type("net.minecraft.util.text.ITextComponent");
- if (player instanceof IPlayer) {
- player = player.getMCEntity();
- } else if (!(player instanceof EntityPlayerMP)) {
- throw "player必须为 实例化[IPlayer]或[EntityPlayerMP]";
- }
- if (message != null && !(message instanceof ITextComponent)) {
- message = ITextComponent.Serializer.func_150699_a(message);
- }
- var packet = new SPacketTitle(SPacketTitle.Type.func_179969_a(type), message, fadeIn, display, fadeOut);
- player.field_71135_a.func_147359_a(packet);
- }
复制代码
|
评分
-
查看全部评分
|