X-Git-Url: https://jfr.im/git/irc/gameservirc.git/blobdiff_plain/ddef84f1065598678384195233eeb24e835b4acc..8e8005496ea89dc8d8c7ffb12c76836a4de701a4:/gameserv/player.cpp diff --git a/gameserv/player.cpp b/gameserv/player.cpp index 72e9367..372ebe1 100644 --- a/gameserv/player.cpp +++ b/gameserv/player.cpp @@ -2,13 +2,13 @@ #include "pouch.h" #include "extern.h" #include "flags.h" -#include +#include #include +using namespace std; + void Player::reset() { - name.setString(); - password.setString(); exp = 1; gold = 0; bank = 500; @@ -36,16 +36,17 @@ Player::Player() setData(NULL); #ifdef DEBUGMODE - log("New Player: %s", name.getString()); + log("New Player: %s", name.c_str()); #endif } Player::Player(aClient *user) { + if (user) { setData(user->stats); - name.setString(user->getNick()); + name = user->getNick(); } else setData(NULL); @@ -55,41 +56,51 @@ Player::Player(char *n) { reset(); // Set defaults - name.setString(n); + name = n; #ifdef DEBUGMODE - log("New Player: %s", name.getString()); + log("New Player: %s", name.c_str()); + #endif +} + +Player::Player(string n) +{ + 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"); + string *output; + output = new string("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 + *output += ": " + name; + #endif #ifdef DEBUGMODE - log ("%s", output); - delete [] output; + *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) { @@ -118,30 +129,31 @@ void Player::setData(Player *right) else { char *temp; - temp = new char[16]; reset(); + temp = new char[16]; client = NULL; int num = rand() % 32767; - sprintf(temp, "Player%d", num); - name.setString(temp); + snprintf(temp, 16, "Player: %d", num); + name = temp; delete []temp; } #ifdef DEBUGMODE - log("Setting Player data for %s", name.getString()); + log("Setting Player data for %s", name.c_str()); #endif } monster_::~monster_() { - name.setString(""); - weapon.setString(""); - death.setString(""); } monster_::monster_() { + name.erase(); + weapon.erase(); + death.erase(); strength = 0; + defense = 0; exp = 0; gold = 0; maxhp = hp = 0; @@ -153,6 +165,7 @@ monster_::monster_(monster_ *m) weapon = m->weapon; death = m->death; strength = m->strength; + defense = m->defense; maxhp = m->maxhp; hp = m->hp; gold = m->gold; @@ -165,6 +178,7 @@ monster_::monster_(monster_ &m) weapon = m.weapon; death = m.death; strength = m.strength; + defense = m.defense; maxhp = m.maxhp; hp = m.hp; gold = m.gold;