make a script file in l2walker, paste this:
// use // for a comment
//The script below uses a start and finish label to loop
//it goes from top to bottom, creates powder, waits 300ms
//repeats, then it hits JMP start, which makes it jump to the start label
//repetition ad infinitum

//
///////////////////////////////
//USEITEM(Recipe: Soulshot: D Grade[ID=1804]) //SSD
//USEITEM(Recipe: Soulshot: C Grade[ID=1805]) //SSC
//USEITEM(Recipe: Soulshot: B Grade[ID=1806]) //SSB
//USEITEM(Recipe: Soulshot: A Grade[ID=1807]) //SSA
//
//USEITEM(Recipe: Spiritshot D[ID=3032]) //SPSD
//USEITEM(Recipe: Spiritshot C[ID=3033]) //SPSC
//USEITEM(Recipe: Spiritshot B[ID=3034]) //SPSB
//USEITEM(Recipe: Spiritshot A[ID=3035]) //SPSA
//
//USEITEM(Recipe: Blessed Spiritshot D[ID=3953) //BSPSD
//USEITEM(Recipe: Blessed Spiritshot C[ID=3954) //BSPSC
//USEITEM(Recipe: Blessed Spiritshot B[ID=3955) //BSPSB
//USEITEM(Recipe: Blessed Spiritshot A[ID=3956) //BSPSA
//
//////////////////////////////////////
LABEL(Start)
USEITEM(Recipe: [ _ID_ ]) //paste the correct recepie ID in place of _ID_
DLGSEL([Create])
DELAY(300)
JMP(Start)