For your piano problem, it's really quite simple. Though it depends on what you want. For example
void OnStart()
{
AddEntityCollideCallback("Player", "RoomArea", "PlayPianoSound", false, 1);
}
void PlayPianoSound(string &in asParent, string &in asChild, int alState)
{
PlaySoundAtEntity("", "[sound you want to play + .ogg extension]", "[Name of Piano entity]", 0, false);
}
will make the sound at the piano every time you enter the room.
If you want it to happen just once, change
AddEntityCollideCallback("Player", "RoomArea", "PlayPianoSound",
false, 1);
to
AddEntityCollideCallback("Player", "RoomArea", "PlayPianoSound",
true, 1);
For your extra_lang file, you will want something along the lines of
<LANGUAGE>
<CATEGORY Name="Description"> Description of your custom story!</CATEGORY>
<CATEGORY Name="Inventory">
<Entry Name="ItemName_[Item Name]">The name of your item</Entry>
<Entry Name="ItemDesc_[Item Name]">The description of your item</Entry>
</CATEGORY>
</LANGUAGE>
And be sure that the [Item Name] isn't the in-editor name (I.e, the name under the General Tab) but rather the name in the CustomSubItemTypeName field under the entity tab of the item.