-# ID~type~name~price~uses~strengthmod~defensemod~maxhpmod~hpmod~forestfightsmod~playerfightsmod~goldmod~bankbalmod
+# type~ID~name~price~uses~strengthmod~defensemod~maxhpmod~hpmod~forestfightsmod~playerfightsmod~goldmod~bankbalmod
# Weapons 1-3000
-1~1~Stick~200~10~0~0~0~0~0~0~0
-2~1~Dagger~1000~15~0~0~0~0~0~0
-3~1~Quarterstaff~3000~25~0~0~0~0~0
-4~1~Short Sword~10000~35~0~0~0~0~0
-5~1~Long Sword~30000~45~0~0~0~0~0
-6~1~Silver Spear~100000~65~0~0~0~0~0
-7~1~Battle Axe~150000~85~0~0~0~0~0
-8~1~The Ragnarok~200000~125~0~0~0~0~0
-9~1~Chain Saw~400000~185~0~0~0~0~0
-10~1~Poison Sword~1000000~255~0~0~0~0~0
-11~1~Flame Sword~4000000~355~0~0~0~0~0
-12~1~Earth Hammer~10000000~505~0~0~0~0~0
-13~1~Light Saber~40000000~805~0~0~0~0~0
-14~1~Masamune~100000000~1205~0~0~0~0~0
-15~1~Excalibur~400000000~1805~0~0~0~0~0
+1~1~Stick~200~-1~10~0~0~0
+1~2~1~Dagger~1000~-1~15~0~0~0
+1~3~1~Quarterstaff~3000~-1~25~0~0~0
+1~4~1~Short Sword~10000~-1~35~0~0~0
+1~5~Long Sword~30000~-1~45~0~0~0
+1~6~Silver Spear~100000~-1~65~0~0~0
+1~7~Battle Axe~150000~-1~85~0~0~0
+1~8~The Ragnarok~200000~-1~125~0~0~0
+1~9~Chain Saw~400000~185~-1~0~0~0
+1~10~Poison Sword~1000000~-1~255~0~0~0
+1~11~Flame Sword~4000000~-1~355~0~0~0
+1~12~Earth Hammer~10000000~-1~505~0~0~0
+1~13~Light Saber~40000000~-1~805~0~0~0
+1~14~Masamune~100000000~-1~1205~0~0~0
+1~15~Excalibur~400000000~-1~1805~0~0~0
# Armor 3001-6000
-3001~2~Clothes~0~3~0~0~0~0
-3002~2~Leather Vest~0~5~0~0~0~0
-3003~2~Chain Mail~0~10~0~0~0~0
-3004~2~Plate Armor~0~15~0~0~0~0
-3005~2~Full Body Armor~0~25~0~0~0~0
-3006~2~Magic Mail~0~35~0~0~0~0
-3007~2~Graphite Suit~0~50~0~0~0~0
-3008~2~Steel Suit~0~75~0~0~0~0
-3009~2~Force Field~0~100~0~0~0~0
-3010~2~Armor of Light~0~150~0~0~0~0
-3011~2~Mythril Vest~0~225~0~0~0~0
-3012~2~DemiGod Armor~0~300~0~0~0~0
-3013~2~Hades' Cloak~0~400~0~0~0~0
-3014~2~Dragon Scales~0~600~0~0~0~0
-3015~2~Adamantium~0~1000~0~0~0~0
+2~3001~Clothes~0~3~0~0~0~0
+2~3002~Leather Vest~0~5~0~0~0~0
+2~3003~Chain Mail~0~10~0~0~0~0
+2~3004~Plate Armor~0~15~0~0~0~0
+2~3005~Full Body Armor~0~25~0~0~0~0
+2~3006~Magic Mail~0~35~0~0~0~0
+2~3007~Graphite Suit~0~50~0~0~0~0
+2~3008~Steel Suit~0~75~0~0~0~0
+2~3009~Force Field~0~100~0~0~0~0
+2~3010~Armor of Light~0~150~0~0~0~0
+2~3011~Mythril Vest~0~225~0~0~0~0
+2~3012~DemiGod Armor~0~300~0~0~0~0
+2~3013~Hades' Cloak~0~400~0~0~0~0
+2~3014~Dragon Scales~0~600~0~0~0~0
+2~3015~Adamantium~0~1000~0~0~0~0
# Potions 6001-9000
# Miscellaneous 9001-12000
long lastrefresh;
List<aClient> clients[U_TABLE_SIZE];
+list <item*> items;
void save_lastrefresh();
void load_lastrefresh();
void prettyIntro();
void check_idles();
-
+void testitems();
int main(int argc, char *argv[])
{
}
// This loop will retry the connection 3 times
+ connected = 1;
+ load_lastrefresh();
- connected = 1;
- load_lastrefresh();
+ {
+ testitems();
+ item *tester = items.front();
+ cout << tester->getName() << endl;
+ item *tester2 = items.back();
+ cout << tester2->getName() << endl;
+ items.clear();
+ }
{
// This is where you can test stuff
-
- string playername;
- Player *p;
-
- cout << "Enter an name: ";
- cin >> playername;
- p = new Player(playername);
-
- cout << "You entered: " << p->name << endl;
- item *testitem, *tempitem;
- weapon *testweapon;
- cout << "Enter a weapon name: ";
- cin >> playername;
- testitem = new weapon(playername);
- testweapon = new weapon(playername, 10000);
-
- cout << "You entered: " << testitem->getName() << endl;
- cout << "Adding the item to your inventory" << endl;
- p->inventory->addItem(testitem);
-
- tempitem = p->inventory->Find(playername)->getItem();
- cout << "Name: " << tempitem->getName() << endl;
- tempitem = p->inventory->Find(playername)->getItem();
- cout << "Name: " << tempitem->getName() << endl;
- cout << "Testitem: " << &testitem << " Tempitem: " << &tempitem << endl;
-
-
- delete p;
+ /*
+ string itemname;
+ item *tempitem;
+
+ cout << "Enter an item name: ";
+ cin >> itemname;
+ char num[16];
+ for (int x = 1; x < 6000001; x++)
+ {
+ sprintf(num, "%d", x);
+ tempitem = new weapon((itemname + num));
+ items.push_back(tempitem);
+ }
+
+ item *tester = items.front();
+ cout << tester->getName() << endl;
+ item *tester2 = items.back();
+ cout << tester2->getName() << endl;
+ items.clear();
+ */
}
end:
unload_config_file();
return 0;
}
+
+void testitems()
+{
+ // This is where you can test stuff
+ string itemname;
+ item *tempitem;
+
+ cout << "Enter an item name: ";
+ cin >> itemname;
+ char num[16];
+ char *testing;
+ testing = new char[80];
+ strncpy(testing, "1~1~Stick~200~-1~15~0~0~0", 80);
+ for (int x = 1; x < 6000001; x++)
+ {
+ sprintf(num, "%d", x);
+ tempitem = new weapon("blah");
+ if (!tempitem->setData(testing))
+ {
+ cout << "Error in setData()" << endl;
+ break;
+ }
+ items.push_back(tempitem);
+ }
+}
aClient *find(char *nick)
{
#include "item.h"
#include "player.h"
+#include "extern.h"
item::item()
{
return myname != right.myname;
}
+item &item::operator=(const item &right)
+{
+ myname = right.myname;
+ myprice = right.myprice;
+ myuses = right.myuses;
+ id = right.id;
+ mytype = right.mytype;
+
+ for (int x = 0; x < 8; x++)
+ {
+ mymodifiers[x] = right.mymodifiers[x];
+ }
+ return *this; // enables cascading x=y=z;
+}
weapon::~weapon()
{
}
+bool weapon::setData(char *datastr)
+{
+ try
+ {
+ char *temp;
+ // Get the weapon type, but default to WEAPON since this is a weapon
+ temp = strtok(datastr, "~");
+
+ mytype = WEAPON;
+ // Grab the item's id
+ temp = strtok(NULL, "~");
+
+ id = stringtoint(temp);
+
+ // Grab the item's name
+ temp = strtok(NULL, "~");
+
+ myname = temp;
+
+ // Grab the item's price
+ temp = strtok(NULL, "~");
+
+ myprice = stringtoint(temp);
+
+ // Grab the item's uses
+ temp = strtok(NULL, "~");
+
+ myuses = stringtoint(temp);
+
+ // Grab the item's modifiers
+ for (int x = 0; x < 4; x++)
+ {
+ temp = strtok(NULL, "~");
+
+ mymodifiers[x] = stringtoint(temp);
+ }
+
+ // If we got here, we were successful
+ return true;
+ }
+ catch (char *str)
+ {
+ log("Exception: %s", str);
+ return false;
+ }
+}
+
bool weapon::use(Player *p)
{
// weapon(char *name, int p=0, int uses = -1, int strength=0, int defense=0, int maxhp=0)
p->maxhp -= mymodifiers[2];
}
-bool weapon::setData(const char *dataStr)
-{
-
- return true;
-}
-
armor::~armor()
{
}
p->maxhp -= mymodifiers[2];
}
-bool armor::setData(const char *dataStr)
+bool armor::setData(char *datastr)
{
+ char *temp;
+
+ // Get the weapon type, but default to WEAPON since this is a weapon
+ temp = strtok("~", datastr);
+ if (!temp)
+ return false;
+ mytype = ARMOR;
+
+ // Grab the item's id
+ temp = strtok("~", NULL);
+ if (!temp)
+ return false;
+ id = stringtoint(temp);
+
+ // Grab the item's name
+ temp = strtok("~", NULL);
+ if (!temp)
+ return false;
+ myname = temp;
+
+ // Grab the item's price
+ temp = strtok("~", NULL);
+ if (!temp)
+ return false;
+ myprice = stringtoint(temp);
+
+ // Grab the item's uses
+ temp = strtok("~", NULL);
+ if (!temp)
+ return false;
+ myuses = stringtoint(temp);
+
+ // Grab the item's modifiers
+ for (int x = 0; x < 5; x++)
+ {
+ temp = strtok("~", NULL);
+ if (!temp)
+ return false;
+ mymodifiers[x] = stringtoint(temp);
+ }
+
+ // If we got here, we were successful
return true;
}
return;
}
-bool potion::setData(const char *dataStr)
+bool potion::setData(char *datastr)
{
-
+ char *temp;
+
+ // Get the weapon type, but default to WEAPON since this is a weapon
+ temp = strtok("~", datastr);
+ if (!temp)
+ return false;
+ mytype = ARMOR;
+
+ // Grab the item's id
+ temp = strtok("~", NULL);
+ if (!temp)
+ return false;
+ id = stringtoint(temp);
+
+ // Grab the item's name
+ temp = strtok("~", NULL);
+ if (!temp)
+ return false;
+ myname = temp;
+
+ // Grab the item's price
+ temp = strtok("~", NULL);
+ if (!temp)
+ return false;
+ myprice = stringtoint(temp);
+
+ // Grab the item's uses
+ temp = strtok("~", NULL);
+ if (!temp)
+ return false;
+ myuses = stringtoint(temp);
+
+ // Grab the item's modifiers
+ for (int x = 0; x < 5; x++)
+ {
+ temp = strtok("~", NULL);
+ if (!temp)
+ return false;
+ mymodifiers[x] = stringtoint(temp);
+ }
+
+ // If we got here, we were successful
return true;
}
virtual bool use(Player *p) = 0;
virtual void undo(Player *p) = 0;
- virtual bool setData(const char *datastr) = 0;
+ virtual bool setData(char *datastr) = 0;
type getType() {return mytype;};
void setType(type);
bool operator>(const item &right) const;
bool operator==(const item &right) const;
bool operator!=(const item &right) const;
+ item &operator=(const item &right);
protected:
string myname; // Name to use in game & sorting
weapon(string name, int p=0, int uses = -1, long int identifier=0, int strength=0, int defense=0, int maxhp=0) : item(name, p, uses, strength, defense, maxhp){};
~weapon();
+ bool setData(char *datastr);
bool use(Player *p);
void undo(Player *p);
- bool setData(const char *datastr);
+
};
class armor : public item
armor(string name, int p=0, int uses = -1, long int identifier=0, int strength=0, int defense=0, int maxhp=0) : item(name, p, uses, strength, defense, maxhp){};
~armor();
+ bool setData(char *datastr);
bool use(Player *p);
void undo(Player *p);
- bool setData(const char *datastr);
};
class potion : public item
potion(string name, int p=0, int uses = 1, long int identifier=0, int strength=0, int defense=0, int maxhp=0, int hp=0, int forest_fights=0, int player_fights=0, int gold=0, int bank=0) : item(name, p, uses, strength, defense, maxhp, hp, forest_fights, player_fights, gold, bank){};
~potion();
+ bool setData(char *datastr);
bool use(Player *p);
void undo(Player *p);
- bool setData(const char *datastr);
protected:
range myrange;