Перейти к содержанию
Авторизация  
EzyWorld

Слетают покрасочные работы после респавна автомобиля.

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

EzyWorld

Здравствуйте форумчане! Возникнула проблема, с модом Eternity Project.
В общем, в моде есть команда /paintjob (покрасочные работы), сохранение покрасочных работ - происходит, однако, после /scar или респавна авто они - слетают.

Когда перезагружаю сервер они не пропадают, только после взрыва, скара.
Надеюсь поможете, вот команда /paintjob, спасибо всем.
 

	if(strcmp(cmd, "/paintjob", true) == 0)
	{
		if(PlayerInfo[playerid][pAdmin] < 3) return SendClientMessage(playerid, COLOR_GRAD1, "?? ?? ?????????????!");
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))
		{
			SendClientMessage(playerid, COLOR_GRAD1, "???????????: /paintjob [id ??????] [????? ?????? 1 - 5]");
			SendClientMessage(playerid, COLOR_GRAD1, "??????????? ????????????? ????? 0 - 4 - 5");
			return 1;
		}
		new vehid = strval(tmp);
		if(!IsValidVehicle(vehid)) return SendClientMessage(playerid, COLOR_GRAD1, "?????????? ?? ??????????!");
		tmp = strtok(cmdtext, idx);
		new jobs = strval(tmp);
		if(0 < jobs > 5) return SendClientMessage(playerid, COLOR_GRAD1, "??????????? ????????????? ????? 0 - 1 - 2 - 3 - 4 - 5");
		ChangeVehiclePaintjob(vehid,jobs);
		new id_car = GetVehicleIdxByID(vehid);
		if(id_car != -1)
		{
			aData[id_car][aPj] = jobs;
			SaveVehicle(id_car);
		}
		return 1;
	}

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


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

@EzyWorld, а сохранение у покрасочных работ есть? 

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


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

Фунцию SaveVehicle скиньте, возможно ее вообще нету.

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


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

@Vegas, да, имеются. После перезапуска - они не слетают.
И самое главное, после перезапуска - все возвращается на место.

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

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


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

в OnVehicleSpawn вызывай функцию установки

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


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

@Wеb, я "чайник" в этом деле, не подскажете ?

public OnVehicleSpawn(vehicleid)
{
	new id_car = GetVehicleIdxByID(vehicleid);
	if(id_car == -1) Fuel[vehicleid] = 60;
	else if(aData[id_car][aFrak] || aData[id_car][aJobs]) aData[id_car][aFuel] = 60;

	if(id_car != -1 && aData[id_car][aJobs] == 3)
	{
		foreach(new i:Player)
		{
			if(GetPVarInt(i,#P_Taxi_CarID) == vehicleid)
			{
				DeletePVar(i,#P_Taxi_CarID);
				DeletePVar(i,#P_Taxi_Off);
				SCM(i,COLOR_LIGHTBLUE,#Вашу машину забрал эвакуатор);
				break;
			}
		}
	}
	return 1;
}

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


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

ChangeVehiclePaintjob вызывай аналогично как в команде

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


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

@Wеb, сделал вот так вот 

public OnVehicleSpawn(vehicleid)
{
	new id_car = GetVehicleIdxByID(vehicleid);
	if(id_car == -1) Fuel[vehicleid] = 60;
	else if(aData[id_car][aFrak] || aData[id_car][aJobs] || aData[id_car][aPj]) aData[id_car][aFuel] = 60;

	if(id_car != -1 && aData[id_car][aJobs] == 3)
	{
		foreach(new i:Player)
		{
			if(GetPVarInt(i,#P_Taxi_CarID) == vehicleid)
			{
				DeletePVar(i,#P_Taxi_CarID);
				DeletePVar(i,#P_Taxi_Off);
				SCM(i,COLOR_LIGHTBLUE,#???? ?????? ?????? ?????????);
				break;
			}
		}
	}
	return 1;
}

Теперь, если скарю - все нормально. Однако, если автомобиль взрывается, то покрасочные работы слетают снова. 

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


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

SetVehicleToRespawn(id_car); в OnVehicleSpawn добавь перед return 1;
 

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

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


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

@Wеb, даже это не помогло.

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


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

@EzyWorld, добавь блокировку очистки покрасочных работ при взрыве машин. 

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


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

, к сожалению, не особо понимаю, что именно мне делать. Объясните по-подробнее, пожалуйста. 

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


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

, господи, чего ты снес? Какая блокировка винила при взрыве?

 

@EzyWorld, добавь ChangeVehiclePaintjob и SetVehicleToRespawn в OnVehicleDeath

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


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

@Wеb, у меня нету такого public`а.

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


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

создай:

public OnVehicleDeath(vehicleid, killerid)
{
    return 1;
}
Изменено пользователем Wеb

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


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

@Wеb,вписать перед return 1;? 

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


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

Да.

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


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

@Wеb, при компилировании выдает ошибки.  

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


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

Какие? Экстрасенсы в отпуске. Если идут ошибки, естественно ты делаешь не правильно и стоит подумать над кодом.

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


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

@Wеb

public OnVehicleDeath(vehicleid, killerid)
{
    ChangeVehiclePaintjob;
    SetVehicleToRespawn;

    return 1;
}

Жаль, что я чайник.. 

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


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

Ну еще бы. Где аргументы у функцией? Посмотри на них еще внимательней. Например в OnVehicleSpawn или команду. Как же ты тогда их в OnVehicleSpawn добавил если сейчас указал не корректно?

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


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

@Wеb

public OnVehicleSpawn(vehicleid)
{
	new id_car = GetVehicleIdxByID(vehicleid);
	if(id_car == -1) Fuel[vehicleid] = 60;
	else if(aData[id_car][aFrak] || aData[id_car][aJobs] || aData[id_car][aPj]) aData[id_car][aFuel] = 60;

	if(id_car != -1 && aData[id_car][aJobs] == 3)
	{
		foreach(new i:Player)
		{
			if(GetPVarInt(i,#P_Taxi_CarID) == vehicleid)
			{
				DeletePVar(i,#P_Taxi_CarID);
				DeletePVar(i,#P_Taxi_Off);
				SCM(i,COLOR_LIGHTBLUE,#Вашу машину забрал эвакуатор);
				break;
			}
		}
	}
	SetVehicleToRespawn(id_car);
	return 1;
} 

Как-то так.

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


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

Так в OnVehicleDeath добавь аналогично и про ChangeVehiclePaintjob не забудь

Да и new id_car = GetVehicleIdxByID(vehicleid); так же следовало бы добавить

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

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


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

@Wеb, добавил new id_car =... и как Вы говорили, добавил ChangeVehiclePaintjob к return1;
Но выдает ошибку (error 076 - синтакс.), вот так должно выглядеть?
 

public OnVehicleDeath(vehicleid, killerid)
{
	new id_car = GetVehicleIdxByID(vehicleid);
	if(id_car == -1) Fuel[vehicleid] = 60;
	else if(aData[id_car][aFrak] || aData[id_car][aJobs] || aData[id_car][aPj]) aData[id_car][aFuel] = 60;

	ChangeVehiclePaintjob;
	SetVehicleToRespawn(id_car);
    return 1;
}

+ Я успел порыться в моде (другом, но основа та же), но там - ничего не менялось. Возможно проблема в чем-то другом.. 

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


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

@EzyWorld, аргументы функции посмотрите: http://wiki.sa-mp.com/wiki/ChangeVehiclePaintjob_RU.

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


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

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

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

×

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

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