网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月31日漏签0天
吉里吉里吧 关注:51,166贴子:70,864
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 77回复贴,共1页
<<返回吉里吉里吧
>0< 加载中...

【解答&讨论】常见问题讨论解答贴

  • 只看楼主
  • 收藏

  • 回复
  • 敬启绝音
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
老规矩,模拟器问题为什么不问问神奇的kirikiroid2吧呢
之前两个答疑帖都爆炸了,补一个疑问贴,有一些以前很常见的问题我试试直接列一点出来,虽然大部分我已经忘了......


  • 敬启绝音
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我依稀记得的一些问题...33492995群号,有一些文档和插件已经找不着原先的下载链接了,还是直接加群群文件吧....教程那个导航我记得倒是没怎么炸,不过很多东西那里没有
kr2和krz的打包都是2自带的那个tools/krkrrel.exe
另外那个KAGConfig是要把Config.tjs这个文件拖到KAGConfig.exe上打开,直接开这个exe是没卵用的
kr老早就因为版权问题对mp3不支持了,很多时候都动作异常.....一般是推荐ogg
kr偶尔会出现重新新建一个工程,代码直接拖过去就可以正常运行的情况,一般这种情况可以试试把savedata删了试试.......有的时候就是ksd存档的sf有点问题
kr原本的kag用的是autopath,这东西虽然不需要你敲文件后缀了,但是不允许同名..........比如rule里面有1-38.png,如果你文件里有1-38命名的图片,那么根据system/Initialize.tjs里的挂载顺序,rule/的优先级是在其他所有图像文件夹之前的......除了others/....
刚开始一脸懵逼的时候总会碰到Config里修改了窗口大小,但是层大小还是800*600所以显示总是不全的问题,这俩不是一个属性....层的话需要用kag那个什么指令手动调成需要的大小,Config里没得设置
[move]指令的path无法运算变量这个是个bug,少一个eval,不过讲这个的我也是真的找不着了.......


