1595 lines
No EOL
55 KiB
Text
1595 lines
No EOL
55 KiB
Text
|
||
[iscript]
|
||
|
||
|
||
//変数制御
|
||
|
||
var TimerSpeed = 200;//タイマーを設定する!設定ミリ秒に一度発動。なぜ変数かというと、これを使いまわしたEXP係数などにも反映させる為
|
||
var TimerEffect = (TimerSpeed / 1000);//タイマーによってかかる係数を今計算しちゃう 後だとなんかわかんなくなりそう
|
||
|
||
//ブーストの導入時に使用された。スライダーのドラッグを検出する
|
||
var lSliderDragged;
|
||
|
||
var lTester = 0;//思う存分値を変えるために作ったどうでもいい変数だよ
|
||
var lFocused = 0;//ウィンドウのフォーカスをチェックする
|
||
|
||
var lArrMclickExp = [];//Mクリ用の配列
|
||
|
||
var lExchangeActName;
|
||
var lExchangeActCam;
|
||
|
||
|
||
var BMF;
|
||
|
||
var arrSkn=[];
|
||
|
||
//ダメージドの境界
|
||
var DamageBorder = 60;
|
||
var TargetBorder = 85;
|
||
|
||
//あまり無い機会かもしれないがティックが会話前に滑る…かもしれない。それを一応消しておく
|
||
var TickStop = 0;
|
||
|
||
//HP0時に使用される
|
||
var BlackOutOpacity = 0;
|
||
|
||
var PinkOutOpacity = 0;
|
||
|
||
//クリッカブル領域マップの数を数える為に改造した
|
||
var lClickableNum=0;
|
||
|
||
//射精等のゲージマックス
|
||
var EjacGaugeMAX=0;
|
||
var OrgaGaugeMAX=0;
|
||
|
||
|
||
var Permission;
|
||
var EX_Flag = false;
|
||
|
||
var krkrWidth = 1280;
|
||
var krkrHeight = 720;
|
||
|
||
//EXを行ったかどうか
|
||
var DoneEX=[];
|
||
|
||
|
||
//1280サイズ用。1280から960を引いた値の2分の1
|
||
var krkrLeft = 180;
|
||
|
||
//800から960にしたいので、その比率を入力する。
|
||
var krkrConvert = 1.2;
|
||
|
||
//parameterで使用される
|
||
var param_sum = 0;
|
||
|
||
|
||
var lDragging = 0; //ButtonLayer ドラッガブル定義
|
||
var lDragging_Time = 0; //ButtonLayer ドラッグ開始時間の定義。ドラッグ時間を取得する為の仕掛け
|
||
|
||
var lDrag_Permission = 0;//Buttonmacro(吉里吉里) ドラッガブルにセーフティをかける。バグ対策にもなる
|
||
var lDrag_OriginX; //ButtonLayer ドラッガブル定義
|
||
var lDrag_OriginY; //ButtonLayer ドラッガブル定義
|
||
//var cflg = 0; //いらないと思う
|
||
|
||
//クリッカブルの複数箇所をクリック可能にするための配列
|
||
var Clickable = [];
|
||
var ClickIndex;
|
||
|
||
var lClicked = 0; //クリッカブルのボタンを押した判定。1の時押したとなる
|
||
var lDragged = 0; //ドラッガブルのボタンを押した判定。1の時押したとなる。クリッカブルとまとめて良い気も…
|
||
|
||
//ダメージ時にボイスが著しく変化するシーンの為のフラグ Change系の関数で使用する
|
||
var lDamageVoiceChange=0;
|
||
|
||
|
||
var AnotherB;
|
||
|
||
var GameSpeedMax=1.0;
|
||
|
||
//Numberキーダウン用
|
||
var lNumKeyCount = 0;
|
||
|
||
//buttonlayerで、OnMouseに、マウスが押された時用のlDrag_Checkを入れる事でボタン上でマウスを押しっぱなしにした時にlDrag_Checkが1になるようにした
|
||
|
||
var skey = 0;
|
||
|
||
var Lay1vis = true;
|
||
var Lay2vis = true;
|
||
var Lay3vis = true;
|
||
var Lay4vis = true;
|
||
|
||
|
||
//ティック数を数える
|
||
var TickChecker = 0;
|
||
var lDayTick = 0;
|
||
|
||
|
||
var lPlayVoice = 'talk';
|
||
var lCurrentVoice = '';
|
||
|
||
//予約
|
||
var lReserveVoice ='';
|
||
var lReserveVoiceDamaged = '';
|
||
var lReserveMovie='';
|
||
|
||
//WHileを区別する
|
||
var isWhile=0;
|
||
|
||
//ゲームスピードのチート使用時
|
||
var isGameSpeedCheat=0;
|
||
|
||
|
||
//var lVisWindow = false;//ウィンドウ表示中、trueになる
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
//スライダーをマウスホイールで+=させるよ。ひょっとしてマウスによっては誤作動するのか?わたしのマウスだと平気だが…
|
||
//マウスが壊れている人もいるだろう。オンオフは付けるべきだ
|
||
|
||
var onMouseWheel_org = kag.onMouseWheel;
|
||
|
||
kag.onMouseWheel = function (shift, delta, x, y)
|
||
{
|
||
//受付状態のみマウスホイールを許可する
|
||
//カレントシーンがSEXの時のみホイールを許可する
|
||
//SX(キーボード操作が出来ない時、マウスホイールもまた使用できなくする。これないとトーク中にホイール動かした時まさかのフリーズになる
|
||
|
||
if (kag.inStable == true && lFocused==1 && tf.currentscene == 'SEX' && tf.SXstop == 0 && (System.getTickCount() - tf.startTime) >= 300){
|
||
|
||
if (sf.MouseWheelEnable == 1){
|
||
|
||
//ボタン移動時に即ホイールを押すと割り込みでバグるのを防御 ドラッグ系押した瞬間に割り込みでもバグる!!
|
||
if ( (System.getTickCount() - tf.startTime) >= 1000){
|
||
|
||
//deltaが正の時、ホイールが上方向。
|
||
if (delta > 0 ){
|
||
|
||
|
||
if(tf.galflag==0){
|
||
|
||
//-0.1になる。MAX値だと、マウスホイールのときのみ限界の値を1超えてしまうため。
|
||
if (sf.GameSpeed <= (GameSpeedMax+f.GameSpeedPlus-0.1) ){
|
||
sf.GameSpeed += 0.1;
|
||
|
||
//最大値付近でホイール回した場合必ず1.0になる。
|
||
if(sf.GameSpeed > (GameSpeedMax+f.GameSpeedPlus-0.1) ){
|
||
sf.GameSpeed = GameSpeedMax+f.GameSpeedPlus;
|
||
}
|
||
}
|
||
}
|
||
|
||
else{
|
||
//-0.1になる。MAX値だと、マウスホイールのときのみ限界の値を1超えてしまうため。
|
||
if (sf.GameSpeed <= (GameSpeedMax-0.1) ){
|
||
sf.GameSpeed += 0.1;
|
||
|
||
//最大値付近でホイール回した場合必ず1.0になる。
|
||
if(sf.GameSpeed > (GameSpeedMax-0.1) ){
|
||
sf.GameSpeed = GameSpeedMax;
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
}
|
||
|
||
else if(delta <= 0 ){
|
||
|
||
if (sf.GameSpeed >= 0.2 ){
|
||
sf.GameSpeed -= 0.1;
|
||
|
||
//0.2未満でホイール下げた場合必ず1.0
|
||
if (sf.GameSpeed < 0.2 ){
|
||
sf.GameSpeed = 0.1;
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
//スライダのリフレッシュ。位置はここで良いみたいだ
|
||
kageval("[dSetSlider]");
|
||
|
||
|
||
}
|
||
//なんか必要みたいなので
|
||
onMouseWheel_org(...);
|
||
}
|
||
}
|
||
|
||
} incontextof kag;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function SKeyDownHookBack(key, shift)
|
||
{
|
||
|
||
if(kag.inStable == true && tf.SXstop == 0)
|
||
{
|
||
if(key == #'S' || key == VK_UP || key == VK_LEFT)
|
||
{
|
||
if(tf.SXstop == 0)
|
||
{
|
||
//http://kasekey.blog101.fc2.com/blog-entry-220.htmlを参照した。すごい助かる
|
||
if (System.getKeyState(VK_S, false) || System.getKeyState(VK_UP, false) || System.getKeyState(VK_LEFT, false))
|
||
{
|
||
//ここは最初必ず無視される。リンク0にフォーカスさせるため
|
||
if(keyfirst == 1)
|
||
{
|
||
keycount = keycount - 1;
|
||
}
|
||
|
||
//ここは、絶対に最初しか行われない。
|
||
else if(keyfirst < 1)
|
||
{
|
||
keyfirst = keyfirst +1;
|
||
}
|
||
|
||
//メインの処理。キーカウントが、0になったときキーナム引く1(リンクは0から始まるので引く1しないとだめ)
|
||
else if(keycount < 0)
|
||
{
|
||
keycount = keynum-1;
|
||
}
|
||
|
||
}
|
||
kag.current.setFocusToLink(keycount,true);
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function ADKeyDownHook(key, shift)
|
||
{
|
||
|
||
if (kag.inStable == true && tf.currentscene == 'SEX' && tf.SXstop == 0 && (System.getTickCount() - tf.startTime) >= 300){
|
||
|
||
//ボタン移動時に即ホイールを押すと割り込みでバグるのを防御 ドラッグ系押した瞬間に割り込みでもバグる!!
|
||
if ( (System.getTickCount() - tf.startTime) >= 1000){
|
||
|
||
if (key == VK_D){
|
||
if(!(shift & ssCtrl)){
|
||
//通常。Ctrl押してない時(!マークついてる)
|
||
//-0.1になる。MAX値だと、マウスホイールのときのみ限界の値を1超えてしまうため。
|
||
if (sf.GameSpeed <= (GameSpeedMax+f.GameSpeedPlus-0.1) ){
|
||
sf.GameSpeed += 0.1;
|
||
|
||
//最大値付近でホイール回した場合必ず1.0になる。
|
||
if(sf.GameSpeed > (GameSpeedMax+f.GameSpeedPlus-0.1) ){
|
||
sf.GameSpeed = GameSpeedMax+f.GameSpeedPlus;
|
||
}
|
||
}
|
||
}
|
||
|
||
else{
|
||
sf.GameSpeed=sf.StoreGameSpeed;
|
||
}
|
||
|
||
kageval("[dSetSlider]");
|
||
|
||
}
|
||
|
||
else if(key == VK_A){
|
||
|
||
if(!(shift & ssCtrl)){
|
||
//通常。Ctrl押してない時(!マークついてる)
|
||
if (sf.GameSpeed >= 0.2 ){
|
||
sf.GameSpeed -= 0.1;
|
||
|
||
//0.2未満でホイール下げた場合必ず1.0
|
||
if (sf.GameSpeed < 0.2 ){
|
||
sf.GameSpeed = 0.1;
|
||
}
|
||
}
|
||
}
|
||
|
||
else{
|
||
|
||
if(sf.GameSpeed>=0.1){
|
||
sf.StoreGameSpeed=sf.GameSpeed;
|
||
}
|
||
sf.GameSpeed = 0;
|
||
}
|
||
|
||
//スライダのリフレッシュ。位置はここで良いみたいだ
|
||
kageval("[dSetSlider]");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function XKeyDownHook(key, shift)
|
||
{
|
||
|
||
if(kag.inStable == true && tf.SXstop == 0)
|
||
{
|
||
if(key == #'X' || key == VK_DOWN || key == VK_RIGHT)
|
||
{
|
||
if(tf.SXstop == 0)
|
||
{
|
||
//http://kasekey.blog101.fc2.com/blog-entry-220.htmlを参照した。すごい助かる
|
||
if (System.getKeyState(VK_X, false) || System.getKeyState(VK_DOWN, false)|| System.getKeyState(VK_RIGHT, false))
|
||
{
|
||
//ここは最初必ず無視される。リンク0にフォーカスさせるため
|
||
if(keyfirst == 1)
|
||
{
|
||
keycount = keycount + 1;
|
||
}
|
||
|
||
//ここは、絶対に最初しか行われない。
|
||
else if(keyfirst < 1)
|
||
{
|
||
keyfirst = keyfirst +1;
|
||
}
|
||
|
||
//メインの処理。キーカウントが、キーナム以上になった時(リンクは0から始まるので引く1しないとだめ)
|
||
else if(keycount > keynum-1)
|
||
{
|
||
keycount = 0;
|
||
}
|
||
}
|
||
kag.current.setFocusToLink(keycount,true);
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
function RKeyDownHook(key, shift)
|
||
{
|
||
//履歴を手動でつくる事にした
|
||
if(key == #'R')
|
||
{
|
||
//履歴出てたら解除、消えてたら出す…のだがlTesterで調べても履歴出てるとキーボードを受け付けなくなる 元の履歴システムがそうなってるっぽいんだよね…
|
||
if(kag.historyEnabled==true)
|
||
{
|
||
if(kag.historyShowing==false)
|
||
{
|
||
//履歴表示
|
||
kag.showHistory();
|
||
}
|
||
|
||
else{
|
||
kag.hideHistory();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
function CheatKeyDownHook(key, shift)
|
||
{
|
||
//デバッグに使われる。常に発動するので完全なる隠しコマンド
|
||
|
||
if(key == #'U' && (shift & ssShift) && (shift & ssCtrl) )
|
||
{
|
||
if(tf.AllGameSpeed<=4)
|
||
{
|
||
if(GameSpeedMax<=8.5)
|
||
{
|
||
|
||
//tf.AllGameSpeed+=0.5;
|
||
sf.GameSpeed += 0.5;
|
||
GameSpeedMax += 0.5;
|
||
tf.StoreGameSpeed += 0.5;
|
||
isGameSpeedCheat=1;
|
||
}
|
||
}
|
||
}
|
||
|
||
else if(key == #'S' && (shift & ssShift) && (shift & ssCtrl) )
|
||
{
|
||
//utl_GameSpeedで常に判定するように引っ越し危ないのでめっちゃセーフティ多い
|
||
if(lCanWarp==1)
|
||
{
|
||
lCanWarp=0;
|
||
if(kag.conductor.callStackDepth>=1){
|
||
kageval("[dStoryExit]");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
function SKeyDownHook(key, shift)
|
||
{
|
||
//ムービーのキャンセルを行う隠しコマンド
|
||
if(key == #'S' && (shift & ssCtrl) && !(kag.movies[0].storage.indexOf('_Pre') >= 0 && shift & ssShift))
|
||
{
|
||
//ムービー発動と同時にタイミング良くキャンセルするとフリーズする事があったので回避させる
|
||
if(kag.movies[0].frame >= 10)
|
||
{
|
||
//ループじゃない時で、更にムービープレイ中のみ発動される
|
||
if(kag.movies[0].loop == false && kag.movies[0].lastStatus == 'play')
|
||
{
|
||
|
||
//ムービーキャンセラ
|
||
kag.se[2].stop();
|
||
kag.movies[0].stop();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
function CTRLKeyDownHook(key, shift)
|
||
{
|
||
//スキップ中にムービーキャンセル機構
|
||
if(key == VK_CONTROL && kag.getCurrentRead() && ( (tf.currentscene=='STORY'|| tf.currentscene=='GALLERY') || (tf.currentscene=='SEX' && f.act.substring(0,3)=='EXV')))
|
||
{
|
||
//ムービー発動と同時にタイミング良くキャンセルするとフリーズする事があったので回避させる
|
||
if(kag.movies[0].frame >= 20)
|
||
{
|
||
//ループじゃない時で、更にムービープレイ中のみ発動される
|
||
if(kag.movies[0].loop == false && kag.movies[0].lastStatus == 'play')
|
||
{
|
||
|
||
//ムービーキャンセラ
|
||
kag.se[2].stop();
|
||
kag.movies[0].stop();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function ZKeyDownHook(key, shift)
|
||
{
|
||
//ちなみにこの関数って、メインウインドウと両方必要だからね
|
||
|
||
if(kag.inStable == true && tf.SXstop ==0)
|
||
{
|
||
if(key == #'Z' || key == VK_RETURN)
|
||
{
|
||
//間違いなくキーダウンフックが先になっている。ちなみに、検証の結果これは必要だ
|
||
kag.current.setFocusToLink(keycount,true); //前つかってたやつ。これが無いと選択後にカーソル消える
|
||
}
|
||
}
|
||
}
|
||
|
||
function QKeyDownHook(key, shift)
|
||
{
|
||
|
||
if(kag.inStable == true)
|
||
{
|
||
if(key == #'Q')
|
||
{
|
||
//Qキーでヘルプ消す為というすごい地味な仕様のためだけに存在する
|
||
//kag.current.setFocusToLink(0,true); //
|
||
kag.current.processLink(0);
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
function VKeyDownHook(key, shift)
|
||
{
|
||
//ちなみにこの関数って、メインウインドウと両方必要だからね
|
||
if(key == #'V')
|
||
{
|
||
//フォーカスさせる必要があるんだ・・・たぶん初歩的な事なんだろうけど、気付かなかった事なので気をつけて。
|
||
//ちなみにMessageLayer.tjsでも設定する必要がある。
|
||
//kag.primaryLayer.setCursorPos(rposx(360), rposy(260));
|
||
//kag.keyDownHook.remove(VKeyDownHook);
|
||
|
||
//キーボードでクリックした時にエフェクト出るのが嫌なのでそれを防ぐ。
|
||
tf.KeyBoardClick = 1;
|
||
|
||
//if(tf.repeat == "1")
|
||
if(tf.repeat == "1" || tf.arrMclick.find(&f.act,0)>=0)
|
||
{
|
||
//2023年11月6日観察系で連続クリックさせたいので上記の表記に変更
|
||
//2020/12/25 おそらく大丈夫だろうがバグに気をつけて。クリッカブルのyubiマクロでcanskipさせるために設定している。
|
||
kag.onPrimaryClick();
|
||
}
|
||
|
||
//クリッカブルの時
|
||
if(tf.spanking == "1" && Permission == "Click" && tf.arrMclick.find(&f.act,0) == -1){
|
||
|
||
//ギャラリーでトークをonにした時に、延々とトークがでるのを防ぐ
|
||
f.galkaisou = 0;
|
||
|
||
//クリッカブルボタン押した判定
|
||
lClicked = 1;
|
||
|
||
|
||
|
||
|
||
//buttonmacroで設定した特定のラベルにジャンプさせる
|
||
kag.process((&f.act.substring(0, 1))+'TOTAL.ks', '*'+&f.act);
|
||
|
||
//レイヤ2(キーボード誘導)削除
|
||
kag.tagHandlers.layopt(%[layer:"2", page:'fore', visible:false]);
|
||
|
||
tf.repeat = 1;
|
||
}
|
||
|
||
|
||
|
||
else if(tf.spanking == "1" && Permission == "Click" && tf.arrMclick.find(&f.act,0) >= 0){
|
||
|
||
//ギャラリーでトークをonにした時に、延々とトークがでるのを防ぐ
|
||
f.galkaisou = 0;
|
||
|
||
|
||
//観察系の時のみ
|
||
lClicked = intrandom(0,lClickableNum-1);
|
||
|
||
|
||
//buttonmacroで設定した特定のラベルにジャンプさせる
|
||
kag.process((&f.act.substring(0, 1))+'TOTAL.ks', '*'+&f.act);
|
||
|
||
//レイヤ2(キーボード誘導)削除
|
||
kag.tagHandlers.layopt(%[layer:"2", page:'fore', visible:false]);
|
||
|
||
//GraphicLayer.tjsにて設定してる。すっごい複雑なので気をつけて 気をつけようがない
|
||
Scripts.eval(lArrMclickExp[lClicked]);
|
||
|
||
tf.repeat = 1;
|
||
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
else if( Permission == "Drag" || (Permission == "PreDrag" && tf.arrDrag.find(&f.act,0) >= 0 ) ){
|
||
|
||
//
|
||
if(EX_Flag == false && tf.SXstop == 0 && System.getKeyState(VK_V) == 1)//NEMURI 吉里吉里側でドラッガブル許可が出ている時
|
||
{
|
||
|
||
//Vキーは強制的にドラッがブルを発動させるので、Permissionも強制的にDragにする。まてよ?マウス動かす必要ある?
|
||
|
||
Permission = "Drag";
|
||
//kag.primaryLayer.cursorX=(tf.lDrag_X + 50);
|
||
//kag.primaryLayer.cursorY=(tf.lDrag_Y + 50);
|
||
|
||
}
|
||
|
||
else{
|
||
Permission = "PreDrag";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function SPACEKeyDownHook(key, shift)
|
||
{
|
||
// スペースキーが押されたとき
|
||
if(key == VK_SPACE)
|
||
{
|
||
|
||
//マウス中クリックを許可する。
|
||
if(f.middleclick== 1)
|
||
{
|
||
//Afterinitに記述して出来るかためしているので、今下の一行けしてる 消したままでよさそうだ hideallcameraは、オールカメラでメッセ消した時に、消した状態を持続するもの。SHORTCUT
|
||
if(kag.historyLayer.visible){
|
||
kag.hideHistory();
|
||
}
|
||
else if(kag.messageLayerHiding){
|
||
kag.showMessageLayerByUser() , tf.hideallcamera = 0;
|
||
}
|
||
else{
|
||
kag.hideMessageLayerByUser() , tf.hideallcamera = 1 ;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function ESCAPEkeyDownHook(key, shift)
|
||
{
|
||
// 『ESC』キーが押されたとき
|
||
if(key == VK_ESCAPE && lExitDialogVisibled==0 && lVisWindow==0)
|
||
{
|
||
kag.close();
|
||
}
|
||
|
||
}
|
||
// キーフックに登録
|
||
kag.keyDownHook.add(ESCAPEkeyDownHook);
|
||
|
||
|
||
|
||
|
||
/******************************************
|
||
|
||
NEMURI 特定のキーを押したときに指定のラベルにジャンプさせる てかこれまとめられるよね?
|
||
極端な話、buttunmacroからcond条件を全部コピーするだけで成立はするな
|
||
|
||
キーカウントを0にすればいいんだ
|
||
1を押した時には、キーカウント+0
|
||
2を押した時にキーカウント+1
|
||
それにZを組み合わせれば上手く行くのでは?
|
||
まてよ?たしかに全部出ている状態なら上手くいくが、
|
||
全部出ていないときは表と裏が同期してないとダメだし、リンク番号がずれてしまう
|
||
|
||
|
||
それまでのjf累積で計算すればいいのでは
|
||
|
||
当然だ、上から数えた数になるんだから
|
||
上から数えた数
|
||
そうか、ifでjf累積が できる!!!!可能だ!!!!
|
||
|
||
|
||
kag.current.keyLinkでマウスオーバー時のリンク番号を調べられる!!!忘れるな!!!!
|
||
単純な話、1押した時にマウス移動でキスの位置に動かしてkag.current.keyLinkで調べた値をセットフォーカスでラベルに飛ぶっていう力技もありだよね
|
||
これだと実質マウスクリックと同じなわけだ
|
||
|
||
①マウスをボタン位置に動かして ②kag.current.keyLinkでリンク番号取得して ③kag.current.processLinkでラベル移動 で完了か 簡単じゃん
|
||
|
||
******************************************//////////////////
|
||
|
||
function NUMBERKeyDownHook(key, shift)
|
||
{
|
||
//まだちゃんとやってないから気をつけて
|
||
//SXstopされてない時のみ発動する。
|
||
//本来はSキーとXキーの移動を制御しなくするものだったが、会話中のナンバージャンプも無効化している
|
||
if((tf.SXstop == 0 || tf.currentscene == 'DIALOG') && (key == #'1' || key == #'2' || key == #'3' || key == #'4' || key == #'5' || key == #'6' || key == #'7' || key == #'8' || key == #'9' || key == #'0' || key == #'C'|| key == #'Q' || key == #'W' || key == #'E' ) && tf.afterinitwait == 0 )
|
||
{
|
||
lDrag_Permission = 0; //NEMURI ドラッガブル用。セーフティをかけてドラッガブルを禁止する
|
||
|
||
//なぜjf1でifしているのかというと、これが無いとメニュー画面とかでキー押してもafterinitwaitが1になってしまうため(Hシーンでないとjf1は出ない)
|
||
if(f.jf1 == 1 && tf.currentscene == 'SEX')
|
||
{
|
||
|
||
tf.afterinitwait = 1;
|
||
|
||
//ここは、絶対に最初しか行われない。
|
||
if(keyfirst < 1)
|
||
{
|
||
keyfirst = keyfirst +1;
|
||
}
|
||
|
||
}
|
||
|
||
//skeyはどのボタンを押したか。実は現状、下のプロセスリンク判別以外に意味が無いけど、ショップなどで使える可能性が高い
|
||
//1番のみ、ダウンのパターンがあるのでf.jfNとjfNDがある
|
||
|
||
if(key == #'1' && (f.jf1 == 1 || f.jfN == 1 || f.jfND == 1) ){skey = 1; lNumKeyCount = f.jf1 + f.jfN + f.jfND - 1;}
|
||
else if(key == #'2' && f.jf2 == 1){skey = 2; lNumKeyCount = f.jf1 + f.jf2 + f.jfN + f.jfND - 1 ;}
|
||
else if(key == #'3' && f.jf3 == 1){skey = 3; lNumKeyCount = f.jf1 + f.jf2 + f.jf3 + f.jfN + f.jfND - 1 ;}
|
||
else if(key == #'4' && f.jf4 == 1){skey = 4; lNumKeyCount = f.jf1 + f.jf2 + f.jf3 + f.jf4 + f.jfN + f.jfND - 1 ;}
|
||
|
||
//逆にした 後の数字変えなくていいんだね。よく考えたらlocateで位置だけ変えてjfの数字は変えてないんだから当然か
|
||
else if(key == #'5' && f.jf5 == 1){skey = 6; lNumKeyCount = f.jf1 + f.jf2 + f.jf3 + f.jf4 + f.jf5 + f.jfN + f.jfND - 1 ;}
|
||
else if(key == #'6' && f.jf6 == 1){skey = 5; lNumKeyCount = f.jf1 + f.jf2 + f.jf3 + f.jf4 + f.jf5 + f.jf6 + f.jfN + f.jfND - 1 ;}
|
||
|
||
else if(key == #'7' && f.jf7 == 1){skey = 7; lNumKeyCount = f.jf1 + f.jf2 + f.jf3 + f.jf4 + f.jf5 + f.jf6 + f.jf7 + f.jfN + f.jfND - 1 ;}
|
||
|
||
//直接回復に飛ばす機構にした
|
||
else if(key == #'8' && f.jfQ == 1){kag.process('first.ks', '*dActHealMessage');}
|
||
//脱衣。これも直接飛ばすべき?ただ回復と違ってキーナムが変わらないからそこまで神経質になる事もないのでは
|
||
else if(key == #'9' && f.jfNude == 1){skey = 9; lNumKeyCount = f.jf1 + f.jf2 + f.jf3 + f.jf4 + f.jf5 + f.jf6 + f.jf7 + f.jfQ + f.jfNude + f.jfN + f.jfND - 1 ;}
|
||
//処女喪失専用。もしかしたら他のに使う可能性もあるけど
|
||
else if(key == #'0' && f.jfV == 1 && f.virgin == 1){skey = 10; lNumKeyCount = f.jf1 + f.jf2 + f.jf3 + f.jf4 + f.jf5 + f.jf6 + f.jf7 + f.jfQ + f.jfV + f.jfNude + f.jfN + f.jfND - 1 ;}
|
||
|
||
//右クリエミュレート
|
||
else if(key == #'C'){kag.onPrimaryRightClick();}
|
||
|
||
|
||
//ギャラリー 使っていないが、念のため残した
|
||
//else if(key == #'4' && f.jfg1 == 1 && f.galflag == 1 && tf.currentscene == 'SEX'){skey = 1; lNumKeyCount = f.jfg1;}
|
||
//else if(key == #'5' && f.jfg2 == 1 && f.galflag == 1 && tf.currentscene == 'SEX'){skey = 1; lNumKeyCount = f.jfg1 + f.jfg2 ;}
|
||
|
||
//else if(key == #'1' && f.galflag == 1 && tf.currentscene == 'SEX'){skey = 1; lNumKeyCount = f.jfg1 + f.jfg2 +4;}
|
||
//else if(key == #'2' && f.galflag == 1 && tf.currentscene == 'SEX'){skey = 1; lNumKeyCount = f.jfg1 + f.jfg2 +5;}
|
||
//else if(key == #'3' && f.galflag == 1 && tf.currentscene == 'SEX'){skey = 1; lNumKeyCount = f.jfg1 + f.jfg2 +6;}
|
||
|
||
|
||
//EXITダイアログ
|
||
else if(key == #'1' && tf.currentscene == 'DIALOG'){skey = 1; lNumKeyCount = 0;}
|
||
else if(key == #'2' && tf.currentscene == 'DIALOG'){skey = 1; lNumKeyCount = 1;}
|
||
|
||
//ここからEXITやTALK 常に表示されている為、9を押した時のパターンに1や2等足すだけでいい。
|
||
else if(key == #'Q' && tf.currentscene == 'SEX' ){skey = 1; lNumKeyCount = f.jf1 + f.jf2 + f.jf3 + f.jf4 + f.jf5 + f.jf6 + f.jf7 + f.jfQ + f.jfV + f.jfNude + f.jfN + f.jfND + f.jfR + tf.jfH - 1;}
|
||
else if(key == #'E' && tf.currentscene == 'SEX' ){skey = 1; lNumKeyCount = f.jf1 + f.jf2 + f.jf3 + f.jf4 + f.jf5 + f.jf6 + f.jf7 + f.jfQ + f.jfV + f.jfNude + f.jfN + f.jfND + f.jfR + tf.jfH + tf.jfExit - 1;}
|
||
else if(key == #'W' && tf.currentscene == 'SEX' ){skey = 1; lNumKeyCount = f.jf1 + f.jf2 + f.jf3 + f.jf4 + f.jf5 + f.jf6 + f.jf7 + f.jfQ + f.jfV + f.jfNude + f.jfN + f.jfND + f.jfR + tf.jfH + tf.jfExit + tf.jfT - 1 ;}
|
||
|
||
//何も押されなかった場合なのだが、押されなかった時アフターイニットが1になるので0にもどす
|
||
|
||
else{
|
||
skey = 0;
|
||
tf.afterinitwait = 0;
|
||
}
|
||
|
||
if(skey != 0)
|
||
{
|
||
kag.onPrimaryClickByKey();
|
||
|
||
skey = 0;
|
||
|
||
kag.current.setFocusToLink(lNumKeyCount,true);
|
||
kag.current.processLink(lNumKeyCount);//キーカウントの番号にリンクしてボタンを押す。
|
||
|
||
}
|
||
|
||
else
|
||
{
|
||
skey = 0;
|
||
}
|
||
}
|
||
}
|
||
|
||
//KeyDownHookをkagに登録
|
||
kag.keyDownHook.add(NUMBERKeyDownHook);
|
||
|
||
//ムービーがあるか検出する。
|
||
function isExistMovieStorage(storage)
|
||
{
|
||
if (Storages.isExistentStorage(storage) ||
|
||
Storages.isExistentStorage(storage + '.wmv'))
|
||
return 1;
|
||
return 0;
|
||
}
|
||
|
||
function isExistImageStorage(storage)
|
||
{
|
||
if (Storages.isExistentStorage(storage) ||
|
||
Storages.isExistentStorage(storage + '.png') ||
|
||
Storages.isExistentStorage(storage + '.jpg') ||
|
||
Storages.isExistentStorage(storage + '.bmp'))
|
||
return 1;
|
||
return 0;
|
||
}
|
||
|
||
// 1024x768サイズ
|
||
function onBigSize // incontextof win
|
||
{
|
||
|
||
//dm('onNormalSizeMenuItemClick()');
|
||
if (fullScreened)
|
||
onWindowedMenuItemClick(...);
|
||
if (maximized)
|
||
showRestore();
|
||
|
||
setInnerSize(1024, 0, true);
|
||
sf.WindowResizable.fullScreen = fullScreen;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
// ジャンプを、ジャンプ先が無い場合に指定したファイルに飛ばす
|
||
function djump(lScenario,lLabel)
|
||
{
|
||
try {
|
||
kag.process("STOTAL.ks", "*S1WQ1");
|
||
}
|
||
catch (e) {
|
||
kag.process("STOTAL.ks", "*S1WQ1");
|
||
}
|
||
//return true;
|
||
}
|
||
|
||
function MultiClickCameraMath(x) {
|
||
if (x === 3) {
|
||
return 0;
|
||
} else {
|
||
return x;
|
||
}
|
||
}
|
||
|
||
|
||
//配列内で与えられた変数の最大値を返す
|
||
function getMax(numbers) {
|
||
var max = numbers[0];
|
||
for(var i = 0; i < numbers.length; i++) {
|
||
if(numbers[i] > max) {
|
||
max = numbers[i];
|
||
}
|
||
}
|
||
return max;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
//配列内で与えられた変数の最大だったインデックスを返す
|
||
function getMaxEXPIndex(numbers) {
|
||
var MaxAction = 0;
|
||
for(var i = 0; i < numbers.length; i++) {
|
||
if(numbers[i] > numbers[MaxAction]) {
|
||
MaxAction = i;
|
||
}
|
||
}
|
||
// 配列のインデックスは0から始まるので、1を足す
|
||
return MaxAction + 1;
|
||
}
|
||
|
||
|
||
|
||
//配列内で与えられた変数の最大だったインデックスを返す
|
||
function dNextPer(Total,Next) {
|
||
var Mathed = 0;
|
||
|
||
Mathed = Total/Next;
|
||
|
||
if(Mathed >= 1) {
|
||
Mathed = 1;
|
||
}
|
||
|
||
// 配列のインデックスは0から始まるので、1を足す
|
||
return Mathed;
|
||
}
|
||
|
||
|
||
|
||
function dBlackOut() {
|
||
|
||
//HP0時にブラックアウトさせる
|
||
|
||
if(f.HP <= 0 && tf.currentscene == 'SEX'){
|
||
|
||
if(BlackOutOpacity == 0) {
|
||
|
||
kag.fore.layers[6].loadImages(%[ storage:"エフェクト_black.png"]);
|
||
kag.fore.layers[6].visible = true;
|
||
kag.fore.layers[6].left = krkrLeft;
|
||
kag.fore.layers[6].absolute=7000;
|
||
kag.fore.layers[6].opacity=BlackOutOpacity;
|
||
//レイヤ9も
|
||
kag.fore.layers[9].visible = false;
|
||
|
||
}
|
||
else if(BlackOutOpacity <= 200) {
|
||
kag.fore.layers[6].opacity=BlackOutOpacity;
|
||
}
|
||
|
||
//200以上になっても際限なく増えるけど別に増やして大丈夫 プログラム的にはopacityは200までしか増えないよ
|
||
BlackOutOpacity += 5;
|
||
|
||
}
|
||
else{
|
||
BlackOutOpacity = 0;
|
||
//kag.fore.layers[6].visible = false;
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function dJump(fact)
|
||
{
|
||
|
||
try {
|
||
kag.process( (fact[0] + 'TOTAL.ks'),('*' + fact) );
|
||
}
|
||
|
||
catch (e) {
|
||
//ムービー準備領域でf.actがEXにだけなった事がある!その対策
|
||
kag.process( ('MTOTAL.ks'),('*M1WQ1') );
|
||
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
function SkipMovie_Check(lVid) {
|
||
//見つからなかった時
|
||
if (sf.SkipMovie.find(lVid,0) < 0) {
|
||
//配列にlVidを追加する
|
||
sf.SkipMovie.add(lVid);
|
||
return false;
|
||
|
||
}
|
||
//見つかったのでtrueで返す
|
||
else{
|
||
return true;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
function SkipPoint_Check(lVid) {
|
||
//見つからなかった時
|
||
if (sf.SkipPoint.find(lVid,0) < 0) {
|
||
//配列にlVidを追加する
|
||
sf.SkipPoint.add(lVid);
|
||
return false;
|
||
|
||
}
|
||
//見つかったのでtrueで返す
|
||
else{
|
||
return true;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function DoneEX_Check(fact) {
|
||
//見つからなかった時
|
||
if (DoneEX.find(fact,0) < 0) {
|
||
//配列にf.actを追加する
|
||
DoneEX.add(fact);
|
||
}
|
||
return true;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
//スキン配列に追加する。
|
||
function ArrMarge(lArr,lPoint) {
|
||
//見つからなかった時
|
||
|
||
if ( (lArr.find(lPoint,0) < 0)) {
|
||
//配列にf.actを追加する
|
||
if(lPoint!=''){
|
||
lArr.add(lPoint);
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
|
||
|
||
//スキン配列に追加する。
|
||
function SkinCheck(fact) {
|
||
//見つからなかった時
|
||
|
||
if ( (sf.SourceSkinCheck.find(fact,0) < 0 && tf.galflag!=1)) {
|
||
//配列にf.actを追加する
|
||
sf.SourceSkinCheck.add(fact);
|
||
|
||
////kageval("[Cutin_Skin]");
|
||
//kagevalで最初はやろうと思ったけど、色々不都合がある。割り込み扱いになるようだ。苦肉の作としてこの方法に
|
||
tf.GetSkinFlag = 1;
|
||
|
||
}
|
||
return true;
|
||
}
|
||
|
||
|
||
//スキン配列に追加する。
|
||
function SkinCheck_Remove(fact) {
|
||
//スキンの削除とスキンリストの作成を兼ねる
|
||
|
||
if(sf.SourceSkinCheck.find(fact,0) >= 0 ){
|
||
tf.DummySkinCheck.remove(fact);
|
||
}
|
||
|
||
|
||
|
||
if(tf.CheatSkinList.find(fact,0) >= 0) {
|
||
|
||
tf.CheatSkinList.remove(fact);
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
//スキンのボタン表示を行う
|
||
function SkinMarkVisCheck() {
|
||
|
||
|
||
//初期化
|
||
f.NewSkinCheck.assignStruct(tf.ArrInit);
|
||
|
||
//退避配列
|
||
var SkinArrays=[];
|
||
|
||
if(f.SkinAll==0){
|
||
SkinArrays.assignStruct(tf.DummySkinCheck);
|
||
}
|
||
else{
|
||
SkinArrays.assignStruct(tf.CheatSkinList);
|
||
}
|
||
|
||
for (var i = 0; i < SkinArrays.length; i++) {
|
||
var item = SkinArrays[i];
|
||
// ここで取り出したitemを使って何か処理を行う
|
||
|
||
if (item=='M1WQ1'){f.NewSkinCheck[0][0][0][0]=1;}
|
||
else if (item=='M1WQ2'){f.NewSkinCheck[0][0][0][1]=1;}
|
||
else if (item=='M1WQ3'){f.NewSkinCheck[0][0][0][2]=1;}
|
||
else if (item=='M1WQ4'){f.NewSkinCheck[1][0][0][0]=1;}
|
||
else if (item=='M1WQ5'){f.NewSkinCheck[1][0][0][1]=1;}
|
||
else if (item=='M1WQ6'){f.NewSkinCheck[1][0][0][2]=1;}
|
||
|
||
else if (item=='H1WQ1'){f.NewSkinCheck[0][0][1][0]=1;}
|
||
else if (item=='H1WQ2'){f.NewSkinCheck[0][0][1][1]=1;}
|
||
else if (item=='B2WQ1'){f.NewSkinCheck[0][0][1][2]=1;}
|
||
else if (item=='H1WQ3'){f.NewSkinCheck[1][0][1][0]=1;}
|
||
else if (item=='H1WQ4'){f.NewSkinCheck[1][0][1][1]=1;}
|
||
else if (item=='H1WQ6'){f.NewSkinCheck[1][0][1][2]=1;}
|
||
|
||
else if (item=='F1WQ1'){f.NewSkinCheck[0][0][2][0]=1;}
|
||
else if (item=='F1WQ2'){f.NewSkinCheck[0][0][2][1]=1;}
|
||
else if (item=='F1WQ3'){f.NewSkinCheck[0][0][2][2]=1;}
|
||
else if (item=='F1WQ4'){f.NewSkinCheck[1][0][2][0]=1;}
|
||
else if (item=='F1WQ5'){f.NewSkinCheck[1][0][2][1]=1;}
|
||
else if (item=='F1WQ6'){f.NewSkinCheck[1][0][2][2]=1;}
|
||
|
||
else if (item=='F7WQ1'){f.NewSkinCheck[0][0][12][2]=1;}
|
||
else if (item=='M7WQ1'){f.NewSkinCheck[1][0][12][2]=1;}
|
||
|
||
else if (item=='F2WQ1'){f.NewSkinCheck[0][0][3][0]=1;}
|
||
else if (item=='F2WQ2'){f.NewSkinCheck[0][0][3][1]=1;}
|
||
else if (item=='F2WQ3'){f.NewSkinCheck[0][0][3][2]=1;}
|
||
else if (item=='F2WQ4'){f.NewSkinCheck[1][0][3][0]=1;}
|
||
else if (item=='F2WQ5'){f.NewSkinCheck[1][0][3][1]=1;}
|
||
else if (item=='F4WQ1'){f.NewSkinCheck[1][0][3][2]=1;}
|
||
|
||
else if (item=='M5WQ2'){f.NewSkinCheck[0][0][13][0]=1;}
|
||
else if (item=='M4WQ5'){f.NewSkinCheck[0][0][13][1]=1;}
|
||
else if (item=='M4WQ1'){f.NewSkinCheck[0][0][13][2]=1;}
|
||
else if (item=='M4WQ3'){f.NewSkinCheck[1][0][13][0]=1;}
|
||
else if (item=='M4WQ6'){f.NewSkinCheck[1][0][13][1]=1;}
|
||
else if (item=='M4WQ4'){f.NewSkinCheck[1][0][13][2]=1;}
|
||
|
||
else if (item=='M2WQ1'){f.NewSkinCheck[0][0][4][0]=1;}
|
||
else if (item=='M2WQ2'){f.NewSkinCheck[0][0][4][1]=1;}
|
||
else if (item=='M2WQ3'){f.NewSkinCheck[0][0][4][2]=1;}
|
||
else if (item=='M2WQ5'){f.NewSkinCheck[1][0][4][0]=1;}
|
||
else if (item=='M2WQ4'){f.NewSkinCheck[1][0][4][1]=1;}
|
||
else if (item=='M2WQ6'){f.NewSkinCheck[1][0][4][2]=1;}
|
||
|
||
else if (item=='M6WQ1'){f.NewSkinCheck[0][0][14][0]=1;}
|
||
else if (item=='M3WQ3'){f.NewSkinCheck[0][0][14][1]=1;}
|
||
else if (item=='M3WQ4'){f.NewSkinCheck[0][0][14][2]=1;}
|
||
else if (item=='M3WQ2'){f.NewSkinCheck[1][0][14][0]=1;}
|
||
else if (item=='M3WQ7'){f.NewSkinCheck[1][0][14][1]=1;}
|
||
else if (item=='M3WQ6'){f.NewSkinCheck[1][0][14][2]=1;}
|
||
|
||
else if (item=='O1WQ1'){f.NewSkinCheck[0][0][5][0]=1;}
|
||
else if (item=='O1WQ2'){f.NewSkinCheck[0][0][5][1]=1;}
|
||
else if (item=='O1WQ3'){f.NewSkinCheck[0][0][5][2]=1;}
|
||
else if (item=='O1WQ4'){f.NewSkinCheck[1][0][5][0]=1;}
|
||
else if (item=='O1WQ5'){f.NewSkinCheck[1][0][5][1]=1;}
|
||
else if (item=='O4WQ2'){f.NewSkinCheck[1][0][5][2]=1;}
|
||
|
||
else if (item=='F6WQ1'){f.NewSkinCheck[0][0][15][0]=1;}
|
||
else if (item=='F6WQ2'){f.NewSkinCheck[0][0][15][1]=1;}
|
||
else if (item=='F6WQ3'){f.NewSkinCheck[0][0][15][2]=1;}
|
||
else if (item=='F6WQ4'){f.NewSkinCheck[1][0][15][0]=1;}
|
||
else if (item=='F6WQ5'){f.NewSkinCheck[1][0][15][1]=1;}
|
||
else if (item=='F6WQ6'){f.NewSkinCheck[1][0][15][2]=1;}
|
||
|
||
else if (item=='D1WQ2'){f.NewSkinCheck[0][0][6][0]=1;}
|
||
else if (item=='D1WQ1'){f.NewSkinCheck[0][0][6][1]=1;}
|
||
else if (item=='D3WQ1'){f.NewSkinCheck[0][0][6][2]=1;}
|
||
else if (item=='D1WQ3'){f.NewSkinCheck[1][0][6][0]=1;}
|
||
else if (item=='D1WQ4'){f.NewSkinCheck[1][0][6][1]=1;}
|
||
else if (item=='D2WQ2'){f.NewSkinCheck[1][0][6][2]=1;}
|
||
|
||
else if (item=='D7WQ1'){f.NewSkinCheck[0][0][16][2]=1;}
|
||
else if (item=='D7WQ2'){f.NewSkinCheck[1][0][16][2]=1;}
|
||
|
||
else if (item=='S1WQ1'){f.NewSkinCheck[0][1][0][0]=1;}
|
||
else if (item=='S1WQ2'){f.NewSkinCheck[0][1][0][1]=1;}
|
||
else if (item=='S1WQ3'){f.NewSkinCheck[0][1][0][2]=1;}
|
||
else if (item=='S1WQ4'){f.NewSkinCheck[1][1][0][0]=1;}
|
||
else if (item=='S1WQ5'){f.NewSkinCheck[1][1][0][1]=1;}
|
||
else if (item=='S3WQ6'){f.NewSkinCheck[1][1][0][2]=1;}
|
||
|
||
else if (item=='S4WQ1'){f.NewSkinCheck[0][1][1][0]=1;}
|
||
else if (item=='S3WQ5'){f.NewSkinCheck[0][1][1][1]=1;}
|
||
else if (item=='S3WQ2'){f.NewSkinCheck[0][1][1][2]=1;}
|
||
else if (item=='S3WQ3'){f.NewSkinCheck[1][1][1][0]=1;}
|
||
else if (item=='S3WQ1'){f.NewSkinCheck[1][1][1][1]=1;}
|
||
else if (item=='S3WQ4'){f.NewSkinCheck[1][1][1][2]=1;}
|
||
|
||
else if (item=='K1WQ1'){f.NewSkinCheck[0][1][2][0]=1;}
|
||
else if (item=='K1WQ2'){f.NewSkinCheck[0][1][2][1]=1;}
|
||
else if (item=='K1WQ3'){f.NewSkinCheck[0][1][2][2]=1;}
|
||
else if (item=='K1WQ4'){f.NewSkinCheck[1][1][2][0]=1;}
|
||
else if (item=='K1WQ5'){f.NewSkinCheck[1][1][2][1]=1;}
|
||
else if (item=='K1WQ8'){f.NewSkinCheck[1][1][2][2]=1;}
|
||
|
||
else if (item=='K7WQ1'){f.NewSkinCheck[0][1][12][2]=1;}
|
||
else if (item=='K7WQ4'){f.NewSkinCheck[1][1][12][2]=1;}
|
||
|
||
else if (item=='B1WQ1'){f.NewSkinCheck[0][1][3][0]=1;}
|
||
else if (item=='B1WQ2'){f.NewSkinCheck[0][1][3][1]=1;}
|
||
else if (item=='B1WQ3'){f.NewSkinCheck[0][1][3][2]=1;}
|
||
else if (item=='B1WQ4'){f.NewSkinCheck[1][1][3][0]=1;}
|
||
else if (item=='B3WQ5'){f.NewSkinCheck[1][1][3][1]=1;}
|
||
else if (item=='B1WQ6'){f.NewSkinCheck[1][1][3][2]=1;}
|
||
|
||
else if (item=='B7WQ1'){f.NewSkinCheck[0][1][13][2]=1;}
|
||
else if (item=='B7WQ4'){f.NewSkinCheck[1][1][13][2]=1;}
|
||
|
||
else if (item=='B3WQ1'){f.NewSkinCheck[0][1][4][0]=1;}
|
||
else if (item=='B3WQ2'){f.NewSkinCheck[0][1][4][1]=1;}
|
||
else if (item=='B3WQ3'){f.NewSkinCheck[0][1][4][2]=1;}
|
||
else if (item=='B2WQ2'){f.NewSkinCheck[1][1][4][0]=1;}
|
||
else if (item=='B1WQ5'){f.NewSkinCheck[1][1][4][1]=1;}
|
||
else if (item=='B3WQ6'){f.NewSkinCheck[1][1][4][2]=1;}
|
||
|
||
else if (item=='K2WQ2'){f.NewSkinCheck[0][1][14][0]=1;}
|
||
else if (item=='K3WQ1'){f.NewSkinCheck[0][1][14][1]=1;}
|
||
else if (item=='K6WQ1'){f.NewSkinCheck[0][1][14][2]=1;}
|
||
else if (item=='K3WQ2'){f.NewSkinCheck[1][1][14][0]=1;}
|
||
else if (item=='K5WQ1'){f.NewSkinCheck[1][1][14][1]=1;}
|
||
else if (item=='K1WQ9'){f.NewSkinCheck[1][1][14][2]=1;}
|
||
|
||
else if (item=='S6WQ1'){f.NewSkinCheck[0][1][5][0]=1;}
|
||
else if (item=='S6WQ2'){f.NewSkinCheck[0][1][5][1]=1;}
|
||
else if (item=='S6WQ5'){f.NewSkinCheck[0][1][5][2]=1;}
|
||
else if (item=='S6WQ3'){f.NewSkinCheck[1][1][5][0]=1;}
|
||
else if (item=='S6WQ4'){f.NewSkinCheck[1][1][5][1]=1;}
|
||
else if (item=='S6WQ6'){f.NewSkinCheck[1][1][5][2]=1;}
|
||
|
||
else if (item=='F1WQ8'){f.NewSkinCheck[0][1][15][2]=1;}
|
||
else if (item=='F1WQ7'){f.NewSkinCheck[1][1][15][2]=1;}
|
||
|
||
else if (item=='B8WQ1'){f.NewSkinCheck[0][1][6][0]=1;}
|
||
else if (item=='D8WQ1'){f.NewSkinCheck[0][1][6][1]=1;}
|
||
else if (item=='D8WQ9'){f.NewSkinCheck[0][1][6][2]=1;}
|
||
else if (item=='B8WQ2'){f.NewSkinCheck[1][1][6][0]=1;}
|
||
else if (item=='K8WQ1'){f.NewSkinCheck[1][1][6][1]=1;}
|
||
else if (item=='S8WQ1'){f.NewSkinCheck[1][1][6][2]=1;}
|
||
|
||
else if (item=='D8WQ8'){f.NewSkinCheck[0][1][16][2]=1;}
|
||
else if (item=='D8WQ7'){f.NewSkinCheck[1][1][16][2]=1;}
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
function dNameExchange(item)
|
||
{
|
||
//スキンジャンプに使用したネーム変換表
|
||
var lArrExchange=[];
|
||
// 0 f.camflag='1'; 1 Ant=0; 2 AnotherAct[Ant] = 0; 3 acttype; 4 tf.NudeType=0; 5 tf.Insert; 6 f.StoreLV[tf.NudeType][0][Ant+AnotherAct[Ant]] =0; 7 tf.AbsCam ; 8 ('キスLV1') 9タイトル
|
||
//camflag anotheract ヌードタイプ レベル
|
||
if (item=='M1WQ1'){lArrExchange=['1', 0, 0,0,0,0,0,'' ,'キスLV1']; return lArrExchange;}
|
||
else if (item=='M1WQ2'){lArrExchange=['1', 0, 0,0,0,0,1,'' ,'キスLV2']; return lArrExchange;}
|
||
else if (item=='M1WQ3'){lArrExchange=['1', 0, 0,0,0,0,2,'0','キスLV3','乳首搾精/射精']; return lArrExchange;}
|
||
else if (item=='M1WQ4'){lArrExchange=['1', 0, 0,0,1,0,0,'' ,'キスLV4']; return lArrExchange;}
|
||
else if (item=='M1WQ5'){lArrExchange=['1', 0, 0,0,1,0,1,'' ,'キスLV5']; return lArrExchange;}
|
||
else if (item=='M1WQ6'){lArrExchange=['1', 0, 0,0,1,0,2,'' ,'キスLV6']; return lArrExchange;}
|
||
else if (item=='H1WQ1'){lArrExchange=['2', 0, 0,1,0,0,0,'' ,'性器観察LV1']; return lArrExchange;}
|
||
else if (item=='H1WQ2'){lArrExchange=['2', 0, 0,1,0,0,1,'' ,'性器観察LV2']; return lArrExchange;}
|
||
else if (item=='B2WQ1'){lArrExchange=['2', 0, 0,1,0,0,2,'' ,'性器観察LV3']; return lArrExchange;}
|
||
else if (item=='H1WQ3'){lArrExchange=['2', 0, 0,1,1,0,0,'' ,'性器観察LV4']; return lArrExchange;}
|
||
else if (item=='H1WQ4'){lArrExchange=['2', 0, 0,1,1,0,1,'' ,'性器観察LV5']; return lArrExchange;}
|
||
else if (item=='H1WQ6'){lArrExchange=['2', 0, 0,1,1,0,2,'' ,'性器観察LV6']; return lArrExchange;}
|
||
else if (item=='F1WQ1'){lArrExchange=['3', 2, 0,2,0,0,0,'' ,'手を使うLV1']; return lArrExchange;}
|
||
else if (item=='F1WQ2'){lArrExchange=['3', 2, 0,2,0,0,1,'1','手を使うLV2','手で・野外/射精']; return lArrExchange;}
|
||
else if (item=='F1WQ3'){lArrExchange=['3', 2, 0,2,0,0,2,'0','手を使うLV3','口で・四つん這い/射精']; return lArrExchange;}
|
||
else if (item=='F1WQ4'){lArrExchange=['3', 2, 0,2,1,0,0,'' ,'手を使うLV4']; return lArrExchange;}
|
||
else if (item=='F1WQ5'){lArrExchange=['3', 2, 0,2,1,0,1,'' ,'手を使うLV5']; return lArrExchange;}
|
||
else if (item=='F1WQ6'){lArrExchange=['3', 2, 0,2,1,0,2,'' ,'手を使うLV6']; return lArrExchange;}
|
||
else if (item=='F7WQ1'){lArrExchange=['3', 2,10,2,0,0,2,'1','秘部責めるLV3','にゃん電気あんま']; return lArrExchange;}
|
||
else if (item=='M7WQ1'){lArrExchange=['3', 2,10,2,1,0,2,'' ,'秘部責めるLV6']; return lArrExchange;}
|
||
else if (item=='F2WQ1'){lArrExchange=['4', 3, 0,3,0,0,0,'' ,'フェラLV1']; return lArrExchange;}
|
||
else if (item=='F2WQ2'){lArrExchange=['4', 3, 0,3,0,0,1,'' ,'フェラLV2']; return lArrExchange;}
|
||
else if (item=='F2WQ3'){lArrExchange=['4', 3, 0,3,0,0,2,'1','フェラLV3','咥えて/射精']; return lArrExchange;}
|
||
else if (item=='F2WQ4'){lArrExchange=['4', 3, 0,3,1,0,0,'' ,'フェラLV4']; return lArrExchange;}
|
||
else if (item=='F2WQ5'){lArrExchange=['4', 3, 0,3,1,0,1,'' ,'フェラLV5']; return lArrExchange;}
|
||
else if (item=='F4WQ1'){lArrExchange=['4', 3, 0,3,1,0,2,'' ,'フェラLV6']; return lArrExchange;}
|
||
else if (item=='M5WQ2'){lArrExchange=['4', 3,10,3,0,0,0,'' ,'クンニLV1']; return lArrExchange;}
|
||
else if (item=='M4WQ5'){lArrExchange=['4', 3,10,3,0,0,1,'' ,'クンニLV2']; return lArrExchange;}
|
||
else if (item=='M4WQ1'){lArrExchange=['4', 3,10,3,0,0,2,'2','クンニLV3','クンニ接写']; return lArrExchange;}
|
||
else if (item=='M4WQ3'){lArrExchange=['4', 3,10,3,1,0,0,'' ,'クンニLV4']; return lArrExchange;}
|
||
else if (item=='M4WQ6'){lArrExchange=['4', 3,10,3,1,0,1,'' ,'クンニLV5']; return lArrExchange;}
|
||
else if (item=='M4WQ4'){lArrExchange=['4', 3,10,3,1,0,2,'1','クンニLV6','にゃんクンニ']; return lArrExchange;}
|
||
else if (item=='M2WQ1'){lArrExchange=['5', 4, 0,4,0,0,0,'1','胸を使うLV1','おっぱい大']; return lArrExchange;}
|
||
else if (item=='M2WQ2'){lArrExchange=['5', 4, 0,4,0,0,1,'1','胸を使うLV2','おっぱい大/射精']; return lArrExchange;}
|
||
else if (item=='M2WQ3'){lArrExchange=['5', 4, 0,4,0,0,2,'' ,'胸を使うLV3']; return lArrExchange;}
|
||
else if (item=='M2WQ5'){lArrExchange=['5', 4, 0,4,1,0,0,'' ,'胸を使うLV4']; return lArrExchange;}
|
||
else if (item=='M2WQ4'){lArrExchange=['5', 4, 0,4,1,0,1,'' ,'胸を使うLV5']; return lArrExchange;}
|
||
else if (item=='M2WQ6'){lArrExchange=['5', 4, 0,4,1,0,2,'0','胸を使うLV6','挿入胸責め']; return lArrExchange;}
|
||
else if (item=='M6WQ1'){lArrExchange=['5', 4,10,4,0,0,0,'1','愛撫LV1','顔でぷにぷに']; return lArrExchange;}
|
||
else if (item=='M3WQ3'){lArrExchange=['5', 4,10,4,0,0,1,'' ,'愛撫LV2']; return lArrExchange;}
|
||
else if (item=='M3WQ4'){lArrExchange=['5', 4,10,4,0,0,2,'' ,'愛撫LV3']; return lArrExchange;}
|
||
else if (item=='M3WQ2'){lArrExchange=['5', 4,10,4,1,0,0,'' ,'愛撫LV4']; return lArrExchange;}
|
||
else if (item=='M3WQ7'){lArrExchange=['5', 4,10,4,1,0,1,'' ,'愛撫LV5']; return lArrExchange;}
|
||
else if (item=='M3WQ6'){lArrExchange=['5', 4,10,4,1,0,2,'1','愛撫LV6','搾精/射精']; return lArrExchange;}
|
||
else if (item=='O1WQ1'){lArrExchange=['6', 5, 0,5,0,0,0,'1','自慰LV1','眠る隣で1/射精']; return lArrExchange;}
|
||
else if (item=='O1WQ2'){lArrExchange=['6', 5, 0,5,0,0,1,'1','自慰LV2','眠る隣で2/射精']; return lArrExchange;}
|
||
else if (item=='O1WQ3'){lArrExchange=['6', 5, 0,5,0,0,2,'1','自慰LV3','自慰・強']; return lArrExchange;}
|
||
else if (item=='O1WQ4'){lArrExchange=['6', 5, 0,5,1,0,0,'1','自慰LV4','顔にかけて…/射精']; return lArrExchange;}
|
||
else if (item=='O1WQ5'){lArrExchange=['6', 5, 0,5,1,0,1,'' ,'自慰LV5']; return lArrExchange;}
|
||
else if (item=='O4WQ2'){lArrExchange=['6', 5, 0,5,1,0,2,'1','自慰LV6','自慰フェラ向き変え']; return lArrExchange;}
|
||
else if (item=='F6WQ1'){lArrExchange=['6', 5,10,5,0,0,0,'' ,'足を使うLV1']; return lArrExchange;}
|
||
else if (item=='F6WQ2'){lArrExchange=['6', 5,10,5,0,0,1,'' ,'足を使うLV2']; return lArrExchange;}
|
||
else if (item=='F6WQ3'){lArrExchange=['6', 5,10,5,0,0,2,'2','足を使うLV3','少年カメラ']; return lArrExchange;}
|
||
else if (item=='F6WQ4'){lArrExchange=['6', 5,10,5,1,0,0,'' ,'足を使うLV4']; return lArrExchange;}
|
||
else if (item=='F6WQ5'){lArrExchange=['6', 5,10,5,1,0,1,'' ,'足を使うLV5']; return lArrExchange;}
|
||
else if (item=='F6WQ6'){lArrExchange=['6', 5,10,5,1,0,2,'' ,'足を使うLV6']; return lArrExchange;}
|
||
else if (item=='D1WQ2'){lArrExchange=['7', 6, 0,6,0,0,0,'' ,'道具使うLV1']; return lArrExchange;}
|
||
else if (item=='D1WQ1'){lArrExchange=['7', 6, 0,6,0,0,1,'' ,'道具使うLV2']; return lArrExchange;}
|
||
else if (item=='D3WQ1'){lArrExchange=['7', 6, 0,6,0,0,2,'' ,'道具使うLV3']; return lArrExchange;}
|
||
else if (item=='D1WQ3'){lArrExchange=['7', 6, 0,6,1,0,0,'0','道具使うLV4','拘束/射精']; return lArrExchange;}
|
||
else if (item=='D1WQ4'){lArrExchange=['7', 6, 0,6,1,0,1,'' ,'道具使うLV5']; return lArrExchange;}
|
||
else if (item=='D2WQ2'){lArrExchange=['7', 6, 0,6,1,0,2,'' ,'道具使うLV6']; return lArrExchange;}
|
||
else if (item=='D7WQ1'){lArrExchange=['7', 6,10,6,0,0,2,'' ,'逆道具LV3']; return lArrExchange;}
|
||
else if (item=='D7WQ2'){lArrExchange=['7', 6,10,6,1,0,2,'' ,'逆道具LV6']; return lArrExchange;}
|
||
else if (item=='S1WQ1'){lArrExchange=['A', 0, 0,0,0,1,0,'1','正常位LV1','断面図/射精']; return lArrExchange;}
|
||
else if (item=='S1WQ2'){lArrExchange=['A', 0, 0,0,0,1,1,'0','正常位LV2','断面図']; return lArrExchange;}
|
||
else if (item=='S1WQ3'){lArrExchange=['A', 0, 0,0,0,1,2,'' ,'正常位LV3']; return lArrExchange;}
|
||
else if (item=='S1WQ4'){lArrExchange=['A', 0, 0,0,1,1,0,'1','正常位LV4','断面図']; return lArrExchange;}
|
||
else if (item=='S1WQ5'){lArrExchange=['A', 0, 0,0,1,1,1,'0','正常位LV5','アブノ断面']; return lArrExchange;}
|
||
else if (item=='S3WQ6'){lArrExchange=['A', 0, 0,0,1,1,2,'0','正常位LV6','断面図']; return lArrExchange;}
|
||
else if (item=='S4WQ1'){lArrExchange=['B', 0, 0,1,0,1,0,'' ,'腰を振るLV1']; return lArrExchange;}
|
||
else if (item=='S3WQ5'){lArrExchange=['B', 0, 0,1,0,1,1,'' ,'腰を振るLV2']; return lArrExchange;}
|
||
else if (item=='S3WQ2'){lArrExchange=['B', 0, 0,1,0,1,2,'1','腰を振るLV3','擦り合い/射精']; return lArrExchange;}
|
||
else if (item=='S3WQ3'){lArrExchange=['B', 0, 0,1,1,1,0,'' ,'腰を振るLV4']; return lArrExchange;}
|
||
else if (item=='S3WQ1'){lArrExchange=['B', 0, 0,1,1,1,1,'0','腰を振るLV5','断面図']; return lArrExchange;}
|
||
else if (item=='S3WQ4'){lArrExchange=['B', 0, 0,1,1,1,2,'' ,'腰を振るLV6']; return lArrExchange;}
|
||
else if (item=='K1WQ1'){lArrExchange=['C', 8, 0,2,0,1,0,'' ,'騎乗位LV1']; return lArrExchange;}
|
||
else if (item=='K1WQ2'){lArrExchange=['C', 8, 0,2,0,1,1,'' ,'騎乗位LV2']; return lArrExchange;}
|
||
else if (item=='K1WQ3'){lArrExchange=['C', 8, 0,2,0,1,2,'0','騎乗位LV3','精液を付けて/射精']; return lArrExchange;}
|
||
else if (item=='K1WQ4'){lArrExchange=['C', 8, 0,2,1,1,0,'' ,'騎乗位LV4']; return lArrExchange;}
|
||
else if (item=='K1WQ5'){lArrExchange=['C', 8, 0,2,1,1,1,'' ,'騎乗位LV5','断面図']; return lArrExchange;}
|
||
else if (item=='K1WQ8'){lArrExchange=['C', 8, 0,2,1,1,2,'' ,'騎乗位LV6']; return lArrExchange;}
|
||
else if (item=='K7WQ1'){lArrExchange=['C', 8,10,2,0,1,2,'' ,'逆騎乗LV3']; return lArrExchange;}
|
||
else if (item=='K7WQ4'){lArrExchange=['C', 8,10,2,1,1,2,'' ,'逆騎乗LV6']; return lArrExchange;}
|
||
else if (item=='B1WQ1'){lArrExchange=['D', 9, 0,3,0,1,0,'' ,'後背位LV1']; return lArrExchange;}
|
||
else if (item=='B1WQ2'){lArrExchange=['D', 9, 0,3,0,1,1,'0','後背位LV2','断面図']; return lArrExchange;}
|
||
else if (item=='B1WQ3'){lArrExchange=['D', 9, 0,3,0,1,2,'1','後背位LV3','断面図']; return lArrExchange;}
|
||
else if (item=='B1WQ4'){lArrExchange=['D', 9, 0,3,1,1,0,'0','後背位LV4','アブノ断面/射精']; return lArrExchange;}
|
||
else if (item=='B3WQ5'){lArrExchange=['D', 9, 0,3,1,1,1,'' ,'後背位LV5']; return lArrExchange;}
|
||
else if (item=='B1WQ6'){lArrExchange=['D', 9, 0,3,1,1,2,'0','後背位LV6','後背・強']; return lArrExchange;}
|
||
else if (item=='B7WQ1'){lArrExchange=['D', 9,10,3,0,1,2,'' ,'逆後背LV3']; return lArrExchange;}
|
||
else if (item=='B7WQ4'){lArrExchange=['D', 9,10,3,1,1,2,'' ,'逆後背LV6']; return lArrExchange;}
|
||
else if (item=='K2WQ2'){lArrExchange=['E',10, 0,4,0,1,0,'' ,'強騎乗LV1']; return lArrExchange;}
|
||
else if (item=='K3WQ1'){lArrExchange=['E',10, 0,4,0,1,1,'' ,'強騎乗LV2']; return lArrExchange;}
|
||
else if (item=='K6WQ1'){lArrExchange=['E',10, 0,4,0,1,2,'1','強騎乗LV3','顔騎乗向き変え']; return lArrExchange;}
|
||
else if (item=='K3WQ2'){lArrExchange=['E',10, 0,4,1,1,0,'2','強騎乗LV4','アブノ断面']; return lArrExchange;}
|
||
else if (item=='K5WQ1'){lArrExchange=['E',10, 0,4,1,1,1,'0','強騎乗LV5','断面図']; return lArrExchange;}
|
||
else if (item=='K1WQ9'){lArrExchange=['E',10, 0,4,1,1,2,'1','強騎乗LV6','にゃん二人で']; return lArrExchange;}
|
||
else if (item=='B3WQ1'){lArrExchange=['E',10,10,4,0,1,0,'' ,'強後背LV1']; return lArrExchange;}
|
||
else if (item=='B3WQ2'){lArrExchange=['E',10,10,4,0,1,1,'1','強後背LV2','断面図']; return lArrExchange;}
|
||
else if (item=='B3WQ3'){lArrExchange=['E',10,10,4,0,1,2,'1','強後背LV3','浴槽で挿入2/射精']; return lArrExchange;}
|
||
else if (item=='B2WQ2'){lArrExchange=['E',10,10,4,1,1,0,'1','強後背LV4','浴槽で挿入1/射精']; return lArrExchange;}
|
||
else if (item=='B1WQ5'){lArrExchange=['E',10,10,4,1,1,1,'1','強後背LV5','断面図']; return lArrExchange;}
|
||
else if (item=='B3WQ6'){lArrExchange=['E',10,10,4,1,1,2,'' ,'強後背LV6']; return lArrExchange;}
|
||
else if (item=='S6WQ1'){lArrExchange=['F',11, 0,5,0,1,0,'1','指挿入LV1','アブノ断面']; return lArrExchange;}
|
||
else if (item=='S6WQ2'){lArrExchange=['F',11, 0,5,0,1,1,'' ,'指挿入LV2']; return lArrExchange;}
|
||
else if (item=='S6WQ5'){lArrExchange=['F',11, 0,5,0,1,2,'' ,'指挿入LV3']; return lArrExchange;}
|
||
else if (item=='S6WQ3'){lArrExchange=['F',11, 0,5,1,1,0,'0','指挿入LV4','舐めて/射精']; return lArrExchange;}
|
||
else if (item=='S6WQ4'){lArrExchange=['F',11, 0,5,1,1,1,'2','指挿入LV5','アブノ断面']; return lArrExchange;}
|
||
else if (item=='S6WQ6'){lArrExchange=['F',11, 0,5,1,1,2,'' ,'指挿入LV6']; return lArrExchange;}
|
||
else if (item=='F1WQ8'){lArrExchange=['F',11,10,5,0,1,2,'' ,'搾精LV3']; return lArrExchange;}
|
||
else if (item=='F1WQ7'){lArrExchange=['F',11,10,5,1,1,2,'' ,'搾精LV6']; return lArrExchange;}
|
||
else if (item=='B8WQ1'){lArrExchange=['G',12, 0,6,0,1,0,'1','アナルLV1','にゃん前貼り']; return lArrExchange;}
|
||
else if (item=='D8WQ1'){lArrExchange=['G',12, 0,6,0,1,1,'0','アナルLV2','にゃんオナニー/射精']; return lArrExchange;}
|
||
else if (item=='D8WQ9'){lArrExchange=['G',12, 0,6,0,1,2,'0','アナルLV3','にゃんジャンプ']; return lArrExchange;}
|
||
else if (item=='B8WQ2'){lArrExchange=['G',12, 0,6,1,1,0,'' ,'アナルLV4']; return lArrExchange;}
|
||
else if (item=='K8WQ1'){lArrExchange=['G',12, 0,6,1,1,1,'' ,'アナルLV5']; return lArrExchange;}
|
||
else if (item=='S8WQ1'){lArrExchange=['G',12, 0,6,1,1,2,'1','アナルLV6','にゃん変態プレイ']; return lArrExchange;}
|
||
else if (item=='D8WQ8'){lArrExchange=['G',12,10,6,0,1,2,'' ,'逆アナルLV3']; return lArrExchange;}
|
||
else if (item=='D8WQ7'){lArrExchange=['G',12,10,6,1,1,2,'' ,'逆アナルLV6']; return lArrExchange;}
|
||
else{return;}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function referBookMark(num)
|
||
{
|
||
// 栞の番号numからファイル名を獲得
|
||
var fn = kag.getBookMarkFileNameAtNum(num);
|
||
// ファイルfnから栞を読み込む
|
||
try {
|
||
if (!Storages.isExistentStorage(fn)) // ファイルがない
|
||
return void;
|
||
var modestr;
|
||
if (kag.saveThumbnail)
|
||
modestr += "o" + kag.calcThumbnailSize().size; // 指定オフセットからデータを読み込む
|
||
var data = Scripts.evalStorage(fn, modestr);
|
||
if(data.id != kag.saveDataID)
|
||
return void;
|
||
var result = data.user;
|
||
result = %[] if result === void;
|
||
return result;
|
||
}
|
||
catch(e) {
|
||
return void;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function shuffle(arr, num=0)
|
||
{
|
||
// 配列かそうでないかをチェック
|
||
if (!(arr instanceof "Array"))
|
||
throw new Exception("shuffle() : 第1引数には配列を指定してください");
|
||
|
||
if (arr.count < 2) // 要素数が1個以下なら直ちに終了
|
||
return;
|
||
|
||
// Math.RandomGeneratorオブジェクトを作成
|
||
var generator = new Math.RandomGenerator();
|
||
|
||
if (arr.count == 2) { // 要素数が2個なら…
|
||
if (generator.random() >= 0.5) {
|
||
arr[0] <-> arr[1]; // 1/2の確率で入れ替え
|
||
}
|
||
}
|
||
else if (arr.count > 2) { // 要素数が3個以上なら…
|
||
if (+num <= 0) {
|
||
num = arr.count; // 第2引数省略時、入れ替える回数を設定
|
||
}
|
||
|
||
for (var i = 0; i < num; i++) { // 入れ替える回数ぶん繰り返し
|
||
var x = int(generator.random()*arr.count); // 0~arr.count-1が返る
|
||
var y;
|
||
do {
|
||
y = int(generator.random()*arr.count);
|
||
} while (y == x); // x != yとなるまで繰り返し
|
||
arr[x] <-> arr[y]; // 入れ替え
|
||
}
|
||
}
|
||
|
||
// Math.RandomGeneratorオブジェクトを無効化
|
||
invalidate generator;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
class LayerMoving extends Window {
|
||
var laytimer; // タイマーオブジェクト
|
||
var startTime; // アニメーション開始時刻
|
||
var duration; // アニメーションの持続時間
|
||
var startValue; // 開始位置
|
||
var endValue; // 終了位置
|
||
var moving; // アニメーション実行中かどうかのフラグ
|
||
var currentYPosition; // レイヤーの現在のY座標
|
||
var minY = -740; // Y座標の最小値
|
||
var maxY = 20; // Y座標の最大値
|
||
var defaultDuration = 800; // デフォルトのデュレーション
|
||
var delayDuration = 10; // 遅延時間(ミリ秒)
|
||
var minX = 100; // アニメーションが起動するX座標の最小値
|
||
var maxX = 800; // アニメーションが起動するX座標の最大値
|
||
var mouseYstart = 200; // マウス位置のスタート地点
|
||
var amplificationFactor = 1.5; // 移動量の増幅係数
|
||
var lastMouseX; // 前回のマウスX座標
|
||
var lastMouseY; // 前回のマウスY座標
|
||
var lastMouseTime; // 前回のマウス移動時間
|
||
var mouseStillTime = 300; // マウスが静止していると判断する時間(ミリ秒)
|
||
|
||
// コンストラクタ
|
||
function LayerMoving() {
|
||
laytimer = new Timer(this, "action");
|
||
add(laytimer);
|
||
laytimer.interval = 1;
|
||
laytimer.enabled = true;
|
||
|
||
startTime = System.getTickCount();
|
||
duration = 800;
|
||
startValue = 0;
|
||
endValue = 200;
|
||
moving = true;
|
||
currentYPosition = 0;
|
||
lastMouseX = 0;
|
||
lastMouseY = 0;
|
||
lastMouseTime = System.getTickCount();
|
||
}
|
||
|
||
// デストラクタ
|
||
function finalize() {
|
||
super.finalize();
|
||
}
|
||
|
||
// 加速度を計算する関数
|
||
function easeIn(currentTime, startValue, changeInValue, duration) {
|
||
currentTime /= duration;
|
||
return changeInValue * currentTime * currentTime + startValue;
|
||
}
|
||
|
||
// 減速を計算する関数
|
||
function easeOut(currentTime, startValue, changeInValue, duration) {
|
||
currentTime /= duration;
|
||
return -changeInValue * currentTime * (currentTime - 2) + startValue;
|
||
}
|
||
|
||
// アニメーションをリセットする関数
|
||
function resetAnimation() {
|
||
if (!moving) {
|
||
startTime = System.getTickCount();
|
||
moving = true;
|
||
}
|
||
}
|
||
|
||
// アニメーションの動きを制御する関数
|
||
function Moves() {
|
||
if (!moving) return;
|
||
|
||
var currentTime = System.getTickCount() - startTime;
|
||
if (currentTime > duration) {
|
||
currentTime = duration;
|
||
moving = false;
|
||
startValue = currentYPosition;
|
||
} else {
|
||
var changeInValue = endValue - startValue;
|
||
var currentPosition = easeOut(currentTime, startValue, changeInValue, duration);
|
||
currentYPosition = currentPosition;
|
||
kag.movies[0].setPos(krkrLeft, currentPosition);
|
||
}
|
||
}
|
||
|
||
// マウスの動きに応じてアニメーションを制御する関数
|
||
function action(ev) {
|
||
var mouseY = kag.primaryLayer.cursorY;
|
||
var targetY = (mouseY - mouseYstart) * amplificationFactor;
|
||
|
||
if (targetY < minY) {
|
||
endValue = minY;
|
||
} else if (targetY > maxY) {
|
||
endValue = maxY;
|
||
} else {
|
||
endValue = targetY;
|
||
}
|
||
|
||
startValue = currentYPosition;
|
||
duration = defaultDuration;
|
||
startTime = System.getTickCount();
|
||
moving = true;
|
||
}
|
||
|
||
// マウス移動イベントの処理
|
||
function onMouseMove(x, y, shift) {
|
||
var currentTime = System.getTickCount();
|
||
var deltaX = Math.abs(x - lastMouseX);
|
||
var deltaY = Math.abs(y - lastMouseY);
|
||
var deltaTime = currentTime - lastMouseTime;
|
||
|
||
if (deltaX > 50 || deltaY > 50 || deltaTime > mouseStillTime) {
|
||
lastMouseX = x;
|
||
lastMouseY = y;
|
||
lastMouseTime = currentTime;
|
||
|
||
action();
|
||
}
|
||
|
||
super.onMouseMove(x, y, shift);
|
||
}
|
||
}
|
||
|
||
//var layTim = new LayerMoving();
|
||
|
||
|
||
|
||
|
||
|
||
class GaugeFlash extends Window {
|
||
var Gaugetimer;
|
||
var layer6 = kag.fore.layers[1];
|
||
var opss;
|
||
|
||
|
||
// コンストラクタ
|
||
function GaugeFlash() {
|
||
Gaugetimer = new Timer(this, "action");
|
||
add(Gaugetimer);
|
||
Gaugetimer.interval = 1000;
|
||
Gaugetimer.enabled = true;
|
||
|
||
}
|
||
|
||
// デストラクタ
|
||
function finalize() {
|
||
super.finalize();
|
||
}
|
||
|
||
|
||
function action(ev) {
|
||
opss = 255 - Math.abs((System.getTickCount() % 510) - 255);
|
||
layer6.adjustGamma(1.0, 0, opss, 1.0, 0, 255, 1.0, 0, 255);
|
||
|
||
|
||
}
|
||
}
|
||
|
||
//var asdf = new GaugeFlash();
|
||
|
||
|
||
|
||
|
||
System.onActivate = function() {
|
||
// ここにウィンドウがアクティブになった時に実行したいコードを書く!!!
|
||
lFocused=1;
|
||
};
|
||
|
||
System.onDeactivate = function() {
|
||
// ここにウィンドウがアクティブになった時に実行したいコードを書く!!!
|
||
lFocused=0;
|
||
};
|
||
|
||
|
||
[endscript]
|
||
|
||
|
||
|
||
|
||
|
||
|
||
[return] |