Squirrel Script
- // Client
- enum packId {
- packetLP = 110,
- };
-
- addEventHandler("onPacket", function(packet) {
- local id = packet.readUInt16();
-
- if(id == packId.packetLP) {
- setLearnPoints(packet.readUInt32());
- }
- });
-
- // Server
- enum packId {
- packetLP = 110,
- };
-
- function setLearnPoints(pid, lp) {
- local packet = Packet();
-
- packet.writeUInt16(packId.packetLP); // writing first value to packet (id)
- packet.writeUInt32(lp);
- packet.send(pid, RELIABLE_ORDERED);
- };
Kilka uwag:
-Użycie funkcji callClientFunc oraz callServerFunc jest mniej wydajne, gdyż trzeba zapisać więcej informacji do pakietu (o typach argumentów funkcji)
-Id pakietu nie może się powtarzać i dobrze by było, jakby było spójnego typu, czyli np: UInt16, jeśli pierwsza wartość w pakiecie będzie inna niż reszta id pakietów, czyli np: będzie stringiem, to przy próbie odczytu pakietu wystąpi problem (błąd).
Nie testowałem powyższego kodu po korektach, ale wydaje mi się, że powinien działać.
@Edit: Usunięto zbędny warunek w funkcji setLearnPoints po stronie serwera