2025-08-31 12:42:43
广告
不感兴趣
开通SVIP免广告
  • 敬启绝音
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
kag的变量吧...sf是会自动存档的持久数据,tf是临时变量,f则是在存档的时候会保存到存档里,但是f的使用真的挺麻烦的.........我要没记错的话是按照存档偏移load进来的那个数据
kag里插入tjs式是一个比较神奇的东西...不过最主要的还是tjs上可以调用的那几个call和jump
jump是kag.process( File , Target )
call有两个,processCall( File , Target )和[call]相同,另外一个excall忘了叫啥....
[button]那几个参数eneter,leave,还有一个没记错应该是down,这三个可以挂tjs式call出去
tjs式也可以用在普通的exp eval上,只是如果是执行正常的tjs代码还是iscripts区间吧
kag的循环一般是借助if和jump来写一个规则判定的,一般用的都是tf,但是用过之后记得要删掉- -
粒子这玩应基本还是靠插件吧...我记得也有讲粒子的帖子,就是确实不怎么感觉好用.....
在message挂asd按钮我记得只有kagex还是ex2支持....这东西其实没那么麻烦
正常在用kag的时候,message大部分时间只有热区,也就一个或者一组透明区域负责按钮功能,但显示的图像都在layer,除非滚动条这种改起来很麻烦的......
而且有一些效果需要layer进行很大距离的move,button在move的时候会变得很**......一般都是layer在move的时候直接把按钮删了或者禁用,结束之后直接移动到目标位置激活
sysbutton不是不能用,主要是这东西总有一些奇奇怪怪的bug.......以前还需要在读档的时候加什么东西来恢复状态,这个我是真的忘了是啥了
视频颠倒这个可以靠插件解决,不过这东西我没碰到过问题也就没研究过....貌似z天然没这毛病.....怕有问题就上avi....
kr那个extrans.dll的拓展效果在kr2doc的トランジションについて词条下面
原则上建议完全不用bg和fg这俩指令....因为各个kag版本这俩东西好像不太一样......
action补间类基本都还好,就是一旦涉及到变形吧.....超过一个就会比较卡......
asd用的KAGParser也是支持if这些指令的, asd我没记错好像也支持[iscripts],所以其实asd能做的东西挺多的...但新手的话只建议用来做一些简单的状态调整,规则变量建议是【tf.图像_xxx】
历史记录和yesno还有rlick这些东西帖子一堆就不在这里说了......
timer那个帖子炸了所以....正常用timer的话其实new Timer( Event , "" )就行....就是timer那个最大容许量是动作异常的不知道为啥
在用kag写东西的时候主要还是先搞明白trans和层到底是什么东西,怎么运作的,因为后面最麻烦的其实就是状态管理...
kag的东西大部分我已经没啥记忆了.....怎么用tjs调用kag的东西我是完全没学过所以...


  • 敬启绝音
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
tjs本身来讲主要是没啥教程,kagsystem那堆东西虽然大部分都在mainwin里但是没啥文档...
玩tjs一开始基本就是要把tjsdoc和krdoc看个大概,然后从win,layer开始玩个大概,之后timer,尝试配合.load自己做个asd,后面的东西一步步推进去基本也就会了...剩下的基本上就不是学tjs能学会的东西了【
编辑tjs的话,还是推荐用vsc....有个霓虹的tjs插件支持//#region //#endregion折叠区块,还是挺舒服的.....就是/**/的语法有点点不爽....
tjs的本身其实就挺多坑的.....但有一些小技巧还是比较好用的
tjs首先还是要搞懂它对什么值引用,对什么值复制...这个光说没啥用,被坑几次基本就明白了....还有比如class继承必须要用完整路径之类的......
tjs在function a(s*){},这个星号的可变长度变量,在赋值的时候传入的是一个数组
也就是a( a , b , c ),s*里的数据是[ a , b , c ],当然如果*没得变量名,虽然依然可以用*传值,但是它不可以**作........
当然后置*不止这一个用法,在数组后面,比如s = [ a , b , c ],那么传入s*,这个数组会被展开传入.......同时这个方法只能对Array使用【
tjs在处理undefind类型的时候真的很魔性......虽然这东西只会出现在类里,但是很多时候为了它不得不用一大堆try...........因为它不让你判定,只要访问就炸.....
再加上try区块报错会在控制台显示............所以说debug在写tjs的时候其实不算太好用.....
tjs可以用instanceof关键字判定某个值是否是某个类型的实例,但无法判定未实例化的类,而未实例化的类虽然无法使用类内值,但可以调用类内函数作为静态类使用.......
Scripts.getClassNames无法对没实例化过的类获取类名,或者说获取到的那个数组是空的.........
类似于System,Scripts,Storages,Plugins这些不能被实例化的类,如果你去继承它,函数是共通的,例如你用一个类继承了Plugins并删了link,那这个函数就真的莫得了....
而如果你不想让某个类被继承的话,那么可以class a{} a = new A();
throw new Exception不能像System.inform那样传两个参数,但用throw %[];可以向上传递错误信息,虽然没太大卵用
Dic可以用Array.assign来复制一份,虽然不能保证顺序,但能拿到字典里的keyvaluelist,规则是[ key , value* ]
WaveSoundBuffer这个东西一堆问题,flags-onLabel这个事件组基本是暴毙的,不play一下获取totalTime会报错,所以一般都是load的时候会直接playstop............
同时这个问题对Video也是一样的...................
tjs除了父类有两个重载.....直接写tjs是没法重载的,所以大部分时间会需要利用类型判定来支持更多处理............因为会大量使用,所以我自己的话是每个类型挂一个t_type常量,然后挨个is系列判定函数
undefined在is里会变成这样...我不用===主要是因为这东西有的时候会莫名其妙的动作异常......因为会报错,所以会被回收【但null和undefind不是一个类型
function isVoid( Value ){ try{ return typeof( Value ) == t_Void; }catch{ return 1; } }
但isNull我是用来验证某个对象内的某个值是否存在,这个东西只能在z里用...
function isNull( Value , Context = global ){ try{ return typeof( Scripts.eval( Value ,,, Context ) ) == t_Null; }catch{ return 1; } }
函数的执行上下文可以使用incontextof关键字改写,用法是value = value incontextof context,上下文除了一些global问题其实也就没啥了....z的话会麻烦一点,但规则差不多就那些
用tjs写一些简易的指令解释器实际上并不难...但是要变成解析器就比较麻烦了...
解释器的话,类似cmd这样的命令行,自己写规则或者套用csv的规则,反正拿来翻译就是了,配表也是一样的...
不喜欢的话.load进来自己解析就完事了...只要是表或者逐行只是单纯的执行命令这样,不带规则的,基本都还好.....
带规则的比如if这一个东西就需要折腾一阵子了【..........
只是要怎么应用到kag,反正我是不懂......
kr2时代dlc的备份现在在这里https://github.com/krkrz/krkrz/tree/last_hodgepodge_repository/src/plugins/win32
steam的话我记得他这个基本上可以解决大部分问题吧....除了一个社区界面的问题,那个玩应是因为跟kr的帧刷新机制冲突,要调用那个只能搞一个层一直在那update刷新......
http://wiki.cngal.org/index.php?title=Kirikiri_%E9%9B%86%E6%88%90_Steamworks


  • 怪子-01
  • 巡抚
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
提问
kag里如何实现while语句比较简洁明了?
目前个人是用
; ----循环开始
*animLoop
[wait time=100]
[if exp="kag.move != kag.lastMove"]
[jump target=*endAnimLoop]
[endif]
[jump target=*animLoop]
*endAnimLoop
[endif]
; ----循环结束
虽然可行,但如果嵌套循环,或者标签@if和@endif写得比较多的话,容易搞混对应关系,jump多了在没有单步调试的情况下可能连自己也搞不清程序的运行顺序从而导致bug。
另外对于这种写法,控制台日志会增长得非常快,基本是循环里的冗余信息。
请问有无较好的解决方案?


  • 怪子-01
  • 巡抚
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
接上楼提问。
决定换个思路解决,如果以 @l 和 @璐村惂鐢ㄦ埛_00000Db馃惥 为原型写一个循环监听的新标签...
这个标签有 time 和 exp 两个属性,time 用于指定检查频率, exp 用于指定检查的内容。
//DIY开始
function loopForMonitor(elm)
{
// 剧本停止执行
stablePosibility = true;
cancelSkip();
// conductor 处于等待状态,并按频率进行检查
// (这一块代码看不懂..应该就只需要改这一块)
conductor.wait(%[
click : function
{
notifyRun();
} incontextof this
]);
notifyStable();
return -2;
}
//DIY结束
//——————————————————无关代码————————————————
//.........................................................................................................................................
//——————————————————————————————————————
//DIY开始
animLoop : function(elm)
{
// 循环监听
return loopForMonitor(elm);
} incontextof this,
//DIY结束
理论上应该把 elm.exp 和 elm.time 放进 conductor.wait(%[......]);中,像是
if (elm.exp !== void) {
while(Scripts.eval(elm.exp))
sleep(elm.time); //sleep函数不知道tjs有没有。这里就是想表达这么个意思。
}
想问一下 conductor.wait(%[......]);这一块的代码逻辑是怎样的。实在是看不明白。


  • 敬启绝音
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
kr的class总有一些奇奇怪怪的特性.......
比如好像只有class的成员在未定义的情况下是undefind...
比如
class A{} A.a = function(){ System.inform(a); }
A = new A(); A.a();
是可以正确执行的...也就是说一个类在被实例化之前是可以被改写的,而且改写之后还能正常new出来......
在tjs中用class声明的类,在实例化前除了不能使用类内值以外( 可以用global访问全局值 ),它的函数是可以正常工作当一个静态类去用的.............
父类那种无法实例化的类,例如System,Storages这些东西....或者说继承的时候就直接是个实例,没猜错的话应该只是放了个上下文指针
这样的类只有在切换上下文在类内或者从类外直接赋值的时候才能正常声明值,而直接在继承下来的类内声明一个值是无效的..........
class A extends Plugins{ var a = 233; }
A.a = 233;
Scripts.exec( "function b(){ System.inform(a); }" ,,, A ) ;
A.b();
比如实际上有效了的是外面那个A.a而不是var a................
但不管是哪种不可实例化的父类,如果你继承了它并且修改了父类中的元素....如果是delete的话,那么这个方法真的会被完全删除.......而如果是在子类中声明同名函数倒是能用super访问到,也不会影响原本父类的函数


  • 敬启绝音
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//#region 读一组类型常量和验证函数
// invalidate isvalid 无效化及是否无效化验证标识
// int() real() string() 类型转换函数
var t_Void = "void";
var t_Integer = "Integer";
var t_Real = "Real";
var t_String = "String";
var t_Object = "Object";
var t_Octet = "Octet";
var t_Array = "Array";
var t_Dic = "Dictionary";
var t_Func = "Function";
var t_Class = "Class";
var t_Null = "undefined";
// undefined作为void处理,没有直接写是因为如果是undefined的话会直接报错被catch回收
function isVoid( Value ){ try{ return typeof( Value ) == t_Void; }catch{ return 1; } }
function isInteger( Value ){ try{ return typeof( Value ) == t_Integer; }catch{ return 0; } }
function isReal( Value ){ try{ return typeof( Value ) == t_Real; }catch{ return 0; } }
function isString( Value ){ try{ return typeof( Value ) == t_String; }catch{ return 0; } }
function isObject( Value ){ try{ return typeof( Value ) == t_Object; }catch{ return 0; } }
function isOctet( Value ){ try{ return typeof( Value ) == t_Octet; }catch{ return 0; } }
function isArray( Value ){ try{ return Value instanceof t_Array; }catch{ return 0; } }
function isDic( Value ){ try{ return Value instanceof t_Dic; }catch{ return 0; } }
function isFunc( Value ){ try{ return Value instanceof t_Func; }catch{ return 0; } }
function isClass( Value ){ try{ return Value instanceof t_Class; }catch{ return 0; } }
function isNull( Value , Context = global ){ try{ return typeof( Context[ Value ] == t_Null ){ return 1; } }catch{ return 1; } }
function isInstance( Value , ClassID ){ try{ return Value instanceof ClassID; }catch{ return 0; } }
function isDerivedInstance( Value , ClassID ){ try{ if( Scripts.getClassNames( Value ).find( ClassID ) == -1 ){ return 0; } return 1; }catch{ return 0; } }
//#endregion
isNull改了一下在2里可能不太对劲...就像上面说的,类内值如果未定义直接访问会炸掉,但如果用typeof去访问有可能会正常返回undefind.....但有的时候它会不正常.........
z里的话是这样的function isNull( Value , Context = global ){ try{ return typeof( Scripts.eval( Value ,,, Context ) ) == t_Null; }catch{ return 1; } }


