Giving mappings a try I have this now:
#include <lib.h>
#include <save.h>
#include <privs.h>
#include "include/forge.h"
inherit LIB_DAEMON;
private mapping Forges = ([]);
static void create() {
daemon::create();
if( unguarded((: file_size(SAVE_FORGES __SAVE_EXTENSION__) :)) > 0 )
unguarded((: restore_object(SAVE_FORGES) :));
if (!Forges) Forges = ([]);
}
static private void validate() {
if( !((int)master()->valid_apply(({ PRIV_ASSIST }))) )
error("Illegal attempt to modify forge data");
}
string array GetForgeRequirements(string str){
return Forges[str]->requirements;
}
string array GetForgeComponents(string str){
return Forges[str]->components;
}
void AddForge(string file, int player) {
string forge, requirements, components, test_string;
int x, y, z;
mapping Forges = ([requirements:y, components:z]);
validate();
if( !file_exists(file) ) error("No such file: " + file);
forge = last_string_element(file,"/");
foreach(string line in explode(read_file(file),"\n")){
test_string = first_string_element(line," ");
if(!test_string || !sizeof(test_string)) test_string = line;
switch(test_string) {
case "REQUIREMENT":
requirement = replace_string(line, "REQUIREMENT ", "");
return Forges["requirements"];
break;
case "COMPONENT":
component = replace_string(line, "COMPONENT ", "");
return Forges["components"];
break;
case "FORGE":
forge = replace_string(line, "FORGE ", "");
if( Forges[forge] ) error(forge+": Forge item already exists");
break;
default:
break;
}
}
save_object(SAVE_FORGES);
}
void RemoveForge(string forge) {
validate();
map_delete(Forges, forge);
if(!Forges[forge])
save_object(SAVE_FORGES);
}
With these bugs:
update forge
/daemon/forge.c line 26: No class in scope has no member 'requirements'
/daemon/forge.c line 30: No class in scope has no member 'components'
---
2008.02.18-13.11
*Error in loading object '/daemon/forge'
Object: /secure/sefun/sefun at /secure/sefun/load_object.c:14
'<fake>' at /secure/save/creators/c/capo (/<driver>) at line 0
'cmdAll' at /secure/save/creators/c/capo (/lib/command.c) at line 162
'cmd' at /secure/cmds/creators/update at line 110
'eventUpdate' at /secure/cmds/creators/update at line 138
'load_object' at /secure/sefun/sefun at /secure/sefun/load_object.c:14
'CATCH' at /secure/sefun/sefun at /secure/sefun/load_object.c:14
Trace written to /log/catch
/daemon/forge.c line 26: No class in scope has no member 'requirements'
/daemon/forge.c line 30: No class in scope has no member 'components'
---
2008.02.18-13.11
*Error in loading object '/daemon/forge'
Object: /secure/cmds/creators/update at line 151
'<fake>' at /secure/save/creators/c/capo (/<driver>) at line 0
'cmdAll' at /secure/save/creators/c/capo (/lib/command.c) at line 162
'cmd' at /secure/cmds/creators/update at line 110
'eventUpdate' at /secure/cmds/creators/update at line 151
'CATCH' at /secure/cmds/creators/update at line 151
Trace written to /log/catch
/daemon/forge: Error in update
*Error in loading object '/daemon/forge'