Problema, cargado y creado de cuentas
#1

Tengo un GM que me dio un amigo, el cual, en local funciona de 10. Pero cuando lo abro en el host (El host es windows), todos los .ini de las cuentas quedan vacнos...
No llego a entender por quй pasa esto.
Vi en algunos threads que esto puede pasar gracias al "INI_ParseFile". El problema, es que todos los .ini de las casas y demбs ya estaban creados y cuando uno se registra se crea un archivo .ini en la parte de spraytags (Parte del sistema de graffitis de la GM), por lo cual, el servidor puede crear los .ini tranquilamente. No llego a entender por quй crea todos los .ini menos los de las cuentas, los cuales los deja vacнos.
Vi en un thread esto: "Sucede que el sistema de casas al cargar 1 casa con el INI_ParseFile cargaba mбs de la cuenta porque seguнa el loop de MAX_HOUSES y por eso cuando se cargaban casas no dejaba crear ningъn dato y incluso detenнa funciones". Me fije cuantas casas creadas en .ini hay, son 312, y el MAX_HOUSES esta en 250.
Y no solo pasa eso, tambien, cuando alguien reloguea o se loguean 2 personas a la vez, el servidor se reinicia solo. En los logs no dice nada, simplemente vuelve a hacer la funcion de encendido del servidor solo, por lo que se cierra por un instante y luego vuelve. Esto solo me pasa con esta GM, en el host. En local va todo de 10, las cuentas se hacen y se guardan perfectamente.
Alguno puede ayudar?
Reply
#2

Es posible que el directorio no tenga permisos de escritura (777), y lo otro, y_ini es (desde hace mucho tiempo, sin embargo ahora es mбs visible puesto que ya no hay proyectos o librerнas de archivos en actualizaciуn) obsoleto. Procura descargar crashdetect y compilar con el parбmetro -d3 para ver el error del crash.
Reply
#3

Instale el crash detector y esto aparece:

[11:14:16] [debug] Server crashed while executing Sacramento.amx
[11:14:16] [debug] AMX backtrace:
[11:14:16] [debug] #0 native fread () from samp-server.exe
[11:14:16] [debug] #1 003ced4c in CheckBan (ip[]=@006368a8 "1**.**9.*12.***") at D:\Sacramento\gamemodes\Sacramento.pwn:55996
[11:14:16] [debug] #2 0005f1c0 in public MP_OPC (playerid=0) at D:\Sacramento\gamemodes\Sacramento.pwn:5179
[11:14:16] [debug] #3 native CallLocalFunction () from samp-server.exe
[11:14:16] [debug] #4 0002be98 in public SSCANF_OnPlayerConnect (playerid=0) at D:\Sacramento\pawno\include\msel.inc:432
[11:14:16] [debug] #5 0001f470 in public Itter_OnPlayerConnect (playerid=0) at D:\Sacramento\pawno\include\sscanf2.inc:205
[11:14:16] [debug] #6 native CallLocalFunction () from samp-server.exe
[11:14:16] [debug] #7 0001dc80 in public S@@_OnPlayerConnect (playerid=0, ... <1 argument>) at D:\Sacramento\pawno\include\YSI\y_iterate.inc:604
[11:14:16] [debug] #8 native CallLocalFunction () from samp-server.exe
[11:14:16] [debug] #9 0000ad94 in public Streamer_OnPlayerConnect (playerid=0) at D:\Sacramento\pawno\include\YSI\internal\y_dohooks .inc:933
[11:14:16] [debug] #10 native CallLocalFunction () from samp-server.exe
[11:14:16] [debug] #11 00001a90 in public OnPlayerConnect (playerid=0) at D:\Sacramento\pawno\include\streamer.inc:342
[11:14:16] [debug] Native backtrace:
[11:14:16] [debug] #0 77c122d2 in ?? () from C:\Windows\SysWOW64\ntdll.dll
[11:14:16] [debug] #1 004972e0 in ?? () from samp-server.exe
[11:14:16] [debug] #2 00497910 in ?? () from samp-server.exe
[11:14:16] [debug] #3 00404f44 in ?? () from samp-server.exe

Que significa?
Reply
#4

Me parece que falta un archivo, y ese archivo al no existir crashea el server, has un fopen para verificar si existe antes o crealo, revisa cuбl es
Reply
#5

1: Como hago un fopen?
2: No entiendo por quй faltarнa un archivo, ya que en local todo funciona de 10, pero en el host pasa esto.
Reply
#6

Creo yo que tu problema estб en CheckBan, enseсa el cуdigo para revisar si es que allн estб el error.
Reply
#7

Esto es el checkban:

Код:
	if(CheckBan(playerIP) == 1)
	{
	    SetPlayerName(playerid, "BannedPlayer");
	    SendClientMessage(playerid, COLOR_GENERAL, "SERVER: Lo sentimos, su cuenta se encuentra baneada. Si cree que fue un error, por favor, reportelo via foro o TS3.");
		Expulsar(playerid);
		return 1;
	}
Y esta es la funcion

Код:
CheckBan(ip[])
{
new string[20];
new File: file = fopen("ban.cfg", io_read);
while(fread(file, string))
{
    if (strcmp(ip, string, true, strlen(ip)) == 0)
    {
        fclose(file);
        return 1;
    }
}
fclose(file);
return 0;
}
Y estos son los ifs:

Код:
AddBan(ip[])
{
if (CheckBan(ip) == 0)
{
	new File: file = fopen("ban.cfg", io_append);
	new string[20];
	format(string, sizeof(string), "\n%s", ip);
 	fwrite(file, string);
 	fclose(file);
 	foreach(Player, playerid)
	{
	    new playerIP[16];
		GetPlayerIp(playerid, playerIP, sizeof(playerIP));
		if (strcmp(playerIP, ip) == 0)
		{
		    return Expulsar(playerid);
		}
	}
	return 1;
}
return 0;
}
Код:
RemoveBan(ip[])
{
if (CheckBan(ip) == 1)
{
    new string[20];
	new File: file = fopen("ban.cfg", io_read);
	fcreate("tempBan.cfg");
	new File: file2 = fopen("tempBan.cfg", io_append);
	while(fread(file, string))
	{
		if (strcmp(ip, string, true, strlen(ip)) != 0 && strcmp("\n", string) != 0)
	    {
			fwrite(file2, string);
		}
	}
	fclose(file);
	fclose(file2);
	file = fopen("ban.cfg", io_write);
	file2 = fopen("tempBan.cfg", io_read);
	while(fread(file2, string))
	{
		fwrite(file, string);
	}
	fclose(file);
	fclose(file2);
	fremove("tempBan.cfg");
	return 1;
}
return 0;
}
Reply
#8

En el host, en la carpeta donde tienes tu GM busca en scriptfiles el archivo "ban.cfg" y dime si estб o no.
Reply
#9

Si, esta el ban.cfg
Reply
#10

El error que muestra el crashdetect estб en CheckBan, desactiva lo siguiente y fнjate si te sigue mandando crash.
Код HTML:
/*
	if(CheckBan(playerIP) == 1)
	{
	    SetPlayerName(playerid, "BannedPlayer");
	    SendClientMessage(playerid, COLOR_GENERAL, "SERVER: Lo sentimos, su cuenta se encuentra baneada. Si cree que fue un error, por favor, reportelo via foro o TS3.");
		Expulsar(playerid);
		return 1;
	}
*/
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)