Adding stats RU
From VbGORE Visual Basic Online RPG Engine
Добавление характеристик
Набор характеристик персонажа очень важен для игры. От количества и качества характеристик зависит балансировка классов и разнообразие возможных прокачек персонажей. Базовая версия vbGORE обладает минимальным набором характеристик, но для хорошей игры их естественно недостаточно.
В этом руководстве описывается процесс изменение и добавления характеристик.
Исправление серверной части
Во-первых, необходимо внести изменение в базу данных. Для этого надо добавить в таблице users следующие поля с помощью SQL Query или MySQL GUI, или изменить таблицу вручную: <sql> stat_int - int(10) - unsigned - Default 0 stat_wis - int(10) - unsigned - Default 0 stat_con - int(10) - unsigned - Default 0 stat_cha - int(10) - unsigned - Default 0 stat_lck - int(10) - unsigned - Default 0 </sql>
Потом необходимо внести исправления в GameServer.vbp, в модуле DataIDs. Найти: <vb>
Str As Byte Agi As Byte 'For NPCs, this is the hit rate Mag As Byte Speed As Byte 'Speed works as + (Speed / 2) on the client since just + Speed would be too drastic (8 would double the normal speed)
</vb> Заменить на: <vb>
Str As Byte Agi As Byte Int As Byte Wis As Byte Con As Byte Cha As Byte Lck As Byte
</vb>
Это позволит обращаться к параметрам в более удобном виде, например BaseStat(SID.Int)
Затем найти: <vb> Public Const NumStats As Byte = 18 </vb>
И изменить на количество используемых характеристик. В нашем случае мы добавили 5, итого - 23: <vb> Public Const NumStats As Byte = 23 </vb>
Далее найти: <vb>
.Speed = 18
</vb>
Заменить: <vb>
.Int = 19
.Wis = 20
.Con = 21
.Cha = 22
.Lck = 23
</vb>
Изменения в модуле FileIO. Найти: <vb>
UserList(UserIndex).Stats.ModStat(SID.MaxSTA) = UserList(UserIndex).Stats.BaseStat(SID.MaxSTA)
UserList(UserIndex).Stats.BaseStat(SID.MinHP) = Val(!stat_hp_min)
UserList(UserIndex).Stats.BaseStat(SID.MinMAN) = Val(!stat_mp_min)
UserList(UserIndex).Stats.BaseStat(SID.MinSTA) = Val(!stat_sp_min)
</vb>
Добавить: <vb>
UserList(UserIndex).Stats.BaseStat(SID.Int) = Val(!stat_int)
UserList(UserIndex).Stats.BaseStat(SID.Wis) = Val(!stat_wis)
UserList(UserIndex).Stats.BaseStat(SID.Con) = Val(!stat_con)
UserList(UserIndex).Stats.BaseStat(SID.Cha) = Val(!stat_cha)
UserList(UserIndex).Stats.BaseStat(SID.Lck) = Val(!stat_lck)
</vb>
Это добавляет загрузку из базы. Затем найти: <vb>
DB_RS!stat_mp_min = .Stats.BaseStat(SID.MinMAN)
DB_RS!stat_mp_max = .Stats.BaseStat(SID.MaxMAN)
DB_RS!stat_sp_min = .Stats.BaseStat(SID.MinSTA)
DB_RS!stat_sp_max = .Stats.BaseStat(SID.MaxSTA)
</vb>
И добавить: <vb>
DB_RS!stat_int = .Stats.BaseStat(SID.Int)
DB_RS!stat_wis = .Stats.BaseStat(SID.Wis)
DB_RS!stat_con = .Stats.BaseStat(SID.Con)
DB_RS!stat_cha = .Stats.BaseStat(SID.Cha)
DB_RS!stat_luk = .Stats.BaseStat(SID.Lck)
</vb>
Теперь сделаем значения по умолчанию. Находим: <vb> 'Set the user's starting stats </vb>
Далее должно быть: <vb>
UserList(UserIndex).Stats.BaseStat(SID.ELU) = 10 UserList(UserIndex).Stats.BaseStat(SID.ELV) = 1 UserList(UserIndex).Stats.BaseStat(SID.Str) = 1 UserList(UserIndex).Stats.BaseStat(SID.Agi) = 1 UserList(UserIndex).Stats.BaseStat(SID.Mag) = 1 UserList(UserIndex).Stats.BaseStat(SID.Speed) = 5 UserList(UserIndex).Stats.BaseStat(SID.Gold) = 100 UserList(UserIndex).Stats.BaseStat(SID.DEF) = 1 UserList(UserIndex).Stats.BaseStat(SID.MinHIT) = 1 UserList(UserIndex).Stats.BaseStat(SID.MaxHIT) = 1 UserList(UserIndex).Stats.BaseStat(SID.MaxHP) = 50 UserList(UserIndex).Stats.BaseStat(SID.MaxMAN) = 50 UserList(UserIndex).Stats.BaseStat(SID.MaxSTA) = 50 UserList(UserIndex).Stats.ModStat(SID.MaxHP) = UserList(UserIndex).Stats.BaseStat(SID.MaxHP) UserList(UserIndex).Stats.ModStat(SID.MaxMAN) = UserList(UserIndex).Stats.BaseStat(SID.MaxMAN) UserList(UserIndex).Stats.ModStat(SID.MaxSTA) = UserList(UserIndex).Stats.BaseStat(SID.MaxSTA) UserList(UserIndex).Stats.BaseStat(SID.MinHP) = 50 UserList(UserIndex).Stats.BaseStat(SID.MinMAN) = 50 UserList(UserIndex).Stats.BaseStat(SID.MinSTA) = 50
</vb>
Добавляем: <vb> UserList(UserIndex).Stats.BaseStat(SID.Int) = 1 UserList(UserIndex).Stats.BaseStat(SID.Wis) = 1 UserList(UserIndex).Stats.BaseStat(SID.Con) = 1 UserList(UserIndex).Stats.BaseStat(SID.Cha) = 1 UserList(UserIndex).Stats.BaseStat(SID.Lck) = 1 </vb>
Это установит начальное значение новых характеристик равным 1 для новых персонажей. Вы можете установить любое необходимое значение, которое хотите.