|
You last visited: Today at 18:03
Advertisement
Regarding 0xB070
Discussion on Regarding 0xB070 within the SRO PServer Questions & Answers forum part of the SRO Private Server category.
02/15/2022, 18:37
|
#1
|
elite*gold: 0
Join Date: Dec 2021
Posts: 85
Received Thanks: 74
|
Regarding 0xB070
Hello community
i have spent some time parsing 0xB070 to get anything related to ignore hits but unluckily i am failed, could someone help me, the main goal is to check if the hit is ignore or no, thanks.
|
|
|
02/21/2022, 10:19
|
#2
|
elite*gold: 0
Join Date: Jan 2009
Posts: 314
Received Thanks: 685
|
Damage value consists of a 32 bit struct. 24 bits are used to represent the damage amount and 8 bits are used to represent a damage flag which tells the game client if the damage was anything special to display something like critical. Keep in mind that this damage value can be found in multiple messages like 0xB071 and 0xB0BC.
Code:
(MSB) (LSB)
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 |
| DamageFlag | DamageAmount |
Code:
[Flags]
public enum DamageFlag : byte
{
Normal = 1,
Critical = 2,
Hwan = 4,
//No sample for 8 yet,
Effect = 16,
ArmorIgnored = 32,
}
|
|
|
02/21/2022, 22:31
|
#3
|
elite*gold: 0
Join Date: Dec 2015
Posts: 119
Received Thanks: 16
|
Quote:
Originally Posted by DaxterSoul
Damage value consists of a 32 bit struct. 24 bits are used to represent the damage amount and 8 bits are used to represent a damage flag which tells the game client if the damage was anything special to display something like critical. Keep in mind that this damage value can be found in multiple messages like 0xB071 and 0xB0BC.
(MSB) (LSB)
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 |
| DamageFlag | DamageAmount |
[/code]
[code]
[Flags]
public enum DamageFlag : byte
{
Normal = 1,
Critical = 2,
Hwan = 4,
//No sample for 8 yet,
Effect = 16,
ArmorIgnored = 32,
}
|
maybe 8 for blocked? like from shield?
|
|
|
02/21/2022, 23:34
|
#4
|
elite*gold: 0
Join Date: Jan 2009
Posts: 314
Received Thanks: 685
|
Quote:
Originally Posted by Hynix_1337
maybe 8 for blocked? like from shield?
|
Blocked is a flag in a different value used for knockback and death signaling where no damage is transmitted.
|
|
|
02/22/2022, 19:43
|
#5
|
elite*gold: 0
Join Date: Dec 2021
Posts: 85
Received Thanks: 74
|
Quote:
Originally Posted by DaxterSoul
Damage value consists of a 32 bit struct. 24 bits are used to represent the damage amount and 8 bits are used to represent a damage flag which tells the game client if the damage was anything special to display something like critical. Keep in mind that this damage value can be found in multiple messages like 0xB071 and 0xB0BC.
Code:
(MSB) (LSB)
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 |
| DamageFlag | DamageAmount |
Code:
[Flags]
public enum DamageFlag : byte
{
Normal = 1,
Critical = 2,
Hwan = 4,
//No sample for 8 yet,
Effect = 16,
ArmorIgnored = 32,
}
|
Hey, i appreciate your efforts, thank you , you helped me and i did it but theres's a note, the correct byte for armorignored was 33 not 32, i am wondering if this is something related to the filter?
|
|
|
02/23/2022, 02:45
|
#6
|
elite*gold: 0
Join Date: Jan 2009
Posts: 314
Received Thanks: 685
|
Quote:
Originally Posted by painmaker_
Hey, i appreciate your efforts, thank you , you helped me and i did it but theres's a note, the correct byte for armorignored was 33 not 32, i am wondering if this is something related to the filter?
|
The enum is marked with the [Flags] attribute which means it'll be handled as a bit field.
Multiple bits can be active at once. You've see this as 33 because Normal (1) and ArmorIgnored (32) are active together. If the attack would create a status effect (16) too it gonna be a 49. So checking
Code:
if (damageFlag == 33)
doesn't work correctly in all cases.
Instead you should check
Code:
if ((damageFlag & 32) != 0)
to know if the armor ignored bit was set.
|
|
|
02/23/2022, 10:42
|
#7
|
elite*gold: 0
Join Date: Dec 2021
Posts: 85
Received Thanks: 74
|
Quote:
Originally Posted by DaxterSoul
The enum is marked with the [Flags] attribute which means it'll be handled as a bit field.
Multiple bit can be active at once. You've see this as 33 because Normal (1) and ArmorIgnored (32) are active together that's 33. If the attack would create status effects you might also have a 16 in there becoming a 49 total. So checking
Code:
if (damageFlag == 32)
doesn't work correctly in all cases.
Instead you should check
Code:
if ((damageFlag & 32) != 0)
to know if the armor ignored bit was set.
|
Thank you bro, solved <3
|
|
|
Similar Threads
|
Fully Parsed Packets[3015~0xb070]Paid for 300$ now for free
12/13/2018 - SRO Coding Corner - 9 Replies
Hello, today i'll released Fully Parsed Packets paid them for 300$ , parsed by:Isoline*
https://prnt.sc/lo8hcc
https://prnt.sc/lo8hkp
|
Packet 0xB070 from S -> C
09/30/2015 - SRO Coding Corner - 2 Replies
Some1 know the complete packet structure?
Just found the "start" ..
Opcode: 0xB070
Data: 01 02 30 20 D4 00 00 BE 35 8B 03 5D BB 03 00 1E 1E 88 03 01 01 03 1E 1E 88 03 04 02 9D 74 01 00 00 00 00 58 58 89 00 00 00 04 00 00 00 21 06 00 00 DF 29 87 03 04 01 2C 7A 00 00 00 00 00 58 58 6A 00 00 00 05 00 00 00 48 06 00 00 7F 5D 89 0300 01 1E 51 00 00 00 00 00
Analyze:
01 // skill success
02 // skill success
|
All times are GMT +1. The time now is 18:05.
|
|