GetPlayerColor без SF

TieXoP

Известный
Автор темы
138
27
Доброго времени суток.
0.3.7 R-1
Ищу структуру GetPlayerColor.

В sampfuncs прекрасно реализована данная функция. Понять бы как. К сожалению, использования sf - не мой вариант.

В общем, обращаюсь за медвежьей услугой по реализации функции
Заранее спасибо!
 
Последнее редактирование:

вайега52

Налуашил состояние
Модератор
3,004
3,139
Доброго времени суток.
0.3.7 R-1
Ищу структуру GetPlayerColor.

В sampfuncs прекрасно реализована данная функция. Понять бы как. К сожалению, использования sf - не мой вариант.

В общем, обращаюсь за медвежьей услугой по реализации функции
Заранее спасибо!
 

TieXoP

Известный
Автор темы
138
27
Кажется не совсем то

Вот что смог найти:

.text:100129F0 ; public: unsigned long __thiscall CRemotePlayer::GetColorAsRGBA(void)
.text:100129F0 ?GetColorAsRGBA@CRemotePlayer@@QAEKXZ proc near
.text:100129F0 movzx eax, word ptr [ecx+0ABh]
.text:100129F7 push eax
.text:100129F8 call sub_100AD570
.text:100129FD retn
.text:100129FD ?GetColorAsRGBA@CRemotePlayer@@QAEKXZ endp
.text:100129FD
.text:100129FD ; ---------------------------------------------------------------------------
.text:100129FE db 2 dup(0CCh)
.text:10012A00
.text:10012A00 ; =============== S U B R O U T I N E =======================================
.text:10012A00
.text:10012A00
.text:10012A00 ; public: unsigned long __thiscall CRemotePlayer::GetColorAsARGB(void)
.text:10012A00 ?GetColorAsARGB@CRemotePlayer@@QAEKXZ proc near
.text:10012A00 ; CODE XREF: CScoreboard::UpdateList(void)+13F↓p
.text:10012A00 ; sub_10070D40+240↓p ...
.text:10012A00 movzx eax, word ptr [ecx+0ABh]
.text:10012A07 push eax
.text:10012A08 call sub_100AD570
.text:10012A0D shr eax, 8
.text:10012A10 or eax, 0FF000000h
.text:10012A15 retn
.text:10012A15 ?GetColorAsARGB@CRemotePlayer@@QAEKXZ endp
.text:10012A15

Как понял, идет обращение сюда:
.text:100AD550 ; =============== S U B R O U T I N E =======================================
.text:100AD550
.text:100AD550
.text:100AD550 sub_100AD550 proc near ; CODE XREF: CLocalPlayer::SetColor(ulong)+19↑p
.text:100AD550 ; CRemotePlayer::SetColor(ulong)+D↑p ...
.text:100AD550
.text:100AD550 arg_0 = dword ptr 4
.text:100AD550 arg_4 = dword ptr 8
.text:100AD550
.text:100AD550 mov eax, [esp+arg_0]
.text:100AD554 cmp eax, 0FA0h
.text:100AD559 jnb short locret_100AD566
.text:100AD55B mov ecx, [esp+arg_4]
.text:100AD55F mov dword_10216378[eax*4], ecx
.text:100AD566
.text:100AD566 locret_100AD566: ; CODE XREF: sub_100AD550+9↑j
.text:100AD566 retn 8
.text:100AD566 sub_100AD550 endp
.text:100AD566
.text:100AD566 ; ---------------------------------------------------------------------------
.text:100AD569 db 7 dup(0CCh)
.text:100AD570
.text:100AD570 ; =============== S U B R O U T I N E =======================================
.text:100AD570
.text:100AD570
.text:100AD570 sub_100AD570 proc near ; CODE XREF: CLocalPlayer::GetColorAsRGBA(void)+13↑p
.text:100AD570 ; CLocalPlayer::GetColorAsARGB(void)+13↑p ...
.text:100AD570
.text:100AD570 arg_0 = dword ptr 4
.text:100AD570
.text:100AD570 mov eax, [esp+arg_0]
.text:100AD574 cmp eax, 3ECh
.text:100AD579 jnz short loc_100AD583
.text:100AD57B mov eax, 89A4C440h
.text:100AD580 retn 4
.text:100AD583 ; ---------------------------------------------------------------------------
.text:100AD583
.text:100AD583 loc_100AD583: ; CODE XREF: sub_100AD570+9↑j
.text:100AD583 cmp eax, 3EDh
.text:100AD588 jnz short loc_100AD592
.text:100AD58A mov eax, 0AA0000FFh
.text:100AD58F retn 4
.text:100AD592 ; ---------------------------------------------------------------------------
.text:100AD592
.text:100AD592 loc_100AD592: ; CODE XREF: sub_100AD570+18↑j
.text:100AD592 cmp eax, 3EEh
.text:100AD597 jnz short loc_100AD5A1
.text:100AD599 mov eax, 0E2C063FFh
.text:100AD59E retn 4
.text:100AD5A1 ; ---------------------------------------------------------------------------
.text:100AD5A1
.text:100AD5A1 loc_100AD5A1: ; CODE XREF: sub_100AD570+27↑j
.text:100AD5A1 cmp eax, 0FA0h
.text:100AD5A6 jnb short locret_100AD5AF
.text:100AD5A8 mov eax, dword_10216378[eax*4]
.text:100AD5AF
.text:100AD5AF locret_100AD5AF: ; CODE XREF: sub_100AD570+36↑j
.text:100AD5AF retn 4
.text:100AD5AF sub_100AD570 endp
.text:100AD5AF
.text:100AD5AF ; ---------------------------------------------------------------------------
.text:100AD5B2 db 0Eh dup(0CCh)

И адреса есть и смещения. Но до корректной реализации структуры и функционала получения цвета - мозгов походу не хватает...
 

вайега52

Налуашил состояние
Модератор
3,004
3,139
Кажется не совсем то

Вот что смог найти:



Как понял, идет обращение сюда:


И адреса есть и смещения. Но до корректной реализации структуры и функционала получения цвета - мозгов походу не хватает...
на F5 в IDA можно включить псевдо-си код вместо асм)
 

TieXoP

Известный
Автор темы
138
27
Из серии "в глаза долбился". Спасибо!


Целый день мучаюсь с вопросом как это:

if wasKeyPressed(0x32) then
local color = sampGetPlayerColor(playerID)
sampAddChatMessage(color, -1)
end

реализовать на плюсах.

Пробовал вышеупомянутой функцией. Из scoreboard пытался вытащить. Все тщетно
С диалогами так не совокуплялся, как с этой шляпой
 
Последнее редактирование: