06.06.2012, 15:41
Buenas amigos quisiera saber si me echan una mano con este sistema dinamico de facciones que esta en DINI y quisiera pasarlo a Y_ini lo intente pero me lanzaba error y bueno vine a acudir a sus ayudas.
Guardado y cargado de datos:
CMDґS:
Enum:
Espero que puedan ayudarme por favor Gracias de ante mano.
Guardado y cargado de datos:
pawn Код:
stock IsInvalidSkin(skin)
{
#define MAX_BAD_SKINS 14
new badSkins[MAX_BAD_SKINS] =
{
3, 4, 5, 6, 8, 42, 65, 74, 86,
119, 149, 208, 273, 289
};
for (new i = 0; i < MAX_BAD_SKINS; i++)
{
if (skin == badSkins[i] || skin < 0 || skin >= 300) return true;
}
return false;
}
stock CargarFacciones()
{
new FileName[1024];
for(new i = 0; i < MAX_FACCIONES; i++)
{
format(FileName, sizeof(FileName), "DataCenter/Facciones/Faccion_%d.ini", i);
if(fexist(FileName))
{
Facciones[i][NombreFaccion] = dini_Get(FileName, "NombreFaccion");
Facciones[i][Tipo] = dini_Int(FileName, "Tipo");
Facciones[i][NombreRango1] = dini_Get(FileName, "NombreRango1");
Facciones[i][NombreRango2] = dini_Get(FileName, "NombreRango2");
Facciones[i][NombreRango3] = dini_Get(FileName, "NombreRango3");
Facciones[i][NombreRango4] = dini_Get(FileName, "NombreRango4");
Facciones[i][NombreRango5] = dini_Get(FileName, "NombreRango5");
Facciones[i][NombreRango6] = dini_Get(FileName, "NombreRango6");
Facciones[i][SkinRango1] = dini_Int(FileName, "SkinRango1");
Facciones[i][SkinRango2] = dini_Int(FileName, "SkinRango2");
Facciones[i][SkinRango3] = dini_Int(FileName, "SkinRango3");
Facciones[i][SkinRango4] = dini_Int(FileName, "SkinRango4");
Facciones[i][SkinRango5] = dini_Int(FileName, "SkinRango5");
Facciones[i][SkinRango6] = dini_Int(FileName, "SkinRango6");
Facciones[i][Miembros] = dini_Int(FileName, "Miembros");
Facciones[i][LiderOficial] = dini_Get(FileName, "LiderOficial");
printf("[Sistema] Faccion %d cargada.", i);
printf("Faccion %d Nombre: %s Lider:%s ",i,Facciones[i][NombreFaccion],Facciones[i][LiderOficial]);
facciones++;
}
}
return 1;
}
stock GuardarFaccion(i)
{
new FileName[1024];
format(FileName, sizeof(FileName), "DataCenter/Facciones/Faccion_%d.ini", i);
if(fexist(FileName))
{
dini_Set(FileName, "NombreFaccion", Facciones[i][NombreFaccion]);
dini_IntSet(FileName, "Tipo", Facciones[i][Tipo]);
dini_Set(FileName, "NombreRango1", Facciones[i][NombreRango1]);
dini_Set(FileName, "NombreRango2", Facciones[i][NombreRango2]);
dini_Set(FileName, "NombreRango3", Facciones[i][NombreRango3]);
dini_Set(FileName, "NombreRango4", Facciones[i][NombreRango4]);
dini_Set(FileName, "NombreRango5", Facciones[i][NombreRango5]);
dini_Set(FileName, "NombreRango6", Facciones[i][NombreRango6]);
dini_IntSet(FileName, "SkinRango1", Facciones[i][SkinRango1]);
dini_IntSet(FileName, "SkinRango2", Facciones[i][SkinRango2]);
dini_IntSet(FileName, "SkinRango3", Facciones[i][SkinRango3]);
dini_IntSet(FileName, "SkinRango4", Facciones[i][SkinRango4]);
dini_IntSet(FileName, "SkinRango5", Facciones[i][SkinRango5]);
dini_IntSet(FileName, "SkinRango6", Facciones[i][SkinRango6]);
dini_IntSet(FileName, "Miembros", Facciones[i][Miembros]);
dini_Set(FileName, "LiderOficial", Facciones[i][LiderOficial]);
printf("[Sistema] Faccion %d guardada.", i);
}
else
{
printf("Imposible guardar(%d).", i);
}
}
stock GuardarFacciones()
{
for(new i = 0; i < facciones; i++)
{
GuardarFaccion(i);
}
return 1;
}
pawn Код:
YCMD:cambiarrangos(playerid, params[])
{
new rankname[128], rank, string[128];
if(sscanf(params, "ds[256]", rank, rankname))
{
SendClientMessage(playerid, COLOR_WHITE, "USO: /cambiarrangos <Rango> <Nombre>");
}
else
{
if(PlayerInfo[playerid][FRank] >= 6 && PlayerInfo[playerid][Faccion] >= 1)
{
if(rank < 7 && rank > 0)
{
if(strlen(rankname) >= 1 && strlen(rankname) < 20)
{
switch(rank)
{
case 1: format(Facciones[PlayerInfo[playerid][Faccion]][NombreRango1], 255, "%s", rankname);
case 2: format(Facciones[PlayerInfo[playerid][Faccion]][NombreRango2], 255, "%s", rankname);
case 3: format(Facciones[PlayerInfo[playerid][Faccion]][NombreRango3], 255, "%s", rankname);
case 4: format(Facciones[PlayerInfo[playerid][Faccion]][NombreRango4], 255, "%s", rankname);
case 5: format(Facciones[PlayerInfo[playerid][Faccion]][NombreRango5], 255, "%s", rankname);
case 6: format(Facciones[PlayerInfo[playerid][Faccion]][NombreRango6], 255, "%s", rankname);
}
format(string, sizeof(string), "Has cambiado el rango %d a %s.", rank, rankname);
SendClientMessage(playerid, COLOR_WHITE, string);
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "El nombre del rango no puede ser mas de 10 caracteres o menos de 1.");
}
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Rango Invalido (1-6)");
}
}
}
return 1;
}
YCMD:tipofaccion(playerid, params[])
{
new GroupID, GroupType, string[128];
if(sscanf(params, "dd", GroupID, GroupType))
{
if(PlayerInfo[playerid][Admin] >= 5)
{
SendClientMessage(playerid, COLOR_WHITE, "Uso: /tipofaccion <ID> <Tipo> (ID)");
}
}
else
{
if(PlayerInfo[playerid][Admin] >= 5)
{
format(string, sizeof(string), "DataCenter/Facciones/Faccion_%d.ini", GroupID);
if(fexist(string))
{
Facciones[GroupID][Tipo] = GroupType;
format(string, sizeof(string), "Has seteado a %s el tipo de %d.", Facciones[GroupID][NombreFaccion], GroupType);
SendClientMessage(playerid, COLOR_WHITE, string);
GuardarFaccion(GroupID);
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "ID Invalida!");
}
}
}
return 1;
}
YCMD:nombrefaccion(playerid, params[])
{
new GroupID, NombreFaccion2[256], string[128];
if(sscanf(params, "ds[256]", GroupID, NombreFaccion2))
{
if(PlayerInfo[playerid][Admin] >= 5)
{
SendClientMessage(playerid, COLOR_WHITE, "Uso: /nombrefaccion <ID> <Nombre>");
}
}
else
{
if(PlayerInfo[playerid][Admin] >= 5)
{
format(string, sizeof(string), "DataCenter/Facciones/Faccion_%d.ini", GroupID);
if(strlen(NombreFaccion2) >= 1 && strlen(NombreFaccion2) < 20)
{
if(fexist(string))
{
format(Facciones[GroupID][NombreFaccion], 255, "%s", NombreFaccion2);
format(string, sizeof(string), "Has seteado a %s la faccion.", Facciones[GroupID][NombreFaccion]);
SendClientMessage(playerid, COLOR_WHITE, string);
GuardarFaccion(GroupID);
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "ID Invalida!");
}
}
}
}
return 1;
}
YCMD:skinfacciones (playerid, params[])
{
new skin, skinslot, GroupID, string[128];
if(sscanf(params, "ddd", GroupID, skinslot, skin))
{
if(PlayerInfo[playerid][Admin] >= 5)
{
SendClientMessage(playerid, COLOR_WHITE, "Uso: /skinfacciones [IDFaccion] [Skin Rango 1-6] [IDSkin]");
}
}
else
{
if(PlayerInfo[playerid][Admin] >= 5)
{
format(string, sizeof(string), "DataCenter/Facciones/Faccion_%d.ini", GroupID);
if(fexist(string))
{
if(skinslot < 7 && skinslot >= 0)
{
if(!IsInvalidSkin(skin))
{
switch(skinslot)
{
case 1: Facciones[PlayerInfo[playerid][Faccion]][SkinRango1] = skin;
case 2: Facciones[PlayerInfo[playerid][Faccion]][SkinRango2] = skin;
case 3: Facciones[PlayerInfo[playerid][Faccion]][SkinRango3] = skin;
case 4: Facciones[PlayerInfo[playerid][Faccion]][SkinRango4] = skin;
case 5: Facciones[PlayerInfo[playerid][Faccion]][SkinRango5] = skin;
case 6: Facciones[PlayerInfo[playerid][Faccion]][SkinRango6] = skin;
}
format(string, sizeof(string), "Has cambiado al skin rango %d, skin %d.", skinslot, skin);
SendClientMessage(playerid, COLOR_WHITE, string);
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Skin Invalido.");
}
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Slot Invalido 1-6.");
}
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Faccion Invalida.");
}
}
}
return 1;
}
pawn Код:
new facciones;
enum InfoFacciones
{
NombreFaccion[255],
Tipo,
NombreRango1[255],
NombreRango2[255],
NombreRango3[255],
NombreRango4[255],
NombreRango5[255],
NombreRango6[255],
SkinRango1,
SkinRango2,
SkinRango3,
SkinRango4,
SkinRango5,
SkinRango6,
Miembros,
LiderOficial[255],
}
;
new Facciones[MAX_FACCIONES][InfoFacciones];