Event Manager

Listener - สำหรับรับการส่งข้อมูล

จากข้อมูลในส่วนการสร้าง schema เราจะนำ schema test-get-name มาทดลองใช้งานในส่วนนี้กันต่อ
-- NS.onEvent(schemaName, fn, isNet)

NS.onEvent('test-get-name', function(ctx)
	local name = ctx.get('name')
	local age = ctx.get('age')

	print('name', name, type(name)) -- output: name 999s string
	print('age', age, type(age)) -- output: age 20 number
end, false)

-- Test
TriggerEvent('999s:test-get-name', '999s', 20)
จะเห็นได้ว่า paramsSort ที่เราได้ตั้งใน schema นั้นเราจะนำมาใช้ get ข้อมูลที่ Event ได้รับมาจากตัวอย่างเราทำการ get มาสองข้อมูลก็คือ name และ age
ParameterTypeDescriptionNote
schemastring | SchemaObjectชื่อที่เราทำการบันทึกด้วยฟังก์ชั่น registerAs หรือ Object ที่เราได้จากการ getSchemagetSchema ใช้งานได้เมื่อทำการ createSchema
fnfun(ctx)ฟังก์ชั่นสำหรับรับข้อมูลเมื่อมีการ Trigger Event
isNet (optional)booleanเป็นการกำหนดว่าจะสร้าง Event แบบ Local หรือ Net
นอกจากนี้คุณยังสามารถใช้งาน Alias function เพื่อสร้าง Event ได้ NS.onLocalEvent(schema, fn) - ใช้เพื่อสร้าง Event สำหรับใช้ภายใน (Client only or Server only)
NS.onNetEvent(schema, fn) - ใช้เพื่อสร้าง Event สำหรับใช้ภายในและภายนอก (Client and Server)

Trigger Event - สำหรับการส่งข้อมูล

เราจะนำ schema ที่สร้างจากตัวอย่างมาใช้ในรอบนี้เช่นกัน โดยรูปแบบการใช้ง่ายมาก ก็คือ
-- NS.sendEvent(schema, isNet, ...)

NS.sendEvent('test-get-name', false, '888s', 21)

-- output:
-- name 888s string
-- age 21 number
จะสังเกตเห็นว่าในตัวอย่างของการสร้าง Event สิ่งที่เราต้องใส่ก็คือชื่อ Event ในการ **TriggerEvent **แต่เมื่อเราใช้ sendEvent เราต้องใส่เป็นชื่อของ schema ที่เราได้ทำการบันทึกด้วยฟังก์ชั่น registerAs
ParameterTypeDescriptionNote
schemastring | SchemaObjectชื่อที่เราทำการบันทึกด้วยฟังก์ชั่น registerAs หรือ Object ที่เราได้จากการ getSchemagetSchema ใช้งานได้เมื่อทำการ createSchema
isNetbooleanเราจะทำการ Trigger Event ภายในหรือไปยังภายนอก Client -> Client, Server -> Server หรือ Client -> Server, Server -> Client
paramsข้อมูลที่คุณจะส่งไปยัง Event
ข้อมูลที่คุณส่งผ่าน TriggerEvent ปกติระบบจะไม่มีการตรวจสอบ Types ของ Parameter ที่ส่งเข้ามาว่าถูกต้องตามที่ Event ต้องการหรือไม่ แต่ถ้าหากคุณใช้ sendEvent ระบบของเราจะทำการตรวจสอบ Types ตามที่คุณได้ใช้ฟังก์ชั่น makeTypes ในการกำหนดไว้ ซึ่งจะช่วยให้งานของคุณเกิดความผิดพลาดได้น้อยยิ่งขึ้น นอกเหนือจากนี้คุณยังสามารถใช้ Alias function ได้อีกด้วย NS.sendLocalEvent(schema, ...) - เพื่อ Trigger Event ภายใน (TriggerEvent)
NS.sendNetEvent(schema, ...) - เพื่อ Trigger Event ภายนอก (TriggerServerEvent, TriggerClientEvent)