ID:141424
 
Code:


mob
icon = 'person.dmi'

mob
icon = 'person.dmi'

var
hp = 500
rei 500
str =100
def =100
rpw = 100

turf
grass
icon = 'person.dmi'
icon_state = "grass"

turf
water
icon = 'person.dmi'
icon_state = "water"
density = 1

world
name = "My First Game."
turf = /turf/grass

mob
Login()

mob
Login()
usr.icon_state = input("What gender?") in list ("male","female")
usr.Move(locate(20,15,1)

Problem description:

missing comma or right-paren
list started here
For starters, don't use "usr" in procs. Replace those "usr"s in your mob/Login() proc with "src".

Secondly, why do you have two mob/Login() ? Unnecessary >_>

Thirdly, I don't know why you're getting that error when that input() proc is perfectly fine. Try going into the .dm file just before that one (if there is one) and looking for anything like input() and whatnot that might be missing parentheses.
mob
icon = 'person.dmi'

mob
icon = 'person.dmi' // What's the use in setting this twice?

var
hp = 500
rei 500 //Did you miss an equal sign here?
str =100 //Why are these indented more than the others?
def =100
rpw = 100

turf
grass
icon = 'person.dmi'
icon_state = "grass"

turf
water
icon = 'person.dmi' // You could make use of inheritance here.
icon_state = "water"
density = 1

world
name = "My First Game."
turf = /turf/grass

mob
Login() //This might cause issues, as you're not calling the parent.

mob
Login() //This might cause issues, as you're not calling the parent and overriding the procedure twice.
usr.icon_state = input("What gender?") in list ("male","female")
// You might want to set the atoms gender instead and then trigger setting the icon_state accordingly.
usr.Move(locate(20,15,1) //You missed a right parenthesis here. For each one you open, you ought to close it.
Note it's safer to use src in Login() than usr. Well, this truth is quite universally similar whenever you can use both vars to refer to the same object, but will tend to be especially important in [non-mouse] procs.
In addition to fixing what Schnitzel pointed out, you should also take care when using Move() like this, as it can fail (by default, due to density matters), which you don't want to happen in this situation as your player will be left location-less. This isn't the best method available, but simply making sure loc has been changed to a good value and forcing it to if it hasn't, will work.
var/T = locate(20,15,1)
if(!T)
//make sure our destination is actually valid. this is just an extra fail-safe and not strictly needed, for example if you make a typo and write z-coord 5 instead of 1 and it doesn't exist, it won't break the game
T = locate(1,1,1) //revert to the default loc
if(!T) //if there is still no turf at these coords, you've got a problem
world.log << "Hah, forgot to include map?..."
src.Move(T)
if(!src.loc) //if we still don't have a valid location
src.loc = T //forcibly set it
//an alternative to the last if() could be using \
Move()'s return value, but this of course relies on it not\
having been broken by an override and is slightly different

if(!src.Move(T)) src.loc = T