11922911
|
分享:
▼
x2
|
[插件] 玩家 set_rendering 层级系统 API v0.1.1 (2024/6/19 更新)
(非OO插件)
【插件资讯】插件来源:原创 使用指令:没有 安装路径:addons/amxmodx/scripting 【插件介绍】
有没有曾经为 AMXX 的 set_rendering 而烦恼? 因为太多的插件同时在使用 set_rendering, 变得很难管理?
我针对以上这个问题写了一个 set_rendering 的管理系统
set_rendering 有什么情况下会发生冲突? 举个例子: 丧尸模式有冻结弹, 当你被冻结被会使用 set_rendering 为玩家加上一层像冰面的 浅蓝色光, 冻结解除后重设 rendering 你的丧尸有血性暴走, 使用时会为自身加上一层红色光, 暴走结束后重设 rendering 当以上两个情况一起发生时, 就会出现冲突 譬如 你正在暴走时 被冻结住, 然后在冻结完之前暴走就使用结束, 那就会出现 冻结的蓝色光提前消失的情况 另外一种情况就是一样正在暴走时被冻结住, 在你暴走未完结之前 冻结就解除了, 暴走的发光效果会提前消失, 正确的状况应该会是冻结解除后还是 红色光, 等到暴走真正结束后才消失 (当然这只是举个例, 因为可能你会写被冻结时就取消暴走的状态) 再来就是你的特殊感染者设定了身体发出基础绿色光, 如果你再碰到上面两种情况就会很麻烦
使用说明: 复制程式
// 加入新的 rendering 层级
// 前 5 个参数跟 set_rendering 差不多
// duration 是 这个发光的持续时间, 设 0.0 代表永久 直到下一次重生
// class 是 给这个层级一个名称, 若相同的名称已经存在 则改变该层级的 rendering 样式
// return 插入的 index
native render_push(id, fx, Float:color[3], mode, Float:amount, Float:duration=0.0, const class[]="");
复制程式
// 移除指定一个 rendering 层级
// id 是玩家
// pop_index 是 要移除的 index
// class 是 从玩家现在的 rendering 列表中寻找这个名称的层级再移除(找不到则不动作), 若class为空则使用pop_index
native render_pop(id, pop_index, const class[]="");
复制程式
// 移除所有层级
native render_clear(id);
这个 API 会自动在玩家重生时 移除所有层级 层级会根据 render_push 的先后决定层级的优先度 预设最多只能有 16 个层级, 如果想增加请修改 sma 里的 MAX_LAYERS
以下是针对以上说的情况而写的范例
首先, 设定特殊感染者的基础绿色光 在玩家成为特殊感染者时 加入以下代码: 复制程式
render_push(id, kRenderFxGlowShell, Float:{0.0, 255.0, 0.0}, kRenderNormal, 16.0, 0.0, "base");
在冰弹冻结玩家时 加入以下代码: 以下假设冻结时间是 3 秒 复制程式
render_push(id, kRenderFxGlowShell, Float:{0.0, 200.0, 200.0}, kRenderNormal, 16.0, 3.0, "freeze");
在玩家使用暴走时 加入以下代码: 以下假设暴走时间是 10 秒 复制程式
render_push(id, kRenderFxGlowShell, Float:{255.0, 0.0, 0.0}, kRenderNormal, 16.0, 10.0, "sprint");
在一些情况中, 你可能想提前或手动取消暴走效果, 可以使用以下代码: 复制程式
render_pop(id, -1, "sprint");
TODO (将会加入的功能): 让 render_push 可以指定层级的优先度
[此文章售价 1 雅币已有 0 人购买]
若发现会员采用欺骗的方法获取财富,请立刻举报,我们会对会员处以2-N倍的罚金,严重者封掉ID!
[ 此文章被11922911在2024-10-13 21:45重新编辑 ]
此文章被评分,最近评分记录财富:500 (by amore12) | 理由: 辛苦了!! | |
|
|
|