Witam, robiąc chat wyposażyłem go w możliwość użycia skryptów lua, i tu się pojawia problem, iż po dłuższej rozmowie wielu osób serwer dostaje crasha, jest to spowodowane najprawdopodobniej przez lua, ponieważ w wersji gdzie jeszcze nie było obsłógi skryptów takie coś się nie zdarzało. Nie wiem czy dobrze zrobiłem, że plik skryptu za każdym razem jest wczytywany od nowa, a nie raz wczytany do pamięci w poprzednich projektach z lua też zdarzał się taki problem.
Generalnie rzecz ujmując sprawa wygląda tak: serwer pobiera komunikat który przyszedł, sprawda ID komunikatu, sprawdza czy przypisano do niego wykonanie skryptu lua, jeśli tak to wykonuje skrypt, potem domyślną czynność obsłógójącą komunikat.
Funkcja wykonująca skrypty lua wygląda u mnie tak:
I nie wiem właśnie czy można by zrobić jakoś dobrze żeby np. te skrypty były ładowane do pamięci i sprawdzane (Wiem że można do zmiennej i loadbuffer)
,ale jak zrobić taką funkcje wykonującą skrypty, na tyle prawidłowo żeby nie crashowało (na 85% te crashe są właśnie od lua, ale chyba nie od funkcji w skryptach zawartych).

bool wykonaj_skrypt(char scr[],int tryb)
{
lua_State *luaState = lua_open();
	int err;
	if (tryb==0){err=luaL_loadbuffer(luaState, scr, strlen(scr), "skrypt");}
	else{err=luaL_loadfile(luaState, scr) ; }
if (err == 0)
	{
//Rejstracja Funkcji.

if (lua_pcall (luaState, 0, 0, 0)){cout << lua_tostring(luaState, -1) << "\n";
 wsprintf(LastLuaErr,"%s",lua_tostring(luaState, -1));
    }}
	else
	{
switch (err){
case LUA_ERRSYNTAX:	{wsprintf(LastLuaErr,"Błąd składniowy lua (syntax error) \n");
cout << "syntax error\n"; break;}
case LUA_ERRMEM:{wsprintf(LastLuaErr,"Błąd alokacji pamięci (memory error) \n");
cout << "memory error\n"; break;}
}}
lua_close(luaState);     
}