2025-08-31 12:36:43
广告
不感兴趣
开通SVIP免广告
  • 怪子-01
  • 巡抚
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
悲。
在Override.tjs里写了这么一串代码,大致想法是实现了。
但是貌似不能直接通过super.fuc(...)回调父类的函数了。注释掉super.onKeyDown(...);就能用。


  • 怪子-01
  • 巡抚
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
提问。
最近有一个想法,如果在读取图片后,能够自动调整游戏变量的话,这可以在很大程度上减少脚本编写的麻烦。
举个栗子。当读取一张800*600像素值的图片时,是否能单独读取这张图片的长度和宽度信息,然后存入游戏变量里呢?
如果可以的话,当对图片进行临时更改时,比如将像素值更改为1000*600时,游戏变量仍然可以正常存入,后续通过游戏变量指定的各种属性值也都不会受到影响。
换个说法就是把图片信息作为常量读取并保存。
但是实际做起来没有一点头绪,,,因为这涉及对文件的操作,然而 TJS关于文件信息读取的操作是真的从来没有见过。
C++和JAVA这种还能搜索到解决方案,TJS是真的麻爪。


  • 敬启绝音
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
class Check{
function Check(){
var Define = "DEFINE_CI_CHECK";
try{
if( global[ Define ] == void ){ return; }
return global[ Define ];
}
catch{
global[ Define ] = void;
global[ Define ] = new Check();
return global[ Define ];
}
}
}
使用Check.Check()获取单例.............
原理是类在声明时已经把函数声明了,但值仅在实例化之后才会声明赋值,因此可以直接调用未实例化的类函数
直接new的话构造函数不会返回任何值,但直接调用构造函数可以.....这个时候构造函数仅作为普通的函数调用
class作为对象也可以作为半个字典使用,例如在类中声明一个列表保存keys,对应的values直接写进this,目的主要是为了快速访问和快速查询...放在字典里更麻烦
也就是
class{ var keys = []; function add( key , value ){ keys.add(...); this[ID] = value; } }
当然也是借着tjs才能这么玩.......


  • 贴吧用户_0C74WZa
  • 庶人
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主你好
有个问题想请教一下
关于您的导航帖里面的s大大的教程:
S的教程,KRKR入门教程,教你做出一个完整的小游戏
pan.baidu.com/s/1eQmvgFw
里面有一个krkr源程序下载地址(迅雷、BT):http://58.251.57.206/down?cid=2CA4450B80FEEEFC915F6A9BDD6A556D4AF6E250&t=2&fmt=&usrinput=kagexpress&dt=1002007
我尝试过了但是下不了
请问一下可以给个新的可用地址或者指个路吗?


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 77回复贴,共1页
<<返回吉里吉里吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示