Second Life --- lsl script 学习(1)

LSL学习笔记(1)  LSL is the Linden Scripting Language. This is the language all scripts in Second Life are written in.LSL emphasizes on "States" and "Events".Scripts can make an object move, listen, talk, opera 阅读详情
LSL基础

  林登脚本语言初看有点像C语言。然而,它比C语言编程容易。没有指针,你可以直接比较 字符串而无须使用strcmp这样的函数。LSL不是面向对象的;你不能创建你自己的对象,程序提供了一些3D相关的对象。LSL是基于状态的。每个 LSL脚本有一个特定的状态,运行每个函数来在一系列状态中转化。这是和大部分编程语言不同的概念。当你在大部分语言中构建状态机时,LSL的状态机概念 已经是语言的内建部分了。

  LSL脚本存在于第二人生中的3D元素的内部。对象是元素的集合。比如,在第二人生中的汽车可以是一个简单 物体。但是,汽车对象可以是由很多基本元素组成的,每个部分包含自己的脚本。除此以外,这些基本元素可以互相通信,甚至和人类玩家通信。使用更高级的编 程,元素甚至可以和SL外部的Web页面通信。

  LSL也是事件驱动的。大部分的第二人生中的物体通过事件触发状态转换而工作。第二人生提供了许多不同的事件类型。许多都是基于用户的,比如用户的触摸或者坐在一个对象上;但是,它也支持计时器事件,无须用户交互。

状态(State)是LSL中的一种流程控制手段,在不同状态下触发同一事件时,可以产生不同的行为,我们可以利用状态使得LSL实现相对复杂的功能。

***************************************************************************************************************

下面是一个简单的例子,引自LSL Wiki

default
{
    state_entry()
    {
        llSay(0,"Hello, Avatar!");
    }

    touch_start(integer total_number)
    {
        state restart_default;
    }
}

state restart_default
{
    state_entry()
    {
        state default;
    }
}

对于一个LSL脚本来说,必须至少有一个被称为default的默认状态,而每一个状态中必须至少含有一个事件(可以是所有事件中的任意一个)。default的状态是必须放置在其他状态之前的,如果有其他状态被定义在default之前,则会产生语法错误。

LSL中其他的流程控制手段有

循环:for,do-while,while 与C/Java中用法类似

选择:if-else 用法与C/Java类似,但使用if/else if时选择条件最多不超过24个,如果需要更多选择情况,则需要在选择条件中嵌套使用if-else

jump: 类似其他语言中的goto

retrun: 与C/Java中用法类似

数据类型特点

integer 整型 32位 范围: -2147483648 到 2147483647

float IEEE-754标准32位浮点数

string 字符串 采用UTF-8标准

key 用来标记SL中物体、图象、声音、动作等库存文件以及用户名的特殊字符串
如 "66864f3c-e095-d9c8-058d-d6575e6ed1b8" 就是一个key

list LSL中没有array这个数据类型,作为替代,LSL中使用了list,list 可以看成时一个1维的array,list中可以存放除list外LSL支持的所有数据类型

LSL中引入了2个三维的数据类型

vector 向量 vector由3个浮点数组成如 vetctor a = <1.0,2.0,3.0>;

rotation 旋转 rotation由4个浮点数组成 如 rotation b = <0.0,0.0,0.0,1.0>;

LSL的库函数

LSL中一共有30个类别约200多个库函数,提供用户最大的使用方便库函数类别如下:

  1. Agent/Avatar
  2. Camera
  3. Communications
  4. Collision
  5. Color
  6. Controls
  7. Dataserver
  8. Detection
  9. Dynamics/Movement/Physics
  10. Group
  11. Inventory
  12. Land (Ground/Terrain)
  13. Light
  14. Link
  15. List
  16. Math
  17. Particle
  18. Primitive/Object
  19. script
  20. Sensor
  21. Simulator (Environment/World)
  22. Sound
  23. String (Text/Name)
  24. Teleport
  25. Texture
  26. Time
  27. Transformation: Rotation/Scaling/Translation
  28. Vehicle
  29. Video
  30. Weather
“第二人生”Second Life开源代码 大名鼎鼎的第二人生大型在线社区游戏,开源了啊。要做网游的,研究网络的可以好好研究下SecondLife的源码。 立即下载

相关推荐

Second Life 脚本编辑器

一款3D社交游戏Second Life,独有的兰登脚本能帮助玩家自己创造游戏中属于自己的元素,并且交易,此程序为方便编辑脚本设计,界面极像普通的窗体编程,不同语法用不同颜色作标记方便编写。

这是我在学习 second life 游戏时的学习与感受 希望对初学者有所帮助。

 1 Today, in the Multimedia design class, I knew Second Life is a Game where you can design anything which you like. For example, if you liked flight, you could design it in the game and make it f

sirwilliam的专栏 1068

基于C语言实现Linux系统终端ls -l指令的源代码

模拟Linux系统终端指令ls -l,显示文件夹里所有文件详细信息(不包含隐藏文件),包括文件的权限,文件的类型,如果是目录文件里面包含几个目录,系统的登录ID,组ID以及文件的大小,最后修改时间和文件名按照一定顺序排列出来。

second life 新手必读 原文http://www.chezhe.com/game/ol/paopao/zhin

second life 新手必读 作者:swei 加入时间:2007-04-09 来源: 访问:413 【大 中 小】 新手必读 [url]http://www.chezhe.com/game/ol/paopao/zhinan/20070409/game_2067.html[/url] 游戏硬件要求 PC: 互连网连接:任何宽带 操...

天天成长的博客 602

告别龟速计算!用Python的fengwo模块5分钟搞定通达信COST/WINNER函数(附完整代码)

本文介绍如何使用Python的fengwo模块高效复现通达信的COST和WINNER函数,解决量化交易中的计算精度和性能问题。通过C++核心算法和多线程优化,计算速度提升显著,误差低于0.5%,并支持与通达信DLL无缝集成,适用于实盘交易策略开发。

weixin_42533751的博客 600

InSAR数据获取实战指南:Sentinel-1、精密轨道与ALOS PALSAR DEM的下载与应用

本文详细介绍了InSAR数据获取的实战指南,重点解析Sentinel-1数据、精密轨道数据(OPOD)和ALOS PALSAR DEM的下载与应用技巧。通过实际案例和代码示例,帮助读者掌握数据筛选、下载加速、校验及多源数据协同使用的关键方法,提升地面形变监测的精度与效率。

weixin_29215815的博客 432

Second Life --- lsl script 学习(2)

 LSL的局限及不足 服务器性能导致的对脚本功能的限制按照SL的系统架构,sim服务器的负担非常重,因此提供给脚本的资源也是相当有限的。sim服务器分配给单个脚本的内存空间为16k,这是分配给字节码、堆、栈的空间总和,因此编写脚本时必须对脚本长度、变量的数目及大小进行有效控制。另外在脚本执行层面,对事件的响应是单线程的,每个脚本中被触发的事件会被放置到一个队列(queue)中,然

838

如何用zemax导入solidworks装配体

在zemax使用中,常常需要导入各种零件。如果光机结构较为复杂,那么手工一个一个加载零件,还需要在zmx文件中调整object的位置,非常麻烦。如果能将solidworks的装配体模型直接导入,则可以大幅减小工作量。具体过程为(非序列模式下): 1、新建或打开一个zemax空文件 2、在元件编辑器中,找到一个空文件,双击或直接展开三角符,在类型中找到zemax里的solidworks装配体,如图。...

wojiaoyyy的博客 1万+

线性表基本操作和简单程序——c语言

分别以头插法和尾插法建立两个数据域定义为整型的升序单链表,再将这两个有序链表合并成一个新的无重复元素的有序链表,最后可以根据输入的数据,先找到相应的结点,后删除之。 #include #include typedef struct node{ int data; struct node *next; }node; node * qbuild(node *first)

zhang0xu0的博客 6315

【2025最新版】ABAP 开发百科全书专栏文章目录(上)

本文汇总了一系列SAP ABAP技术文章,内容涵盖实用技巧合集、函数式编程实践(如Currying、reduce应用)、设计模式实现(如Visitor、Singleton)、动态代理与Mock技术、性能优化方案(如Lazy Loading)、日期处理与内存管理,以及ABAP与JavaScript的编程范式对比。还涉及CDS视图、Fiori字段追踪、单元测试优化等实战经验,深入剖析了ABAP底层机制(如Internal Session、Function Module实现原理),并提供了多种反模式改进方案。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2473

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS

wzk4869的博客 3022

用c语言实现一些简单程序。

打印100~200 之间的素数 。 #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; int main() { int n=0; int counter = 0; for (n = 101; n &lt;= 200; n +=2) { int i = 0; for (i = 2; i &lt; n; i++) { if (n % i == 0...

tt 博客 1362

迟滞比较器原理及计算

为什么要用迟滞比较器 在讲迟滞比较器之前,我们先看一个案例。 在产品设计中常常需要用到电机,而电机在从运转到停止过程中需要泄放能量,这种能量大部分以电压的形式反馈回电源母线(Vbus)导致Vbus母线电压升高,特别是功率大又转速快的电机需要急刹时,产生的反馈电压更高,严重时可能导致母线上其他器件的损坏。 为了防止将电机反馈的能量泄放掉,我们需要设计一个电路来检测母线电压,当母线电压高于某一安全阈值时,打开MOSFET Q1将母线上的能量通过电阻R5以热的形式消耗掉。 假如用一般的比较器,设计如下: Vbu

sinat_15677011的博客 2万+

C语言实现一般线性表的链式存储

C语言实现一般线性表的顺序存储,以下是在VS2013编译通过的,欢迎讨论。有关数据结构的概念可看我的另一篇文章http://blog.youkuaiyun.com/linuxlsl/article/details/45649655 一、头文件linklist.h #ifndef _LINKLIST_H_ #define _LINKLIST_H_ typedef void LinkList; typed

linuxlsl的博客 520

爆肝5万字❤️Open3D 点云数据处理基础(Python版)

本文为Open3D 点云数据处理基础教程(Python版),小白也能轻松上手!还等什么呢,学起来!

孙悟空 13万+

手把手教你学PCIE--固件与BIOS配置 - BIOS设置对PCIe性能的影响

本文详细分析了BIOS设置对PCIe性能的影响,并提供了优化建议。通过合理调整链路参数、功耗管理策略和高级功能配置,可以显著提升系统的性能和稳定性。本文将进一步分析BIOS设置如何影响PCIe设备的性能,并提供优化建议。BIOS(或UEFI)是系统启动时的第一个控制层,其设置直接决定了PCIe设备的工作状态和性能表现。BIOS中的功耗管理选项(如C-States、P-States)会影响PCIe链路的低功耗模式(L0s/L1)。MSI/MSI-X中断具有更高的性能和更好的可扩展性,应作为首选方案。

MHD0815的博客 995

C语言实现一般线性表的顺序存储

C语言实现一般线性表的顺序存储,以下是在VS2013编译通过的,欢迎讨论。有关数据结构的概念可看我的另一篇文章http://blog.youkuaiyun.com/linuxlsl/article/details/45649655 一、头文件ArrList.h #ifndef _ARRLIST_H #define _ARRLIST_H typedef struct { int x; int y; }

linuxlsl的博客 459

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

音乐播放器源码(C语言)

链接:https://pan.baidu.com/s/18v-HYuaFti5oXaGQrCxVDw 提取码:znh0 复制这段内容后打开百度网盘手机App,操作更方便哦

lslzz2019的博客 4583

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C++对C语言语法的增强

一、变量定义的区域扩大 C语言中的变量都必须在作用域开始的位置定义;++中所有的变量都可以在需要使用时再定义 int i = 0; cout << "i=" << i << endl; int j = 2; cout 二、struct类型加强 C语言的struct定义了一组变量的集合,C编译器并不认为这是一种新的类型;C++中的struct是一个新类型的定义声明。C语言中str

linuxlsl的博客 398

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C语言中线性表的实现

最为简单的数据结构是线性结构,包括线性表、堆栈、队列等,本篇文章将为大家介绍对线性表的操作。         首先明确线性表的特点以及它所需要实现的功能,明确了这两点我们就可以编程形成一个“.h”文件,供以后开发app的时候使用,完成了线性表这个工具后,我们就可以在任何需要线性存储结构的地方使用我们提供的线性表工具。         下面我们来介绍线性表的特点:首先要明确线性表是一个用来存储数

Judy_c的博客 4694

C语言实现的音乐播放器

C语言实现音乐播放器 #include &amp;lt;stdio.h&amp;gt; #include&amp;lt;dirent.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; #include&amp;lt;unistd.h&amp;gt; #include&amp;lt;string.h&amp;gt; typedef struct node_ node_t; struct

qq_40409115的博客 1万+

单链表的C++实现

#include using namespace std; struct Node { int Data; Node*next; }; class list { Node*head; public: list(){head=NULL;} void insertlist(int aData,int bData); void deletelist(int aD

vallenlsl的专栏 440

MD5算法C语言实现16、32位版

网上找到的md5函数的实现,试过,可以用,稍微修改了,支持输出16和32位两种加密码,记录一下。包括三个文件,依次如下

在努力! 4086

list

的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。,因此反向迭代器的实现可以借助正向迭代器,即:反向迭代器内部可以包含一个正向迭代器,对正向迭代器的接口进行包装即可。是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。迭代到该位置,在这段位置上迭代需要线性的时间开销;最大的缺陷是不支持任意位置的随机访问,比如:要访问。还需要一些额外的空间,以保存每个节点的相关联信息。个元素,必须从已知的位置。

xie0510_的博客 274

Redis 数据类型详解:Hash 哈希与 List 列表

大 key 指单个 key 对应的 value 过大(如 Hash 字段数极多、List 元素极多)。危害包括:单次全量命令(

2303_77004089的博客 100
上一篇: hibernate problems
下一篇: Second Life --- lsl script 学习(2)
凄凄迷人
博客等级 码龄21年 58粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值