개인 자료란 (JE)

  서버 커뮤니티

Profile 거너아나 전문해결사

Marlozing 75866ebd9ffa4b9ab322231112059268

Profile

질문하기 스크립트

공격 스크립트 질문

2021.04.27 조회 수 1865 추천 수 0
이해도 1.16 
게임버전 (JE) 페이퍼 
게임버전 (BE) SkBee, skDragon, Skellett, SkEtcR*, SkQuery, skRayFall. skUtilities 
스크립트 애드온 2.5.3 

상대를 때리면 5초 뒤에 데미지가 들어가고 죽으면 때린 사람이 죽인 사람을 죽였습니다라고 뜨게 하고 싶은데

on attack:

@if attacker is player:

@@if victim is player:

@@@cancel event

@@@wait 5 seconds

@@@damage victim by damage했는데

attacker감지하는거에서 none이라고 뜨는데 때린 플레이어가 attacker로 감지되게 할려면 어떻게 해야할까요




2개의 댓글

스크립터브혼
2021.04.27

[On Damage] 이벤트는 피해가 발생할 때 동작합니다.

질문자께서 사용하신 [Damage] 이펙트로 피해를 주어도 on damage 이벤트가 동작합니다.

이벤트가 두번 동작하여 헛갈린것 같습니다.


구조적으로 살펴보면,

처음 플레이어가 플레이어를 공격할때는 attacker와 victim 모두 플레이어로 이벤트가 동작합니다.

5초뒤에 damage 이펙트로 공격이 한번더 발생해서 이벤트가 또 실행되는데 이때는 attacker가 없습니다.

플레이어가 플레이어를  때린 것이 아니라 스크립트로 피해를 만들어냈기 때문입니다.


공격자로부터 이벤트를 처리하고, 피격자로부터 이벤트를 받는 것은 좋은 생각입니다만

두번째로 동작하게되는 피격자 이벤트에서는 공격자를 받을 수 없기 때문에

첫번째 이벤트인 공격자 이벤트에서 피격자의 상태를 파악하고 메세지를 보내는 방법으로 구현해야합니다.


on damage:
    attacker and victim is player
    cancel event
    wait 5 seconds
    damage victim by damage
    victim is not alive
    send "%attacker%(이)가 %victim%(을)를 죽였습니다." to console

[is Alive] 컨디션으로 대상이 살아있는지를 판단 할 수 있습니다.

피격자를 공격한 후 피격자가 살아있지 않으면 메세지를 보냅니다.


두번째 이벤트의 경우 첫번째 조건식(attacker and victim is player)를 통과하지 못하기 때문에 중복실행되지 않습니다.

거너아나
2021.04.28
@스크립터브혼

아하 감사합니다