用户:YJH于YYDS查看:0 回复:3 评论:0 创建时间:2022-07-25T15:08:13
var adminsss = []
world.onChat(async ({ entity, message }) => {
if (entity.isPlayer) {
if (adminsss.includes(entity.player.name)) {
if (message == '特殊权限') { entity.player.directMessage('亲爱的创作人员你好!特殊功能包含变大、变小、还原大小、飞行、解除飞行、隐身、现身、隐藏名字、显示名字、幽灵、解除幽灵、发光、还原发光、反光、还原反光、变红色、变蓝色、变绿色、变紫色、变黄色、变浅蓝色、还原颜色、全部还原、禁言(例如:禁言+禁言者名字)、解除禁言(例如:解除禁言+被禁言者名字),提示(禁言和禁言者名字间要加一个空格)。') }
if (message == '变奥特曼') { entity.player.scale = 10; world.say(entity.player.name + '变大了') }
if (message == '变小') { entity.player.scale = 0.1; world.say(entity.player.name + '变小了') }
if (message == '还原大小') { entity.player.scale = 1; world.say(entity.player.name + '还原了大小') }
if (message == '飞行') { entity.player.canFly = true; world.say(entity.player.name + '开启了飞行模式') }
if (message == '解除飞行') { entity.player.canFly = false; world.say(entity.player.name + '关闭了飞行模式') }
if (message == '加速') {
entity.player.walkSpeed += 10000
entity.player.runSpeed += 1000
entity.player.flySpeed += 700
world.say(entity.player.name + '加速了')
}
if (message == '隐身') { entity.player.invisible = true; world.say(entity.player.name + '隐身') }
if (message == '现身') { entity.player.invisible = false; world.say(entity.player.name + '现身了') }
if (message == '隐藏名字') { entity.player.showName = false; world.say(entity.player.name + '隐藏了名字') }
if (message == '显示名字') { entity.player.showName = true; world.say(entity.player.name + '显示了名字') }
if (message == '幽灵') { entity.player.spectator = true; world.say(entity.player.name + '开启了幽灵模式') }
if (message == '解除幽灵') { entity.player.spectator = false; world.say(entity.player.name + '关闭了幽灵模式') }
if (message == '发光') { entity.player.emissive = 1; world.say(entity.player.name + '开启了发光效果') }
if (message == '还原发光') { entity.player.emissive = 0; world.say(entity.player.name + '还原了发光效果') }
if (message == '反光') { entity.player.shininess = 1; world.say(entity.player.name + '开启了反光效果') }
if (message == '还原反光') { entity.player.shininess = 0; world.say(entity.player.name + '还原了反光效果') }
if (message == '变红色') { entity.player.color.set(1, 0, 0); world.say(entity.player.name + '变成了红色') }
if (message == '变蓝色') { entity.player.color.set(0, 1, 0); world.say(entity.player.name + '变成了蓝色') }
if (message == '变绿色') { entity.player.color.set(0, 0, 1); world.say(entity.player.name + '变成了绿色') }
if (message == '变紫色') { entity.player.color.set(1, 1, 0); world.say(entity.player.name + '变成了紫色') }
if (message == '变黄色') { entity.player.color.set(1, 0, 1); world.say(entity.player.name + '变成了黄色') }
if (message == '变浅蓝色') { entity.player.color.set(0, 1, 1); world.say(entity.player.name + '变成了浅蓝色') }
if (message == '还原颜色') { entity.player.color.set(1, 1, 1); world.say(entity.player.name + '还原了颜色') }
if (message == '全部还原') {
entity.player.scale = 1
entity.player.canFly = false
entity.player.showName = true
entity.player.spectator = false
entity.player.emissive = 0
entity.player.shininess = 0
entity.player.color.set(1, 1, 1)
world.say(entity.player.name + '全部还原了')
}
if (message.startsWith('禁言')) {
if (message.slice(2) == entity.player.name) {
entity.player.directMessage('无法禁言自己,请重新尝试!')
} else {
world.querySelectorAll('player').forEach((x) => {
if (x.player.name == message.slice(2)) {
x.player.directMessage('你已被管喵禁言,请等待管喵解除')
world.say('有人犯了错,被管喵禁言了!')
x.player.muted = true
}
})
}
}
if (message.startsWith('进监狱')) {
if (message.slice(3) == entity.player.name) {
entity.player.directMessage('无法让自己进监狱,请重新尝试!')
} else {
world.querySelectorAll('player').forEach((x) => {
if (x.player.name == message.slice(3)) {
x.player.directMessage('管喵把你扔进监狱了!请好好反省!')
x.position.set(92, 13, 245)
world.say(`管喵把 ${x.player.name} 扔进监狱了! `)
}
})
}
}
if (message.startsWith('出监狱')) {
if (message.slice(3) == entity.player.name) {
entity.player.directMessage('无法让自己出狱,请重新尝试!')
} else {
world.querySelectorAll('player').forEach((x) => {
if (x.player.name == message.slice(3)) {
x.player.directMessage('你已被放出,请不要再违反规则')
x.position.set(99, 10, 230)
world.say(` ${x.player.name}出狱了! `)
}
})
}
}
if (message.startsWith('喵')) {
if (message.slice(4) == entity.player.name) {
entity.player.directMessage('无法干掉自己,请重新尝试!')
} else {
world.querySelectorAll('player').forEach((x) => {
if (x.player.name == message.slice(6)) {
world.say('有人被喵了!')
x.hurt(1000000)
world.say('管喵击杀了' + x.player.name)
}
})
}
}
if (message.startsWith('寻找')) {
if (message.slice(5) == entity.player.name) {
entity.player.directMessage('无法寻找自己,请重新尝试!')
} else {
world.querySelectorAll('player').forEach((x) => {
if (x.player.name == message.slice(6)) {
x.position.set(entity.position.x, entity.position.y, entity.position.z)
}
})
}
}
if (message.startsWith('解除禁言')) {
if (message.slice(6) == entity.player.name) {
entity.player.directMessage('无法解除禁言自己,请重新尝试!')
} else {
world.querySelectorAll('player').forEach((x) => {
if (x.player.name == message.slice(4)) {
x.player.directMessage('你已被管喵解除禁言')
world.say('有人被管喵解除禁言了!')
x.player.muted = false
}
})
}
}
if (message[0] == "$") {
if (adminsss.includes(entity.player.name)) {
try {
if (!message.slice(1).includes('delete Math')) {
var code = eval(message.slice(1));
world.say(`~>${code}`)
} else {
world.say('已禁止炸图')
}
}
catch (e) {
world.say(e)
}
}
}
}
}
})
world.onChat(({ entity, message }) => {//当有玩家在输入框发送消息
if (message === '复活') {//如果那名玩家输入的是 1
entity.hp = entity.maxHp
entity.position.x = 92
entity.position.y = 15
entity.position.z = 243
}
})
//格式:{'武器名称':['mesh/模型名称.vb', 伤害, 四元数], 武器名称':['mesh/模型名称.vb', 伤害, 四元数], 以此类推......}
var sword = { '脉冲太刀': ['mesh/3剑气.vb', 114514, new Box3Quaternion(0, 0, 0, 1)], '雪葬的星银': ['mesh/剑气_蓝.vb', 50, new Box3Quaternion(0, 0.5, 0, 1)], '木剑': ['mesh/破岩剑气.vb', 50000000000, new Box3Quaternion(0, 0, 0, 1)] }
function getValue(key, valueName) {
let keys = Object.keys(sword)
let values = Object.values(sword)
let index = (valueName == '模型名称') ? 0 : 1;
for (let i = 0; i <= keys.length - 1; i++) {
if (keys[i] == key) {
if (valueName == '模型名称') {
return values[i][0]
} else if (valueName == '伤害') {
return values[i][1]
} else if (valueName == '四元数') {
return values[i][2]
}
}
}
}
function radian(angle) {
return angle * (Math.PI / 180)
}
world.onPress(({ entity, button, raycast }) => {
if (button == Box3ButtonType.ACTION0) {
if (Object.keys(sword).includes(entity.hand)) {
if (!entity.player.sword_qi || entity.player.dead) { return }
var sword_qi = world.createEntity({
mesh: getValue(entity.hand, '模型名称'),
position: new Box3Vector3(entity.position.x + (raycast.direction.x * 3), entity.position.y + 0.2, entity.position.z + (raycast.direction.z * 3)),
meshScale: new Box3Vector3(0.05, 0.05, 0.05),
collides: true,
fixed: false,
gravity: false,
meshOrientation: getValue(entity.hand, '四元数').rotateY(Math.atan2(raycast.direction.z, raycast.direction.x))
})
sword_qi.owner = entity;
sword_qi.x = raycast.direction.x
sword_qi.z = raycast.direction.z
sword_qi.go = 10
sword_qi.damage = getValue(entity.hand, '伤害')
sword_qi.addTag('剑气')
sword_qi.name = entity.player.name
entity.player.sword_qi = false;
}
}
})
world.onTick(() => {
world.querySelectorAll('.剑气').forEach((entity) => {
if (entity.go > 5) {
if (!entity.velocity.y > 0.1) {
entity.velocity.x += entity.x / 5
entity.velocity.z += entity.z / 5
entity.go -= 1
} else {
entity.go = 0
}
} else if (entity.go <= 0) {
world.querySelectorAll('player').forEach((e) => {
if (e.player.name == entity.name) {
e.player.sword_qi = true;
}
})
entity.removeTag('剑气')
entity.destroy()
} else {
entity.velocity.x -= entity.x / 7
entity.velocity.z -= entity.z / 7
entity.go -= 1
}
})
if (monster <= 19) {
var m = world.createEntity({//创建一个新实体,并把这个实体赋值给变量m方便以后操作
mesh: 'mesh/圣诞雪人.vb',//模型名称
position: new Box3Vector3(randint(229, 251, false), 11, randint(3, 44, false)),//位置,randint()是我写的函数,可以生成一个指定大小的随机数,前两个参数是最小和最大值,最后一个值是是否将随机数四舍五入,new Box3Vector3()中填3个数,分别是xyz
collides: true,//是否开启碰撞
fixed: false,//位置是否固定
meshScale: new Box3Vector3(0.05, 0.05, 0.05),//模型大小。默认0.05, 0.05, 0.05
enableInteract: true,//是否开启互动
interactHint: '雪人',//互动上写的字
interactRadius: 3//互动的距离
})
m.onEntityContact(({ other }) => {//当实体产生碰撞时(other是与之碰撞的实体)
other.isPlayer ? other.hurt(50) : null//三目运算符,这个有点复杂,我把与之相同的代码写在下面
/*
if(other.isPlayer){
other.hurt(50)
}
*/
})
m.hp = 300;//实体的hp
m.maxHp = 300;//实体的最大hp
m.enableDamage = true;//实体是否可以扣血
m.addTag('可被攻击')//给实体添加“可被攻击的标签”
m.addTag('小雪人')//给实体添加小雪人的标签
monster += 1;//小雪人数量增加100000
}
})
world.onEntityContact(({ entity, other }) => {
if (entity.hasTag('剑气')) {
if (other.hasTag('剑气')) {
world.querySelectorAll('player').forEach((e) => {
if (e.player.name == other.name) {
e.player.sword_qi = true;
}
})
other.removeTag('剑气')
other.destroy()
} else {
if (other.hasTag('可被攻击')) {
other.hurt(entity.damage, { attacker: entity.owner })
}
}
world.querySelectorAll('player').forEach((e) => {
if (e.player.name == entity.name) {
e.player.sword_qi = true;
}
})
entity.removeTag('剑气')
entity.destroy()
}
if (entity.hasTag('小雪人')) {
if (other.isPlayer) {
world.querySelectorAll('player').forEach((e) => {
if (e.player.name == entity.name) {
other.hurt(50, { attacker: e })
}
})
}
}
})
world.onPlayerJoin(({ entity }) => {
entity.exp = 0;
})
world.onDie(async ({ entity, attacker }) => {
if (entity.isPlayer) {
for (let i = 5; i >= 1; i--) {
entity.player.directMessage('你喵了……复活剩余时间:' + i + '秒')
await sleep(1000)
}
entity.player.forceRespawn()
} else {
if (entity.hasTag('小雪人')) {
monster -= 1;
attacker.exp += 50;
attacker.player.directMessage(`你击杀了小雪人,获得了50经验!`)
entity.destroy();
}
}
})
world.onPlayerJoin(({ entity }) => {
entity.player.message1 = "";
entity.enableDamage = true
entity.player.interactTimes = 0;
entity.enableInteract = true;
entity.interactRadius = 3;
entity.interactHint = "与 " + entity.player.name + " 互动";
entity.onInteract(async ({ entity, targetEntity }) => {
const result = await entity.player.dialog({
type: Box3DialogType.SELECT,
title: targetEntity.player.name,
content: `和 ${targetEntity.player.name} 互动?`,
options: ['和TA私聊', '查看TA的信息', '赠送', '发起挑战'], // 将提供玩家选择的选项放入数组里。
})
// 如果玩家点击了屏幕其他区域,取消了对话框。
if (!result || result === null) {
entity.player.directMessage('取消互动');
return;
}
if (result.index == 0) {
const dialog = await entity.player.dialog({
type: Box3DialogType.INPUT,
title: "向 " + targetEntity.player.name + " 发送私聊",
content: `${entity.player.name},请输入私聊内容`,
confirmText: '发送', // 确定按钮上面的文字。按下确定按钮后,提交回答。
placeholder: '请输入私聊内容', // 输入框背景上的提示文字。
});
targetEntity.player.message1 = dialog;
targetEntity.player.directMessage('收到 ' + entity.player.name + ' 向你发送的私聊信息,正在打开查看……')
await sleep(2000);
targetEntity.player.directMessage('正在查收 ' + entity.player.name + " 发送的私聊信息")
entity.player.directMessage('对方已收到聊天信息')
if (dialog) {
const dialog = targetEntity.player.dialog({
type: Box3DialogType.TEXT,
title: entity.player.name, // 对话框标题。通常对应是讲话人的名字。
content: targetEntity.player.message1, // 对话框内容。也就是对话正在讲什么。
});
}
}
})
})
Box喵layer.prototype.graduallyText = function (content/*文本*/, time/*浮动时间*/, property = {}/*其他参数,如title*/) {
const interval = time / content.length;
for (let i = 0; i < content.length; i++) {
const result = this.dialog(Object.assign(property, {
type: Box3DialogType.TEXT,
content: content.substring(0, i + 1),
}))
if (i < content.length - 1) {
setTimeout(result.cancel, interval * (i + 1));
}
}
}
//使用例子
world.onPlayerJoin(({ entity }) => {
entity.player.graduallyText('欢迎来到善恶大陆,下面我将为您讲解善恶之规。', 1000);
})
angle = 0;
world.onTick(() => {
world.querySelectorAll(".法阵").forEach((entity) => {
entity.meshOrientation.x = Math.sin(angle * 180 / Math.PI);
})
angle += 0.0002;
});
const dn = world.querySelector('#xuan.Chei的天眼');
dn.enableInteract = true;
dn.interactRadius = 3;
dn.interactHint = "xuan.Chei的天眼";
dn.onInteract(async ({ entity, targetEntity }) => {
let sel = await entity.player.dialog({
title: '监控',
type: Box3DialogType.SELECT,
content: '选择监视的地方',
options: ['黄色', '蓝色', '红色', '绿色', '白色', '黑色', '退出']
})
if (sel) {
// 初始化相机参数
const lookTarget = new Box3Vector3(0, 0, 0)
const lookEye = new Box3Vector3(0, 0, 0)
const lookUp = new Box3Vector3(0, 1, 0)
// 根据选择的颜色,将lookTarget设置为所看颜色面的中心点坐标
// 并将lookEye沿着视线拉远距离
// z轴视线
if (sel.value == '黄色') {
lookTarget.set(60, 60, 50)
lookEye.set(60, 60, 180)
}
// z轴视线
if (sel.value == '蓝色') {
lookTarget.set(60, 60, 50)
lookEye.set(60, 60, -60)
}
// x轴视线
if (sel.value == '红色') {
lookTarget.set(50, 60, 60)
lookEye.set(180, 60, 60)
}
// x轴视线
if (sel.value == '绿色') {
lookTarget.set(50, 60, 60)
lookEye.set(-60, 60, 60)
}
// y轴视线俯视
if (sel.value == '白色') {
lookTarget.set(60, 70, 60)
lookEye.set(60, 150, 60)
// 相机lookUp与相机视线方向不能平行,需修改为(1,0,0)或者(0,0,1)
lookUp.set(1, 0, 0)
}
// y轴视线仰视
if (sel.value == '黑色') {
lookTarget.set(60, 70, 60)
lookEye.set(60, 10, 60)
// 相机lookUp与相机视线方向不能平行,需修改为(1,0,0)或者(0,0,1)
lookUp.set(0, 0, 1)
}
if (sel.value == '退出') {
// 用户选择退出,则退出选择界面
loop = false
} else {
// 使用用户选择所对应的参数来设置相机,并弹出对话框
await entity.player.dialog({
type: Box3DialogType.TEXT,
content: `看向${sel.value}面`,
lookEye: lookEye,
lookTarget: lookTarget,
lookUp: lookUp
})
}
}
})
for (const e of world.querySelectorAll('.金币')) { //遍历每一个废品实体
e.enableInteract = true //开启交互
e.interactRadius = 2.5 //交互范围
e.interactHint = e.tags() //交互提示文本显示标签名
e.interactColor.set(0, 1, 0) //交互提示文本设为绿色设为绿
e.onInteract(({ entity }) => {
entity.money += 喵0000000000 //累加废品
//跟world.say相似, 但只对指定的玩家显示信息而不是对所有玩家广播
entity.player.directMessage(`${entity.player.name} 获得喵0000000000个Q金币`)
})
}
console.clear()
for (const e of world.querySelectorAll('.法阵')) { //遍历每一个废品实体
e.enableInteract = true //开启交互
e.interactRadius = 2.5 //交互范围
e.interactHint = e.tags() //交互提示文本显示标签名
e.interactColor.set(0, 1, 0) //交互提示文本设为绿色
e.onInteract(({ entity }) => {
entity.exp += 喵0000000000 //累加废品
//跟world.say相似, 但只对指定的玩家显示信息而不是对所有玩家广播
entity.player.directMessage(`${entity.player.name} 获得喵0000000000经验值`)
})
}
world.onPlayerJoin(({ entity }) => {
entity.mucai = 0
world.onClick(async ({ entity, clicker }) => {
if (entity.hasTag('树')) {
world.say('砍树中')
entity.enableDamage = true
entity.hurt(5)
if (entity.hp <= 0) {
entity.mucai += 5
world.say('获得5木材')
entity.meshInvisible = true
await sleep(3000)
entity.hp = 100
entity.meshInvisible = false
}
entity.enableDamage = false
}
})
})
function randint(min, max, round) {
if (round) {
return Math.round(min + Math.random() * (max - min))
} else {
return min + Math.random() * (max - min)
}
}
world.onTick(() => {
world.querySelectorAll('.剑气').forEach((entity) => {
if (entity.go > 5) {
if (!entity.velocity.y > 0.1) {
entity.velocity.x += entity.x / 5
entity.velocity.z += entity.z / 5
entity.go -= 1
} else {
entity.go = 0
}
} else if (entity.go <= 0) {
world.querySelectorAll('player').forEach((e) => {
if (e.player.name == entity.name) {
e.player.sword_qi = true;
}
})
entity.removeTag('剑气')
entity.destroy()
} else {
entity.velocity.x -= entity.x / 7
entity.velocity.z -= entity.z / 7
entity.go -= 1
}
})
if (monster <= 19) {
var m = world.createEntity({//创建一个新实体,并把这个实体赋值给变量m方便以后操作
mesh: 'mesh/大白鲨(鲨鱼).vb',//模型名称
position: new Box3Vector3(randint(230, 252, false), 11, randint(50, 83, false)),//位置,randint()是我写的函数,可以生成一个指定大小的随机数,前两个参数是最小和最大值,最后一个值是是否将随机数四舍五入,new Box3Vector3()中填3个数,分别是xyz
collides: true,//是否开启碰撞
fixed: false,//位置是否固定
meshScale: new Box3Vector3(0.07, 0.07, 0.07),//模型大小。默认0.05, 0.05, 0.05
enableInteract: true,//是否开启互动
interactHint: '大白鲨',//互动上写的字
interactRadius: 3//互动的距离
})
m.onEntityContact(({ other }) => {//当实体产生碰撞时(other是与之碰撞的实体)
other.isPlayer ? other.hurt(100) : null//三目运算符,这个有点复杂,我把与之相同的代码写在下面
/*
if(other.isPlayer){
other.hurt(50)
}
*/
})
m.hp = 600;//实体的hp
m.maxHp = 600;//实体的最大hp
m.enableDamage = true;//实体是否可以扣血
m.addTag('可被攻击')//给实体添加“可被攻击的标签”
m.addTag('大白鲨')//给实体添加小雪人的标签
monster += 1;//小雪人数量增加100000
}
})
world.onEntityContact(({ entity, other }) => {
if (entity.hasTag('剑气')) {
if (other.hasTag('剑气')) {
world.querySelectorAll('player').forEach((e) => {
if (e.player.name == other.name) {
e.player.sword_qi = true;
}
})
other.removeTag('剑气')
other.destroy()
} else {
if (other.hasTag('可被攻击')) {
other.hurt(entity.damage, { attacker: entity.owner })
}
}
world.querySelectorAll('player').forEach((e) => {
if (e.player.name == entity.name) {
e.player.sword_qi = true;
}
})
entity.removeTag('剑气')
entity.destroy()
}
if (entity.hasTag('大白鲨(鲨鱼)')) {
if (other.isPlayer) {
world.querySelectorAll('player').forEach((e) => {
if (e.player.name == entity.name) {
other.hurt(100, { attacker: e })
}
})
}
}
})
world.onDie(async ({ entity, attacker }) => {
if (entity.isPlayer) {
} else {
if (entity.hasTag('大白鲨')) {
monster -= 1;
attacker.exp += 100;
attacker.player.directMessage(`你击杀了大白鲨,获得了100经验!`)
entity.destroy();
}
}
})
function randint(min, max, round) {
if (round) {
return Math.round(min + Math.random() * (max - min))
} else {
return min + Math.random() * (max - min)
}
}
world.onTick(({ }) => {
world.querySelectorAll('.剑气').forEach((entity) => {
if (entity.go > 5) {
if (!entity.velocity.y > 0.1) {
entity.velocity.x += entity.x / 5
entity.velocity.z += entity.z / 5
entity.go -= 1
} else {
entity.go = 0
}
} else if (entity.go <= 0) {
world.querySelectorAll('player').forEach((e) => {
if (e.player.name == entity.name) {
e.player.sword_qi = true;
}
})
entity.removeTag('剑气')
entity.destroy()
} else {
entity.velocity.x -= entity.x / 7
entity.velocity.z -= entity.z / 7
entity.go -= 1
}
})
if (monster <= 30) {
var m = world.createEntity({//创建一个新实体,并把这个实体赋值给变量m方便以后操作
mesh: 'mesh/喵_火史莱姆.vb',//模型名称
position: new Box3Vector3(randint(230, 252, false), 11, randint(88, 124, false)),//位置,randint()是我写的函数,可以生成一个指定大小的随机数,前两个参数是最小和最大值,最后一个值是是否将随机数四舍五入,new Box3Vector3()中填3个数,分别是xyz
collides: true,//是否开启碰撞
fixed: false,//位置是否固定
meshScale: new Box3Vector3(0.07, 0.07, 0.07),//模型大小。默认0.05, 0.05, 0.05
enableInteract: true,//是否开启互动
interactHint: '火史莱姆',//互动上写的字
interactRadius: 3//互动的距离
})
m.onEntityContact(({ other }) => {//当实体产生碰撞时(other是与之碰撞的实体)
other.isPlayer ? other.hurt(200) : null//三目运算符,这个有点复杂,我把与之相同的代码写在下面
/*
if(other.isPlayer){
other.hurt(50)
}
*/
})
m.hp = 1000;//实体的hp
m.maxHp = 1000;//实体的最大hp
m.enableDamage = true;//实体是否可以扣血
m.addTag('可被攻击')//给实体添加“可被攻击的标签”
m.addTag('火史莱姆')//给实体添加小雪人的标签
monster += 1;//小雪人数量增喵
})
world.onEntityContact(({ entity, other }) => {
if (entity.hasTag('剑气')) {
if (other.hasTag('剑气')) {
world.querySelectorAll('player').forEach((e) => {
if (e.player.name == other.name) {
e.player.sword_qi = true;
}
})
other.removeTag('剑气')
other.destroy()
} else {
if (other.hasTag('可被攻击')) {
other.hurt(entity.damage, { attacker: entity.owner })
}
}
world.querySelectorAll('player').forEach((e) => {
if (e.player.name == entity.name) {
e.player.sword_qi = true;
}
})
entity.removeTag('剑气')
entity.destroy()
}
if (entity.hasTag('火史莱姆')) {
if (other.isPlayer) {
world.querySelectorAll('player').forEach((e) => {
if (e.player.name == entity.name) {
other.hurt(200, { attacker: e })
}
})
}
}
})
world.onDie(async ({ entity, attacker }) => {
if (entity.isPlayer) {
} else {
if (entity.hasTag('火史莱姆')) {
monster -= 1;
attacker.exp += 400;
attacker.player.directMessage(`你击杀了火史莱姆,获得了400经验!`)
entity.destroy();
}
}
})
const things1 = [//奖励栏(((
'钻石剑', '万年魂环', '冰鞋', '冬极白星'//奖品自己加
]
const choujiang1 = world.querySelector('#低级幸运盲盒抽奖机');
choujiang1.enableInteract = true;
choujiang1.interactRadius = 5;
choujiang1.interactHint = "低级抽奖机";
choujiang1.onInteract(async ({ entity }) => {
if (entity.item.includes('低级抽奖券')) {
var select = await entity.player.dialog({
type: 'select',
title: '低级抽奖机',
content: '请问是否抽奖',
options: ['确定', '取消']
})
if (!select || select.index == null) return;
if (select.index == 0) {
var range = things1[Math.floor(Math.random() * things1.length)];
if (range != "你什么都没抽到") {
entity.player.directMessage('你获得了' + range + '~')
// textDlg(entity,'抽奖机','你获得了'+range)
entity.item.push(range);
}
else {
entity.player.directMessage('你什么都没抽到~')
// textDlg(entity,'抽奖机','你什么都没抽到')
}
entity.item.splice(entity.item.indexOf('低级抽奖券'), 1);
}
}
else {
entity.player.directMessage('你没有低级抽奖券~')
//textDlg(entity,'抽奖机','你没有抽奖券~')
}
})
const cj = world.querySelector('#抽奖卷商人');
cj.enableInteract = true;
cj.interactRadius = 3;
cj.interactHint = "抽奖卷商人";
cj.onInteract(async ({ entity, targetEntity }) => {
if (entity.hp === 0) return;
var orientation = new Box3Quaternion(0, 0, 0, 1).rotateY(Math.atan2(entity.position.z - targetEntity.position.z, entity.position.x - targetEntity.position.x) + Math.PI / 2);
targetEntity.meshOrientation.copy(orientation);
var selectShop = await entity.player.dialog({
type: 'select',
title: '装备店',
content: '请选择你要购买的装备',
options: ["1张低级抽奖卷—1000金币", "1张中级抽奖卷—10000金币", "1张高级抽奖卷—100000金币", "1张神级抽奖卷—1000000金币"]
})
if (!selectShop || selectShop.index == null) return;
var returnv;
switch (selectShop.index) {
case 0:
if (entity.item.length < 1000) {
returnv = await selectReturn(entity, selectShop.value, 1000);
if (returnv == false) return;
entity.money -= 1000;
entity.item.push("低级抽奖券");
return;
} else {
entity.player.dialog({
type: Box3DialogType.TEXT,
title: null,
content: '背包满了…'
});
}
break;
case 1:
if (entity.item.length < 10000) {
returnv = await selectReturn(entity, selectShop.value, 10000);
if (returnv == false) return;
entity.money -= 10000;
entity.item.push("中级抽奖券");
return;
} else {
entity.player.dialog({
type: Box3DialogType.TEXT,
title: null,
content: '背包满了…'
});
}
break;
case 2:
if (entity.item.length < 100000) {
returnv = await selectReturn(entity, selectShop.value, 100000);
if (returnv == false) return;
entity.money -= 100000;
entity.item.push("高级抽奖券");
return;
} else {
entity.player.dialog({
type: Box3DialogType.TEXT,
title: null,
content: '背包满了…'
});
}
break;
case 3:
if (entity.item.length < 1000000) {
returnv = await selectReturn(entity, selectShop.value, 1000000);
if (returnv == false) return;
entity.money -= 1000000;
entity.item.push("神级抽奖券");
return;
} else {
entity.player.dialog({
type: Box3DialogType.TEXT,
title: null,
content: '背包满了…'
});
}
break;
}
})
async function selectReturn(player, value, mon) {
var name = value.slice(0, value.indexOf(":"));
var select = await player.player.dialog({
type: 'select',
title: name,
content: '请问是否购买' + name + '?',
options: ["购买", "取消"]
})
if (!select || select.index == null) return false;
if (select.index == 0 && player.money >= mon) {
player.player.dialog({
type: 'text',
content: '购买成功~'
})
return true;
}
if (select.index == 1) {
return false;
}
if (select.index == 0 && player.money < mon) {
player.player.dialog({
type: 'text',
content: '你的金币不够~或背包满了~'
})
return false;
}
}
const things2 = [//奖励栏(((
'钻石剑', '万年魂环', '冰鞋', '冬极白星'//奖品自己加
]
const choujiang2 = world.querySelector('#中级幸运盲盒抽奖机');
choujiang2.enableInteract = true;
choujiang2.interactRadius = 5;
choujiang2.interactHint = "中级抽奖机";
choujiang2.onInteract(async ({ entity }) => {
if (entity.item.includes('中级抽奖券')) {
var select = await entity.player.dialog({
type: 'select',
title: '中级抽奖机',
content: '请问是否抽奖',
options: ['确定', '取消']
})
if (!select || select.index == null) return;
if (select.index == 0) {
var range = things2[Math.floor(Math.random() * things2.length)];
if (range != "你什么都没抽到") {
entity.player.directMessage('你获得了' + range + '~')
// textDlg(entity,'抽奖机','你获得了'+range)
entity.item.push(range);
}
else {
entity.player.directMessage('你什么都没抽到~')
// textDlg(entity,'抽奖机','你什么都没抽到')
}
entity.item.splice(entity.item.indexOf('中级抽奖券'), 1);
}
}
else {
entity.player.directMessage('你没有中级抽奖券~')
//textDlg(entity,'抽奖机','你没有抽奖券~')
}
})
const things3 = [//奖励栏(((
'钻石剑', '万年魂环', '冰鞋', '冬极白星'//奖品自己加
]
const choujiang3 = world.querySelector('#高级幸运盲盒抽奖机');
choujiang3.enableInteract = true;
choujiang3.interactRadius = 5;
choujiang3.interactHint = "高级抽奖机";
choujiang3.onInteract(async ({ entity }) => {
if (entity.item.includes('高级抽奖券')) {
var select = await entity.player.dialog({
type: 'select',
title: '高级抽奖机',
content: '请问是否抽奖',
options: ['确定', '取消']
})
if (!select || select.index == null) return;
if (select.index == 0) {
var range = things3[Math.floor(Math.random() * things3.length)];
if (range != "你什么都没抽到") {
entity.player.directMessage('你获得了' + range + '~')
// textDlg(entity,'抽奖机','你获得了'+range)
entity.item.push(range);
}
else {
entity.player.directMessage('你什么都没抽到~')
// textDlg(entity,'抽奖机','你什么都没抽到')
}
entity.item.splice(entity.item.indexOf('高级抽奖券'), 1);
}
}
else {
entity.player.directMessage('你没有高级抽奖券~')
//textDlg(entity,'抽奖机','你没有抽奖券~')
}
})
const things4 = [//奖励栏(((
'雪葬的星银', '薪炎大剑', '天火大剑', '冬极白星', '薙喵之稻光', '真理之钥'//奖品自己加
]
const choujiang4 = world.querySelector('#神级幸运盲盒抽奖机');
choujiang4.enableInteract = true;
choujiang4.interactRadius = 5;
choujiang4.interactHint = "神级抽奖机";
choujiang4.onInteract(async ({ entity }) => {
if (entity.item.includes('神级抽奖券')) {
var select = await entity.player.dialog({
type: 'select',
title: '神级抽奖机',
content: '请问是否抽奖',
options: ['确定', '取消']
})
if (!select || select.index == null) return;
if (select.index == 0) {
var range = things4[Math.floor(Math.random() * things4.length)];
if (range != "你什么都没抽到") {
entity.player.directMessage('你获得了' + range + '~')
// textDlg(entity,'抽奖机','你获得了'+range)
entity.item.push(range);
}
else {
entity.player.directMessage('你什么都没抽到~')
// textDlg(entity,'抽奖机','你什么都没抽到')
}
entity.item.splice(entity.item.indexOf('神级抽奖券'), 1);
}
}
else {
entity.player.directMessage('你没有神级抽奖券~')
//textDlg(entity,'抽奖机','你没有抽奖券~')
}
})