Добро пожаловать на Pawno-Info.Ru - Портал о программировании v2.0

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям. После регистрации и входа в систему вы сможете создавать темы, публиковать ответы в существующих темах, давать репутацию своим коллегам, получать собственный личный мессенджер и многое другое. Это также быстро и совершенно бесплатно, так чего же вы ждете?

Реклама

Вы можете заказать рекламу для вашего сообщества, или проекта на нашем портале. Реклама - двигатель торговли.

Что нового?

Хотите в один клик узнать что нового пишут наши пользователи? Тогда Вам сюда.

Связь с Администрацией

Если у Вас есть вопрос по работе портала, который Вы не в силах решить сами? Тогда напишите нам об это тут.

[Вопрос] Помощь по команде /editcar

Статус
В этой теме нельзя размещать новые ответы.

Garthwaite

• Зарегистрированный •
Регистрация
25 Окт 2019
Сообщения
24
Реакции
0
Доброго дня, уважаемые скриптеры:bd: Помогите пожалуйста чайнику создать команду, которая прямо через игру изменяет модель авто. Если знаете как исправить, пожалуйста скиньте готовый вариант, в pawno являюсь чайником:ac:

За помощь поставлю миллион плюсиков и поцелуйчик:as:

Команда:
Код:
else if(StrCmp(cmd, "/editcar"))
	{
	if(PlayerInfo[playerid][pAdmin] < 8 && !GetPVarInt(playerid,"imalvaro")) return SCMNOADM(playerid);
	if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid,-1,"Ты не в авто !");
	if(!strlen(tmp)) return SCM(playerid, COLOR_YELLOW, "Пиши: /editcar [carmodel] | TEST CMD edit vehicle model !");
	VehicleInfo[vehicleid][OwnedCarModel] = strval(tmp);
	new vehmodel = VehicleInfo[vehicleid][OwnedCarModel];
	if(vehmodel < 400 || level > 601) return SCM(playerid, COLOR_WHITE, "* Модель от 400 до 601!");
	SCM(playerid,-1,"Модель авто изменена !");
	return true;
	}
Ошибки:

Код:
(64405) : error 017: undefined symbol "vehicleid"
(64406) : error 017: undefined symbol "vehicleid"
(64407) : error 017: undefined symbol "level"
(71057) : error 001: expected token: ";", but found "-identifier-"
 

execution

Участник форума
Пользователь
Регистрация
23 Июн 2017
Сообщения
380
Реакции
57

OKStyle

Адвокат по делам семейным
Регистрация
4 Мар 2011
Сообщения
3,816
Реакции
953
Возраст
31
Адрес
Оренбург
Перед VehicleInfo на предыдущей строчке пиши:
PHP:
new vehicleid = GetPlayerVehicleID(playerid);
 

Garthwaite

• Зарегистрированный •
Регистрация
25 Окт 2019
Сообщения
24
Реакции
0
Перед VehicleInfo на предыдущей строчке пиши:
PHP:
new vehicleid = GetPlayerVehicleID(playerid);
Скомпилировалось нормально и без ошибок, но команда не работает. Прописываю в авто /editcar 599, просто присылает текст "Пиши: /editcar [carmodel]:bh::bh::bh:
 

OKStyle

Адвокат по делам семейным
Регистрация
4 Мар 2011
Сообщения
3,816
Реакции
953
Возраст
31
Адрес
Оренбург
Ну так правильно, перед проверкой на админа:

PHP:
new tmp[16];
tmp = strtok(cmdtext, idx);
 

Garthwaite

• Зарегистрированный •
Регистрация
25 Окт 2019
Сообщения
24
Реакции
0
Ну так правильно, перед проверкой на админа:

PHP:
new tmp[16];
tmp = strtok(cmdtext, idx);
PHP:
(64402) : warning 219: local variable "tmp" shadows a variable at a preceding level
(64403) : error 047: array sizes do not match, or destination array is too small
 

OKStyle

