Перейти к содержанию
MrFoxy3010

Как добавить новое id авто?

Рекомендуемые сообщения

MrFoxy3010

Здравствуйте,форумчане!Начал добавлять авто на свой сервер!Все ограничения в моде снял(где макс. id 611,а мин.400).По инструкции добавил в криминалку авто (id:612).Захожу на сервер,через FixCar загружаю авто,но оно не спавнится и в консоле появляются ошибки

[17:06:52] [debug] Run time error 4: "Array index out of bounds"
[17:06:52] [debug]  Accessing element at index 65535 past array upper bound 999
[17:06:52] [debug] AMX backtrace:
[17:06:52] [debug] #0 006aa294 in public LoadPlayerCar (0) from Quantum.amx

Сам паблик LoadPlayerCar

forward LoadPlayerCar(playerid);
public LoadPlayerCar(playerid)
{
	new string[150], r, f;
	cache_get_data(r, f);
	if(r)
	{
		C_DATA[playerid][c_model] = 		cache_get_field_content_int(0, "c_model");
		C_DATA[playerid][c_class] = 		cache_get_field_content_int(0, "c_class");
		C_DATA[playerid][c_fuel] = 			cache_get_field_content_int(0, "c_fuel");
		C_DATA[playerid][c_x] =         	cache_get_field_content_float(0, "c_x");
		C_DATA[playerid][c_y] =         	cache_get_field_content_float(0, "c_y");
		C_DATA[playerid][c_z] =         	cache_get_field_content_float(0, "c_z");
		C_DATA[playerid][c_a] =         	cache_get_field_content_float(0, "c_a");
		C_DATA[playerid][c_color][0] = 		cache_get_field_content_int(0, "c_color1");
		C_DATA[playerid][c_color][1] = 		cache_get_field_content_int(0, "c_color2");
		C_DATA[playerid][c_lock] =      	cache_get_field_content_int(0, "c_lock");
		C_DATA[playerid][c_price] =     	cache_get_field_content_int(0, "c_price");
		cache_get_field_content(0, "c_vehcom", C_DATA[playerid][c_vehcom], dbHandle, 64);
		cache_get_field_content(0, "c_number", C_DATA[playerid][c_number], dbHandle, 64);
		cache_get_field_content(0, "c_trunk", C_DATA[playerid][c_trunks], dbHandle, 64);
		C_DATA[playerid][c_paintjob] = 		cache_get_field_content_int(0, "c_paintjob");
		C_DATA[playerid][c_world] = 		cache_get_field_content_int(0, "c_world");
		C_DATA[playerid][c_update] =        cache_get_field_content_int(0, "c_update");
		C_DATA[playerid][c_mileage] =       cache_get_field_content_float(0, "c_mileage");
		C_DATA[playerid][c_health] =        cache_get_field_content_float(0, "c_health");

		sscanf(C_DATA[playerid][c_vehcom], "p<,>a<i>[14]", C_DATA[playerid][c_vehcoms]);
		sscanf(C_DATA[playerid][c_trunks], "p<,>iiiiiii", C_DATA[playerid][c_trunk][0], C_DATA[playerid][c_trunk][1], C_DATA[playerid][c_trunk][2], C_DATA[playerid][c_trunk][3], C_DATA[playerid][c_trunk_gun][0], C_DATA[playerid][c_trunk_gun][1], C_DATA[playerid][c_trunk_gun][2]);

		if(GetPlayerGarage(playerid) == -1 && C_DATA[playerid][c_world] != 0) ClearPlayerCar(playerid);

		if(C_DATA[playerid][c_x] == 0 && C_DATA[playerid][c_y] == 0 && C_DATA[playerid][c_z] == 0)
		{
			new rand = random(44);
			PI[playerid][PlayerCarID] = CreateVehicle(C_DATA[playerid][c_model], SalonRandSpawn[rand][0], SalonRandSpawn[rand][1], SalonRandSpawn[rand][2], SalonRandSpawn[rand][3], C_DATA[playerid][c_color][0], C_DATA[playerid][c_color][1], 90000);
			SendClientMessage(playerid, COLOR_GREEN,"Âàø àâòîìîáèëü íå áûë ïðèïàðêîâàí ïîñëå ïîêóïêè è áûë îòáóêñèðîâàí íà ñòîÿíêó îêîëî Àíàøàíà. Íàéòè àâòîìîáèëü -> /findcar");
		}
		else PI[playerid][PlayerCarID] = CreateVehicle(C_DATA[playerid][c_model], C_DATA[playerid][c_x], C_DATA[playerid][c_y], C_DATA[playerid][c_z], C_DATA[playerid][c_a], C_DATA[playerid][c_color][0], C_DATA[playerid][c_color][1], 90000);
		
		//if(VehicleLabel[PI[playerid][PlayerCarID]] != Text3D:INVALID_3DTEXT_ID) DestroyVehicleLabel(PI[playerid][PlayerCarID]);
		//VehicleLabel[PI[playerid][PlayerCarID]] = Text3D:INVALID_3DTEXT_ID;
		
		if(VehicleLabel[PI[playerid][PlayerCarID]] == Text3D:INVALID_3DTEXT_ID)
		{
			if(strcmp(C_DATA[playerid][c_number], "None", true, 64) != 0)
			{
				format(string, sizeof string, "{78A94D}%s", C_DATA[playerid][c_number]);
				CreateVehicleLabel(PI[playerid][PlayerCarID], string, 0xFFFFFFFF, 0.0, 0.0, 0.0, 20.0);
			}
			else CreateVehicleLabel(PI[playerid][PlayerCarID], "{78A94D}ÁÅÇ ÍÎÌÅÐÀ", 0xFFFFFFFF, 0.0, 0.0, 0.0, 20.0);
		}

		if(C_DATA[playerid][c_health] < 500) SetVehicleHealth(PI[playerid][PlayerCarID], 500);
		else SetVehicleHealth(PI[playerid][PlayerCarID], C_DATA[playerid][c_health]);
		
		CarDoorsEx(PI[playerid][PlayerCarID], C_DATA[playerid][c_lock]);
		Fuel[PI[playerid][PlayerCarID]] = C_DATA[playerid][c_fuel];
		SetVehicleVirtualWorld(PI[playerid][PlayerCarID], C_DATA[playerid][c_world]);
		if(C_DATA[playerid][c_world] != 0) SetPVarInt(playerid, "in_garage", 1);
		Engine[PI[playerid][PlayerCarID]] = Lights[PI[playerid][PlayerCarID]] = false;
		vehicle_mileage[PI[playerid][PlayerCarID]] = C_DATA[playerid][c_mileage];
		if (C_DATA[playerid][c_mileage] >= 500000)
		{
			SendClientMessage(playerid,COLOR_RED,"Äâèãàòåëü èçíîñèëñÿ îò áîëüøîãî ïðîáåãà ñîâåòóåì ïðîäàòü àâòî");
		}
		for(new i; i < 14; i++)
		{
			if(C_DATA[playerid][c_vehcoms][i]) AddVehicleComponent(PI[playerid][PlayerCarID], C_DATA[playerid][c_vehcoms][i]);
		}
		
		if(C_DATA[playerid][c_paintjob] != 3) ChangeVehiclePaintjob(PI[playerid][PlayerCarID], C_DATA[playerid][c_paintjob]);

		SendMes(playerid, COLOR_GREEN, "Àâòîìîáèëü (ID: %d) óñïåøíî çàãðóæåí â èãðó. Íàéòè àâòîìîáèëü: /findcar", PI[playerid][PlayerCarID]);

		new car_id = GetPVarInt(playerid, "car_id");
		global_string = "";
		mysql_format(dbHandle, global_string, 128, "UPDATE `ownable_cars` SET c_status = '1' WHERE c_owner = '%s' AND id = '%d'", GetName(playerid), car_id);
		mysql_tquery(dbHandle, global_string, "", "");
		
		new fmt_str[10];
		if(C_DATA[playerid][c_x] == 0 && C_DATA[playerid][c_y] == 0 && C_DATA[playerid][c_z] == 0)
		{
			new rand = random(44);
			format(fmt_str, 7, "%s", C_DATA[playerid][c_number]);
			SetVehicleNumberPlate(PI[playerid][PlayerCarID], fmt_str);
			SetVehiclePos(PI[playerid][PlayerCarID], SalonRandSpawn[rand][0], SalonRandSpawn[rand][1], SalonRandSpawn[rand][2]);
			SetVehicleZAngle(PI[playerid][PlayerCarID], SalonRandSpawn[rand][3]);
		}
		else
		{
			format(fmt_str, 7, "%s", C_DATA[playerid][c_number]);
			SetVehicleNumberPlate(PI[playerid][PlayerCarID], fmt_str);
			SetVehiclePos(PI[playerid][PlayerCarID], C_DATA[playerid][c_x], C_DATA[playerid][c_y], C_DATA[playerid][c_z]);
			SetVehicleZAngle(PI[playerid][PlayerCarID],  C_DATA[playerid][c_a]);
		}

	}
	else SendClientMessage(playerid, COLOR_RED, "Ñèñòåìíàÿ îøèáêà #1: îáðàòèòåñü ê àäìèíèñòðàòîðó");
	return true;
}


 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Reyn

