Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  
Pages: [1] 2 3 4

Author Topic: DagronQwest - my first attempt at coding in [s]VB.[/s] C++ :/  (Read 7592 times)

bowdown2q

  • Bay Watcher
    • View Profile

Well, I realize my first problem is that I'm using VB and not C++, Java, or flash. But that's what I've got. (Visual Studio 2010 on both desktop and laptop, so.)

So I decided I wanted to make a game where you could play as a dragon vs all the heroes and whatnot that you usually play as, as a sort of... hybrid pet game. (to be honest, I first saw this game style in the form of some X-rated Japanese flash game, but I liked the simplistic RPG-style.) The short version of it is that I'm making it a... turn-based RPG with strategic elements (overland maps, cave layouts, dealing with angry peasants/heroes/kings/etc at your cave doors, etc.).

But. The most code I knew prior to starting this project was HTML and a java applet where a little robot thing turned and picked up a ball. Or something, idk, it was a few years ago.  It's been going pretty smoothly, but I've reached the point that I can't just keep adding what I do know without compromising the rest.

The issue I have right now is that of classes. What I want to do is write up a CSV file with stats for every creature in the game (although, if it can be done, I'd like ot do it such that the CSV holds ranges of stats -eg 2d6 or 2-12 or 7 +/- 5, etc- as to keep every individual in the game unique. This actually become necessary with NPCs, but I'd like to hold off on them until the rest of this is working.) And then I'd like to have the program read the CSV file and generate stats for a creature. So far I've got "clsCritters.vb" which is a class file, and holds the following (note that I haven't finished all the properties):
Spoiler (click to show/hide)

And the player's stats are "clsPlayer.vb" which is a class that inherits clsCritters.
And I'm not sure what else to DO. I can build a CSV file with columns for all those stats easy enough (most of them all default to 0), but I have no idea how to load that info into the prog. I think I need an array? But I've also seen examples that use structures to achieve similar ends, and that just confuses me more.

I know i'm going to have more issues once this is resolved, but I'd like to focus on this one for now, as it's the biggest hurdle. If i can get player stats and multiple creatures of the same type initialized at once, I can wing some mediocre combat code to test it, and once I have that, I can package a test build and start working on the rest of the game! 

P.S. Once I have a combat sim running, I'll publish it and put up v0.0.0(a) for anybody who's interested. There's a LOT planned; you'll have to deal with getting loot, food, livestock, hirelings and/or slaves and/or prisoners, attacking villages, castles, armies, and bandits, learning from wizards, priests, and shaman, monopolizing industry, raising armies, conquering regions, collecting taxes, destroying crops, finding mates, running criminal syndicates, and anything else I can think of.
« Last Edit: April 26, 2011, 09:47:25 pm by bowdown2q »
Logged

Araph

  • Bay Watcher
    • View Profile
Re: DagronQwest - my first attempt at coding in VB.
« Reply #1 on: March 31, 2011, 07:45:10 pm »

That's a really cool idea for a game! It strikes me as sort of Dwarf Fortress from a dragon's perspective, which would be AWESOME.

Also, I saw stuff like bones, meat, and wood in that code spoiler. Is it going to have combat somewhat like DF's, or are those for something else?
Logged

bowdown2q

  • Bay Watcher
    • View Profile
Re: DagronQwest - my first attempt at coding in VB.
« Reply #2 on: March 31, 2011, 07:54:55 pm »

Yeah, [game here] from a Dragon's perspective is exactly what I'm going for. It should play like you're playing an Adventurer Mayor - an abstract control of underlings, and an active control of your personal needs/wants.

Oh lord no, I do not have the talent to program a specific combat sim like DFs. I plan on a simple [stat]d6+1/5[skill] system for all rolls, opposed by a static defense (damage reduction) and then applied straight to HP. Bone, meat, hide, etc. will be used for both food and crafting. Honestly, the first thing I plan on adding is prisoner managment. You should be able to work your hirelings/slaves/prisoners to death (or the edge of death, so you can use them longer) to do things like craft, farm, clean, train you, sacrifice to dragon gods, or whathaveyou.

Nadaka

  • Bay Watcher
    • View Profile
    • http://www.nadaka.us
Re: DagronQwest - my first attempt at coding in VB.
« Reply #3 on: April 01, 2011, 10:35:50 am »

With visual studio you could be using a better language than VB. It runs both C++ and C#.
Logged
Take me out to the black, tell them I ain't comin' back...
I don't care cause I'm still free, you can't take the sky from me...

I turned myself into a monster, to fight against the monsters of the world.

Ozyton

  • Bay Watcher
    • View Profile
Re: DagronQwest - my first attempt at coding in VB.
« Reply #4 on: April 01, 2011, 11:50:27 am »

You know, I've always wanted a game from the perspective of a dragon (not like that Spyro stuff, like... dragon stuff XD) So, I wish you the best of luck =)

bowdown2q

  • Bay Watcher
    • View Profile
Re: DagronQwest - my first attempt at coding in VB.
« Reply #5 on: April 01, 2011, 03:22:07 pm »

With visual studio you could be using a better language than VB. It runs both C++ and C#.

True, but it's what I've got so far. If somebody could help me translate what I have into C++ then maybe I could work with that. But as it stands, I know more VB than anything else.

TolyK

  • Bay Watcher
  • Nowan Ilfideme
    • View Profile
Re: DagronQwest - my first attempt at coding in VB.
« Reply #6 on: April 02, 2011, 04:16:09 am »

hi, I'm here and willing to help. I myself am doing both a game and a simulation thing in VB.
I'm in basically the same situation.

P.S. I helped make the Lazy Newb Pack, for reading text files there is some good code in there.

P.P.S. I'm using VB 2008 due to compatibility, you might want to migrate your code back so that more folks can play  :-\
Logged
My Mafia Stats
just do whatevery tolyK and blame it as a bastard mod
Shakerag: Who are you personally suspicious of?
At this point?  TolyK.

lordnincompoop

  • Bay Watcher
  • Allusionist
    • View Profile
Re: DagronQwest - my first attempt at coding in VB.
« Reply #7 on: April 02, 2011, 05:16:28 am »

You create classes, and (I think) you just make objects out of them in the functions.

I can do some of that translating, if you want.
Logged

TolyK

  • Bay Watcher
  • Nowan Ilfideme
    • View Profile
Re: DagronQwest - my first attempt at coding in VB.
« Reply #8 on: April 02, 2011, 05:40:59 am »

You make a class, such as
Code: [Select]
Class Creature
  Property HP
    ...
  End Property 'HP
  Property Armor
    ...
  End Property 'Armor
  ...
  'Some other properties
  ...
  Sub laSub
    ...
  End Sub 'laSub
End Class 'Creature

And then make a new object:
Code: [Select]
Dim Psycotherapist as New Creature

And then do stuff with the object:
Code: [Select]
Psycotherapist.HP=100
Psycotherapist.Murder(LaPlayer)
Logged
My Mafia Stats
just do whatevery tolyK and blame it as a bastard mod
Shakerag: Who are you personally suspicious of?
At this point?  TolyK.

lordnincompoop

  • Bay Watcher
  • Allusionist
    • View Profile
Re: DagronQwest - my first attempt at coding in VB.
« Reply #9 on: April 02, 2011, 06:11:33 am »

Code: [Select]
Psychotherapist.HP=100

One of the main paradigms of OOP is that most if not all of the guts remain hidden or abstracted away. Thus, it's best to not touch variables in the class from outside the class except via methods.

Also, I've taken the liberty of translating that class for you into C++, and added some methods.

Code: (clsCritter.h) [Select]
#include <string>

class clsCritter //Try not to have unused variables.
{
public: //Anything accessible from elsewhere. Preferably as little as possible.

private://Anything only accessible from within the class. Preferably as much as possible.
static int nCritterCount;
int nID;
std::string strName;
std::string strDisplayName;
bool bIsAnimal;
int nAge;
int nTreasure;

//Specs:
int nMeat;
int nBones;
int nHide;
int nVore;
int nVoreQty;
string strTags;

//Vitals:
int nHP;
int nDurability;
int nStrength;
int nGrace;
int nIntellect;
int nWillpower;
int nMagic;

//Skills
    int nSkillAtk;
    int nSkillDef;
    int nSkillBrthWpn;
    int nSkillAcro;
    int nSkillAthl;
    int nSkillSte;
    int nSkillFly;
    int nSkillHnt;
    int nSkillFrge;
    int nSkillFrm;
    int nSkillCook;
    int nSkillBlf;
    int nSkillNego;
    int nSkillIntu;
    int nSkillInst;
    int nSkillLead;
    int nSkillArcn;
    int nSkillPray;
    int nSkillShm;
    int nSkillCln;
    int nSkillEng;
    int nSkillFstAid;
    int nSkillMine;
    int nSkillSrgy;

//Crafting Skills:
int nSkillCrfstone;
    int nSkillCrfjewel;
    int nSkillCrfglass;
    int nSkillCrfwood;
    int nSkillCrfbone;
    int nSkillCrfcloth;
    int nSkillCrfleather;

clsCritter(); //Default Constructor.
clsCritter(std::string Name, std::string DisplayName); //You can overload the constructor to make it accept arguments.

/*
** You can overload methods if you want, but if you're going to use them for
** different purposes (such as the Get and Set things you had) it's better to
** make them separate methods in the class. Also, for neatness I've separated
** the method implementation from the class file thing here.
*/

char* GetName();
void SetName(std::string Name); //Function and methods of the void-type return nothing.
int GetID();
void SetID(int ID);
};

Code: (clsCritterData.cpp) [Select]
#include "clsCritter.h"

clsCritter::clsCritter() //I've taken the liberty of initalizing everything here.
{
if (nCritterCount < 1) nCritterCount = 1;
else nCritterCount++;

nID = 0;
strName = "Placeholder";
strDisplayName = "Placeholder";
bIsAnimal = true;
nAge = 0;
nTreasure = 0;

//Specs:
nMeat = 0;
nBones = 0;
nHide = 0;
nVore = 0;
nVoreQty = 0;
strTags = 0;

//Vitals:
nHP = 0;
nDurability = 0;
nStrength = 0;
nGrace = 0;
nIntellect = 0;
nWillpower = 0;
nMagic = 0;

//Skills
    nSkillAtk = 0;
    nSkillDef = 0;
    nSkillBrthWpn = 0;
    nSkillAcro = 0;
    nSkillAthl = 0;
    nSkillSte = 0;
    nSkillFly = 0;
    nSkillHnt = 0;
    nSkillFrge = 0;
    nSkillFrm = 0;
    nSkillCook = 0;
    nSkillBlf = 0;
    nSkillNego = 0;
    nSkillIntu = 0;
    nSkillInst = 0;
    nSkillLead = 0;
    nSkillArcn = 0;
    nSkillPray = 0;
    nSkillShm = 0;
    nSkillCln = 0;
    nSkillEng = 0;
    nSkillFstAid = 0;
    nSkillMine = 0;
    nSkillSrgy = 0;

//Crafting Skills:
nSkillCrfstone = 0;
    nSkillCrfjewel = 0;
    nSkillCrfglass = 0;
    nSkillCrfwood = 0;
    nSkillCrfbone = 0;
    nSkillCrfcloth = 0;
    nSkillCrfleather = 0;
}

clsCritter::clsCritter(std::string Name, std::string DisplayName) //Add more arguments if you want.
{
if (nCritterCount < 1) nCritterCount = 1;
else nCritterCount++;

nID = 0;
strName = Name;
strDisplayName = DisplayName;
bIsAnimal = true;
nAge = 0;
nTreasure = 0;

//Specs:
nMeat = 0;
nBones = 0;
nHide = 0;
nVore = 0;
nVoreQty = 0;
strTags = 0;

//Vitals:
nHP = 0;
nDurability = 0;
nStrength = 0;
nGrace = 0;
nIntellect = 0;
nWillpower = 0;
nMagic = 0;

//Skills
    nSkillAtk = 0;
    nSkillDef = 0;
    nSkillBrthWpn = 0;
    nSkillAcro = 0;
    nSkillAthl = 0;
    nSkillSte = 0;
    nSkillFly = 0;
    nSkillHnt = 0;
    nSkillFrge = 0;
    nSkillFrm = 0;
    nSkillCook = 0;
    nSkillBlf = 0;
    nSkillNego = 0;
    nSkillIntu = 0;
    nSkillInst = 0;
    nSkillLead = 0;
    nSkillArcn = 0;
    nSkillPray = 0;
    nSkillShm = 0;
    nSkillCln = 0;
    nSkillEng = 0;
    nSkillFstAid = 0;
    nSkillMine = 0;
    nSkillSrgy = 0;

//Crafting Skills:
nSkillCrfstone = 0;
    nSkillCrfjewel = 0;
    nSkillCrfglass = 0;
    nSkillCrfwood = 0;
    nSkillCrfbone = 0;
    nSkillCrfcloth = 0;
    nSkillCrfleather = 0;
}

char* clsCritter::GetName()
{
return strName;
}

void clsCritter::SetName(std::string Name)
{
strName = Name;
}

int clsCritter::GetID()
{
return nID;
}

void clsCritter::SetID(int ID)
{
nID = ID;
}
Logged

TolyK

  • Bay Watcher
  • Nowan Ilfideme
    • View Profile
Re: DagronQwest - my first attempt at coding in VB.
« Reply #10 on: April 02, 2011, 06:38:36 am »

I have the feeling he wants to stick with VB, so I guess I'll just dissect his OP.
So I decided I wanted to make a game where you could play as a dragon vs all the heroes and whatnot that you usually play as, as a sort of... hybrid pet game. (to be honest, I first saw this game style in the form of some X-rated Japanese flash game, but I liked the simplistic RPG-style.) The short version of it is that I'm making it a... turn-based RPG with strategic elements (overland maps, cave layouts, dealing with angry peasants/heroes/kings/etc at your cave doors, etc.).
Interesting.
Quote
But. The most code I knew prior to starting this project was HTML and a java applet where a little robot thing turned and picked up a ball. Or something, idk, it was a few years ago.  It's been going pretty smoothly, but I've reached the point that I can't just keep adding what I do know without compromising the rest.
no comment.
Quote
The issue I have right now is that of classes. What I want to do is write up a CSV file with stats for every creature in the game (although, if it can be done, I'd like to do it such that the CSV holds ranges of stats -eg 2d6 or 2-12 or 7 +/- 5, etc- as to keep every individual in the game unique.
This is fairly easy as long as you have a constant structure for holding the data.
Quote
(This actually become necessary with NPCs, but I'd like to hold off on them until the rest of this is working.)
Good idea, AI code and NPC's are best left for the end IMO.
Quote
And then I'd like to have the program read the CSV file and generate stats for a creature. So far I've got "clsCritters.vb" which is a class file, and holds the following (note that I haven't finished all the properties):
This looks OK, but I suggest breaking it down even farther. Hmm...
Replies in bold.
Quote
Spoiler (click to show/hide)
The code is mostly OK.
Quote
And the player's stats are "clsPlayer.vb" which is a class that inherits clsCritters.
Along with other stuff, though. Such as current_thoughts, relations, etc.
Quote
And I'm not sure what else to DO. I can build a CSV file with columns for all those stats easy enough (most of them all default to 0), but I have no idea how to load that info into the prog. I think I need an array? But I've also seen examples that use structures to achieve similar ends, and that just confuses me more.
Check MSDN, press F1, etc. These are really helpful in VB.
Structures are different in that they're only groups of variables. Classes/objects also have methods and events. EVENTS ARE VERY IMPORTANT, ESPECIALLY IN GAMES.
Arrays are probably your best bet, just make a variant array (a variant type array of variant size), using something such as:
Code: [Select]
Dim tempFile() 'This initializes it as a variant array of variants
..
'Somewhere in your code
ReDim tempFile(30)'Makes the whole array 30 variables long

Quote
I know i'm going to have more issues once this is resolved, but I'd like to focus on this one for now, as it's the biggest hurdle. If i can get player stats and multiple creatures of the same type initialized at once, I can wing some mediocre combat code to test it, and once I have that, I can package a test build and start working on the rest of the game!

Good luck with that, and also note that this got me interested. PM me if ya want me to help more in-depth. ;)

Quote
P.S. Once I have a combat sim running, I'll publish it and put up v0.0.0(a) for anybody who's interested. There's a LOT planned; you'll have to deal with getting loot, food, livestock, hirelings and/or slaves and/or prisoners, attacking villages, castles, armies, and bandits, learning from wizards, priests, and shaman, monopolizing industry, raising armies, conquering regions, collecting taxes, destroying crops, finding mates, running criminal syndicates, and anything else I can think of.
Interesting, looks like a memory hog (like DF :P) but very complex (like DF :D) and fun (like DF ;D)
Logged
My Mafia Stats
just do whatevery tolyK and blame it as a bastard mod
Shakerag: Who are you personally suspicious of?
At this point?  TolyK.

lordnincompoop

  • Bay Watcher
  • Allusionist
    • View Profile
Re: DagronQwest - my first attempt at coding in VB.
« Reply #11 on: April 02, 2011, 06:43:13 am »

I have the feeling he wants to stick with VB, so I guess I'll just dissect his OP.

I don't know that much about VB, so I'm just helping in whatever way I can.

Eagerly awaiting update from OP.
Logged

TolyK

  • Bay Watcher
  • Nowan Ilfideme
    • View Profile
Re: DagronQwest - my first attempt at coding in VB.
« Reply #12 on: April 02, 2011, 07:21:54 am »

also awaiting update. sounds like a cool game!
Logged
My Mafia Stats
just do whatevery tolyK and blame it as a bastard mod
Shakerag: Who are you personally suspicious of?
At this point?  TolyK.

bowdown2q

  • Bay Watcher
    • View Profile
Re: DagronQwest - my first attempt at coding in VB.
« Reply #13 on: April 02, 2011, 02:08:59 pm »

Quote
The issue I have right now is that of classes. What I want to do is write up a CSV file with stats for every creature in the game (although, if it can be done, I'd like to do it such that the CSV holds ranges of stats -eg 2d6 or 2-12 or 7 +/- 5, etc- as to keep every individual in the game unique.
This is fairly easy as long as you have a constant structure for holding the data.
Soo... the classes?

Quote
And then I'd like to have the program read the CSV file and generate stats for a creature. So far I've got "clsCritters.vb" which is a class file, and holds the following (note that I haven't finished all the properties):
This looks OK, but I suggest breaking it down even farther. Hmm...
[/quote]
How do you mean? Should I be nesting classes or something?
Quote
    Private m_displayName As String 'This is for when there are more than one of these in a room. increment the name with (+=1) every time. easily found by a function, no need to save it in memory
Hm. I guess that's true. I'm not sure how to do that, but I suppose it can wait until I'm at that point. I'll comment out this line for the moment.

Quote
    Private m_Is_Animal As Boolean better to make an Enum(eration) and have "Animal", "Reptire", etc.
This is probably going to end up a tag. It's going to be used to differentiate NPCs from animals. It'll matter for AI and the combat.

Quote
    Private m_Age As Integer what's this for other than the player? works though
Yeahh... I'm going to move this to the player class instead.

Quote
    Private m_Treasure As Integer is this how much gold you get killing it? goes I guess.
Yeaahh I think i'll drop this and incorporate it into NPC AI. That or the combat code.

Quote
Parts of the next sections can probably be calculated through size, type, and such, but:
(...)
    Private m_skl_Atk As Integer can be calculated
    Private m_skl_Def As Integer can be calculated
    Private m_skl_BrthWpn As Integer interesting. works
The meat, etc. stats are going to be predefined in the critter CSV stats. I plan on having stats for each kind of critter on its own.
[Edit:] The attack/def things are skills; they are the base from which combat stats are calculated. Specifically, it's [stat]d6+1/5[skill].

Quote
And the player's stats are "clsPlayer.vb" which is a class that inherits clsCritters.
Along with other stuff, though. Such as current_thoughts, relations, etc. What do you mean? The player and any other NPCs aren't going to have crazy interactions any time soon. [/quote]

Do I need to do anything else where the Player inherits the base class?

Quote
Check MSDN, press F1, etc. These are really helpful in VB.
Structures are different in that they're only groups of variables. Classes/objects also have methods and events. EVENTS ARE VERY IMPORTANT, ESPECIALLY IN GAMES.
Arrays are probably your best bet, just make a variant array (a variant type array of variant size), using something such as:
Code: [Select]
Dim tempFile() 'This initializes it as a variant array of variants
..
'Somewhere in your code
ReDim tempFile(30)'Makes the whole array 30 variables long
...Okay... how... do I, like.... add values to this?

I'm going to spend the rest of the afternoon skimming this VB book, reading up on arrays....
[edit:] well that wasn't very helpful... So far as I understand, I need
Code: [Select]
Dim array_Critters() as String = IO.File.ReadAllLines("bestiary.txt")
And that should create an array and fill it with the lines in 'bestiary.txt" This book isnt too clear on CSVs with arrays; should I use a CSV, or a multi-dimensional array? Or XML, or SQL, for that matter? (I know even less about SQL - any database stuff - than I do about VB :/ )
And then I should be able to do...
Code: [Select]
Dim enemy as New clsCritter(array_Critters)
Or.... something?

I still don't get how to use a CSV file to bring in the creature stats.

I appreciate the translation, but for the moment, I'm going to stick to VB.
« Last Edit: April 02, 2011, 02:49:17 pm by bowdown2q »
Logged

TolyK

  • Bay Watcher
  • Nowan Ilfideme
    • View Profile
Re: DagronQwest - my first attempt at coding in VB.
« Reply #14 on: April 02, 2011, 02:48:26 pm »

Quote
The issue I have right now is that of classes. What I want to do is write up a CSV file with stats for every creature in the game (although, if it can be done, I'd like to do it such that the CSV holds ranges of stats -eg 2d6 or 2-12 or 7 +/- 5, etc- as to keep every individual in the game unique.
This is fairly easy as long as you have a constant structure for holding the data.
Soo... the classes?
yes go by classes
Quote
And then I'd like to have the program read the CSV file and generate stats for a creature. So far I've got "clsCritters.vb" which is a class file, and holds the following (note that I haven't finished all the properties):
This looks OK, but I suggest breaking it down even farther. Hmm...
How do you mean? Should I be nesting classes or something?
Yes, make it "Stats.vb", "Skills.vb", etc.

Quote
    Private m_displayName As String 'This is for when there are more than one of these in a room. increment the name with (+=1) every time. easily found by a function, no need to save it in memory
Hm. I guess that's true. I'm not sure how to do that, but I suppose it can wait until I'm at that point. I'll comment out this line for the moment.
yeah

Quote
    Private m_Is_Animal As Boolean better to make an Enum(eration) and have "Animal", "Reptire", etc.
This is probably going to end up a tag. It's going to be used to differentiate NPCs from animals. It'll matter for AI and the combat.
ah, ok. then maybe "sapient" or something.


Quote
    Private m_Age As Integer what's this for other than the player? works though
Yeahh... I'm going to move this to the player class instead.
Sounds good

Quote
    Private m_Treasure As Integer is this how much gold you get killing it? goes I guess.
Yeaahh I think i'll drop this and incorporate it into NPC AI. That or the combat code.
Probably "NPC.vb" class would be better  ;)

Quote
Parts of the next sections can probably be calculated through size, type, and such, but:
(...)
    Private m_skl_Atk As Integer can be calculated
    Private m_skl_Def As Integer can be calculated
    Private m_skl_BrthWpn As Integer interesting. works
The meat, etc. stats are going to be predefined in the critter CSV stats. I plan on having stats for each kind of critter on its own.
Okay, have that as "WeapStats.vb" or something

Quote
And the player's stats are "clsPlayer.vb" which is a class that inherits clsCritters.
Along with other stuff, though. Such as current_thoughts, relations, etc. What do you mean? The player and any other NPCs aren't going to have crazy interactions any time soon. [/quote]
I mean player-specific stuff, but I guess that can wait.

Do I need to do anything else where the Player inherits the base class?
I dunno. Some events and such for both the critters and player

Quote
Check MSDN, press F1, etc. These are really helpful in VB.
Structures are different in that they're only groups of variables. Classes/objects also have methods and events. EVENTS ARE VERY IMPORTANT, ESPECIALLY IN GAMES.
Arrays are probably your best bet, just make a variant array (a variant type array of variant size), using something such as:
Code: [Select]
Dim tempFile() 'This initializes it as a variant array of variants
..
'Somewhere in your code
ReDim tempFile(30)'Makes the whole array 30 variables long
...Okay... how... do I, like.... add values to this?
"tempFile(i)=ReadFile("/Raws",j,i) 'That's a function you can make later, just garbage for now

I'm going to spend the rest of the afternoon skimming this VB book, reading up on arrays....
which one?

I still don't get how to use a CSV file to bring in the creature stats.
you can make a text file or a "database object" which might be easier.

I appreciate the translation, but for the moment, I'm going to stick to VB.
[/quote]

Also:
Beginner Developer Center where there are lots of neat how-to videos in VB.

(you can get to it from Here)
Logged
My Mafia Stats
just do whatevery tolyK and blame it as a bastard mod
Shakerag: Who are you personally suspicious of?
At this point?  TolyK.
Pages: [1] 2 3 4