수정된 게임 (로더):
원본 게임:
액션스크립트 2.0 코드 (1 프레임) - 중요한 부분 & 전체 골격만:
COL_WHIT = 1;
COL_BLUE = 2;
COL_GREE = 3;
COL_YELL = 4;
COL_PURP = 5;
COL_RED = 6;
COL_ORAN = 7;
COL_BLAC = 8;
pballs = [
[] /* level 0 */,
[COL_BLUE, COL_YELL, COL_GREE, COL_RED, COL_RED, COL_GREE, COL_YELL, COL_BLUE] /* level 1 */,
[COL_BLAC, COL_BLAC] /* level 2 */,
[COL_RED, COL_BLUE, COL_BLUE, COL_RED, COL_RED, COL_BLUE, COL_BLUE, COL_RED, COL_RED, COL_GREE, COL_GREE, COL_GREE, COL_GREE] /* level 3 */
];
loadMovieNum("puzzle-bobble.swf", 1);
var widthRate = _level1._width / Stage.width,
heightRate = _level1._height / Stage.height;
Stage.addListener({onResize: function() {
_level1._width = Stage.width * _root.widthRate;
_level1._height = Stage.height * _root.heightRate;
}});
_root.onEnterFrame = function() {
if(_level1 && _level1._root) {
_level1._root.watch("level1", function(prop, oldVal, newVal, userData) {
// hook getNextBall
_level1._root.getNextBall = function() {
...
};
// hook youReDead
var origYouReDead = _level1._root.youReDead;
_level1._root.youReDead = function() {
...
if(origYouReDead) origYouReDead();
};
return newVal;
});
// hook onEnterFrame
if(!_level1._root.guideline_mc) _level1._root.createEmptyMovieClip("guideline_mc", 600000);
_level1._root.onEnterFrame = function() {
if(_level1._root.cadre && _level1._root.cadre.onEnterFrame) {
_level1._root.render();
var c = _level1._root.cOords;
_level1._root.guideline_mc.clear();
_level1._root.guideline_mc.lineStyle(1, 0, 45);
_level1._root.guideline_mc.moveTo(c[0][0] + _level1._root.cadre._x, c[0][1] + _level1._root.cadre._y);
for(i = 1; i < c.length; i++) {
_level1._root.guideline_mc.lineTo(c[i][0] + _level1._root.cadre._x, c[i][1] + _level1._root.cadre._y);
}
}
};
delete _root.onEnterFrame;
}
};
핵심은 loadMovieNum() 함수로 다른 무비를 불러온 뒤
_levelX 를 이용해 접근해 제어하는 것.
보면 프레임 액션이 실행되기 전에 내 액션을 실행시키기 위해 Object.watch()를 이용해
프레임 액션에서 설정하는 변수를 watch한 것도 볼 수 있음. :)
수정한 부분은. 스테이지 1~3에서 NEXT가 나오는 패턴을 랜덤이 아니라 정해진 패턴대로 나오게 한 것 & 지시선 추가.
부지런해~
아 내가 만든 짤 봤음?
홀리랜드 장면으로 짤 만듦.
귀엽다
programmer // 봤죠 :p 웃기던데욬ㅋㅋㅋㅋㅋ 카톡에서 치신 드립을 짤로 ㅋㅋㅋㅋㅋ
programmer // 봤죠 :p 웃기던데욬ㅋㅋㅋㅋㅋ 카톡에서 치신 드립을 짤로 ㅋㅋㅋㅋㅋ
programmer // 봤죠 :p 웃기던데욬ㅋㅋㅋㅋㅋ 카톡에서 치신 드립을 짤로 ㅋㅋㅋㅋㅋ
왜 3탄부터 못하지
힝 또 네트워크 오류 ㅠ
ㄴㅁㄴㅁㄴㅁ // 4탄부터 공 안 나오는데 버그임. 내가 로더 코드 상으로는 내가 정의해 놓은 공 패턴이 없으면 원래 코드대로 랜덤하게 나오도록 짰는데 length 체크 부분에 버그 있는 듯. 그 부분은 미처 내가 체크 못했던 버그인데 금방 고치지만 귀찮아서 안 고침. 물어봤는데 괜찮다고 해서 ㅋㅋ
ㅋㅋㅋ
로더 트릭은 이미 초5 때부터 알았고 당시 이 원리 이용해서 플래시 티서치라는 툴도 만들었었음. 프로그램이랑 연동해서 대상 플래시의 내부 변수들을 조사할 수 있고 마음대로 수정도 할 수 있고 고정도 시킬 수 있는. 플래시 게임 핵 툴 ㅋㅋㅋ
이 짓을 나이 먹고 한 번 더 하니 오랜만에 꿀잼 :)
저도 리버싱좀 알려주세요
엔터 누르고 시작과 동시에 하고 있는 자신을 발견했다...흠칫!