Skocz do zawartości

39 dll serwer


Axlii

Rekomendowane odpowiedzi

cześć, chciałem zrobić serwer do gry z użyciem 39dll. Mam dokładnie taki sam kod jak w innej grze tylko że u mnie nie działa.

objWait CREATE

GML
listen = tcplisten(14804, 5, true); //nasłuchiwanie</span>

 

STEP

 

GML
client = tcpaccept(listen, true);

if(client <= 0) exit;

global.otherplayer = client;

room_goto(rmGame);

 

i mam taki błąd

 

GML
___________________________________________

ERROR in

action number 1

of Create Event

for object o_listen:

 

In script tcplisten:

Error in code at line 11:

/* Creates a listening socket to monitor a certain port for incoming connections. Argument0 = Port to listen on Argument1 = Max amount of people allowed to be in the connected but not accepted list Argument2 = Blocking(0)/Non-Blocking(1) mode. Affects the tcpaccept script. returns the id of the socket or a negative error code.*/return external_call(global._SokB, argument0, argument1, argument2);

^

at position 29: Unknown variable _SokB

 

pomocy ;/.

Odnośnik do komentarza
Udostępnij na innych stronach

zwyczajnie kod wywoluje sie zanim wywolales funkcje dllinit() :)

Odnośnik do komentarza
Udostępnij na innych stronach

Otwieram bo kolejny problem, jakby to napisać serwer nie widzi klienta a klient widzi serwer.

Klient ma takie coś w dołączaniu

 

GML
server = tcpconnect("127.0.0.1", 14804, 1);

global.otherplayer = server;

if(global.otherplayer <= 0)

{

show_message("nie udalo sie polaczyc")

}

 

i tu działa jak jest włączony serwer, a jak wyłączony to wyskakuje okienko.

W serwerze

 

CREATE

 

GML
dllinit(0, true, false);

listen = tcplisten(14804, 2, true);

if(listen <= 0)

{

show_message("dddddddddd");

game_end();

}

 

STEP

 

GML
sock = tcpaccept(listen, 1);

if(sock)

{

closesocket(listen)

global.otherplayer = sock

instance_destroy()

}

 

DESTROY

 

GML
room_goto_next()

 

i nic nie robi jak klient sie podłącza.

Odnośnik do komentarza
Udostępnij na innych stronach

Nic.. ;/

może wyśle projekt?

 

@ EDIT ehm właśnie zauważyłem że w serwerze zamiast eventu Game end jest game start więc było dll_free() od razu i dlatego nie działało.

dzięki za chęć pomocy ;p. Jak będe miał jakiś problem to tu napisze.

Odnośnik do komentarza
Udostępnij na innych stronach

nie musisz blokować kratki... zrób \# - powoduje nie wstawienie przejścia do nast. linii, tylko kratki jako czytalnego znaku.

 

Do drugiego ->

chcesz to w show message, czy już w zmiennej? w message'u nie wiem jak, ale w zmiennej:

GML
/* STEP */

 

if pisztu // zmienna, która odpowiada za to, czy masz teraz zapisywać w zmiennej, czy nie

{

if string_length(zmienna)<15

{

zmienna=string_replace_all(keyboard_string,'#','\#')

}

}

Masz od razu ze wspomnianą kratką.
Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

to obcinaj też keyboard string... hm, nie pamiętam teraz wszystkich operacji na stringach z GMa, ale chyba:

 

GML
keyboard_string = string_copy(keyboard_string,1,15);

 

upewnij się tylko, czy indeksujemy od 0 czy 1 bo tego właśnie nie pamiętam...

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...