Workshop.codes
Login
Create
tiananmen

좋소좋소아주좋소

OW-GTA 모드 워크샵 코드

variables:
global:
0: Bounty[] # 플레이어별 현상금
1: IsPolice[] # 경찰 여부
2: IsJailed[] # 수감 여부
3: JailTimer[] # 수감 타이머
4: JailPosition # 경찰서 위치
5: VoteCount[] # 경찰 시험 투표수
6: WeakTeam[] # 약자 팀 목록

player:
0: PlayerBounty # 개인 현상금
1: PlayerIsPolice # 경찰 여부
2: PlayerIsJailed # 수감 여부
3: PlayerJailTimer # 수감 타이머

rule("게임 시작 - 초기화"):
event:
Ongoing - Global
conditions:
Is Game In Progress == True
actions:
# 현상금 초기화
For Global Variable(I, 0, Number Of Players(All Teams), 1):
Set Player Variable(Player By Index(Global Variable(I)), PlayerBounty, 0)

# 약자 팀 구성 (최대 체력 150 이하인 영웅)
# 메르시(200), 아나(200) 등 기준으로 조정 필요
For Global Variable(I, 0, Number Of Players(All Teams), 1):
If(Max Health(Player By Index(Global Variable(I))) <= 200):
Modify Global Variable(WeakTeam, Append To Array,
Player By Index(Global Variable(I)))

rule("경찰 시험 - 투표 시작"):
event:
Ongoing - Global
conditions:
Is Game In Progress == True
actions:
# 각 플레이어에게 경찰 지원 여부 투표 UI 표시
For Global Variable(I, 0, Number Of Players(All Teams), 1):
Create HUD Text(
Player By Index(Global Variable(I)),
String("경찰 지원? 상호작용키(F)=지원 / 무시=패스"),
Null, Null, Top, 0, White, White, White, Visible To and String, Default)

Wait(15, Ignore Condition) # 15초 투표 시간

# 투표한 플레이어를 경찰(아나)로 설정
For Global Variable(I, 0, Number Of Players(All Teams), 1):
If(Player Variable(Player By Index(Global Variable(I)), VoteCount) >= 1):
Set Player Variable(Player By Index(Global Variable(I)), PlayerIsPolice, True)
Set Player Hero(Player By Index(Global Variable(I)), Hero(Ana))
Start Forcing Player To Be Hero(
Player By Index(Global Variable(I)), Hero(Ana))

rule("경찰 지원 투표 - F키 입력"):
event:
Ongoing - Each Player
All Teams
All Heroes
conditions:
Is Button Held(Event Player, Button(Interact)) == True
Player Variable(Event Player, PlayerIsPolice) == False
actions:
Set Player Variable(Event Player, VoteCount, 1)
Small Message(Event Player, String("경찰 지원 완료!"))

rule("아나 제외 - 일반 플레이어 영웅 제한"):
event:
Ongoing - Each Player
All Teams
All Heroes
conditions:
Player Variable(Event Player, PlayerIsPolice) == False
actions:
# 아나 선택 불가 처리
If(Hero Of(Event Player) == Hero(Ana)):
Small Message(Event Player, String("아나는 경찰 전용 영웅입니다!"))
Set Player Variable(Event Player, PlayerIsPolice, False)
# 랜덤 영웅으로 강제 변경
Start Forcing Player To Be Hero(Event Player,
Random Value In Array(
Remove From Array(All Heroes, Hero(Ana))))

rule("약자 팀 - 팀 설정"):
event:
Ongoing - Each Player
All Teams
All Heroes
conditions:
Is Game In Progress == True
Array Contains(Global Variable(WeakTeam), Event Player) == True
actions:
# 약자 팀끼리 아군으로 설정 (팀2로 이동)
Set Player Variable(Event Player, PlayerIsPolice, False)

rule("현상금 시스템 - 킬 시 현상금 증가"):
event:
Player Dealt Final Blow
All Teams
All Heroes
conditions:
Player Variable(Event Player, PlayerIsPolice) == False
actions:
# 킬한 플레이어 현상금 증가
Modify Player Variable(Event Player, PlayerBounty, Add, 500)
# 피해자 현상금 감소
Modify Player Variable(Victim, PlayerBounty, Add, -200)

# 현상금 HUD 업데이트
Small Message(All Players(All Teams),
String("{0} 현상금: {1}$",
Event Player,
Player Variable(Event Player, PlayerBounty)))

rule("체포 시스템 - 수면총 맞으면 체포"):
event:
Ongoing - Each Player
All Teams
Hero(Ana)
conditions:
Has Status(Event Player, Asleep) == True # 수면 상태
Player Variable(Event Player, PlayerIsPolice) == False # 경찰 아님
actions:
# 수감 처리
Set Player Variable(Event Player, PlayerIsJailed, True)
Set Player Variable(Event Player, PlayerJailTimer, 300) # 5분 = 300초

# 벌금 차감
Modify Player Variable(Event Player, PlayerBounty, Add, -1000)
Small Message(Event Player, String("체포! 벌금 1000$ 차감. 5분 수감"))

# 경찰서 위치로 텔레포트
Teleport(Event Player, Global Variable(JailPosition))
Set Status(Event Player, Null, Rooted, 300) # 이동 불가

rule("수감 타이머 - 카운트다운"):
event:
Ongoing - Each Player
All Teams
All Heroes
conditions:
Player Variable(Event Player, PlayerIsJailed) == True
actions:
Wait(1, Ignore Condition)
Modify Player Variable(Event Player, PlayerJailTimer, Add, -1)

# 타이머 HUD
Create HUD Text(Event Player,
String("수감 중: {0}초", Player Variable(Event Player, PlayerJailTimer)),
Null, Null, Top, 0, Red, Red, Red, Visible To and String, Default)

# 석방 조건
If(Player Variable(Event Player, PlayerJailTimer) <= 0):
Set Player Variable(Event Player, PlayerIsJailed, False)
Clear Status(Event Player, Rooted)
Small Message(Event Player, String("석방되었습니다!"))

rule("경찰서 위치 설정 - 게임 시작 시"):
event:
Ongoing - Global
conditions:
Is Game In Progress == True
actions:
# 맵에 따라 경찰서 위치 수동 지정 필요
Set Global Variable(JailPosition, Vector(0, 0, 0)) # 좌표 직접 수정 필요!

Workshop.codes