ProjectX
New member
- Messages
- 21
- Points
- 0
Hello! Just want to post here and maybe someone can help me figure this out. I already gave up so I need to ask and hopefully someone can help.
I'm trying to modify the WoE Controller https://github.com/HerculesWS/Hercules/blob/master/npc/custom/woe_controller.txt
To support a 30 minutes interval for start and end time.
This is part of the code.
case 1:
mes "[New Session]";
if (.Size > 127) {
mes "You have already reached the maximum of 32 sessions.";
next;
break;
}
mes "Select a day.";
next;
set .@day, select(" ~ "+implode(.Days$,": ~ "))-1;
mes "[New Session]";
mes "Select a start time for ^0055FF"+.Days$[.@day]+"^000000.";
next;
set .@menu$,"";
for(set .@i,0; .@i<23; set .@i,.@i+1)
set .@menu$, .@menu$+" ~ "+Add_Zero(.@i,1)+":";
set .@start, select(.@menu$)-1;
mes "[New Session]";
mes "Select an end time for ^0055FF"+.Days$[.@day]+"^000000.";
next;
set .@menu$,"";
for(set .@i,.@start+1; .@i<24; set.@i,.@i+1)
set .@menu$, .@menu$+" ~ "+Add_Zero(.@i,1)+":";
set .@end, select(.@menu$)+.@start;
for(set .@i,0; .@i<.Size; set .@i,.@i+4)
if (.@day == $WOE_CONTROL[.@i] &&
((.@start >= $WOE_CONTROL[.@i+1] && .@start < $WOE_CONTROL[.@i+2]) ||
(.@end > $WOE_CONTROL[.@i+1] && .@end <= $WOE_CONTROL[.@i+2]) ||
(.@start <= $WOE_CONTROL[.@i+1] && .@end >= $WOE_CONTROL[.@i+2]))) {
mes "[New Session]";
mes "The chosen times overlap with an existing session.";
next;
set .@d,1;
break;
}
if (.@d) { set .@d,0; break; }
This is what I have right now
set .@menu$,"";
for(set .@i,0; .@i<48; set .@i,.@i+1)
set .@menu$, .@menu$+" ~ "+Add_Zero(.@i/2,1)+":"+(.@i%2==0?"00":"30");
set .@start, select(.@menu$)-1;
set .@start, .@start*30;
mes "[New Session]";
mes "Select an end time for ^0055FF"+.Days$[.@day]+"^000000.";
next;
set .@menu$,"";
for(set .@i,.@start/30+1; .@i<48; set .@i,.@i+1)
set .@menu$, .@menu$+" ~ "+Add_Zero(.@i/2,1)+":"+(.@i%2==0?"00":"30");
set .@end, select(.@menu$)-1;
set .@end, .@end*30;
Another attempt
for(set .@i,0; .@i<48; set .@i,.@i+1)
set .@menu$, .@menu$+" ~ "+sprintf("%02d:%02d", .@i/2, .@i%2*30);
set .@start, select(.@menu$)-1;
set .@start, .@start*30;
mes "[New Session]";
mes "Select an end time for ^0055FF"+.Days$[.@day]+"^000000.";
next;
set .@menu$,"";
for(set .@i,.@start/30+1; .@i<48; set .@i,.@i+1)
set .@menu$, .@menu$+" ~ "+sprintf("%02d:%02d", .@i/2, .@i%2*30);
set .@end, select(.@menu$)-1;
set .@end, .@end*30;
Output in-game. Can anyone point me in the right direction?

I'm trying to modify the WoE Controller https://github.com/HerculesWS/Hercules/blob/master/npc/custom/woe_controller.txt
To support a 30 minutes interval for start and end time.
This is part of the code.
case 1:
mes "[New Session]";
if (.Size > 127) {
mes "You have already reached the maximum of 32 sessions.";
next;
break;
}
mes "Select a day.";
next;
set .@day, select(" ~ "+implode(.Days$,": ~ "))-1;
mes "[New Session]";
mes "Select a start time for ^0055FF"+.Days$[.@day]+"^000000.";
next;
set .@menu$,"";
for(set .@i,0; .@i<23; set .@i,.@i+1)
set .@menu$, .@menu$+" ~ "+Add_Zero(.@i,1)+":";
set .@start, select(.@menu$)-1;
mes "[New Session]";
mes "Select an end time for ^0055FF"+.Days$[.@day]+"^000000.";
next;
set .@menu$,"";
for(set .@i,.@start+1; .@i<24; set.@i,.@i+1)
set .@menu$, .@menu$+" ~ "+Add_Zero(.@i,1)+":";
set .@end, select(.@menu$)+.@start;
for(set .@i,0; .@i<.Size; set .@i,.@i+4)
if (.@day == $WOE_CONTROL[.@i] &&
((.@start >= $WOE_CONTROL[.@i+1] && .@start < $WOE_CONTROL[.@i+2]) ||
(.@end > $WOE_CONTROL[.@i+1] && .@end <= $WOE_CONTROL[.@i+2]) ||
(.@start <= $WOE_CONTROL[.@i+1] && .@end >= $WOE_CONTROL[.@i+2]))) {
mes "[New Session]";
mes "The chosen times overlap with an existing session.";
next;
set .@d,1;
break;
}
if (.@d) { set .@d,0; break; }
This is what I have right now
set .@menu$,"";
for(set .@i,0; .@i<48; set .@i,.@i+1)
set .@menu$, .@menu$+" ~ "+Add_Zero(.@i/2,1)+":"+(.@i%2==0?"00":"30");
set .@start, select(.@menu$)-1;
set .@start, .@start*30;
mes "[New Session]";
mes "Select an end time for ^0055FF"+.Days$[.@day]+"^000000.";
next;
set .@menu$,"";
for(set .@i,.@start/30+1; .@i<48; set .@i,.@i+1)
set .@menu$, .@menu$+" ~ "+Add_Zero(.@i/2,1)+":"+(.@i%2==0?"00":"30");
set .@end, select(.@menu$)-1;
set .@end, .@end*30;
Another attempt
for(set .@i,0; .@i<48; set .@i,.@i+1)
set .@menu$, .@menu$+" ~ "+sprintf("%02d:%02d", .@i/2, .@i%2*30);
set .@start, select(.@menu$)-1;
set .@start, .@start*30;
mes "[New Session]";
mes "Select an end time for ^0055FF"+.Days$[.@day]+"^000000.";
next;
set .@menu$,"";
for(set .@i,.@start/30+1; .@i<48; set .@i,.@i+1)
set .@menu$, .@menu$+" ~ "+sprintf("%02d:%02d", .@i/2, .@i%2*30);
set .@end, select(.@menu$)-1;
set .@end, .@end*30;
Output in-game. Can anyone point me in the right direction?

