help make code

const int ledfwd =  11;
const int ledrvs =  10;
const int ledrly =  8;
int ledState1 = LOW; 
int ledState2 = LOW;
int ledState3 = LOW;
unsigned long previousMillis1 = 0; // light on for
unsigned long previousMillis2 = 0;
unsigned long previousMillis3 = 0;
unsigned long previousMillis4 = 0;
const long interval1 = 1000; //light on for
const long interval2 = 2000; //relay off/on time
const long interval3 = 3000; //accumulated on time
const long interval4 = 4000; //duty cycle



void setup() {

  pinMode(ledfwd, OUTPUT);
}

void loop() {
  
  unsigned long currentMillis1 = millis();
  unsigned long currentMillis2 = millis();
  unsigned long currentMillis3 = millis();
  unsigned long currentMillis4 = millis();

  if (currentMillis1 - previousMillis1 >= interval1) {
     previousMillis1 = currentMillis1;

    if (ledState1 == LOW) {
      ledState1 = HIGH;
    } else {
      ledState1 = LOW;
    }
    digitalWrite(ledfwd, ledState1);
  }
}

so I have the code from blink without delay. the end result is

ledfwd on at intervals "interval4" for a time "interval1", off rest of time. when ledfwd has accumulated "interval3" on time then turn off for "interval2" time. turn on ledrly for"interval2 time", turn off for interval2 time, then switch to ledrvs.

ledrvs on at intervals "interval4" for a time "interval1", off rest of time. when ledrvs has accumulated "interval3" on time then turn off for "interval2" time. turn on ledrly for"interval2 time", turn off for interval2 time, then switch to ledfwd.

then repeat

oh also the the off cycle will not turn on until after it has finished the interval1 timer it is on. it also has to store how far over it went to change the interval3 timer. lastly the interval 3 timer can never go outside of 5% of its original value

Are you saying the program works just the way you want it?

Paul

I am saying that I have NO IDEA how to code it to do what i wrote.

freerpg: the end result is

Do you mean "What I want it to do is"?

yes

First thing I would do is rename my variables to something more meaningful. This will make it easier to understand, not only for you, but for us helping you too.
So instead of previousMillis1 use fwdOnTime and instead of interval1 use lightOnInterval. Whatever makes sense to you. This way whenever you look at a variable name you know what it is for instead of having to remember what interval1 is for and previousMillis4 is used for.

The demo Several Things at a Time is an extended example of BWoD and illustrates the use of millis() to manage timing without blocking. It may help with understanding the technique.

Have a look at Using millis() for timing. A beginners guide if you need more explanation.

...R