SA-MP Forums Archive
Bug comando clan color - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Bug comando clan color (/showthread.php?tid=634538)



Bug comando clan color - Romero837 - 21.05.2017

Buenas noches

Espero no causarles ninguna molestia con mis preguntas, no se si sean muy tontas pero bueno ya que no he podido me toca recurrir acб.

Les explico: He creado la variable GANG_COLOR en el sistema de clanes bбsico que tienen todas las Gamemodes Freeroam, ya saben el que estб con /clan invitar y todo eso...

Bueno, ya creada esta variable GANG_COLOR estoy haciendo un comando para cambiar el color del clan solamente por el lider de este, (obviamente ya le cree la variable de lider y el /crearclan se lo asigna automaticamente), bueno pues primero lo intente hacer restringiendo el comando solamente al lider, el problema es que me lo dejaba cambiar y despuйs seteaba la variable de LIDER a 0 o sea no es lider de ningъn clan, despuйs intente haciйndolo para administradores funciona y todo pero al momento de salir del servidor y de cerrarlo pues no guarda el GANG_COLOR con su nuevo valor, se queda siempre en el color asignado cuando se creу.



GUARDADO DE CUENTAS DE USUARIO: SQLITE
GUARDADO DE CLANES: Estб en Y_INI



ANEXO CODIGO COMANDO:

Код:
CMD:clancolor(playerid, params[])
{
    if(PlayerInfo[playerid][AdminLevel] < 5)return Clanes(playerid, "Usted no tiene permisos administrador");
	new colorid,gangid,gfile[50];
	format(gfile, sizeof(gfile), GANG_FILE, gangid);
	if(sscanf(params,"dd",gangid,colorid))return Clanes(playerid, "Utiliza /clancolor [clanID] [ColorID]");
	if(colorid <= 0 || colorid >= 138)return Clanes(playerid, "Error colores validos 1 - 137.");
	GangInfo[gangid][GANG_COLOR] = colorid;
	dini_IntSet(gfile,"GANG_COLOR", colorid);
	SendClientMessageEx(playerid,Colores[GangInfo[gangid][GANG_COLOR]],"Este es el nuevo color del Clan: %s",GangInfo[gangid][GANG_NAME]);
	return 1;
}
CMD:clanes(playerid,params[]){
	new string[3000];
	for(new i=1;i<=40;i++){
		format(string,sizeof(string),"{1CA3D2}%s\n{FFFFFF}%d.- {1CA3D2}%s\t\t{FFFFFF}%d.- {1CA3D2}%s\t\t{FFFFFF}%d.- {1CA3D2}%s",string,i,GangInfo[i][GANG_NAME],(i+40),GangInfo[(i+40)][GANG_NAME],(i+80),GangInfo[(i+80)][GANG_NAME]);
	}
	ShowPlayerDialog(playerid,Dialog_Default,DIALOG_STYLE_MSGBOX,"{1CA3D2}[!]{AD00FF}Lista de Clanes",string,"Aceptar","");
	return 0b1;
}
CMD:crearclan(playerid, params[])
{
	new user, color, clanname[32];
 	if(PlayerInfo[playerid][AdminLevel] < 5)return Clanes(playerid, "{FFFFFF}No tienes autorizaciуn!");
	if(sscanf(params,"dds[32]",user,color,clanname))return Clanes(playerid, "Utiliza /crearclan [Lider(ID)][Color][nombre]");
	if(strlen(clanname) < 3 || strlen(clanname) > 10)return Clanes(playerid, "{FFFFFF}Minimo {FF0000}3 {FFFFFF}maximo {FF0000}10 {FFFFFF}caracteres!");
	if(PlayerInfo[user][Clan]>0)return Clanes(playerid, "{FFFFFF}Este jugador ya tiene {FF0000}clan \n{FFFFFF}Que use {FF0000}/clan salir");
	if(GANG_NUMBER >= MAX_GANG)return Clanes(playerid, "{FFFFFF}Imposible crear el {FF0000}clan, {FFFFFF}limite excedido.");
	if(color <= 0 || color >= 138)return Clanes(playerid, "Error colores validos 1 - 138.");
	if(!IsPlayerConnected(user))return Clanes(playerid, "Error este jugador no esta conectado.");
	
	new gangid = 0;
	for(new i; i < GANG_NUMBER; i++)
	{
		new file[100];
		format(file, sizeof(file), GANG_FILE, i);
		if(dini_Exists(file))
	{
	strcat(clanname, dini_Get(file, "GANG_NAME"),15);
	if(strfind(clanname, clanname, true) == 0)return Clanes(playerid, "{FFFFFF}Este nombre ya existe en nuestra \n{FF0000}base de datos!");
	}
	else
	if(!dini_Exists(file) && i != 0)
		gangid = i;
	}
	if(gangid == 0)
	{
		GANG_NUMBER++;
		gangid = GANG_NUMBER;
	}
	dini_IntSet(CFG,"GANG_NUMBER",GANG_NUMBER);
	new gfile[3000];
	format(gfile, sizeof(gfile), GANG_FILE, gangid);
	dini_Create(gfile);
	format(GangInfo[gangid][GANG_NAME], sizeof(clanname), "%s", clanname);
	dini_Set(gfile, "GANG_NAME", GangInfo[gangid][GANG_NAME]);
	dini_Set(gfile, "GANG_LIDER", pName(user));
	dini_IntSet(gfile, "GANG_ID", gangid);
	dini_IntSet(gfile,"GANG_MEMBERS",0);
	dini_IntSet(gfile,"GANG_COLOR", color);
	GangInfo[gangid][GANG_ID] = gangid;
	GangInfo[gangid][GANG_MEMBERS] = 0;
	GangInfo[gangid][GANG_COLOR] = color;
	PlayerInfo[user][ClanLider] = gangid;
	format(gfile, sizeof(gfile), "{FFFFFF}Clan creado: {FF0000}%s | {FFFFFF}Id: {FF0000}%d | {FFFFFF}Color: %d", GangInfo[gangid][GANG_NAME], GangInfo[gangid][GANG_ID], GangInfo[gangid][GANG_COLOR]);
	Clanes(user && playerid, gfile);
	GameTextForPlayer(user, "~n~~n~~n~~n~~n~~g~~h~Eres el lider de un nuevo clan!~n~~r~~h~-", 3000, 3);
	GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~g~~h~Clan creado exitosamente!~n~~r~~h~-", 3000, 3);
	JoinGang(user, gangid);
	return 1;
}
Muchas gracias por sus futuras respuestas.



