In response to Morialis
Yeah... *takes it to Code Problems* XD
In response to Morialis
and till the new thread is started, lets start with this one

var/list/ExitList = list("East")as null|anything in ExitList


I dont think you want to be setting the exit list based off of the exit list, its kind of bad, ill see what ur trying to do
In response to Axel Wildfire
You're getting errors because your indentation is all screwy and you are missing parenthesis on all your functions. What you have there should look like this:

area
var //declare new area variables
north
south
east
west
Courtyard
desc = "Hushed noises from the lounge drift out into this pleasant-smelling courtyard."
east = "Lounge"
var/list/ExitList = list ("east")

mob
verb
move()
Move()

proc
Move()
var/area/A = usr.loc
var/list/ExitList
var/Decision = input("Which direction?")as null|anything in ExitList
if(Decision == east) client.Move(locate(A.east))
else if(Decision == west) client.Move(locate(A.west))
else if(Decision == north) client.Move(locate(A.north))
else if(Decision == south) client.Move(locate(A.south))


Though that's only fixing the syntax issues, not the design issues. Why have a Move() proc and a move() verb that does nothing but call that proc? Why would it be global? There are major usr abuse issues, and you'll be getting an undefined variable error because of it. And a number of other problems.

Here's a simple starter for how you'd set this up properly-ish:

area
var/list/exits
verb
go(var/destination in exits)
set src = usr.loc
//get the associated area
var/dest = exits[destination]
var/area/A = locate(dest)
//move there, routing through client.Move() because it's voluntary movement
usr.Move(A)

proc
look(var/mob/looker)
//tell us about the room
looker << desc

//tell us about what the room contains
var/foundsomething = 0
for(var/atom/movable/A in src)
if(A != looker)
//using the foundsomething variable because you may have more complex logic for announcing things
//(IE: objects only visible in some cases)
if(!foundsomething)
looker << "You see:"
foundsomething = 1
looker << "\t[A]"
looker << "Exits:"
for(var/v in exits)
looker << "\t[v]"

Entered(var/atom/movable/A)
if(ismob(A))
A << "You enter [src]"
src.look(A)

mob
verb
look()
var/area/A = loc
if(istype(A))
A.look(src)

Login()
Move(locate(/area/entrance))

area
entrance
desc = "This is where you start"
exits = list("south" = /area/south, "north" = /area/north)
south
desc = "This is south of where you start"
exits = list("south" = /area/north, "north" = /area/entrance)
north
desc = "This is south of where you start"
exits = list("south" = /area/entrance, "north" = /area/south)


You do not need to create actual instances of the areas yourself, they will be automatically created the first time you try to locate() one.

Oh, while I was writing this Morialis spewed out a bunch of absolutely horrific, completely incorrect advice. Please ignore him.
In response to Garthor
Okay, so this is the whole code with those adjustments (I think)...

world
New() //overrides the world's New() proc
for (var/Atype in typesof(/area)) //loops through area prototypes
var/area/A = new Atype //creates a new instance of each prototype
A.tag = A.name //makes it's tag the same as it's name

..() //calls the parent


area
var/list/exits
verb //errors: missing comma ',' or right-paren ')'; expected end of statement.
go(var/destination in exits)
set src = usr.loc
//get the associated area
var/dest = exits[destination]
var/area/A = locate(dest)
//move there, routing through client.Move because it's a voluntary movement
usr.Move(A)

proc
look(var/mob/looker)
//tell us about the room
looker << desc

//tell us about what the room contains
var/foundsomething = 0
for(var/atom/movable/A in src)
if(A != looker)
if(!foundsomething)
looker << "You see:"
foundsomething = 1
looker << "\t[A]"
looker << "Exits:"
for(var/v in exits)
looker << "\t[v]"

Entered(var/atom/movable/A)
if(ismob(A))
A << "You enter [src]."
oview() << "[A] has entered the room."
src.look(A)

Courtyard
desc = "Hushed noises from the lounge drift out into this pleasant-smelling courtyard."
exits = list("East" = /area/Lounge)

Kitchen
desc = "A refrigerator is here, stocked with snacks and drinks for people who help newbies with their code."
exits = list("South" = /area/Lounge)

Lounge //create a new area prototype
desc = "It is very comfy here. The walls are edged in bean bag chairs."
exits = list("North" = /area/Kitchen, "West" = /area/Courtyard)


mob
Login()
Move(locate(/area/Lounge)

verb
say(msg as text) //what the usr says is passed into 'msg' as text
Msg23("You say, '[msg]'", "[usr] says, '[msg]'") //gives our task to Msg23

emote(msg as text) //what the user emotes is passed into 'msg' as text
world << "[usr] [msg]" //everyone sees this

wave(var/mob/M as mob in oview()) //waves to a mob in oview()
Msg223("You wave to [M].",target = M,"[usr] waves to you.","[usr] waves to [M].")

drop(var/obj/O in usr.contents) //drops an item at your position
Msg23("You drop [O].","[usr] drops [O].")
O.loc = usr.loc

get(var/obj/O as obj in oview()) //picks up an item at your position
Msg23("You get [O].","[usr] gets [O].")
O.loc = usr.contents

inventory() //checks your inventory
usr << "You are carrying:"
for (var/obj/O in usr.contents) usr << O

look()
var/area/A = loc
if(istype(A))
A.look(src)





proc
Msg23(second,third) //declares a new proc that takes two arguments.
usr << second //outputs the first to the usr
oview() << third //outputs the second to oview()
Msg223(second1,target,second2,third)
usr << second1 //outputs the first text string to the usr
target << second2 //outputs second text string to verb target
for (var/mob/M in oview()) //outputs third to mobs in view who are neither
if (M != target) M << third

/*client
North() //overrides the client's North() proc
var/area/A = usr.loc //creates a variable to hold the user's loc position
if (A.North) usr.Move(locate(A.North)) //moves player North if possible
else usr << "You can't go there." //otherwise not
South()
var/area/A = usr.loc
if (A.South) usr.Move(locate(A.South))
else usr << "You can't go there."
East()
var/area/A = usr.loc
if (A.East) usr.Move(locate(A.East))
else usr << "You can't go there."
West()
var/area/A = usr.loc
if (A.West) usr.Move(locate(A.West))
else usr << "You can't go there."*/


Now I know I've goofed somewhere, but I'm not experienced enough to see where. >w>;

- Oh yeah, I made a small adjustment to Entered to try and get it to give messages to everyone in the room, but I don't think I did it right.
In response to Axel Wildfire
You forgot a closing parenthesis in your Login() proc.

And to announce to the room, you would either use a for loop, like for(var/mob/M in src), or you could use oviewers(A).
In response to Garthor
Great, thanks. It's always the little things. >w>;

That causes this, though...

area
proc
look(var/mob/looker)
//tell us about the room
looker << desc

//tell us about what the room contains
var/foundsomething = 0
for(var/atom/movable/A in src)
if(A != looker)
if(!foundsomething) //warning: if statement has no effect.


EDIT: nevermind, it was an indentation error, which is now fixed.
Page: 1 2 3