crear comando /Rban (baneo de ip)
#1

Quiero hacer un comando que banie la ip por medio del nick o id del jugador, uso Sqlite... y no se me ocurre como hacer el comando


espero su ayuda!
Reply
#2

https://sampforum.blast.hk/showthread.php?tid=537578


Si no te funciona, podrнa escribir un comando para vos, no es muy complejo. Basicamente la idea es tomar la IP de un jugador, guardarla en una base de datos y despuйs en el login/registro chequear si la IP estб en la base de datos (si hay algъn row con esa IP)
Reply
#3

Creo que ese solo banea nombres, Nesecito una de ip's igual serнa un if en onplayerconnect que diga si la ip esta ban no?
Reply
#4

Quote:
Originally Posted by MonsterGamer
Посмотреть сообщение
Creo que ese solo banea nombres, Nesecito una de ip's igual serнa un if en onplayerconnect que diga si la ip esta ban no?
Sн, al momento de banear debes obtener la direcciуn ip del jugador, guardarla en la base de datos y kickear al jugador. Al momento de conectarse un jugador obtienes su direcciуn ip y chequeas si estб en la base de datos de ip baneadas o no.
Otro modo serнa usar la funciуn de baneo de SAMP, BanEx, la ъnica desventaja es que para desbanear a alguien tendrбs que editar el archivo que contiene los baneos, samp.ban, y reiniciar el servidor.
https://sampwiki.blast.hk/wiki/GetPlayerIp
https://sampwiki.blast.hk/wiki/BanEx_ES
Reply
#5

Asi es mi comando de baneo normal, їque tendria que agregar al otro?

Код:
CMD:ban(playerid, params[])
{
	if(PlayerInfo[playerid][Level] < 6)
	    return SendClientMessage(playerid,red,"[ERROR]: {FFFFFF}No tienes autorizaciуn.");

    new string[128], id, reason[128], when[128],
		ban_hr, ban_min, ban_sec, ban_month, ban_days, ban_years;

	gettime(ban_hr, ban_min, ban_sec);
	getdate(ban_years, ban_month, ban_days);

    if(sscanf(params, "uS(sin razуn)[128]", id, reason)) return SendClientMessage(playerid, red, "[ERROR]: {FFFFFF}Uso /ban [playerid] [razуn]");
	if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, red, "[ERROR]: {FFFFFF}Jugador no conectado.");
	if(id == playerid) return SendClientMessage(playerid, red, "[ERROR]: {FFFFFF}No puedes usar el comando en ti mismo.");
	if(PlayerInfo[playerid][Level] < PlayerInfo[id][Level]) return SendClientMessage(playerid, red, "[ERROR]: {FFFFFF}No puedes usar este comando en un administrador.");

	format(when, 128, "%02d/%02d/%d %02d:%02d:%02d", ban_month, ban_days, ban_years, ban_hr, ban_min, ban_sec);
	CMDMessageToAdmins(playerid,"BAN");
    format(string, sizeof(string), "*{DF0000}Administrador %s baneу a %s (razуn: %s)",  pName(playerid), pName(id), reason);
    SendClientMessageToAll(grey, string);
    printf(string);
    #if LOG == true
    	SaveLog("banlog.txt", string);
	#endif
	format(string, sizeof(string), "Baneaste a %s por la razon de: %s.", pName(id), reason);
    SendClientMessage(playerid, COLOR_YELLOW, string);
    format(string, sizeof(string), "Tъ fuiste baneado por el administrador %s (Razуn: %s)", pName(playerid), reason);
    SendClientMessage(id, COLOR_YELLOW, string);
    BanAccount(id, pName(playerid), reason);
    ShowBan(id, pName(playerid), reason, when);
    KickEx(id);
	return 1;
}
Reply
#6

їalguien ayuda?
Reply
#7

Quote:
Originally Posted by MonsterGamer
Посмотреть сообщение
їalguien ayuda?
Primero que nada, de quй forma lo harбs, con la funciуn BanEx, o obteniendo la direcciуn IP?
Teniendo en cuanta de que lo hagas con la direcciуn IP vas a tener que guardar todas las ip baneadas, y dependiendo del motor que uses para guardar los datos.
Reply
#8

Me imagino que al usar BanEx es menos guardado y menos codigo, pero tambien no podrias usar comando para desbanear ip їno?

El stock BanAccountEx me podria servir para el baneo de ip?

Код:
stock BanAccountEx(name[], ip[], admin[] = "gg", reason[] = "N/a")
{
	new
		Query[500],
		DBResult:result,
		ban_hr, ban_min, ban_sec, ban_month, ban_days, ban_years, when[128]
	;

	gettime(ban_hr, ban_min, ban_sec);
	getdate(ban_years, ban_month, ban_days);

	format(when, 128, "%02d/%02d/%d %02d:%02d:%02d", ban_month, ban_days, ban_years, ban_hr, ban_min, ban_sec);

	format(Query, 500, "INSERT INTO `baneos` (`username`, `ip`, `banby`, `banreason`, `banwhen`) VALUES ('%q', '%s', '%s', '%s', '%s')", name, ip, admin, reason, when);
	result = db_query(database, Query);

	db_free_result(result);
	return 1;
}

stock BanAccount(playerid, admin[] = "gg", reason[] = "N/a")
{
	new
		Query[500],
		DBResult:result,
		ban_hr, ban_min, ban_sec, ban_month, ban_days, ban_years, when[128]
	;

	gettime(ban_hr, ban_min, ban_sec);
	getdate(ban_years, ban_month, ban_days);

	format(when, 128, "%02d/%02d/%d %02d:%02d:%02d", ban_month, ban_days, ban_years, ban_hr, ban_min, ban_sec);

	format(Query, 500, "INSERT INTO `baneos` (`username`, `ip`, `banby`, `banreason`, `banwhen`) VALUES ('%q', '%s', '%s', '%s', '%s')", pName(playerid), PlayerInfo[playerid][UserIP], admin, reason, when);
	result = db_query(database, Query);

	db_free_result(result);
	return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)