I've posted a fully working piece of code. It's almost direct copy and paste from my own works. With a little bit of manipulation it will do exactly what you want...
InSim.Send_BTN_CreateButton("" + Connections[GetConnIdx(Players[GetPlyIdx(MCI.Info[1].PLID)].UniqueID)].PlayerName + " ^7speed : ^3" + (MCI.Info[i].Speed / 91), Flags.ButtonStyles.ISB_DARK, 6, 30, 163, ButtonX, ButtonID, Connections[GetConnIdx(Players[GetPlyIdx(MCI.Info[i].PLID)].UniqueID)].UniqueID, 2, false);
byte ButtonID = 85; // Replace 5 with whatever you want the ID of the first button to be...
byte ButtonX = 12; // Or whatever you want the first button to be...
for (int i = 0; i < Players.Count; i++)
{
InSim.Send_BTN_CreateButton("" + Connections[GetConnIdx(Players[GetPlyIdx(MCI.Info[1].PLID)].UniqueID)].PlayerName + " ^7speed : ^3" + (MCI.Info[i].Speed / 91), Flags.ButtonStyles.ISB_DARK, 6, 30, 163, 12,85, Connections[GetConnIdx(Players[GetPlyIdx(MCI.Info[i].PLID)].UniqueID)].UniqueID, 2, false);
ButtonID++;
ButtonX += 7; //Replace 6 with the height of each button + 1
}
Players[GetPlyIdx(MCI.Info[i].PLID)].Payout += ConvSpeed;