Also eine kurze Erklärung:
Es wäre gut möglich sowas mit einem switch zu machen. Im Spoiler ist das Beispiel dafür:
switch(rID)
{
case 1: format(fInfo[frak][f_Rank1],50,string);
case 2: format(fInfo[frak][f_Rank2],50,string);
//usw
}
Aber wie du siehst, würde das ziemlich lang werden.
Man kann hier auch tricksen. Da bei deinem enum das erste Element in diesem Fall f_id die ID 0 hat und dann hochgezählt wird um 1 immer, hat also f_Rank1 die id 9.
Folglich könntest du es einfach so machen:
ocmd:setfrank(playerid,params[])
{
new rID,string[128];
if(sInfo[playerid][Rank] < 11)return SendClientMessage(playerid,rot,"Du bist nicht der Leader");
if(sscanf(params,"is[50]",rID,string)) return SendClientMessage(playerid,rot,"Verwendung: /setfrank [Rank 1-12] [Name]");
if(rID <= 0 || rID > 12) return SendClientMessage(playerid,rot,"Der Rank muss zwischen 1-12 liegen!");
new frak = sInfo[playerid][Fraktion]; //Hier sInfo evtl anpassen, da ich nicht den Namen für die Frak kenne
format(fInfo[frak][fracEnum:(rID+8)],50,string);
format(string,sizeof(string),"Du hast den Name von Rank: %i in %s geändert.",rID,string);
SendClientMessage(playerid,grün,string);
return 1;
}
Alles anzeigen
Damit der Trick auch in Zukunft immer funktioniert, einfach im Enum bitte jetzt wenn etwas neues hinzukommt unten anfügen 
Wenn dir das zu unsicher ist, kannst du auch Methode 1 verwenden 