#1 Re: GTA Modding » CLEO 3 Library (issues and solutions) » 23-09-2010 19:56

Try to play with compatibillity modes - set it to Win9x/Me or some other, try them all.
And what OS do you have?

#3 Re: Вопросы по скриптингу » Помогите найти глюк » 21-09-2010 13:13

Во первых ты чего скрипт декомпилируеш?
Нужно всё менять в исходнике - .txt и сохранять, а то так не читабельно совсем.
Вместо 05E2 попробуй использовать 01C9: actor $2324 kill_actor $2291
05E2 для ActionSequence'в - читай SBManual
И самое главное делай Actor.RemoveReferences .

#4 Re: Программирование » Дефрагментатор. » 20-09-2010 16:35

Интересно, что-ли никто не знает в чём проблема?
Правка:
Проблема была в том что под имя mft выделялось 7 wchar_t вместо 8 smile Поэтому мы хотели удалить лишний байт из защищённой памяти.
П.С. Хотелось бы узнать - кто здесь имеет опыт в сфере электронной комерции или просто програмит на цпп:).

#5 Программирование » Дефрагментатор. » 19-09-2010 13:23

kostay scr
Replies: 1

Всем здрасте!
Я вот тут дефрагментатор и оптимизатор размещения файлов пишу, львиная доля кода уже готова, но анализ диска(составление списка файлов) был реализован через - FindFirstFile, FindNextFile - как вы уже наверное догадались не очень быстрые:)
Так вот решил просканировать $MFT с использование NTFSlib чтобы не писать уйму уже готового кода:)
Так вот процедура вроде отрабатывает корректно, но через секунду после её завершения получаем смачный Debug Assertion Failed: HEAP CORRUPTION DETECTED . Понятно что так дело не пойдёт, но в чём же проблема?Названия многих типов на русском потому-что я не люблю слэнг, а не потому-что не умею програмировать:)
Код .NET /clr .
Код процедуры:

void analis_ntfs(Object^ drivee){
	String^ drive =static_cast <String^> (drivee);
	file_info^ MFT = gcnew file_info;
	LPWSTR drive_t = (LPWSTR) Marshal::StringToHGlobalAuto(drive).ToPointer();
	MFT->name = new wchar_t[7]; //c:\&mft + /0
	wcscpy(MFT->name,drive_t);
	wcscat(MFT->name,L"$MFT");
	MFT->type = tip_faila::MFT;
	if (!prpb(MFT)) return;
	LARGE_INTEGER dis;
	dis.QuadPart = 0;
	BYTE* buf = new BYTE[83886080]; //8mb
	ULONG64 atr = 8388608; //сколько считать
	ULONG64 dch = 0;//дополнительное чтение в следуйщем куске мфт, если тот фрагментирован
	BYTE* kdp;//куда дописывать инфу при дополнительном чтении
	BYTE* och = &buf[0];
	DWORD n;
	Volume->GetClusterSize();
	for (ULONG64 i = 0;i < MFT->file_frg->ExtentCount;i++)
	{
		dis.QuadPart = MFT->file_frg->Extents[i]->LCN*Volume->GetClusterSize();//позиция в байтах, а не кластерах
		if  (!SetFilePointerEx(Volume->hVolume,dis,NULL,FILE_BEGIN))return;
		if (dch)
		{
			och = kdp;
			atr = dch;
			dch = 0;
		}
		ULONG64 el = MFT->file_frg->Extents[i]->Len*Volume->ClusterSize;
		for (ULONG64 j = 0;j < el;j += 8388608) //8 mb
		{
			if (el-j < 8388608)
			{
				atr = el - j;
				dch = 8388608 - el - j; //сколько осталось в следуйщем куске
				kdp = &buf[atr];
				if (!SetFilePointerEx(Volume->hVolume,dis,NULL,FILE_BEGIN))return;
				if (!ReadFile(Volume->hVolume,och,atr,&n,NULL)) {
					MessageBox::Show("Ошибка чтения MFT");
					return;
				}
				//no-parse
			} else {
				if (!SetFilePointerEx(Volume->hVolume,dis,NULL,FILE_BEGIN))return;
				if (!ReadFile(Volume->hVolume,och,atr,&n,NULL)) {
					MessageBox::Show("Ошибка чтения MFT");
					return;
				}
				//parse
				parse_buffer(buf,8388608 / Volume->FileRecordSize);
			}
			atr = 8388608;
			dis.QuadPart += 8388608;
			och = &buf[0];
		}
	}
	if (dch)
	{
		//parse 8388608 - dch bytes
		parse_buffer(buf,(8388608 - dch) / Volume->FileRecordSize);
	}
	delete [] buf;
}

Определения типов:

public ref struct ExtentStruct{
	ULONG64 VCN;
	ULONG64 LCN;
	ULONG64 Len;
	ULONG64 ILen; //длина с избытком получающаюся при уборке VF - лучше чем лишний кусок и лишние расчёты
};
public ref struct file_fragments 
{
	DWORD ExtentCount;
	array<ExtentStruct^>^ Extents;	
};

enum tip_faila {file,dir,reparse_point,MFT,system};
enum phase {nichego = -1,operation_completed,sost_spis_failov,anal_rasp_failov,podgotovka,defragmenting};

public ref struct file_info {
	~file_info(){
		this->!file_info();
	}
	!file_info(){
		if (this->name != NULL)
		{
			delete [] this->name; //LongPointerToString , Long,PointedTCHARString = LPTSTR;LongPointerWideCharacterString = LPWSTR
		}		
	}
	file_fragments^ file_frg;
	LPWSTR name;
	//bool error;
	//bool unmovable; всё равно нельзя раскрасить
	tip_faila type;
};

#6 Re: Модификации » Катапульт » 02-10-2009 20:19

Я это знаю^)
Но в игре не так(ну я движок не писал).
Да и реально если подействовать на тело силой невероятной величины, но только например 1*10^-10 с то он не особо то сдвинется(и не надо говорить что это не так(я не буду спорить на эту тему и что либо доказывать, но сила предаётся не мгновенно и время передачи зависит от поверхности соприкосновения(обратнопорпорциональная зависимость(Поверхность больше - время меньше))))
Просто этого не видно - это сделать практически невозможно.
-

#7 Re: Модификации » Катапульт » 01-10-2009 21:47

Ну в принципе можно скриптом и не взрывать(он просто упадет и может не взорватся:(),а так выпрыгнул и ещё сзади взрывная волна.
Кстати насчёт выталкивания - очень хорошо было бы использовать 0209: 17@ = random_int_in_ranges 0 10
Так намного интереснее чем всегда одинаково вылетать.
Код:

10@+=200.0
for 30@ to 1000
0209: 30@ = random_int_in_ranges -20 20 
0209: 29@ = random_int_in_ranges -50 50
0209: 28@ = random_int_in_ranges -20 20
8@+=28@
9@+=30@
10@+=29@
083C: set_actor $PLAYER_ACTOR velocity_in_direction_XYZ 8@ 9@ 10@
wait 2
end

П.С. У него на 20000 поэтому и нужен цикл.
Это происходит потомучто если ударить по обьекту огромной силой и сразу прекратить воздействеи то он не успеет поглотить всю силу,в данном случае игра просто практически не учитывает опкод(потомучто 2000 0.5 с и ты уже в космосе).

#8 Re: Модификации » Катапульт » 01-10-2009 17:34

Слабое выталкиванеи можно усилить так:

10@+=200.0
for 30@ to 1000
083C: set_actor $PLAYER_ACTOR velocity_in_direction_XYZ 8@ 9@ 10@
wait 2
end

Циклически устанавливаем силу:)

#9 Re: Модификации » снайперская винтовка » 01-10-2009 17:17

Прикольно:)
Особенно звуки:)

#10 Re: Вопросы по скриптингу » Один вопрос » 26-09-2009 13:55

Блин как из скрипта запустить программу?
Чёто WinExec или CreateProcess из Kernel32 не хотят работать.
Код:

{$CLEO}

0000:
:potok
wait 10
if
00E1:   player 0 pressed_key 19
jf @potok 
if
    0AA2: 0@ = load_library "kernel32.dll"
then
if
0AA4: 1@ = get_proc_address "winexec" library 0@
then
0AA5: call 1@ num_params 2 pop 2 app "c:\windows\system32\cmd.exe" 0
//else
//0AA4: 1@ = get_proc_address "CreateProcess" library 0@
else
00BA: show_text_styled GXT 'BEEFY' time 1000 style 3  // Beefy Baron
end
else
00BA: show_text_styled GXT 'BEEFY' time 1000 style 2  // Beefy Baron
end
0AA3: free_library 0@
0A93: end_custom_thread

#11 Re: Беседка » Вот бы был язык программирования похожий на SB » 26-09-2009 13:52

Вот бери - сразу усё поймёшь(главы про полиморфизм и тп читать не менее 10 раз ы течении года - тогда будешь шпарить как сумашедший:))))
Сам с этого начинал.
ИМХО - справочник это справочник,по нему програмировать не научишся.

#12 Re: Вопросы по скриптингу » Один вопрос » 26-09-2009 13:47

Не за что smile .
У меня тоже такое, даже систему переустанавлмвать не надо smile .

#13 Re: Sanny Builder и CLEO » FAQ по CLEO 3 » 25-09-2009 19:28

нет загрузки библиотеки через майн,это я и так знаю)

#14 Re: Вопросы по скриптингу » Один вопрос » 25-09-2009 19:02

Знаю такой глюк - решается установкой совместимости с Win 98,не поможет поставь после этого 200(запусти),удали gta_sa.set в папке gta san andreas user files(в "мои документы").
Ну поэкспереминтируй с совместимостью.

#15 Re: Справочная информация » Работа с компонентами машины » 25-09-2009 18:57

Call scm func Дает возможность сделать gosub с возвращаемым значением - просто функция:)
Блин чё за тупы ошибки -Лает...

#16 Re: Программирование » Патч » 23-09-2009 21:38

Юзай иду.
Ищи текст сообщения об отсутствии игры,смотри что там да как,найдеш проверку - бери адрес и правь в hex workshope.
Ничего сложного - на первый взгляд.
И проверь exe - может криптованый или пакованый,обычно пакую upx`om.

#17 Re: Вопросы по скриптингу » Один вопрос » 23-09-2009 21:32

Всё проблема решена!
В имени файла или папки не должно быть _ !
И нщё я удалил из папки data test.col и testc.ide))

#18 Re: Вопросы по скриптингу » Один вопрос » 23-09-2009 11:52

Экзешник уже поменял на 1.0 us.
Была 1 версия.
Я же знаю что во 2 защита от моддинга имг.

#19 Re: Вопросы по скриптингу » Один вопрос » 23-09-2009 10:15

Успокоились!
??????????????????????????????????????????
Даже если НЕ прописывать в .ide - виснет!
??????????????????????????????????????????

#20 Re: Вопросы по скриптингу » Один вопрос » 22-09-2009 22:36

Я тоже камавскими,только для разбивающихся обьектов нужны от дениски.
У меня тоже больше 5.
Даже если в ide не прописывать - вылетает.
Счас,эээ

#Item Definition File created by MapEditor
objs
18631, truba, truba, 299, 0
end
tobj
end
2dfx
end
#Item Placement File created by MEd
inst
18631, truba, 0, 2075.2850963, -1715.23036521, 35.2734375, 0, 0, 0, 1, -1
end

Топик на мапсе.
Sa limit adjuster может помочь?
Надо с этим разобратЬся,а то как я сделаю мод?:rolleyes:

#21 Re: Вопросы по скриптингу » Один вопрос » 22-09-2009 21:25

ПоЧеМу КоГдА я ДоБаВлЯю ОбЪеКтЫ в GtA3.ImG иЛи В сВоЙ аРхИв ИгРа ВиСнЕт?

#22 Re: Вопросы по скриптингу » Один вопрос » 22-09-2009 19:03

Ну я не нуб про айд и гта дат знаю(вообще пользуюсь мед,глючный правда),вставлял в гта3.имг - висла игра(сначала нет,но если много вставить как будто читает не там где нужно,дпже если ребулдить,если удалить пару файлов то в ошибке будет 0x000030).
За ссылку спасибо.
Добавлено:
СУУПЕР ССЫлка!
Наконец то нашел как делать ломающиеся обьекты спасибо smile .


Ну и где скачать скрипты от дениски crazy ?

#23 Re: Вопросы по скриптингу » Один вопрос » 22-09-2009 11:17

Я просто в стандартный имг засунул пару обьектов и игра зависла.
Как добавлять имг?:crazy:

#24 Re: Вопросы по скриптингу » Один вопрос » 21-09-2009 21:31

Скорее выделить память для неизвестных потоков.
Вероятно память для заголовеов и другой сис инфы о потоках.

#25 Re: Sanny Builder и CLEO » FAQ по CLEO 3 » 21-09-2009 21:11

Подскажите подалуйсто способ запуска клео через майн.
Понятно что он устарел,но может он стабильнее(?)(достали зависи при начале игры).
И при таком типе запуска нужно начинать новую игру?

Board footer

Powered by FluxBB