if ( player.IP != GetPlayerIP( player ) ) SetPlayerLogged( player, "false" );
if ( player.IP == GetPlayerIP( player ) ) SetPlayerLogged( player, "true" );
bad bad bad, that does 2 queries for one something thing, you can just do
if ( player.IP == GetPlayerIP( player ) ) SetPlayerLogged( player, "true" );
else SetPlayerLogged( player, "true" );
And did you even test your changepass command, it seems that you forgot a return 0; in the PIn function.