tts脚本教学贴(连载)
嗯,每天一个脚本小知识。
我尽量按顺序发一些脚本,如有不对请大佬纠正!
先是脚本的基础操作,以及x、y、z
————-第一课「xyz」—————-
xyz可以用f8(要有权限)使用:
(后面那些我也不知道怎么用,反正不用管,按一次f8就行)
按后你可能会看到有一些带♂颜♂色♂的区域,像这样:
有些是脚本区,有些是手牌区,有些是隐藏区,反正都是区域。
在你按一个物体(如黑棋子)后,会出现它的xyz轴:
最上面Position是他的位置,就是坐标;
中间Rotation是角度,就是它面向什么;
最下面是Scale貌似是大小,有点忘了。
我们大部分时间都是看最上面的值,你可以尝试修改数值,修改后按enter会发现物体位置变了(建议不要修改太大),每个图包坐标的单位都不一样,所以尽量不要想一个脚本多个图包用(不移动物体xyz的脚本可以通用)
右边那个按钮是一键复制,xyz就讲到这里
———-第二课「脚本在哪调整?和GUID」———————
「脚本在哪调整?」
有些人可能不知道脚本在哪调整,有2种调物体脚本的方法
-1.全局脚本(此类脚本都是在一个图包里用,不能切到其他图包里用)
首先打开单人游戏,随便开个什么测试(我比较喜欢开Poker单人搞脚本,如果是往某个图包里做脚本请打开该图包)
然后按Modding,在下面几个中选择Scripting
如果是原来没有脚本的游戏会变成这样,建议先把所有东西删掉
UI不要管(我也不会),看Lua就行(虽然我也不是Lua编程师,只是看了看steam论坛的教程总结了一些而已)
-2.单体脚本(此类脚本都是附在一个物体上,通常可以在各个图包中用)
随便选择桌子上一个物体,右键,按这个(就是Scripting右边的Scripting Editor)
按了后会进入单物体的脚本编程,像这样
看左边,比全局脚本区别的是多了一个Chip 1000 – 51dc1c,这是这个物体的代号,上方也能看到。
“-”左边的是此物体的名字(我用的是1000的筹码),“-”右边的是它的GUID,GUID一会讲,可以算是它的代号,每个物体代号都不一样,即使你把它复制了一份也是不一样的代号。
那么如果写完脚本后怎么运作呢?按一下左上方的“Save & Play”就行,但是这样不行,会提示一段话:
这段话的意思是:你没有载入存档。
这是为什么呢?因为将脚本搞入时需要是一个存档,那么怎么存档呢?(如果会存档请跳过这里)
首先先按左上角Games,按Save & Load
然后按右上方SAVE GAME,会把游戏进度储存(建议等一会直到你存的出现再继续)
之后按你刚才存的档,进去。
这样你就可以写你的脚本啦!(请注意,如果你存档载入后新放了个物体进去往那个物体写脚本,再在脚本框按Save & Play,那么那个物体会消失,脚本会失效【因为Save & Play就是重新载入一遍你这个存档,然后执行脚本,所以一开始没有存进去的物体会消失】,建议新加东西后存一下【通常来说,当你写完一段脚本后不用再存,脚本貌似你不退出就一直存着】)
「GUID」
前面我讲了一点GUID的东西,现在接着讲:
获取一个物体GUID的方式很简单:
1.在脚本区像刚才那样调出物体的单体脚本,能看到GUID(不推荐这样做,太麻烦)
2.对那个物体右键,还是Scripting,但是是右下角的Copy GUID
然后它的GUID就被你复制了,之后粘贴就行
此处简单讲下怎么将一个物体在全局脚本中突出表示
有2种方法,现在先说较复杂的一个
先把全局脚本清理一下,然后打出:「 我好骚啊_GUID = ‘0370e0’ 」
咳咳,格式是 你想要的该物体在脚本中的名字_GUID = ‘物体的GUID’
(首先,所有符号得是英文输入法的符号,其次“=”左右都有空格,请注意)
例:我写入Happy_GUID = ‘0370e0’ (请忽视我底下的脚本)
那么你GUID为0370e0的物体以后在这个脚本里就可以用Happy表示(只要你记得住是哪个,把名字改为a都可以)
—————————–第三课「function及更容易的GUID」——————–
function可以理解为一串指令,就是当某人触发这个东西时会进行的一大串脚本
请写出 function onLoad()
这串指令就是说当有人加载这个图包时触发(Save & Play脚本也算)
里面一般会写一些。 GUID,编辑某些东西名字,设置按钮等。
这类脚本格式为:
function“空格” “对应指令的名字”(“括号里面是什么我之后在讲,现在不填就行”)
XXXXXX(此为中间的一些脚本)
end
记住,最后要有end,否则会用不了
如果你用的是之前我讲的GUID那串,那么目前脚本区应该是
Happy_GUID = ‘0370e0’
function onLoad()
Happy = getObjectFromGUID(Happy_GUID)
end
有没有觉得很麻烦,而且在function onLoad()里多了一大行,那么怎么方便点呢,往下看
首先,最开始的Happy_GUID = ‘0370e0’ 删掉,function onLoad()里的Happy = getObjectFromGUID(Happy_GUID)删掉。取而代之的是在function onLoad()里放一个Happy = getObjectFromGUID(“0370e0”)
对,就这么简单,拆分一下
Happy就是在全局脚本中这个物体的名字(随意起)
getObjectFromGUID不能改
(”0370e0″)英文括号和英文双引号必须有,里面的是那个物体的GUID
记住,所有在脚本中的符号都是英文输入法的符号
—————————–第四课「按钮」——————–
嗯,今天将怎么做一个按钮
首先还是先把上节课的脚本弄好,然后在Happy = getObjectFromGUID(“65166a”)后面隔一行,写下
Happy.createButton({
label=”哈喽啊”, click_function=”H”, function_owner=nil,
position={5.8,0.1,0}, height=600, width=600, font_size=100, rotation={0,0,0}
})
我解释一下意思,可以更改的部分为:
1.Happy
2.哈喽啊
3.H
4.nil
5. 5.8,0.1,0
6. 600
7. 600
8. 100
9. 0,0,0
逐一解释
1.Happy–此处是该物体在全局脚本中的名字,根据你之前弄的名字设置
2.哈喽啊–此处是在按钮上的文字,除了“哈喽啊”这三个字外英文以及””不要删掉或修改
3.H–此处是人按这个按钮后触发的指令名字,比如说你要按这个按钮后跳到H指令,那么就此处写H(不要删掉那个””),然后在这个指令end后面做一个function H()
4.nil–此处是那个玩家可以按这个按钮,通常为nil(就是说谁都可以按)
5. 5.8,0.1,0–此处是该按钮的位置,请自行调试(可以配合一开始讲的xyz)
6. 600–这个是按钮的高度,自行调整
7. 600–这个是按钮的宽度,自行调整
8. 100–此处是按钮中文字的大小自行调整
9. 0,0,0–此处是按钮角度0,0,0就是朝上,自行调整
举个例子:
function onLoad()
Happy = getObjectFromGUID(“65166a”)
Happy.createButton({
label=”哈喽啊”, click_function=”H”, function_owner=nil,
position={5.8,0.1,0}, height=600, width=600, font_size=100, rotation={0,0,0}
})
end
function H()
print(“哈喽啊”)
–注,此处print(“哈喽啊”)的意思是在左下角发送‘哈喽啊’。还有一件事,在写脚本是,你可以像我这样在某个位置打2个 – 符号,这样系统就会忽视这条指令,就是用来提醒你这里写的啥意思。如果要继续写脚本就下一行继续写
end
–每个function脚本都要对应一个end
就是这样
—————————–第伍課「瞬間移動」—————–
今天讲最有用的setPosition,真的很有用!
这个东西你可以用于一个东西的按钮里
格式为: XX.setPosition{X,X,X}
还是逐个讲
XX就是这个物体在脚本中的名字
.setPosition不能改
{X,X,X}和上一课的那个一样,是一个位置,也是用xyz试出来的(就是先把一个东西弄到你想要的地方,然后用xyz按它,按第一行右边的按钮复制就行)
拿上节课的举例,如果你想让上节课的那个东东被按按钮就移到某个地方(假如是“3.68, 1.24, -12.10”这个位置),那么总体脚本是这样的。
function onLoad()
Happy = getObjectFromGUID(“65166a”)
Happy.createButton({
label=”哈喽啊”, click_function=”H”, function_owner=nil,
position={5.8,0.1,0}, height=600, width=600, font_size=100, rotation={0,0,0}
})
end
function H()
Happy.setPosition{3.68, 1.24, -12.10}
end
对,这个要加载一个按钮的指令里面,当然呢,你不一定要把这个东西加在对应物体的按钮里,比如说你可以在一个别的地方的按钮里写上让这个Happy移动
【额外知识:如果你是要把什么脚本放到单体上也就是“单体脚本”。那么这个东西不能使别的东西动。但是你不用再写上Happy = getObjectFromGUID(“65166a”)这样的东西了。你在后续的脚本中,只要是对这个物体做什么东西,那么就是self.XXXXX,比如说在这个上面做按钮让它移动,就是
function onLoad()
self.createButton({
label=”哈喽啊”, click_function=”H”, function_owner=nil,
position={5.8,0.1,0}, height=600, width=600, font_size=100, rotation={0,0,0}
})
function H()
self.setPosition{3.68, 1.24, -12.10}
end
没错,self就是只“自己”也就是这个单体
】
—————————–第六课「投」—————–
没想到吧,我又回来了,断更了辣么久,我大概休息好了(其实就是最近玩多了忘了更新了)
不多bb,直接讲
今天主要来讲如何用脚本对一个物体按“R”,大多是给骰子或硬币用的
其实很容易,就是
xxx.roll()
嗯,xxx就是该物体的名字,就是这么简单
但是我亲测……投不起来
这个时候怎么办呢,多复制几次就行了hhh
xxx.roll()
xxx.roll()
xxx.roll()
xxx.roll()
xxx.roll()
xxx.roll()
嗯,还是要写在一个按钮的指令里面
如果你觉得还是投不起来,建议用上节课的知识先把这个骰子/物体放在固定的一个位置比较高的地方,然后再用这个指令投它
总体指令一览
function onLoad()
Happy = getObjectFromGUID(“65166a”)
Happy.createButton({
label=”哈喽啊”, click_function=”H”, function_owner=nil,
position={5.8,0.1,0}, height=600, width=600, font_size=100, rotation={0,0,0}
})
end
function H()
Happy.setPosition{3.68, 4, -12.10}
Happy.roll()
Happy.roll()
Happy.roll()
Happy.roll()
Happy.roll()
end
PS:骰子投的位置,骰子UUID以及骰子上按钮的位置都需要自己调。
因为骰子特殊6面的情况,按钮会瞎鸡儿飘,所以我建议把按钮载体放在一个固定的地方,然后把那个被setPosition和roll的物体变为另一个,比如我这样
function onLoad()
Happ = getObjectFromGUID(“af7fcd”)
Happy = getObjectFromGUID(“ff4052″)
Happ.createButton({
label=”哈喽啊”, click_function=”H”, function_owner=nil,
position={5.8,0.1,0}, height=600, width=600, font_size=100, rotation={0,0,0}
})
end
function H()
Happy.setPosition{3.68, 4, -12.10}
Happy.roll()
Happy.roll()
Happy.roll()
Happy.roll()
Happy.roll()
end
(Happ是按钮载体,Happy是骰子)
—————————–第七课「脚本区域」—————–
嗯,我又来了,今天稍微讲一点点知识,就是如何做一个脚本区域,脚本区域之后应该会有用的
制作方法:f3最右面有个scripting(只有有权限的人或房主才能用)
在桌子上做一个长方形,右键可以获得他的UUID(可以用第三课的方法做一个这个区域的名字)
例如:
Area = getObjectFromGUID(“1a737e”)
具体有什么用,之后再讲吧
今天就讲这么一点点,下次再见
————————–未完待续2020.8.15————————–
爱桌游 » tts脚本教学贴(连载)
不知道该干啥,刷个贴
谢谢搬运,论坛改版辛苦了
求个更新
感谢分享,刚刚入坑
感谢分享
谢谢!!!
这个怎么用啊
相关文档 https://api.tabletopsimulator.com
感觉很猛 但是不会
棒
厉害了,我的哥,请继续
桌游模拟器如何用指令提高房间人数的上限啊,突破最高10人房的限制,请指教
感谢
感谢大佬分享,另外想问问从盒子里取出东西的脚本应该怎么写。主要是想按键就能把里面东西取出来然后铺开,比如卡牌这种。
同问,大佬能否教一个从盒子里取出某叠按顺序卡牌中的固定一张的这种脚本的写法?
感谢楼主
感谢感谢,什么时候再来分享啊大佬
学
学习学习
我会耐心学习的,棒棒