“LlTakeControls”的版本间的差异
|  (创建页面,内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}}   {{函数详情 |函数名 = Function: llTakeControls( integer controls, integer accept, integer…”) | |||
| 第77行: | 第77行: | ||
| [[control]] | [[control]] | ||
| }} | }} | ||
| − | + | 详见:http://wiki.secondlife.com/wiki/LlTakeControls | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
2020年9月9日 (三) 11:30的版本
| 首页 | 函数 | 事件 | 类型 | 操作符 | 常数 | Flow Control | Script Library | Categorized Library | Tutorials | 
| 函数名 | 
|---|
| Function: llTakeControls( integer controls, integer accept, integer pass_on ); | 
| 参数:允许从脚本有权限的代理拦截键盘和鼠标单击,特别是由控件指定的那些。 •整型控件–控制标志的位域 •整数接受–布尔值,确定是否生成控制事件 •整数传递开启–布尔值,确定控件是否执行其正常功能 若要运行此函数,脚本必须使用llRequestPermissions请求权限\u TAKE\u CONTROLS权限。 如果accept为FALSE,pass-on为FALSE,则行为不是直观的。在这种情况下,指定控件的补码不会生成事件,也不会执行其正常功能。他们实际上是残疾人。在这种情况下,当指定时,某些控制位(例如,控制位左)也被禁用。 如果accept为FALSE且pass_on为TRUE,则指定的控件不会生成事件,而是执行其正常功能。 如果accept为TRUE,pass_on为FALSE,则指定的控件将生成事件,但不执行其正常功能。 如果accept为TRUE且pass_on为TRUE,则指定的控件将生成事件并执行其正常功能。 | 
| 返回值:无 | 
| 注意事项 | 
|---|
| 表格见附录 权限 不依赖于自动授予权限的状态。始终使用“运行时”权限事件。 如果脚本缺少权限\u TAKE\u控件,脚本将在DEBUG_CHANNEL上发出错误消息,操作将失败(但脚本将继续运行)。 一旦授予PERMISSION\u TAKE\u CONTROLS权限,就可以从脚本内部(使用llReleaseControls或新的llRequestPermissions调用)或用户从查看器中选择释放密钥来撤销它。脚本在重置时,或者对象被删除、分离或删除时也将丢失此权限。 当脚本中没有控制事件时,使用accept=TRUE、pass_on=TRUE似乎没有任何惩罚(例如,在AO中使用以确保它们在无脚本区工作) 某些权限中存在一个错误,如果将左键单击设置为accept=FALSE,pass\u on=TRUE,则会阻止鼠标左键单击 如果您坐/坐在已使用accept=TRUE和pass_on=TRUE获取控件的对象上,则“控制”“前进”、“控制”“后退”、“控制”“向左”和“向右控制”不会生成事件;相反,这些控件将只执行其正常功能。 如果未记录的控件0x02000000或0x04000000在pass_on=FALSE的情况下执行,则llGetAnimation将永远不会分别“左转”或“右转”,并且由llSetAnimationOverride设置的动画将永远不会播放 | 
| 示例 | 
|---|
| 示例1 default
{
    state_entry()
    {
        llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS);
    }
    run_time_permissions(integer perm)
    {
        if(PERMISSION_TAKE_CONTROLS & perm)
        {
            llTakeControls(
                            CONTROL_FWD |
                            CONTROL_BACK |
                            CONTROL_LEFT |
                            CONTROL_RIGHT |
                            CONTROL_ROT_LEFT |
                            CONTROL_ROT_RIGHT |
                            CONTROL_UP |
                            CONTROL_DOWN |
                            CONTROL_LBUTTON |
                            CONTROL_ML_LBUTTON ,
                            TRUE, TRUE);
 
        }
    }
    control(key id, integer level, integer edge)
    {
        integer start = level & edge;
        integer end = ~level & edge;
        integer held = level & ~edge;
        integer untouched = ~(level | edge);
        llOwnerSay(llList2CSV([level, edge, start, end, held, untouched]));
    }
}
 | 
| 相关函数 | 
|---|
| llGetPermissions –获得授权 llGetPermissionsKey –找到授予权限的代理 llRequestPermissions–请求权限 | 
| 相关事件 | 
|---|
| run_time_permissions–权限接收事件 | 
