Właśnie wiem, ale to jest proste, nie tak jak mój nowy problem (też pewnie prosty, ale jestem nowy w 39dll, a akurat nie bardzo wiem, jak temu zaradzić).
Otóż, kiedy jest dwóch graczy na serwerze (serwer i gracz), wszystko jest ok. Kiedy wchodzi trzeci gracz, robi się dziwnie. Kiedy trzeci gracz pisze na czacie, serwer tego nie chce odbierać (za to trzeci gracz dobrze widzi to, co piszą inni). Za to kiedy serwer przestawia ustawienia rozgrywki, oboje klienci odbierają to dobrze, natomiast kiedy serwer wysyła trzeciemu graczowi listę graczy, robi się kupa. Wniosek - trzeci gracz nie może wysyłać wiadomości i nie może niektórych (nie wszystkich) odbierać.
Podejrzewam, że coś jest nie tak z dołączaniem większej ilości graczy do serwera, a jakoś nie mam ochoty robić tylko internetowych dueli.
Mogę wysłać "obcięty" plik gm6 do niektórych osób.
Ale tylko wtedy, kiedy to będzie potrzebne, teraz daję kody.
Serwer przyjmuje nowych graczy (wycinek ze stepa).
GML
// Grab players.
sock = tcpaccept(listen, 1);
if(sock)
{
for(i=7; i>=1; i-=1)
{
if global.otherplayer<=0 {
listened=i;
}
}
players+=1;
global.otherplayer[listened] = sock;
show_message("global.otherplayer["+string(listened)+"]="+string(sock)+";");
listened=0;
}
Gracz lub serwer wysyła czat (czat jest wysyłany kiedy nowy gracz wchodzi na serwer, więc teoretycznie powinien być bezbłędny).
GML
clearbuffer();
writebyte(net_message_chat);
for(i=0; i<=13; i+=1)
{
writestring(chat_meh.linijka);
writeint(chat_meh.linijkakolor);
}
if global.host=0 sendmessage(global.otherplayer);
if global.host=1 for(i=1; i<=7; i+=1) sendmessage(global.otherplayer);
Kiedy serwer odbierze od gracza czat, automatycznie rozsyła go do innych graczy tą samą komendą.
Serwer wysyła listę graczy.
GML
// Sends player list, also map and bg.
for(i=1; i<=7; i+=1)
{
clearbuffer();
writebyte(net_message_actualnames);
writeshort(controlserver.players);
//sprite_assign(writestring(),cillitbang);
for(u=0; u<=7; u+=1)
{
writestring(global.nick);
writeshort(global.pindex);
}
sendmessage(global.otherplayer);
}
Z góry ogromne dzięki.
poradziłem sobie.