Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
"Właściwie" robi wewnętrzny chowany skinchanger
#1
Ponieważ widziałem, że ludzie wciąż mają z tym problemy i nie jest to trudne, ani wartościowa funkcja, postanowiłem powiedzieć wam wszystko, jak to zrobić bez awarii lub wymuszania aktualizacji (przez większość czasu)   Najpierw będziesz chciał pobrać m_iItemDefinitionIndex. Możesz to zdobyć za pomocą dowolnego wozu Netvar lub złap go za pomocą chwytaka Netvar. Nie zajmiemy się tym, jak działa chwytanie Netvara, ponieważ nie o to chodzi w samouczku. (choć jeśli chcesz spojrzeć na źródło, polecam http://www.unknowncheats.me/forum/co...var-class.html)     Kod:   getoffset ("DT_BaseAttributableItem", "m_iItemDefinitionIndex");   I użyj powyższego netvar, aby uzyskać swój identyfikator broni     Kod:   int getweaponid (C_BaseCombatWeapon * weapon) {return makeptr <int> (broń, przesunięcia, m_iItemIdetitionIndex); }   Teraz musisz podłączyć FrameStageNotify (możesz to również zrobić w OverrideView, jeśli chcesz, ale nigdy nie zaglądałem do niego tą metodą) Możesz dowiedzieć się, jak podłączyć to w wielu innych wątkach, po prostu użyj przycisku wyszukiwania. (Jego 36 w IBaseClientDLL)   Teraz naprawdę przygotuj się do zmiany skóry.   W FrameStageNotify, będziesz chciał zrobić     Kod:   if (stage == FRAME_NET_UPDATE_POSTDATAUPDATE_START) // powodem, dla którego sprawdzamy to w konkretnym przypadku, jest to, ponieważ jest wywoływana, gdy jest aktualizacja do viewmodel i różnych innych rzeczy   Teraz, aby zdobyć swoją broń, nie chcesz, aby twoja broń przeszła przez twój indeks broni, w przeciwnym razie skończysz tylko będąc w stanie ustawić broń w twoich rękach.   Będziesz chciał przetestować broń i sprawdzić swój uchwyt, aby upewnić się, że nie ustawisz żadnej broni.   Możesz to zrobić, wykonując następujące czynności:     Kod:   for (int i = 0; i <cl :: entlist -> GetHighestEntityIndex (); i ++) // iteracja przez wszystko {C_BaseCombatWeapon * weapon = (C_BaseCombatWeapon *) cl :: entlist -> GetClientEntity (i); // określ swoją broń, jeśli (! broń) // null check continue; if (! cl :: entlist -> GetClientEntityFromHandle (* (int *) ((DWORD) broń, przesunięcia. m_hOwnerEntity))) // uchwyt kontrolny null, nie sprawdzaj przed NULL / 0, ponieważ zerowy uchwyt będzie równy 0xFFFFFFFF; if (cl :: entlist -> GetClientEntityFromHandle (* (int *) ((DWORD) broń, przesunięcia m_hOwnerEntity))! = localent) // uchwyt broni nie jest twój, kontynuuj;   Teraz, gdy mamy już iterację, możemy przejść do ustawienia skóry.   Powinieneś pobrać następujące elementy:     Kod:   getoffset ("DT_BaseAttributableItem", "m_iItemIDHigh"); getoffset ("DT_BaseCombatWeapon", "m_nFallbackPaintKit"); getoffset ("DT_BaseCombatWeapon", "m_flFallbackWear"); getoffset ("DT_BaseCombatWeapon", "m_nFallbackStatTrak"); getoffset ("DT_BaseCombatWeapon", "m_nFallbackSeed");   Zrobimy nowy func, nazwijmy to cokolwiek. Nazwalę to po prostu siłaczem i przedstawię argumenty za naszą bronią i skórą, którą chcemy ustawić   Teraz pozwala zdefiniować itemidhigh       Kod:   void forceskin (C_BaseCombatWeapon * weapon, int skinid) {int * idhigh = makeptr <int> (broń, przesunięcia. m_iItemIDHigh); // używanie makeptr, ponieważ jestem leniwym gównem, po prostu go wyszukaj lub zrób to na swój sposób, jeśli (idhigh == nullptr) // nullptr sprawdza to gówno, czasami jego denerwujący powrót; }   Teraz musimy ustawić go na 1 lub -1. Nigdy tak naprawdę nie próbowałem zrozumieć logiki w tym, ale wierzę, że -1 lub 1 działa dobrze. Po prostu używam 1 i nigdy nie dostaję crashów ani popieprzonych skór albo w / e.       Kod:   void forceskin (C_BaseCombatWeapon * weapon, int skinid) {int * idhigh = makeptr <int> (broń, przesunięcia. m_iItemIDHigh); // używanie makeptr, ponieważ jestem leniwym gównem, po prostu go wyszukaj lub zrób to na swój sposób, jeśli (idhigh == nullptr) // nullptr sprawdza to gówno, czasami jego denerwujący powrót; * idhigh = 1; // Powodem, dla którego to ustawiliśmy jest to, że gra jest zmuszona użyć wartości rezerwowych}   Teraz jesteśmy gotowi zrobić cokolwiek dla naszej broni.   Pozwala ustawić wskaźniki zestawu farb i zużycia. Możesz dowiedzieć się resztę, m_nFallbackSeed jest prawie wzorem twojej broni. Możesz także pobrać m_szCustomName i ustawić tag nazwy, trochę się wydobywać       Kod:   void forceskin (C_BaseCombatWeapon * weapon, int skinid) {int * idhigh = makeptr <int> (broń, przesunięcia. m_iItemIDHigh); // używanie makeptr, ponieważ jestem leniwym gównem, po prostu go wyszukaj lub zrób to na swój sposób, jeśli (idhigh == nullptr) // nullptr sprawdza to gówno, czasami jego denerwujący powrót; * idhigh = 1; // Powodem, dla którego to ustawiliśmy jest to, że gra jest zmuszona użyć wartości rezerwowych int * paintkit = makeptr <int> (broń, przesunięcia. m_nFallbackPaintKit); * paintkit = skinid; // ustawimy to w naszym haczyku FrameStage float * wear = makeptr <float> (broń, przesunięcia. m_flFallbackWear);
Reply
#2
Dobra robota przy pisaniu, obecnie robię swoje w OverrideView, ale w rzadkich przypadkach skórka nie jest stosowana, więc prawdopodobnie przeniesie ją do FrameStageNotify. Czy z twojej ciekawości Twój StatTrak pojawia się jako użytkownik nieznany tą metodą?
Reply
#3
Zacytować: Originally Posted by shadiku Dobra robota przy pisaniu, obecnie robię swoje w OverrideView, ale w rzadkich przypadkach skórka nie jest stosowana, więc prawdopodobnie przeniesie ją do FrameStageNotify. Czy z twojej ciekawości Twój StatTrak pojawia się jako użytkownik nieznany tą metodą? Dzięki! A obecnie tak jest, jednak się nad tym zastanowię. Myślę, że mam pomysł, jak to naprawić.
Reply
#4
Dzięki za samouczek Czy jednak ta skóra nie jest bronią? Nawet te, które są odbierane? Po prostu lubię sprawiać, że mój lokalny uchwyt broni lokalnego gracza i skóra będą tylko moją bronią, którą kupuję. Działa, ale jeśli kupisz karabin przed pistoletem, to nie skręcisz pistoletem: P Czy to ustawia dane noża, ponieważ sprawdza ramkę aktualizacji? ponieważ używam widoku zastępczego i muszę nacisnąć przycisk, aby odświeżyć dane dotyczące noża
Reply
#5
Zacytować: Originally Posted by moveax Dzięki za samouczek Czy jednak ta skóra nie jest bronią? Nawet te, które są odbierane? Po prostu lubię sprawiać, że mój lokalny uchwyt broni lokalnego gracza i skóra będą tylko moją bronią, którą kupuję. Działa, ale jeśli kupisz karabin przed pistoletem, to nie skręcisz pistoletem: P Czy to ustawia dane noża, ponieważ sprawdza ramkę aktualizacji? ponieważ używam widoku zastępczego i muszę nacisnąć przycisk, aby odświeżyć dane dotyczące noża To dlatego sprawdzasz uchwyty, to tylko broń ze skóry, która jest twoja. Nawet ci, których nawet nie trzymasz (jak twój nóż). Przykład byłby następujący: "M4A1 moveaxa", to są bronie, które będą skórki I zakładając, że według danych noży oznaczasz ikonę / informację o skórze? Aby to zrobić, po prostu zrób Kod: int * itemindex = makeptr (broń, przesunięcia. m_iItemIdetitionIndex); I ustaw go na id noża "* itemindex = 507;" dla karambit itp
Reply
#6
Zacytować: Originally Posted by aethi To dlatego sprawdzasz uchwyty, to tylko broń ze skóry, która jest twoja. Nawet ci, których nawet nie trzymasz (jak twój nóż). I zakładając, że według danych noży oznaczasz ikonę / informację o skórze? Aby to zrobić, po prostu zrób Kod: int * itemindex = makeptr (broń, przesunięcia. m_iItemIdetitionIndex); I ustaw go na id noża "* itemindex = 507;" dla karambit itp Tak, wiem jak to zrobić, pytam, czy dane o nożu zostaną zastosowane na spawn (bez wciskania klawisza do pełnej aktualizacji) Ponieważ z OverrideView tego nie robi
Reply
#7
Zacytować: Originally Posted by moveax Tak, wiem jak to zrobić, pytam, czy dane o nożu zostaną zastosowane na spawn (bez wciskania klawisza do pełnej aktualizacji) Ponieważ z OverrideView tego nie robi Ach tak, tak.
Reply
#8
Zacytować: Originally Posted by aethi Ach tak, tak. Wspaniale, wygląda, że będę używać FrameStageNotify następnie. Dzięki za pomoc Zacytować: Originally Posted by aethi Ach tak, tak. Właściwie nie jestem pewien, czy mój kod jest błędny, czy też nie ma zastosowania. Nazywam to, jeśli włączono skinchanger i nie stosuje się ikony, identyfikatora itp. Do noża, dopóki nie zrobię cl_fullupdate.
Reply
#9
Zacytować: Originally Posted by moveax Właściwie nie jestem pewien, czy mój kod jest błędny, czy też nie ma zastosowania. Nazywam to, jeśli włączono skinchanger i nie stosuje się ikony, identyfikatora itp. Do noża, dopóki nie zrobię cl_fullupdate. To musi być twój kod, zmieniam zmieniarkę skóry w OverrideView i ma zastosowanie przy spawn lub gdy kupuję broń.
Reply
#10
Zacytować: Originally Posted by moveax Nie widzę, gdzie idę źle co robi to-> isKnife ()
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)