LP编辑器-使用手册
LP编辑器 (opens new window)
LP社区 (opens new window)
LP官网 (opens new window)
LP编辑器 (opens new window)
LP社区 (opens new window)
LP官网 (opens new window)
  • 初章

    • LP编辑器
    • 创建新项目
    • 基本设置
    • 发布作品
  • 编辑器界面

    • 界面总览
    • 工具模块
    • 游戏界面
    • 调试区域
  • 基本概念

    • 模块
    • 属性
    • 公式
    • 组合属性
    • 自动增加属性
    • 属性转化【需求、花费、获得】
    • 场景与控件
    • 字符串与图标
    • 深入理解控件
    • 自定义控件
    • 事件系统
    • 表格
    • 聊天与排行
    • 重置功能
    • 其他概念
    • 脚本系统
      • 脚本系统简介
      • 调试
        • 前置需求脚本
        • 需求脚本
        • 触发前脚本、触发后脚本
        • 基础教程
      • player类
        • getPro
        • setPro
        • getComPro
        • getEventEnabled
        • setEventEnabled
        • getTable
        • getString
      • objects类
        • getObject
        • delObject
        • newObject
        • getObjectsByFilter
      • tools类
        • setItemStyle
        • getItemStyle
        • setDefaultItemStyle
        • setGlobalStyle
        • getGlobalStyle
        • setDefaultGlobalStyle
        • savePlayerDataToCloud
        • playAudio
        • pauseAudio
        • playBackgroundAudio
        • pauseBackgroundAudio
        • getLocalData
        • setLocalData
        • getTempData
        • setTempData
        • sendHttpRequest
        • showToast
        • showNotify
        • showDialog
        • kwargs.objID
        • postMessage
        • clearMessage
        • getOnlinePro
        • setOnlinePro
        • patchOnlinePro
        • addOnlinePro
    • 模板功能
    • 商店插件
    • 邮件插件
    • 成就插件
    • 地图插件
  • 对象系统

    • 类与对象
    • 对象与控件
    • 对象筛选器
  • AI系统

    • 什么是AI
    • 编辑器AI功能
    • 控件发送提示词
    • AI冒险插件
  • 催更力教程

    • 什么是催更力
  • 初级制作教程

    • 点击增加属性效果
    • 动态控制属性上限
    • 自动增加属性效果
    • 初级弹窗制作
    • 小和尚敲木鱼
  • 高级制作教程

    • 让玩家选择属性效果
    • 离线事件获取与兑换
    • 挂机类RPG游戏制作
  • 编辑器教程
  • 基本概念
lpengine
2022-12-04
目录

脚本系统

# 脚本系统简介

脚本系统为LP编辑器的一个额外的组成部分,主要面向高级的开发者,提供一些方便的接口,使得能够实现更加复杂的功能。尽管LP编辑器提供了脚本功能,但是普通的编辑方式仍然是最推荐的方式。

具体来说你可以对控件和事件添加脚本,脚本分为4种。

  1. 前置需求脚本(属性只读)
  2. 需求脚本
  3. 触发前脚本
  4. 触发后脚本

# 调试

你可以直接运行并调试你的代码(相当于在游戏中执行一次代码),在右侧可以看到日志。

另外打开预览测试服的开关还可以看到实时效果。

# 前置需求脚本

前置需求脚本为控件和事件触发的前置条件,与普通编辑中的需求属性概念相同。该脚本在控件和事件的最前面执行,如果脚本返回false,则控件和事件不会被触发。如果是控件,还会影响控件的显示。

注意

不推荐设置前置需求脚本,因为前置需求脚本的运行环境与其他三个不同,因此只能做属性的只读操作。且缺少很多接口。

# 需求脚本

与前置需求脚本类似,但是不影响控件的显示。只在控件和事件触发前,做一层判断,如果返回了一个非空值,则不会触发控件和事件。类似事件中的触发需求属性。如果是控件,则会在顶部弹窗显示返回的内容。类似需求不足时的橙色弹窗

# 触发前脚本、触发后脚本

