X-Git-Url: https://jfr.im/git/irc/gameservirc.git/blobdiff_plain/18f9660ed8965aa37f7f1222e913ff2a1ed0b004..37ed80a99c033d815fcef9a7d1c8b48ef334220d:/gameserv/gameserv.cpp diff --git a/gameserv/gameserv.cpp b/gameserv/gameserv.cpp index a4ed61a..18bd0fe 100644 --- a/gameserv/gameserv.cpp +++ b/gameserv/gameserv.cpp @@ -1,18 +1,21 @@ #include "aClient.h" #include "config.h" #include "extern.h" +#include "player.h" +#include "pouch.h" #include "flags.h" #include "list.h" #include "level.h" #include "sockhelp.h" +#include "item.h" #include #include #include +#include +#include -using std::ifstream; -using std::ofstream; -using std::ios; +using namespace std; #if defined(HAVE_CRYPT_H) @@ -402,20 +405,7 @@ void showstats(const char *u, const char *nick) space = spaces(strlen(buf), " "); notice(s_GameServ, sender->getNick(), "%s%sPlayer Fights: %d", buf, space, ni->stats->player_fights); delete [] space; - Pouch *inv = &ni->stats->inventory; - - notice(s_GameServ, u, "Potions"); - sprintf(buf, "Healing: %d", inv->Healing()); - space = spaces(strlen(buf), " "); - notice(s_GameServ, sender->getNick(), "%s%sHP: %d", buf, - space, inv->HP()); - delete [] space; - - sprintf(buf, "Strength: %d", inv->Strength()); - space = spaces(strlen(buf), " "); - notice(s_GameServ, sender->getNick(), "%s%sDefense: %d", buf, - space, inv->Defense()); - delete [] space; + showinventory(ni, ni); } else { @@ -678,7 +668,7 @@ void do_set(char *u) } else if (!name) { - notice(s_GameServ, u, "SYNTAX: /msg %S SET [NAME] {PASSWORD|BANK BALANCE|PLAYER FIGHTS|FOREST FIGHTS|GOLD|STRENGTH|DEFENSE|HP|MAXHP|EXP|LEVEL|WEAPON|ARMOR|HP POTIONS|STRENGTH POTIONS|DEFENSE POTIONS|HEALING POTIONS|ALIVE|SEEN MASTER} {STRING|NUMBER|TRUE|FALSE}"); + notice(s_GameServ, u, "SYNTAX: /msg %S SET [NAME] {PASSWORD|BANK BALANCE|PLAYER FIGHTS|FOREST FIGHTS|GOLD|STRENGTH|DEFENSE|HP|MAXHP|EXP|LEVEL|ALIVE|SEEN MASTER} {STRING|NUMBER|TRUE|FALSE}"); return; } else if (!(target = findplayer(name))) @@ -970,137 +960,6 @@ void do_set(char *u) return; } } - else if (stricmp(cmd, "WEAPON") == 0) - { - if (!isAdmin(user)) - { - notice(s_GameServ, u, "Admins Only!"); - return; - } - else - { - if (!cmd2) - { - notice(s_GameServ, u, "SYNTAX: /msg %S SET [NAME] WEAPON "); - return; - } - - target->stats->wea = stringtoint(cmd2); - - if (target->stats->wea < 0) - target->stats->wea = 0; - else if (target->stats->wea >= WNA) - target->stats->wea = WNA - 1; - notice(s_GameServ, u, "Weapon set to %s", weapons[target->stats->wea]); - return; - } - } - else if (stricmp(cmd, "ARMOR") == 0) - { - if (!isAdmin(user)) - { - notice(s_GameServ, u, "Admins Only!"); - return; - } - else - { - if (!cmd2) - { - notice(s_GameServ, u, "SYNTAX: /msg %S SET [NAME] ARMOR "); - return; - } - target->stats->arm = stringtoint(cmd2); - - if (target->stats->arm < 0) - target->stats->arm = 0; - else if (target->stats->arm >= WNA) - target->stats->arm = WNA - 1; - - notice(s_GameServ, u, "Armor set to %s", armors[target->stats->arm]); - return; - } - } - else if (stricmp(cmd, "HP") == 0 && stricmp(cmd2, "POTIONS") == 0) - { - if (!isAdmin(user)) - { - notice(s_GameServ, u, "Admins Only!"); - return; - } - else - { - cmd2 = strtok(NULL, " "); - if (!cmd2) - { - notice(s_GameServ, u, "SYNTAX: /msg %S SET [NAME] HP POTIONS "); - return; - } - target->stats->inventory.setHP(abs(stringtoint(cmd2))); - - notice(s_GameServ, u, "HP Potions set to %d", target->stats->inventory.HP()); - return; - } - } - else if (stricmp(cmd, "HEALING") == 0 && stricmp(cmd2, "POTIONS") == 0) - { - if (!isAdmin(user)) - { - notice(s_GameServ, u, "Admins Only!"); - return; - } - else - { - cmd2 = strtok(NULL, " "); - if (!cmd2) - { - notice(s_GameServ, u, "SYNTAX: /msg %S SET [NAME] HEALING POTIONS "); - return; - } - target->stats->inventory.setHealing(abs(stringtoint(cmd2))); - notice(s_GameServ, u, "Healing Potions set to %d", target->stats->inventory.Healing()); - return; - } - } - else if (stricmp(cmd, "STRENGTH") == 0 && stricmp(cmd2, "POTIONS") == 0) - { - if (!isAdmin(user)) - { - notice(s_GameServ, u, "Admins Only!"); - return; - } - else - { - cmd2 = strtok(NULL, " "); - if (!cmd2) - { - notice(s_GameServ, u, "SYNTAX: /msg %S SET [NAME] STRENGTH POTIONS "); - return; - } - target->stats->inventory.setStrength(abs(stringtoint(cmd2))); - notice(s_GameServ, u, "Strength Potions set to %d", target->stats->inventory.Strength()); - return; - } - } - else if (stricmp(cmd, "DEFENSE") == 0 && stricmp(cmd2, "POTIONS") == 0) - { - if (!isAdmin(user)) - { - notice(s_GameServ, u, "Admins Only!"); - return; - } - else - { - cmd2 = strtok(NULL, " "); - if (!cmd2) - { - notice(s_GameServ, u, "SYNTAX: /msg %S SET [NAME] DEFENSE POTIONS "); - return; - } - target->stats->inventory.setDefense(abs(stringtoint(cmd2))); - notice(s_GameServ, u, "Defense Potions set to %d", target->stats->inventory.Defense()); - return; - } - } else if (stricmp(cmd, "ALIVE") == 0) { if (!isAdmin(user)) @@ -1163,7 +1022,7 @@ void do_set(char *u) else { notice(s_GameServ, u, "Unknown command: SET %s", cmd); - notice(s_GameServ, u, "SYNTAX: /msg %S SET [NAME] {PASSWORD|BANK BALANCE|PLAYER FIGHTS|FOREST FIGHTS|GOLD|STRENGTH|DEFENSE|HP|MAXHP|EXP|LEVEL|WEAPON|ARMOR|HP POTIONS|STRENGTH POTIONS|DEFENSE POTIONS|HEALING POTIONS|ALIVE|SEEN MASTER} {STRING|NUMBER|TRUE|FALSE}"); + notice(s_GameServ, u, "SYNTAX: /msg %S SET [NAME] {PASSWORD|BANK BALANCE|PLAYER FIGHTS|FOREST FIGHTS|GOLD|STRENGTH|DEFENSE|HP|MAXHP|EXP|LEVEL|ALIVE|SEEN MASTER} {STRING|NUMBER|TRUE|FALSE}"); return; } } @@ -1784,6 +1643,7 @@ void do_fight(char *u) void do_use(char *u) { + /* aClient *user; Pouch *p; @@ -1912,6 +1772,8 @@ void do_use(char *u) } end_turn(user); // If they're fighting, end their turn + */ + return; } void do_run(char *u) { @@ -2223,9 +2085,10 @@ int save_gs_dbase() << it->hp << ' ' << it->maxhp << ' ' << it->strength << ' ' << it->defense << ' ' << it->arm << ' ' << it->wea << ' ' << it->forest_fights << ' ' << it->player_fights << ' ' - << it->getFlags() << ' ' << it->password << ' ' << it->inventory.Healing() + << it->getFlags() << ' ' << it->password << ' ' +/* fixing this << it->inventory.Healing() << ' ' << it->inventory.Strength() << ' ' << it->inventory.Defense() << ' ' << it->inventory.HP() - << ' ' << it->lastlogin << endl; + << ' ' */ << it->lastlogin << endl; ptr = ptr->Next(); } } @@ -2325,12 +2188,12 @@ int load_gs_dbase() } while (infile.getline(buf, 1024, '\n')) - { + { temp = new aClient; tempname = strtok(buf, " "); temp->stats = new Player(tempname); p = temp->stats; - + p->level = stringtoint(strtok(NULL, " ")); p->exp = stringtoint(strtok(NULL, " ")); p->gold = stringtoint(strtok(NULL, " ")); @@ -2345,290 +2208,292 @@ int load_gs_dbase() p->player_fights = stringtoint(strtok(NULL, " ")); p->setFlags(stringtoint(strtok(NULL, " "))); + + password = strtok(NULL, " "); p->password = password; temp->setNick("Not Playing"); - #ifdef P10 +#ifdef P10 temp->setRealNick("Not Playing"); - #endif - - p->inventory.reset(); // Set inventory to all 0s +#endif + + p->inventory->clear(); // Set inventory to all 0s // Old player databases didn't have these three extra values // If they come up null, leave them to 0 as the default. // On the next gameserv database save, it will save the values. tempname = strtok(NULL, " "); - if (tempname) - p->inventory.setHealing(stringtoint(tempname)); - + // if (tempname) + // p->inventory.setHealing(stringtoint(tempname)); + tempname = strtok(NULL, " "); - if (tempname) - p->inventory.setStrength(stringtoint(tempname)); - + //if (tempname) + // p->inventory.setStrength(stringtoint(tempname)); + tempname = strtok(NULL, " "); - if (tempname) - p->inventory.setDefense(stringtoint(tempname)); - + //if (tempname) + // p->inventory.setDefense(stringtoint(tempname)); + tempname = strtok(NULL, " "); - if (tempname) - p->inventory.setHP(stringtoint(tempname)); - + //if (tempname) + // p->inventory.setHP(stringtoint(tempname)); + tempname = strtok(NULL, " "); if (tempname) - p->lastlogin = stringtoint(tempname); + p->lastlogin = stringtoint(tempname); else - p->lastlogin = time(NULL); - + p->lastlogin = time(NULL); + unsigned long hv = iHASH((unsigned char *) temp->stats->name.c_str()); - + temp->stats->client = NULL; players[hv].insertAtBack(temp); delete temp; - } -delete [] buf; -infile.close(); -return 1; + } + delete [] buf; + infile.close(); + return 1; } bool passcmp(const char *encrypted, char *plaintext) { - char salt[3]; - char *plaintext2, *plainToencrypt; - bool same = false; - - plaintext2 = new char[strlen(encrypted) + strlen(plaintext)]; // Extra - strcpy(plaintext2, plaintext); - - salt[0] = encrypted[0]; - salt[1] = encrypted[1]; - salt[3] = '\0'; - - plainToencrypt = crypt(plaintext2, salt); - - same = (strcmp((const char *)encrypted, plainToencrypt) == 0 ? true : false); - - delete []plaintext2; - - return same; + char salt[3]; + char *plaintext2, *plainToencrypt; + bool same = false; + + plaintext2 = new char[strlen(encrypted) + strlen(plaintext)]; // Extra + strcpy(plaintext2, plaintext); + + salt[0] = encrypted[0]; + salt[1] = encrypted[1]; + salt[3] = '\0'; + + plainToencrypt = crypt(plaintext2, salt); + + same = (strcmp((const char *)encrypted, plainToencrypt) == 0 ? true : false); + + delete []plaintext2; + + return same; } bool check_password(char *name, char *plaintext) { - aClient *client; - - if (!(client = findplayer(name))) - return false; - else + aClient *client; + + if (!(client = findplayer(name))) + return false; + else { - return passcmp(client->stats->password.c_str(), plaintext); + return passcmp(client->stats->password.c_str(), plaintext); } } void do_store(char *u) { - char *cmd = strtok(NULL, " "); - char *item = strtok(NULL, " "); - char *num = strtok(NULL, " "); - char *space; - int wep; - aClient *user; - Player *p; - - if (!cmd || !item) + char *cmd = strtok(NULL, " "); + char *item = strtok(NULL, " "); + char *num = strtok(NULL, " "); + char *space; + int wep; + aClient *user; + Player *p; + + if (!cmd || !item) { - notice(s_GameServ, u, "SYNTAX: STORE LIST {ARMOR | WEAPONS}"); - notice(s_GameServ, u, " STORE SELL {ARMOR | WEAPON}"); - notice(s_GameServ, u, " STORE BUY {ARMOR | WEAPON} NUMBER"); - return; + notice(s_GameServ, u, "SYNTAX: STORE LIST {ARMOR | WEAPONS}"); + notice(s_GameServ, u, " STORE SELL {ARMOR | WEAPON}"); + notice(s_GameServ, u, " STORE BUY {ARMOR | WEAPON} NUMBER"); + return; } - else if (!(user = find(u))) + else if (!(user = find(u))) { - log("Fatal Error: could not find %s in client list", u); - return; + log("Fatal Error: could not find %s in client list", u); + return; } - else if (isIgnore(user)) + else if (isIgnore(user)) { - #ifdef DEBUGMODE - log("Ignoring %s.", user->getNick()); - #endif - return; +#ifdef DEBUGMODE + log("Ignoring %s.", user->getNick()); +#endif + return; } - else if (!is_playing(user)) + else if (!is_playing(user)) { - notice(s_GameServ, u, "You must be playing to use the store!"); - return; + notice(s_GameServ, u, "You must be playing to use the store!"); + return; } - else if (!isAlive(user->stats)) + else if (!isAlive(user->stats)) { - notice(s_GameServ, u, "You are dead. Wait until tomorrow to purchase weapons and armor!"); - return; + notice(s_GameServ, u, "You are dead. Wait until tomorrow to purchase weapons and armor!"); + return; } - updateTS(user->stats); - - if (stricmp(cmd, "LIST") == 0) + updateTS(user->stats); + + if (stricmp(cmd, "LIST") == 0) { - if (stricmp(item, "WEAPONS") == 0) + if (stricmp(item, "WEAPONS") == 0) { - notice(s_GameServ, u, "Welcome to Kain's Armory"); - notice(s_GameServ, u, "Here are the weapons we have available for the killing, sire:"); - for (int x = 1; x < WNA; x++) + notice(s_GameServ, u, "Welcome to Kain's Armory"); + notice(s_GameServ, u, "Here are the weapons we have available for the killing, sire:"); + for (int x = 1; x < WNA; x++) { - space = spaces(strlen(weapons[x]), "."); - notice(s_GameServ, u, "%s%d. %s%s%d",(x < 10 ? " " : ""), x, weapons[x], space, prices[x - 1]); - free(space); + space = spaces(strlen(weapons[x]), "."); + notice(s_GameServ, u, "%s%d. %s%s%d",(x < 10 ? " " : ""), x, weapons[x], space, prices[x - 1]); + free(space); } - notice(s_GameServ, u, "To purchase a weapon, type /msg %S STORE BUY NUM."); - notice(s_GameServ, u, "Where num. is the weapon number from the menu above."); - + notice(s_GameServ, u, "To purchase a weapon, type /msg %S STORE BUY NUM."); + notice(s_GameServ, u, "Where num. is the weapon number from the menu above."); + } - else if (stricmp(item, "ARMOR") == 0) + else if (stricmp(item, "ARMOR") == 0) { - notice(s_GameServ, u, "Welcome to Kain's Armory"); - notice(s_GameServ, u, "I hope you enjoy the fine armor we have available for your protection:"); - for (int x = 1; x < WNA; x++) + notice(s_GameServ, u, "Welcome to Kain's Armory"); + notice(s_GameServ, u, "I hope you enjoy the fine armor we have available for your protection:"); + for (int x = 1; x < WNA; x++) { - space = spaces(strlen(armors[x]), "."); - notice(s_GameServ, u, "%s%d. %s%s%d",(x < 10 ? " " : ""), x, armors[x], space, prices[x - 1]); - free(space); + space = spaces(strlen(armors[x]), "."); + notice(s_GameServ, u, "%s%d. %s%s%d",(x < 10 ? " " : ""), x, armors[x], space, prices[x - 1]); + free(space); } - notice(s_GameServ, u, "To purchase armor, type /msg %S store buy armor num."); - notice(s_GameServ, u, "Where num. is the armor number from the menu above."); - - + notice(s_GameServ, u, "To purchase armor, type /msg %S store buy armor num."); + notice(s_GameServ, u, "Where num. is the armor number from the menu above."); + + } } else if (stricmp(cmd, "BUY") == 0) { - if (!num) + if (!num) { - notice(s_GameServ, u, "SYNTAX: STORE BUY {ARMOR | WEAPON} NUMBER"); - return; + notice(s_GameServ, u, "SYNTAX: STORE BUY {ARMOR | WEAPON} NUMBER"); + return; } - else if (!isstringnum(num)) + else if (!isstringnum(num)) { - notice(s_GameServ, u, "You must specify a number between 1 and %d. Not %s!", WNA - 1, num); - return; + notice(s_GameServ, u, "You must specify a number between 1 and %d. Not %s!", WNA - 1, num); + return; } - if (stricmp(item, "WEAPON") == 0) + if (stricmp(item, "WEAPON") == 0) { - wep = stringtoint(num); - if (wep >= WNA || wep < 1) + wep = stringtoint(num); + if (wep >= WNA || wep < 1) { - notice(s_GameServ, u, "The number %d is out of range. The number you provide must be between 1 and %d.", wep, WNA - 1); - return; + notice(s_GameServ, u, "The number %d is out of range. The number you provide must be between 1 and %d.", wep, WNA - 1); + return; } - - p = user->stats; - - if (p->wea != 0) - notice(s_GameServ, u, "You have to sell your %s first!", weapons[p->wea]); - else if (p->gold < prices[wep - 1]) - notice(s_GameServ, u, "You don't have enough gold for %s!", weapons[wep]); - else + + p = user->stats; + + if (p->wea != 0) + notice(s_GameServ, u, "You have to sell your %s first!", weapons[p->wea]); + else if (p->gold < prices[wep - 1]) + notice(s_GameServ, u, "You don't have enough gold for %s!", weapons[wep]); + else { - notice(s_GameServ, u, "You have purchased %s! Thanks for the gold!", weapons[wep]); - p->wea = wep; - p->gold -= prices[wep - 1]; + notice(s_GameServ, u, "You have purchased %s! Thanks for the gold!", weapons[wep]); + p->wea = wep; + p->gold -= prices[wep - 1]; } } - else if (stricmp(item, "ARMOR") == 0) + else if (stricmp(item, "ARMOR") == 0) { - wep = stringtoint(num); - if (wep >= WNA || wep < 1) + wep = stringtoint(num); + if (wep >= WNA || wep < 1) { - notice(s_GameServ, u, "The number %d is out of range. The number you provide must be between 1 and %d.", wep, WNA - 1); - return; + notice(s_GameServ, u, "The number %d is out of range. The number you provide must be between 1 and %d.", wep, WNA - 1); + return; } - - p = user->stats; - - if (p->arm != 0) - notice(s_GameServ, u, "You have to sell your %s first!", armors[p->arm]); - else if (p->gold < prices[wep - 1]) - notice(s_GameServ, u, "You don't have enough gold for %s!", armors[wep]); - else + + p = user->stats; + + if (p->arm != 0) + notice(s_GameServ, u, "You have to sell your %s first!", armors[p->arm]); + else if (p->gold < prices[wep - 1]) + notice(s_GameServ, u, "You don't have enough gold for %s!", armors[wep]); + else { - notice(s_GameServ, u, "You have purchased %s! Thanks for the gold!", armors[wep]); - p->arm = wep; - p->gold -= prices[wep - 1]; + notice(s_GameServ, u, "You have purchased %s! Thanks for the gold!", armors[wep]); + p->arm = wep; + p->gold -= prices[wep - 1]; } } - else + else { - notice(s_GameServ, u, "SYNTAX: STORE BUY {ARMOR | WEAPON} NUMBER"); - return; + notice(s_GameServ, u, "SYNTAX: STORE BUY {ARMOR | WEAPON} NUMBER"); + return; } } - else if (stricmp(cmd, "SELL" ) == 0) + else if (stricmp(cmd, "SELL" ) == 0) { - p = user->stats; - - if (stricmp(item, "WEAPON") == 0) + p = user->stats; + + if (stricmp(item, "WEAPON") == 0) { - if (p->wea == 0) + if (p->wea == 0) { - notice(s_GameServ, u, "You want me to chop off your hands?"); - return; + notice(s_GameServ, u, "You want me to chop off your hands?"); + return; } - else if (p->gold == 2000000000) + else if (p->gold == 2000000000) { - notice(s_GameServ, u, "You have enough gold. I'll just take that off your hands, sire."); - p->wea = 0; + notice(s_GameServ, u, "You have enough gold. I'll just take that off your hands, sire."); + p->wea = 0; } - else if (2000000000 - p->gold < (prices[p->wea - 1] / 2)) + else if (2000000000 - p->gold < (prices[p->wea - 1] / 2)) { - notice(s_GameServ, u, "Thank you for your business! You now have as much gold as you can carry."); - notice(s_GameServ, u, "However, you have no weapon... can I interest you in the %s?", weapons[WNA - 1]); - p->gold = 2000000000; - p->wea = 0; + notice(s_GameServ, u, "Thank you for your business! You now have as much gold as you can carry."); + notice(s_GameServ, u, "However, you have no weapon... can I interest you in the %s?", weapons[WNA - 1]); + p->gold = 2000000000; + p->wea = 0; } - else + else { - notice(s_GameServ, u, "Thank you for your business! You now have %d more gold but no weapon!", (prices[p->wea - 1] / 2)); - p->gold += (prices[p->wea - 1] / 2); - p->wea = 0; + notice(s_GameServ, u, "Thank you for your business! You now have %d more gold but no weapon!", (prices[p->wea - 1] / 2)); + p->gold += (prices[p->wea - 1] / 2); + p->wea = 0; } } - else if (stricmp(item, "ARMOR") == 0) + else if (stricmp(item, "ARMOR") == 0) { - p = user->stats; - - if (p->arm == 0) + p = user->stats; + + if (p->arm == 0) { - notice(s_GameServ, u, "I don't think you can be any more naked..."); - return; + notice(s_GameServ, u, "I don't think you can be any more naked..."); + return; } - if (p->gold == 2000000000) + if (p->gold == 2000000000) { - notice(s_GameServ, u, "You have enough gold. I'll just take that off your hands, sire."); - p->arm = 0; + notice(s_GameServ, u, "You have enough gold. I'll just take that off your hands, sire."); + p->arm = 0; } - else if (2000000000 - p->gold < (prices[p->arm - 1] / 2)) + else if (2000000000 - p->gold < (prices[p->arm - 1] / 2)) { - notice(s_GameServ, u, "Thank you for your business! You now have as much gold as you can carry."); - notice(s_GameServ, u, "However, you have no armor... can I interest you in %s?", armors[WNA - 1]); - p->gold = 2000000000; - p->arm = 0; + notice(s_GameServ, u, "Thank you for your business! You now have as much gold as you can carry."); + notice(s_GameServ, u, "However, you have no armor... can I interest you in %s?", armors[WNA - 1]); + p->gold = 2000000000; + p->arm = 0; } - else + else { - notice(s_GameServ, u, "Thank you for your business! You now have %d more gold but no armor!", - (prices[p->arm - 1] / 2)); - - p->gold += (prices[p->arm - 1] / 2); - p->arm = 0; + notice(s_GameServ, u, "Thank you for your business! You now have %d more gold but no armor!", + (prices[p->arm - 1] / 2)); + + p->gold += (prices[p->arm - 1] / 2); + p->arm = 0; } } - else + else { - notice(s_GameServ, u, "SYNTAX: STORE LIST {ARMOR | WEAPONS}"); - notice(s_GameServ, u, " STORE SELL {ARMOR | WEAPON}"); - notice(s_GameServ, u, " STORE BUY {ARMOR | WEAPON} NUMBER"); + notice(s_GameServ, u, "SYNTAX: STORE LIST {ARMOR | WEAPONS}"); + notice(s_GameServ, u, " STORE SELL {ARMOR | WEAPON}"); + notice(s_GameServ, u, " STORE BUY {ARMOR | WEAPON} NUMBER"); } } - else + else { - notice(s_GameServ, u, "SYNTAX: STORE LIST {ARMOR | WEAPONS}"); - notice(s_GameServ, u, " STORE SELL {ARMOR | WEAPON}"); - notice(s_GameServ, u, " STORE BUY {ARMOR | WEAPON} NUMBER"); - return; + notice(s_GameServ, u, "SYNTAX: STORE LIST {ARMOR | WEAPONS}"); + notice(s_GameServ, u, " STORE SELL {ARMOR | WEAPON}"); + notice(s_GameServ, u, " STORE BUY {ARMOR | WEAPON} NUMBER"); + return; } } void do_inventory(char *u) @@ -2655,24 +2520,41 @@ void do_inventory(char *u) updateTS(user->stats); showinventory(user, user); } + void showinventory(aClient *from, aClient *to) { - char *nick = to->getNick(); + char *nick = to->getNick(); - if (!to) - to = from; - if (is_playing(from)) + if (!to) + to = from; + + if (is_playing(from)) { - Pouch *p = &from->stats->inventory; - notice(s_GameServ, nick, "Inventory for %s:", from->stats->name.c_str()); - notice(s_GameServ, nick, " Healing Potions: %d", p->Healing()); - notice(s_GameServ, nick, "Strength Potions: %d", p->Strength()); - notice(s_GameServ, nick, " Defense Potions: %d", p->Defense()); - notice(s_GameServ, nick, " HP Potions: %d", p->HP()); + if (from->stats->inventory->isEmpty()) + { + notice(s_GameServ, nick, "You aren't carrying anything"); + return; + } + + list *items; + items = from->stats->inventory->getItems(); + + list ::iterator item_iter; + item_iter = items->begin(); + + notice(s_GameServ, nick, "Inventory for %s:", from->stats->name.c_str()); + while (item_iter != items->end()) + { + int x = 0; + notice(s_GameServ, nick, "%d.) %s", x, (*item_iter)->getName().c_str()); + } + } + } void do_tavern(char *u) { + /* char *cmd = strtok(NULL, " "); long int price; @@ -2810,6 +2692,8 @@ void do_tavern(char *u) notice(s_GameServ, u, "Improper Syntax."); notice(s_GameServ, u, "Type /msg %S HELP TAVERN for help"); } + */ + return; } void do_bank(char *u)