krassdanek Опубликовано 9 июня, 2016 Поделиться Опубликовано 9 июня, 2016 Начал потихоньку осваиваться в "обмане игр". Как правило мысли обгоняют слова, поэтому могу написать бред. Вообщем написал я на GTA:SA 2 скрипта. 1) Поднимая деньги с трупа получаем +10 000$ 2) получаем "бессмертие". Хотелось бы просить, как можно "модернезировать" эти скрипты,например, активируя скрипт получаем 20 000 и они не тратятся(смешное слово). Писать для кажого действия скрипт(прибавились\отнялись деньги),наверное,это глупо. Идем дальше, о бессмертии - т.е я просто каждый раз перезаписываю макс.кол-во жизней(смотрел в структуре) и скачет полоска и как по мне,это " По детски"[ На каком собственно я и уровне..]. скрипты ниже, есть еще вопросы,но всё постепенно, как "Доделаю" эти 2) и сформулирую след.вопросы... Скрытый текст { Game : gta_sa.exe Version: Date : 2016-06-10 Author : ???? This script does blah blah blah } [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat aobscanmodule(INJECT,gta_sa.exe,01 15 50 CE B7 00) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: add [gta_sa.exe+77CE50],#10000 code: add [gta_sa.exe+77CE50],edx jmp return INJECT: jmp newmem // crash nop return: registersymbol(INJECT) [DISABLE] //code from here till the end of the code will be used to disable the cheat INJECT: db 01 15 50 CE B7 00 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "gta_sa.exe"+5805B "gta_sa.exe"+58035: 6A 00 - push 00 "gta_sa.exe"+58037: 6A 06 - push 06 "gta_sa.exe"+58039: B9 90 BC B6 00 - mov ecx,gta_sa.exe+76BC90 "gta_sa.exe"+5803E: E8 5D EE 0A 00 - call gta_sa.exe+106EA0 "gta_sa.exe"+58043: 8B CB - mov ecx,ebx "gta_sa.exe"+58045: C6 44 24 13 01 - mov byte ptr [esp+13],01 "gta_sa.exe"+5804A: E8 71 D6 FF FF - call gta_sa.exe+556C0 "gta_sa.exe"+5804F: E9 A9 06 00 00 - jmp gta_sa.exe+586FD "gta_sa.exe"+58054: 8B 4C 24 14 - mov ecx,[esp+14] "gta_sa.exe"+58058: 8B 51 08 - mov edx,[ecx+08] // ---------- INJECTING HERE ---------- "gta_sa.exe"+5805B: 01 15 50 CE B7 00 - add [gta_sa.exe+77CE50],edx // ---------- DONE INJECTING ---------- "gta_sa.exe"+58061: C6 44 24 13 01 - mov byte ptr [esp+13],01 "gta_sa.exe"+58066: E8 55 D6 FF FF - call gta_sa.exe+556C0 "gta_sa.exe"+5806B: 68 00 00 80 3F - push 3F800000 "gta_sa.exe"+58070: 6A 00 - push 00 "gta_sa.exe"+58072: 6A 07 - push 07 "gta_sa.exe"+58074: B9 90 BC B6 00 - mov ecx,gta_sa.exe+76BC90 "gta_sa.exe"+58079: E8 22 EE 0A 00 - call gta_sa.exe+106EA0 "gta_sa.exe"+5807E: 8B 4C 24 64 - mov ecx,[esp+64] "gta_sa.exe"+58082: 6A 00 - push 00 "gta_sa.exe"+58084: 6A 00 - push 00 } Скрытый текст Game : gta_sa.exe Version: Date : 2016-06-10 Author : ???? This script does blah blah blah } [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat aobscanmodule(INJECT,gta_sa.exe,00 00 8B 4E 10 D9 81 40 05 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: mov dword ptr [ecx+00000540],(float)150 code: fld dword ptr [ecx+00000540] jmp return INJECT+05: jmp newmem nop return: registersymbol(INJECT) [DISABLE] //code from here till the end of the code will be used to disable the cheat INJECT+05: db D9 81 40 05 00 00 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "gta_sa.exe"+22637E "gta_sa.exe"+22635E: 84 C0 - test al,al "gta_sa.exe"+226360: 0F 84 6D 06 00 00 - je gta_sa.exe+2269D3 "gta_sa.exe"+226366: 8B 16 - mov edx,[esi] "gta_sa.exe"+226368: 55 - push ebp "gta_sa.exe"+226369: 8B CE - mov ecx,esi "gta_sa.exe"+22636B: FF 52 24 - call dword ptr [edx+24] "gta_sa.exe"+22636E: E9 F3 06 00 00 - jmp gta_sa.exe+226A66 "gta_sa.exe"+226373: A8 08 - test al,08 "gta_sa.exe"+226375: 0F 85 52 01 00 00 - jne gta_sa.exe+2264CD "gta_sa.exe"+22637B: 8B 4E 10 - mov ecx,[esi+10] // ---------- INJECTING HERE ---------- "gta_sa.exe"+22637E: D9 81 40 05 00 00 - fld dword ptr [ecx+00000540] // ---------- DONE INJECTING ---------- "gta_sa.exe"+226384: D8 1D 50 8B 85 00 - fcomp dword ptr [gta_sa.exe+458B50] "gta_sa.exe"+22638A: DF E0 - fnstsw ax "gta_sa.exe"+22638C: F6 C4 41 - test ah,41 "gta_sa.exe"+22638F: 0F 8A A6 00 00 00 - jp gta_sa.exe+22643B "gta_sa.exe"+226395: 8B 4E 08 - mov ecx,[esi+08] "gta_sa.exe"+226398: 8B 01 - mov eax,[ecx] "gta_sa.exe"+22639A: 6A 00 - push 00 "gta_sa.exe"+22639C: 6A 01 - push 01 "gta_sa.exe"+22639E: 55 - push ebp "gta_sa.exe"+22639F: FF 50 18 - call dword ptr [eax+18] } Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 10 июня, 2016 Поделиться Опубликовано 10 июня, 2016 23 часа назад, krassdanek сказал: ,например, активируя скрипт получаем 20 000 и они не тратятся krassdanek, у тебя на деньги инструкция скорее всего на запись. а для скрипта, который ты написал лучше взять часто читающую инструкцию (инструкцию на чтение). Но попробуй вот так: Скрытый текст { Game : gta_sa.exe Version: Date : 2016-06-10 Author : ???? This script does blah blah blah } [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat aobscanmodule(INJECT,gta_sa.exe,01 15 50 CE B7 00) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: //add [gta_sa.exe+77CE50],#10000 code: //add [gta_sa.exe+77CE50],edx mov [gta_sa.exe+77CE50],#20000 jmp return INJECT: jmp newmem // crash nop return: registersymbol(INJECT) [DISABLE] //code from here till the end of the code will be used to disable the cheat INJECT: db 01 15 50 CE B7 00 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "gta_sa.exe"+5805B "gta_sa.exe"+58035: 6A 00 - push 00 "gta_sa.exe"+58037: 6A 06 - push 06 "gta_sa.exe"+58039: B9 90 BC B6 00 - mov ecx,gta_sa.exe+76BC90 "gta_sa.exe"+5803E: E8 5D EE 0A 00 - call gta_sa.exe+106EA0 "gta_sa.exe"+58043: 8B CB - mov ecx,ebx "gta_sa.exe"+58045: C6 44 24 13 01 - mov byte ptr [esp+13],01 "gta_sa.exe"+5804A: E8 71 D6 FF FF - call gta_sa.exe+556C0 "gta_sa.exe"+5804F: E9 A9 06 00 00 - jmp gta_sa.exe+586FD "gta_sa.exe"+58054: 8B 4C 24 14 - mov ecx,[esp+14] "gta_sa.exe"+58058: 8B 51 08 - mov edx,[ecx+08] // ---------- INJECTING HERE ---------- "gta_sa.exe"+5805B: 01 15 50 CE B7 00 - add [gta_sa.exe+77CE50],edx // ---------- DONE INJECTING ---------- "gta_sa.exe"+58061: C6 44 24 13 01 - mov byte ptr [esp+13],01 "gta_sa.exe"+58066: E8 55 D6 FF FF - call gta_sa.exe+556C0 "gta_sa.exe"+5806B: 68 00 00 80 3F - push 3F800000 "gta_sa.exe"+58070: 6A 00 - push 00 "gta_sa.exe"+58072: 6A 07 - push 07 "gta_sa.exe"+58074: B9 90 BC B6 00 - mov ecx,gta_sa.exe+76BC90 "gta_sa.exe"+58079: E8 22 EE 0A 00 - call gta_sa.exe+106EA0 "gta_sa.exe"+5807E: 8B 4C 24 64 - mov ecx,[esp+64] "gta_sa.exe"+58082: 6A 00 - push 00 "gta_sa.exe"+58084: 6A 00 - push 00 } 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
krassdanek Опубликовано 10 июня, 2016 Автор Поделиться Опубликовано 10 июня, 2016 Спасибо, скрипт действительно работает. Хотелось бы по подробнее узнать,за что отвечает:[ я не умею заносить под " Показать содержимое"] Цитата code: add [gta_sa.exe+77CE50],edx mov [gta_sa.exe+77CE50],#99999999 jmp return Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 10 июня, 2016 Поделиться Опубликовано 10 июня, 2016 8 минут назад, krassdanek сказал: Хотелось бы по подробнее узнать,за что отвечает Вопрос не понял. Давай прокомментирую часть скрипта, который ты выложил: Скрытый текст code: add [gta_sa.exe+77CE50],edx // Оригинальная инструкция игры, прибавляет к деньгам значение в регистре edx (значение скорее всего может быть как положительным - например при продаже чего-нибудь, так и отрицательным, например при покупке чего-нибудь). В данном случае она не нужна, так как следующая инструкция перезаписывает значение денюжков. mov [gta_sa.exe+77CE50],#99999999 // Твоя инструкция инъекции - перезаписывает значение денюжков в адресе. jmp return // Возврат в код игры из нашей инъекции. 15 минуту назад, krassdanek сказал: :[ я не умею заносить под " Показать содержимое"] Читаем внимательно FAQ. NullAlex. всё давно уже прописал для новичков. В твоём случае нужно прочитать [Инструкция] Как использовать специальный тег "code" и [Инструкция] Как использовать тег спойлера 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
krassdanek Опубликовано 10 июня, 2016 Автор Поделиться Опубликовано 10 июня, 2016 В 10.06.2016в16:15, Garik66 сказал: Вопрос не понял. Давай прокомментирую часть скрипта, который ты выложил: Скрыть содержимое code: add [gta_sa.exe+77CE50],edx // Оригинальная инструкция игры, прибавляет к деньгам значение в регистре edx (значение скорее всего может быть как положительным - например при продаже чего-нибудь, так и отрицательным, например при покупке чего-нибудь). В данном случае она не нужна, так как следующая инструкция перезаписывает значение денюжков. mov [gta_sa.exe+77CE50],#99999999 // Твоя инструкция инъекции - перезаписывает значение денюжков в адресе. jmp return // Возврат в код игры из нашей инъекции. Читаем внимательно FAQ. NullAlex. всё давно уже прописал для новичков. В твоём случае нужно прочитать [Инструкция] Как использовать специальный тег "code" и [Инструкция] Как использовать тег спойлера Тогда если mov [gta_sa.exe+77CE50],#99999999 - перезаписывает наше значение,зачем нам писать : newmem: add [gta_sa.exe+77CE50],#999999999 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 10 июня, 2016 Поделиться Опубликовано 10 июня, 2016 1 минуту назад, krassdanek сказал: зачем нам писать Я его и не писал, в моём скрипте та строчка закомментированна. (//) 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 10 июня, 2016 Поделиться Опубликовано 10 июня, 2016 3 часа назад, krassdanek сказал: [ я не умею заносить под " Показать содержимое"] Вот ещё видео заснял - посмотри. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
krassdanek Опубликовано 10 июня, 2016 Автор Поделиться Опубликовано 10 июня, 2016 В 10.06.2016в14:14, Garik66 сказал: Вот ещё видео заснял - посмотри. Спасибо за видео). Вопросик по теме: я хочу сделать бессмертие в GTA:SA . Ссылаюсь на способ: но есть одно НО( Сталкивался уже,не знаю,как решить). В структуре адресс текущегоздоровья лежит по смещению(или как его там...) 00 [скриншот прилагается], а макс. здоровье : 00004. Как мне осуществить это в скрипте?! Скрытый текст Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 10 июня, 2016 Поделиться Опубликовано 10 июня, 2016 6 минут назад, krassdanek сказал: Вопросик по теме: я хочу сделать бессмертие в GTA:SA . Выложи СЕ- шный АА-скрипт. Предварительно посмотри Ссылка на комментарий Поделиться на другие сайты Поделиться
krassdanek Опубликовано 10 июня, 2016 Автор Поделиться Опубликовано 10 июня, 2016 Скрытый текст { Game : gta_sa.exe Version: Date : 2016-06-10 Author : ???? This script does blah blah blah } [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat aobscanmodule(Helth,gta_sa.exe,00 00 8B 4E 10 D9 81 40 05 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: mov dword ptr [ecx+00000540],(float)150 code: fld dword ptr [ecx+00000540] jmp return Helth+05: jmp newmem nop return: registersymbol(Helth) [DISABLE] //code from here till the end of the code will be used to disable the cheat Helth+05: db D9 81 40 05 00 00 unregistersymbol(Helth) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "gta_sa.exe"+22637E "gta_sa.exe"+22635E: 84 C0 - test al,al "gta_sa.exe"+226360: 0F 84 6D 06 00 00 - je gta_sa.exe+2269D3 "gta_sa.exe"+226366: 8B 16 - mov edx,[esi] "gta_sa.exe"+226368: 55 - push ebp "gta_sa.exe"+226369: 8B CE - mov ecx,esi "gta_sa.exe"+22636B: FF 52 24 - call dword ptr [edx+24] "gta_sa.exe"+22636E: E9 F3 06 00 00 - jmp gta_sa.exe+226A66 "gta_sa.exe"+226373: A8 08 - test al,08 "gta_sa.exe"+226375: 0F 85 52 01 00 00 - jne gta_sa.exe+2264CD "gta_sa.exe"+22637B: 8B 4E 10 - mov ecx,[esi+10] // ---------- INJECTING HERE ---------- "gta_sa.exe"+22637E: D9 81 40 05 00 00 - fld dword ptr [ecx+00000540] // ---------- DONE INJECTING ---------- "gta_sa.exe"+226384: D8 1D 50 8B 85 00 - fcomp dword ptr [gta_sa.exe+458B50] "gta_sa.exe"+22638A: DF E0 - fnstsw ax "gta_sa.exe"+22638C: F6 C4 41 - test ah,41 "gta_sa.exe"+22638F: 0F 8A A6 00 00 00 - jp gta_sa.exe+22643B "gta_sa.exe"+226395: 8B 4E 08 - mov ecx,[esi+08] "gta_sa.exe"+226398: 8B 01 - mov eax,[ecx] "gta_sa.exe"+22639A: 6A 00 - push 00 "gta_sa.exe"+22639C: 6A 01 - push 01 "gta_sa.exe"+22639E: 55 - push ebp "gta_sa.exe"+22639F: FF 50 18 - call dword ptr [eax+18] } тест,если что, удалю. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 10 июня, 2016 Поделиться Опубликовано 10 июня, 2016 Попробуй (почитай комментарии в скрипте): Скрытый текст { Game : gta_sa.exe Version: Date : 2016-06-10 Author : ???? This script does blah blah blah } [ENABLE] aobscanmodule(Helth,gta_sa.exe,00 00 8B 4E 10 D9 81 40 05 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(Helth) newmem: fld dword ptr [ecx+00000544] // выгрузка Max HP из памяти в стек (fld аналог опкода push для FPU) fstp dword ptr [ecx+00000540] // выгрузка Max НР из стека в память с одновременным сдвигом стека назад (fstp аналог опкода pop для FPU) code: fld dword ptr [ecx+00000540] jmp return Helth+05: jmp newmem nop return: [DISABLE] Helth+05: db D9 81 40 05 00 00 unregistersymbol(Helth) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "gta_sa.exe"+22637E "gta_sa.exe"+22635E: 84 C0 - test al,al "gta_sa.exe"+226360: 0F 84 6D 06 00 00 - je gta_sa.exe+2269D3 "gta_sa.exe"+226366: 8B 16 - mov edx,[esi] "gta_sa.exe"+226368: 55 - push ebp "gta_sa.exe"+226369: 8B CE - mov ecx,esi "gta_sa.exe"+22636B: FF 52 24 - call dword ptr [edx+24] "gta_sa.exe"+22636E: E9 F3 06 00 00 - jmp gta_sa.exe+226A66 "gta_sa.exe"+226373: A8 08 - test al,08 "gta_sa.exe"+226375: 0F 85 52 01 00 00 - jne gta_sa.exe+2264CD "gta_sa.exe"+22637B: 8B 4E 10 - mov ecx,[esi+10] // ---------- INJECTING HERE ---------- "gta_sa.exe"+22637E: D9 81 40 05 00 00 - fld dword ptr [ecx+00000540] // ---------- DONE INJECTING ---------- "gta_sa.exe"+226384: D8 1D 50 8B 85 00 - fcomp dword ptr [gta_sa.exe+458B50] "gta_sa.exe"+22638A: DF E0 - fnstsw ax "gta_sa.exe"+22638C: F6 C4 41 - test ah,41 "gta_sa.exe"+22638F: 0F 8A A6 00 00 00 - jp gta_sa.exe+22643B "gta_sa.exe"+226395: 8B 4E 08 - mov ecx,[esi+08] "gta_sa.exe"+226398: 8B 01 - mov eax,[ecx] "gta_sa.exe"+22639A: 6A 00 - push 00 "gta_sa.exe"+22639C: 6A 01 - push 01 "gta_sa.exe"+22639E: 55 - push ebp "gta_sa.exe"+22639F: FF 50 18 - call dword ptr [eax+18] } Ссылка на комментарий Поделиться на другие сайты Поделиться
krocki Опубликовано 10 июня, 2016 Поделиться Опубликовано 10 июня, 2016 Версия игры: 1.01 Я взломал её так...некоторые функц. без выделения памяти... Бессмертие: Скрытый текст [ENABLE] gta_sa.exe+B32AC: db 75 [DISABLE] gta_sa.exe+B32AC: db 74 Вечные деньги: Скрытый текст [ENABLE] GTA_SA.exe+171C21: db B8 [DISABLE] GTA_SA.exe+171C21: db 3D Вечные оружия: Скрытый текст [ENABLE] GTA_SA.exe+3402AC: db 74 GTA_SA.exe+3430D6: db 74 [DISABLE] GTA_SA.exe+3402AC: db 75 GTA_SA.exe+3430D6: db 75 Вечный бег: Скрытый текст [ENABLE] GTA_SA.exe+20AD9C: db 74 [DISABLE] GTA_SA.exe+20AD9C: db 75 Вечный воздух: Скрытый текст [ENABLE] gta_sa.exe+20B102: db 74 [DISABLE] gta_sa.exe+20B102: db 75 Ссылка на комментарий Поделиться на другие сайты Поделиться
krocki Опубликовано 10 июня, 2016 Поделиться Опубликовано 10 июня, 2016 Кстати! Что спойлер ещё не починили!? А то писать название чита сверху...как то выглядит не очень! Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 11 июня, 2016 Поделиться Опубликовано 11 июня, 2016 20 часа назад, krassdanek сказал: В структуре адресс текущегоздоровья лежит по смещению(или как его там...) 00 [скриншот прилагается], а макс. здоровье : 00004. Как мне осуществить это в скрипте?! krassdanek, ты не ответил сработал ли мой скрипт. Просто на форуме принято отвечать, так как тему читают и другие пользователи. Ссылка на комментарий Поделиться на другие сайты Поделиться
krassdanek Опубликовано 11 июня, 2016 Автор Поделиться Опубликовано 11 июня, 2016 В 11.06.2016в10:50, Garik66 сказал: krassdanek, ты не ответил сработал ли мой скрипт. Да, скрипт рабочий =) Огромное спасибо! Ссылка на комментарий Поделиться на другие сайты Поделиться
krocki Опубликовано 11 июня, 2016 Поделиться Опубликовано 11 июня, 2016 Эх...хорошо когда инструкция работает только с тобой.! Ссылка на комментарий Поделиться на другие сайты Поделиться
krassdanek Опубликовано 11 июня, 2016 Автор Поделиться Опубликовано 11 июня, 2016 Согласен, когда ВООБЩЕ ничего не понимал - пытался assaultCube взломать на бессмертие... а там инструкция на всех игроков)) А что такое фильтр и т.п - даже представить не мог( да и сейчас так же..) Ссылка на комментарий Поделиться на другие сайты Поделиться
krocki Опубликовано 11 июня, 2016 Поделиться Опубликовано 11 июня, 2016 фильтр - это идентификатор для твоего игрока...для определения свой или чужой. Ссылка на комментарий Поделиться на другие сайты Поделиться
krassdanek Опубликовано 11 июня, 2016 Автор Поделиться Опубликовано 11 июня, 2016 Это я знаю, я не знаю как это осуществить в скрипте и не ищу т.к пока мне это не нужно) Ссылка на комментарий Поделиться на другие сайты Поделиться
krocki Опубликовано 11 июня, 2016 Поделиться Опубликовано 11 июня, 2016 Фильтры разные есть... есть указатель много уров. можно анализ даты\структуры использовать...по сути тоже указатель только со значением. можно регистры значений использовать... По форуму пошарь...долножно где то быть инструкция или описания. Ссылка на комментарий Поделиться на другие сайты Поделиться
krocki Опубликовано 11 июня, 2016 Поделиться Опубликовано 11 июня, 2016 Вот тебе простой пример фильтра...анализ даты\структуры... Скрытый текст [ENABLE] alloc(newmem,64) label(returnhere) newmem: test eax,eax cmp byte ptr [esi+372],01 je Game.exe+1D3E68 mov [esi+6C],eax jmp returnhere Game.exe+1D3E63: jmp newmem returnhere: [DISABLE] dealloc(newmem) Game.exe+1D3E63: test eax,eax mov [esi+6C],eax Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 11 июня, 2016 Поделиться Опубликовано 11 июня, 2016 9 минут назад, krassdanek сказал: Это я знаю, я не знаю как это осуществить в скрипте и не ищу т.к пока мне это не нужно) Вот почитай на форуме интересные статьи для себя: http://forum.gamehacklab.ru/index.php?/forum/5-%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8-%D0%B4%D0%BB%D1%8F-%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%BE%D0%B2/ Ссылка на комментарий Поделиться на другие сайты Поделиться
krassdanek Опубликовано 11 июня, 2016 Автор Поделиться Опубликовано 11 июня, 2016 Спасибо, Dison, но я на форуме не первый месяц и всё что можно посмотрел)) Просто с недавнего момента начал учится и пользоваться материалом с форума. Если кто и дает полезную информ. то в идеале хотелось бы, что бы эта инф. была с другого источника, а не с форума)) Но спасибо большое всё равно. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения