Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Jak łaska za praca

Страницы: 1 2 [3] 4
31
Общие вопросы / Re: Сущности.
« : Декабрь 14, 2014, 03:16:15 pm »
А сравнивать тип по _vtable религиозно ;D ?

32
Общие вопросы / Сущности.
« : Декабрь 14, 2014, 01:18:07 pm »
Где можно найти класс работы с сущностями?
Это ведь нормально узнавать тип сущности сравнивая виртуальную таблицу класса?

33
Идеи / Re: Воздушные потоки в игре
« : Сентябрь 14, 2014, 05:15:47 pm »
Хреново то, что в CLEO для ВС, не реализована sdk для регистрации своих собственных опкодов, очень хреново! Представь сколько можно было бы, внедрить полезных опкодов для личного мода. Однако CLEO для SA, имеет регистрацию опкодов и прогеру не составить труда врезать свои штучки и затем юзать их в скриптинге.

Или хотя бы #include и #define чтоб для функций можно было сделать макрос.

34
Идеи / Re: Субтитры для радио.
« : Сентябрь 13, 2014, 02:26:28 pm »
Тогда нужно знать позиции в звуковых ADF, где есть что. Помимо треков, там еще были голоса, подобны радио.

Самое сложное сделать архив текста в GTX.
И сам файлик с позициями.


35
Идеи / Субтитры для радио.
« : Сентябрь 11, 2014, 07:50:57 am »
Можно взять текст от суда playground.ru/wiki/gta_vice_city/.
Считывать что и откуда играет радио и выводить субтитры.

36
Проблема решаема таким способом в 00686744 нужно выставить индивидуальное значение для каждой игры.

Это значение  передаётся в CreateSemaphoreA

37
Моделирование 3D / Re: Конверт HD персонажа
« : Сентябрь 03, 2014, 10:17:22 pm »
Я помню сборку Vice City HD так там тони с HD текстурами и моделькой из кат=сцен.
Проперчен exe обычная версия вылетает с его ресурсами. Но там есть косяки в виде отсутствия некоторый моделей машин, поэтому например миссия ограбления банка вылетает.

38
Общие вопросы / Re: TraceRay.
« : Сентябрь 03, 2014, 01:57:25 am »
Стоп у MTA есть работа с ней а он открыт же. да УРА.

39
Общие вопросы / Re: TraceRay.
« : Сентябрь 03, 2014, 01:28:48 am »
Описание в функции в SA точно такое же
// Данный скрипт был создан специально для vol-gta.com и libertycity.ru
// Его суть - при нацеливании на пассажира в автообиле, он (пассажир) будет совершать
// определённые дейтсвия. Так, например, обычный гражданин будет пытаться сбежать, а
// человек из криминальных кругов начнет меряться силой с главным героем.
// При написании этого скрипта использовались продвинутые методы работы с кодом,
// что позволило эффективно решить ряд востребованных задач.
// В данном исходнике используются дополнительные файлы,
// подробнее см. http://modsforgta.ucoz.ru/forum/5-71-1

{$CLEO}

0AC6: 20@ = label @temp_sphere offset
0AC6: 21@ = label @temp_line offset

// Здесь происходит запись смещений меток в таблицу выбора поведения педов.
0AC6: 28@ = label @ped_events offset
0085: 0@ = 28@
0A8C: write_memory 0@ size 4 value @event_skip virtual_protect 0 // PLAYER1
0@ += 4
0A8C: write_memory 0@ size 4 value @event_skip virtual_protect 0 // PLAYER2
0@ += 4
0A8C: write_memory 0@ size 4 value @event_skip virtual_protect 0 // PLAYER_NETWORK
0@ += 4
0A8C: write_memory 0@ size 4 value @event_skip virtual_protect 0 // PLAYER_UNUSED
0@ += 4
0A8C: write_memory 0@ size 4 value @event_civmale virtual_protect 0 // CIVMALE
0@ += 4
0A8C: write_memory 0@ size 4 value @event_civfemale virtual_protect 0 // CIVFEMALE
0@ += 4
0A8C: write_memory 0@ size 4 value @event_cop virtual_protect 0 // COP
0@ += 4
0A8C: write_memory 0@ size 4 value @event_gang virtual_protect 0 // GANG1
0@ += 4
0A8C: write_memory 0@ size 4 value @event_gang virtual_protect 0 // GANG2
0@ += 4
0A8C: write_memory 0@ size 4 value @event_gang virtual_protect 0 // GANG3
0@ += 4
0A8C: write_memory 0@ size 4 value @event_gang virtual_protect 0 // GANG4
0@ += 4
0A8C: write_memory 0@ size 4 value @event_gang virtual_protect 0 // GANG5
0@ += 4
0A8C: write_memory 0@ size 4 value @event_gang virtual_protect 0 // GANG6
0@ += 4
0A8C: write_memory 0@ size 4 value @event_gang virtual_protect 0 // GANG7
0@ += 4
0A8C: write_memory 0@ size 4 value @event_gang virtual_protect 0 // GANG8
0@ += 4
0A8C: write_memory 0@ size 4 value @event_gang virtual_protect 0 // GANG9
0@ += 4
0A8C: write_memory 0@ size 4 value @event_gang virtual_protect 0 // GANG10
0@ += 4
0A8C: write_memory 0@ size 4 value @event_civmale virtual_protect 0 // DEALER
0@ += 4
0A8C: write_memory 0@ size 4 value @event_civmale virtual_protect 0 // MEDIC
0@ += 4
0A8C: write_memory 0@ size 4 value @event_civmale virtual_protect 0 // FIREMAN
0@ += 4
0A8C: write_memory 0@ size 4 value @event_gang virtual_protect 0 // CRIMINAL
0@ += 4
0A8C: write_memory 0@ size 4 value @event_civmale virtual_protect 0 // BUM
0@ += 4
0A8C: write_memory 0@ size 4 value @event_civfemale virtual_protect 0 // PROSTITUTE
0@ += 4
0A8C: write_memory 0@ size 4 value @event_skip virtual_protect 0 // SPECIAL
0@ += 4
0A8C: write_memory 0@ size 4 value @event_skip virtual_protect 0 // MISSION1
0@ += 4
0A8C: write_memory 0@ size 4 value @event_skip virtual_protect 0 // MISSION2
0@ += 4
0A8C: write_memory 0@ size 4 value @event_skip virtual_protect 0 // MISSION3
0@ += 4
0A8C: write_memory 0@ size 4 value @event_skip virtual_protect 0 // MISSION4
0@ += 4
0A8C: write_memory 0@ size 4 value @event_skip virtual_protect 0 // MISSION5
0@ += 4
0A8C: write_memory 0@ size 4 value @event_skip virtual_protect 0 // MISSION6
0@ += 4
0A8C: write_memory 0@ size 4 value @event_skip virtual_protect 0 // MISSION7
0@ += 4
0A8C: write_memory 0@ size 4 value @event_skip virtual_protect 0 // MISSION8

// Здесь начинается основной цикл.
{$I inloop}

if or
    not player.Defined($PLAYER_CHAR)
    06B9: cutscene_data_loaded
then
    continue
end

// Проверяем, что игрок использует нужное оружие.
0470: 0@ = actor $PLAYER_ACTOR current_weapon
if or
    0@ < 22
    0@ > 38
then
    continue
end

// Проверяем, что игрок прицеливается.
0A8D: 0@ = read_memory {CCamera > CCam > camMode } 0xB6F1A8 size 2 virtual_protect 0
if and
    0@ <> 8
    0@ <> 51
    0@ <> 53
then
    continue
end

// Нам нужно построить линию прицеливания игрока. Начало этой линий - позиция кости правой руки + оффсет.
// Конец - координаты прицеливания камеры.

// Находим координаты начала линии прицеливания игрока (2@, 3@, 4@).
0A96: 0@ = actor $PLAYER_ACTOR struct
0A8E: 1@ = 0@ + 0x18
0A8D: 1@ = read_memory {CPed > rwObject} 1@ size 4 virtual_protect 0
0AA7: call_function {GetAnimHierarchyFromSkinClump} 0x734A40 num_params 1 pop 1 _clump 1@ _result 1@
if
    1@ <> 0 // Если у скина есть иерархия - получаем координаты кости правой руки и добавляем к ним оффсет.
then
    0AA7: call_function {RpHAnimIDGetIndex} 0x7C51A0 num_params 2 pop 2 _boneId 24 _hierarchy 1@ _result 2@
    1@ += 8
    0A8D: 1@ = read_memory {RpHAnimHierarchy > pMatrixArray} 1@ size 4 virtual_protect 0
    2@ *= 0x40
    005A: 1@ += 2@
    5@ = 1.0
    6@ = 0.0
    7@ = 0.0
    0AA5: call {RwV3dTransformPoint} 0x7EDD60 num_params 3 pop 3 _transformMatrix 1@ _pointIn 5@v _pointOut 2@v
else
    // Если у скина нет иерархии - получаем кординаты скина и добавляем к ним оффсет.
    04C4: store_coords_to 2@ 3@ 4@ from_actor $PLAYER_ACTOR with_offset 0.0 1.5 0.7
end

// Находим координаты конца линии прицеливания игрока (5@, 6@, 7@).
0AA6: call_method {CCamera::Find3rdPersonCamTargetVector} 0x514970 struct 0xB6F028 num_params 6 pop 0 _targetOut 5@v _cameraOut 8@v _z 4@ _y 3@ _x 2@ _range 15.0

// На выходе, получили -
//    2@, 3@, 4@ - начало линии прицеливания игрока
//    5@, 6@, 7@ - конец линии прицеливания игрока

// Применяем код для всех педов.
{$I forallpeds}

if or                                                               
    actor.Dead(ped)
    not actor.Driving(ped)
    04C8: actor ped driving_flying_vehicle
then
    continue
end

0811: 1@ = actor ped used_car
0A97: 1@ = car 1@ struct

// Если у автомобиля "бешенный" водитель - пропускаем его.
0A8E: 11@ = 1@ + 0xC
0A8D: 11@ = read_memory 11@ size 1 virtual_protect 0
if
    11@ == 123
then
    continue
end

0A96: 11@ = actor ped struct

// Проверяем, что игрок целится в этого педа. Для этого создаём сферу, которая будет описывать модель педа.

// Получаем тип транспортного средства
1@ += 0x594
0A8D: 1@ = read_memory {CVehicle > vehicleSubType} 1@ size 4 virtual_protect 0

// Пропускаем воздушный и водный транспорт.
if or
    1@ == 3
    1@ == 4
    1@ == 5
then
    continue
end

// Если пед находится на мотоцикле или велосипеде, создаём сферу для всего педа, иначе - для его головы.
if or
    1@ == 1
    1@ == 9
    1@ == 10
then
    // Пропускаем копа на байке.
    089F: get_actor ped pedtype_to 8@
    if
        8@ == 6
    then
        continue
    end
   
    0AA6: call_method {CPed::GetBonePosition} 0x5E4280 struct 11@ num_params 3 pop 0 _bDynamic true _boneId 1 _point 8@v
    10@ += 0.1
    12@ = 1.0
else
    0AA6: call_method {CPed::GetBonePosition} 0x5E4280 struct 11@ num_params 3 pop 0 _bDynamic true _boneId 4 _point 8@v
    12@ = 0.3
end

// Проверяем, что пед видит игрока.

// Построим трапецию вида для педа (Z), и проверим, что в ней находится игрок.
// Для этого надо проверить каждую из сторон трапеции на пересечение с линией (координаты игрока X ; произвольная точка Y)
// Если мы найдем больше одного пересечения - значит, точка с координатами игрока находится вне трапеции.
// Также, выполним проверку для Z-координат педа и игрока.
//
//              __
//             |Z|
//          B  ---  C
//            /   \
//           /     \
//          /       \
//         /    X    \
//     A  ----/--------  D
//          /
//        /
//      /
//    /
//  Y
//
// Получаем позицию игрока (22@, 23@, 24@)
0AA6: call_method {CPed::GetBonePosition} 0x5E4280 struct 0@ num_params 3 pop 0 _bDynamic true _boneId 1 _point 22@v

// Проверяем, что пед и игрок находятся на одинаковой высоте
0087: 13@ = 24@
0063: 24@ -= 10@
if or
    24@ > 2.0
    24@ < -2.0
then
    continue
end

// Количество пересечений
26@ = 0

// Проверка пересечения отрезков BA и XY
04C4: store_coords_to 13@ 14@ 15@ from_actor ped with_offset 1.0 0.0 0.0   // B
04C4: store_coords_to 15@ 16@ 17@ from_actor ped with_offset 15.0 15.0 0.0 // A
0AA7: call_function {DoesLineSegmentIntersect} 0x49D220 num_params 8 pop 8 _By2 -3000.0 _Bx2 -3000.0 _By1 23@ _Bx1 22@ _Ay2 16@ _Ax2 15@ _Ay1 14@ _Ax1 13@ _result 25@
if
    08B7: test 25@ bit 0
then
    26@++
end

// Проверка пересечения отрезков BC и XY
04C4: store_coords_to 17@ 18@ 19@ from_actor ped with_offset -1.0 0.0 0.0 // C
0AA7: call_function {DoesLineSegmentIntersect} 0x49D220 num_params 8 pop 8 _By2 -3000.0 _Bx2 -3000.0 _By1 23@ _Bx1 22@ _Ay2 18@ _Ax2 17@ _Ay1 14@ _Ax1 13@ _result 25@
if
    08B7: test 25@ bit 0
then
    26@++
end

// Проверка пересечения отрезков CD и XY
04C4: store_coords_to 13@ 14@ 15@ from_actor ped with_offset -15.0 15.0 0.0 // D
0AA7: call_function {DoesLineSegmentIntersect} 0x49D220 num_params 8 pop 8 _By2 -3000.0 _Bx2 -3000.0 _By1 23@ _Bx1 22@ _Ay2 14@ _Ax2 13@ _Ay1 18@ _Ax1 17@ _result 25@
if
    08B7: test 25@ bit 0
then
    26@++
end

// Проверка пересечения отрезков AD и XY
0AA7: call_function {DoesLineSegmentIntersect} 0x49D220 num_params 8 pop 8 _By2 -3000.0 _Bx2 -3000.0 _By1 23@ _Bx1 22@ _Ay2 14@ _Ax2 13@ _Ay1 16@ _Ax1 15@ _result 25@
if
    08B7: test 25@ bit 0
then
    26@++
end

// Если у нас не одно пересечение - игрок вне трапеции.
if
    26@ <> 1
then
    continue
end

// Итак, игрок находится в поле зрения педа.
   
// Создаем сферу и линию.
0AA6: call_method {CColSphere::Set} 0x40FD10 struct 20@ num_params 5 pop 0 _lighting 255 _flags 9 _material 0 _point 8@v _radius 12@
0AA6: call_method {CColLine::Set} 0x40EF50 struct 21@ num_params 2 pop 0 _end 5@v _start 2@v

// Проверяем, что сфера и линия пересекаются.
0AA7: call_function {CCollision::TestLineSphere} 0x417470 num_params 2 pop 2 _sphere 20@ _line 21@ _result 13@
if
    88B7: not test 13@ bit 0
then
    continue
end

// Проверяем, что между игроком и педом нет преград.
// При этом, игнорируем автомобиль педа.
03C0: 1@ = actor ped car
0A97: 1@ = car 1@ struct
0A8C: write_memory {CWorld::pIgnoreEntity} 0xB7CD68 size 4 value 1@ virtual_protect 0
0AA7: call_function {CWorld::ProcessLineOfSight} 0x56BA00 num_params 12 pop 12 0 0 0 0 _objects 1 _peds 0 _vehicles 1 _buildings 1 _pEntity 1@v _colPoint 20@ _end 5@v _start 2@v _result: 13@
0A8C: write_memory {CWorld::pIgnoreEntity} 0xB7CD68 size 4 value 0 virtual_protect 0
if
    08B7: test 13@ bit 0
then
    continue
end

// Выбираем поведение педа, в зависимости от его типа.
089F: get_actor ped pedtype_to 8@
if or
    8@ < 0
    8@ > 31
then
    continue
end

// Если автомобиль "на ходу" - водитель попытается удрать, добавив скорости.
03C0: 1@ = actor ped car
02E3: 1@ = car 1@ speed
if
    1@ > 3.0
then
    gosub @EventDriveAway
else
    8@ *= 4
    005A: 8@ += 28@
    0A8D: 8@ = read_memory 8@ size 4 virtual_protect 0
    // Получаем случайное число (0 - 100 %)
    0209: 1@ = random_int_in_ranges 0 100
    gosub 8@
end

// Если рядом находятся полицейские - игрок получит звезду розыска.
if
    not player.WantedLevel($PLAYER_CHAR) > 0
then
    1@ = false
    if
        0AE1: 2@ = random_actor_near_point 22@ 23@ 24@ in_radius 20.0 find_next 0 pass_deads 1
    then
        repeat
            089F: get_actor 2@ pedtype_to 3@
            if
                3@ == 6
            then
                1@ = true
            end
        until 8AE1: not 2@ = random_actor_near_point 22@ 23@ 24@ in_radius 20.0 find_next 1 pass_deads 1
    end
    if
        1@ == true
    then
        player.WantedLevel($PLAYER_CHAR) = 1
    end
end
   
{$I for_end}

{$I end}

// Здесь находится код поведения различных типов педов.
:event_skip
return

:event_civmale
// Если у педа есть оружие - шансов, что он будет атаковать, больше.
// Проверяем, есть ли у педа оружие.
0AB1: call @HasPedAnyWeapon 1 _ped_struct 11@ _result 4@
if
    4@ == true
then
    // 70% - будет атаковать
    // 15% - будет пытаться уйти на автомобиле
    // 15% - будет пытаться убежать, оставив автомобиль
    if
        1@ < 85
    then
        if
            1@ < 70
        then
            07A5: AS_actor ped attack_actor $PLAYER_ACTOR time -1
        else
            05DD: AS_actor ped flee_from_actor $PLAYER_ACTOR from_origin_radius 100.0 timelimit -1
        end
    else
        gosub @EventDriveAway
    end
else
    // Если нет оружия:
    // 45% - будет пытаться уйти на автомобиле
    // 45% - будет пытаться убежать, оставив автомобиль
    // 10% - будет атаковать
    if
        1@ < 90
    then
        if
            1@ < 45
        then
            05DD: AS_actor ped flee_from_actor $PLAYER_ACTOR from_origin_radius 100.0 timelimit -1
        else
            gosub @EventDriveAway
        end
    else
        07A5: AS_actor ped attack_actor $PLAYER_ACTOR time -1
    end
end
return

:event_civfemale
// Если у педа есть оружие - шансов, что он будет атаковать, больше.
// Проверяем, есть ли у педа оружие.
0AB1: call @HasPedAnyWeapon 1 _ped_struct 11@ _result 4@
if
    4@ == true
then
    // 50% - будет атаковать
    // 25% - будет пытаться уйти на автомобиле
    // 25% - будет пытаться убежать, оставив автомобиль
    if
        1@ < 75
    then
        if
            1@ < 50
        then
            07A5: AS_actor ped attack_actor $PLAYER_ACTOR time -1
        else
            05DD: AS_actor ped flee_from_actor $PLAYER_ACTOR from_origin_radius 100.0 timelimit -1
        end
    else
        gosub @EventDriveAway
    end
else
    // Если нет оружия:
    // 30% - будет пытаться уйти на автомобиле
    // 60% - будет пытаться убежать, оставив автомобиль
    // 10% - будет атаковать
    if
        1@ < 90
    then
        if
            1@ < 60
        then
            05DD: AS_actor ped flee_from_actor $PLAYER_ACTOR from_origin_radius 100.0 timelimit -1
        else
            gosub @EventDriveAway
        end
    else
        07A5: AS_actor ped attack_actor $PLAYER_ACTOR time -1
    end
end
return

:event_cop
if
    not player.WantedLevel($PLAYER_CHAR) > 0
then
    player.WantedLevel($PLAYER_CHAR) = 1
end
return

:event_gang
// Если у педа есть оружие - шансов, что он будет атаковать, больше.
// Проверяем, есть ли у педа оружие.
0AB1: call @HasPedAnyWeapon 1 _ped_struct 11@ _result 4@
if
    4@ == true
then
    // 80% - будет атаковать
    // 20% - будет пытаться уйти на автомобиле
    if
        1@ < 80
    then
        07A5: AS_actor ped attack_actor $PLAYER_ACTOR time -1
    else
        gosub @EventDriveAway
    end
else
    // Если нет оружия:
    // 50% - будет пытаться уйти на автомобиле
    // 15% - будет пытаться убежать, оставив автомобиль
    // 35% - будет атаковать
    if
        1@ < 85
    then
        if
            1@ < 50
        then
            gosub @EventDriveAway
        else
            07A5: AS_actor ped attack_actor $PLAYER_ACTOR time -1
        end
    else
        05DD: AS_actor ped flee_from_actor $PLAYER_ACTOR from_origin_radius 100.0 timelimit -1
    end
end
return

// Проверка, что у педа есть оружие
:HasPedAnyWeapon // 0@ - структура педа
0@ += 0x5A0
for 1@ = 0 to 12
    0A8D: 2@ = read_memory 0@ size 4 virtual_protect 0
    if
        2@ <> 0
    then
        0AB2: ret 1 true
    end
    0@ += 0x1C
end
0AB2: ret 1 false

// Это стандартное поведение педа, автомобиль которого атакуют. Обычно, такой пед начинает удирать на автомобиле.
:EventDriveAway
03C0: 1@ = actor ped car
0A97: 1@ = car 1@ struct
0A8E: 2@ = 1@ + 0xC
0A8C: write_memory 2@ size 1 value 123 virtual_protect 0 // "Помечаем" этот автомобиль
0AA6: call_method {CEventVehicleDamageWeapon::CEventVehicleDamageWeapon} 0x61C2E0 struct 20@ num_params 3 pop 0 _type 31 _ped 0@ _vehicle 1@
0A8C: write_memory 20@ size 4 value 0x86D640 virtual_protect 0
0A8E: 1@ = 11@ + 0x47C
0A8D: 1@ = read_memory {CPed > CPedIntelligence} 1@ size 4 virtual_protect 0
1@ += 0x68
0AA6: call_method {CEventGroup::SetActorEvent} 0x4AB420 struct 1@ num_params 2 pop 0 _type 0 _data 20@
0AA6: call_method {CEventVehicleDamageWeapon::~CEventVehicleDamageWeapon} 0x4B1990 struct 20@ num_params 0 pop 0
return

// Буфер для хранения сферы (CColSphere)
:temp_sphere
hex
    00000000 00000000 00000000 00000000  00000000
end

// Буфер для хранения линии (CColLine)
:temp_line
hex
    00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000
end

