gms_global_set

Gebruik: gms_global_set ( "variable", value )

Omschrijving

Stelt de globale variabele in op de opgegeven waarde (value), en verzend deze naar alle andere spelers.

Reacties (2)

Laatste bericht op 4 Sep 2017

PaPdeveloper op 2 Apr 2016, 15:23:20
Hoi Size43!

Ik ben nu bezig met het maken van een lijst van alle spelers in een sessie. Om te voorkomen dat de volgorde van de lijst bij iedereen anders is, wil ik de lijst van de master naar iedereen synchroniseren. Hiervoor heb ik het volgende gebruikt:

Bij de master:
gms_global_set("speler_id[1]",speler_id[1])
gms_global_set("speler_id[2]",speler_id[2])
...
gms_global_set("speler_id[16]",speler_id[16])

Niet-masters:
speler_id[1] = gms_global_get("speler_id[1]")
speler_id[2] = gms_global_get("speler_id[2]")
...
speler_id[16] = gms_global_set("speler_id[16]")

Maar zodra ik inlog en ik in de room van deze lijst kom, crasht de game. Zou dit kunnen komen doordat je geen array's kan synchroniseren met globals? Of dat de game niet 16 globals tegelijk kan synchroniseren? Vaak zijn sommige variabelen speler_id[1...16] ook undefined, omdat er natuurlijk niet altijd 16 spelers zijn. Crasht de game omdat je geen ongedefinieerde waardes kan synchroniseren? Alvast bedankt!!
Size43 (Beheerder) op 2 Apr 2016, 15:50:52
Ik zou de code erop na moeten lopen, maar misschien dat het door de [ en ] komt? Probeer het eens als "speler_id1", "speler_id2", "speler_id3", etc...

Ik heb geen idee hoe GameMaker de undefined variables afhandelt. Als je de GM:Studio (All) versie gebruikt, hoor je waarschijnlijk een error te zien. Als je de GM:Studio (Windows) versie gebruikt hoort GM:Studio een conversie naar een double of string te doen, maar het zou goed kunnen dat dit niet gebeurt waardoor de game crasht.

De huidige codebase van GameMaker Server zal undefined values nooit kunnen ondersteunen, dus de makkelijkste fix is om een scriptje te schrijven dat van iedere undefined value een ander getal/string maakt. (Bijvoorbeeld -1, als al je speler_ids > 0 zijn)

Ps. Ziet eruit als heel veel schrijfwerk. Misschien er een for-loop van maken? :)