thảo luận Hội quán vOzer và PKL

  • Người tạo chủ đề Người tạo chủ đề Sonah
  • Ngày bắt đầu Ngày bắt đầu
versys x300, xác nhẹ, máy vừa phải, sẵn căm đùm niềng, giá dễ chơi, xài chung đa số đồ máy với ninja/z 300 :sexy_girl:
cứ tưởng tên viết tắt là v300, trc đi thử rồi, cảm giác đi road hơi thọt, mà sao k lên thành x400 cho chung dòng máy mới nhỉ, thấy bỏ hết z với n 300 rồi

AT của bác bản base là cũng k có conering light k nhỉ
 
Đệt kiếm ra rồi, sau 2 năm kiếm mòn mỏi, xr650l thanh lí, muốn khóc vl mấy thím ơi, tuần sau em bay ra hn bế về đây :cry:
1686799026192.png
 
Gãy cổ, build lởm, máy yếu :shame:
Con tốt nhất phân khúc là x300 ấy :shame:
Hima có đợt đầu hàn ngu bị phốt thôi thím, giờ ngon rồi, giá + dáng cũng dễ thở :D Ai thích hiện đại trẻ trung thì múc Versys X300 còn thích classic thì chơi RE Hima là đẹp.
 
lul cũng hơi xa, có ghé HN mà cuối tuần ra làm tí coffee nhé. Mà nói mới nhớ đấy hay là t kiếm mấy con DRZ400 cho tây thuê xong về build lại nhỉ ? có ổn không
Đang gom xèng đã, drz ko có cho tây thuê đâu, con này xưa là thanh lí sg xong thiếu giấy tờ ko nhập đc về hn nên nằm bãi, bọn flamingo này bế về cho tây thuê :D
 
Đang gom xèng đã, drz ko có cho tây thuê đâu, con này xưa là thanh lí sg xong thiếu giấy tờ ko nhập đc về hn nên nằm bãi, bọn flamingo này bế về cho tây thuê :D
nọ search thấy mấy bên tour tây bắc các thứ vẫn có này, xe này mà dám cho thuê chắc cũng phải có giấy tờ đoàng hoàng chứ nhỉ
 
nọ search thấy mấy bên tour tây bắc các thứ vẫn có này, xe này mà dám cho thuê chắc cũng phải có giấy tờ đoàng hoàng chứ nhỉ
Thì tlhq đấy, nó đấy chứ đâu, xác định mua vì bộ giấy mà, ko nhập đc hn thôi chứ nhập đà nẵng vẫn đc , mừng vl :sexy_girl:
 
Thì tlhq đấy, nó đấy chứ đâu, xác định mua vì bộ giấy mà, ko nhập đc hn thôi chứ nhập đà nẵng vẫn đc , mừng vl :sexy_girl:
thế để xem có con nào không giá mà hợp lý t cũng múc về build lại stock thôi cũng được. Fen ra HN tầm này chuẩn bị sức khỏe nhé thời tiết đang như l ấy :D
 
