well I have this idea but have no clue how to impliment it or have seens
it been done anywhere, I just herd people once talking about it.
First I was woundering if anyone has some ideas of how to impliment
freeze/jail times outs for example, a grgod types freeze TempChar 1
where the stynax is:
freeze name [years, months, days, hours, minutes]
now if years - minutes are 0 then they are frozen till the imm or a
higher level imm unfreezes.
well the main problem I have is how would you store that, well the main
problem is using the date functions, I have no clue which they are nor
are they mentioned in my programming book. Well I have the following
idea of how to do this but please tell me what I should add to it what I
should change that kinda thing.
I added a struct called timeout.
the declairations is following:
well 2 structs:
struct adate {
int year;
int month;
int day;
int minute;
}
struct timeout {
struct adate frozendate;
struct adate thawdates;
void freezecheck(struct char_date *ch);
}
and I mad a struct in player_data and player_file_elem I think. I'm not
quite sure on the exact names. but I added "struct timeout timeout" to
both of them. Then as the function to be done when the person enters the
game is a check like to following:
void freezecheck::timeout(struct char_date *ch) {
int curyear;
int curmonth;
int curday;
int curmin;
struct adate thawdate;
if (frozendate.year != 0) {
if (thawdate.month != 0) {
if (thawdate.day != 0) {
if (thawdate.minute != 0) {
curmin = Get_cur_min;
curday = get_cur_day;
curmonth = get_cur_month;
curyear = get_cur_year;
thawdate.year = (frozendate.year + thawdates.year);
thawdate.month = (frozendate.month + thawdates.month);
thawdate.day = (frozendate.day + thawdates.day);
thawdate.minute = (frozendate.minute + thawdates.minute);
if (thawdate.year >= (curyear + 1)
remove_bit(PLR_FROZEN, ch); return;
else if (thawdate.year == curyear) {
if (thawdate.month >= (curmonth + 1)
remove_bit(PLR_FROZEN, ch); return;
else if (thawdate.month == curmonth) {
if (thawdate.day >= (curday + 1))
remove_bit(PLR_FROZEN, ch); return;
else if (thawdate.day == curday) {
if (thawdate.minute >= curminute)
remove_bit(PLR_FROZEN, ch); return;
return;
}
return;
}
return;
}
}
}
/*well that's the procedure that will likely happen unless the imm
does this at exactly 1:00, 2:00 ect or sets the date less than 1 year
or 1 month or 1 day*/
/* I didn't want to spamm everyone allot so the rest is not included
but is practiclly identical to the one above, it should make sense
it's the same process*/
}
}
}
now that's just the code to see if it's the right date to unfreeze or
not. if it is it unfreezes the char.
I basicly wanted people to look at it check it out say what I should do
to fix it make it faster make it smaller and still work. ideas about it
comments. that kinda thing.
Thank you,
-Matt
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST