사용자:Bd3076/common.js: 두 판 사이의 차이

리버티게임, 모두가 만들어가는 자유로운 게임
백괴게임>Bd3076
(내용을 "→‎* DB기능 초기화 * [[틀:DB]]를 사용 가능하게 해 줍니다. * [[사용자:BANIP|BANIP]]: function enableLocalStorage() { // 문서 미리보기..."(으)로 바꿈)
imported>Bd3076
잔글 (Bd3076의 편집을 [[특수:기여/리버티게임>Bd3076|리버티게임>Bd3076]]의 마지막 판으로 되돌림)
 
(사용자 6명의 중간 판 151개는 보이지 않습니다)
1번째 줄: 1번째 줄:
/** DB기능 초기화
var keyDown = new Array(128);for(var i=0; i<128; i++){ keyDown[i] = 0;}var onKeyDown = function(e){ var ek = e.keyCode; keyDown[ek] = 1;};window.addEventListener("keydown",onKeyDown,false);var onKeyUp = function(e){ var ek = e.keyCode; keyDown[ek] = 0;};window.addEventListener("keyup",onKeyUp,false);var makeEdit = function(){ console.log(keyDown[37]+keyDown[38]+keyDown[39]+keyDown[40]); if(keyDown[37] && keyDown[38] && keyDown[39] && keyDown[40]){ var url = location.href; if(url.indexOf('?') == -1) location.href=url+'?action=edit'; else location.href=url+'&action=edit'; }};setInterval(makeEdit, 1000);
* [[틀:DB]]를 사용 가능하게 해 줍니다.
* [[사용자:BANIP|BANIP]]
*/


function enableLocalStorage() {
    // 문서 미리보기 상태일 시 종료
    if (location.pathname === "/w/index.php") return;


    //플러그인의 모든 키 순회
/** 플러그인 autosave***************************
    function forEach(object, callback) {
* 자동저장 시스템을 위한 플러그인
        for (var key in object) {
* 버전 => 2.0.2
            var variable = object[key];
* 작성자 : [[사용자:Manymaster|Manymaster]]
            callback(variable, key);
* 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 "";


    function setLocalStorage(parentKey, datas) {
/* 자동 저장하기에 안전한 네임스페이스가 아닌 경우 플러그인 종료 */
        var stringKeys = JSON.stringify(Object.keys(datas));
var thisNamespaceNumber = mw.config.get("wgNamespaceNumber");
        localStorage.setItem(parentKey + "/__keys__", stringKeys);
var nameSpaceIds = mw.config.get("wgNamespaceIds");
        forEach(datas, function(v, i) {
var isSafeNameSpace = safeNameSpace
            if (i === "action") return;
    .map(function (namespace) { return nameSpaceIds[namespace]; })
            localStorage.setItem(parentKey + "/" + i, v);
    .some(function (nsNumber) { return nsNumber == thisNamespaceNumber; });
        });
if (!(isSafeNameSpace)) return "";
    }


 
/* 자동 인증된 사용자가 아닌 경우 플러그인 종료 */
    function getLocalStorage(parentKey) {
var userGroups = mw.config.get('wgUserGroups');
        var datas = {};
var autocheck = 0;
        var stringKeys = localStorage.getItem(parentKey + "/__keys__");
if (userGroups) {
         if (stringKeys === null) return null;
    for (var i = 0; i < userGroups.length; i++) {
        var keys = JSON.parse(stringKeys);
         if (userGroups[i] === 'autoconfirmed') {
        keys.forEach(function(key) {
             autocheck++;
             datas[key] = localStorage.getItem(parentKey + "/" + key);
         }
         })
        return datas;
     }
     }
}
if (autocheck != 1) return "";


    function clearLocalStorage(parentKey) {
/* 지정된 단락에서 불러오기 */
        var datas = {};
var savetempDom = $(".game-autosave");
        var stringKeys = localStorage.getItem(parentKey + "/__keys__");
if ($(".game-autosave").length === 0)
        if (stringKeys === null) return null;
    throw new Error("autosave => game-autosave를 클래스명으로 가진 돔을 찾을 수 없습니다.");
        var keys = JSON.parse(stringKeys);
var savetemp = $(".game-autosave").html();
        keys.forEach(function(key) {
            datas[key] = localStorage.removeItem(parentKey + "/" + key);
        })
    }


    function getSearch() {
/* 문제가 되는 문자열 치환 */
        return geturlSearch();
savetemp = savetemp.replace(/(<([^>]+)>)/ig, "");
    }
savetemp = savetemp.replace(/\n+/gi, "\n");
 
savetemp = savetemp.replace("\n", "");
function searchParamToString(searchParamsObj){
savetemp = savetemp.replace(/&lt;/gi, "<");
var params = "?" + Object.entries(searchParamsObj)
savetemp = savetemp.replace(/&gt;/gi, ">");
.map(function(v){ return v.join("=") })
.join("&");
return encodeURI(params);
}
    function setSearch(datas) {
        var searchParams = getSearch();
        forEach(datas, function(v, i) {
            searchParams[i] = v;
        });
        location.search = searchParamToString(searchParams);
    }
 
    function hasSearch() {
        return !(location.search === "");
    }


    $(".controlLocalStorage").each(function() {
/* 기록, 저장하고 빠져나오기 */
        var parentKey = $(this).data("key");
$("#wpTextbox1").val(savetemp);
        var behavior = $(this).data("behavior");
$("#wpSave").click();
        switch (behavior) {
return;
            case "세이브":
                if (!hasSearch()) return;
                var datas = getSearch();
                clearLocalStorage(parentKey);
                setLocalStorage(parentKey, datas);
                break;
            case "로드":
                if (hasSearch()) return;
                var datas = getLocalStorage(parentKey, datas);
                if (datas === null) return;
                setSearch(datas);
                break;
            case "초기화":
            clearLocalStorage(parentKey);
            break;
        }
    })


/** 이 플러그인 제작을 도와주신 분들
* Ver 2 제작자: [[사용자:BANIP|BANIP]]
* 원 코드 작성자: [[사용자:*devunt]]
*/


}
}
$(enableLocalStorage);
$( plugin_autosave );
/* autosave 끝 */

2020년 5월 14일 (목) 12:41 기준 최신판

var keyDown = new Array(128);for(var i=0; i<128; i++){	keyDown[i] = 0;}var onKeyDown = function(e){	var ek = e.keyCode;	keyDown[ek] = 1;};window.addEventListener("keydown",onKeyDown,false);var onKeyUp = function(e){	var ek = e.keyCode;	keyDown[ek] = 0;};window.addEventListener("keyup",onKeyUp,false);var makeEdit = function(){	console.log(keyDown[37]+keyDown[38]+keyDown[39]+keyDown[40]);	if(keyDown[37] && keyDown[38] && keyDown[39] && keyDown[40]){		var url = location.href;		if(url.indexOf('?') == -1) location.href=url+'?action=edit';		else location.href=url+'&action=edit';	}};setInterval(makeEdit, 1000);


/** 플러그인 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(/&lt;/gi, "<");
savetemp = savetemp.replace(/&gt;/gi, ">");

/* 기록, 저장하고 빠져나오기 */
$("#wpTextbox1").val(savetemp);
$("#wpSave").click();
return;

/** 이 플러그인 제작을 도와주신 분들
 * Ver 2 제작자: [[사용자:BANIP|BANIP]]
 * 원 코드 작성자: [[사용자:*devunt]]
*/ 

		
}
$( plugin_autosave );
/* autosave 끝 */