int start_playing (void) { // int i; #ifdef DEBSEQU fprintf (stderr, "-->start_playing\n"); #endif if (initcurEVplay == NULL) /* il faut avoir qqchose a rejouer... */ { #ifdef DEBSEQU fprintf (stderr, "-->start_playing curEVplay == NULL on arrete de jouer\n"); #endif isreplaying = 0; return 0; } curEVplay = initcurEVplay; curEVplay->cur = 0; /* JDJDJDJD un rewind violent */ #ifdef DEBSEQU fprintf (stderr, "-->start_playing debut lecture des freezes\n"); #endif while ((getnextevent (&curEVplay, &nplay) == 0) && (nplay.dtime == 0)) /* lire les freezes */ play_event (&nplay); #ifdef DEBSEQU fprintf (stderr, "-->start_playing fin lecture des freezes\n"); fprintf (stderr, "-->start_playing debut resync patterns\n"); #endif // initPatbut (gpatbut[0], -2, -1, -1); // fprintf (stderr, "fini i=0\n"); // for (i = MAXSAMPLE; i < MAXVOICES; i++) /* initialisation a partir de la valeur prochaine */ // { // fprintf (stderr, "on est en i=%d\n", i); // initPatbut (gpatbut[i], -2, -1, -1); // } { int voice = 0; voice = tickchange_pattern (voice); voice = tickchange_analogik (voice); voice = tickchange_dyfilter (voice); voice = tickchange_delay (voice); } #ifdef DEBSEQU fprintf (stderr, "-->start_playing fin resync patterns\n"); #endif if (nplay.type != GREV_END) isreplaying = 1; #ifdef DEBSEQU fprintf (stderr, "-->start_playing ca joue avec isreplaying=%d\n", isreplaying); #endif return isreplaying; }
void tickchange_play (void) { nplay.dtime--; if (nplay.dtime != 0) return; if (nplay.type != GREV_END) play_event (&nplay); else { isreplaying = 0; return; } while ((getnextevent (&curEVplay, &nplay) == 0) && (nplay.dtime == 0)) play_event (&nplay); }
ulong sbbs_t::gettimeleft(bool handle_out_of_time) { char str[128]; char tmp[512]; event_t nextevent; now=time(NULL); timeleft = (ulong)::gettimeleft(&cfg, &useron, starttime); /* Timed event time reduction handler */ event_time=getnextevent(&cfg, &nextevent); if(event_time) event_code=nextevent.code; if(event_time && now+(time_t)timeleft>event_time) { /* less time, set flag */ if(event_time<now) timeleft=0; else timeleft=(ulong)(event_time-now); if(!(sys_status&SS_EVENT)) { lprintf(LOG_NOTICE,"Node %d Time reduced (to %s) due to upcoming event (%s) on %s" ,cfg.node_num,sectostr(timeleft,tmp),event_code,timestr(event_time)); sys_status|=SS_EVENT; } } if((long)timeleft<0) /* timeleft can't go negative */ timeleft=0; if(thisnode.status==NODE_NEWUSER) { timeleft=cfg.level_timepercall[cfg.new_level]; if(timeleft<10*60L) timeleft=10*60L; } if(handle_out_of_time && !gettimeleft_inside) /* The following code is not recursive */ { gettimeleft_inside=1; if(!timeleft && !SYSOP && !(sys_status&SS_LCHAT)) { logline(LOG_NOTICE,nulstr,"Ran out of time"); SAVELINE; if(sys_status&SS_EVENT) bprintf(text[ReducedTime],timestr(event_time)); bputs(text[TimesUp]); if(!(sys_status&(SS_EVENT|SS_USERON)) && useron.cdt>=100L*1024L && !(cfg.sys_misc&SM_NOCDTCVT)) { SAFEPRINTF(tmp,text[Convert100ktoNminQ],cfg.cdt_min_value); if(yesno(tmp)) { logline(" ","Credit to Minute Conversion"); useron.min=adjustuserrec(&cfg,useron.number,U_MIN,10,cfg.cdt_min_value); useron.cdt=adjustuserrec(&cfg,useron.number,U_CDT,10,-(102400L)); SAFEPRINTF(str,"Credit Adjustment: %ld",-(102400L)); logline("$-",str); SAFEPRINTF(str,"Minute Adjustment: %u",cfg.cdt_min_value); logline("*+",str); RESTORELINE; gettimeleft(); gettimeleft_inside=0; return timeleft; } } if(cfg.sys_misc&SM_TIME_EXP && !(sys_status&SS_EVENT) && !(useron.exempt&FLAG('E'))) { /* set to expired values */ bputs(text[AccountHasExpired]); SAFEPRINTF(str,"%s Expired",useron.alias); logentry("!%",str); if(cfg.level_misc[useron.level]&LEVEL_EXPTOVAL && cfg.level_expireto[useron.level]<10) { useron.flags1=cfg.val_flags1[cfg.level_expireto[useron.level]]; useron.flags2=cfg.val_flags2[cfg.level_expireto[useron.level]]; useron.flags3=cfg.val_flags3[cfg.level_expireto[useron.level]]; useron.flags4=cfg.val_flags4[cfg.level_expireto[useron.level]]; useron.exempt=cfg.val_exempt[cfg.level_expireto[useron.level]]; useron.rest=cfg.val_rest[cfg.level_expireto[useron.level]]; if(cfg.val_expire[cfg.level_expireto[useron.level]]) useron.expire=(time32_t)now +(cfg.val_expire[cfg.level_expireto[useron.level]]*24*60*60); else useron.expire=0; useron.level=cfg.val_level[cfg.level_expireto[useron.level]]; } else { if(cfg.level_misc[useron.level]&LEVEL_EXPTOLVL) useron.level=cfg.level_expireto[useron.level]; else useron.level=cfg.expired_level; useron.flags1&=~cfg.expired_flags1; /* expired status */ useron.flags2&=~cfg.expired_flags2; /* expired status */ useron.flags3&=~cfg.expired_flags3; /* expired status */ useron.flags4&=~cfg.expired_flags4; /* expired status */ useron.exempt&=~cfg.expired_exempt; useron.rest|=cfg.expired_rest; useron.expire=0; } putuserrec(&cfg,useron.number,U_LEVEL,2,ultoa(useron.level,str,10)); putuserrec(&cfg,useron.number,U_FLAGS1,8,ultoa(useron.flags1,str,16)); putuserrec(&cfg,useron.number,U_FLAGS2,8,ultoa(useron.flags2,str,16)); putuserrec(&cfg,useron.number,U_FLAGS3,8,ultoa(useron.flags3,str,16)); putuserrec(&cfg,useron.number,U_FLAGS4,8,ultoa(useron.flags4,str,16)); putuserrec(&cfg,useron.number,U_EXPIRE,8,ultoa((ulong)useron.expire,str,16)); putuserrec(&cfg,useron.number,U_EXEMPT,8,ultoa(useron.exempt,str,16)); putuserrec(&cfg,useron.number,U_REST,8,ultoa(useron.rest,str,16)); if(cfg.expire_mod[0]) exec_bin(cfg.expire_mod,&main_csi); RESTORELINE; gettimeleft(); gettimeleft_inside=0; return timeleft; } SYNC; hangup(); } gettimeleft_inside=0; } return timeleft; }