Developer handbook - VanaDev/Vana GitHub Wiki
The lookup GM command will become a very good friend for getting to identifiers for monsters, items, skills, quests, or maps. It allows you to search for a particular string and it returns all matches along with their identifiers.
Some examples:
!lookup map behind Search for 'behind' 240040511 : Leafre - The Dragon Nest Left Behind
!lookup item cab Search for 'cab' 1002228 : Cabbie 1002472 : Cabbage Patch Hat 1072356 : Timeless Cabatina 1072362 : Reverse Cabatina 4032024 : Jumper Cable
!lookup mob spider Search for 'spider' 9400545 : Wolf Spider
The lookup GM command can also search for scripts by name or ID. This is useful if you're starting from having a particular ID or script that you want to program.
Some examples:
!lookup scriptbyname master Search for 'master' 1012005 (npc) : petmaster 1104000 (npc) : DollMaster 9201104 (npc) : Masteria_Sage01 9201105 (npc) : Masteria_Sage02
!lookup scriptbyid 9900000 Search for '9900000' 9900000 (npc) : levelUP
The listportals GM command, listnpcs GM command, listreactors GM command, listportals GM command, and the listmobs GM command can all be useful in certain circumstances. If you're starting from a particular map, you can use these to find any information you might want about what is on the map.
Some examples:
!listportals 3rd Portals for Map 211000001 2 : out00 (destination 211000000 -> in01)
!listportals 240010500 Portals for Map 240010500 1 : east00 (destination 240010600 -> west00) 2 : west00 (destination 240010400 -> east00) 3 : in00 (script 'minar_job4')
!listreactors orbis Reactors for Map 200000000 2002000 (script 'oBoxItem0') 2002000 (script 'oBoxItem0') 2002000 (script 'oBoxItem0') 2002000 (script 'oBoxItem0') 2002000 (script 'oBoxItem0')
!listnpcs grendel NPCs for Map 101000003 1032001 : Grendel the Really Old (script 'magician')
// On map 30000 !listmobs Mob 1000 (ID: 9300018, HP: 8/8 [100%]) Mob 1001 (ID: 9300018, HP: 8/8 [100%]) Mob 1002 (ID: 9300018, HP: 8/8 [100%])
You can also start out from having information about a specific NPC/monster/portal/reactor and then figure out which maps they are on. The lookup GM command can do this through the whatmaps option. Examples:
!lookup whatmaps npc 1032001 Search for '1032001' 101000003 : Victoria Road - Magic Library
!lookup whatmaps mob 7130101 Search for '7130101' 105090700 : Dungeon - Sanctuary Entrance III 105090800 : Dungeon - Sanctuary Entrance IV
!lookup whatmaps portal Zakum05 Search for 'Zakum05' 211042300 : El Nath - The Door to Zakum
The lookup GM command can also go in reverse, finding you the entity behind an identifier.
Examples:
!lookup id 3000 Search for '3000' 3000 (quest) : Alpha Platoon's Network of Communication - Missing Staff Sergeant Charlie
!lookup id 1100000 Search for '1100000' 1100000 (npc) : Kirium 1100000 (skill) : Sword Mastery
The programmer is responsible for schema changes and migration queries. Files should be placed in the /sql/ directory and given a higher number than all the other .sql files. The LoginServer will execute the queries when it runs next. For testing purposes, you may want to copy your database and try out the queries to ensure no syntax errors/etc. beforehand.