Адвокат по делам семейным
Регистрация
4 Мар 2011
Сообщения
3,816
Реакции
953
Возраст
31
Адрес
Оренбург
Чет я не понял, как она у тебя вообще работала с неправильным условием:

PHP:
if(!strcmp(cmd, "/editcar", true))
{
	if(PlayerInfo[playerid][pAdmin] < 8 && !GetPVarInt(playerid,"imalvaro")) return SCMNOADM(playerid);
	if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid, -1, !"Ты не в авто !");
	new tmp1[64];
	tmp1 = strtok(cmdtext, idx);
	if(!strlen(tmp)) return SCM(playerid, COLOR_YELLOW, !"Пиши: /editcar [carmodel] | TEST CMD edit vehicle model !");
	new vehmodel = strval(tmp1);
	if(!(400 <= vehmodel <= 601)) return SCM(playerid, COLOR_WHITE, !"* Модель от 400 до 601!"); // я бы до 611 поставил
	VehicleInfo[GetPlayerVehicleID(playerid)][OwnedCarModel] = vehmodel;
	SCM(playerid, -1, !"Модель авто изменена !");
	return 1;
}
Примерно так. Точная запись зависит от остальных систем мода: достаточно ли поменять одну переменную или нет.
 

Garthwaite

• Зарегистрированный •
Регистрация
25 Окт 2019
Сообщения
24
Реакции
0
Чет я не понял, как она у тебя вообще работала с неправильным условием:

PHP:
if(!strcmp(cmd, "/editcar", true))
{
	if(PlayerInfo[playerid][pAdmin] < 8 && !GetPVarInt(playerid,"imalvaro")) return SCMNOADM(playerid);
	if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid, -1, !"Ты не в авто !");
	new tmp1[64];
	tmp1 = strtok(cmdtext, idx);
	if(!strlen(tmp)) return SCM(playerid, COLOR_YELLOW, !"Пиши: /editcar [carmodel] | TEST CMD edit vehicle model !");
	new vehmodel = strval(tmp1);
	if(!(400 <= vehmodel <= 601)) return SCM(playerid, COLOR_WHITE, !"* Модель от 400 до 601!"); // я бы до 611 поставил
	VehicleInfo[GetPlayerVehicleID(playerid)][OwnedCarModel] = vehmodel;
	SCM(playerid, -1, !"Модель авто изменена !");
	return 1;
}
Примерно так. Точная запись зависит от остальных систем мода: достаточно ли поменять одну переменную или нет.
Сидя в авто просто пишет модель изменена, хотя она остается такой же, какой и была.
 

execution

Участник форума
Пользователь
Регистрация
23 Июн 2017
Сообщения
380
Реакции
57
Сидя в авто просто пишет модель изменена, хотя она остается такой же, какой и была.
Получаешь координаты авто ( )
Удаляешь авто ( )
Создаёшь авто с нужной моделью и с полученными координатами ( )
Садишь игрока на место ( )
 

Garthwaite

• Зарегистрированный •
Регистрация
25 Окт 2019
Сообщения
24
Реакции
0
Получаешь координаты авто ( )
Удаляешь авто ( )
Создаёшь авто с нужной моделью и с полученными координатами ( )
Садишь игрока на место ( )

