#include <lib.h> #include <daemons.h> inherit LIB_DAEMON; void help(); mixed var, newval; object ob; int CheckVar(string var, object ob){ mixed *vars; if(!var || !ob) return 0; vars = variables(ob); if(member_array(var, vars) == -1) return 0; return 1; } int cmd(string str) { int i; mixed ret; string cmd, what; if(!this_player() || !archp(this_player())){ write("Sorry, this is an arch command."); return 1; } if(!str || str == ""){ help(); return 1; } i = sscanf(str,"%s %s %s", cmd, var, what); if(i != 3 || (cmd != "get" && cmd != "set")){ help(); return i; } if(cmd == "set"){ int tmp; i = sscanf(what,"%s %s", newval, what); if(i != 2){ help(); return i; } if(sscanf(newval,"%d",tmp)) newval = tmp; } ob = get_object(what); if(!ob){ string path = this_player()->query_cwd()+"/"; if(last(what,2) != ".c") what += ".c"; if(file_exists(what)) ob = load_object(what); else if(file_exists(path+what)) ob = load_object(path+what); } if(!ob){ write(truncate(what,2)+" not found."); return 1; } if(!CheckVar(var, ob)){ write("No such variable exists in that object."); return 1; } i = catch( ret = evaluate(bind( (: fetch_variable($(var)) :), ob)) ); if(i){ write("Error in variable query."); return 1; } write(var+" in "+identify(ob)+" is "+identify(ret)); if(cmd == "get"){ return 1; } if(cmd == "set"){ evaluate(bind( (: store_variable($(var), $(newval)) :), ob)); ret = evaluate(bind( (: fetch_variable($(var)) :), ob)); write(var+" in "+identify(ob)+" is now "+identify(ret)); return 1; } write("Error."); return 1; } void help() { write("Syntax: var get <variable name> <object or file>\n" " var set <variable name> <new value> <object or file>\n\n" "Sets or gets the value of a variable in an object.\n" "Examples:\n" "var get isPK me\n" "var set Attackable 0 fighter\n\n" "Use with EXTREME caution."); }