// "Таблица" поведений педов
:ped_events
hex
    00000000 // PLAYER1
    00000000 // PLAYER2
    00000000 // PLAYER_NETWORK
    00000000 // PLAYER_UNUSED
    00000000 // CIVMALE
    00000000 // CIVFEMALE
    00000000 // COP
    00000000 // GANG1
    00000000 // GANG2
    00000000 // GANG3
    00000000 // GANG4
    00000000 // GANG5
    00000000 // GANG6
    00000000 // GANG7
    00000000 // GANG8
    00000000 // GANG9
    00000000 // GANG10
    00000000 // DEALER
    00000000 // MEDIC
    00000000 // FIREMAN
    00000000 // CRIMINAL
    00000000 // BUM
    00000000 // PROSTITUTE
    00000000 // SPECIAL
    00000000 // MISSION1
    00000000 // MISSION2
    00000000 // MISSION3
    00000000 // MISSION4
    00000000 // MISSION5
    00000000 // MISSION6
    00000000 // MISSION7
    00020001 // MISSION8
end
Вот клео скрипт который использует её. Но я напросто их не понимаю.
0AA7: call_function {CWorld::ProcessLineOfSight} 0x56BA00 num_params 12 pop 12 0 0 0 0 _objects 1 _peds 0 _vehicles 1 _buildings 1 _pEntity 1@v _colPoint 20@ _end 5@v _start 2@v

0AA6: call_method {CColSphere::Set} 0x40FD10 struct 20@ num_params 5 pop 0 _lighting 255 _flags 9 _material 0 _point 8@v _radius 12@ ?????

40
Общие вопросы / Re: TraceRay.
« : Сентябрь 02, 2014, 12:29:11 am »
Что такое CEntity и CColPoint?
void Inj()
{
vec3_t start = { 0.0, 0.0, 0.0 };
vec3_t end = { 0.0, 0.0, 1.0 };
char*  sd[50];

        //CWorld::ProcessLineOfSight
int (*func)(vec3_t const *, vec3_t const *, vec3_t const * , char ** , qboolean , qboolean , qboolean , qboolean , qboolean , qboolean , qboolean , qboolean  ) = 0x004D92D0;



int test = func( start, end, start, sd, true, true, true, true, true, true, true, true );
        //test = 1179648
//SDK_InjectFunction( 0x4D92D0, Test );
}

41
Общие вопросы / TraceRay.
« : Август 29, 2014, 11:02:05 pm »
Открыл для себя то что в Maxo Vehicle Loader есть Python скрипты и для них представляться интересные модули.
Но автор скупердяй спрятал исходники у себя и IsDebuggerPresent и ещё что-то что отлаживать получается только в Olly.
Нашел я PyMethodDef
{
      char *m_name = "TraceRay"
      PyObject* m_method = "Python_TraceRay"
      .......
}
Но понять что делает одна часть его кода не понимаю.  Кто скажет как понять то код или как прыгнуть в нужное место в Olly зная адрес пол ученый в IDA?

42
Программирование / Re: Последняя база gta_vc.idb
« : Август 08, 2014, 03:36:00 am »
Жаль, было бы интересно впаять кому-нибудь три звезды и посмотреть, как за ним гоняется вертолет, а так бестолково как-то, если 0x5F4-0x60C действительно мусор у всех педов кроме игрока. Получается класс CPed расширен на размер мусора.
Аналогичная ситуация.

43
У меня возникала идея что Vice city читает файлы из другого потока. Так и есть заблокировав все потоки кроме основного, я вызвал проблему с одной копией игры.
Так-же если остановить одну игру на время все нормально, надо попробовать приостановить другие игры на время считывания или их поток который за это отвечает.


44
Попробую открыть дополнительный поток для первой игры и пусть другие копии обобраться к нему с помощью.

typedef NTSTATUS(NTAPI* WinApi_RtlRemoteCall)(
IN HANDLE Thead,
IN PVOID CallSite,
IN ULONG ArgumentCount,
IN PULONG Argument,
IN BOOLEAN PassContext,
IN BOOLEAN AlreadySuspended
);

Это может помочь?

45
На частоту просчёта физики не влияет? Хотя наверно частота не меняется, появляется интерполяция.

Страницы: 1 2 [3] 4