mirror of https://github.com/Mabbs/mabbs.github.io
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							490 lines
						
					
					
						
							15 KiB
						
					
					
				
			
		
		
	
	
							490 lines
						
					
					
						
							15 KiB
						
					
					
				var userAgent = window.navigator.userAgent.toLowerCase(); | 
						|
console.log(userAgent); | 
						|
var norunAI = ["android", "iphone", "ipod", "ipad", "windows phone"]; | 
						|
var norunFlag = false; | 
						|
 | 
						|
 | 
						|
for (var i = 0; i < norunAI.length; i++) { | 
						|
	if (userAgent.indexOf(norunAI[i]) > -1) { | 
						|
		norunFlag = true; | 
						|
		break; | 
						|
	} | 
						|
} | 
						|
 | 
						|
if (!window.WebGLRenderingContext) { | 
						|
	norunFlag = true; | 
						|
} | 
						|
 | 
						|
if (!norunFlag) { | 
						|
	var hitFlag = false; | 
						|
	var AIFadeFlag = false; | 
						|
	var liveTlakTimer = null; | 
						|
	var sleepTimer_ = null; | 
						|
	var AITalkFlag = false; | 
						|
	var talkNum = 0; | 
						|
	(function () { | 
						|
		function renderTip(template, context) { | 
						|
			var tokenReg = /(\\)?\{([^\{\}\\]+)(\\)?\}/g; | 
						|
			return template.replace(tokenReg, function (word, slash1, token, slash2) { | 
						|
				if (slash1 || slash2) { | 
						|
					return word.replace(/\\/g, ''); | 
						|
				} | 
						|
				var variables = token.replace(/\s/g, '').split('.'); | 
						|
				var currentObject = context; | 
						|
				var i, length, variable; | 
						|
				for (i = 0, length = variables.length; i < length; ++i) { | 
						|
					variable = variables[i]; | 
						|
					currentObject = currentObject[variable]; | 
						|
					if (currentObject === undefined || currentObject === null) return ''; | 
						|
				} | 
						|
				return currentObject; | 
						|
			}); | 
						|
		} | 
						|
 | 
						|
		String.prototype.renderTip = function (context) { | 
						|
			return renderTip(this, context); | 
						|
		}; | 
						|
 | 
						|
		var re = /x/; | 
						|
		console.log(re); | 
						|
		re.toString = function () { | 
						|
			showMessage('哈哈,你打开了控制台,是想要看看我的秘密吗?', 5000); | 
						|
			return ''; | 
						|
		}; | 
						|
 | 
						|
		$(document).on('copy', function () { | 
						|
			showMessage('你都复制了些什么呀,转载要记得加上出处哦~~', 5000); | 
						|
		}); | 
						|
 | 
						|
		function initTips() { | 
						|
			$.ajax({ | 
						|
				cache: true, | 
						|
				url: message_Path + 'message.json', | 
						|
				dataType: "json", | 
						|
				success: function (result) { | 
						|
					$.each(result.mouseover, function (index, tips) { | 
						|
						$(tips.selector).mouseover(function () { | 
						|
							var text = tips.text; | 
						|
							if (Array.isArray(tips.text)) text = tips.text[Math.floor(Math.random() * tips.text.length + 1) - 1]; | 
						|
							text = text.renderTip({ text: $(this).text() }); | 
						|
							showMessage(text, 3000); | 
						|
							talkValTimer(); | 
						|
							clearInterval(liveTlakTimer); | 
						|
							liveTlakTimer = null; | 
						|
						}); | 
						|
						$(tips.selector).mouseout(function () { | 
						|
							showHitokoto(); | 
						|
							if (liveTlakTimer == null) { | 
						|
								liveTlakTimer = window.setInterval(function () { | 
						|
									showHitokoto(); | 
						|
								}, 15000); | 
						|
							}; | 
						|
						}); | 
						|
					}); | 
						|
					$.each(result.click, function (index, tips) { | 
						|
						$(tips.selector).click(function () { | 
						|
							if (hitFlag) { | 
						|
								return false | 
						|
							} | 
						|
							hitFlag = true; | 
						|
							setTimeout(function () { | 
						|
								hitFlag = false; | 
						|
							}, 8000); | 
						|
							var text = tips.text; | 
						|
							if (Array.isArray(tips.text)) text = tips.text[Math.floor(Math.random() * tips.text.length + 1) - 1]; | 
						|
							text = text.renderTip({ text: $(this).text() }); | 
						|
							showMessage(text, 3000); | 
						|
						}); | 
						|
						clearInterval(liveTlakTimer); | 
						|
						liveTlakTimer = null; | 
						|
						if (liveTlakTimer == null) { | 
						|
							liveTlakTimer = window.setInterval(function () { | 
						|
								showHitokoto(); | 
						|
							}, 15000); | 
						|
						}; | 
						|
					}); | 
						|
				} | 
						|
			}); | 
						|
		} | 
						|
		initTips(); | 
						|
 | 
						|
		var text; | 
						|
		if (document.referrer !== '' && document.referrer.split('/')[2] !== window.location.host) { | 
						|
			var referrer = document.createElement('a'); | 
						|
			referrer.href = document.referrer; | 
						|
			text = '嗨!来自 <span style="color:#0099cc;">' + referrer.hostname + '</span> 的朋友!'; | 
						|
			var domain = referrer.hostname.split('.')[1]; | 
						|
			if (domain == 'baidu') { | 
						|
				text = '嗨! 来自 百度搜索 的朋友!<br>欢迎访问<span style="color:#0099cc;">「 ' + document.title.split(' | ')[0] + ' 」</span>'; | 
						|
			} else if (domain == 'so') { | 
						|
				text = '嗨! 来自 360搜索 的朋友!<br>欢迎访问<span style="color:#0099cc;">「 ' + document.title.split(' | ')[0] + ' 」</span>'; | 
						|
			} else if (domain == 'google') { | 
						|
				text = '嗨! 来自 谷歌搜索 的朋友!<br>欢迎访问<span style="color:#0099cc;">「 ' + document.title.split(' | ')[0] + ' 」</span>'; | 
						|
			} | 
						|
		} else { | 
						|
			if (window.location.pathname == "/") { //主页URL判断,需要斜杠结尾 | 
						|
				var now = (new Date()).getHours(); | 
						|
				if (now > 23 || now <= 5) { | 
						|
					text = '你是夜猫子呀?这么晚还不睡觉,明天起的来嘛?'; | 
						|
				} else if (now > 5 && now <= 7) { | 
						|
					text = '早上好!一日之计在于晨,美好的一天就要开始了!'; | 
						|
				} else if (now > 7 && now <= 11) { | 
						|
					text = '上午好!工作顺利嘛,不要久坐,多起来走动走动哦!'; | 
						|
				} else if (now > 11 && now <= 14) { | 
						|
					text = '中午了,工作了一个上午,现在是午餐时间!'; | 
						|
				} else if (now > 14 && now <= 17) { | 
						|
					text = '午后很容易犯困呢,今天的运动目标完成了吗?'; | 
						|
				} else if (now > 17 && now <= 19) { | 
						|
					text = '傍晚了!窗外夕阳的景色很美丽呢,最美不过夕阳红~~'; | 
						|
				} else if (now > 19 && now <= 21) { | 
						|
					text = '晚上好,今天过得怎么样?'; | 
						|
				} else if (now > 21 && now <= 23) { | 
						|
					text = '已经这么晚了呀,早点休息吧,晚安~~'; | 
						|
				} else { | 
						|
					text = '嗨~ 快来逗我玩吧!'; | 
						|
				} | 
						|
			} else { | 
						|
				text = '欢迎阅读<span style="color:#0099cc;">「 ' + document.title.split(' | ')[0] + ' 」</span>'; | 
						|
			} | 
						|
		} | 
						|
		showMessage(text, 12000); | 
						|
	})(); | 
						|
 | 
						|
	liveTlakTimer = setInterval(function () { | 
						|
		showHitokoto(); | 
						|
	}, 15000); | 
						|
 | 
						|
	function showHitokoto() { | 
						|
		if (sessionStorage.getItem("Sleepy") !== "1") { | 
						|
			if (!AITalkFlag) { | 
						|
				$.getJSON('https://hitokoto.mayx.eu.org/', function (result) { | 
						|
					talkValTimer(); | 
						|
					showMessage(result.hitokoto, 0); | 
						|
				}); | 
						|
			} | 
						|
		} else { | 
						|
			hideMessage(0); | 
						|
			if (sleepTimer_ == null) { | 
						|
				sleepTimer_ = setInterval(function () { | 
						|
					checkSleep(); | 
						|
				}, 200); | 
						|
			} | 
						|
			console.log(sleepTimer_); | 
						|
		} | 
						|
	} | 
						|
 | 
						|
	function checkSleep() { | 
						|
		var sleepStatu = sessionStorage.getItem("Sleepy"); | 
						|
		if (sleepStatu !== '1') { | 
						|
			talkValTimer(); | 
						|
			showMessage('你回来啦~', 0); | 
						|
			clearInterval(sleepTimer_); | 
						|
			sleepTimer_ = null; | 
						|
		} | 
						|
	} | 
						|
 | 
						|
	function showMessage(text, timeout) { | 
						|
		if (Array.isArray(text)) text = text[Math.floor(Math.random() * text.length + 1) - 1]; | 
						|
		//console.log('showMessage', text); | 
						|
		$('.message').stop(); | 
						|
		if (typeof EventSource !== 'undefined' && text instanceof EventSource) { | 
						|
			var outputContainer = $('.message')[0]; | 
						|
			var eventFlag = false; | 
						|
			text.onmessage = function (event) { | 
						|
				if (event.data == "[DONE]") { | 
						|
					text.close(); | 
						|
					return; | 
						|
				} else { | 
						|
					if (!eventFlag) { | 
						|
						talkValTimer(); | 
						|
						outputContainer.textContent = ""; | 
						|
						eventFlag = true; | 
						|
					} | 
						|
					var data = JSON.parse(event.data); | 
						|
					if (data.response) { | 
						|
						outputContainer.textContent += data.response; | 
						|
					} | 
						|
				} | 
						|
			} | 
						|
		} else { | 
						|
			$('.message').html(text); | 
						|
		} | 
						|
		$('.message').fadeTo(200, 1); | 
						|
		//if (timeout === null) timeout = 5000; | 
						|
		//hideMessage(timeout); | 
						|
	} | 
						|
	function talkValTimer() { | 
						|
		$('#live_talk').val('1'); | 
						|
	} | 
						|
 | 
						|
	function hideMessage(timeout) { | 
						|
		//$('.message').stop().css('opacity',1); | 
						|
		if (timeout === null) timeout = 5000; | 
						|
		$('.message').delay(timeout).fadeTo(200, 0); | 
						|
	} | 
						|
 | 
						|
	function initLive2d() { | 
						|
		$("#landlord").mouseenter(function () { | 
						|
			$(".live_ico_box").fadeIn(); | 
						|
		}); | 
						|
		$("#landlord").mouseleave(function () { | 
						|
			$(".live_ico_box").fadeOut(); | 
						|
		}); | 
						|
		$('#hideButton').on('click', function () { | 
						|
			if (AIFadeFlag) { | 
						|
				return false; | 
						|
			} else { | 
						|
				AIFadeFlag = true; | 
						|
				localStorage.setItem("live2dhidden", "0"); | 
						|
				$('#landlord').fadeOut(200); | 
						|
				$('#open_live2d').delay(200).fadeIn(200); | 
						|
				setTimeout(function () { | 
						|
					AIFadeFlag = false; | 
						|
				}, 300); | 
						|
			} | 
						|
		}); | 
						|
		$('#open_live2d').on('click', function () { | 
						|
			if (AIFadeFlag) { | 
						|
				return false; | 
						|
			} else { | 
						|
				AIFadeFlag = true; | 
						|
				localStorage.setItem("live2dhidden", "1"); | 
						|
				$('#open_live2d').fadeOut(200); | 
						|
				$('#landlord').delay(200).fadeIn(200); | 
						|
				setTimeout(function () { | 
						|
					AIFadeFlag = false; | 
						|
				}, 300); | 
						|
			} | 
						|
		}); | 
						|
		$('#youduButton').on('click', function () { | 
						|
			if ($('#youduButton').hasClass('doudong')) { | 
						|
				var typeIs = $('#youduButton').attr('data-type'); | 
						|
				$('#youduButton').removeClass('doudong'); | 
						|
				$('body').removeClass(typeIs); | 
						|
				$('#youduButton').attr('data-type', ''); | 
						|
			} else { | 
						|
				var duType = $('#duType').val(); | 
						|
				var duArr = duType.split(","); | 
						|
				var dataType = duArr[Math.floor(Math.random() * duArr.length)]; | 
						|
 | 
						|
				$('#youduButton').addClass('doudong'); | 
						|
				$('#youduButton').attr('data-type', dataType); | 
						|
				$('body').addClass(dataType); | 
						|
			} | 
						|
		}); | 
						|
		if (talkAPI !== "" && typeof EventSource !== 'undefined') { | 
						|
			$('#showInfoBtn').on('click', function () { | 
						|
				var live_statu = $('#live_statu_val').val(); | 
						|
				if (live_statu == "0") { | 
						|
					return | 
						|
				} else { | 
						|
					$('#live_statu_val').val("0"); | 
						|
					$('.live_talk_input_body').fadeOut(500); | 
						|
					AITalkFlag = false; | 
						|
					showHitokoto(); | 
						|
					$('#showTalkBtn').show(); | 
						|
					$('#showInfoBtn').hide(); | 
						|
				} | 
						|
			}); | 
						|
			$('#showTalkBtn').on('click', function () { | 
						|
				var live_statu = $('#live_statu_val').val(); | 
						|
				if (live_statu == "1") { | 
						|
					return | 
						|
				} else { | 
						|
					$('#live_statu_val').val("1"); | 
						|
					$('.live_talk_input_body').fadeIn(500); | 
						|
					AITalkFlag = true; | 
						|
					$('#showTalkBtn').hide(); | 
						|
					$('#showInfoBtn').show(); | 
						|
 | 
						|
				} | 
						|
			}); | 
						|
			$('#live_talk_input_form').on('submit', function (e) { | 
						|
				e.preventDefault(); | 
						|
				var info_ = $('#AIuserText').val(); | 
						|
				// var userid_ = $('#AIuserName').val(); | 
						|
				let add_id = ""; | 
						|
				if ($('#load_this').prop("checked")) { | 
						|
					add_id = "&id=" + encodeURIComponent($('#post_id').val()); | 
						|
				} | 
						|
				if (info_ == "") { | 
						|
					showMessage('写点什么吧!', 0); | 
						|
					return; | 
						|
				} | 
						|
				showMessage('思考中~', 0); | 
						|
				showMessage(new EventSource(talkAPI + "?info=" + encodeURIComponent(info_) + add_id)); | 
						|
			}); | 
						|
		} else { | 
						|
			$('#showInfoBtn').hide(); | 
						|
			$('#showTalkBtn').hide(); | 
						|
 | 
						|
		} | 
						|
		// //获取用户名 | 
						|
		// var live2dUser = sessionStorage.getItem("live2duser"); | 
						|
		// if(live2dUser !== null){ | 
						|
		// 	$('#AIuserName').val(live2dUser); | 
						|
		// } | 
						|
		//获取位置 | 
						|
		var landL = sessionStorage.getItem("historywidth"); | 
						|
		var landB = sessionStorage.getItem("historyheight"); | 
						|
		if (landL == null || landB == null) { | 
						|
			landL = '5px' | 
						|
			landB = '0px' | 
						|
		} | 
						|
		$('#landlord').css('left', landL + 'px'); | 
						|
		$('#landlord').css('bottom', landB + 'px'); | 
						|
		//移动 | 
						|
		function getEvent() { | 
						|
			return window.event || arguments.callee.caller.arguments[0]; | 
						|
		} | 
						|
		var smcc = document.getElementById("landlord"); | 
						|
		var moveX = 0; | 
						|
		var moveY = 0; | 
						|
		var moveBottom = 0; | 
						|
		var moveLeft = 0; | 
						|
		var moveable = false; | 
						|
		var docMouseMoveEvent = document.onmousemove; | 
						|
		var docMouseUpEvent = document.onmouseup; | 
						|
		smcc.onmousedown = function () { | 
						|
			var ent = getEvent(); | 
						|
			moveable = true; | 
						|
			moveX = ent.clientX; | 
						|
			moveY = ent.clientY; | 
						|
			var obj = smcc; | 
						|
			moveBottom = parseInt(obj.style.bottom); | 
						|
			moveLeft = parseInt(obj.style.left); | 
						|
			if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) { | 
						|
				window.getSelection().removeAllRanges(); | 
						|
			} | 
						|
			document.onmousemove = function () { | 
						|
				if (moveable) { | 
						|
					var ent = getEvent(); | 
						|
					var x = moveLeft + ent.clientX - moveX; | 
						|
					var y = moveBottom + (moveY - ent.clientY); | 
						|
					obj.style.left = x + "px"; | 
						|
					obj.style.bottom = y + "px"; | 
						|
				} | 
						|
			}; | 
						|
			document.onmouseup = function () { | 
						|
				if (moveable) { | 
						|
					var historywidth = obj.style.left; | 
						|
					var historyheight = obj.style.bottom; | 
						|
					historywidth = historywidth.replace('px', ''); | 
						|
					historyheight = historyheight.replace('px', ''); | 
						|
					sessionStorage.setItem("historywidth", historywidth); | 
						|
					sessionStorage.setItem("historyheight", historyheight); | 
						|
					document.onmousemove = docMouseMoveEvent; | 
						|
					document.onmouseup = docMouseUpEvent; | 
						|
					moveable = false; | 
						|
					moveX = 0; | 
						|
					moveY = 0; | 
						|
					moveBottom = 0; | 
						|
					moveLeft = 0; | 
						|
				} | 
						|
			}; | 
						|
		}; | 
						|
		//获取音乐信息初始化 | 
						|
		var bgmListInfo = $('input[name=live2dBGM]'); | 
						|
		if (bgmListInfo.length == 0) { | 
						|
			$('#musicButton').hide(); | 
						|
		} else { | 
						|
			var bgmPlayNow = parseInt($('#live2d_bgm').attr('data-bgm')); | 
						|
			var bgmPlayTime = 0; | 
						|
			var live2dBGM_Num = sessionStorage.getItem("live2dBGM_Num"); | 
						|
			var live2dBGM_PlayTime = sessionStorage.getItem("live2dBGM_PlayTime"); | 
						|
			if (live2dBGM_Num) { | 
						|
				if (live2dBGM_Num <= $('input[name=live2dBGM]').length - 1) { | 
						|
					bgmPlayNow = parseInt(live2dBGM_Num); | 
						|
				} | 
						|
			} | 
						|
			if (live2dBGM_PlayTime) { | 
						|
				bgmPlayTime = parseInt(live2dBGM_PlayTime); | 
						|
			} | 
						|
			var live2dBGMSrc = bgmListInfo.eq(bgmPlayNow).val(); | 
						|
			$('#live2d_bgm').attr('data-bgm', bgmPlayNow); | 
						|
			$('#live2d_bgm').attr('src', live2dBGMSrc); | 
						|
			$('#live2d_bgm')[0].currentTime = bgmPlayTime; | 
						|
			$('#live2d_bgm')[0].volume = 0.5; | 
						|
			var live2dBGM_IsPlay = sessionStorage.getItem("live2dBGM_IsPlay"); | 
						|
			var live2dBGM_WindowClose = sessionStorage.getItem("live2dBGM_WindowClose"); | 
						|
			if (live2dBGM_IsPlay == '0' && live2dBGM_WindowClose == '0') { | 
						|
				$('#live2d_bgm')[0].play(); | 
						|
				$('#musicButton').addClass('play'); | 
						|
			} | 
						|
			sessionStorage.setItem("live2dBGM_WindowClose", '1'); | 
						|
			$('#musicButton').on('click', function () { | 
						|
				if ($('#musicButton').hasClass('play')) { | 
						|
					$('#live2d_bgm')[0].pause(); | 
						|
					$('#musicButton').removeClass('play'); | 
						|
					sessionStorage.setItem("live2dBGM_IsPlay", '1'); | 
						|
				} else { | 
						|
					$('#live2d_bgm')[0].play(); | 
						|
					$('#musicButton').addClass('play'); | 
						|
					sessionStorage.setItem("live2dBGM_IsPlay", '0'); | 
						|
				} | 
						|
			}); | 
						|
			window.onbeforeunload = function () { | 
						|
				sessionStorage.setItem("live2dBGM_WindowClose", '0'); | 
						|
				if ($('#musicButton').hasClass('play')) { | 
						|
					sessionStorage.setItem("live2dBGM_IsPlay", '0'); | 
						|
				} | 
						|
			} | 
						|
			document.getElementById('live2d_bgm').addEventListener("timeupdate", function () { | 
						|
				var live2dBgmPlayTimeNow = document.getElementById('live2d_bgm').currentTime; | 
						|
				sessionStorage.setItem("live2dBGM_PlayTime", live2dBgmPlayTimeNow); | 
						|
			}); | 
						|
			document.getElementById('live2d_bgm').addEventListener("ended", function () { | 
						|
				var listNow = parseInt($('#live2d_bgm').attr('data-bgm')); | 
						|
				listNow++; | 
						|
				if (listNow > $('input[name=live2dBGM]').length - 1) { | 
						|
					listNow = 0; | 
						|
				} | 
						|
				var listNewSrc = $('input[name=live2dBGM]').eq(listNow).val(); | 
						|
				sessionStorage.setItem("live2dBGM_Num", listNow); | 
						|
				$('#live2d_bgm').attr('src', listNewSrc); | 
						|
				$('#live2d_bgm')[0].play(); | 
						|
				$('#live2d_bgm').attr('data-bgm', listNow); | 
						|
			}); | 
						|
			document.getElementById('live2d_bgm').addEventListener("error", function () { | 
						|
				$('#live2d_bgm')[0].pause(); | 
						|
				$('#musicButton').removeClass('play'); | 
						|
				showMessage('音乐似乎加载不出来了呢!', 0); | 
						|
			}); | 
						|
		} | 
						|
	} | 
						|
	$(document).ready(function () { | 
						|
		var AIimgSrc = [ | 
						|
			message_Path + "model/histoire/histoire.1024/texture_00.png", | 
						|
			message_Path + "model/histoire/histoire.1024/texture_01.png", | 
						|
			message_Path + "model/histoire/histoire.1024/texture_02.png", | 
						|
			message_Path + "model/histoire/histoire.1024/texture_03.png" | 
						|
		] | 
						|
		var images = []; | 
						|
		var imgLength = AIimgSrc.length; | 
						|
		var loadingNum = 0; | 
						|
		for (var i = 0; i < imgLength; i++) { | 
						|
			images[i] = new Image(); | 
						|
			images[i].src = AIimgSrc[i]; | 
						|
			images[i].onload = function () { | 
						|
				loadingNum++; | 
						|
				if (loadingNum === imgLength) { | 
						|
					var live2dhidden = localStorage.getItem("live2dhidden"); | 
						|
					if (live2dhidden === "0") { | 
						|
						setTimeout(function () { | 
						|
							$('#open_live2d').fadeIn(200); | 
						|
						}, 1300); | 
						|
					} else { | 
						|
						setTimeout(function () { | 
						|
							$('#landlord').fadeIn(200); | 
						|
						}, 1300); | 
						|
					} | 
						|
					setTimeout(function () { | 
						|
						loadlive2d("live2d", message_Path + "model/histoire/model.json"); | 
						|
					}, 1000); | 
						|
					initLive2d(); | 
						|
					images = null; | 
						|
				} | 
						|
			} | 
						|
		} | 
						|
	}); | 
						|
}
 | 
						|
 |