Page 12 of 43 FirstFirst ... 2710111213141722 ... LastLast
Results 221 to 240 of 841

Thread: Fate/Hollow Ataraxia Voice Patch

  1. #221
    Switch on the Holy Night Quibi's Avatar
    Join Date
    Mar 2012
    Gender
    Male
    Posts
    1,382
    Blog Entries
    1
    Quote Originally Posted by ftfan View Post
    @Quibi - console log is not output and this error occurs before starting the game. Can not you help with only this(https://i.imgur.com/XjiBcVV.png) ?

    and is there anyone trying this on kk2 for iOS?
    I probably can help you, but I need some information. When you launch the game there should be a line in the log saying:
    OS : <name of OS>
    I need to know what is written there.

  2. #222
    thanks Quibi
    I have iPhone6 and iPad Pro.
    Console was shown as "OS : iPhone(iPhone)" on iphone, or "OS : iPad(iPad)" on iPad.

  3. #223
    The Producer the world needed, not the one it deserved. dragonwarz50's Avatar
    Join Date
    May 2012
    Gender
    Male
    Posts
    269
    Quibi! I don't know how or why, but my saves disappeared and the ticket was reset. Do you know any possible reasons as to how this happened?

    Well, the savedata folder is still there and so are the tickets of my where I was last. But it doesn't seem to be detected.
    Last edited by dragonwarz50; October 16th, 2017 at 12:43 PM. Reason: elaboration

  4. #224
    And I have same symptoms like ftfan when I remove patch.tjs
    (my phone is galaxy S7 and kirikiroid2 1.3.3)

  5. #225
    I want to run this game by kirikiroid2 but if I remove patch.tjs,
    https://i.imgur.com/DcOoriK.png
    this error is comming out and
    if I don't remove patch.tjs, the patches don't work. whats wrong??

  6. #226
    剣大神 XerBlade's Avatar
    Join Date
    Mar 2011
    Location
    Depletion Garden, Nashville, TN, USA
    Age
    39
    Gender
    Male
    Posts
    868
    Quote Originally Posted by dragonwarz50 View Post
    Quibi! I don't know how or why, but my saves disappeared and the ticket was reset. Do you know any possible reasons as to how this happened?

    Well, the savedata folder is still there and so are the tickets of my where I was last. But it doesn't seem to be detected.
    Check config.ksc in your game folder with a text editor and make sure saveDataLocation is set to the correct path, and in the correct format.
    Mine, for example, looks like this on my current machine:
    Code:
    %[
     "saveDataLocation" => string "file://./c/users/xerbl/onedrive/documents/FateHA_Savedata"
    ]
    Just deleting the file and then running the game (probably in Japanese locale) once usually works, too.

  7. #227
    Switch on the Holy Night Quibi's Avatar
    Join Date
    Mar 2012
    Gender
    Male
    Posts
    1,382
    Blog Entries
    1
    @Kanpong - You're using the Korean patch which is not compatible with this one. What did you think will happen? \=
    There are some people porting the voices to the Korean patch, if you're interested in helping them: http://forums.nrvnqsr.com/showthread...=1#post2744048
    @ftfan - I'll upload a fix for the ios tomorrow probably (with some other bug fixes).

  8. #228
    Oh... then please upload the files when they complete making patches for korean😭

  9. #229
    Does anyone know how to make it work from the external sd card on kirikiroid2 ? It seems to work only from the internal memory in my case.

    Also, it's slow as hell. I have to wait 3-4 sec for each line to appear (I didn't have this problem with fate stay night on kirikiroid2 1.3.3).

    Good job otherwise.

  10. #230
    分かろうとするな、感じれ Mcjon01's Avatar
    Join Date
    Mar 2011
    Age
    35
    Gender
    Male
    Posts
    54,392
    Blog Entries
    1
    Play the game on PC like real fans you filthy degenerates

  11. #231
    剣大神 XerBlade's Avatar
    Join Date
    Mar 2011
    Location
    Depletion Garden, Nashville, TN, USA
    Age
    39
    Gender
    Male
    Posts
    868
    I won't rest until I can play the game on a TI-83. Not even the Plus or the Silver Edition or anything fancy with extra RAM, the original model. Anyone must be able to play this anywhere at any time on anything.

    So, does anyone have one of those smart refrigerators who can do some testing?

  12. #232
    I think that is apps problem

  13. #233
    I used to play visual novels on my computer but it's much more comfortable on my Nvidia shield K1 tablet.

  14. #234
    Hi and thank you all for your hard work! I'm really grateful for this patch, since I've held off on playing Hollow Ataraxia just because of the lack of voices. Unfortunately, I've been receiving an error recently where if I try to start the game it just crashes as soon as I press "continue" after choosing my ticket. It worked perfectly up until this point (I've just progressed past the third "interlude" with Bazett etc, so I'm around the 30% mark), but I'm unable to start it now. I tried disabling the decensor patch, vita OPs and so on, but it hasn't seemed to affect anything. Here's my log:
    Spoiler:

    • // Conductor.tjs - KAG シナリオ進行処理
    • // Copyright (C)2001-2005, W.Dee and contributors 改変・配布は自由です
    • @if(kirikiriz)
    • Plugins.link("KAGParser.dll");
    • @endif
    • class ConductorException extends Exception
    • {
    • // ConductorException - Conductor がタグハンドラを処理中に発生した例外を
    • // 投げる時に使われる例外クラス
    • function ConductorException() { super.Exception(...); }
    • function finalize() { super.finalize(...); }
    • };
    • class BaseConductor extends KAGParser
    • {
    • // BaseConductor - シナリオ進行処理のベースクラス
    • var timer;
    • var oneshot;
    • var _interrupted = false; // 中断中か
    • var timerEnabled = false; // タイマが起動中か
    • var pendings; // 後回しにされたタグ
    • var inProcessing = false; // timerCallback を処理中かどうか
    • var reentered = false; // timerCallback 中に 再入したか
    • var nextTimerTick = 0; // 次にタイマーが発動されるはずの tick
    • function BaseConductor()
    • {
    • // コンストラクタ
    • super.KAGParser(...);
    • timer = new Timer(timerCallback, '');
    • // Timerの第二引数に空文字列を指定すると
    • // 第1引数に指定した関数を直接呼び出すようになる
    • oneshot = new AsyncTrigger(timerCallback, '');
    • // これも同様
    • oneshot.cached = true; // イベントのキャッシュを有効に
    • pendings = [];
    • }
    • function finalize()
    • {
    • // finalize()
    • invalidate timer;
    • invalidate oneshot;
    • super.finalize(...);
    • }
    • function clear()
    • {
    • // clear オーバーライド
    • pendings.clear();
    • super.clear();
    • }
    • function timerCallback()
    • {
    • // 次の要素を得る
    • nextTimerTick = timer.interval + System.getTickCount();
    • var obj;
    • try
    • {
    • if(inProcessing)
    • {
    • // 再入
    • reentered = true;
    • timer.interval = 0;
    • return;
    • }
    • inProcessing = true;
    • for(;;)
    • {
    • if(pendings.count > 0)
    • {
    • // 後回しにされたタグがある場合
    • obj = pendings[0];
    • pendings.erase(0);
    • }
    • else
    • {
    • // 後回しにされたタグがないので次のタグを得る
    • obj = getNextTag(); // 次のタグを得る
    • // getNextTag() の中で、pendings に追加された (iscript など)
    • if(pendings.count > 0)
    • {
    • pendings.add(obj);
    • continue;
    • }
    • }
    • if(obj === void)
    • {
    • // シナリオ終了
    • timer.enabled = false;
    • timerEnabled =false;
    • onStop();
    • inProcessing = false;
    • reentered = false;
    • return;
    • }
    • else
    • {
    • // onTag を呼ぶ
    • var step = onTag(obj);
    • if(step === void)
    • throw new Exception(__("onTag が void を返しました (%s)( おそらくタグハンドラの戻り値を返し忘れた )").sprintf(obj.tagname));
    • step = int step; // step を数値に
    • if(step == 0)
    • {
    • // ウェイトを掛けずに次へ
    • timer.interval = 0;
    • continue;
    • }
    • else if(step < 0)
    • {
    • switch(step)
    • {
    • case -5: // いったんイベントを処理(現在のタグは後回し)
    • pendings.insert(0, obj);
    • oneshot.mode = atmAtIdle;
    • oneshot.trigger(); // トリガ
    • timer.interval = 0; // タイマは停止
    • inProcessing = false;
    • reentered = false;
    • return;
    • case -4: // いったんイベントを処理
    • oneshot.mode = atmAtIdle;
    • oneshot.trigger(); // トリガ
    • timer.interval = 0; // タイマは停止
    • inProcessing = false;
    • reentered = false;
    • return;
    • case -3: // 後回ししてブレーク
    • pendings.insert(0, obj);
    • timer.interval = 0; // タイマは停止
    • inProcessing = false;
    • reentered = false;
    • return;
    • case -2: // ブレーク
    • timer.interval = 0; // タイマは停止
    • inProcessing = false;
    • reentered = false;
    • return;
    • case -1: // シナリオ終了
    • timer.interval = 0;
    • timer.enabled = false;
    • timerEnabled = false;
    • onStop();
    • inProcessing = false;
    • reentered = false;
    • return;
    • }
    • }
    • else
    • {
    • // 次へ
    • if(timer.interval != step)
    • {
    • timer.interval = step;
    • nextTimerTick = step + System.getTickCount();
    • }
    • inProcessing = false;
    • reentered = false;
    • return;
    • }
    • }
    • }
    • inProcessing = false;
    • reentered = false;
    • }
    • catch(e)
    • {
    • // Debug.logAsError();
    • timer.enabled = false;
    • timerEnabled =false;
    • onStop();
    • inProcessing = false;
    • var msg = "エラーが発生しました\n"
    • "ファイル : " + curStorage + " 行 : " + (curLine+1) + "\n"
    • "タグ : " + (obj === void ? "不明" : obj.tagname)
    • + " ( ← エラーの発生した前後のタグを示している場合もあります )\n"
    • + e.message;
    • if((typeof e.trace) != "undefined") dm("trace : " + e.trace);
    • dm(msg);
    • throw new ConductorException(msg);
    • // System.inform(msg, "エラー");
    • }
    • }
    • function onTag()
    • {
    • // オーバーライドすること
    • return -1;
    • }
    • function onStop()
    • {
    • // (シナリオの)停止時に呼ばれる。
    • // stop() から呼ばれるわけではない。
    • // オーバーライドすること。
    • }
    • function startProcess(immediate = false)
    • {
    • // シナリオ進行開始
    • // immediate = false の場合は非同期で実行を開始するので、
    • // このメソッド内でタグハンドラが呼ばれることはない
    • // 次のイベント配信のタイミングで最初のタグハンドラが呼ばれる。
    • // immediate = true の場合は、このメソッド内で初回のタグハンドラが
    • // 処理されるため、呼び出し側はこのメソッドの実行が終わったら
    • // すぐに吉里吉里に制御を戻す(すべての関数から抜ける)ようにするべき。
    • resetInterrupt();
    • timer.interval = 0; // 初期インターバル
    • timerEnabled = true;
    • if(!_interrupted)
    • {
    • timer.enabled = true; // タイマー開始
    • if(immediate)
    • {
    • timerCallback();
    • }
    • else
    • {
    • oneshot.mode = atmExclusive;
    • // イベントが配信されるまで他の非同期イベントをブロック
    • oneshot.trigger(); // トリガ
    • }
    • }
    • }
    • function start()
    • {
    • // タイマ開始
    • timerEnabled = true;
    • timer.enabled = true;
    • }
    • function stop()
    • {
    • // タイマ停止
    • timer.enabled = false;
    • timerEnabled = false;
    • }
    • property interrupted
    • {
    • getter() { return _interrupted; }
    • setter(x)
    • {
    • if(!x)
    • {
    • // enable
    • if(timerEnabled)
    • {
    • timer.interval = 0;
    • timer.enabled = true;
    • oneshot.mode = atmExclusive;
    • // イベントが配信されるまで他の非同期イベントをブロック
    • oneshot.trigger(); // トリガ
    • }
    • }
    • else
    • {
    • // disable
    • oneshot.cancel();
    • timer.enabled = false;
    • }
    • _interrupted = x;
    • }
    • }
    • function assign(src)
    • {
    • // src の状態をこのオブジェクトにコピー
    • var t = timer;
    • var st = src.timer;
    • t.enabled = false;
    • t.interval = st.interval;
    • nextTimerTick = src.nextTimerTick;
    • if(st.enabled && st.interval != 0)
    • {
    • // タイマ interval の調整
    • var delta = nextTimerTick - System.getTickCount();
    • if(delta > 0) t.interval = delta; else t.interval = 1;
    • }
    • t.enabled = st.enabled;
    • timerEnabled = src.timerEnabled;
    • _interrupted = src._interrupted;
    • if(src.pendings.count > 0)
    • pendings.assignStruct(src.pendings);
    • else
    • pendings.clear();
    • super.assign(src);
    • }
    • function store()
    • {
    • // store オーバーライド
    • return super.store(...);
    • }
    • function restore(dic)
    • {
    • // restore オーバーライド
    • super.restore(...);
    • pendings.clear();
    • }
    • function loadScenario(/*file*/)
    • {
    • // loadScenario オーバーライド
    • pendings.clear();
    • //dm("loadScenario: "+file);
    • super.loadScenario(...);
    • }
    • function goToLabel()
    • {
    • // goToLabel オーバーライド
    • pendings.clear();
    • super.goToLabel(...);
    • }
    • function enqueueTag(tag)
    • {
    • pendings.add(tag);
    • }
    • var dash_character = "―";
    • var block_character = "■";
    • // Blech. TJS2 "String" class is /supposed/ to have a .repeat() method.
    • function dashrepeat(count, character)
    • {
    • var dashes = "";
    • for (var i=0;i<count;i++) {
    • dashes += character;
    • }
    • return dashes;
    • }
    • function replaceLine(text, reg, character=dash_character) {
    • var results = reg.exec(text);
    • while(results.count == 2) {
    • var count;
    • if (results[1] == "") {
    • count = 1;
    • } else {
    • count = results[1];
    • }
    • text = text.replace(reg,dashrepeat(count, character));
    • results = reg.exec(text);
    • }
    • return text;
    • }
    • function cleanLine(line=curLineStr) {
    • if (isInQuiz()) {
    • return quizdata.question;
    • }
    • if (line.length > 0 && line[0] == "@") {
    • return "";
    • }
    • line = replaceLine(line,/\[line len=([0-9]+)]/); //Replace line-tags with dashes
    • line = replaceLine(line,/\[line([0-9]*)]/); //Replace slightly-different-line-tags with dashes
    • line = replaceLine(line,/\[block len=([0-9]+)]/,block_character);
    • line = line.replace(/\["[a-zA-Z0-9_-]*"]/g,""); //Remove arrays with string quotes indexes (not sure if possible but just in case)
    • line = line.replace(/\['[a-zA-Z0-9_-]*']/g,""); //Remove arrays with string apostrophes indexes (not sure if possible but just in case)
    • line = line.replace(/\[[0-9]*]/g, ""); //Remove arrays with number indexes (required or it will break when there is nested []s
    • line = line.replace(/\[[^]]*]/g, ""); //Remove tags
    • return line;
    • }
    • function isInQuiz() {
    • return curStorage == 'QuizSystem.ks' && owner.currentLabel == '*quiz_question';
    • }
    • var conductorPrevStorage;
    • var conductorPrevLine;
    • var conductorPrevLineStr;
    • var lastQuizdataQuestion;
    • function isNewLine() {
    • if (curStorage != conductorPrevStorage || curLine != conductorPrevLine || (isInQuiz() && lastQuizdataQuestion != quizdata.question)) {
    • conductorPrevStorage = curStorage;
    • conductorPrevLine = curLine;
    • conductorPrevLineStr = curLineStr;
    • if (isInQuiz() && lastQuizdataQuestion != quizdata.question) {
    • lastQuizdataQuestion = quizdata.question;
    • }
    • return true;
    • }
    • return false;
    • }
    • }
    • class Conductor extends BaseConductor
    • {
    • // Conductor - シナリオ進行処理
    • /*const*/ var mStop = 0; // 停止
    • /*const*/ var mRun = 1; // 動作中
    • /*const*/ var mWait = 2; // 待ち
    • var owner;
    • var handlers;
    • var status = mStop;
    • var timeOutTimer;
    • var waitUntil = %[];
    • var lastTagName = ''; // 直前のタグ名
    • function Conductor(owner, handlers)
    • {
    • // コンストラクタ
    • super.BaseConductor();
    • ignoreCR = global.ignoreCR;
    • debugLevel = tkdlVerbose;
    • this.owner = owner;
    • this.handlers = handlers;
    • timeOutTimer = new Timer(onTimeOut, '');
    • }
    • function finalize()
    • {
    • // finalize()
    • invalidate timeOutTimer;
    • super.finalize(...);
    • }
    • function run(immediate = false)
    • {
    • // 実行の開始
    • // immediate=true の場合は、
    • // このメソッドを実行したらすぐに吉里吉里に制御を戻す
    • // (すべての関数から戻る)こと
    • status = mRun;
    • startProcess(immediate);
    • }
    • function sleep()
    • {
    • // 実行の停止
    • status = mStop;
    • stop();
    • }
    • function wait(until)
    • {
    • // 待ち
    • // until = trigger で用いるシグナル名とコールバック関数の
    • // 辞書配列
    • status = mWait;
    • stop();
    • (Dictionary.assign incontextof waitUntil)(until);
    • }
    • function waitWithTimeOut(until, timeout)
    • {
    • // 待ちを行うが、タイムアウトがある
    • // タイムアウト時には 'timeout' がトリガされるので
    • // ハンドラを定義すること。
    • if(timeout == 0) timeout = 1; // timeout が 0 の場合は 1 に
    • status = mWait;
    • stop();
    • (Dictionary.assign incontextof waitUntil)(until);
    • timeOutTimer.interval = timeout;
    • timeOutTimer.enabled = true;
    • }
    • function onTimeOut()
    • {
    • // timeOutTimer がタイムアウトした
    • timeOutTimer.enabled = false;
    • trigger('timeout'); // 自分自身で timeout をトリガする
    • }
    • function trigger(name)
    • {
    • // waitUntil 内にシグナル名 name が存在すれば、実行再開、
    • // 同時に waitUntil に登録されたメソッド(リスタートハンドラ)を呼ぶ
    • // シグナル名に _arg がついたものが waitUntil 内にあれば、
    • // それを引数としてハンドラに渡す
    • // waitUntil はクリアされる
    • if(status != mWait) return false;
    • var func = waitUntil[name];
    • if(func !== void)
    • {
    • var arg = waitUntil[name + '_arg'];
    • if(arg !== void) func(arg); else func();
    • (Dictionary.clear incontextof waitUntil)();
    • run();
    • return true;
    • }
    • else
    • {
    • return false;
    • }
    • }
    • function onTag(elm)
    • {
    • // タグの処理
    • var tagname = elm.tagname;
    • var handler = handlers[tagname];
    • if(handler !== void)
    • {
    • var ret = handler(elm);
    • lastTagName = tagname;
    • return ret;
    • }
    • return onUnknownTag(tagname, elm);
    • }
    • function onStop()
    • {
    • // BaseConductor.onStop オーバーライド
    • // 停止時に呼ばれるのでステータスを mStop にする
    • status = mStop;
    • if(owner.conductor == this) handlers.s(); // ハンドラの s (停止) を呼ぶ
    • }
    • function onScript(script, scriptname, lineofs)
    • {
    • // scirpt を実行する
    • try
    • {
    • Scripts.exec(script, scriptname, lineofs);
    • }
    • catch(e)
    • {
    • throw new Exception(__("%s の 行 %s から始まる iscript ブロックでエラーが発生しました。\n( 詳細はコンソールを参照してください )\n%s").sprintf(scriptname, lineofs, e.message));
    • }
    • return true;
    • }
    • function store()
    • {
    • // store オーバーライド
    • return super.store(...);
    • }
    • function restore(dic)
    • {
    • // restore オーバーライド
    • super.restore(...);
    • lastTagName = '';
    • }
    • function onScenarioLoad()
    • {
    • conductorPrevStorage = void;
    • conductorPrevLine = void;
    • conductorPrevLineStr = void;
    • lastQuizdataQuestion = void;
    • return owner.onConductorScenarioLoad(...);
    • }
    • function onScenarioLoaded()
    • {
    • return owner.onConductorScenarioLoaded(...);
    • }
    • function onLabel()
    • {
    • return owner.onConductorLabel(...);
    • }
    • function onJump()
    • {
    • return owner.onConductorJump(...);
    • }
    • function onCall()
    • {
    • return owner.onConductorCall(...);
    • }
    • function onReturn()
    • {
    • return owner.onConductorReturn(...);
    • }
    • function onAfterReturn()
    • {
    • return owner.onConductorAfterReturn(...);
    • }
    • function onScript()
    • {
    • return owner.onConductorScript(...);
    • }
    • function onUnknownTag()
    • {
    • return owner.onConductorUnknownTag(...);
    • }
    • }


    I apologize if this has already been answered (although I've downloaded all the 0.X patches) or if I've sent the wrong thing. Thank you in advance, though!
    Last edited by Zwei; October 17th, 2017 at 02:18 PM.

  15. #235
    Fuckin' chicken grill!!! Kotonoha's Avatar
    Join Date
    Mar 2011
    Posts
    29,299
    Blog Entries
    25
    After you installed the fix patches, did you make sure to choose "start" instead of "continue" the first time? The continue function should start working again afterwards.

    (btw Quibi, just combine the patch and the fixes into one file already seriously)

  16. #236
    Yeah, since I waited a few days to start playing until the fixes were out (was hoping I'd be able to avoid errors like this because of it, but such is life). I suppose I could try going through Start instead of Continue right now, if you think that'd work.

    EDIT: I tried clicking Start instead and that worked. Saved, exited out and retried clicking Continue, which also worked. Not sure if the error is fixed indefinitely now, but it works for now, so thanks!
    Last edited by Zwei; October 17th, 2017 at 02:49 PM.

  17. #237
    剣大神 XerBlade's Avatar
    Join Date
    Mar 2011
    Location
    Depletion Garden, Nashville, TN, USA
    Age
    39
    Gender
    Male
    Posts
    868
    I personally never used Continue to begin with. It takes all of a few seconds if I want to get to a specific part of the loop instead of doing something at the beginning anyway, and using Continue has always come with possible issues (not crashes, but, you know, issues), patch or no patch.

    It's by far easier than it was starting from the beginning of the loop every time in Kagetsu Tohya, and I still always did that anyway, for the same reasons.

  18. #238
    Switch on the Holy Night Quibi's Avatar
    Join Date
    Mar 2012
    Gender
    Male
    Posts
    1,382
    Blog Entries
    1
    I will combine and upload a unified patch soon, but there's some more stuff I want take care of before that.

    If you got the memory error even after using the fixes, I might have to decrease the number of history jump pages even more.
    First iteration was 15 -> 10. Just in case, I've added the option for the use to decrease it even more by creating a text file called "max_history.txt" with the maximum number of pages in it. Haven't really announced about it because I wanted to see if it keeps happening. Anyway, it's possible to decrease this value from 10 to an even lower number if anyone's getting crashes.
    (I hate this old engine)

  19. #239
    Quote Originally Posted by Kanpong View Post
    Oh... then please upload the files when they complete making patches for korean
    we are planning to finish by sometime near november, since we have our other priorities before the patch xD. If you want to contribute, contact us.

  20. #240
    Hey again, I don't know if any one else reported this but I found out that playing through the Hanafuda tutorial, towards the end it just stops and doesn't progress. It's not a crash or anything but it just halts. I can leave the tutorial and still play as normal but I just wanted to report that.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •