summaryrefslogtreecommitdiff
path: root/tools/find-client-packets.bash
blob: 34882c83fd653ea9d5b5f2f764e1c938fac2695b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash
# Crawl soulworker for packet ids

base=0x401200
grep -obUaP '(send_)?(eSUB_)?CMD_.*?\x00' "$@" | while IFS=':' read -r off name; do
   name="${name/*CMD/PACKET}"
   name="$(awk '{print $1}' <<<"$name")"
   off=$(rax2 -e "$off+$base")
   off=${off//0x/}
   while [[ "${#off}" -lt 8 ]]; do off="0$off"; done
   rafind2 -nx "68$off" "$@" | while read -r off; do
      off=$(rax2 "$off")
      head -c $off "$@" | LC_ALL=C tac -rs $'.' | grep -obUaP -m'.\x6a.\x6a' | while IFS=':' read -r off2 nul; do
         lo=$(xxd -s $((off-off2-3)) -l 1 -g 1 -ps "$@")
         hi=$(xxd -s $((off-off2-1)) -l 1 -g 1 -ps "$@")
         if [[ "$lo$hi" == '0001' ]] || [[ "$lo$hi" == '0000' ]]; then
             break
         fi
         [[ "$name" == "PACKET_SHOP_CASH_GIFT" ]] && lo=25
         [[ "$name" == "PACKET_ITEM_RESTORE" ]] && lo=22
         [[ "$name" == "PACKET_ITEM_UNSEAL" ]] && lo=24
         [[ "$name" == "PACKET_ITEM_USE_EFFECT" ]] && lo=26
         [[ "$name" == "PACKET_ITEM_APPEARANCE_EQUIP" ]] && lo=52
         [[ "$name" == "PACKET_LEAGUE_DELEGATE" ]] && lo=0a
         [[ "$name" == "PACKET_HELPER_SUPPORT_INFO" ]] && lo=05
         printf "%s = 0x%s%s,\n" "$name" "$lo" "$hi"
         break
      done
      break
   done
done