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-30 20:50:30"; 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/voxhead800.png') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> <a href="/voxatron.php"> <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  <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><a href=/voxatron.php ><div class="linkybutton">Voxatron</div></a><a href=/voxatron.php?page=faq ><div class="linkybutton">FAQ</div></a><a href=/voxatron.php?page=resources ><div class="linkybutton">Resources</div></a><a href=/voxatron.php?page=dev ><div class="linkybutton">Devmap</div></a><a href=/voxatron.php?page=submit ><div class="linkybutton">Submit</div></a><a href=/bbs/?cat=6#sub=2 ><div class="linkybutton" style="background-color : #a0a0a0; color:#fff">Forum</div></a><a href=/bbs/?cat=6&carts_tab=1&#sub=2&mode=carts ><div class="linkybutton">Carts</div></a></div></div> <div class = "topmenu_div" id = "banner" style=" margin:0px; top:0px; background-color:#111; width:100%; height:25vh; background:url('/gfx/voxhead800.png') no-repeat center; -webkit-background-size:cover; -moz-background-size:cover; -o-background-size:cover; background-size:cover; "> <a href="/voxatron.php"> <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"><a href=/voxatron.php ><div class="linkybutton">Voxatron</div></a><a href=/voxatron.php?page=faq ><div class="linkybutton">FAQ</div></a><a href=/voxatron.php?page=resources ><div class="linkybutton">Resources</div></a><a href=/voxatron.php?page=dev ><div class="linkybutton">Devmap</div></a><a href=/voxatron.php?page=submit ><div class="linkybutton">Submit</div></a><a href=/bbs/?cat=6#sub=2 ><div class="linkybutton" style="background-color : #a0a0a0; color:#fff">Forum</div></a><a href=/bbs/?cat=6&carts_tab=1&#sub=2&mode=carts ><div class="linkybutton">Carts</div></a></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  <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/?cat=6"> </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 = 6; 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 class="desktop_div"> <a href="/bbs/?"> <div style="color:#888; float:left; display:table; background-color:#333;padding:6px">BBS</div> </a> <div style="color:#666; float:left; display:table; padding:6px"> > </div> </div> <div style="color:#fab; float:left; display:table; padding:6px">Voxatron</div></div></div><div><div style="display:table; width:100%;"><div class=desktop_div style="display;table; float:right; margin-right:20px; margin-bottom:10px; margin-left:10px; margin-top:-40px"><div style="background-color:; display:table; padding-top:16px; padding-bottom:16px"><div style="display:table"><div style="float:left; padding:4px; color:#f8a;">Cartridges:</div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=2">Releases</a> | </div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=3">Work in Progress</a></div></div><div style="display:table"><div style="float:left; padding:4px; color:#f8a;">Community:</div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=4">Collaboration</a> | </div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=8">Jam</a> | </div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=7">Blogs</a></div></div><div style="display:table"></div><div style="display:table"><div style="float:left; padding:4px; color:#f8a;">Snippet Library:</div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=9">Code</a> | </div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=17">VOBs</a> | </div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=15">SFX</a></div></div><div style="float:left; padding:4px; color:#f8a;">Support:</div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=12">Tutorials</a> | </div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=5">Workshop</a> | </div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=1">Chat</a> | </div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=6">Bugs</a></div></div></div><div class=mobile_div style="display;table; margin-bottom:10px"><div style="background-color:; display:table; padding-top:16px; padding-bottom:16px"><div style="display:table"><div style="float:left; padding:4px; color:#f8a;">Cartridges:</div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=2">Releases</a> | </div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=3">Work in Progress</a></div></div><div style="display:table"><div style="float:left; padding:4px; color:#f8a;">Community:</div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=4">Collaboration</a> | </div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=8">Jam</a> | </div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=7">Blogs</a></div></div><div style="display:table"></div><div style="display:table"><div style="float:left; padding:4px; color:#f8a;">Snippet Library:</div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=9">Code</a> | </div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=17">VOBs</a> | </div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=15">SFX</a></div></div><div style="float:left; padding:4px; color:#f8a;">Support:</div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=12">Tutorials</a> | </div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=5">Workshop</a> | </div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=1">Chat</a> | </div><div style="float:left; padding:4px; color:#fff;"><a style="color:#aaa" href="/bbs/?cat=6#sub=6">Bugs</a></div></div></div><div style="padding:8px; display:block; line-height: 1.4;"> Main forum index for the volumetric fantasy console <a href="/voxatron.php"><b>Voxatron</b></a>. </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&cat=6 ><div class="linkybutton_lil" ><center>></center></div></a><div style="float: left; padding:6px"></div><a href=?sub=0&cat=6&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&cat=6 ><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&cat=6 ><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&cat=6&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_162963" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=147578" style="padding:20px; font-size:12pt; display:block"> Fixed SDL2 controller mapping for DragonRise Inc. Generic USB Joystick</a> </div> <div id="pdat_142083" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=140404" style="padding:20px; font-size:12pt; display:block"> shoot_game</a> </div> <div id="pdat_70825" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=36205" style="padding:20px; font-size:12pt; display:block"> Pico Hero</a> </div> <div id="pdat_159696" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=146252" style="padding:20px; font-size:12pt; display:block"> Untitled</a> </div> <div id="pdat_158914" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=145974" style="padding:20px; font-size:12pt; display:block"> Picotron sound bug</a> </div> <div id="pdat_157120" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=145242" style="padding:20px; font-size:12pt; display:block"> MouselostWTF</a> </div> <div id="pdat_156870" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=145139" style="padding:20px; font-size:12pt; display:block"> Leapscaper</a> </div> <div id="pdat_156866" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=145137" style="padding:20px; font-size:12pt; display:block"> Robo Explorer</a> </div> <div id="pdat_156854" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=145130" style="padding:20px; font-size:12pt; display:block"> abandoned</a> </div> <div id="pdat_156781" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=145101" style="padding:20px; font-size:12pt; display:block"> forgottenv2</a> </div> <div id="pdat_156624" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=145035" style="padding:20px; font-size:12pt; display:block"> 3.6 Worse than 3.58?</a> </div> <div id="pdat_156488" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=144994" style="padding:20px; font-size:12pt; display:block"> graveyardgame002</a> </div> <div id="pdat_156426" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=144978" style="padding:20px; font-size:12pt; display:block"> Abandoned Prototype</a> </div> <div id="pdat_86444" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=41165" style="padding:20px; font-size:12pt; display:block"> Untitled Post Game</a> </div> <div id="pdat_20725" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=3370" style="padding:20px; font-size:12pt; display:block"> Voxatron on ARM (& CHIP)</a> </div> <div id="pdat_133504" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=53869" style="padding:20px; font-size:12pt; display:block"> idk, just falling balls</a> </div> <div id="pdat_60800" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=32887" style="padding:20px; font-size:12pt; display:block"> The Vanishing Cheese</a> </div> <div id="pdat_152181" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=143480" style="padding:20px; font-size:12pt; display:block"> badgameverybad</a> </div> <div id="pdat_153240" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=143863" style="padding:20px; font-size:12pt; display:block"> Windows 11 - Error 0xc000007b</a> </div> <div id="pdat_9355" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=1726" style="padding:20px; font-size:12pt; display:block"> Voxel edges highlights</a> </div> <div id="pdat_152736" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=143696" style="padding:20px; font-size:12pt; display:block"> Untitled</a> </div> <div id="pdat_62627" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=33545" style="padding:20px; font-size:12pt; display:block"> School Mayhem 2</a> </div> <div id="pdat_132505" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=53569" style="padding:20px; font-size:12pt; display:block"> Snowy Dog</a> </div> <div id="pdat_69784" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=35884" style="padding:20px; font-size:12pt; display:block"> Simple 3D Boids v1.0</a> </div> <div id="pdat_12714" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=2276" style="padding:20px; font-size:12pt; display:block"> Can a Username be changed?</a> </div> <div id="pdat_9047" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=1668" style="padding:20px; font-size:12pt; display:block"> voxatron memes</a> </div> <div id="pdat_146719" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=141749" style="padding:20px; font-size:12pt; display:block"> Does Voxatron currently have lua scripting?</a> </div> <div id="pdat_134241" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=54089" style="padding:20px; font-size:12pt; display:block"> voxatron displaying wrong on a new Mac</a> </div> <div id="pdat_142892" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=140630" style="padding:20px; font-size:12pt; display:block"> How do you allow someone to select from more than 5 characters?</a> </div> <div id="pdat_141672" class="thread_preview"> <div style="background-color:#666; width:64px; height:64px; float:left; margin:8px; margin-right:16px"></div> <a href="?tid=140259" style="padding:20px; font-size:12pt; display:block"> firstdownfight</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=[ ['162963', 147578, `Fixed SDL2 controller mapping for DragonRise Inc. Generic USB Joystick`,"/bimg/pi/pi11.png",96,48,"2025-02-27 16:10:52",115307,"Oflameo","2025-02-27 16:10:52",115307,"Oflameo",0,1,0,6,6,'0',["sdl2",],0,16,,``,``], ['142083', 140404, `shoot_game`,"/bbs/thumbs/vox_shoot_game-0.png",96,48,"2024-02-27 22:00:32",9672,"molenHD","2025-01-19 03:20:04",115948,"slash",4,3,0,6,2,'0',[],0,17,,``,``], ['70825', 36205, `Pico Hero`,"/bbs/thumbs/pico8_bruh123-1.png",96,64,"2019-12-10 08:18:14",41446,"Sweaty","2024-12-27 22:24:50",115070,"ryan_202710",4,4,0,6,3,'0',["rhythm","wip","school",],0,21,,``,``], ['159696', 146252, `Untitled`,"Verita444",96,48,"2024-12-23 13:09:05",114864,"Verita444","2024-12-23 13:09:05",114864,"Verita444",1,1,0,6,3,'0',[],0,16,,``,``], ['158914', 145974, `Picotron sound bug`,"/media/113980/does-she-know-how-to-make-a-grill-cheese-v0-fcsqespmw11a1.png",96,48,"2024-12-08 02:34:16",113980,"EnderActually","2024-12-08 02:34:16",113980,"EnderActually",1,1,0,6,17,'0',[],0,16,,``,``], ['157120', 145242, `MouselostWTF`,"/bbs/thumbs/vox_kekugukaho-0.png",96,48,"2024-11-09 11:44:33",111596,"inkcarison","2024-11-09 11:44:33",111596,"inkcarison",0,1,0,6,2,'0',["gamejams",],0,21,,``,``], ['156870', 145139, `Leapscaper`,"/bbs/thumbs/vox_bnezezka-0.png",96,48,"2024-11-05 02:03:34",111184,"grace_mo","2024-11-05 02:03:34",111184,"grace_mo",0,1,0,6,2,'0',[],0,16,,``,``], ['156866', 145137, `Robo Explorer`,"/bbs/thumbs/vox_yepefagaha-0.png",96,48,"2024-11-05 00:47:52",111181,"ds165423","2024-11-05 00:47:52",111181,"ds165423",0,1,0,6,2,'0',[],0,21,,``,``], ['156854', 145130, `abandoned`,"/bbs/thumbs/vox_abandoned-1.png",96,48,"2024-11-04 19:18:10",111164,"triceraoops","2024-11-04 19:27:41",111164,"triceraoops",1,1,0,6,2,'0',[],0,20,,``,``], ['156781', 145101, `forgottenv2`,"/bbs/thumbs/vox_forgottenv2-0.png",96,48,"2024-11-03 18:18:56",110554,"akelleyJ123","2024-11-03 18:18:56",110554,"akelleyJ123",0,1,0,6,2,'0',[],0,20,,``,``], ['156624', 145035, `3.6 Worse than 3.58?`,"/bimg/pi/pi23.png",96,48,"2024-10-31 20:05:34",58487,"cousinred","2024-10-31 20:05:34",58487,"cousinred",1,1,0,6,6,'0',[],0,16,,``,``], ['156488', 144994, `graveyardgame002`,"/bbs/thumbs/vox_graveyardgame002-1.png",96,48,"2024-10-29 18:46:42",110633,"callilu00","2024-10-29 18:46:42",110633,"callilu00",0,1,0,6,2,'0',[],0,20,,``,``], ['156426', 144978, `Abandoned Prototype`,"/bbs/thumbs/vox_jogafasete-0.png",96,48,"2024-10-28 19:12:14",110554,"akelleyJ123","2024-10-28 19:12:14",110554,"akelleyJ123",0,1,0,6,2,'0',[],0,21,,``,``], ['86444', 41165, `Untitled Post Game`,"/bbs/thumbs/vox_gooseontheloose-0.png",96,48,"2021-01-13 21:18:18",50408,"SpaceChicken","2024-10-16 17:41:12",106459,"ShadesPlays",41,11,0,6,2,'0',["goose-on-the-loose",],0,21,,``,``], ['20725', 3370, `Voxatron on ARM (& CHIP)`,"/bimg/pi/pi14.png",96,48,"2016-05-17 17:00:01",13038,"GreatMagicalHat","2024-10-13 00:23:49",101176,"NazarFloppaLovesP8",6,16,0,6,6,'0',[],0,0,,``,``], ['133504', 53869, `idk, just falling balls`,"/bbs/thumbs/pico8_wapgroje-1.png",96,64,"2023-08-25 11:38:00",80848,"The lime","2024-10-13 00:20:15",101176,"NazarFloppaLovesP8",1,3,0,6,3,'0',[],0,17,,``,``], ['60800', 32887, `The Vanishing Cheese`,"/bbs/thumbs/vox_ntuhuzuzu-0.png",96,48,"2019-01-13 21:24:29",25899,"SkyBerron","2024-09-28 18:26:00",106106,"DVD STUDIOS",2,2,0,6,2,'0',["learning","voxatron","lua","scripts",],0,21,,``,``], ['152181', 143480, `badgameverybad`,"/bbs/thumbs/pico8_badgameverybad-0.png",96,64,"2024-08-05 11:07:42",102714,"alij","2024-09-18 01:10:01",106106,"DVD STUDIOS",1,4,0,6,12,'0',["bad",],0,17,,``,``], ['153240', 143863, `Windows 11 - Error 0xc000007b`,"/bimg/pi/pi18.png",96,48,"2024-08-26 01:25:04",104242,"st0ker","2024-08-26 01:25:04",104242,"st0ker",1,1,0,6,6,'0',[],0,16,,``,``], ['9355', 1726, `Voxel edges highlights`,"https://www.lexaloffle.com/bbs/files/9205/bastien.png",96,48,"2014-11-28 06:07:33",9205,"Grungi","2024-08-16 18:30:58",54271,"Toxel",0,6,0,6,1,'0',[],0,16,,``,``], ['152736', 143696, `Untitled`,"/bimg/pi/pi1.png",96,48,"2024-08-16 10:16:29",25697,"eldwood","2024-08-16 10:16:29",25697,"eldwood",0,1,0,6,6,'0',[],0,16,,``,``], ['62627', 33545, `School Mayhem 2`,"/bbs/thumbs/vox_schoolmayhem-7.png",96,48,"2019-03-06 19:20:34",20636,"TechGeek_YT","2024-08-13 17:07:05",20636,"TechGeek_YT",6,9,0,6,2,'0',[],0,21,,``,``], ['132505', 53569, `Snowy Dog`,"/bbs/thumbs/vox_snowy_dog-0.png",96,48,"2023-07-28 19:47:42",30851,"dms_students","2024-07-26 02:54:11",66434,"Alex K.",11,6,0,6,2,'0',["digital","monkey","school","snow",],0,21,,``,``], ['69784', 35884, `Simple 3D Boids v1.0`,"/bbs/thumbs/vox_mb_3dboids-0.png",96,48,"2019-11-10 20:30:18",10198,"MBoffin","2024-07-15 18:13:27",66434,"Alex K.",4,2,0,6,2,'0',[],0,21,,``,``], ['12714', 2276, `Can a Username be changed?`,"https://www.lexaloffle.com/bbs/files/8864/Minotaur.png",96,48,"2015-08-16 18:09:00",8864,"Scotty","2024-06-12 15:52:47",11273,"Svetlana",2,14,0,6,6,'0',[],1,8,,``,``], ['9047', 1668, `voxatron memes`,"https://www.lexaloffle.com/bbs/files/7379/eG04MjdjMTI=_l.jpgfiles/7379/download.jpgfiles/7379/fractal.jpgfiles/7379/fractal-tree-300x300.pngfiles/7379/download.jpgfiles/7379/fractal-tree-300x300.pngfiles/7379/fractal.jpgfiles/7379/download.jpg",96,48,"2014-08-31 18:55:15",7379,"jaw2233","2024-05-25 19:56:37",75008,"allmightythunder",1,2,0,6,1,'0',["meme","funny","memes",],0,16,,``,``], ['146719', 141749, `Does Voxatron currently have lua scripting?`,"/media/89120/6_maxresdefault (1).jpg",96,48,"2024-04-15 22:01:44",89120,"Mantismal","2024-04-23 15:43:23",41031,"merwok",0,3,0,6,3,'0',[],0,16,,``,``], ['134241', 54089, `voxatron displaying wrong on a new Mac`,"/bimg/pi/pi0.png",96,48,"2023-09-12 22:42:32",2944,"digitalmonkey","2024-04-17 09:40:42",94786,"bambus",2,8,0,6,6,'0',[],0,16,,``,``], ['142892', 140630, `How do you allow someone to select from more than 5 characters?`,"/bimg/pi/pi28.png",96,48,"2024-03-14 02:16:53",24348,"dalinian","2024-03-14 02:16:53",24348,"dalinian",0,1,0,6,3,'0',[],0,16,,``,``], ['141672', 140259, `firstdownfight`,"/bbs/thumbs/vox_firstdownfight-0.png",96,48,"2024-02-20 02:34:25",50078,"roroyobert","2024-02-20 02:34:25",50078,"roroyobert",1,1,0,6,2,'0',["football","bowl",],0,17,,``,``], ]; var updat=[ ]; search_url_base = "?sub=0&cat=6&search="; tag_url_base = "/bbs/?cat=6#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:   <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>   <a href="https://bsky.app/profile/lexaloffle.bsky.social" class=social_button><img class=pixel_perfect src="/gfx/so_bluesky.png" width=32 height=32 border=0></a>   <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>   <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-30 20:50:30 | 0.073s | Q:150 <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>