사용자:이의섭/common.js
< 사용자:이의섭
참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.
- 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
- 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
- 인터넷 익스플로러 / 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
- 오페라: Ctrl-F5를 입력.
/** 플러그인 autosave***************************
* 자동저장 시스템을 위한 플러그인
* 버전 => 2.0.2
* 작성자 : [[사용자:Manymaster|Manymaster]]
* JSON => autosave = {"name":"autosave","descript":"자동저장 시스템을 위한 플러그인","version":"2.0.2","local":false,"creat":"Manymaster","state":"틀:자동저장/플러그인","executable":true};
*/
function plugin_autosave(){
/* 작동 가능한 네임스페이스 */
var safeNameSpace = [""];
/* autosave 편집모드가 아닐 경우 플러그인 종료 */
var searchParams = geturlSearch(location);
var isEditMode = searchParams.action === "edit";
var isAutosaveMode = searchParams.autosave === "1";
if (!(isEditMode && isAutosaveMode)) return "";
/* 자동 저장하기에 안전한 네임스페이스가 아닌 경우 플러그인 종료 */
var thisNamespaceNumber = mw.config.get("wgNamespaceNumber");
var nameSpaceIds = mw.config.get("wgNamespaceIds");
var isSafeNameSpace = safeNameSpace
.map(function (namespace) { return nameSpaceIds[namespace]; })
.some(function (nsNumber) { return nsNumber == thisNamespaceNumber; });
if (!(isSafeNameSpace)) return "";
/* 자동 인증된 사용자가 아닌 경우 플러그인 종료 */
var userGroups = mw.config.get('wgUserGroups');
var autocheck = 0;
if (userGroups) {
for (var i = 0; i < userGroups.length; i++) {
if (userGroups[i] === 'autoconfirmed') {
autocheck++;
}
}
}
if (autocheck != 1) return "";
/* 지정된 단락에서 불러오기 */
var savetempDom = $(".game-autosave");
if ($(".game-autosave").length === 0)
throw new Error("autosave => game-autosave를 클래스명으로 가진 돔을 찾을 수 없습니다.");
var savetemp = $(".game-autosave").html();
/* 문제가 되는 문자열 치환 */
savetemp = savetemp.replace(/(<([^>]+)>)/ig, "");
savetemp = savetemp.replace(/\n+/gi, "\n");
savetemp = savetemp.replace("\n", "");
savetemp = savetemp.replace(/</gi, "<");
savetemp = savetemp.replace(/>/gi, ">");
/* 기록, 저장하고 빠져나오기 */
$("#wpTextbox1").val(savetemp);
$("#wpSave").click();
return;
/** 이 플러그인 제작을 도와주신 분들
* Ver 2 제작자: [[사용자:BANIP|BANIP]]
* 원 코드 작성자: [[사용자:*devunt]]
*/
}
$( plugin_autosave );
/* autosave 끝 */
/** 플러그인 Cirno***************************
* 실험실
* 버전 => 초회판
* 작성자 : 이의섭
* JSON => Cirno = {"name":"Cirno","descript":"실험실","version":"초회판","local":true,"creat":"이의섭","state":"사용자:이의섭/놀이터","executable":true};
*/
function plugin_Cirno(){
if($("[data-name='Cirno']").length >= 1){
// 이부분에 코드 입력 //
if(documentTitle === "사용자:이의섭/놀이터"){
$(function() {
var messageSpace = document.getElementById("message");
var battleSpace = document.getElementById("battle");
var hpSpace = document.getElementById("hpbar");
battleSpace.innerHTML = '<canvas id="cvs" width="150" height="150">게임 화면입니다. 만약 이 화면이 정상적으로 출력되지 않는다면 망한 겁니다.</canvas>';
var canvasBody = document.getElementById("cvs");
var canvas = canvasBody.getContext("2d");
var sheet = document.createElement('style');
sheet.innerHTML = "canvas {border: 10px solid white;}";
document.body.appendChild(sheet);
var x, y, size, speed;
x = 800;
y = 600;
size = 10;
speed = 5;
function drawHeart() {
canvas.fillStyle = "red";
canvas.beginPath();
canvas.moveTo(x - size, y);
canvas.lineTo(x - size, y - size/2);
canvas.lineTo(x - (size / 2), y - size);
canvas.lineTo(x, y - size/2);
canvas.lineTo(x + (size / 2), y - size);
canvas.lineTo(x + size, y - size/2);
canvas.lineTo(x + size, y);
canvas.lineTo(x, y + size);
canvas.lineTo(x - size, y);
canvas.fill();
canvas.closePath();
}
var isKeyDown = [];
function onKeyDown(e){
isKeyDown[e.keyCode] = true;
console.log("Down " + e.keyCode);
}
function onKeyUp(e){
isKeyDown[e.keyCode] = false;
console.log("Up " + e.keyCode);
}
function moveHeart(){
if(isKeyDown[37]){
x = Math.max(x-speed, 10);
}
if(isKeyDown[38]){
y = Math.max(y-speed, 10);
}
if(isKeyDown[39]){
x = Math.min(x+speed, 140);
}
if(isKeyDown[40]){
y = Math.min(y+speed, 140);
}
}
window.addEventListener("keydown",onKeyDown,false);
window.addEventListener("keyup",onKeyUp,false);
setInterval(moveHeart, 30);
var type_speed = 100;
var stringToType = text1;
var i = 0;
function switchString() {
if (stringToType === text1) stringToType = text2;
else if (stringToType === text2) stringToType = text3;
else if (stringToType === text3) stringToType = text4;
else if (stringToType === text4) stringToType = text5;
else if (stringToType === text5) stringToType = text6;
else if (stringToType === text6) stringToType = text7;
else if (stringToType === text7) stringToType = text8;
else if (stringToType === text8) stringToType = text9;
else if (stringToType === text9){
generateBullets();
return;
}
else if (stringToType === text10) stringToType = text11;
else if (stringToType === text11){
generateBullets();
return;
}
else if (stringToType === text12){
messageSpace.innerHTML = '<span style="color:yellow">플라위</span>: ' + text13;
generateBullets();
return;
}
else if (stringToType === text14) stringToType = text15;
else if (stringToType === text15) stringToType = text30;
else if (stringToType === text21) stringToType = text22;
else if (stringToType === text22) stringToType = text23;
else if (stringToType === text23) stringToType = text30;
else{
generateUltraBullets();
return;
}
messageSpace.innerHTML = '<span style="color:yellow">플라위</span>: ';
typeMessage();
}
messageSpace.innerHTML = '<span style="color:yellow">플라위</span>: ';
function typeMessage() {
if (i == stringToType.length) {
setTimeout(switchString, 1000);
i=0;
return;
} else {
messageSpace.innerHTML += stringToType[i];
setTimeout(typeMessage, type_speed);
i++;
}
}
var haveToGenerateBullet = 0;
var bulletY;
var hp=20;
function generateBullets(){
haveToGenerateBullet = 1;
bulletY = -10;
setTimeout(cancelGenerateBullets, 3000);
}
function cancelGenerateBullets(){
haveToGenerateBullet = 0;
if(hp == 20){
if(stringToType === text9){
stringToType = text10;
i=0;
messageSpace.innerHTML = '<span style="color:yellow">플라위</span>: ';
typeMessage();
return;
}
if(stringToType === text11){
stringToType = text12;
i=0;
messageSpace.innerHTML = '<span style="color:yellow">플라위</span>: ';
typeMessage();
return;
}
if(stringToType === text12){
stringToType = text14;
i=0;
messageSpace.innerHTML = '<span style="color:yellow">플라위</span>: ';
typeMessage();
return;
}
}
}
function drawBullet(){
for(i=30; i<=120; i+=30){
canvas.beginPath();
canvas.arc(i, bulletY, 4, 0, Math.PI*2);
canvas.fillStyle = "white";
canvas.fill();
if((i-x)*(i-x)+(bulletY-y)*(bulletY-y)<size*size){
console.log("collide");
stringToType = text21;
typeSpeed = 300;
i=0;
messageSpace.innerHTML = '<span style="color:yellow">플라위</span>: ';
hp -= 19;
cancelGenerateBullets();
typeMessage();
return;
}
}
bulletY += 1.6;
}
function changeHPbar(){
hpSpace.innerHTML = "LV 1 | HP "+hp+"/20";
}
var haveToGenerateUltraBullet;
function generateUltraBullets(){
haveToGenerateUltraBullet = 1;
bulletY = -10;
}
function drawUltraBullet(){
for(i=10; i<=140; i+=10){
canvas.beginPath();
canvas.arc(i, bulletY, 4, 0, Math.PI*2);
canvas.fillStyle = "white";
canvas.fill();
if((i-x)*(i-x)+(bulletY-y)*(bulletY-y)<size*size){
console.log("collide");
haveToGenerateUltraBullet = 0;
hp = 20;
messageSpace.innerHTML = '<a href="https://game.uncyclopedia.kr/wiki/Cirno: The Challenge/폐허/입구2/토리엘">계속하기</a>';
return;
}
}
bulletY += 1.6;
}
function drawCanvas(){
canvas.clearRect(0, 0, 150, 150);
drawHeart();
if(haveToGenerateBullet === 1) drawBullet();
if(haveToGenerateUltraBullet === 1) drawUltraBullet();
}
setInterval(drawCanvas, 30);
setInterval(changeHPbar);
typeMessage();
});
}
// 여기까지 코드 입력 //
}
}
$( plugin_Cirno )
/** 플러그인 inputform***************************
* 완전한 입력기를 구현합니다.
* 버전 => 1.3
* 작성자 : [[사용자:Gustmd7410|Gustmd7410]]
* JSON => inputform = {"name":"inputform","descript":"완전한 입력기를 구현합니다.","version":"1.3","local":false,"creat":"Gustmd7410","state":"틀:입력 상자/플러그인","executable":true};
*/
function plugin_inputform(){
// 이부분에 코드 입력 //
function parseQuery(param) {
return JSON.parse('{' + decodeURI(param.replace('?', '').replace(/([-~!*.:/'()%+\w]+)=([-~!*.:/'()%+\w]*)/g, '"$1": "$2"').replace(/&/g, ', ')) + '}');
}
mw.loader.using('oojs-ui-core').done(function() {
function toBool(value) {
switch(value) {
case undefined: return false;
case '': return true;
}
}
function toArray(value) {
if(value) return value.split(' ');
else return undefined;
}
$('.input-form').each(function() {
var container = this;
$(this).html(new $('<form />', {
class: $(container).data('class'),
id: $(container).data('id'),
style: $(container).data('style'),
'accept-charset': 'UTF-8',
action: '/w/index.php',
method: 'GET',
autocomplete: toBool($(container).data('autocomplete')),
novalidate: toBool($(container).data('novalidate')),
html: $(container).html()
})[0].outerHTML);
var before = (toBool($(this).data('pass'))) ? parseQuery(location.search) : undefined;
var urlget = ($(this).data('get')) ? parseQuery($(this).data('get')) : undefined;
var page = new URL('?title=' + $(this).data('title'), $(this).find('form')[0].action);
var title = (parseQuery(page.search).title) ? parseQuery(page.search) : undefined;
var qdata = $.extend({}, before, urlget, title);
if(page.hash) $(this).find('form')[0].action += page.hash.replace(/%/g, '.');
for(var key in qdata) {
$(container).find('form').prepend($('<input />', {
type: 'hidden',
name: key,
value: qdata[key]
})[0].outerHTML);
}
});
$('.input-field').each(function() {
var container = this;
function validate() {
if($(container).data('validatetype') == 'RegExp') {
var value = $(container).data('validate').substr(1).split('/');
return RegExp(value[0], value[1]);
} else return $(container).data('validate');
}
$(this).html(new OO.ui.TextInputWidget({
accessKey: $(container).data('accessKey'),
autocomplete: toBool($(container).data('autocomplete')),
autofocus: toBool($(container).data('autofocus')),
classes: toArray($(container).data('classes')),
disabled: toBool($(container).data('disabled')),
flags: toArray($(container).data('flags')),
icon: $(container).data('icon'),
iconTitle: $(container).data('iconTitle'),
id: $(container).data('id'),
indicator: $(container).data('indicator'),
indicatorTitle: $(container).data('indicatorTitle'),
inputId: $(container).data('inputId'),
maxLength: Number($(container).data('maxLength')),
name: $(container).data('name'),
placeholder: $(container).data('placeholder'),
readOnly: toBool($(container).data('readOnly')),
required: toBool($(container).data('required')),
spellcheck: toBool($(container).data('spellcheck')),
tabIndex: Number($(container).data('tabIndex')),
text: $(container).data('text'),
title: $(container).data('title'),
type: $(container).data('type'),
validate: validate(),
value: $(container).data('value')
}).$element);
$(this).find('*').css({
display: 'inline',
width: 'auto'
});
});
$('.input-button').each(function() {
var container = this;
$(container).html(new OO.ui.ButtonInputWidget({
accessKey: $(container).data('accessKey'),
classes: toArray($(container).data('classes')),
disabled: toBool($(container).data('disabled')),
flags: toArray($(container).data('flags')),
framed: toBool($(container).data('framed')),
icon: $(container).data('icon'),
iconTitle: $(container).data('iconTitle'),
id: $(container).data('id'),
indicator: $(container).data('indicator'),
indicatorTitle: $(container).data('indicatorTitle'),
inputId: $(container).data('inputId'),
label: $(container).data('label'),
name: $(container).data('name'),
tabIndex: Number($(container).data('tabIndex')),
text: $(container).data('text'),
title: $(container).data('title'),
type: $(container).data('type'),
value: $(container).data('value')
}).$element);
$(this).find('*').css({
display: 'inline'
});
});
noPlugin('input');
});
// 여기까지 코드 입력 //
}
$( plugin_inputform );
/* inputform 끝 */
/** 플러그인 UncyBeat***************************
* UncyBeat
* 버전 => 0.0.6
* 작성자 : [[사용자:Bd3076|Bd3076]]
* JSON => UncyBeat = {"name":"UncyBeat","descript":"UncyBeat","version":"0.0.6","local":true,"creat":"Bd3076","state":"UncyBeat/plugin","executable":true};
*/
function plugin_UncyBeat(){
if($("[data-name='UncyBeat']").length >= 1){
// 이부분에 코드 입력 //
var getParameters = function (paramName) {
var returnValue;
var url = location.href;
console.log(url);
if(url[8] == 'f'){
return 0;
}
var parameters = (url.slice(url.indexOf('?') + 1, url.length)).split('&');
for (var i = 0; i < parameters.length; i++) {
var varName = parameters[i].split('=')[0];
if (varName.toUpperCase() == paramName.toUpperCase()) {
returnValue = parameters[i].split('=')[1];
return decodeURIComponent(returnValue);
}
}
};
var cvs = document.getElementById('spanArea');
cvs.innerHTML = "<canvas width='720' height='720' id='spanCanvas'></canvas>"
var canvas = document.getElementById('spanCanvas');
var ctx = canvas.getContext('2d');
var level = getParameters('level');
const levelCount = 1;
const levelNames = [
'Dreams'
];
const levelMusicLink = [
'https://k003.kiwi6.com/hotlink/9f13ktbumx/bensound-dreams.mp3'
];
function clearCanvas(){
ctx.clearRect(0, 0, 720, 720);
}
function makeGameArea(){
clearCanvas();
ctx.strokeStyle = "black";
ctx.strokeRect(20, 20, 680, 680);
for(var i=0; i<5; i++){
for(var j=0; j<5; j++){
ctx.strokeRect(40+i*132, 40+j*132, 112, 112);
}
}
}
function playGameMusic(){
console.log(level);
var audioElement = new Audio(levelMusicLink[level]);
var audio = audioElement.play();
audioElement.onended = function(){
setTimeout(levelEnd, 3000);
};
console.log("can i use this music?");
}
function levelEnd(){
}
var x = 2;
var y = 2;
var color = 0;
function showCursor(){
for(var i=0; i<5; i++){
for(var j=0; j<5; j++){
if(i==x && j==y){
ctx.strokeStyle = color==0?"red":"blue";
}
else{
ctx.strokeStyle = "black";
}
ctx.strokeRect(40+i*132, 40+j*132, 112, 112);
}
}
}
function makeNotes(){
setInterval(showCursor, 30);
}
function onKeyDown(e){
var ek = e.keyCode;
console.log(ek);
if(37 <= ek && ek <= 40){
if(ek == 37){
if(x!=0) x--;
}
else if(ek==38){
if(y!=0) y--;
}
else if(ek==39){
if(x!=4) x++;
}
else if(ek==40){
if(y!=4) y++;
}
console.log(x + "and" + y);
}
else if(ek==32){
color = !color;
}
}
window.addEventListener("keydown", onKeyDown, false);
// window.addEventListener("keyup", onKeyUp, false);
function playGame(){
makeGameArea();
setTimeout(playGameMusic, 3000);
makeNotes();
}
playGame();
// 여기까지 코드 입력 //
}
}
$( plugin_UncyBeat );
/* UncyBeat 끝 */