PHP:
	else if(StrCmp(cmd, "/editcar"))
	{
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))
		{
			new pos = GetPlayerVehicleID(playerid);
			if(pos == 0) return SCM(playerid,COLOR_TEXCOLOR,"Ты не в авто! | /editcar [modelid] [color1] [color2]");
			VehicleInfo[pos][OwnedCarModel] = 0;
			VehicleInfo[pos][vFraction] = 0;
			CreatedCar[pos] = false;
			strmid(VehicleInfo[pos][OwnedPlName], "No-One", 0, strlen("No-One"), MAX_PLAYER_NAME);
			strmid(VehicleInfo[pos][Trustee1PlName], "No-One", 0, strlen("No-One"), MAX_PLAYER_NAME);
			strmid(VehicleInfo[pos][Trustee2PlName], "No-One", 0, strlen("No-One"), MAX_PLAYER_NAME);
			strmid(VehicleInfo[pos][Trustee3PlName], "No-One", 0, strlen("No-One"), MAX_PLAYER_NAME);
			DestroyVehicleArrival(pos);
			new car = strval(tmp);
		    if(car < 400 || car > 611) return SCM(playerid, COLOR_GRAD2, "Модель от 400 до 611!");
	        tmp = strtok(cmdtext, idx);
		    if(!strlen(tmp)) return SCM(playerid, COLOR_GRAD2, "Пиши: /editcar [modelid] [color 1] [color 2]");
		    new color1 = strval(tmp);
		    tmp = strtok(cmdtext, idx);
		    if(!strlen(tmp)) return SCM(playerid, COLOR_GRAD2, "Пиши: /editcar [modelid] [color 1] [color 2]");
		    new color2 = strval(tmp);
    		new Float:x, Float:y, Float:z, Float:a;
		    GetPlayerPos(playerid,x,y,z);
		    GetPlayerFacingAngle(playerid,a);
		    CreateAdminVehicle(playerid,car,x,y,z,a,color1,color2);
		    SCM(playerid, COLOR_WHITE, "Модель изменена. (Fraction = 0, VehicleOwner = 0)");
		}
	}

Не робит. Если прописать сидя в машине /editcar idcar цвет1 цвет 2, напишет что такой команды не существует. Если прописать /editcar сидя в авто, машину удалит, и придет текст " Модель авто от 400 до 611 "!
 

Garthwaite

• Зарегистрированный •
Регистрация
25 Окт 2019
Сообщения
24
Реакции
0
PHP:
	else if(StrCmp(cmd, "/editcar"))
	{
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))
		{
			new pos = GetPlayerVehicleID(playerid);
			if(pos == 0) return SCM(playerid,COLOR_TEXCOLOR,"Ты не в авто! | /editcar [modelid] [color1] [color2]");
			VehicleInfo[pos][OwnedCarModel] = 0;
			VehicleInfo[pos][vFraction] = 0;
			CreatedCar[pos] = false;
			strmid(VehicleInfo[pos][OwnedPlName], "No-One", 0, strlen("No-One"), MAX_PLAYER_NAME);
			strmid(VehicleInfo[pos][Trustee1PlName], "No-One", 0, strlen("No-One"), MAX_PLAYER_NAME);
			strmid(VehicleInfo[pos][Trustee2PlName], "No-One", 0, strlen("No-One"), MAX_PLAYER_NAME);
			strmid(VehicleInfo[pos][Trustee3PlName], "No-One", 0, strlen("No-One"), MAX_PLAYER_NAME);
			DestroyVehicleArrival(pos);
			new car = strval(tmp);
		    if(car < 400 || car > 611) return SCM(playerid, COLOR_GRAD2, "Модель от 400 до 611!");
	        tmp = strtok(cmdtext, idx);
		    if(!strlen(tmp)) return SCM(playerid, COLOR_GRAD2, "Пиши: /editcar [modelid] [color 1] [color 2]");
		    new color1 = strval(tmp);
		    tmp = strtok(cmdtext, idx);
		    if(!strlen(tmp)) return SCM(playerid, COLOR_GRAD2, "Пиши: /editcar [modelid] [color 1] [color 2]");
		    new color2 = strval(tmp);
    		new Float:x, Float:y, Float:z, Float:a;
		    GetPlayerPos(playerid,x,y,z);
		    GetPlayerFacingAngle(playerid,a);
		    CreateAdminVehicle(playerid,car,x,y,z,a,color1,color2);
		    SCM(playerid, COLOR_WHITE, "Модель изменена. (Fraction = 0, VehicleOwner = 0)");
		}
	}

Не робит. Если прописать сидя в машине /editcar idcar цвет1 цвет 2, напишет что такой команды не существует. Если прописать /editcar сидя в авто, машину удалит, и придет текст " Модель авто от 400 до 611 "!
Help?:ao:
 

OKStyle

Адвокат по делам семейным
Регистрация
4 Мар 2011
Сообщения
3,816
Реакции
953
Возраст
31
Адрес
Оренбург
Ну ты сам посмотри код, который ты пишешь. Убери ! из первой проверки.

PHP:
if(!strcmp(cmd, "/editcar", true))
{
	if(PlayerInfo[playerid][pAdmin] < 8 && !GetPVarInt(playerid,"imalvaro")) return SCMNOADM(playerid);
	if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid, -1, !"Ты не в авто !");
	new tmp1[64];
	tmp1 = strtok(cmdtext, idx);
	if(!strlen(tmp)) return SCM(playerid, COLOR_YELLOW, !"Пиши: /editcar [carmodel] | TEST CMD edit vehicle model !");
	new vehmodel = strval(tmp1), vehicleid = GetPlayerVehicleID(playerid);
	if(!(400 <= vehmodel <= 601)) return SCM(playerid, COLOR_WHITE, !"* Модель от 400 до 601!"); // я бы до 611 поставил
	VehicleInfo[][OwnedCarModel] = vehmodel;
	new Float:x, Float:y, Float:z, Float:a;
	GetVehiclePos(vehicleid, x, y, z);
	GetVehicleZAngle(vehicleid, a);
	DestroyVehicle(vehicleid);
	vehicleid = CreateVehicle(vehmodel, x, y, z, a, -1, -1, -1);
	PutPlayerInVehicle(playerid, vehicleid, 0);
	SCM(playerid, -1, !"Модель авто изменена !");
	return 1;
}
Можешь использовать примерно такой код, с цветами доработай сам.
 

Garthwaite

• Зарегистрированный •
Регистрация
25 Окт 2019
Сообщения
24
Реакции
0
Ну ты сам посмотри код, который ты пишешь. Убери ! из первой проверки.

PHP:
if(!strcmp(cmd, "/editcar", true))
{
	if(PlayerInfo[playerid][pAdmin] < 8 && !GetPVarInt(playerid,"imalvaro")) return SCMNOADM(playerid);
	if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid, -1, !"Ты не в авто !");
	new tmp1[64];
	tmp1 = strtok(cmdtext, idx);
	if(!strlen(tmp)) return SCM(playerid, COLOR_YELLOW, !"Пиши: /editcar [carmodel] | TEST CMD edit vehicle model !");
	new vehmodel = strval(tmp1), vehicleid = GetPlayerVehicleID(playerid);
	if(!(400 <= vehmodel <= 601)) return SCM(playerid, COLOR_WHITE, !"* Модель от 400 до 601!"); // я бы до 611 поставил
	VehicleInfo[][OwnedCarModel] = vehmodel;
	new Float:x, Float:y, Float:z, Float:a;
	GetVehiclePos(vehicleid, x, y, z);
	GetVehicleZAngle(vehicleid, a);
	DestroyVehicle(vehicleid);
	vehicleid = CreateVehicle(vehmodel, x, y, z, a, -1, -1, -1);
	PutPlayerInVehicle(playerid, vehicleid, 0);
	SCM(playerid, -1, !"Модель авто изменена !");
	return 1;
}
Можешь использовать примерно такой код, с цветами доработай сам.

VehicleInfo[][OwnedCarModel] = vehmodel; ( invalid expression, assumed zero )
 

OKStyle

Адвокат по делам семейным
Регистрация
4 Мар 2011
Сообщения
3,816
Реакции
953
Возраст
31
Адрес
Оренбург
в пустые скобки вставь vehicleid.
 

Garthwaite

• Зарегистрированный •
Регистрация
25 Окт 2019
Сообщения
24
Реакции
0
в пустые скобки вставь vehicleid.
Команда сработала, большое спасибо за то, что потратили свое время на такого чайничка как я, хоть немного смог разобраться:as::as::as:

(( +rep ))
 
Статус
В этой теме нельзя размещать новые ответы.

Реклама

shape1
shape2
shape3
shape4
shape7
shape8
Сверху