当控件或事件成功通过所有判断后,最先执行的为触发前脚本。具体顺序为

触发前脚本 ---> LP编辑器中的消耗属性 ---> 触发后脚本 ---> LP编辑器中的获得属性

# 基础教程

LP编辑器制作的游戏,运行环境为浏览器,因此脚本系统采用JavaScript语言。关于JavaScript语言的教程,可以参考MDN。

这里暂时不做过多的介绍,具体可以看后面出的视频教程(还没出)

LP编辑器中的所有脚本,最后都会被封装为一个函数,并且提供一些固定的参数。这些参数可以在脚本中使用,也可以不使用。

提示

原理:所有脚本都是经过 new Function("参数", script) 后执行。

# player类

palyer对象主要用于写入和读取玩家属性,以及一些全局性控制的操作

可以直接键入 player. 即可看到教程

名称 类型 简介
getPro 方法 获取玩家属性
setPro 方法 设置玩家属性
getComPro 方法 获取玩家组合属性
getEventEnabled 方法 获取指定事件的开启/关闭状态
setEventEnabled 方法 获取指定某事件的开启/关闭状态
getTable 方法 获取表格数据
getString 方法 获取动态字符串最终的字符串

# getPro

方法,获取玩家的属性。

参数 说明
name 属性名或属性ID
返回 返回指定属性名字,若参数错误则返回为false。

举例

player.getPro("铁矿石") //获得属性【铁矿石】的值
player.getPro("xo3noz") //xo3noz为铁矿石ID,获取【铁矿石】的值

# setPro

方法,设置玩家的属性。

参数 说明
name 属性名或属性ID
value 需要设置的值,必须为数值类型
返回 true 设置成功 false 设置失败

举例

player.setPro("铁矿石",1) //设置【铁矿石】属性的值为1
player.setPro("xo3noz",1) //xo3noz为铁矿石ID,设置【铁矿石】属性的值为1

# getComPro

方法,获取玩家的组合属性。

参数 说明
name 属性名或属性ID
返回 返回指定组合属性值,若参数错误则返回false。

举例

player.getComPro("铁矿石上限") //获得【铁矿石上限】组合属性的值

# getEventEnabled

方法,获取指定事件是否启用。

参数 说明
name 事件名或事件ID(你并不能获得事件ID)
返回 ture 指定事件处于开启状态
flase 指定事件处于关闭状态
若参数错误则返回为空

举例

player.getEventEnabled("资源获取")  //查询【资源获取】事件是否开启

# setEventEnabled

方法,设置指定事件是否启用。

参数 说明
name 事件名或事件ID(你并不能获得事件ID)
bool 布尔值
true 开启事件
flase 关闭
返回值 无返回

举例

player.setEventEnabled("资源获取", true)  //【资源获取】事件开启运行

# getTable

方法,获取对应表格

参数 说明
id 表格名字或ID
返回值 表格对象

举例

let table = player.getTable("我的表格") // 获取表格
table.setData("行名/序号", "列名/序号", "值") 
console.log(table.getData("行名/序号", "列名/序号"))  // 获取和设置表格的数据必须通过setData和getData,否则无法保存。
console.log(table.dataType)
console.log(table.tableType)
console.log(table.rowNames)
console.log(table.colNames)
console.log(table.data)
// dataType和tableType分别表示数据类型和表格类型,rowNames和colNames分别表示行名和列名,data表示原始数据(修改该值无效)。

# getString

方法,获取动态字符串最终的值

参数 说明
id 动态字符串ID或字符串
返回值 动态字符串最终的值

举例

player.getString("动态字符串ID")

# objects类

objects 用于写入和读取类对象的各种数据

名称 类型 描述
getObject 方法 获取指定类的所有对象
delObject 方法 删除指定类中指定序号的对象
newObject 方法 新建指定类的对象
getObjectsByFilter 方法 调用筛选器获取的对象列表

# getObject

方法,获取指定类的对象列表,可以设定指定属性范围进行筛选。

