I think it can help many.
SO, I THINK IT MAY HELP YOU GET RID OF THE DOWNLOAD OF LEVELS and allow the player to pass the game on a single breath...
SERVER AND CLIENT FOR WORK ON THE SAME COMPUTER
SERVER:
GLOBAL idpacet
GLOBAL Percent#
GLOBAL Joined
GLOBAL TCPPackets
GLOBAL LocalPort
LocalPort = 6790
GLOBAL LocalIP$
LocalIP$ = "127.0.0.1"
GLOBAL MaxClients
MaxClients = 5
GLOBAL NoThreads
NoThreads = 0
GLOBAL NoInstances
NoInstances = 1
GLOBAL SendPacket
GLOBAL RecvPacket
SendPacket = MN CREATE PACKET()
RecvPacket = MN CREATE PACKET()
MN START NoInstances,NoThreads
MN SET LOCAL 0,LocalIP$,LocalPort,"",0
MN DISABLE TCP HANDSHAKE 0
LOCAL result
result = MN START SERVER(0,MaxClients,0,0)
IF result = 0
PRINT "Server started with ";
PRINT STR$(MN GET THREADS());
PRINT " thread(s) running"
SLEEP 300
ELSE
PRINT "Server failed to start"
WAIT KEY
END
EXIT
ENDIF
DO
Joined AS INTEGER
Joined = MN CLIENT JOINED(0)
IF Joined > 0
PRINT "A new client has joined. Client ID is: ";
PRINT STR$(Joined)
PRINT "waitkey"
ENDIF
` Leaving clients
Left = MN CLIENT LEFT(0)
IF Left > 0
PRINT "Client ";
PRINT STR$(Left);
PRINT " has disconnected"
ENDIF
TCPPackets = MN RECV TCP(0,RecvPacket,1)
IF TCPPackets > 0
MN SET CURSOR RecvPacket, 0
idpacet= MN GET INT(RecvPacket)
IF idpacet=100
path$ = MN GET STRING(RecvPacket,0,1)
IF FILE EXIST( path$)=1
LOAD IMAGE path$,1,1,1
IF MEMBLOCK EXIST(1)= 1 THEN DELETE MEMBLOCK 1
IF IMAGE EXIST(1)=1
MAKE MEMBLOCK FROM IMAGE 1,1
pTr= GET MEMBLOCK PTR(1):Size= GET MEMBLOCK SIZE(1)
idpacet=1
MN ADD INT SendPacket, idpacet
MN ADD INT SendPacket, Size
MN ADD MEMBLOCK SendPacket, pTr, Size, 1
MN SEND TCP 0,SendPacket,1,0,0
ENDIF
ENDIF
ENDIF
IF idpacet=110
path$ = MN GET STRING(RecvPacket,0,1)
nolmm = MN GET INT(RecvPacket)
IF FILE EXIST( path$)=1
LOAD OBJECT path$,5,0,0:MAKE MESH FROM OBJECT 5,5:DELETE OBJECT 5
IF MEMBLOCK EXIST(1)= 1 THEN DELETE MEMBLOCK 1
IF MESH EXIST(5)=1
MAKE MEMBLOCK FROM MESH 1,5
pTr= GET MEMBLOCK PTR(1)
Size= GET MEMBLOCK SIZE(1)
idpacet=10
MN ADD INT SendPacket, idpacet
MN ADD INT SendPacket, Size
MN ADD MEMBLOCK SendPacket, pTr, Size, 1
MN SEND TCP 0,SendPacket,1,0,0
ENDIF
ENDIF
ENDIF
IF idpacet=9999
END
EXIT
ENDIF
ENDIF
SYNC
LOOP
CLIENT:
GLOBAL RecvPacket
GLOBAL SendPacket
GLOBAL ConnectPort
GLOBAL Timeout
GLOBAL NoThreads
GLOBAL NoInstances
GLOBAL ConnectIP$
ConnectPort = 6790
Timeout = 10
NoThreads = 0
NoInstances = 1
RecvPacket = MN CREATE PACKET()
SendPacket = MN CREATE PACKET()
MN START NoInstances,NoThreads
MN DISABLE TCP HANDSHAKE 0
MN SET AUTO RESIZE TCP 0, 0, 1
ConnectIP$="127.0.0.1"
connect = MN CONNECT(0, ConnectIP$,ConnectPort,"",0,Timeout,1)
SELECT connect
CASE 1:
PRINT "Connected to server successfully"
ENDCASE
CASE 0:
CLS
PRINT "Connection timed out. The server may not be available."
PRINT "Press any key to exit"
SYNC
WAIT KEY
ENDCASE
CASE -1:
CLS
PRINT "An unknown error occurred whilst trying to connect."
PRINT "Press any key to exit"
SYNC
WAIT KEY
ENDCASE
CASE -2:
CLS
PRINT "The connection request was rejected because the server is full."
PRINT "Press any key to exit"
SYNC
WAIT KEY
ENDCASE
ENDSELECT
TcpPacket = MN RECV TCP(0,RecvPacket,0)
IF TcpPacket > 0
MN SET CURSOR RecvPacket, 0
idpacet= MN GET INT(RecvPacket)
IF idpacet=1
Size= MN GET INT(RecvPacket)
MAKE MEMBLOCK 2,Size
pTr = GET MEMBLOCK PTR(2)
MN GET MEMBLOCK RecvPacket, pTr,0,0
MAKE IMAGE FROM MEMBLOCK IMGNUM,2
DELETE MEMBLOCK 2
ENDIF
IF idpacet=10
Size= MN GET INT(RecvPacket)
MAKE MEMBLOCK 2,Size
pTr= GET MEMBLOCK PTR(2)
MN GET MEMBLOCK RecvPacket, pTr,0,0
IF MEMBLOCK EXIST(2)
MAKE MESH FROM MEMBLOCK 1,2
MAKE OBJECT OBJNUM , 1 , 0
ENDIF
DELETE MEMBLOCK 2
ENDIF
ENDIF
CLIENT COMMANDS FOR SERVER
//LOAD IMAGE
idpacet=100
path$ = nameimg
MN ADD INT SendPacket, idpacet
MN ADD STRING SendPacket,path$,0,1
MN SEND TCP 0,SendPacket,0,0,0
//LOAD OBJECT
idpacet= 110
path$ = NAMEOBJ
MN ADD INT SendPacket, idpacet
MN ADD STRING SendPacket,path$,0,1
MN SEND TCP 0,SendPacket,0,0,0
.....already beside..... for all