00018 {
00019 Database& db =
GetWeb().
GetDatabase();
00020
char action[200];
00021 GetForm() -> getvalue(GetFormName(), action, 200);
00022
if (!strcmp(action,
"login"))
00023 {
00024
char login[200];
00025
char passwd[200];
00026 GetForm() -> getvalue(
"login", login, 200);
00027 GetForm() -> getvalue(
"passwd", passwd, 200);
00028 db::Account acct(db, login, passwd);
00029
if (acct.num)
00030 {
00031
long valid = random();
00032 db::Valid v(db, valid, acct.num);
00033 v.valid = valid;
00034 v.account = acct.num;
00035 v.save();
00036
GetWeb().
SetAccount(acct.num);
00037
GetWeb().
SetValid(valid);
00038 }
00039 }
00040
else
00041
if (!strcmp(action,
"register"))
00042 {
00043 Query q(db);
00044
char login[200];
00045
char pw1[200];
00046
char pw2[200];
00047
char sql[1000];
00048 GetForm() -> getvalue(
"login", login, 200);
00049 GetForm() -> getvalue(
"passwd", pw1, 200);
00050 GetForm() -> getvalue(
"passwd2", pw2, 200);
00051 sprintf(sql,
"select num from account where login='%s'", q.safestr(login).c_str());
00052
long num = q.get_count(sql);
00053
if (!num && !strcmp(pw1, pw2) && *pw1)
00054 {
00055 db::Account acct(&db);
00056 acct.name = login;
00057 acct.pw = pw1;
00058 acct.save();
00059 }
00060 }
00061
else
00062
if (!strcmp(action,
"player_select"))
00063 {
00064
long num = atol(GetForm() -> getvalue(
"player").c_str());
00065 db::Player pl(db, num);
00066
if (pl.num && pl.account ==
GetWeb().
GetAccount())
00067 {
00068
GetWeb().
SetPlayer(pl.num);
00069 }
00070 }
00071
else
00072
if (!strcmp(action,
"player_create"))
00073 {
00074
char name[200];
00075 GetForm() -> getvalue(
"player_name", name, 200);
00076 db::Player pl(db, name);
00077
if (!pl.num)
00078 {
00079 pl.account =
GetWeb().
GetAccount();
00080 pl.name = name;
00081 pl.save();
00082
00083 {
00084 db::Resource r(&db,
"select * from resource where name='Gold'");
00085 r.name =
"Gold";
00086 r.save();
00087 db::Playerresource x(db, pl.num, r.num);
00088 x.player = pl.num;
00089 x.resource = r.num;
00090 x.amount = 1000;
00091 x.save();
00092 }
00093
00094 {
00095 db::Location loc(&db,
"select * from location where name='Homesville'");
00096 loc.name =
"Homesville";
00097 loc.save();
00098 pl.location = loc.num;
00099 db::Building b(&db,
"select * from building where name='Simple cottage'");
00100 b.name =
"Simple cottage";
00101 b.beds = 2;
00102 b.save();
00103 db::Playerbuilding x(db, pl.num, b.num);
00104 x.player = pl.num;
00105 x.building = b.num;
00106 x.location = loc.num;
00107 x.save();
00108 }
00109 pl.save();
00110 }
00111 }
00112 }