@@ -16,18 +16,11 @@ local CStructView = require("includes.classes.gta.CStructView")
1616--- @field private m_decimal uint32_t
1717--- @field private m_packed vec4
1818--- @overload fun ( n : uint32_t ): IPAddress
19- local IPAddress <const> = {}
20- IPAddress .__index = IPAddress
21- --- @diagnostic disable-next-line
22- setmetatable (IPAddress , {
23- __call = function (t , ...)
24- return t .new (... )
25- end
26- })
19+ local IPAddress <const> = Callable (" IPAddress" , { ctor = function (t , n ) return t :new (n ) end })
2720
2821--- @param n uint32_t
2922--- @return IPAddress
30- function IPAddress . new (n )
23+ function IPAddress : new (n )
3124 local packed = vec4 :zero ()
3225 if (n ~= 0 ) then
3326 packed = vec4 :new (
@@ -41,8 +34,7 @@ function IPAddress.new(n)
4134 return setmetatable ({
4235 m_decimal = n ,
4336 m_packed = packed
44- --- @diagnostic disable-next-line
45- }, IPAddress )
37+ }, self )
4638end
4739
4840--- @return string
6052-- Class: rlGamerInfo
6153---- ----------------------------------
6254--- @class rlGamerInfo : CStructBase <rlGamerInfo >
63- --- @field m_peer_id pointer<uint64_t>
64- --- @field m_rockstar_id pointer<int64_t>
65- --- @field m_external_ip pointer<uint32_t>
66- --- @field m_external_port pointer<uint16_t>
67- --- @field m_internal_ip pointer<uint32_t>
68- --- @field m_internal_port pointer<uint16_t>
69- --- @field m_nat_type pointer<uint32_t>
70- --- @field m_player_name pointer<string> // 0x00DC
55+ --- @field private m_peer_id pointer<uint64_t>
56+ --- @field private m_rockstar_id pointer<int64_t>
57+ --- @field private m_external_ip pointer<uint32_t>
58+ --- @field private m_external_port pointer<uint16_t>
59+ --- @field private m_internal_ip pointer<uint32_t>
60+ --- @field private m_internal_port pointer<uint16_t>
61+ --- @field private m_nat_type pointer<uint32_t>
62+ --- @field private m_player_name pointer<string> // 0x00DC
63+ --- @field private m_cached_extern_ipaddr IPAddress
64+ --- @field private m_cached_intern_ipaddr IPAddress
7165--- @overload fun ( ptr : pointer ): rlGamerInfo
7266local rlGamerInfo = CStructView (" rlGamerInfo" , 0x0F90 )
7367
@@ -88,14 +82,25 @@ function rlGamerInfo.new(ptr)
8882 }, rlGamerInfo )
8983end
9084
85+ --- @return int64_t
86+ function rlGamerInfo :GetRockstarID ()
87+ return self .m_rockstar_id :get_int ()
88+ end
89+
9190--- @return IPAddress
9291function rlGamerInfo :GetExternalIP ()
93- return IPAddress (self .m_external_ip :get_dword ())
92+ if (not self .m_cached_extern_ipaddr ) then
93+ self .m_cached_extern_ipaddr = IPAddress (self .m_external_ip :get_dword ())
94+ end
95+ return self .m_cached_extern_ipaddr
9496end
9597
9698--- @return IPAddress
9799function rlGamerInfo :GetInternalIP ()
98- return IPAddress (self .m_internal_ip :get_dword ())
100+ if (not self .m_cached_intern_ipaddr ) then
101+ self .m_cached_intern_ipaddr = IPAddress (self .m_internal_ip :get_dword ())
102+ end
103+ return self .m_cached_intern_ipaddr
99104end
100105
101106--- @return string
0 commit comments