EUD/오프셋

< EUD

틀:EUD 오프셋 모음

이 페이지는 스타크래프트의 EUD 맵메이커들을 위하여 EUD에 사용되는 오프셋을 모아놓은 페이지입니다. 이 문서에 존재하는 모든 오프셋은 1.16.1을 기준으로 작성되었습니다.

1 참고

  • 모든 오프셋은 조건부와 실행부의 장벽이 존재하지 않는다. EUD는 조건부 "어떠한 플레이어의 어떠한 유닛이 얼마나 죽은 경우"와 실행부 "어떠한 플레이어의 어떠한 유닛의 죽은 횟수 설정"으로 나뉘어진다. 모든 오프셋은 대부분 조건부로 사용시 EUD Enabler (EUD 활성화 플러그인) 없이 실행이 가능하나, 실행부로 사용시에는 EUD Enabler, 혹은 그것을 포함하는 런처로 실행하여야 한다.
  • 조건부로 사용시에는 해당 오프셋이 공유될 수 있는지를 확인하여야 한다. 공유되지 않는 오프셋을 조건부로 사용할 경우, 플레이어간에 서로 공유되는 실행부[1]를 사용하면 방 갈림 현상이 생기게 된다.[2]
  • 기본적으로 EUD에 사용되는 오프셋은 스타크래프트의 모든 데이터를 변경할 수 있다. 더욱 많은 오프셋에 대해서는 여기를 참고할 것.

2 오프셋 목록

2.1 유닛

2.2 무기

2.3 스프라이트 분류

2.3.1 체력칸 크기 조절

Memory OffsetObject IDByteValue
0x665E50스프라이트 ID - 1301체력칸 크기

2.4 구조오프셋 분류

2.4.1 유닛의 구조오프셋

공유 여부
O
Memory OffsetObject IDByteValue
아래 내용 참조-1유닛의 구조오프셋

기본적인 유닛의 데이터 ID를 인식하는 오프셋과는 달리 구조오프셋을 인식한다. 또한 이 오프셋은 공유 오프셋이므로 게임에 영향을 주는 실행부도 아주 잘 작동한다. 오브젝트 ID에는 아무것도 안들어가므로 밸류에 유닛의 구조오프셋을 그대로 넣기만 하면 된다.

플레이어별 오프셋이 존재한다.

플레이어오프셋
1P0x6284E8
2P0x628518
3P0x628548
4P0x628578
5P0x6285A8
6P0x6285D8
7P0x628608
8P0x628638

아래는 간단한 트리거 형식이다. n에 원하는 유닛의 구조오프셋을 10진수로 넣으면 된다.

SCMD
1PDeaths("Player 10", "Int:13490", Exactly, n);
2PDeaths("Player 10", "Int:13491", Exactly, n);
3PDeaths("Player 10", "Int:13492", Exactly, n);
4PDeaths("Player 10", "Int:13493", Exactly, n);
5PDeaths("Player 10", "Int:13494", Exactly, n);
6PDeaths("Player 10", "Int:13495", Exactly, n);
7PDeaths("Player 10", "Int:13496", Exactly, n);
8PDeaths("Player 10", "Int:13497", Exactly, n);
스타포지
플레이어확장 유닛확장 플레이어
1PDeaths(9, Exactly, n, 13490);Deaths(161889, Exactly, n, 0);
2PDeaths(9, Exactly, n, 13491);Deaths(161901, Exactly, n, 0);
3PDeaths(9, Exactly, n, 13492);Deaths(161913, Exactly, n, 0);
4PDeaths(9, Exactly, n, 13493);Deaths(161925, Exactly, n, 0);
5PDeaths(9, Exactly, n, 13494);Deaths(161937, Exactly, n, 0);
6PDeaths(9, Exactly, n, 13495);Deaths(161949, Exactly, n, 0);
7PDeaths(9, Exactly, n, 13496);Deaths(161961, Exactly, n, 0);
8PDeaths(9, Exactly, n, 13497);Deaths(161973, Exactly, n, 0);

2.5 특수 및 기타 분류

2.5.1 플레이어 ID 변경

Memory OffsetObject IDByteValue
아래 내용 참조-1텍스트

게임 내에서, 플레이어의 ID를 변경하는 오프셋이다.

플레이어별 오프셋이 존재한다. 아래는 기본 베이스 데스테이블이며, 이후 ID 변경은 아래 규칙을 따른다.

기본 베이스 테이블
1PSetDeaths(-11551, SetTo, 2, 0);
SetDeaths(-11551, Add, 256, 0);
SetDeaths(-11551, Add, 65536, 0);
2PSetDeaths(-11542, SetTo, 2, 0);
SetDeaths(-11542, Add, 256, 0);
SetDeaths(-11542, Add, 65536, 0);
3PSetDeaths(-11533, SetTo, 2, 0);
SetDeaths(-11533, Add, 256, 0);
SetDeaths(-11533, Add, 65536, 0);
4PSetDeaths(-11524, SetTo, 2, 0);
SetDeaths(-11524, Add, 256, 0);
SetDeaths(-11524, Add, 65536, 0);
5PSetDeaths(-11515, SetTo, 2, 0);
SetDeaths(-11515, Add, 256, 0);
SetDeaths(-11515, Add, 65536, 0);
6PSetDeaths(-11506, SetTo, 2, 0);
SetDeaths(-11506, Add, 256, 0);
SetDeaths(-11506, Add, 65536, 0);
7PSetDeaths(-11497, SetTo, 2, 0);
SetDeaths(-11497, Add, 256, 0);
SetDeaths(-11497, Add, 65536, 0);
8PSetDeaths(-11488, SetTo, 2, 0);
SetDeaths(-11488, Add, 256, 0);
SetDeaths(-11488, Add, 65536, 0);

2.5.2 업그레이드

공유 여부
O
Memory OffsetObject IDByteValue
아래 내용 참조업그레이드 ID1변경할 업그레이드 수

오브젝트 ID에는 원하는 업그레이드의 ID, 밸류값에는 인식할 업그레이드의 단계를 넣으면 된다.

플레이어별 오프셋이 존재한다.

오리지널 (00 ~ 2D)브루드워 (2E ~ 3C)
플레이어오프셋플레이어오프셋
1P0x58D2B01P0x58F32C
2P0x58D2DE2P0x58F33B
3P0x58D30C3P0x58F34A
4P0x58D33A4P0x58F359
5P0x58D3685P0x58F368
6P0x58D3966P0x58F377
7P0x58D3C47P0x58F386
8P0x58D3F28P0x58F395

특이하게 오리지널 업그레이드 (00 ~ 45)와 브루드워 업그레이드 (46 ~ 60)별로 오프셋이 다르다. 그러므로 만약 당신이 인식하는 업그레이드가 45 이하 (오리지널)인지, 그보다 높은 ID의 업그레이드 (브루드워)인지를 알고 그에 맞는 오프셋을 선택하여야 한다.

또한 브루드워 업그레이드 인식의 경우, 46을 0으로 본다. 그러므로 브루드워 업그레이드 오프셋 사용시에는 46만큼 뺀 뒤 사용하여야 한다. 이를 사용시 브루드워 업그레이드 오프셋 사용시 오브젝트 ID에 넣을 수는 0 ~ 14이다.

2.5.3 유닛 이름 스트링 변경

Memory OffsetObject IDByteValue
0x660260유닛 ID2스트링 번호

유닛에게 주어진 스트링을 다른 스트링으로 바꾼다. 스트링 번호는 기본적으로 SCMD에서 확인이 가능하다.

2.5.4 프레임

Memory OffsetObject IDByteValue
0x6509A0-4-

기본적으로 터보 트리거는 Wait(0);을 무한히 반복시켜서 무한히 반복되는 Wait를 이용함으로써 초당 약 12번가량 트리거를 실행시키게 만드는 트리거이다. 그러나, Wait 터보 트리거의 단점은 Wait 트리거를 사용시 Wait가 서로 꼬여버리는 현상이 생기기에, 사용하지 않는 컴퓨터에 넣어야 한다.

이 오프셋은 매 프레임마다 1씩 줄어들며, 0이 되면 트리거를 작동시킴과 동시에 다시 30으로 돌아간다. 즉, 이 오프셋을 0으로 놓으면 그 즉시 트리거가 빠르게 작동되기에 초당 약 24번까지 트리거를 작동시킬 수 있어 매우 빠른 트리거 작동이 가능하다. 때문에 Wait 꼬임 현상이 현저히 줄어들게 되기에 어느 플레이어에 놓아도 트리거가 서로 꼬이는 일이 없다.

  • SCMD
Set Deaths("Player 4", "Int:16929", Set To, 0);
  • 스타포지
SetDeaths(3, SetTo, 0, 16929); (확장 유닛)
SetDeaths(203151, SetTo, 0, 0); (확장 플레이어)

오프셋의 값 n로 설정하여 (n+1)프레임마다 트리거가 작동시키게 할 수 있으며, 물론 기본 값 30보다 더 높게 설정할 수 있다.

2.5.5 화면밝기

Memory OffsetObject IDByteValue
0x657A9C-1밸류값이 1에 가까울 수록 맵밝기가 어두워짐
  • 스타포지

SetDeaths(10, SetTo, n, 17531); (확장 유닛)
SetDeaths(210382, SetTo, n, 0); (확장 플레이어)

  • SCMD

Set Deaths("Player 11", "Int:17531", Set To, n);

32이상되면 화면깨집니다
  1. 텍스트나 화면 이동의 경우는 해당 플레이어에게만 작동되므로 비공유에 속한다. 반대로 유닛을 생성하거나 이동, 스위치 및 유닛 죽은 값 변경은 공유에 속한다. 즉, 한명의 플레이어에게 실행시 해당되는 플레이어 뿐만 아니라 그 결과가 타 플레이어에게 전해지는 실행부를 공유 실행부라 할 수 있다.
  2. 간단하게 예시를 들자면, WAV 파일 재생이나 텍스트 출력은 오로직 자신에게만 보여지며, 다른 플레이어가 이를 알아야 할 필요는 없다. 그러므로 이것은 비공유에 속하므로 사용될 수 있다. 하지만, 유닛의 소유권 변경, 유닛 생성, 체력이나 실드, 마나량 변경 등 자신은 물론 다른 플레이어도 알아야 할 필요가 있는 실행부를 공유하지 않는 조건부와 함께 사용시, 자기 자신과 다른 플레이어끼리 정보가 전혀 다르게 되므로 결국 서로 정보가 다른 플레이어를 완전히 격리시키듯 나눠버린다. 이를 대표적으로 방 갈림 현상이라 부른다.