X-Git-Url: https://jfr.im/git/irc/gameservirc.git/blobdiff_plain/ddef84f1065598678384195233eeb24e835b4acc..c7bceafda9c7c1045b398d8454a0a2ed0fbd9170:/gameserv/player.cpp diff --git a/gameserv/player.cpp b/gameserv/player.cpp index 72e9367..76cc134 100644 --- a/gameserv/player.cpp +++ b/gameserv/player.cpp @@ -1,197 +1,209 @@ +#include "item.h" #include "player.h" #include "pouch.h" #include "extern.h" #include "flags.h" -#include + +#include #include +#if defined(HAVE_CRYPT_H) + +#include + +#elif defined(HAVE_UNISTD_H) + +#include + +#endif + +using namespace std; + void Player::reset() { - name.setString(); - password.setString(); - exp = 1; - gold = 0; - bank = 500; - hp = 10; - maxhp = 10; - strength = 0; - defense = 0; - armor = 1; - weapon = 1; - level = 1; - forest_fights = forestfights; - player_fights = 3; - fight = NULL; - master = NULL; - battle = NULL; - flags = 0; - lastcommand = 0; - lastlogin = 0; - setAlive(this); - inventory.reset(); + exp = 1; + gold = 0; + bank = 500; + hp = 10; + maxhp = 10; + strength = 0; + defense = 0; + arm = 1; + wea = 1; + level = 1; + forest_fights = forestfights; + player_fights = 3; + fight = NULL; + master = NULL; + battle = NULL; + flags = 0; + lastcommand = 0; + lastlogin = 0; + setAlive(this); + inventory->clear(); } Player::Player() { - setData(NULL); - - #ifdef DEBUGMODE - log("New Player: %s", name.getString()); - #endif + inventory = new pouch(); + setData(NULL); + +#ifdef DEBUGMODE + log("New Player: %s", name.c_str()); +#endif } -Player::Player(aClient *user) +Player::Player(char *n) { - if (user) - { - setData(user->stats); - name.setString(user->getNick()); - } - else - setData(NULL); + inventory = new pouch(); + reset(); // Set defaults + + name = n; + +#ifdef DEBUGMODE + log("New Player: %s", name.c_str()); +#endif } -Player::Player(char *n) +Player::Player(string n) { - reset(); // Set defaults - - name.setString(n); - - #ifdef DEBUGMODE - log("New Player: %s", name.getString()); - #endif + inventory = new pouch(); + reset(); + name = n; +#ifdef DEBUGMODE + log("New Player: %s", name.c_str()); +#endif } Player::~Player() { - #ifdef DEBUGMODE - char *output; - output = new char[strlen(name.getString()) - + strlen(password.getString()) + 48]; - strcpy(output, "Deleting Player"); - #endif - - if (name.getString() != NULL) - { - #ifdef DEBUGMODE - sprintf(output, "%s: %s", output, name.getString()); - #endif - } - - if (password.getString() != NULL) - { - #ifdef DEBUGMODE - sprintf(output, "%s Password: %s", output, password.getString()); - #endif - } - - #ifdef DEBUGMODE - log ("%s", output); - delete [] output; - #endif + delete inventory; + +#ifdef DEBUGMODE + string *output; + output = new string("Deleting Player"); +#endif + +#ifdef DEBUGMODE + *output += ": " + name; +#endif + +#ifdef DEBUGMODE + *output += " Password: " + password; + log ("%s", output->c_str()); + delete output; +#endif +} +void Player::setPassword(const char *p) +{ + static char saltChars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV\ +WXYZ0123456789./"; + static char salt[3]; + + salt[0] = saltChars[rand() % strlen(saltChars)]; + salt[1] = saltChars[rand() % strlen(saltChars)]; + salt[2] = '\0'; + + password = crypt(p, salt); } void Player::setData(Player *right) { - if (right) + if (right) { - name = right->name; - password = right->password; - exp = right->exp; - gold = right->gold; - bank = right->bank; - hp = right->hp; - maxhp = right->maxhp; - strength = right->strength; - defense = right->defense; - armor = right->armor; - weapon = right->weapon; - level = right->level; - forest_fights = right->forest_fights; - player_fights = right->player_fights; - flags = right->flags; - inventory.setInventory(&right->inventory); - client = right->client; - lastcommand = right->lastcommand; - lastlogin = right->lastlogin; + name = right->name; + password = right->password; + exp = right->exp; + gold = right->gold; + bank = right->bank; + hp = right->hp; + maxhp = right->maxhp; + strength = right->strength; + defense = right->defense; + arm = right->arm; + wea = right->wea; + level = right->level; + forest_fights = right->forest_fights; + player_fights = right->player_fights; + flags = right->flags; + *inventory = *right->inventory; + client = right->client; + lastcommand = right->lastcommand; + lastlogin = right->lastlogin; } - else + else { - char *temp; - temp = new char[16]; - reset(); - client = NULL; - int num = rand() % 32767; - sprintf(temp, "Player%d", num); - name.setString(temp); - delete []temp; + char *temp; + reset(); + temp = new char[16]; + client = NULL; + int num = rand() % 32767; + snprintf(temp, 16, "Player: %d", num); + name = temp; + delete []temp; } - - #ifdef DEBUGMODE - log("Setting Player data for %s", name.getString()); - #endif + +#ifdef DEBUGMODE + log("Setting Player data for %s", name.c_str()); +#endif } monster_::~monster_() { - name.setString(""); - weapon.setString(""); - death.setString(""); } monster_::monster_() { - strength = 0; - exp = 0; - gold = 0; - maxhp = hp = 0; + name.erase(); + weapon.erase(); + death.erase(); + strength = 0; + defense = 0; + exp = 0; + gold = 0; + maxhp = hp = 0; } monster_::monster_(monster_ *m) { - name = m->name; - weapon = m->weapon; - death = m->death; - strength = m->strength; - maxhp = m->maxhp; - hp = m->hp; - gold = m->gold; - exp = m->exp; + name = m->name; + weapon = m->weapon; + death = m->death; + strength = m->strength; + defense = m->defense; + maxhp = m->maxhp; + hp = m->hp; + gold = m->gold; + exp = m->exp; } monster_::monster_(monster_ &m) { - name = m.name; - weapon = m.weapon; - death = m.death; - strength = m.strength; - maxhp = m.maxhp; - hp = m.hp; - gold = m.gold; - exp = m.exp; + name = m.name; + weapon = m.weapon; + death = m.death; + strength = m.strength; + defense = m.defense; + maxhp = m.maxhp; + hp = m.hp; + gold = m.gold; + exp = m.exp; } long int Player::setFlags(long int newflags) { - flags = newflags; - return getFlags(); + flags = newflags; + return getFlags(); } long int Player::addFlag(long int flag) { - flags |= flag; - return getFlags(); + flags |= flag; + return getFlags(); } long int Player::remFlag(long int flag) { - flags &= ~flag; - return getFlags(); -} - -Pouch::Pouch(int h, int s, int d) -{ - setHealing(h); - setStrength(s); - setDefense(d); + flags &= ~flag; + return getFlags(); }