CINXE.COM

Lexaloffle BBS

<html> <head> <title>Lexaloffle BBS</title> <meta charset="utf-8"/><meta property="og:title" content="Lexaloffle BBS"/> <meta name="viewport" content="width=device-width"> <script type="text/javascript"> function microAjax(B,A){this.bindFunction=function(E,D){return function(){return E.apply(D,[D])}};this.stateChange=function(D){if(this.request.readyState==4){this.callbackFunction(this.request.responseText)}};this.getRequest=function(){if(window.ActiveXObject){return new ActiveXObject("Microsoft.XMLHTTP")}else{if(window.XMLHttpRequest){return new XMLHttpRequest()}}return false};this.postBody=(arguments[2]||"");this.callbackFunction=A;this.url=B;this.request=this.getRequest();if(this.request){var C=this.request;C.onreadystatechange=this.bindFunction(this.stateChange,this);if(this.postBody!==""){C.open("POST",B,true);C.setRequestHeader("X-Requested-With","XMLHttpRequest");C.setRequestHeader("Content-type","application/x-www-form-urlencoded");C.setRequestHeader("Connection","close")}else{C.open("GET",B,true)}C.send(this.postBody)}}; </script> <STYLE TYPE="text/css"> <!-- @font-face { font-family: 'proggyvec'; src: url('/proggyvec.woff') format('woff'); } .banner_div{display:block} .topmenu_div{display:table} .lilmenu_div{display:none} .desktop_div{display:inline} .mobile_div{display:none} .avatar{ border-radius:10%; box-shadow: 4px 4px 6px rgba(0.2, 0.0, 0.4, 0.1); } .avatar_tiny{ border-radius:20%; box-shadow: 4px 4px 6px rgba(0.2, 0.0, 0.4, 0.1); } .scrollable_with_touch{ max-width:95vw; overflow-x:auto;overflow-y:hidden; -webkit-overflow-scrolling:touch; } .info_box { display:table; float:left; margin-left:8px; margin-right:16px; margin-top:0px; margin-bottom:16px; text-align:left; } .info_box_right_old {display:table; margin-left:16px; margin-right:8px; margin-top:-10px; margin-bottom:16px; float:right; text-align:left; } .info_box_right { margin-top:-10px; } .info_box h2 {margin-top:-16px;} h2 {margin-top:0px;} .info_group { display:table; max-width:800px; margin-bottom:20px; text-align:left } .info_group img{ min-width:192px; } .info_group h2{ text-decoration: none; color:#fab; font-weight: normal; } .lexchex{ padding:8px; color:#444; font-size:12pt; } .lexchex input{ margin-right:6px; height: 24px; width: 24px; background-color: #eee; position:relative; top:4px; } .pip_form_input{ background:#222; color:#ccc; } .form_button{ padding:6px; padding-left:10px; padding-right:10px; display:table; margin-top:12px; border:2px solid; border-color:#999; border-radius:6px; background:#222; color:#ccc; } .form_button:hover{ background-color:#fab; color:#222; cursor:pointer; } .form_button_span{ padding:2px; padding-left:4px; padding-right:4px; display:inline; border:1px solid; border-color:#999; } .form_button_span:hover{ background-color:#fab; color:#222; cursor:pointer; } .edit_tool_button{ padding:4px; display:table; padding-left:8px; padding-right:8px; border-radius:1; margin-right:4px; margin-bottom:2px; border:1px solid; border-color:#999; margin-bottom:8px; } .edit_tool_button:hover{ background-color:#fab; color:#222; cursor:pointer; } .form_tab{ padding:12px; padding-right:20px; padding-top:8px; padding-bottom:8px; display: table; float:left; font-size:14pt; border-radius:0px; margin-right:2px; color:#ccc; background-color:#444; } .form_tab:hover{ background-color:#f8a; color:#fff; cursor:pointer; } zzz_canvas{ image-rendering: optimizeSpeed; image-rendering: -moz-crisp-edges; image-rendering: -webkit-optimize-contrast; image-rendering: optimize-contrast; image-rendering: pixelated; -ms-interpolation-mode: nearest-neighbor; border: 0px; width:512px; height:512px; } .favlike{ min-width:160px; } .pixel_perfect{ image-rendering: optimizeSpeed; image-rendering: -moz-crisp-edges; image-rendering: -webkit-optimize-contrast; image-rendering: optimize-contrast; image-rendering: pixelated; -ms-interpolation-mode: nearest-neighbor; border: 0px; } .subnav{float:right; max-width:400px; margin-top:10px} .snb{ padding:6px; margin:2px; display:flex; } @media screen and (max-width: 800px) { .subnav{float:left; width:100%;} .snb{padding:5px;} } @media screen and (max-width: 920px) { .banner_div{display:none;} .topmenu_div{display:none;} .lilmenu_div{display:table;} .desktop_div{display:none;} .mobile_div{display:inline;} .info_box{float:left;width:100%; margin:0px; margin-bottom:10px} .info_box_right{float:left; width:100%; margin:0px; margin-bottom:10px} .favlike{ min-width:10px; } } .block { text-align: center; margin: 20px; } .centered { display: inline-block; vertical-align: middle; width: 300px; } img{ max-width: 100%; height:auto; } body{ font-size:11pt; font-family : proggyvec; line-height: 1.4; color:#ccc; background-color:#303030; margin:0px; padding:0px; } code { padding:2px; margin:2px; padding-left:4px; padding-right:4px; background-color:#ddd; color: #222; } TD{font-size:11pt;} p{ font-size:11pt; } pre{ font-size:11pt; } code{ font-size:11pt; } a:hover { cursor:pointer; } b{color: #ffffff} .tag { float:left; display:table; text-align:left; font-size:8pt; margin-right:4px; margin-bottom:4px; padding:3px; padding-left:6px; padding-right:6px; background-color:#aaa; color:#444; border-radius:2px; } .tag:hover { cursor:pointer; color:#fff; background-color:#f8a; } .tagblue { font-size:8pt; padding:4px; padding-left:6px; padding-right:6px; background-color:#8ad; color:#222; margin-top:6px; display:inline-block; border-radius:2px; } .tagblue:hover { cursor:pointer; color:#fff; background-color:#f8a; } .bright_hover{ cursor:pointer; opacity: 0.3; } .bright_hover:hover{ opacity: 1.0; } .menu_icon_lil { display:inline-block; padding-top:4px; padding-left:2px; padding-right:2px; } .menu_icon { display:inline-block; padding-top:4px; padding-left:2px; padding-right:2px; } .menu_icon a{ display:inline-block; opacity:0.5; } .menu_icon a:hover{ opacity:1.0; background: #ff80a0; } .menu_icon hover{ opacity:1.0; background: #ff80a0; } .thread_preview{ width:100%; min-height:64px; margin-top:2px; background-color:#444; } .stitched { padding: 10px; padding-left: 20px; padding-right: 20px; margin: 10px; margin-right: 50px; background: #f8f8f8; color: #404040; font-size: 21px; font-weight: bold; line-height: 0.5em; border: 2px dashed #d0e0ff; border-radius: 5px; box-shadow: 0 0 0 4px #f8f8f8, 2px 1px 6px 4px rgba(5, 5, 0, 0.2); font-weight: normal; } .social_button{ opacity:0.5; } .social_button:hover{ opacity:1.0; } .support_button{ padding:8px; background-color:#fab; color:#333; font-size:10pt; display:table; opacity:1.0; } .support_button:hover{ background-color:#fab; opacity:1.0; } .pinkhover{ cursor:pointer; } .pinkhover:hover{ background:#fab; color:#222; } .pink-hover_t a{ opacity: 0.5; } .pink-hover_t2 a{ } .pink-hover a:hover { display: block; background: #ff80a0; opacity: 1.0; } .pink-hover_t a:hover { display: block; background: #ff80a0; opacity: 1.0; } .post_title{ font-size: 9pt; } .post_title2{ font-size: 20pt; color : #ffffff; margin: 0px; margin-bottom: 8px; margin-top:0px; } @media screen and (max-width: 800px) { .post_title2{font-size:16pt}; } .breadcrumbs{ margin-left:8px; font-size:12px; color:#888; border-radius:0px; } .breadcrumbs a:link { color: #ccc; padding: 4px; display:inline-block; } .breadcrumbs a:visited { color: #ccc; background-color: #666; } .breadcrumbs a:hover { color: #fff; background-color: #888; } .breadcrumbs2{ margin-left:8px; font-size:12px; color:#888; border-radius:0px; } .breadcrumbs2 a:link { color: #999; padding: 4px; padding-left: 8px; padding-right: 8px; display:inline-block; } .breadcrumbs2 a:visited { color: #999; } .breadcrumbs2 a:hover { color: #fab; } .post_title3{ font-size: 12pt; font-weight : bold; color : #ff3070; } .blog_title2{ font-size: 20pt; color : #ff3070; } .blog_title{ font-size: 16pt; color : #202020; } .blog_num_comments{ font-size: 14pt; color : #303030; font-weight : bold; } .user_title{ font-size: 12pt; color : #ffe0d0; } h1{color:#ffffff;font-size:22pt;padding-top:8px} h2{color:#ffffff;font-size:18pt;padding-top:16px} h3{color:#f7a; font-size:14pt;padding-top:8px} A:link { text-decoration: none; color: #fff; } A:visited { text-decoration: none; color: #fff; } p A:link { zzz_text-decoration: underline; color:#fbc; } p A:hover{ color:#f0f; } p A:visited { zzz_text-decoration: underline; color:#fbc; } p A:visited:hover { color:#fff; } .link_with_image_unused{ background-image:url("/gfx/ext_link.png"); background-repeat: no-repeat; background-position: right; padding-right:20px;color:#fff; } A:hover { text-decoration: none; color: #fff; } A:active { text-decoration: none; color: #ffffff } .navstring a { color: #808080; font-weight : bold; } .navstring a:hover { color: #faa; font-weight : bold; } .navstring{ color: #c0c0c0; font-weight : bold; } .linkydiv{ display: block; text-align: center; vertical-align: middle; margin: 0px; background-color : #ff80a0; } .linkydiv:hover { background-color : #ff80a0; color: #ffffff; } .cartfile{ float:left; width:160px; height:200px; margin: 4px; padding: 4px; text-align: center; } .cartlabel{ background:#333; width:124; padding:2px; margin-top:8px; padding-top:4px; padding-bottom:4px; font-size:10px; } .cartlabelbig{ background:#333; width:252; padding-top:14px; padding-bottom:14px; margin-top:16px; font-size:16px; } .linkybutton { float: left; font-size: 14px; color: #808080; display: table-cell; text-align: center; vertical-align: middle; padding-top: 10px; padding-bottom: 10px; padding-left: 12px; padding-right: 12px; margin: 0px; height: 16px; } @media screen and (max-width: 800px) { .linkybutton{ float:none; display:flex; padding:12px; align-text: left; margin-left:50px; font-size:11pt; } } .linkbutton.img img{ display:inline-block; vertical-align:middle; } .linkybutton:hover { background-color : #ff80a0; color: #ffffff; } .linkybutton_lil0 { float:left; background-color : #555; padding: 6px; color: #aaa; font-size: 12px; height:20px; vertical-align:center; display:inline-table; margin:2px; } .linkybutton_lil { float:left; background-color : #555; padding: 6px; color: #aaa; font-size: 16px; height:20px; vertical-align:center; display:inline-table; margin:2px; } .linkybutton_lil:hover { background-color : #ff80a0; color: #ffffff; } .pinkbutton{ background:#505050; padding:6px; } .pinkbutton:hover { background-color : #808080; } .pbutton{ padding: 0px; margin: 0px; background-color : #505050; color : #a0a0a0; } .pbutton:hover{ background-color : #707070; } .logininput { font-size: 12px; color: #000000; line-height: 14px; border: 0; margin: 2px; padding: 2px; background-color : #ccc; height: 30px; } .logininput:hover { background-color : #ff80a0; } .logininput2 { font-size: 12px; color: #fff; border-width: 1px; border-style: solid; border-color:#fff; border-radius:3px; margin: 4px; padding: 8px; padding-left:16px; padding-right:16px; background-color : #333; height: 32px; cursor:pointer; } .logininput2:hover { background-color : #ff80a0; } input { background-color:#ffffe0; color:#202020; border-width: 1px; border-style: solid; border-color: #999999; font-size: 12pt; color: #404040; } .lexinput_search { background-color:#999; color:#202020; font-size: 10pt; color: #111; height:20px; margin-right: 8px; } .lexinput { background-color:#ffffe0; color:#202020; border-width: 1px; border-style: solid; border-color: #999999; font-size: 12pt; color: #404040; height:32px; margin-left:8px; } .result_msg { color:#888; } #login_button { width: 48px; height: 16px; margin: 0; padding: 0; border: 0; background: transparent url(img/login_button.png) no-repeat center top; text-indent: -1000em; } #signup_button { width: 48px; height: 16px; margin: 0; padding: 0; border: 0; background: transparent url(img/signup_button.png) no-repeat center top; text-indent: -1000em; } --> </STYLE> <script> var current_time="2025-03-14 17:25:36"; var s_uid=0; function $(name) { return document.getElementById(name); } // globals var p_page = 1; var p_sub = 0; var p_cat = 0; var p_pid = 0; var p_mode = 0; var search_url_base = ""; var tag_url_base = ""; var pip_form_data = {}; var touch_detected = false; var undefined = "undefined"; // :/ var current_playing_cart_id = -1; function microAjax(B,A){this.bindFunction=function(E,D){return function(){return E.apply(D,[D])}};this.stateChange=function(D){if(this.request.readyState==4){this.callbackFunction(this.request.responseText)}};this.getRequest=function(){if(window.ActiveXObject){return new ActiveXObject("Microsoft.XMLHTTP")}else{if(window.XMLHttpRequest){return new XMLHttpRequest()}}return false};this.postBody=(arguments[2]||"");this.callbackFunction=A;this.url=B;this.request=this.getRequest();if(this.request){var C=this.request;C.onreadystatechange=this.bindFunction(this.stateChange,this);if(this.postBody!==""){C.open("POST",B,true);C.setRequestHeader("X-Requested-With","XMLHttpRequest");C.setRequestHeader("Content-type","application/x-www-form-urlencoded");C.setRequestHeader("Connection","close")}else{C.open("GET",B,true)}C.send(this.postBody)}}; // from: https://plainjs.com/javascript/ajax/send-ajax-get-and-post-requests-47/ function post_ajax(url, data, success) { var params = typeof data == 'string' ? data : Object.keys(data).map( function(k){ return encodeURIComponent(k) + '=' + encodeURIComponent(data[k]) } ).join('&'); var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); xhr.open('POST', url); xhr.onreadystatechange = function() { if (xhr.readyState>3 && xhr.status==200) { success(xhr.responseText); } }; xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); //xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.setRequestHeader('Content-Type', 'text/plain; charset=UTF-8'); xhr.send(params); return xhr; } // in ms. 1000, 20 means 50fps for 1 second. function poll_function(duration, interval, func) { var start_t = (new Date()).getTime(); (function p() { tt = (new Date).getTime() - start_t; if (tt <= duration) { func(tt/duration); setTimeout(p, interval); } })(); } function insertTextAtCursor(el, text, overwrite) { if (typeof el == "string") { el_str = el; el = document.getElementById(el); if (!el){ console.log("@ could not find element to insert text: "+el_str); } } var val = el.value, endIndex, range, doc = el.ownerDocument; if (overwrite) { el.focus(); el.value = text; return; } if (typeof el.selectionStart == "number" && typeof el.selectionEnd == "number") { endIndex = el.selectionEnd; el.value = val.slice(0, endIndex) + text + val.slice(endIndex); el.selectionStart = el.selectionEnd = endIndex + text.length; } else if (doc.selection != "undefined" && doc.selection.createRange) { el.focus(); range = doc.selection.createRange(); range.collapse(false); range.text = text; range.select(); } } function set_enter_to_save(el, save_el) { if (!el) return; // experimental: only auto-save when value has changed (can tab through unchanged fields) var start_val = el.value; if (!el.installed_enter_to_save) // only install once { console.log("@installing set_enter_to_save: "+el+", "+save_el); el.installed_enter_to_save = true; el.addEventListener("keyup", function(event){ //console.log(event.keyCode); if (event.keyCode == 13) //if (el.value != start_val) // commented -- don't need / confusing. save_el.click(); //if (event.keyCode == 9) // tab // commented -- use blur if want to do this // save_el.click(); } ); // also auto-save on tab / click off // careful not to introduce double sends (hard to get right -- maybe not worth it) el.addEventListener("blur", function(event){ var x = event.clientX, y = event.clientY; if (typeof x != 'number') return; if (typeof y != 'number') return; var el0 = document.elementFromPoint(x, y); if (!el0 || el0.name != "cancel_button") //if (el.value != start_val) save_el.click(); save_el.click(); } ); } } function toggle_set_button(el_name, post_id, which, sid) { var el = document.getElementsByClassName(el_name); var eli = document.getElementsByClassName('i_'+el_name); if (s_uid == 0) { window.alert("Please log in first."); return; } // window.alert(el_name); for(var i = 0; i < eli.length; i++) { eli[i].innerHTML = '<center><img src=/gfx/load16.gif width=20 height=20></center>'; } microAjax("/bbs/set.php?pid="+post_id+"&sid="+sid+"&which="+which, function (retdata) { var el = document.getElementsByClassName(el_name); for(var i = 0; i < el.length; i++) { el[i].innerHTML = json_parse(retdata)['printable']; } if (which == "tick") { // location.reload(true); // bleh } } ); } function hide_save_draft_button() { var el = document.getElementById("save_draft_button"); if (el) el.style.display = "none"; var el = document.getElementById("preview_button"); if (el) el.style.display = ""; var el = document.getElementById("publish_post_button"); if (el) el.style.innerHTML = "Publish Changes"; } function save_attr(val_id, div_id, url, post_save, extract_snippets) { if (extract_snippets) url = url+'&extract_snippets=1'; //console.log("@ save_attr("+val_id+", "+div_id+", "+url+")"); //console.log(" @ extract_snippets: "+extract_snippets); var el1 = document.getElementById(div_id); var el = document.getElementById(val_id); if (el) { //console.log(" @ sending:" + el.value); value = el.value; post_ajax(url, el.value, function (retdata) { dat = json_parse(retdata); el1.innerHTML = dat['printable']; // set value field if (dat['modified'] && dat['status'] == "ok") el.value = dat['modified']; //else // console.log(" @ no modified text"); if (post_save) post_save(); } ); } else { // grab value from url (val=) instead of body. e.g. catsub buttons microAjax(url, function (retdata) { el1.innerHTML = json_parse(retdata)['printable']; } ) } //el1.innerHTML = '<img src=/gfx/load16.gif>'; el1.innerHTML = '<div style="padding:8px"><img src=/gfx/load16.gif></div>'; } function cancel_attr(val_id, div_id, url) { console.log("@ cancel_attr("+val_id+", "+div_id+", "+url); var el = document.getElementById(val_id); if (el) { var el1 = document.getElementById(div_id); el1.innerHTML = '<div style="padding:8px"><img src=/gfx/load16.gif></div>'; microAjax(url, function (retdata) { el1.innerHTML = json_parse(retdata)['printable'];; } ); } } function edit_attr(val_id, div_id, save_id, url, has_autosave) { //console.log("@ edit_attr("+val_id+", "+div_id+", "+url+", "+has_autosave); var el = document.getElementById(div_id); if (el) { //el.innerHTML='<img src=/gfx/load16.gif>';//+el.innerHTML; el.innerHTML = '<div style="padding:8px"><img src=/gfx/load16.gif></div>'; microAjax(url, function (retdata) { el.innerHTML = json_parse(retdata)['printable']; var el2 = document.getElementById(val_id); if (el2) if (has_autosave) { el2.focus(); //el2.select(); var el3 = document.getElementById(save_id); set_enter_to_save(el2, el3); } } ); } } // enter data function submit_pip_form_data(form) { // for each class=pip_form_input element, add to global pip_form_data var els = document.getElementsByClassName('pip_form_input'); console.log("@ submit form: adding "+els.length+" values"); for(var i = 0; i < els.length; i++) { el = els[i]; if (el.checked) { pip_form_data[el.id] = "checked"; } else if (el.value) { pip_form_data[el.id] = el.value; } console.log("@ set "+el.id+" to "+pip_form_data[el.id]); if (el.files && el.files[0]) { console.log("@ file: "+el.files[0].name); pip_form_data["uploaded_file"] = JSON.stringify(el.files[0]); pip_form_data["uploaded_file_size"] = el.files[0].size; pip_form_data["uploaded_name"] = el.files[0].name; pip_form_data["uploaded_type"] = el.files[0].type; } } } function reload_pip_form(form, step) { var el = document.getElementById(form); console.log("reloading form: "+form+" // step "+step); if (el) { var file_size = 0; if (pip_form_data.file_contents) file_size = pip_form_data.file_contents.length * 6 / 8; if (form == "cart_submit" && file_size > 1024*1024) // 1MB for pico-8 / voxatron carts { window.alert('Sorry, that file is too large. ('+Math.floor(file_size/1024)+'k / 1024k)'); return; } if (file_size > 1024*1024*8) { window.alert('Sorry, that file is too large. ('+Math.floor(file_size/(1024*1024))+'MB / 8MB)'); return; } // upload stringified_data = JSON.stringify(pip_form_data); var el1 = document.getElementById("form_loading_icon"); if (el1) el1.innerHTML='<img src=/gfx/load16.gif>'; //window.alert('pip_form_data.target_field:'+pip_form_data["target_field"]); // pass along some context post_ajax("/form.php?form="+form+"&step="+step+"&cat="+p_cat+"&sub="+p_sub+"&pid="+ p_pid+"&page="+p_page+"&mode="+p_mode, stringified_data, function (retdata) { el.innerHTML = retdata; // not JSON! } ); } else { console.log("@@ could not find form element"); } } function save_open_pip_form_fields() { // click all the save buttons var els = document.getElementsByClassName('form_button'); //for(var i = 0; i < els.length; i++) // invalidates iterator on first save! ha! for(var i = els.length-1; i >= 0; i--) { var el = els[i]; suffix = el.id.substr(el.id.length-5); if (suffix == "_save") el.click(); } } function submit_pip_form(form, step) { // save any open fields submit_pip_form_data(form); reload_pip_form(form, step); } function clear_pip_form() { pip_form_data = {}; } function randomize_cart_id_field() { el = document.getElementById("cart_lid"); c = "bdfghjkmnprstwyz"; v = "aiueo"; val = ""; for (i = 0; i < 5; i++) { val = val + c.substr(Math.floor(Math.random()*16), 1); val = val + v.substr(Math.floor(Math.random()*6), 1); } el.value = val; } // https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string function Uint8ToBase64(u8Arr){ var CHUNK_SIZE = 0x8000; //arbitrary number var index = 0; var length = u8Arr.length; var result = ''; var slice; while (index < length) { slice = u8Arr.subarray(index, Math.min(index + CHUNK_SIZE, length)); result += String.fromCharCode.apply(null, slice); index += CHUNK_SIZE; } return btoa(result); } function reader_onload(evt) { // evt.target.result is a ArrayBuffer var bytes = new Uint8Array( evt.target.result ); pip_form_data["file_contents"] = Uint8ToBase64(bytes); // show submit button var el = document.getElementById("uploaded_button"); el.style.display = "table"; } function filechooser_onchange(files) { var file = files[0]; var reader = new FileReader(); reader.onload = function(evt) { reader_onload(evt); }; reader.readAsArrayBuffer(file); } function toggle_visible(el) { //console.log("@toggle_visible: "+el); if (typeof el == 'string') { el = document.getElementById(el); } if (!el){ return; } if (el.style.display == "") { el.style.display="none"; return false; } else { el.style.display=""; return true; } } /* show active tab under tab_name, hide others assume only one set of tabs on page */ function show_tab(tab_name, which, tab_group) { var el; console.log("toggle tab "+tab_name+"_"+which); if (!tab_group) tab_group = "form_tab"; var els = document.getElementsByClassName(tab_group); //console.log("found "+els.length); for(var i = 0; i < els.length; i++) { el = els[i]; el2 = document.getElementById(el.id+"_content"); if (el.id == tab_name+"_"+which) { // open tab el.style["background-color"] = "#f8a"; el.style.color="#222"; if (el2) console.log(" opening "+el2.id); if (el2) el2.style.display="block"; } else { // hide tab el.style["background-color"] = ""; el.style.color="#fff"; if (el2) console.log(" hiding "+el2.id); if (el2) el2.style.display="none"; } } } function get_cart_url(lid, cat) { //console.log("@get_cart_url lid:"+lid+" cat:"+cat); /* console.log("@number: "+Number(lid)); console.log("@string: "+String(lid)); console.log("@equality:"+((Number(lid) == String(lid)) ? "true" : "false")); */ if (Number(lid) == String(lid) && Number(lid) > 0) { num = Math.floor(lid / 10000); url = `/bbs/cposts/`+num+`/`; if (cat == 6) return url + `cpost` + lid + `.png`; if (cat == 7) return url + lid + `.p8.png`; if (cat == 8) return url + lid + `.p64.png`; } else { lid = String(lid); if (cat == 6) return `/bbs/cposts/`+lid.substr(0,2)+`/`+lid+`.vx.png`; if (cat == 7) return `/bbs/cposts/`+lid.substr(0,2)+`/`+lid+`.p8.png`; if (cat == 8) return `/bbs/cposts/`+lid.substr(0,2)+`/`+lid+`.p64.png`; } return ''; } function element_dismisser(el, event) { var inner = el.childNodes[1]; if (!inner) return; var rect = inner.getBoundingClientRect(); if (!el.real_dismiss) { //console.log(' @@ element_dismisser: not real click -- return early'); el.real_dismiss = true; // next time! return; } if (rect && rect.bottom > 0) if (event.clientX < rect.left || event.clientX > rect.right || event.clientY > rect.bottom || event.clientY < rect.top) { //console.log(' @@ element_dismisser: dismissing'); console.log(rect); el.style.display="none"; document.removeEventListener('click', dismisser_func); } } var dismisser_func = null; function install_dismisser(el1) { //console.log('@@ installing dismisser'); // just in case document.removeEventListener('click', dismisser_func); dismisser_func = function(event){ element_dismisser(el1, event); } document.addEventListener('click', dismisser_func); el1.real_dismiss = false; // hack -- first click is to open pulldown } function install_search_listener(el) { el.addEventListener("keyup", function(event){ if (event.keyCode == 13) window.location.hash = "" + search_url_base + el.value; } ); } function update_checkout() { var checkboxes = document.getElementsByClassName('checkout_checkbox'); var items = document.getElementsByClassName('checkout_item'); var show_which = "buy"; if (document.getElementById("buy_p8") && document.getElementById("buy_p8").checked == true) show_which = show_which + "_p8"; if (document.getElementById("buy_vx") && document.getElementById("buy_vx").checked == true) show_which = show_which + "_vx"; if (document.getElementById("buy_p64") && document.getElementById("buy_p64").checked == true) show_which = show_which + "_p64"; console.log("show_which: "+show_which); // show only the selected bundle / product for (i = 0; i < items.length; i++) { if (items[i].id == show_which) items[i].style.display = ""; else items[i].style.display = "none"; } } function json_parse(data){ if (data[0] != '{'){ window.alert('Error // Bad Data Format: ' + data); return {"printable" : "[error]", "status" : "bad_data"}; } return JSON.parse(data); }</script> <script> var cart_info = {}; // from https://github.com/kripken/emscripten/issues/2053 function fullscreenable_canvas(canEl) { // var canEl = document.getElementById("canvas"); var reqFuncName = (canEl.mozRequestFullScreen || canEl.webkitRequestFullScreen || {"name": "requestFullScreen"}).name; document.addEventListener(reqFuncName.slice(0, -"requestFullScreen".length) + "fullscreenchange", function (evt) { if(document.mozFullScreen || document.webkitIsFullScreen || document.fullScreen || document.isFullScreen) { var w = canEl.clientWidth; var h = canEl.clientHeight; var factor = Math.min(screen.width / w, screen.height / h); canEl.setAttribute("style", "width: " + Math.round(w * factor) + "px !important; height: " + Math.round(h * factor) + "px !important;"); } else { canEl.removeAttribute("style"); } }, false); // in Firefox full screen must be set to the parent of the canvas to allow resizing the canvas for correct aspect ratio if(reqFuncName == "mozRequestFullScreen") { canEl[reqFuncName] = function() { this.parentNode[reqFuncName].apply(this.parentNode, arguments); }; } } function pip_requestFullscreen( element ) { if ( element.requestFullscreen ) { element.requestFullscreen(); } else if ( element.mozRequestFullScreen ) { element.mozRequestFullScreen(); } else if ( element.webkitRequestFullScreen ) { element.webkitRequestFullScreen( Element.ALLOW_KEYBOARD_INPUT ); } } window.onload = function() { //fullscreenable_canvas(); } </script> <script> function validate_signup (form) { if (form.su_agree.checked) { return true; } else { alert ("If you wish to sign up, you need to agree to the Terms of Use") return false; } } </script> </head><body><div id="body_0"> <div class=mobile_div> <div class = "lilmenu_div" style = " padding:0px; margin:0px; top:0px; width:100%; height:128px; background:url('/gfx/h_bbs.png') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> <a href="/bbs"> <div style=" position:absolute; top: 0px; height:128; width:100%; "> </div></a> <div style=" position:relative; height:48px; top: 76px; margin:0px; "><div style="float:left; height:48px; display:flex; align-items:center; "> <a onclick=" var el = document.getElementById('lil_menu_pulldown'); toggle_visible(el); var el = document.getElementById('account_pulldown'); el.style.display='none'; "> <div style="background-color:rgba(0,0,0,0.5); margin-left:8px; padding:12px"> <img src="/gfx/top_pulldown.png" width=20 height=20> </div> </a> </div> <div style="float:right; margin-right:12px; height:48px; display:flex; align-items:center; background-color:rgba(0,0,0,0.5); "> <script> function click_account_pulldown() { el1 = document.getElementById('account_pulldown'); if (toggle_visible(el1)) { install_dismisser(el1); el2 = document.getElementById('lil_menu_pulldown'); el2.style.display='none'; } } </script> <a onclick="click_account_pulldown();"> <div style="display:flex; align-items:center; height:100%; float:right; "> <div style=" padding:8px; display:flex; align-items:center; "> Log In &nbsp<img style="margin-left:8px;" src="/gfx/top_drop.png"> </div> </div> </a></div></div></div> <style> .pdmi{ display:flex; align-items:center; padding:4px; font-size:12pt; }; </style> <div id="lil_menu_pulldown" style=" z-index: 400; position:absolute; display:table; padding-top:20px; padding-bottom:20px; background-color:rgba(0,0,0,0.8); width:100%; display:none"><div style="width:auto;padding:16px"><div class="menu_icon" title="Lexaloffle Games"><a href="/"><img src="/gfx/top_info.png"></a></div><div class="menu_icon" title="PICO-8"><a href="/pico-8.php"><img src="/gfx/p8b_pico8.png"></a></div><div class="menu_icon" title="Voxatron"><a href="/voxatron.php" style="padding-right:4px;padding-left:4px;"><img src="/gfx/p8b_vox.png"></a></div><div class="menu_icon" title="Picotron"><a href="/picotron.php"><img src="/gfx/p8b_picotron.png"></a></div><div class="menu_icon" title="BBS" ><a href="/bbs"><img src="/gfx/bbs_cube.gif" width=40></a></div><div class="menu_icon" title="Superblog"><a href="/bbs/superblog.php"><img src="/gfx/top_blog.png"></a></div></div><table height=20></table></div></div> <div class = "topmenu_div" id = "banner" style=" margin:0px; top:0px; background-color:#111; width:100%; height:25vh; background:url('/gfx/h_bbs.png') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> <a href="/bbs"> <div style=" position:absolute; top: 0px; height:25vh; width:100%; "> </div></a> <div class = "topmenu_div" id="m" style=" position:relative; top: -47.9px; transform: translate(0, 25vh); margin:0px; background-color:rgba(10,0,20,0.8); width:100%; height:48px; "><div style="float:left; margin-left:0px;"><div class="menu_icon" title="Lexaloffle Games"><a href="/"><img src="/gfx/top_info.png"></a></div><div class="menu_icon" title="PICO-8"><a href="/pico-8.php"><img src="/gfx/p8b_pico8.png"></a></div><div class="menu_icon" title="Voxatron"><a href="/voxatron.php" style="padding-right:4px;padding-left:4px;"><img src="/gfx/p8b_vox.png"></a></div><div class="menu_icon" title="Picotron"><a href="/picotron.php"><img src="/gfx/p8b_picotron.png"></a></div><div class="menu_icon" title="BBS" ><a href="/bbs"><img src="/gfx/bbs_cube.gif" width=40></a></div><div class="menu_icon" title="Superblog"><a href="/bbs/superblog.php"><img src="/gfx/top_blog.png"></a></div><div style="display:inline-block;background-color:#555;width:1px;height:40px; margin-left:10px;margin-right:10px"></div><div style="display:inline-block;margin:4px" class="navstring"><table height=20></table></div></div> <script> function click_account_pulldown() { el1 = document.getElementById('account_pulldown'); if (toggle_visible(el1)) { install_dismisser(el1); el2 = document.getElementById('lil_menu_pulldown'); el2.style.display='none'; } } </script> <a onclick="click_account_pulldown();"> <div style="display:flex; align-items:center; height:100%; float:right; "> <div style=" padding:8px; display:flex; align-items:center; "> Log In &nbsp<img style="margin-left:8px;" src="/gfx/top_drop.png"> </div> </div> </a></div></div><div id = "account_pulldown" style="position:relative; left: -28px; float:right; width: 240px; height:0px; z-index: 400; display:none;" > <div id = "account_pulldown_inner" style=" padding:12px; background-color:rgba(0,0,0,0.8); width:100%; border-width: 1px; border-style: solid; border-color: #000; "> <div style="margin-right:20px"> <form style="margin:8px;" name="loginsubmit" method="post" action="/account.php?page=login"> <table><tr> <td>User:</td><td> <INPUT name="user" class="logininput" size=16 ><br> </td></tr><tr><td> Password:</td><td> <INPUT name="pass" type="password" class="logininput" size=16 type=text><br> <INPUT type="hidden" name="go" value="/bbs/"> </td></tr><tr><td></td><td> <input type=submit class="logininput2" style="margin-top:8px" value="LOG IN"> </td></tr></table> <br> <a href="/account.php?page=new_user" style="color:#fab">New User</a> | <a href="/account.php" style="color:#fab">Account Help</a> </td></tr></table> </form></div></div></div> <div style="max-width:100vw; padding:0vw"> <div id="main_div" style=" max-width:1060px; min-height:50vh; margin:auto; display:block; padding-top:16px; padding-bottom:16px; overflow:hidden; " ><script language="javascript" type="text/javascript"> var p_sub = 0; var p_cat = 0; var s_uid = 0; var p_page = "1"; var p_mode = ""; var imageChooserWindow; function popup(which) { if (imageChooserWindow) imageChooserWindow.close(); imageChooserWindow=window.open('popup.php?page='+which,'windowname','height=600,width=600,scrollbars=yes'); } function load_hash_location() { var h = window.location.hash.substr(1); var params = 'use_hurl=1'; // use "#url" format for single page location changes if (typeof p_cat !== 'undefined') params = params+'&cat=' + p_cat; // pass along params specified in ? part // (when clicked, effectively moves from ? part to # part if (typeof p_sub !== 'undefined') params = params+'&sub='+p_sub; if (typeof p_page !== 'undefined') params = params+'&page='+p_page; if (typeof p_mode !== 'undefined') params = params+'&mode='+p_mode; if (typeof p_orderby !== 'undefined') params = params+'&orderby='+p_orderby; params = params+'&'+h; console.log("@ load_hash_location "+params); // set main_list to loading show_loading_spinner(); // /bbs/lister.php microAjax('lister.php?'+params, function (retdata) { var el = document.getElementById('main_list'); if (el) { el.innerHTML = retdata; hide_loading_spinner(); // re-run self (including this) var el2 = document.getElementById('cart_data_script'); if (el2) { console.log("@ running cart_data_script\n"); eval(el2.innerHTML); } update_stick_scrolling(); } } ); } function show_loading_spinner() { var el = document.getElementById('loading_spinner'); //if (el) el.style.display = 'block'; if (el) el.innerHTML='<img src="/gfx/load16.gif">'; } function hide_loading_spinner() { // var el = document.getElementById('loading_spinner'); // if (el) el.style.display = 'none'; } function get_relative_time(s) { //return '['+current_time+' , '+s+']'; var d0 = Math.round(new Date(s.replace(" ","T")).getTime() / 1000); //var d1 = Math.round(new Date().getTime() / 1000); var d1 = Math.round(new Date(current_time.replace(" ","T")).getTime() / 1000); var t = d1-d0; // seconds if (t < 60) return "just now"; //return Math.round(t)+" seconds ago"; if (t < 3600) return Math.round(t / 60)+" minutes ago"; if (t < 3600*24) return Math.round(t / 3600)+" hours ago"; // convert to days t = Math.round(t / (3600*24)); if (t < 30) return Math.round(t)+" days ago"; if (t < 365) return Math.round(t/30.43)+" months ago"; return Math.round(t/365.25)+" years ago"; } function update_stick_scrolling() { var el = document.getElementById('sticky'); if (el) { // when placeholder parent is above top of screen, make fixed var screen_y = el.parentNode.getBoundingClientRect().top; if (screen_y < 0) el.style.position = 'fixed'; else el.style.position = 'relative'; } } document.addEventListener("scroll", update_stick_scrolling); function print_cart_code(url, div_id) { /* if (print_pico8_code){ print_pico8_code(url, div_id); return; } */ window.alert("printing code 1! "+url+" "+div_id); e = document.createElement("script"); e.type = "application/javascript"; e.src = "/bbs/cart_tools.js"; e.id = "e_script"; document.body.appendChild(e); // load and run Module.onRuntimeInitialized = _ => { const print_pico8_code = Module.cwrap('print_pico8_code', 'number', ['string','string']); print_pico8_code(url, div_id); }; } </script><div id="main_list" style="display:block; min-height:100vh;"><noscript><div style="background-color:#222; display:block"><div style="height:56px; display:table;"> <div id="sticky" style=" width:100%; height:30px; max-width:1024px; font-size:16pt;font-weight:heavy; display:table; color:#fff; padding:8px; top: 0px; background-color:#222; position:relative; "> <div style="color:#fab; float:left; display:table; padding:6px"> Lexaloffle BBS </div> </div></div><div> <div class=mobile_div> <img src="/gfx/bbs_cube.gif" style="float:left; margin-right:8px; margin-bottom:8px; width:256px; height:256px;" class=pixel_perfect> </div> <div style="display:table; width:100%;"><div style="padding:10px; padding-right:20px"> <div class=desktop_div> <img src="/gfx/bbs_cube.gif" style="float:left; margin-right:8px; margin-bottom:8px; width:128px; height:128px;" class=pixel_perfect> </div> Hi, welcome to the Lexaloffle Bulletin Board System! <br><br> Please choose a sub-forum, or see below for a summary of all thread activity. <div style="margin-top:20px"> <a href="?cat=7"><div style="float:left;display:flex; font-size:16pt; align-items:center; margin-right:30px"> <img src="/gfx/p8b_pico8.png" width=40 height=40 style="margin-right:8px"> <div style="display:table">PICO-8</div> </div></a> <a href="?cat=6"><div style="float:left;display:flex; font-size:16pt; align-items:center; margin-right:30px"> <img src="/gfx/p8b_vox.png" style="margin-right:8px"> <div style="display:table">Voxatron</div> </div></a> <a href="?cat=8"><div style="float:left;display:flex; font-size:16pt; align-items:center; margin-right:30px"> <img src="/gfx/p8b_picotron.png" style="margin-right:8px; width:40px; height:40px"> <div style="display:table">Picotron</div> </div></a> <a href="/bbs/superblog.php"><div style="float:left;display:flex; font-size:16pt; align-items:center; margin-right:24px"> <img src="/gfx/top_blog.png" style="margin-right:8px"> <div style="display:table">Superblog</div> </div></a> <a href="/bbs/superblog.php?mode=gifs"><div style="float:left;display:flex; font-size:16pt; align-items:center"> <img src="/gfx/top_gifs.png" style="margin-right:0px"> <div style="display:table">GIFs</div> <span style="border-radius:6px; padding:5px; background-color:#fab; color:#112; font-size:8pt; margin-top:-24px; margin-left:-2px; font-weight:bold">NEW!</span> </div></a> </div> </div></div> </div></div><br><div style="width:98%;background-color:#222;padding:8px;"> <div style="display:inline-table;width:100%;margin-bottom:4px;margin-top:4; "><div class="linkybutton_lil0"><center>::</center></div><div style=" margin-left:4px; margin-right:4px; padding-left :8px; padding-right:8px; float: left; display:flex; align-items:center; height:36px; background-color:#555; font-size:9pt; justify:center; ">Page 1</div><a href=?sub=0&page=2 ><div class="linkybutton_lil" ><center>></center></div></a><div style="float: left; padding:6px"></div><a href=?sub=0&orderby=ts ><div class="linkybutton_lil" style="background-color : #a0a0a0; color:#fff"><center><img src=/gfx/i_new1.png width=18 height=16 title=new></center></div></a><div style="float: left; padding:8px"></div><a href=?sub=0 ><div class="linkybutton_lil" style="background-color : #a0a0a0; color:#fff"><center><img src="/gfx/i_discuss1.png" width=18></center></div></a><a href=?sub=0&mode=carts ><div class="linkybutton_lil" ><center><img src="/gfx/i_cart0.png" width=18></center></div></a><div style="float: left; padding:2px;"></div><div class=desktop_div><a href=?sub=0&cc4=1 ><div class="linkybutton_lil" ><center><img src="/gfx/set_cc0.png"></center></div></a></div></div> <div style="padding:4px; display:table; width:100%"><span style="font-size:20pt;font-weight:heavy;color:#fab">New Thread Activity</span> <div class="desktop_div"> <div style="float:right; height:32px;"> <span>Search:</span> <INPUT class="lexinput_search" size=20 type=text value="" onclick="this.select();install_search_listener(this);"> </div> </div> <a style="float:right" class="mobile_div" onclick=" el = document.getElementById('mobile_search'); toggle_visible(el); "> <div style="padding:8px"> <img src="/gfx/i_search1.png" width=18 height=16> </div> </a> <div class="mobile_div"> <div id=mobile_search style="display:none; padding-top:2px;"> <span>Search:</span> <INPUT class="lexinput_search" size=20 type=text value="" onclick="this.select(); install_search_listener(this);"> </div> </div> <span style="font-size:9pt; margin-left:10px; color:#aaa"></span><div id="loading_spinner" style="width:24px; height:20px; display:inline; margin-left:10px;padding-top:6px;"> </div> </div><div style=" display:flex;flex-direction:row;flex-wrap: wrap; padding:4px; "> <div id="pdat_163773" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147833" style="padding:20px; font-size:12pt; display:block"> sh**ty cookie clicker</a> </div> <div id="pdat_163627" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147772" style="padding:20px; font-size:12pt; display:block"> Pigeon Weigher</a> </div> <div id="pdat_86783" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=41282" style="padding:20px; font-size:12pt; display:block"> celeste classic 2</a> </div> <div id="pdat_156096" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=144877" style="padding:20px; font-size:12pt; display:block"> Ghostvania</a> </div> <div id="pdat_56354" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=31837" style="padding:20px; font-size:12pt; display:block"> Friendly Dungeon</a> </div> <div id="pdat_163786" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147837" style="padding:20px; font-size:12pt; display:block"> What games should I play on pico 8?</a> </div> <div id="pdat_163772" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147832" style="padding:20px; font-size:12pt; display:block"> Space Mercenary</a> </div> <div id="pdat_157811" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=145429" style="padding:20px; font-size:12pt; display:block"> Swap (60Fps Celeste Classic Mod)</a> </div> <div id="pdat_163754" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147822" style="padding:20px; font-size:12pt; display:block"> Population: Tire</a> </div> <div id="pdat_163214" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147646" style="padding:20px; font-size:12pt; display:block"> Celeste Maker</a> </div> <div id="pdat_162517" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147413" style="padding:20px; font-size:12pt; display:block"> there will always be death</a> </div> <div id="pdat_163352" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147689" style="padding:20px; font-size:12pt; display:block"> Asteroids</a> </div> <div id="pdat_161930" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147126" style="padding:20px; font-size:12pt; display:block"> SPHONGOS</a> </div> <div id="pdat_162420" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147356" style="padding:20px; font-size:12pt; display:block"> Virtuous Vanquisher of Evil 2</a> </div> <div id="pdat_163402" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147700" style="padding:20px; font-size:12pt; display:block"> Picovania (Version 1.1)</a> </div> <div id="pdat_69408" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=35781" style="padding:20px; font-size:12pt; display:block"> Dither Tutorial + Code</a> </div> <div id="pdat_163766" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147828" style="padding:20px; font-size:12pt; display:block"> GeKeste (beta)</a> </div> <div id="pdat_163551" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147752" style="padding:20px; font-size:12pt; display:block"> Dice Game</a> </div> <div id="pdat_163767" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147829" style="padding:20px; font-size:12pt; display:block"> made clicker game (gonna turn it into cookie clicker)</a> </div> <div id="pdat_163746" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147818" style="padding:20px; font-size:12pt; display:block"> Balatro in PICO8</a> </div> <div id="pdat_163755" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147823" style="padding:20px; font-size:12pt; display:block"> my first pico 8 game</a> </div> <div id="pdat_31819" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=27975" style="padding:20px; font-size:12pt; display:block"> Zen-Garden Mowerman</a> </div> <div id="pdat_39680" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=29176" style="padding:20px; font-size:12pt; display:block"> SCUMM-8 (point &amp; click engine in PICO-8)</a> </div> <div id="pdat_163576" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147757" style="padding:20px; font-size:12pt; display:block"> polican</a> </div> <div id="pdat_80083" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=39014" style="padding:20px; font-size:12pt; display:block"> Sprite stacking example</a> </div> <div id="pdat_160092" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=146403" style="padding:20px; font-size:12pt; display:block"> Mace Knight</a> </div> <div id="pdat_163748" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147819" style="padding:20px; font-size:12pt; display:block"> Wavetable modulation?</a> </div> <div id="pdat_83849" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=40234" style="padding:20px; font-size:12pt; display:block"> Perspective-correct texture mapping</a> </div> <div id="pdat_163046" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147601" style="padding:20px; font-size:12pt; display:block"> Konakin: Open World Frogger-like</a> </div> <div id="pdat_163738" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147812" style="padding:20px; font-size:12pt; display:block"> Balatro Tileset</a> </div> </div></div></noscript><div><script> var el = document.getElementById('main_list'); if (el) el.innerHTML='<img src="/gfx/load16.gif">'; show_loading_spinner(); load_hash_location(); </script><script id=cart_data_script> p_sub = 0; pdat=[ ['163773', 147833, `sh**ty cookie clicker`,"/bbs/thumbs/pico8_cookieclicked-1.png",96,64,"2025-03-14 05:57:56",120062,"tonydsoy","2025-03-14 17:10:10",120062,"tonydsoy",1,1,0,7,2,'0',["clicker","game","click","tap",],0,21,,``,``], ['163627', 147772, `Pigeon Weigher`,"/bbs/thumbs/pico64_pigeonweigher-2.png",96,64,"2025-03-11 19:51:43",49073,"JThburvs","2025-03-14 16:00:15",15903,"Rybar",2,3,0,8,2,'0',[],0,21,,``,``], ['86783', 41282, `celeste classic 2`,"/bbs/thumbs/pico8_celeste_classic_2-5.png",96,64,"2021-01-26 00:31:11",10070,"noel","2025-03-14 15:31:26",77754,"akua",624,120,0,7,2,'0',[],0,4373,,``,``], ['156096', 144877, `Ghostvania`,"/bbs/thumbs/pico8_ghostvania1-8.png",96,64,"2024-10-22 15:10:36",75075,"palassonde","2025-03-14 15:27:07",75075,"palassonde",11,10,0,7,2,'0',["action","adventure","platformer","castlevania",],0,21,,``,``], ['56354', 31837, `Friendly Dungeon`,"/bbs/thumbs/pico56467.png",96,64,"2018-09-07 01:18:47",12812,"guerragames","2025-03-14 15:02:58",116720,"grindkrusher",15,6,0,7,2,'0',["action","match3","agbic",],0,0,,``,``], ['163786', 147837, `What games should I play on pico 8?`,"/bimg/pi/pi15.png",96,48,"2025-03-14 14:07:31",117071,"Seany","2025-03-14 15:01:14",82211,"RealShadowCaster",1,2,0,7,2,'0',[],0,16,,``,``], ['163772', 147832, `Space Mercenary`,"/bbs/thumbs/pico8_space_mercenary-0.png",96,64,"2025-03-14 05:28:48",120092,"i0nicle","2025-03-14 14:02:41",119113,"stinkingcedar",2,3,0,7,3,'0',["action","shmup","shooter",],0,16,,``,``], ['157811', 145429, `Swap (60Fps Celeste Classic Mod)`,"/bbs/thumbs/pico8_switch-2.png",96,64,"2024-11-21 23:37:21",71860,"AntiBrain","2025-03-14 13:41:15",118634,"TrulyGamma",10,7,0,7,2,'0',["cc","celeste","celesteclassic","ccmod",],0,5,,``,``], ['163754', 147822, `Population: Tire`,"/bbs/thumbs/pico8_poptire-1.png",96,64,"2025-03-14 01:03:27",11031,"IMLXH","2025-03-14 13:00:24",94681,"magic_chopstick",2,2,0,7,2,'0',["arcade","demake","homestar-runner",],0,16,,``,``], ['163214', 147646, `Celeste Maker`,"/bbs/thumbs/pico8_celeste_maker_v1_01-0.png",96,64,"2025-03-04 02:58:11",69779,"SwordF","2025-03-14 12:37:06",119235,"OctogorbSlayer",16,6,0,7,2,'0',["celeste","mod","leveleditor",],0,16,,``,``], ['162517', 147413, `there will always be death`,"/bbs/thumbs/pico8_twabd-0.png",96,64,"2025-02-19 16:26:31",33598,"KikooDX","2025-03-14 10:54:15",119994,"Mooseman10",2,7,0,7,2,'0',["celeste","mod","precision","skill-issue",],0,17,,``,``], ['163352', 147689, `Asteroids`,"/bbs/thumbs/pico8_sebmuhab-0.png",96,64,"2025-03-06 09:28:06",96762,"kraptol","2025-03-14 10:49:34",38590,"donswelt",6,6,0,7,2,'0',["asteroids","arcade","atari","shooter",],0,21,,``,``], ['161930', 147126, `SPHONGOS`,"/bbs/thumbs/pico8_mk_sphongos-0.png",96,64,"2025-02-10 16:34:57",14648,"mkoloch","2025-03-14 08:59:43",14648,"mkoloch",74,42,0,7,2,'0',["sci-fi","explore","collect","upgrade",],0,273,,``,``], ['162420', 147356, `Virtuous Vanquisher of Evil 2`,"/bbs/thumbs/pico8_vanquisher2-3.png",96,64,"2025-02-18 16:24:19",31613,"ironchestgames","2025-03-14 06:45:22",31613,"ironchestgames",12,12,0,7,2,'0',["roguelike","arpg","items","singleplayer",],0,17,,``,``], ['163402', 147700, `Picovania (Version 1.1)`,"/bbs/thumbs/pico64_picovania-241.png",96,64,"2025-03-07 15:24:10",52360,"Turbochop","2025-03-14 05:56:50",52360,"Turbochop",10,9,0,8,2,'0',["picotron","picovania","castlevania","pico",],0,21,,``,``], ['69408', 35781, `Dither Tutorial + Code`,"/bbs/thumbs/pico8_dt-0.png",96,64,"2019-10-28 20:00:20",15232,"dw817","2025-03-14 05:26:09",116621,"shinin1218",17,5,0,7,2,'0',["dithering","black-and-white","shading","pattern",],0,17,,``,``], ['163766', 147828, `GeKeste (beta)`,"/bbs/thumbs/pico8_gekestebeta-1.png",96,64,"2025-03-14 04:29:34",61130,"GeKStudios","2025-03-14 04:29:34",61130,"GeKStudios",0,1,0,1,0,'0',[],0,17,,``,``], ['163551', 147752, `Dice Game`,"/bbs/thumbs/pico8_ranihobiji-0.png",96,64,"2025-03-10 14:03:28",114025,"NoahR","2025-03-14 04:18:31",120062,"tonydsoy",1,2,0,7,2,'0',[],0,17,,``,``], ['163767', 147829, `made clicker game (gonna turn it into cookie clicker)`,"/bbs/thumbs/pico8_ccpico-0.png",96,64,"2025-03-14 04:13:58",120062,"tonydsoy","2025-03-14 04:13:58",120062,"tonydsoy",0,1,0,7,2,'0',["cookieclicker","cookie","clicker","click",],0,20,,``,``], ['163746', 147818, `Balatro in PICO8`,"/bbs/thumbs/pico8_shodunume-0.png",96,64,"2025-03-13 21:59:36",120072,"angelvalentin80","2025-03-14 03:08:25",120072,"angelvalentin80",2,5,0,7,2,'0',["balatro","cardgame","balatro",],0,21,,``,``], ['163755', 147823, `my first pico 8 game`,"/bbs/thumbs/pico8_berrytony-0.png",96,64,"2025-03-14 01:17:17",120062,"tonydsoy","2025-03-14 03:03:01",120062,"tonydsoy",1,1,0,7,2,'0',["i","dont","know","what",],0,21,,``,``], ['31819', 27975, `Zen-Garden Mowerman`,"/bbs/thumbs/pico8_mowerman-4.png",96,64,"2016-10-26 09:11:13",16330,"2darray","2025-03-14 02:42:21",116621,"shinin1218",70,32,0,7,2,'0',[],0,272,,``,``], ['39680', 29176, `SCUMM-8 (point &amp; click engine in PICO-8)`,"/bbs/thumbs/pico39678.png",96,64,"2017-04-15 03:38:42",13822,"Liquidream","2025-03-14 02:29:25",116621,"shinin1218",116,25,0,7,2,'0',["adventure","scumm","point","click",],0,272,,``,``], ['163576', 147757, `polican`,"/bbs/thumbs/pico8_polican-0.png",96,64,"2025-03-10 22:07:13",50691,"Nomte","2025-03-13 23:07:57",50691,"Nomte",1,1,0,7,3,'0',[],0,21,,``,``], ['80083', 39014, `Sprite stacking example`,"/bbs/thumbs/pico8_spritestack-0.png",96,64,"2020-07-29 11:17:04",15227,"johanp","2025-03-13 22:34:35",45456,"kikito",35,18,0,7,9,'0',["spritestacking",],0,1,,``,``], ['160092', 146403, `Mace Knight`,"/bbs/thumbs/pico8_maceknight-2.png",96,64,"2025-01-02 02:45:47",115360,"N3philim","2025-03-13 22:30:06",118704,"deimos_314",15,5,0,7,2,'0',[],0,17,,``,``], ['163748', 147819, `Wavetable modulation?`,"/media/58525/13_lex-avatar.png",96,48,"2025-03-13 22:13:24",58525,"slumma","2025-03-13 22:13:24",58525,"slumma",0,1,0,7,1,'0',["audio","sfx","music",],0,16,,``,``], ['83849', 40234, `Perspective-correct texture mapping`,"/bbs/thumbs/pico8_texture_map-0.png",96,64,"2020-11-06 05:29:03",44961,"zovirl","2025-03-13 22:08:26",45456,"kikito",13,5,0,7,3,'0',["3d",],0,16,,``,``], ['163046', 147601, `Konakin: Open World Frogger-like`,"/bbs/thumbs/pico8_konakin-1.png",96,64,"2025-03-01 03:24:30",113227,"Vecderg","2025-03-13 21:59:48",82211,"RealShadowCaster",5,6,0,7,2,'0',["conlang","frogger","arcade","open-world",],0,20,,``,``], ['163738', 147812, `Balatro Tileset`,"/media/120070/mockup1.png",96,48,"2025-03-13 21:47:57",120070,"Eiko","2025-03-13 21:47:57",120070,"Eiko",2,1,0,7,14,'0',["cards","demake",],0,16,,``,``], ]; var updat=[ ]; search_url_base = "?sub=0&search="; tag_url_base = "/bbs/?cat=0#tag="; function make_stat_box(set_name, num, state, post_id, bg, margin) { var imgf = set_name; if (state == 1) imgf = imgf + `1.png`; else imgf = imgf + `0.png`; var s = ` <div style="display:flex; background:`+bg+`; padding:6px; align-items: center; cursor:pointer; margin-left:`+margin+`px" class=rate_` + post_id + `_` + set_name; if (set_name!="comments") { s = s + ` onclick="window.alert('Please log in to like and favourites posts.');"`; } s = s + ` > <div class=i_rate_` + post_id + `_` + set_name+` style="width:20px;height:20px"> <img width=20 height=20 src="/gfx/set_`+imgf+`"> </div> `; if (num >= 0) s=s+`<div style="margin-left:8px">`+num+`</div>`; s = s + ` </div>`; return s; } function generate_thread_preview(dat, set_flags) { //var s = `<div style="display:flex;align-items: center; padding:4px">`; var s= `<table width=100% cellspacing=0 cellpadding=0><tr><td width=100%>`; var thread_url = `/bbs/?tid=`+dat[1]; var pid_url = `/bbs/?pid=`+dat[0]; if (dat[15] == -1){ thread_url = pid_url + `&tkey=`+dat[23]; pid_url = pid_url + `&tkey=`+dat[23]; } // :: thumb if (dat[17]) { // cover s += ` <a href="`+pid_url+`#p"> <div style="display:flex; min-height:64px; align-items:center; float:left; padding:8px"> <div style=" cursor:pointer; width:64px; height:64px; background:url(\'`+dat[3]+`\') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> </div> </div> </a> `; /* popup player. better just to show the cart in thread context with fast load s += ` <div style="display:flex; min-height:64px; align-items:center; float:left; padding:8px"> <div style="width:64px"> <a onClick="toggle_playarea('playarea_popup','`+dat[17]+`');"> <center> <img src="`+dat[3]+`" width=`+dat[4]+` height=`+dat[5]+`></center> </a> </div> </div> `; */ } else { // no cart in thumb; link to cat s += ` <div style="display:flex; min-height:64px; align-items:center; float:left; padding:8px"> <div style="width:64px"> <a href="/bbs/?cat=`+dat[15]+`"> <center><img src="`+dat[3]+`" width=`+dat[4]+` height=`+dat[5]+`></center> </a> </div> </div> `; } // :: title and tags (gets space left over) { var title_str = dat[2]; if (title_str == "" && dat[16] == 16) title_str = "[gif]"; s = s + `<div style="display:flex; min-height:48px; align-items: center; padding:10px;"> <div> <div style="font-size:14pt;margin-bottom:8px; margin-top:4px"> <a href="`+thread_url+`" >`; s = s + title_str; s = s + `</a>` // by fred, last reply by annie 4 days ago { s += ` <br> <span style="color:#777;font-size:8pt;padding-top:4px; display:table"> by <a style="color:#ccc" href=?uid=`+dat[7]+`>`+dat[8]+`</a>`; s += ` `+get_relative_time(dat[6]);//+`</span>`; if (true) { if (dat[13] > 1) s += ` :: <a style="color:#ccc" href=?uid=`+dat[10]+`>`+dat[11]+`</a> replied `+get_relative_time(dat[9]); } } s += `</span>`; s += `</div>`; // category (only need if not viewing that sub-forum) if (false) if (p_sub==0) { s = s + `<div style="float:left; display:flex; align-items:center; margin:4px; padding:4px; background-color:#999; color:#222; font-size:8pt; border-color:#939; border:4px; border-radius:4px"> <div style="width:16px"><img src="/gfx/i_cart1.png" width=16 height=16></div> <div style="display:span">Carts</div></div>`; } // catsub if (p_cat == 0 || p_sub == 0) { label = ''; if (false) if (p_cat == 0) { label = 'Blog'; if (dat[15] == 6) label = 'Voxatron > '; if (dat[15] == 7) label = 'PICO-8 > '; if (dat[15] == 8) label = 'Picotron > '; if (dat[15] == -1) label = 'Unlisted'; } cols = ['f47','fab','4af','fa4','f8a','5ff','4c4','f47','f8a', 'cde', 'cde', 'cde', '8df', 'cde', 'fcb', '8fa']; col = cols[dat[16]%16]; if (dat[16] == 1) label += 'Chat'; //else if (dat[16] == 2) label += '<img src=/gfx/i_cart1.png width=18> Carts'; else if (dat[16] == 2) label += 'Cartridges'; else if (dat[16] == 3) label += 'WIP'; else if (dat[16] == 4) label += 'Collab'; else if (dat[16] == 5) label += 'Workshop'; else if (dat[16] == 6) label += 'Support'; else if (dat[16] == 7) label += 'Blog'; else if (dat[16] == 8) label += 'Jam'; else if (dat[16] == 9) label += 'Code Snippet'; else if (dat[16] == 14) label += 'GFX Snippet'; else if (dat[16] == 15) label += 'SFX Snippet'; else if (dat[16] == 16) label += 'GIF Stream'; else if (dat[16] == 17) label += 'VOB'; //else label += '?'; // category icon // if (p_cat == 0) // fine to include! not noisey and reminder of context { cat_icon = null; if (dat[15] == 6) cat_icon = "p8b_vox.png"; if (dat[15] == 7) cat_icon = "p8b_pico8.png"; if (dat[15] == 8) cat_icon = "p8b_picotron.png"; if (cat_icon) s += '<a href="?cat='+dat[15]+'"><img src="/gfx/'+cat_icon+'" style="width:20px; height:20px; float:left; margin-right:4px;"></a>'; } s += ` <a href=?cat=`+dat[15]+`#sub=`+dat[16]+`> <div class=tag style="background-color:#`; s += col; s += `;">`+label+`</div></a>`; } // cc4 if (dat[20] & 0x1) { s += ` <a href="/bbs/?cat=`+p_cat+`#sub=`+p_sub+`&cc4=1"> <div class=tag style="background-color:#f90; color:#fff"> CC</div></a>`; } // resolved if (dat[16] == 6) // support sub. to do: how-to or workshop sub? { if (dat[19] & 0x1) s += `<div class=tag style="background-color:#2a4; color:#afa"> <img src="/gfx/set_tick1.png" width=10 height=10> Resolved</div>`; else s += `<div class=tag style="background-color:#c96; color:#fff">Unresolved</div>`; } // tags if (dat[18]) // tags { for (var j=0; j < dat[18].length; j++) s +=` <a href="` + tag_url_base + dat[18][j] + `"><div class="tag">#`+dat[18][j]+`</div></a>`; } s = s + `</div></div>`; } s = s + `</td><td>`; // :: extra info float right if (dat[15] != -1) { s = s + ` <div style="float:right;margin-right:12px;display:flex;align-items: center;">`; // :: resolved tick in support sub, when same author if (false) // nope -- just set inside post view (should be after reading anyway) if (dat[16] == 6 && s_uid == dat[7]) { s = s + make_stat_box("tick", -1, (set_flags & 0x4) ? 1 : 0, dat[0]); } // :: author + timestamp x2 /* s = s + ` <div class="desktop_div" style="margin-right:10px; min-width:120px; font-size:9pt"> <a href=?uid=`+dat[7]+`>`+dat[8]+`</a><br> <span style="color:#777;font-size:8pt;margin-right:10px;">`+get_relative_time(dat[6])+`</span><br> <div style="display:block; height:6px"></div> <a href=?uid=`+dat[10]+`>`+dat[11]+`</a><br> <span style="color:#777;font-size:8pt;margin-right:10px;">`+get_relative_time(dat[9])+`</span> </div> `; */ // :: fav, like, comments s = s + `<div class="desktop_div" style="background-color:;">`; s = s + ` <div style="min-width:160px;float:right;margin-right:4px;display:flex;">`; s = s + make_stat_box("fav", -1, (set_flags & 0x2) ? 1 : 0, dat[0], "#555", 12); s = s + make_stat_box("like", dat[12], (set_flags & 0x1) ? 1 : 0, dat[0], "#555", 12); s = s + `<a href="`+thread_url+`">`; s = s + make_stat_box("comments", dat[13], 0, dat[0], "#555", 12); s = s + `</a></div>`; if (false) { s += ` <span style="color:#777;font-size:8pt;padding:4px; padding-left:12px; display:table;"> <a href=?uid=`+dat[7]+`>`+dat[8]+`</a> `+get_relative_time(dat[6])+`</span>`; } s += `</div>`; // end of extra info float right s = s + `</div>`; } s = s + `</td></tr></table>`; //s = s + `</div>`; return s; } // overlapping function generate_cart_preview_overlapping(dat, set_flags) { // /gfx/p8b_pico8.png s = ''; // image s = s + ` <div style="cursor:pointer; margin-right:10px; float:left; width:256px; height:192px; margin-bottom:12px; background:url('`+dat[3]+`') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> `; // title, author s += ` <div > <div style="display:block; padding-top:0px; padding-bottom:6px; overflow:hidden; border-radius:0px;"> <div style="display:block; padding-top:4px; padding-bottom:8px; background-color:rgba(16,0,32,0.5); // rgba border-radius:0px; min-height:40px "> <div style="float:right; display:table;"> `; // favourite, cc4 s += `<div style="margin-top:-6px">`; // dat[0] is the containing post s += make_stat_box("fav", -1, 0, dat[0], "", 2); if (dat[20] & 0x1) //cc4 { s += ` <a href="/bbs/?cat=`+p_cat+`#sub=`+p_sub+`&cc4=1"> <div class=tag style="background-color:#444; margin-top:-4px; margin-left:6px; color:#bbb; border:1px solid; border-radius:4px; padding:0px; padding-right:4px; padding-left:4px"> CC</div></a>`; } s += `</div>`; s += ` </div> <div style="max-height:90px; margin-left:5px"> <a href="?pid=`+dat[0]+`#p"> <font style="color:#fff; font-size:12pt">`+dat[22]+`</font> </a> <br> <a href="/bbs/?uid=`+dat[7]+`&mode=carts"> <font style="color:#fab; font-size:8pt">@`+dat[8]+`</font> </a> </div> </div> </div> </div> `; // buttons s = s + ` <div style="display:flex; color:#222;"> `; //s = s + make_stat_box("comments", -1, -1, dat[0], "#ddd"); // like and fav are for parent post, not cart id bgcol="#ddd"; bgcol="#bbb"; //s = s + '<div style="display:inline-block">'; if (false) { s = s + make_stat_box("cc", -1, (set_flags & 8) ? 1 : 0, dat[0], bgcol, 2); s = s + make_stat_box("fav", -1, (set_flags & 0x12) ? 1 : 0, dat[14], bgcol, 2); s = s + make_stat_box("like", dat[12], (set_flags & 0x11) ? 1 : 0, dat[14], bgcol, 2); } //s = s + '</div>'; s = s + ` </div></div> `; s = s + ` </div> </div> `; return s; } function generate_cart_preview(dat, set_flags) { // /gfx/p8b_pico8.png s = ''; bgcol="#bbb"; // image /* pop up player s = s + ` <a onClick="toggle_playarea('playarea_popup','`+dat[17]+`');" style="cursor:pointer;"> <img class=pixel_perfect src="`+dat[3]+`" width=`+dat[4]+` height=`+dat[5]+` style="border:1px solid black; margin-bottom:-4px; "> </a> `; */ // image // cover square // pixel perfect iff pico-8 var class_str=''; if (dat[15] == 7) class_str='class="pixel_perfect"'; s = s + ` <a href="/bbs/?pid=`+ dat[0] + `#p" > <div `+class_str+` style=" border-radius:0px; cursor:pointer; width:320px; height:320px; background:url(\'`+dat[3]+`\') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> </div> </a> `; s += ` <div> <div style="position:relative; top:-63px; margin-bottom:-60px; min-height:64px; padding-top:0px; padding-bottom:6px; overflow:hidden; border-radius:0px;"> <div style="padding-top:8px; padding-bottom:8px; background-color:rgba(15, 10, 60, 0.7); color:#fff; border-radius:0px; min-height:36px; width:320px;"> <div style="float:right; display:table;"> `; // favourite, cc4 s += `<div style="margin-top:-6px">`; // dat[0] is the containing post s = s + make_stat_box("fav", -1, (set_flags & 0x2) ? 1 : 0, dat[0], "", 2); if (false) { s += '<div style="margin-top:-10px">'; s = s + make_stat_box("like", dat[12], (set_flags & 0x1) ? 1 : 0, dat[0], "", 2); s += '</div>'; } if (dat[20] & 0x1) { s += `<div class=tag style="background-color:#444; margin-top:-4px; margin-left:6px; color:#bbb; border:1px solid; border-radius:4px; padding:0px; padding-right:4px; padding-left:4px"> CC</div>`; } s += `</div>`; var imgstr = '<img src="/gfx/p8b_pico8.png" width=20>'; if (dat[15] == 6) imgstr = '<img src="/gfx/p8b_vox.png" width=20>'; // title, author s += ` </div> <div style="max-height:90px; margin-left:8px; display:table"> <div style="padding-bottom:3px; padding-right:4px"> <a href="?pid=`+dat[0]+`#p"> <font style="color:#eee; font-size:10pt">`+dat[22]+`</font> </a> </div> <div style="float:left; margin-bottom:4px; margin-right:8px">`+imgstr+`</div> <a href="/bbs/?uid=`+dat[7]+`&mode=carts"> <font style="color:#bbb; font-size:8pt;">by `+dat[8]+`</font> </a> </div> </div> </div> </div> `; // buttons s = s + ` <div style="display:flex; color:#222;"> `; //s = s + make_stat_box("comments", -1, -1, dat[0], "#ddd"); // like and fav are for parent post, not cart id //s = s + '<div style="display:inline-block">'; if (false) { s = s + make_stat_box("cc", -1, (set_flags & 8) ? 1 : 0, dat[0], bgcol, 2); s = s + make_stat_box("fav", -1, (set_flags & 0x2) ? 1 : 0, dat[0], bgcol, 2); s = s + make_stat_box("like", dat[12], (set_flags & 0x1) ? 1 : 0, dat[0], bgcol, 2); } //s = s + '</div>'; s = s + ` </div></div> `; s = s + ` </div> `; return s; } function inject_cart_data() { /* var el = document.getElementById('cart_data_script'); if (el) { eval(el.innerHTML); } */ console.log('@ injecting ' + pdat.length); for (var i = 0; i < pdat.length; i++) { // generate inner html var dat = pdat[i]; set_flags = updat[i]; el = document.getElementById('pdat_'+dat[0]); if (el) { if (pdat[i][19] & 2) // show as cart el.innerHTML = generate_cart_preview(pdat[i], updat[i]); else el.innerHTML = generate_thread_preview(pdat[i], updat[i]); } else { // no placeholder console.log('error: no placeholder for pdat_'+dat[0]); } } } //------------------------------------------ window.onhashchange=load_hash_location; //inject_cart_data(); //------------------------------------------ </script></div></div> <div id="lex_footer" style=" width:100%; min-height:300px; background-color:#111; "><div style="padding:20px"> <center><div style="display:table"> <div style="display:block; margin-bottom:10px;"> <center> <a style="margin:8px" href="/info.php">About</a> | <a style="margin:8px" href="/cdn-cgi/l/email-protection#95fdf0ecd5f9f0edf4f9faf3f3f9f0bbf6faf8">Contact</a> | <a style="margin:8px" href="/games.php?page=updates">Updates</a> | <a style="margin:8px" href="/info.php?page=tos">Terms of Use</a> | <a style="margin:8px" href="/picotron.php">Picotron</a> </center> </div> <center> <div style="display:table; margin-bottom:10px"> <div style="font-size:10pt; display:flex; align-items:center"> Follow Lexaloffle: &nbsp <a href="https://mastodon.social/@zep" class=social_button><img class=pixel_perfect src="/gfx/so_mastodon.png" width=32 height=32 border=0></a> &nbsp <a href="https://twitter.com/lexaloffle" class=social_button><img class=pixel_perfect src="/gfx/so_twitter.png" width=32 height=32 border=0></a> &nbsp <a href="https://www.youtube.com/user/lexaloffletv" class=social_button> <img class=pixel_perfect src="/gfx/so_youtube.png" width=32 height=32 border=0></a> &nbsp <a href="https://www.lexaloffle.com/bbs/feed.php" class=social_button><img class=pixel_perfect src="/gfx/so_rss.png" width=32 height=32></a> </div> </div> <div style="color:#777;font-size:8pt;"> Generated 2025-03-14 17:25:36 | 0.056s | Q:164 <div id=cache_info style="display:inline;"> </div> </div> </center> </div></center> </div></div> </div> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script></body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10