Здравствуйте, у вас не получиться заспавнить автомобиль с новым id. Значение 65535 а оно же 0XFFFFF указывает на максимальное количество автомобилей в массиве samp-server.exe. Вам придётся писать плагин для серверной части, как и делали на радмире.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
MrFoxy3010
4 часа назад, MrFoxy3010 сказал:

Ca

Вы не знаете как это сделать?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
MrFoxy3010

Нельзя ли поменять значение массива?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Reyn
32 минуты назад, MrFoxy3010 сказал:

Нельзя ли поменять значение массива?

 

Если только просить исходники у калькора.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Shao

Ломни лимит да и всё, в сети давно есть этот плагос.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
MrFoxy3010

Я не нахожу(

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
MrFoxy3010

Помогите найти пожалуйста

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Reyn
15 минут назад, Shao сказал:

Ломни лимит да и всё, в сети давно есть этот плагос.

 

Что-то я его не вижу в сети, если бы он был, тогда бы гта рп сделали бы себе давно новые id`ы автомобилей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
MrFoxy3010

То есть я не смогу пофиксить INVALIDE_VEHICLES_ID?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
MrFoxy3010

Никто не знает, как это сделать?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Reyn
1 час назад, MrFoxy3010 сказал:

Никто не знает, как это сделать?

 

Писать плагин для сервера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Web
17 часов назад, Reyn сказал:

Писать плагин для сервера.

Зачем говорить о том в чем не разбираешься и тем самым дезинформировать? Радмир  реверсили и клиент и сервер. Если  сервер реверсится буквально на ура то на клиентской  стороне все  гораздо сложней.

Что такое реверс:

https://ru.wikipedia.org/wiki/Обратная_разработка#Программное_обеспечение

Изменено пользователем Web

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Reyn
1 час назад, Web сказал:

Зачем говорить о том в чем не разбираешься и тем самым дезинформировать? Радмир  реверсили и клиент и сервер. Если  сервер реверсится буквально на ура то на клиентской  стороне все  гораздо сложней.

Что такое реверс:

https://ru.wikipedia.org/wiki/Обратная_разработка#Программное_обеспечение

Я в этом хорошо разбираюсь, и сам сталкивался с данной проблемой. Узнавал у других людей хорошо знающие C# C++ И PAWN СКРИПТИНГ. И их ответ был такой-же , как и у меня. Даже если и идет реверсия, то как ты этим постом помог человеку, если он допустим в этом не разбирается.

Изменено пользователем Reyn
  • Confused 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Web
22 часа назад, Reyn сказал:

Здравствуйте, у вас не получиться заспавнить автомобиль с новым id. Значение 65535 а оно же 0XFFFFF указывает на максимальное количество автомобилей в массиве samp-server.exe. Вам придётся писать плагин для серверной части, как и делали на радмире.

вообще то в инклуде a_samp константой

 

21 час назад, Reyn сказал:

Если только просить исходники у калькора.

 

Ответ ясно дает  понять, что про реверс мы даже  не слышали. Ответы из серии слышу звон, но не знаю где он. Реверсить надо в любом случаи, что бы достать необходимые адресса для подмены или замены. Это раздели помощи, а не "сделай за меня" я не обязан тут все разжевывать  и делать все за топик-стартера. Раздел вопросов и создан, что бы направить и может быть даже сделать  за топик-стартера. Но это не такой вопрос. 

 

Изменено пользователем Web
  • Confused 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
MrFoxy3010

В a_samp я нашел константу INVALID_VEHICLE_ID (0xFFFF).Не подскажите,что нужно добавить,чтобы появился ещё 1 слот авто?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
MrFoxy3010

Как я понимаю достаточно просто поменять константу!Не?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
16Shadows

Нет. Функция CreateVehicle(...) возвращает INVALID_VEHICLE_ID, если:

1) Достигнут лимит созданных машин

2) Указана неверная модель

Если не ошибаюсь, 612 ID - присутствующая модель, поезд. Поезда нельзя создать функцией CreateVehicle.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Web

Нет, придется еще реверсить samp-server. Да и зачем спрашивать  если можно проверить?

Изменено пользователем Web

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
MrFoxy3010

Я не понимаю,что делать,кто сможет помочь?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Web
20 часов назад, MrFoxy3010 сказал:

Я не понимаю,что делать,кто сможет помочь?

 

Учись реверсить или иди в стол заказов. Бесплатно, никто не поможет. Платно тоже единицы

Изменено пользователем Web

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Shao

Если у тя модифицированный клиент, то ты бы давно сообразил как это сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
MrFoxy3010
В 7/4/2019 в 7:32 PM, Shao сказал:

Если у тя модифицированный клиент, то ты бы давно сообразил как это сделать.

Да у меня модифицированный,добавляю авто по инструкции но ошибка на самом сервере(

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.