ID:712310
 
(See the best response by DarkCampainger.)
Code:
client
New(){..();mob._Login()}

mob/proc/_Login(){src.Give()}
mob/proc/Give()
if(!global.Game)src.client.eye = src


Problem description:

runtime error: Cannot modify null.eye.

I have no clue whats going on, Everything works , but when it goes to reset the clients eye , It says its a null client.
Have you tried doing usr.client.eye? For some strange reason I've seen a few problems rise with this in the past. At least when it comes to login related stuff.

This is a bit of a long shot, and usr may not be ideal here, but it's the first thing I could think of because of another issue or two I saw long ago.
It didn't work. :/

I've tried everything I know.
Ah, this ones unfortunately beyond my ability to help then, sorry. I'm pretty sure the actual problem causing the runtime is that you're trying to use src or client when a valid src or client hasn't been set yet, but I don't see what would be causing that.

This is just a guess based off other similar runtimes I've come across, though.
This is really important e.x , I swear I'm missing something really small.
That's odd; try:
client
New() {. = ..(); spawn() mob._Login()}

mob/proc/_Login(){src.Give()}
mob/proc/Give()
if(!global.Game)src.client.eye = src
Spawning? , I swear if this works.... e_e

No , that didn't seem to work either.
try
client.eye=usr
client.perspective = EYE_PERSPECTIVE

so in other words it should be:
mob/proc/Give()
if(!global.Game)client.eye=usr ;client.perspective=EYE_PERSPECTIVE
Removing src and usr from in front of client? Oh I swear if that is it I will want to throw something. Granted, I didn't consider perspective, but I did almost mention the first part. That just seemed... Odd. Wrong, in a way.

Worth a shot never the less. Good idea, motto.
Not your not understanding the problem , the client isn't being found o.o
mob/proc/Give()
if(src.client)world<<"Works!"
else world<<"Fails!"


It fails.
Best response
Testing your code in an empty project, it all seems to work correctly. Are you sure some other code isn't interfering with it?

The only potential problem I can see is that you aren't returning the return value of the default action (but it seems to work without it, for me at least):
client
New()
.=..() // Return the default action's return value
mob._Login()

client/New() Reference Entry:
Returns: The newly connected mob, client.mob, or null to disallow the connection.
Ah , It does work. What do you think could be affecting it? Its the very thing to start when a player joins.
I would say place some debug output (world.log << "[src.mob.client or src.client]", which can then be viewed by pressing F1) to see where it's getting lost. It should be set as soon as the default client/New() action is finished.

I would also look for any other definitions of client/New() or mob/Login(), and inspect any character loading code.
Thank you.