Hi, i'm sim1222 aka こけっち.
I participated osu!gaming CTF 2024 with Team RJ45
5 hours before the end.
The beatmap has sliders with characters stroked at the last combo.
Nomally, the sliders appears out of screen and aren't visible.
1066,101,79722,2,0,P|1147:235|1105:58,1,480.000018310548
1329,81,80772,2,0,B|1186:130|1313:188|1389:283|1221:280,1,300.000011444092
1177,177,81447,2,0,P|1221:284|1291:173,1,300.000011444092
10304,10035,81672,2,0,B|10263:10114|10217:10122|10217:10122|10289:10166|10304:10241|10357:10226,1,300.000011444092
10360,10082,82272,2,0,B|10186:10113|10465:10192|10296:10241,1,240.000009155274
10209,10078,82872,2,0,B|10196:10281|10196:10281|10297:10284,1,300.000011444092
10166,10088,83697,2,0,B|10317:10089|10231:10091|10231:10091|10226:10279|10226:10279|10155:10279|10295:10283,1,420.000016021729
10150,10101,84522,2,0,B|10151:10295|10151:10295|10293:10245|10184:10093,1,420.000016021729
10331,10098,85272,2,0,B|10203:10101|10203:10101|10202:10219|10202:10219|10265:10220|10265:10220|10201:10218|10201:10218|10203:10329|10204:10329|10348:10316,1,600.000022888184
10206,10100,86472,2,0,B|10432:10124|10211:10184|10196:10215|10196:10215|10196:10328|10196:10328|10197:10212|10197:10212|10336:10341|10336:10340,1,660.000025177003
10214,10093,87672,2,0,B|10335:10093|10335:10093|10211:10223|10211:10223|10366:10223|10365:10223|10361:10226,1,420.000016021729
10178,10081,88572,2,0,B|10271:10112|10271:10186|10271:10186|10330:10214|10330:10214|10265:10267|10265:10267|10247:10348|10176:10341|10176:10342,1,420.000016021729
I wrote a script that draws an image of a slider stroke.
import { BeatmapDecoder } from "npm:osu-parsers";
import { createCanvas } from "https://deno.land/x/canvas@v1.4.1/mod.ts";
import { mapData } from "./data.ts";
const decoder = new BeatmapDecoder();
const beatmap = decoder.decodeFromString(mapData, {
parseHitObjects: true,
});
const tiledCanvas = createCanvas(2000, 2000);
const tiledCtx = tiledCanvas.getContext("2d");
for (const hitObject of beatmap.hitObjects) {
if (
(hitObject.hitType == 2 && hitObject.startX > 1000) ||
hitObject.startY > 1000
) {
const canvas = createCanvas(2000, 2000);
const ctx = canvas.getContext("2d");
ctx.fillStyle = "white";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.moveTo(500 + hitObject.startX / 10, 500 + hitObject.startY / 10);
const startX = 500 + hitObject.startX / 10;
const startY = 500 + hitObject.startY / 10;
console.log(`startX: ${startX}, startY: ${startY}`);
for (const point of hitObject.path._controlPoints) {
ctx.lineTo(startX + point.position.x, startY + point.position.y);
console.log(
`x: ${startX + point.position.x}, y: ${startY + point.position.y}`
);
}
ctx.lineWidth = 10;
ctx.strokeStyle = "black";
ctx.stroke();
const buf = canvas.toBuffer("image/png");
await Deno.writeFile(`${hitObject.startTime}.png`, buf);
}
}
Learn More →
This can be read like osu{SLIDERZ}
Open beatmap in osu!lazer
Enter to edit mode
Learn More →
Select last combo notes
Learn More →
Drag all notes to center of screen
Learn More →
Play
video
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up