On 9/14/98 10:58 PM, The Fractal Dimension Administration (fracdime@geocities.com) stated: >DG-Scripts can be attached not only to mobs but also objects and >rooms. Scripts have a few more commands than mobprogs does and has >sophisticated loop-handling, variables, and a events-based scripting >system meaning you can add delays (pauses) between commands instead >of executing them instantaneously one after the other like MobProgs. BTW the switch in the current version of DGScripts, which I wrote, is "bugged". I fixed it up a long time ago but never bothered to tell anyone :-). The bug is that it builds a comparison for every CASE instance it checks against. This is improper, especially when dealing with random.# as your case instance. Note: these aren't patchable snippets. You'll have to fix up your version based on how it compares to my version. Find find_case in your script engine file: /* * scans for a case/default instance * returns the line containg the correct case instance, or the last * line of the trigger if not found. */ CmdlistElement *find_case(Trigger *trig, CmdlistElement *cl, ScriptObject * go, Script *sc, char *cond) { CmdlistElement *c; char *p, *buf; if (!(cl->next)) return cl; for (c = cl->next; c && c->next; c = c->next) { for (p = c->cmd; *p && isspace(*p); p++); if (!strn_cmp("while ", p, 6) || !strn_cmp("switch", p, 6)) c = find_done(c); else if (!strn_cmp("case ", p, 5)) { buf = get_buffer(MAX_STRING_LENGTH); eval_op("==", cond, p + 5, buf, go, sc, trig); if (*buf && *buf != '0') { release_buffer(buf); return c; } release_buffer(buf); } else if (!strn_cmp("default", p, 7)) return c; else if (!strn_cmp("done", p, 3)) return c; if (!c->next) return c; } return c; } In script_driver, find the "switch" handler: } else if (!strn_cmp("switch ", p, 7)) { char *buf = get_buffer(MAX_STRING_LENGTH); eval_expr(p + 7, buf, go, sc, trig); cl = find_case(trig, cl, go, sc, buf); release_buffer(buf); } else if (!strn_cmp("end", p, 3)) { - Chris Jacobson +------------------------------------------------------------+ | 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