int door_mtrigger(char_data *actor, int subcmd, int dir) { trig_data *t; char_data *ch; char buf[MAX_INPUT_LENGTH]; for (ch = world[IN_ROOM(actor)].people; ch; ch = ch->next_in_room) { if (!SCRIPT_CHECK(ch, MTRIG_DOOR) || !AWAKE(ch) || FIGHTING(ch) || (ch == actor) || AFF_FLAGGED(ch, AFF_CHARM)) continue; for (t = TRIGGERS(SCRIPT(ch)); t; t = t->next) { if (IS_SET(GET_TRIG_TYPE(t), MTRIG_DOOR) && CAN_SEE(ch, actor) && !GET_TRIG_DEPTH(t) && (rand_number(1, 100) <= GET_TRIG_NARG(t))) { add_var(&GET_TRIG_VARS(t), "cmd", cmd_door[subcmd], 0); if (dir >= 0 && dir < DIR_COUNT) add_var(&GET_TRIG_VARS(t), "direction", dirs[dir], 0); else add_var(&GET_TRIG_VARS(t), "direction", "none", 0); ADD_UID_VAR(buf, t, actor, "actor", 0); return script_driver(&ch, t, MOB_TRIGGER, TRIG_NEW); } } } return 1; }
/* checks for command trigger on specific object. assumes obj has cmd trig */ int cmd_otrig(obj_data *obj, char_data *actor, char *cmd, char *argument, int type) { trig_data *t; char buf[MAX_INPUT_LENGTH]; if (obj && SCRIPT_CHECK(obj, OTRIG_COMMAND)) for (t = TRIGGERS(SCRIPT(obj)); t; t = t->next) { if (!TRIGGER_CHECK(t, OTRIG_COMMAND)) continue; if (IS_SET(GET_TRIG_NARG(t), type) && (!GET_TRIG_ARG(t) || !*GET_TRIG_ARG(t))) { mudlog(NRM, LVL_BUILDER, TRUE, "SYSERR: O-Command Trigger #%d has no text argument!", GET_TRIG_VNUM(t)); continue; } if (IS_SET(GET_TRIG_NARG(t), type) && (*GET_TRIG_ARG(t) == '*' || !strn_cmp(GET_TRIG_ARG(t), cmd, strlen(GET_TRIG_ARG(t))))) { ADD_UID_VAR(buf, t, actor, "actor", 0); skip_spaces(&argument); add_var(&GET_TRIG_VARS(t), "arg", argument, 0); skip_spaces(&cmd); add_var(&GET_TRIG_VARS(t), "cmd", cmd, 0); if (script_driver(&obj, t, OBJ_TRIGGER, TRIG_NEW)) return 1; } } return 0; }
grobner::monomial * grobner::mk_monomial(rational const & coeff, expr * m) { monomial * r = alloc(monomial); if (m_util.is_numeral(m, r->m_coeff)) { r->m_coeff *= coeff; return r; } if (m_util.is_mul(m)) { expr * body = m; SASSERT(!m_util.is_numeral(to_app(m)->get_arg(1))); // monomial is in normal form if (m_util.is_numeral(to_app(m)->get_arg(0), r->m_coeff)) { r->m_coeff *= coeff; body = to_app(m)->get_arg(1); } else { r->m_coeff = coeff; } while (m_util.is_mul(body)) { add_var(r, to_app(body)->get_arg(0)); body = to_app(body)->get_arg(1); } add_var(r, body); std::stable_sort(r->m_vars.begin(), r->m_vars.end(), m_var_lt); } else { r->m_coeff = coeff; r->m_vars.push_back(m); m_manager.inc_ref(m); } return r; }
int consume_otrigger(obj_data *obj, char_data *actor, int cmd) { trig_data *t; char buf[MAX_INPUT_LENGTH]; int ret_val; if (!SCRIPT_CHECK(obj, OTRIG_CONSUME)) return 1; for (t = TRIGGERS(SCRIPT(obj)); t; t = t->next) { if (TRIGGER_CHECK(t, OTRIG_CONSUME)) { ADD_UID_VAR(buf, t, actor, "actor", 0); switch (cmd) { case OCMD_EAT: add_var(&GET_TRIG_VARS(t), "command", "eat", 0); break; case OCMD_DRINK: add_var(&GET_TRIG_VARS(t), "command", "drink", 0); break; case OCMD_QUAFF: add_var(&GET_TRIG_VARS(t), "command", "quaff", 0); break; } ret_val = script_driver(&obj, t, OBJ_TRIGGER, TRIG_NEW); /* Don't allow a wear to take place, if the object is purged. */ if (!obj) return 0; else return ret_val; } } return 1; }
int greet_mtrigger(char_data *actor, int dir) { trig_data *t = NULL; char_data *ch = NULL; char buf[MAX_INPUT_LENGTH] = {'\0'}; int intermediate = 0, final = TRUE; if (!valid_dg_target(actor, DG_ALLOW_GODS)) return TRUE; for (ch = world[IN_ROOM(actor)].people; ch; ch = ch->next_in_room) { if (!SCRIPT_CHECK(ch, MTRIG_GREET | MTRIG_GREET_ALL) || !AWAKE(ch) || FIGHTING(ch) || (ch == actor) || AFF_FLAGGED(ch, AFF_CHARM)) continue; for (t = TRIGGERS(SCRIPT(ch)); t; t = t->next) { if (((IS_SET(GET_TRIG_TYPE(t), MTRIG_GREET) && CAN_SEE(ch, actor)) || IS_SET(GET_TRIG_TYPE(t), MTRIG_GREET_ALL)) && !GET_TRIG_DEPTH(t) && (rand_number(1, 100) <= GET_TRIG_NARG(t))) { if (dir >= 0 && dir < DIR_COUNT) add_var(&GET_TRIG_VARS(t), "direction", dirs[rev_dir[dir]], 0); else add_var(&GET_TRIG_VARS(t), "direction", "none", 0); ADD_UID_VAR(buf, t, actor, "actor", 0); intermediate = script_driver(&ch, t, MOB_TRIGGER, TRIG_NEW); if (!intermediate) final = FALSE; continue; } } } return final; }
int command_wtrigger(char_data *actor, char *cmd, char *argument) { struct room_data *room; trig_data *t; char buf[MAX_INPUT_LENGTH]; if (!actor || !SCRIPT_CHECK(&world[IN_ROOM(actor)], WTRIG_COMMAND)) return 0; room = &world[IN_ROOM(actor)]; for (t = TRIGGERS(SCRIPT(room)); t; t = t->next) { if (!TRIGGER_CHECK(t, WTRIG_COMMAND)) continue; if (!GET_TRIG_ARG(t) || !*GET_TRIG_ARG(t)) { sprintf(buf,"SYSERR: W-Command Trigger #%d has no text argument!", GET_TRIG_VNUM(t)); mudlog(buf, NRM, LVL_BUILDER, TRUE); continue; } if (*GET_TRIG_ARG(t)=='*' || !strn_cmp(GET_TRIG_ARG(t), cmd, strlen(GET_TRIG_ARG(t)))) { ADD_UID_VAR(buf, t, actor, "actor", 0); skip_spaces(&argument); add_var(&GET_TRIG_VARS(t), "arg", argument, 0); skip_spaces(&cmd); add_var(&GET_TRIG_VARS(t), "cmd", cmd, 0); return script_driver(room, t, WLD_TRIGGER, TRIG_NEW); } } return 0; }
int cast_wtrigger(char_data *actor, char_data *vict, obj_data *obj, int spellnum) { room_data *room; trig_data *t; char buf[MAX_INPUT_LENGTH]; if (!actor || !SCRIPT_CHECK(&world[IN_ROOM(actor)], WTRIG_CAST)) return 1; room = &world[IN_ROOM(actor)]; for (t = TRIGGERS(SCRIPT(room)); t; t = t->next) { if (TRIGGER_CHECK(t, WTRIG_CAST) && (rand_number(1, 100) <= GET_TRIG_NARG(t))) { ADD_UID_VAR(buf, t, actor, "actor", 0); if (vict) ADD_UID_VAR(buf, t, vict, "victim", 0); if (obj) ADD_UID_VAR(buf, t, obj, "object", 0); sprintf(buf, "%d", spellnum); add_var(&GET_TRIG_VARS(t), "spell", buf, 0); add_var(&GET_TRIG_VARS(t), "spellname", skill_name(spellnum), 0); return script_driver(&room, t, WLD_TRIGGER, TRIG_NEW); } } return 1; }
int leave_otrigger(room_data *room, char_data *actor, int dir) { trig_data *t; char buf[MAX_INPUT_LENGTH]; int temp, final = 1; obj_data *obj, *obj_next; if (!valid_dg_target(actor, DG_ALLOW_GODS)) return 1; for (obj = room->contents; obj; obj = obj_next) { obj_next = obj->next_content; if (!SCRIPT_CHECK(obj, OTRIG_LEAVE)) continue; for (t = TRIGGERS(SCRIPT(obj)); t; t = t->next) { if (TRIGGER_CHECK(t, OTRIG_LEAVE) && (rand_number(1, 100) <= GET_TRIG_NARG(t))) { if (dir >= 0 && dir < DIR_COUNT) add_var(&GET_TRIG_VARS(t), "direction", dirs[dir], 0); else add_var(&GET_TRIG_VARS(t), "direction", "none", 0); ADD_UID_VAR(buf, t, actor, "actor", 0); temp = script_driver(&obj, t, OBJ_TRIGGER, TRIG_NEW); if (temp == 0) final = 0; } } } return final; }
void speech_wtrigger(char_data *actor, char *str) { struct room_data *room; trig_data *t; char buf[MAX_INPUT_LENGTH]; if (!actor || !SCRIPT_CHECK(&world[IN_ROOM(actor)], WTRIG_SPEECH)) return; room = &world[IN_ROOM(actor)]; for (t = TRIGGERS(SCRIPT(room)); t; t = t->next) { if (!TRIGGER_CHECK(t, WTRIG_SPEECH)) continue; if (!GET_TRIG_ARG(t) || !*GET_TRIG_ARG(t)) { sprintf(buf,"SYSERR: W-Speech Trigger #%d has no text argument!", GET_TRIG_VNUM(t)); mudlog(buf, NRM, LVL_BUILDER, TRUE); continue; } if (((GET_TRIG_NARG(t) && word_check(str, GET_TRIG_ARG(t))) || (!GET_TRIG_NARG(t) && is_substring(GET_TRIG_ARG(t), str)))) { ADD_UID_VAR(buf, t, actor, "actor", 0); add_var(&GET_TRIG_VARS(t), "speech", str, 0); script_driver(room, t, WLD_TRIGGER, TRIG_NEW); break; } } }
void ft_env(t_env **env, t_env *tmpenv, char **cmd) { int i; char *tmp; i = -1; if (!cmd[1]) print_list(*env); else if (cmd[1] && cmd[1][0] == '-') ft_env_opt(*env, tmpenv, cmd); else if (cmd[1] && cmd[1][0] != '-') { tmp = getvarname(cmd[1]); while (cmd[1][++i]) if (cmd[1][i] == '=') { already_exist(&tmpenv, tmp); tmpenv = add_var(tmpenv, cmd[1]); print_list(tmpenv); ft_strdel(&tmp); return ; } ft_strdel(&tmp); ft_env_error(cmd[1]); } }
int pv_xavp_to_var_helper(sr_xavp_t *avp) { script_var_t *it; int_str value; int flags = 0; it = add_var(&avp->name, VAR_TYPE_ZERO); if(!it) return -1; if(avp->val.type==SR_XTYPE_STR){ flags |= VAR_VAL_STR; value.s.len = avp->val.v.s.len; value.s.s = avp->val.v.s.s; LM_DBG("var:[%.*s] STR:[%.*s]\n", avp->name.len, avp->name.s, value.s.len, value.s.s); } else if(avp->val.type==SR_XTYPE_INT) { flags |= VAR_VAL_INT; value.n = avp->val.v.i; LM_DBG("var:[%.*s] INT:[%d]\n", avp->name.len, avp->name.s, value.n); } else { LM_ERR("avp type not STR nor INT\n"); return -1; } set_var_value(it, &value, flags); return 0; }
int greet_mtrigger(char_data *actor, int dir) { trig_data *t; char_data *ch; char buf[MAX_INPUT_LENGTH]; int rev_dir[] = { SOUTH, WEST, NORTH, EAST, DOWN, UP }; int intermediate, final=TRUE; for (ch = world[IN_ROOM(actor)].people; ch; ch = ch->next_in_room) { if (!SCRIPT_CHECK(ch, MTRIG_GREET | MTRIG_GREET_ALL) || !AWAKE(ch) || FIGHTING(ch) || (ch == actor) || AFF_FLAGGED(ch, AFF_CHARM)) continue; for (t = TRIGGERS(SCRIPT(ch)); t; t = t->next) { if (((IS_SET(GET_TRIG_TYPE(t), MTRIG_GREET) && CAN_SEE(ch, actor)) || IS_SET(GET_TRIG_TYPE(t), MTRIG_GREET_ALL)) && !GET_TRIG_DEPTH(t) && (number(1, 100) <= GET_TRIG_NARG(t))) { if (dir>=0) add_var(&GET_TRIG_VARS(t), "direction", dirs[rev_dir[dir]], 0); ADD_UID_VAR(buf, t, actor, "actor", 0); intermediate = script_driver(ch, t, MOB_TRIGGER, TRIG_NEW); if (!intermediate) final = FALSE; continue; } } } return final; }
void speech_mtrigger(char_data *actor, char *str) { char_data *ch, *ch_next; trig_data *t; char buf[MAX_INPUT_LENGTH]; for (ch = world[IN_ROOM(actor)].people; ch; ch = ch_next) { ch_next = ch->next_in_room; if (SCRIPT_CHECK(ch, MTRIG_SPEECH) && AWAKE(ch) && !AFF_FLAGGED(ch, AFF_CHARM) && (actor!=ch)) for (t = TRIGGERS(SCRIPT(ch)); t; t = t->next) { if (!TRIGGER_CHECK(t, MTRIG_SPEECH)) continue; if (!GET_TRIG_ARG(t) || !*GET_TRIG_ARG(t)) { sprintf(buf,"SYSERR: Speech Trigger #%d has no text argument!", GET_TRIG_VNUM(t)); mudlog(buf, NRM, LVL_BUILDER, TRUE); continue; } if (((GET_TRIG_NARG(t) && word_check(str, GET_TRIG_ARG(t))) || (!GET_TRIG_NARG(t) && is_substring(GET_TRIG_ARG(t), str)))) { ADD_UID_VAR(buf, t, actor, "actor", 0); add_var(&GET_TRIG_VARS(t), "speech", str, 0); script_driver(ch, t, MOB_TRIGGER, TRIG_NEW); break; } } } }
grobner::monomial * grobner::mk_monomial(rational const & coeff, unsigned num_vars, expr * const * vars) { monomial * r = alloc(monomial); r->m_coeff = coeff; for (unsigned i = 0; i < num_vars; i++) add_var(r, vars[i]); std::stable_sort(r->m_vars.begin(), r->m_vars.end(), m_var_lt); return r; }
int param_set_xvar( modparam_t type, void* val, int mode) { str s; char *p; int_str isv; int flags; int ival; script_var_t *sv; if(shvar_initialized!=0) goto error; s.s = (char*)val; if(s.s == NULL || s.s[0] == '\0') goto error; p = s.s; while(*p && *p!='=') p++; if(*p!='=') goto error; s.len = p - s.s; if(s.len == 0) goto error; p++; flags = 0; if(*p!='s' && *p!='S' && *p!='i' && *p!='I') goto error; if(*p=='s' || *p=='S') flags = VAR_VAL_STR; p++; if(*p!=':') goto error; p++; isv.s.s = p; isv.s.len = strlen(p); if(flags != VAR_VAL_STR) { if(str2sint(&isv.s, &ival)<0) goto error; isv.n = ival; } if(mode==0) sv = add_var(&s); else sv = add_local_shvar(&s); if(sv==NULL) goto error; if(set_var_value(sv, &isv, flags)==NULL) goto error; return 0; error: LM_ERR("unable to set %s parameter [%s]\n", (mode == 0 ? "var" : "shv"), s.s); return -1; }
BD_Factory::BD_Factory(const MitsosSIP& sip, BD_Factory::problem_type problem) : sip(sip), problem(problem), new_vars(problem==ORA? sip.n_arg +1 : sip.n_arg) { // add "x" variable varcopy(sip.vars,new_vars); if (problem==ORA) { // add "eta" variable new_vars.set_ref(sip.n_arg, ExprSymbol::new_("eta",Dim::scalar())); // initial domain of eta is computed dynamically // see solve_ORA(...) add_var(new_vars, cart_prod(sip.var_init_domain, IntervalVector(1))); } else { add_var(new_vars, sip.var_init_domain); } };
int exec_cmd_eval(char *t,int l_t) { trunc_str(&t,&l_t); char *tmp=(char*)malloc(l_t*sizeof(char)); strcpy(tmp,t); var *var_ptr=add_var(tmp); printf("\n\t-----\n%s = %lf\n\t-----\n",tmp,var_ptr->addr->method->eval_v(var_ptr->addr)); return 0; }
/* Виртуальная машина */ int do_command(unsigned char cop) { double op1, op2; //операнды char name[SIZENAME]; switch(cop) { case CNOP: break; case CPUSH: push(get_value()); break; case CIN: fscanf(vmin, "%lf", &op1); push(op1); break; case COUT: fprintf(vmout, "%g", pull()); break; case CNVAR: get_name(name); add_var(name); break; case CGVAR: get_name(name); push(get_var(name)); break; case CSVAR: get_name(name); set_var(name, pull()); break; case CADD: push(pull()+pull()); break; case CSUB: op1 = pull(); op2 = pull(); push(op2-op1); break; case CMULT: push(pull()*pull()); break; case CDIV: op1 = pull(); op2 = pull(); if (op1==0.0) cerror("divide by zero"); push(op2/op1); break; case CHALT: return 0; default: cerror("undefined command"); } return 1; }
int my_set_env(t_vars *p, char *data) { if (check_existing_variable(p, data) == 0) rem_var(p, data); if (add_var(p, data) != 0) { fprintf(stderr, "error while setting variable\n"); return (1); } return (0); }
int command_mtrigger(char_data *actor, char *cmd, char *argument) { char_data *ch, *ch_next; trig_data *t; char buf[MAX_INPUT_LENGTH]; /* prevent people we like from becoming trapped :P */ if (!valid_dg_target(actor, 0)) return 0; for (ch = world[IN_ROOM(actor)].people; ch; ch = ch_next) { ch_next = ch->next_in_room; if (SCRIPT_CHECK(ch, MTRIG_COMMAND) && !AFF_FLAGGED(ch, AFF_CHARM) && ((actor != ch) || CONFIG_SCRIPT_PLAYERS)) { for (t = TRIGGERS(SCRIPT(ch)); t; t = t->next) { if (!TRIGGER_CHECK(t, MTRIG_COMMAND)) continue; if (!GET_TRIG_ARG(t) || !*GET_TRIG_ARG(t)) { mudlog(NRM, LVL_BUILDER, TRUE, "SYSERR: Command Trigger #%d has no text argument!", GET_TRIG_VNUM(t)); continue; } if (*GET_TRIG_ARG(t) == '*' || !strn_cmp(GET_TRIG_ARG(t), cmd, strlen(GET_TRIG_ARG(t)))) { ADD_UID_VAR(buf, t, actor, "actor", 0); skip_spaces(&argument); add_var(&GET_TRIG_VARS(t), "arg", argument, 0); skip_spaces(&cmd); add_var(&GET_TRIG_VARS(t), "cmd", cmd, 0); if (script_driver(&ch, t, MOB_TRIGGER, TRIG_NEW)) return 1; } } } } return 0; }
int enter_wtrigger(struct room_data *room, char_data *actor, int dir) { trig_data *t; char buf[MAX_INPUT_LENGTH]; if (!SCRIPT_CHECK(room, WTRIG_ENTER)) return 1; for (t = TRIGGERS(SCRIPT(room)); t; t = t->next) { if (TRIGGER_CHECK(t, WTRIG_ENTER) && (rand_number(1, 100) <= GET_TRIG_NARG(t))) { if (dir >= 0 && dir < DIR_COUNT) add_var(&GET_TRIG_VARS(t), "direction", dirs[rev_dir[dir]], 0); else add_var(&GET_TRIG_VARS(t), "direction", "none", 0); ADD_UID_VAR(buf, t, actor, "actor", 0); return script_driver(&room, t, WLD_TRIGGER, TRIG_NEW); } } return 1; }
int exec_cmd_RK(char *t,int l_t) { //RK char **args=(char **)malloc(8*sizeof(char *)); int c; trunc_str(&t,&l_t); parse_args(t,l_t,args,&c); printf("solving initial value problem\n-\t-\t-\n"); node f,x0,y0,x1; store_fn(args[0],strlen(args[0]),&f); store_fn(args[3],strlen(args[3]),&x0); store_fn(args[4],strlen(args[4]),&y0); store_fn(args[5],strlen(args[5]),&x1); double result = RK ( &f, add_var(args[1]), add_var(args[2]),x0.method->eval_v(&x0), y0.method->eval_v(&y0),x1.method->eval_v(&x1),atoi(args[6]) ); printf("\n%s(%f)=%f",args[2],x1.method->eval_v(&x1),result); printf("\n-\t-\t-\n"); return 0; }
int cast_otrigger(char_data *actor, obj_data *obj, int spellnum) { trig_data *t; char buf[MAX_INPUT_LENGTH]; if (obj == NULL) return 1; if (!SCRIPT_CHECK(obj, OTRIG_CAST)) return 1; for (t = TRIGGERS(SCRIPT(obj)); t; t = t->next) { if (TRIGGER_CHECK(t, OTRIG_CAST) && (rand_number(1, 100) <= GET_TRIG_NARG(t))) { ADD_UID_VAR(buf, t, actor, "actor", 0); sprintf(buf, "%d", spellnum); add_var(&GET_TRIG_VARS(t), "spell", buf, 0); add_var(&GET_TRIG_VARS(t), "spellname", skill_name(spellnum), 0); return script_driver(&obj, t, OBJ_TRIGGER, TRIG_NEW); } } return 1; }
PolizElem* PolizFunAssign::EvaluateFun(PolizItem **stack) const { PolizElem *operand1 = Pop(stack); PolizInt *i1 = dynamic_cast<PolizInt*>(operand1); if (!i1) throw PolizExNotInt(operand1); PolizElem *operand2 = Pop(stack); PolizVarAddr *i2 = dynamic_cast<PolizVarAddr*>(operand2); if (!i2) throw PolizExNotVarAddr(operand2); i2->set_value(i1->Get()); if (is_first_var(i2->Get()->name)) add_var(i2->Get()->name, i1->Get()); else add_value(i2->Get()->name, i1->Get()); return 0; }
void deserialize_vars(t_stack_entry **entry, void **serialized_data, int *serialized_data_size, int cant_vars) { int indice = 0; t_var * aux_var = NULL; if(cant_vars > 0) { for(indice = 0; indice < cant_vars; indice++ ) { aux_var = calloc(1, sizeof(t_var)); deserialize_data(&aux_var->var_id, sizeof(char), serialized_data, serialized_data_size); deserialize_data(&aux_var->page_number, sizeof(int), serialized_data, serialized_data_size); deserialize_data(&aux_var->offset, sizeof(int), serialized_data, serialized_data_size); deserialize_data(&aux_var->tamanio, sizeof(int), serialized_data, serialized_data_size); add_var(entry, aux_var); } } }
int cast_mtrigger(char_data *actor, char_data *ch, int spellnum) { trig_data *t; char buf[MAX_INPUT_LENGTH]; if (ch == NULL) return 1; if (!SCRIPT_CHECK(ch, MTRIG_CAST) || AFF_FLAGGED(ch, AFF_CHARM)) return 1; for (t = TRIGGERS(SCRIPT(ch)); t; t = t->next) { if (TRIGGER_CHECK(t, MTRIG_CAST) && (rand_number(1, 100) <= GET_TRIG_NARG(t))) { ADD_UID_VAR(buf, t, actor, "actor", 0); sprintf(buf, "%d", spellnum); add_var(&GET_TRIG_VARS(t), "spell", buf, 0); add_var(&GET_TRIG_VARS(t), "spellname", skill_name(spellnum), 0); return script_driver(&ch, t, MOB_TRIGGER, TRIG_NEW); } } return 1; }
int exec_cmd(char *str,int len) { if(db)printf("\nexec cmd called for %s, l=%d",str,len); printf("\n"); trunc_str(&str,&len); if(len>0) { char *p=strchr(str,':'),*tmp,**args=(char **)malloc(8*sizeof(char *)); char *s=str; if(p!=strrchr(str,':')) { printf("\nERROR\n multiple occurances of ':' found"); return 0; } if(p!=0) { int l=p-s,arg_c; int (*cmd_mtch)(char *, int); trunc_str(&s,&l); tmp=(char *)malloc(l*sizeof(char)); void *cmd_search; strncpy(tmp,s,l); arg_c=parse_ssv(tmp,args); cmd_search=search_node(cmd_tree,args[0]); cmd_mtch = cmd_search ? (int(*)(char *, int))cmd_search : 0; if(cmd_mtch) { if(db)printf("\nfn matched"); cmd_mtch(p+1,len-(p-str)-1); } else if(arg_c==1) { var *var_tmp=add_var(args[0]); if(!var_tmp->addr)var_tmp->addr=( node *)malloc(sizeof( node)); store_fn(p+1,len-(p-str)-1,var_tmp->addr); } return 1; } else { store_fn( str, len, fnc ); printf("\n-----------------------------------------------\n"); printf("\nThe soln is %lf",fnc->method->eval_v(fnc)); printf("\n-----------------------------------------------\n"); return 1; } } return 0; }
int door_wtrigger(char_data *actor, int subcmd, int dir) { room_data *room; trig_data *t; char buf[MAX_INPUT_LENGTH]; if (!actor || !SCRIPT_CHECK(&world[IN_ROOM(actor)], WTRIG_DOOR)) return 1; room = &world[IN_ROOM(actor)]; for (t = TRIGGERS(SCRIPT(room)); t; t = t->next) { if (TRIGGER_CHECK(t, WTRIG_DOOR) && (rand_number(1, 100) <= GET_TRIG_NARG(t))) { add_var(&GET_TRIG_VARS(t), "cmd", cmd_door[subcmd], 0); if (dir >= 0 && dir < DIR_COUNT) add_var(&GET_TRIG_VARS(t), "direction", dirs[dir], 0); else add_var(&GET_TRIG_VARS(t), "direction", "none", 0); ADD_UID_VAR(buf, t, actor, "actor", 0); return script_driver(&room, t, WLD_TRIGGER, TRIG_NEW); } } return 1; }
/* * Add polynomial p to the table * - stores p in table->poly[i]. * - if p is NULL, also add i to the variable array */ static void add_poly(poly_table_t *table, polynomial_t *p) { uint32_t i; i = table->npolys; if (i == table->psize) { make_room_for_polys(table); } assert(i < table->psize); table->poly[i] = p; table->npolys = i+1; if (p == NULL) { add_var(table, i); } }
int exec_cmd_plot(char *t,int l_t) { char **args=(char **)malloc(8*sizeof(char *)); int c; trunc_str(&t,&l_t); parse_args(t,l_t,args,&c); node n,a,b; store_fn(args[0],strlen(args[0]),&n); store_fn(args[2],strlen(args[2]),&a); store_fn(args[3],strlen(args[3]),&b); plot(&n,add_var(args[1]),a.method->eval_v(&a),b.method->eval_v(&b),atoi(args[4])); //printf("\n-----------------------------------------------\n"); //printf("%s=%f",args[1],result); //printf("\n-----------------------------------------------\n"); return 0; }