> 神唱K歌 > 【由我脚本学习】亲爱的~我的心都给你!

【由我脚本学习】亲爱的~我的心都给你!

有没有什么办法能把我火热的心,都给你!
有!用uworld物品工具创造一颗心(或者去商店买一个爱心抱枕),绑定本脚本,摆放出来,点击收到提示后,就可以把心送给亲爱的他/她了~
脚本如下:
MyTable =
{
EntryInfo = {ONLOADED,"state1"};
StateList = {"state1"};
state1 =
{
Timer = 1000, --每1秒执行一次OnTimer(args)函数。
TimeOut = -1,
NextState = "nil",
EventList = {ONTOUCH}; --点击触发OnTouch(args)函数。
};
}

function MyTable.state1.OnEnter(args)
counter=0; --设置一个变量用于给每次动作计时。
touched=0; --设置一个变量告诉系统何时可进入动作。
end
function MyTable.state1.OnExit(args)
end

function MyTable.state1.OnTouch(args) --点击触发此函数。
if touched==0 then
id=uGetToucherId(); --把点击的人物ID赋值给变量id。
uSendMsgBoxNine(id,"现在请左键选择亲爱的他/她。") --屏幕中央显示语句。
touched=1;
end
end

function MyTable.state1.OnTimer(args)
if touched==1 then
if counter==0 then
local ttype = uGetPlayerTargetType(id);--获得人物目标的类型,是人则返回1,是物则返回4。
if ttype==1 then
tid = uGetPlayerTargetId(id); --获得人物目标的ID。
tpos=uGetPlayerPos(tid); --获得目标的位置坐标。
uSetItemSpeed(uGetItemId(),3); --设置物体移动速度。
uMoveDefaultItemTo (tpos.x-0.2,tpos.y-0.2, tpos.z + 1,uGetItemId());--让物体移动到目标位置。
uSayChannel(uGetPlayerName(id).."把心都给了"..uGetPlayerName(tid).."!")--聊天频道显示语句。
uSendMsgBoxNine(id,uGetPlayerName(id).."把心都给了"..uGetPlayerName(tid).."!")--屏幕中央显示语句
uSendMsgBoxNine(tid,uGetPlayerName(id).."把心都给了"..uGetPlayerName(tid).."!")--屏幕中央显示语句。
pos = G3D.Vector3:new(0,0,0);
uPlayPartical (1,pos, "LPA001");--在物体上播放特效“光翼”
uPlayPartical (2,pos, "LPA010");--在物体上播放特效“桃心”
uPlayOperatorAct("kiss",id,3);--播放动作KISS
uPlayOperatorAct("shy",tid,3);--播放动作shy
counter=1;
end
else
counter=counter+1;
if counter>=10 then
uStopPartical(1);--停止特效
uStopPartical(2);--停止特效
counter=0;
touched=0;
end
end
end
end

有同学在问新手包房里的鲜花脚本(点击送给别人),那个脚本太复杂,而且涉及到GM专用API,没法介绍给各位。但是那脚本的核心创意很好玩:互动,通过脚本实现人与人之间的互动。于是就有了这个脚本,希望大家喜欢。

这脚本逻辑也很简单,下面详细介绍下关键API:
获得指定用户当前选定的目标id
函数:
uGetPlayerTargetId(playerId);
参数:
(1) playerId:字符串,用户id。
返回值:
目标的id。
备注:
(1) 如用户不存在,或目标用户超出脚本API作用范围,或目标用户未选中目标时,返回值为0。
Eg:
(1) local result = uGetPlayerTargetId (uGetToucherId());
uPrintf(result);
--获得脚本触发者当前选定的目标id。