参数 说明
className 类名
[proName] 选填,指定筛选的属性名
[valueMin] 选填,指定属性的最小值,默认为0
[valueMax] 选填,指定属性的最大值,默认为0
返回 对象列表,若类名错误则为空列表

对于获取到的对象列表可以使用以下方法来获取或者修改对应属性

方法 参数 说明
getPro name 获取对应对象指定属性的值

name:属性名或属性ID
返回:指定属性的值
setPro name,value 设置对应对象指定属性的值

name:属性名或属性ID
value:需要设置的值,必须为数值类型
返回:true 设置成功;false 设置失败
delPro name 删除某个对象的属性,使得它不再拥有这个属性,而他所有事件、公式等将使用玩家属性。(仅对过期属性生效)

参数1:属性名字或者属性ID
返回:ture 删除成功;flase 删除失败
getComPro name 获取对象组合属性,在对象中引用计算过程种若有对象的属性,则会强制带入对象属性
getName - 获得对应对象的名称

返回:对应对象名称
setName name 设置对应对象的名称

name:设置对应对象的名称
返回:无返回
getDes - 获得对应对象的描述

返回:对应对象描述
setDes description 设置对应对象的描述

Description:设置对应对象的描述
返回:无返回
getID - 获得对应对象的ID(目前这个属性只有脚本能获取,唯一,无法修改且不可删除)

返回:内置对象的ID
getString id 获得动态字符串的值,优先采用对象属性

举例

objects.getObjects("怪物对象")  //获得怪物对象列表,如果怪物列表不存在后续方法将全部报错
objects.getObjects("怪物对象")[0].getPro("最大生命") //获得第一个怪物对象的最大生命
objects.getObjects("怪物对象")[0].setPro("最大生命", 10) //设置第一个怪物对象的最大生命为10
objects.getObjects("怪物对象")[0].delPro("最大生命") //删除第一个怪物对象的最大生命属性
let x = objects.getObjects("怪物对象")[0].getName() //获取第一个怪物对象的名称并赋值给X
objects.getObjects("怪物对象")[0].setName("小鸡") //设置第一个怪物对象的名称为小鸡
let x = objects.getObjects("怪物对象")[0].getDes() //获取第一个怪物对象的描述并赋值给X
objects.getObjects("怪物对象")[0].setDes("这是一只小鸡") //设置第一个怪物对象的描述为这是一只小鸡
let x = objects.getObjects("怪物对象")[0].getID() //获取第一个怪物对象的ID并赋值给X

# delObject

方法,删除指定类中指定序列的对象

参数 说明
name 要删除的类名
index 类名的序列,从0开始为第一位

举例

objects.delObject("怪物对象",0) //删除怪物对象第1位的对象

# newObject

方法,新建指定类的对象

参数 说明
classname 所属类名
name 对象名称
des 对象介绍
返回 新建对象
目前成功与失败都会返回一个列表,需要注意下

举例

objects.newObject("怪物对象","小鸡","这是一只小鸡") //创建一个名为小鸡的怪物对象

# getObjectsByFilter

方法,调用筛选器获取对象列表

参数 说明
filterName 筛选器名称或ID
objId 对象ID,可通过tools.kwargs.objID传入当前对应对象
返回 对象列表,失败返回false

举例

objects.getObjectsByFilter("筛选命中的怪物")  //筛选出筛选器【筛选命中的怪物】种所有的怪物对象

# tools类

tools 用于调用各种工具函数

名称 类型 描述
setItemStyle 方法 设置控件样式
getItemStyle 方法 获取控件样式
setDefaultItemStyle 方法 设置回默认的样式设置
setGlobalStyle 方法 设置主页面组件式
getGlobalStyle 方法 获取主页面组件样式
setDefaultGlobalStyle 方法 设置组件全局样式回默认的样式设置
savePlayerDataToCloud 方法 保存数据到云端
playAudio 方法 播放音频
playBackgroundAudio 方法 播放背景音频
pauseAudio 方法 暂停播放某个音频
pauseBackgroundAudio 方法 暂停背景音乐
getLocalData 方法 异步获取本地缓存数据
setLocalData 方法 异步设置本地缓存数据
getTempData 方法 同步获取临时缓存数据(刷新失效)
setTempData 方法 同步设置临时缓存数据(刷新失效)
sendHttpRequest 方法 发送Http请求
showToast 方法 中间展示提示文本
showNotify 方法 顶部展示提示文本
showDialog 方法 中间展示弹窗
kwargs.objID 方法 额外参数(当前绑定对象ID)
postMessage 方法 发送消息到个人聊天框
clearMessage 方法 清空聊天框
getOnlinePro 方法 获取服务器属性
setOnlinePro 方法 设置服务器属性
patchOnlinePro 方法 批量更新服务器JSON
addOnlinePro 方法 服务器属性增加

