Viestit

Toinen Game Makerin tukema kommunikointimekanismi on viestien lähettäminen ja vastaanottaminen. Pelaaja voi lähettää viestejä yhdelle tai kaikille pelaajille. Pelaajat voivat nähdä, onko viestejä saapunut ja voivat toimia sen mukaisesti. Viestejä voidaan lähettää joko varmistetussa tilassa, jossa niiden saapuminen on varmaa (mutta tämä voi olla hidasta) tai varmistamattomassa tilassa, jonka käyttäminen on nopeampaa.

Viestittämistä varten on olemassa seuraavat funktiot:

mplay_message_send(player,id,val) lähettää viestin ilmoitetulle pelaajalle (joko tunnistusluvulla tai nimellä; käytä arvoa 0 lähettääksesi viestin kaikille pelaajille). id on kokonaislukumuotoinen viestin tunnistusluku ja val on arvo (joko reaaliluku tai merkkijono). Viesti lähetetään varmistamattomassa tilassa. Jos val sisältää merkkijonon, enimmäismerkkimäärä on 30000 merkkiä.
mplay_message_send_guaranteed(player,id,val) lähettää viestin ilmoitetulle pelaajalle (joko tunnistusluvulla tai nimellä; käytä arvoa 0 lähettääksesi viestin kaikille pelaajille). id on kokonaislukumuotoinen viestin tunnistusluku ja val on arvo (joko reaaliluku tai merkkijono). Tämä on varmistettu lähetys. Jos val sisältää merkkijonon, enimmäismerkkimäärä on 30000 merkkiä.
mplay_message_receive(player) vastaanottaa seuraavan viestin, joka tuli ilmoitetulta pelaajalta (joko tunnistusluvulla tai nimellä), viestijonosta. Käytä arvoa 0, jos haluat vastaanottaa minkä tahansa pelaajan lähettämät viestit. Funktio palauttaa arvon, joka ilmaisee, oliko jonossa uusia viestejä. Jos siellä oli, voit käyttää seuraavia keinoja sen sisällön saamiseen:
mplay_message_id() Palauttaa edellisen vastaanotetun viestin tunnistusluvun.
mplay_message_value() Palauttaa edellisen vastaanotetun viestin arvon.
mplay_message_player() Palauttaa pelaajan, joka lähetti edellisen vastaanotetun viestin, tunnistusnumeron.
mplay_message_name() Palauttaa pelaajan, joka lähetti edellisen vastaanotetun viestin, nimen.
mplay_message_count(player) Palauttaa määritetyltä pelaajalta jonossa vielä olevien vastaanotettujen viestien lukumäärän (käytä arvoa 0 laskeaksesi kaikki viestit).
mplay_message_clear(player) Tuhoaa kaikki määritetyltä pelaajalta vastaanotetut jonossa olevat viestit (käytä arvoa 0 poistaaksesi kaikki viestit).

Muutama huomautus on tässä paikallaan. Ensinnäkin, jos haluat lähettää viestin vain tietylle pelaajalle, sinun on tiedettävä pelaajan yksilöllinen id-arvo. Kuten aiemmin mainittiin, voit saada tämän tiedon funktiolla mplay_player_id(). Tätä pelaajatunnistetta käytetään myös, kun viestejä vastaanotetaan tietyltä pelaajalta. Voit vaihtoehtoisesti käyttää pelaajan nimeä merkkijonona. Jos monella pelaajalla on sama nimi, vain ensimmäinen saa viestin.

Toiseksi, saatat ihmetellä, miksi jokaisella viestillä on kokonaislukutunniste. Tämän syy on, että se helpottaa ohjelmaa vastaanottamaan erityyppisiä viestejä. Vastaanottaja voi tarkistaa viestin tyypin käyttämällä tunnistearvoa ja tehdä oikeanlaiset toiminnot. (Koska viestien saapumista ei ole varmistettu, tunnistenumeron ja viestin lähettäminen eri aikaan aiheuttaisi vakavia ongelmia.)