/* VOZ — in-thread ad spread, client-side. * * Lives in the Siropu Ads Manager unit on `thread_view_below_messages` (the ad below the * last post), pasted after that unit's own and display() call. This file is the * source of truth; the ACP copy is a paste of it. Ads Manager's user/device/geo criteria * on that unit gate the whole thing. * * What it does: inserts up to `max` ad slots between posts, spaced by screen height rather * than post count. Anchors are post 1 and the first unread post (XF marks it `is-unread`; * it wins over post 1 when the two are closer than a gap) — each only if at least one gap * above the ad below the last post. Every stretch between anchors, and down to that bottom * ad, then gets as many slots as fit at the gap, spread evenly, each on the nearest post * boundary that keeps the gap, up to the cap — stretches below the unread post take their * share first (the reader scrolls down from there). Slot ids, gap, reserved size and backup * are per breakpoint (desktop / mobile). Slots are inserted as empty reserved boxes * (`voz-adSlot`, see extra.less) before PubPower fills them, so nothing shifts when an ad * arrives; the same markup gives them the backup, the hide-on-load and the fit rules. * * Re-runnable: window.vozThreadSpread() removes what it inserted and recomputes. */ (function () { var CONFIG = { max: 3, mobileMaxWidth: 650, label: 'Quảng cáo', // Per breakpoint: PubPower slot ids, one per placement in page order (kept per // device so each device's placements report under their own ids); the minimum // distance between ads (and from the last one to the bottom ad) as viewport heights, // or a string like '1200px'; the reserved size (voz-adSlot--… in extra.less); and the // backup shown until an ad has loaded. The backup keeps class voz-adSlot-backup // (hide-on-load, click-through when unfilled); --raw drops the style's own box so the // markup inside shows as written. desktop: { slots: ['pw_44325', 'pw_44329', 'pw_44331'], gap: 2, sizeClass: 'voz-adSlot--leaderboard', backupHtml: '' + '
AD · 970×90
' + '
' }, mobile: { slots: ['pw_44325', 'pw_44329', 'pw_44331'], gap: 3, sizeClass: 'voz-adSlot--rectangleLarge', backupHtml: '' + '
AD · 336×280
' + '
' } }; var MARK = 'data-voz-spread'; var script = document.currentScript; function pageTop(el) { return el.getBoundingClientRect().top + window.pageYOffset; } function pageBottom(el) { return el.getBoundingClientRect().bottom + window.pageYOffset; } function breakpoint() { return window.matchMedia('(max-width: ' + CONFIG.mobileMaxWidth + 'px)').matches ? CONFIG.mobile : CONFIG.desktop; } function gapPx() { var g = breakpoint().gap; return typeof g === 'string' ? parseFloat(g) : g * window.innerHeight; } function bottomAd() { var el = script; while (el && !(el.classList && el.classList.contains('voz-adSlot'))) el = el.previousElementSibling; return el; } function unit(slotId) { var bp = breakpoint(); var wrap = document.createElement('div'); wrap.className = 'voz-adUnit'; wrap.setAttribute(MARK, ''); wrap.innerHTML = (CONFIG.label ? '
' + CONFIG.label + '
' : '') + '
' + bp.backupHtml + '' + '
'; return wrap; } function run() { var old = document.querySelectorAll('[' + MARK + ']'); for (var k = 0; k < old.length; k++) old[k].parentNode.removeChild(old[k]); var posts = Array.prototype.slice.call(document.querySelectorAll('.block--messages article.message--post')); if (posts.length < 2) return []; var gap = gapPx(); var bottom = bottomAd(); var bottomY = bottom ? pageTop(bottom) : pageBottom(posts[posts.length - 1]); var chosen = []; function fits(y) { if (bottomY - y < gap) return false; for (var i = 0; i < chosen.length; i++) if (Math.abs(chosen[i].y - y) < gap) return false; return true; } function take(post) { var y = pageBottom(post); if (!fits(y)) return false; chosen.push({ post: post, y: y }); return true; } var unread = -1; for (var i = 0; i < posts.length; i++) if (posts[i].classList.contains('is-unread')) { unread = i; break; } // Anchors: the unread post (if a gap above the bottom ad), then post 1 (if a gap // from both). Every stretch between consecutive anchors and the bottom ad then gets // as many slots as fit at the gap, spread evenly, each on the nearest post boundary. if (unread >= 0) take(posts[unread]); take(posts[0]); chosen.sort(function (a, b) { return a.y - b.y; }); var uy = unread >= 0 ? pageBottom(posts[unread]) : -1; var bounds = chosen.map(function (c) { return c.y; }).concat([bottomY]); var segments = []; for (var s = 0; s + 1 < bounds.length; s++) segments.push({ a: bounds[s], b: bounds[s + 1] }); // Stretches below the unread post take their share of the cap first (the reader // scrolls down from there), then the ones above it, top-down. segments.sort(function (x, y) { return (x.a >= uy ? 0 : 1) - (y.a >= uy ? 0 : 1) || x.a - y.a; }); for (var t = 0; t < segments.length; t++) { var a = segments[t].a, b = segments[t].b; var n = Math.min(Math.floor((b - a) / gap) - 1, CONFIG.max - chosen.length); for (var j = 1; j <= n; j++) { var target = a + j * (b - a) / (n + 1), best = null, bestD = Infinity; for (var q = 0; q < posts.length; q++) { var yq = pageBottom(posts[q]); if (yq <= a || yq >= b || !fits(yq)) continue; var d = Math.abs(yq - target); if (d < bestD) { bestD = d; best = posts[q]; } } if (best) take(best); } } chosen.sort(function (a, b) { return a.y - b.y; }); window.powerTag = window.powerTag || {}; var placed = []; var slots = breakpoint().slots; for (var p = 0; p < chosen.length; p++) { var id = slots[p % slots.length]; chosen[p].post.insertAdjacentElement('afterend', unit(id)); placed.push({ afterPost: posts.indexOf(chosen[p].post) + 1, slot: id }); (function (slotId) { (window.powerTag.Init = window.powerTag.Init || []).push(function () { window.powerAPITag.display(slotId); }); })(id); } return placed; } window.vozThreadSpread = run; run(); })();

Thống kê chủ đề

Ngày tạo
Sonah,
Người trả lời cuối
5136614,
Trả lời
14.769
Lượt xem
1.130.326
Quay lại
Lên đầu trang