# setItemStyle

作用:设置某个控件的样式

参数 说明
item 控件名字或控件ID
type 要设置的样式类型
style 具体的样式,可以是字符串也可以是字典
[objectid] (可选):对象ID,用于修改对象控件样式
返回 无

样式类型包括

  1. cellstyle:最外层框样式(行样式)
  2. textstyle:文本域样式
  3. namestyle:控件名字样式
  4. desstyle:控件介绍样式
  5. buttonstyle:按钮样式
  6. buttontextstyle:按钮名字样式
  7. buttontipsstyle:按钮提示样式
  8. iconstyle:图标样式
  9. subitemsstyle:控件容器/框/折叠样式
  10. progressstyle:进度条框样式
  11. progresstextstyle:进度条文本样式
  12. progressinnerstyle:进度条样式
  13. objectcellstyle:对象列表样式

# getItemStyle

作用:获取某个控件被tools设置的样式

参数 说明
item 控件名字或控件ID
type 要获取的样式类型
[objectid] (可选):对象ID,用于获取对象控件样式
返回 具体设置的样式

# setDefaultItemStyle

作用:设置某个控件的样式为默认

参数 说明
item 控件名字或控件ID
type 要设置的样式类型
[objectid] (可选):对象ID,用于修改对象控件样式
返回 无

# setGlobalStyle

作用:设置某个主页面组件的样式

参数 说明
type 组件类型
style 具体的样式,字典
返回 无

组件类型包含

  1. swiperproperty 滚动属性栏
  2. property 属性栏
  3. chatmini 迷你聊天窗
  4. mainpage 主页面
  5. tabbar 底部链接栏

# getGlobalStyle

作用:获取某个主页面组件被tools设置的样式

参数 说明
type 组件类型
返回 具体样式

# setDefaultGlobalStyle

作用:设置某个主页面组件的样式为默认

参数 说明
type 组件类型
返回 无

# savePlayerDataToCloud

作用:弹出云端保存窗口

| 返回 | 无 |


# playAudio

作用:播放音频

参数 说明
url 音频地址
返回 无

# pauseAudio

作用:暂停音频

参数 说明
url 音频地址
返回 无

# playBackgroundAudio

作用:播放背景音频(默认循环播放,只能播放一个)

参数 说明
url 音频地址
返回 无

# pauseBackgroundAudio

作用:暂停背景音乐

参数 说明
无

# getLocalData

作用:异步获取本地数据

参数 说明
key 数据的key
返回值 Promise

举例

// 了解本例子,你需要先了解js中promise的概念,因为存储在浏览器中的数据需要异步获取,所以需要用到promise
// 注意直接调用本函数,是无效的!如
// let a = getLocalData("a");
// console.log(a)
// 上面这段代码不能得到a的值!因为获取是异步的,第一句代码执行完毕后,a还没有值!!
// 因此要用promise,这个函数返回的是promise,只需要在then中获取数据即可
// 本例子中,我们在then中打印了a的值、
tools.getLocalData("a").then((res)=>{
    console.log("a的值",res)
    // 在这里编写实际的逻辑!
})

# setLocalData

作用:异步设置本地数据

参数 说明
key 数据的key
value 数据的值
返回值 Promise

# getTempData

作用:获取全局变量

参数 说明
key 数据的key
返回值 数据的值
// 本例子中,我们获取了一个全局变量a的值,并打印了出来,这个是同步的
let a = tools.getTempData("a");
console.log("a的值",a)

