SHOW:
|
|
- or go back to the newest paste.
1 | int m_Pickup[3] = { 0, 0, 0 }; | |
2 | //Cтруктура с флагами, так легче юзать | |
3 | struct AcorFlags | |
4 | { | |
5 | union | |
6 | { | |
7 | __int64 Aflags; | |
8 | struct | |
9 | { | |
10 | bool m_Pickup : 1; | |
11 | }; | |
12 | }; | |
13 | } a_flags; | |
14 | //Функция для определения объекта, кто он собственно есть | |
15 | bool WhatIsActor(APawn* obj) | |
16 | { | |
17 | if (!obj)return 0; | |
18 | memset(&a_flags, 0, sizeof(AcorFlags)); | |
19 | ||
20 | //В условии сравнивается айди и проверяется наличие айди, мало ли не найдет и там будет 0, в итоге будет пытаться вывести 0. | |
21 | //Хотя у меня с гранатами какая то трабла была, тупо игра зависала, так что я хз, может в этом причина. | |
22 | if (obj->ID == m_Pickup[0] && m_Pickup[0]) { a_flags.m_Pickup = 1; return 1; } | |
23 | else if (obj->ID == m_Pickup[1] && m_Pickup[1]) { a_flags.m_Pickup = 1; return 1; } | |
24 | else if (obj->ID == m_Pickup[2] && m_Pickup[2]) { a_flags.m_Pickup = 1; return 1; } | |
25 | ||
26 | else return 0; | |
27 | } | |
28 | int d_tici = 0; | |
29 | bool NameIdsCached = false; | |
30 | __forceinline void CacheNameIds(void) | |
31 | { | |
32 | d_tici = 0; | |
33 | for (int i = 0; i < 500000; i++) | |
34 | { | |
35 | ||
36 | char name[64]; | |
37 | ||
38 | //char testinggnb[256]; | |
39 | //sprintf(testinggnb, "%s %i \n", name, i); | |
40 | //OutputDebugStringA(testinggnb); | |
41 | ||
42 | if (GetNameById(i, name, sizeof(name))) | |
43 | { | |
44 | bool givedebug = 0; | |
45 | - | if (_mystrcmp(name, "BP_SmallStorageBox") == 0) { m_Pickup[0] = i; givedebug = true; } |
45 | + | if (strstr(name, "BP_SmallStorageBox")) { m_Pickup[0] = i; givedebug = true; } |
46 | - | else if (_mystrcmp(name, "Pickup") == 0) { m_Pickup[1] = i; givedebug = true; } |
46 | + | else if (strstr(name, "Pickup")) { m_Pickup[1] = i; givedebug = true; } |
47 | - | else if (_mystrcmp(name, "BP_SmallStorageBox") == 0) { m_Pickup[2] = i; givedebug = true; } |
47 | + | else if (strstr(name, "BP_SmallStorageBox")) { m_Pickup[2] = i; givedebug = true; } |
48 | ||
49 | if (givedebug) | |
50 | { | |
51 | d_tici++; | |
52 | char testinggnb[256]; | |
53 | sprintf(testinggnb, "%d) %s %i \n", d_tici, name, i); | |
54 | OutputDebugStringA(testinggnb); | |
55 | } | |
56 | } | |
57 | } | |
58 | NameIdsCached = true; | |
59 | } | |
60 | ||
61 | в ЕСП : | |
62 | ||
63 | if (!WhatIsActor(Actor))continue; | |
64 | if(a_flags.m_Pickup) | |
65 | { | |
66 | рисуем полученые объекты | |
67 | } |