Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Room Class
- class Room
- include DataMapper::Resource
- property :oid, Integer, :key => true
- property :name, String, :default => 'Unnamed'
- property :display_name, String, :default => 'Unnamed'
- property :desc, Text, :default => 'A nondescript room.'
- property :exits, Object # Hash of exit.name => exit.oid
- property :commands, Object # Hash of cmd.name => cmd.obj
- property :occupants, Object # Array of player oid
- property :contents, Object # Array of item oid
- property :owner, Integer # oid of owner
- property :created_at, DateTime
- property :updated_at, DateTime
- def enter(player)
- room = self
- player.parent_obj = room.oid
- room.occupants << player.oid
- player.save
- room.save
- player.io.puts("You have entered #{room.name}.")
- end
- def leave(player)
- room = self
- room.occupants.delete(player.oid)
- player.parent_obj = nil
- player.io.puts("You have left #{room.name}.")
- end
- end
- # Player Class
- class Player
- include DataMapper::Resource
- property :oid, Integer, :key => true
- property :name, String, :default => "Unnamed"
- property :display_name, String, :default => "Unnamed"
- property :desc, Text, :default => "A nondescript person."
- property :type, String, :default => 'player'
- property :owner, Integer
- property :pwhash, String, :length => 32
- property :access, String
- property :ip, String
- property :connected, Boolean
- property :last_connect, DateTime
- property :ship, Integer
- property :credits, Integer
- property :race, String, :default => "human"
- property :class, String
- property :sex, String
- property :health, Integer
- property :str, Integer, :default => 10
- property :dex, Integer, :default => 10
- property :int, Integer, :default => 10
- property :wis, Integer, :default => 10
- property :con, Integer, :default => 10
- property :cha, Integer, :default => 10
- property :created_at, DateTime
- property :updated_at, DateTime
- property :in_combat_with, Object # Array of enemy.oid
- property :parent_obj, Integer # typically the room.oid the player is in
- property :inventory, Object # Array of item.oid
- property :prefs, Object # Hash of pref_key => pref_value
- end
- # create first room in the database
- room = Room.new(:oid => 0,
- :name => "Room Zero",
- :display_name => "Room Zero",
- :desc => "The initial room object",
- :owner => 1)
- room.save
- # create the first player in the database
- player = Player.new(:oid => 1,
- :name => "NewPlayerTest",
- :pwhash => "acbd18db4cc2f85cedef654fccc4a4d8",
- :access => 'admin')
- player.save
- steve@dungeon:~/MyRubyMud$ ruby mud.rb
- /usr/lib/ruby/gems/1.8/gems/extlib-0.9.13/lib/extlib/hook.rb:248:in `execute_before_create_hook_nan_hook_stack': undefined method `<=' for nil:NilClass (NoMethodError)
- from /usr/lib/ruby/gems/1.8/gems/extlib-0.9.13/lib/extlib/hook.rb:298:in `create_hook'
- from /usr/lib/ruby/gems/1.8/gems/extlib-0.9.13/lib/extlib/hook.rb:297:in `catch'
- from /usr/lib/ruby/gems/1.8/gems/extlib-0.9.13/lib/extlib/hook.rb:297:in `create_hook'
- from /usr/lib/ruby/gems/1.8/gems/dm-core-0.10.0/lib/dm-core/resource.rb:567:in `save_self'
- from /usr/lib/ruby/gems/1.8/gems/dm-core-0.10.0/lib/dm-core/resource.rb:333:in `save'
- from mud.rb:46
- steve@dungeon:~/MyRubyMud$ rm world.db db.log
- steve@dungeon:~/MyRubyMud$ ruby1.9.1 mud.rb
- /opt/ruby1.9.1/lib/ruby1.9.1/gems/1.9.1/gems/extlib-0.9.13/lib/extlib/hook.rb:248:in `execute_before_create_hook_nan_hook_stack': undefined method `<=' for nil:NilClass (NoMethodError)
- from /opt/ruby1.9.1/lib/ruby1.9.1/gems/1.9.1/gems/extlib-0.9.13/lib/extlib/hook.rb:298:in `block in create_hook'
- from /opt/ruby1.9.1/lib/ruby1.9.1/gems/1.9.1/gems/extlib-0.9.13/lib/extlib/hook.rb:297:in `catch'
- from /opt/ruby1.9.1/lib/ruby1.9.1/gems/1.9.1/gems/extlib-0.9.13/lib/extlib/hook.rb:297:in `create_hook'
- from /opt/ruby1.9.1/lib/ruby1.9.1/gems/1.9.1/gems/dm-core-0.10.0/lib/dm-core/resource.rb:567:in `save_self'
- from /opt/ruby1.9.1/lib/ruby1.9.1/gems/1.9.1/gems/dm-core-0.10.0/lib/dm-core/resource.rb:333:in `save'
- from mud.rb:46:in `<main>'
Add Comment
Please, Sign In to add comment