Jestliže chceš deklarovat vždy novou proměnnou během psaní jakéhokoliv příkazu, tak budiž. Problém ale je, že při formátování to zjištěné jméno ani nezobrazuješ.
format(string, sizeof string, "%s Has changed the world time", pName);
Vzledem k tomu, že používáš jenom jeden parametr, určitě na to nepotřebuješ sscanf() ale klidně použit celé params[]:
(A doporučuji si najít funkci IsNumeric(), která zamezí, aby šlo vepisovat cokoliv jiného kromě čísla, jinak by místo číšel šlo psát i písmenka).
if (!IsNumeric(params)) return SendClientMessage(playerid, -1, "Pouze cisla !");
if(strval(params) < 0 || strval(params) > 23) return SendClientMessage(playerid,-1, "[ERROR] {FFFFFF} /time (0-23)");
Další problém je, že ten následný čas ani nenastavuješ:
SetWorldTime(strval(params));