ASI ForceHealthyComponents — Не ломающиеся компоненты т/с

#Northn

Pears Project — уже запущен!
Автор темы
Всефорумный модератор
2,656
2,541
Версия SA-MP
  1. Любая


ForceHealthyComponents — Не ломающиеся компоненты т/с​


Плагин не даёт компонентам машины отваливаться при повреждениях. Не является читом, не даёт никаких преимуществ кроме эстетического удовольствия.

Исходный код:
rtdhook* hook;

char __fastcall ApplyDamage(void* ptr, void* edx, void* dm_comp,
    int compId, float intensity, float a5)
{
    if (compId == 1) // Let's break wheels
        return reinterpret_cast<char(__thiscall*)(void*, void*, int, float, float)>(hook->trampoline)
            (ptr, dm_comp, compId, intensity, a5);
    return 0;
}

int main()
{
    hook = new rtdhook(0x6C24B0, reinterpret_cast<DWORD>(&ApplyDamage));
    hook->install();
    return 0;
}

На Lua. Обратите внимание, что он не ломает и колёса!!!:
function main()
    local memory = require 'memory'
    memory.copy(0x6C24B0, memory.strptr("\xc2\x10\x00"), 3, true)
end
 

Вложения

  • ForceHealthyComponents.asi
    10 KB · Просмотры: 4,373

#Northn

Pears Project — уже запущен!
Автор темы
Всефорумный модератор
2,656
2,541
Визуалка
0x55 0x8B 0x6C
Lua:
memory.copy(0x6C24B0, memory.strptr("\x55\x8b\x6c"), 3, true)
Наконец-то, а то лень было комп запускать
Вариант с луа использовать не стоит, имхо, а то он по сути является читом, поскольку колёса не пробиваются
 

_razor

t.me/sssecretway | ТГК: t.me/razor_code
Всефорумный модератор
1,952
3,223
Визуалка

Наконец-то, а то лень было комп запускать
Вариант с луа использовать не стоит, имхо, а то он по сути является читом, поскольку колёса не пробиваются
можно попробовать в самой функции поставить нопы на:
CAutomobile::SetDoorDamage();
CDamageManager::SetLightStatus();
CAutomobile::SetPanelDamage
CAutomobile::SetBumperDamage

при этом оставив функцию: CDamageManager::ProgressWheelDamage не тронутой
 

SR_team

like pancake
BH Team
4,809
6,487
Эти C программисты заебали! Или пишите код который компилируется компилятором C или используйте плюсовый __thiscall, где через регистры передается только указатель на объект, и нет никакого EDX, который вам не нужен и который не используется в оригинальном коде игры
 
  • Ха-ха
Реакции: user390868

#Northn

Pears Project — уже запущен!
Автор темы
Всефорумный модератор
2,656
2,541
Эти C программисты заебали! Или пишите код который компилируется компилятором C или используйте плюсовый __thiscall, где через регистры передается только указатель на объект, и нет никакого EDX, который вам не нужен и который не используется в оригинальном коде игры
Этот сртим заебал! Не понимает что мсвс не позволяет объявлять функцию thiscall и приходится выкручиваться через fastcall, а поскольку fastcall то edx используется для выравнивания!
 
  • Ха-ха
Реакции: user390868

#Northn

Pears Project — уже запущен!
Автор темы
Всефорумный модератор
2,656
2,541
проверь на VisualStudio 2012, мне кажется, я юзал __thiscall функции для хуков
Не хочу, нет столько времени и желания
Можно накостылить и сделать всё-таки функцию thiscall (через пустую структуру и функцию в нём), но я воздержусь от этой затеи.
Скорее всего мсвс2015 и выше не позволяют на ровном месте зискалл делать.
 
  • Нравится
Реакции: kin4stat

wD.D159

Известный
Друг
446
480
А как-то можно это применить не к своему авто, а ко всем авто? Например что бы защитится от флуда компонентов авто.
 

#Northn

Pears Project — уже запущен!
Автор темы
Всефорумный модератор
2,656
2,541
А как-то можно это применить не к своему авто, а ко всем авто? Например что бы защитится от флуда компонентов авто.
Оно применяется ко всем авто
Скрины чего, подумай прежде чем писать
 

wD.D159

Известный
Друг
446
480
Оно применяется ко всем авто

Скрины чего, подумай прежде чем писать
Однако не защищает от скрипта с флудом компонентов.
1614194039276.png