예) 서버 스크립트 - 플레이어 레벨업 시 메시지 출력 및 특정 레벨 달성 시 아이템 지급
Scripts/Servers/Hello.lua
functiononUnitLevelUp(target,level)if target.level ==50then--타겟이 레벨 50 달성 시 서버 전체에 알림을 띄우고 1번 아이템을 지급한다. Server.SendCenterLabel(target.name ..'님이 ' .. level ..'이 되었습니다!') target.AddItem(1) elseif target.level ==55then--타겟이 레벨 55 달성 시 5번 스킬과 5,000게임 머니를 지급한다. target.AddSkill(5) target.AddGameMoney(5000)endendServer.onUnitLevelUp.Add(onUnitLevelUp)
예제) 서버 스크립트 - PVP로 플레이어 처치 시 서버 전체 메시지 출력 및 보상 지급
Scripts/Servers/Hello.lua
functiononUnitDead(target,attacker) --target은 죽 은자, attacker는 공격 자if (target.type==0and attacker.type==0) then--PlayerUnit일 경우 Server.SendCenterLabel(target.name..'을(를) \n'..attacker.name..'이(가) 죽였다.') attacker.AddGameMoney(100) --공격자에게 100골드을 준다.if rand(1, 100) <=50then attacker.AddItem(100) --공격자에게 50% 확률로 1번 아이템을 준다.endendendServer.onUnitDead.Add(onUnitDead) -- Server.onUnitDead에 onUnitDead 함수를 추가한다.
onJoinField 활용 방법 - 특정 맵에 입장 시 이름 출력 및 서버 전체 메시지 보내기
functiononJoinField()functiononJoinField_1(Field,unit) unit.SendCenterLabel(Field.name) -- 유닛에게 잠시 필드 이름을 표시한다.if#Field.playerUnits >10then-- #은 테이블의 길이를 의미한다. Server.SendSay(Field.name.."에 11명 이상의 플레이어가 모였습니다!")endendlocal map = Server.GetField(1)if map ~=nilthen map.onJoinField.Add(onJoinField_1)--1번 필드에 입장 시 onJoinField_1 함수를 호출한다. endendServer.RunLater(onJoinField,1) -- 1초 후 onJoinField 함수를 실행한다.-- 1초 후 실행하는 이유는 서버 실행 후 맵이 생성되지 않았을 수 있기 떄문에 nil을 참조하는 것을 방지하기 위함입니다.
onLeaveField -특정 맵 퇴장 시 처리
인자 map - ScriptField
인자 unit - ScriptUnit
파일: 해당 맵에서 스크립트로 작성 사용 예시) 맵 퇴장 시 월드 변수의 값이 1 감소한다.
코드에 적용된 주석(--)을지워가면서 테스트 해보시길 바랍니다. 밑의 스크립트는 터치 시 이벤트 - 스크립트로 실행했습니다.
-- 인벤토리에서 첫번째 아이템의 정보를 가져옵니다.local item = unit.player.GetItems()[1]local option1 = item.options[1]--Utility.SetItemOption(option1,option1.type,option1.statID,option1.value+1)--Server.SendItemUpdated(item)Utility.AddItemOption(unit.player.GetItems()[1],1,3,5)--unit.player.RemoveItemOption(item,1)unit.player.SendItemUpdated(item)
예) 파티 입장 시 발생하는 이벤트(playerJoinPartyCallback)
Server.playerJoinPartyCallback =function(scriptRoomPlayer,scriptParty) print(scriptRoomPlayer.unit.name)print(scriptParty.maxPlayer)-- return 을 true 로해야 파티가 생성됩니다. 조건에 따라서 return true,false를 지정하면 됩니다.returntrueend