与getLocalData的区别是,getLocalData是异步的,而getTempData是同步的。LocalData存储在浏览器中,因此刷新页面,值还存在 TempData存储在内存中,因此刷新页面,值就不存在了,需要通过场景事件等,重新设置。


# setTempData

作用:设置全局变量

参数 说明
key 数据的key
value 数据的值
返回值 无

# sendHttpRequest

作用:发送http请求

参数 说明
method 请求方法
url 请求地址
data 请求数据
headers 请求头
返回值 Promise

method包括

  1. get
  2. post
  3. put
  4. delete
// 你可以通过这个接口,请求自己的后台获取或设置一些数据,与自己的后台进行交互。
// 本例子中,我们请求了一个后台的json接口,获取了里面的数据,并打印了出来。
// 接口返回promise
tools.sendHttpRequest("get","https://www.fastmock.site/mock/test/json").then((res)=>{
    console.log("请求结果",res)
}).catch((err)=>{
    console.log("请求失败",err) // 这里处理失败的情况
})

# showToast

作用:在中间展示一个灰色背景的提示文本

参数 说明
msg 文本内容
type 展示类型('text'(默认) | 'loading' | 'success' | 'fail' | 'html')
duration 持续时间,单位ms,默认4000ms
返回值 无

# showNotify

作用:在顶部展示一个明显的提示文本

参数 说明
msg 文本内容
background 背景颜色(如red,green,rgb(44,44,44),#123456)
color 文字颜色
duration 持续时间,单位ms,默认4000ms
返回值 无

# showDialog

作用:在中间展示一个明显的弹窗

参数 说明
title 弹窗标题
msg 弹窗内容

# kwargs.objID

作用:获取当前绑定的对象ID,仅在对象控件中生效

console.log(tools.kwargs.objID)
let objs = objects.getObjects("类名")
let currentObj = objs.find(o=>o.getID() == tools.kwargs.objID)
console.log(currentObj)

# postMessage

作用:发送消息到个人聊天框

参数 说明
msg 消息内容

# clearMessage

作用:清空聊天框

参数 说明
type private或server或all

# getOnlinePro

本脚本属于内测阶段,未来可能会修改或计费 OnlinePro系列脚本,可以读取和设置服务器属性,服务器属性全局保存。可用来制作联机功能 服务器属性每个项目保存一个大JSON,所有功能均是读取和设置该JSON

作用:异步获取服务器属性

参数 说明
...key 数据的key
返回值 Promise

举例

// 了解本例子,你需要先了解js中promise的概念,因为存储在浏览器中的数据需要异步获取,所以需要用到promise
tools.getOnlinePro("a").then((res)=>{
    console.log("a的值",res)
})
tools.getOnlinePro("a", "b", "c").then((res)=>{
    console.log("a字典中的b字典中的c的值",res)
})

# setOnlinePro

作用:异步设置服务器属性

参数 说明
...key 数据的key
value 最后一个参数是设置的value
返回值 Promise

举例

tools.setOnlinePro("a", 111).then((res)=>{
    
})
tools.setOnlinePro("k1","k2", 333).then((res)=>{
    
})


# patchOnlinePro

作用:批量更新服务器属性

参数 说明
...key 数据的key
dict 批量更新的字典
返回值 Promise

举例

tools.patchOnlinePro("a", {
  "b":11,
  "c": 22
}).then((res)=>{ // 更新a字典中的b和c的值
    // {
    //   "a":{
    //     "b":11,
    //     "c":22
    //   }
    // }
})

# addOnlinePro

作用:异步增加服务器属性

参数 说明
...key 数据的key
value 增加的值
返回值 Promise

举例

tools.addOnlinePro("a", 11).then((res)=>{

})
tools.addOnlinePro("b", -11).then((res)=>{

})

支持LP平台

上次更新: 2023/12/30, 22:00:30
其他概念
模板功能

← 其他概念 模板功能→

Theme by Vdoing | Copyright © 2022-2025 LPEngine
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式