Nota: Algunas cosas me basй del sistema de clanes de Parka, para no tener lнos.


Respuesta: Bug comando clan color - MedinaRockz - 21.05.2017

Creo que no se cambia porque no defines el nombre del archivo del clan que quieres editar...

para mi una soluciуn seria usar un /clancolor [nombre] [color] y con el primer parбmetro buscas

el nombre del archivo, lo abres y cambias la variable del color.


Re: Bug comando clan color - Romero837 - 22.05.2017

Pues el archivo le pone el nombre del ID del clan, entonces ahн estб checkeando el ID y segъn eso le cambia el GANG_COLOR


Respuesta: Re: Bug comando clan color - MedinaRockz - 22.05.2017

Quote:
Originally Posted by Romero837
Посмотреть сообщение
Pues el archivo le pone el nombre del ID del clan, entonces ahн estб checkeando el ID y segъn eso le cambia el GANG_COLOR
Prueba asн

Код:
CMD:clancolor(playerid, params[])
{
    if(PlayerInfo[playerid][AdminLevel] < 5)return Clanes(playerid, "Usted no tiene permisos administrador");
    
	new colorid, gangid, gfile[50];
	
	if(sscanf(params, "dd", gangid, colorid)) return Clanes(playerid, "Utiliza /clancolor [clanID] [ColorID]");
	
	if(colorid <= 0 || colorid >= 138)return Clanes(playerid, "Error colores validos 1 - 137.");
	
	format(gfile, sizeof(gfile), "%d", gangid);
	
	GangInfo[gangid][GANG_COLOR] = colorid;
	
	dini_IntSet(gfile, "GANG_COLOR", colorid);
	
	SendClientMessageEx(playerid,Colores[GangInfo[gangid][GANG_COLOR]],"Este es el nuevo color del Clan: %s",GangInfo[gangid][GANG_NAME]);
	
	return 1;
}



Re: Bug comando clan color - Romero837 - 22.05.2017

El problema es que ese format que cambiaste define la carpeta, el GANG_FILE que esta en el format estб definido como "Usuarios/Clanes/%d.ini" utilizando el ъltimo gangid para que aclare ese %d.ini