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

Проблема с /gpsavtoи номерами

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

Denis_Filimonov

Доброго времени суток, форумчане! Сегодня "спалил" парочку довольно неприятных проблем в своём ГМ:

1) в команде /gpsavto отображается только одно Т/С из n-ного числа. Допустим, я купил 3 автомобиля: 535, 2104 и газон. Из них отображается только 2104 под №1, хотя она была куплена второй;

2) при выдаче номера на Т/С новый номер накладывается на старый (стоит Attach3DTextLabelToVehicle, если ставить Update3DTextLabelText, начинают вылезать ошибки при сборке)

Код прилагается
Проблемная команда №1:

if(strcmp(cmd, "/gpsavto", true) == 0)
	{
		tmp = strtok(cmdtext, idx);
		new str[128],idcar = 0;
		if(!strlen(tmp)) SendClientMessage(playerid, COLOR_WHITE, "Используйте: /gps [№ авто]");
		new nomer = strval(tmp);
		for(new cars = 1; cars < MAX_VEHICLES;cars++)
		{
			if(!strcmp(CarInfo[cars][cOwner],Name(playerid),true))
			{
				idcar++;
				if(nomer == idcar)
				{
					new Float:carx, Float:cary, Float:carz;
					GetVehiclePos(CarInfo[cars][cID],carx, cary, carz);
					SetPlayerCheckpoint(playerid, carx, cary, carz, 6.0);
					SetPVarInt(playerid,"gpscarid",1);
					SendClientMessage(playerid,-1,"Ваше т/с отмечено на карте");
					return true;
				}
				format(str,128,"№ %d[id:%d] Модель: %s(%d) Государственный номер: %s",
				idcar,CarInfo[cars][cID],VehiclesName[CarInfo[cars][cMod]-400],CarInfo[cars][cMod],CarInfo[cars][cNumber]);
				SendClientMessage(playerid,-1,str);
				new mtext[20];
				new year, month;
				new days;
				getdate(year, month, days);
				if(month == 1) { mtext = "Января"; }
				else if(month == 2) { mtext = "Февраля"; }
				else if(month == 3) { mtext = "Марта"; }
				else if(month == 4) { mtext = "Апреля"; }
				else if(month == 5) { mtext = "Мая"; }
				else if(month == 6) { mtext = "Июня"; }
				else if(month == 7) { mtext = "Июля"; }
				else if(month == 8) { mtext = "Августа"; }
				else if(month == 9) { mtext = "Сентября"; }
				else if(month == 10) { mtext = "Октября"; }
				else if(month == 11) { mtext = "Ноября"; }
				else if(month == 12) { mtext = "Декабря"; }
				new hour,minuite,second;
				gettime(hour,minuite,second);
				FixHour(hour);
				hour = shifthour;
				format(string, sizeof(string), "|%d %s|%d:%d|", days, mtext, hour, minuite);
				SendClientMessage(playerid,COLOR_YELLOW,string);
				return true;
			}
		}
	    if(idcar == 0) return SendClientMessage(playerid,-1,"У вас, наверное, нет транспортных средств!");
	    else return 1;
}

Команды выдачи номеров:

if(strcmp(cmd, "/номеррф", true) == 0)
	{
	    new str[128];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Используйте: /номеррф [ид игрока] [номер(админам)] ");
		new tmpp=ReturnUser(tmp);
	    if(IsPlayerConnected(tmpp))
		{
  			if(!IsPlayerInAnyVehicle(tmpp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "*Игрок не в своём транспорте");
  			new carid = GetPlayerVehicleID(tmpp);
  			if(GetRealID(carid) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Игрок должен быть в своём Т/С");
			if(strcmp(Name(tmpp),CarInfo[GetRealID(carid)][cOwner],true) != 0) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Транспорт не пренадлежит игроку");
			new length = strlen(cmdtext);
			while ((idx < length) && (cmdtext[idx] <= ' ')) idx++;
			new offset = idx, result[256];
			while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
			{
				result[idx - offset] = cmdtext[idx];
				idx++;
			}
			result[idx - offset] = EOS;
			if(!strlen(result) && PlayerInfo[playerid][pAdmin] >= 10)
			{
			    if(!CarLabel[carid]) { }
				else Delete3DTextLabel(CarLabel[carid]);
				format(CarInfo[GetRealID(carid)][cNumber],64,"{FF0000}%s{FF0000}%d%d%d{FF0000}%s%s{2641FE}%s%sRUS",randomchar(), random(9), random(9), random(9), randomchar(), randomchar());//
				CarLabel[carid] = Create3DTextLabel(CarInfo[GetRealID(carid)][cNumber],0xFFFF00FF,0.0,0.0,0.0,15.0,0,1);
				Attach3DTextLabelToVehicle(CarLabel[carid] , carid , 0.0, 0.0, 1.1); //вместо Attach ставим Update и получаем ошибку при сборке
				format(str,sizeof(str),"Вам выдали номер %s {FFFFFF}Админ %s",CarInfo[GetRealID(carid)][cNumber],Name(playerid));
				SendClientMessage(tmpp,-1,str);
				GetPlayerName(playerid, sendername, sizeof(sendername));
				SaveCar(GetRealID(carid));
				return true;
			}
			else if(PlayerInfo[playerid][pAdmin] >= 10)
			{
			    	if(!CarLabel[carid]) { }
				else Delete3DTextLabel(CarLabel[carid]);
				format(CarInfo[GetRealID(carid)][cNumber],64,"{FFFFFF}%s {151BC6}RUS",result);
				CarLabel[carid] = Create3DTextLabel(CarInfo[GetRealID(carid)][cNumber],0xFFFF00FF,0.0,0.0,0.0,15.0,0,1);
				Attach3DTextLabelToVehicle(CarLabel[carid] , carid , 0.0, 0.0, 1.1); //вместо Attach ставим Update и получаем ошибку при сборке
				format(str,sizeof(str),"Гос.номер %s {FFFFFF}был выдан администратором %s",CarInfo[GetRealID(carid)][cNumber],Name(playerid));
				SendClientMessage(tmpp,-1,str);
				SaveCar(GetRealID(carid));
				return true;
			}
			else return SendClientMessage(playerid, COLOR_GRAD1, "У вас нет прав на это!");
		}
		else return SendClientMessage(playerid, COLOR_GRAD1, "Этого игрока нет в сети!");
	}
if(strcmp(cmd, "/nomer52", true) == 0)
	{
		new str[128];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "*Используйте: /nomer [ид игрока]");
		new tmpp=ReturnUser(tmp);
		if(IsPlayerConnected(tmpp))
		{
			if(!IsPlayerInAnyVehicle(tmpp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "*Игрок Не в Т/С");
			new carid = GetPlayerVehicleID(tmpp);
			if(GetRealID(carid) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Игрок Должен Быть в Своём Т/С");
			if(strcmp(Name(tmpp),CarInfo[GetRealID(carid)][cOwner],true) != 0) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Т/С не принадлежит игроку");
			if(PlayerInfo[playerid][pMember] == 1||PlayerInfo[playerid][pLeader] == 1)
			{
				if(!CarLabel[carid]) { }
				else Delete3DTextLabel(CarLabel[carid]);
				format(CarInfo[GetRealID(carid)][cNumber],64,"{FFFFFF}%s{FFFFFF}%d%d%d{FFFFFF}%s%s{151BC6}|52RUS",randomchar(), random(9), random(9), random(9), randomchar(), randomchar());//
				CarLabel[carid] = Create3DTextLabel(CarInfo[GetRealID(carid)][cNumber],0xFFFF00FF,0.0,0.0,0.0,15.0,0,1);
				Attach3DTextLabelToVehicle(CarLabel[carid] , carid , 0.0, 0.0, 1.1); //вместо Attach ставим Update и получаем ошибку при сборке
				 format(str,sizeof(str),"Вы получили номер %s от сотрудника ГИБДД %s",CarInfo[GetRealID(carid)][cNumber],Name(playerid));
 				SendClientMessage(tmpp,-1,str);
				format(str,sizeof(str),"Вы выдали номер %s",CarInfo[GetRealID(carid)][cNumber]);
				SendClientMessage(playerid,-1,str);
				SaveCar(GetRealID(carid));
				giveplayerid = ReturnUser(tmp);
				GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
				GetPlayerName(playerid, sendername, sizeof(sendername));
				format(string, sizeof(string), " %s [ID %d] Выдал номера на авто игроку [%s]",sendername,playerid,giveplayer);
				ABroadCast(COLOR_AMDRED,string,1);
				return true;
			}
			else return SendClientMessage(playerid, COLOR_GRAD1, "У вас нет прав на это!");
		}
		else return SendClientMessage(playerid, COLOR_GRAD1, "Этого игрока нет в сети!");
	}

Ошибки, появляющиеся при сборке (когда исп. Update3DTextLabelText):

E:\CRMP servers\Блаблабла\KGN\gamemodes\Kakaska.pwn(37104) : error 035: argument type mismatch (argument 3)

Актуальна любая помощь (советы и др.). Буду безграничено благодарен за помощь в решении проблемы! (да простят меня форумчане за тавтологию) :D83DDE0A: :D83DDE0A:

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

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


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

@Denis_Filimonov,вырежи с другого мода номера gpsavto вот

if(strcmp(cmd, "/gpsavto", true) == 0)
	{
		tmp = strtok(cmdtext, idx);
		new str[128],idcar = 0;
		if(!strlen(tmp)) SCM(playerid, COLOR_WHITE, "Используйте: /gps [№ авто]");
		new nomer = strval(tmp);
		for(new cars = 1; cars < AllCars;cars++)
		{
			if(!strcmp(CarInfo[cars][cOwner],Name(playerid),false))
			{
				idcar++;
				if(nomer == idcar)
				{
					new Float:carx, Float:cary, Float:carz;
					GetVehiclePos(CarInfo[cars][cID],carx, cary, carz);
					SetPlayerCheckpoint(playerid, carx, cary, carz, 6.0);
					SetPVarInt(playerid,"gpscarid",1);
					SCM(playerid,-1,"Информация о местонахождение показана на карте красным маячком");
					return 1;
				}
				format(str,128,"{FF9900}№%d,Модель: %s[%d],номер: %s",
				idcar,VehiclesName[CarInfo[cars][cMod]-400],CarInfo[cars][cID],CarInfo[cars][cNumber]);
				SCM(playerid,-1,str);
			}
		}
		if(idcar == 0) return SCM(playerid,-1,"У вас наверно нет автомобилей!");
		else return 1;

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

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


Ссылка на сообщение
Поделиться на другие сайты
Denis_Filimonov
@ruslan14141414, команда аналогична моей, только без даты и времени

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


Ссылка на сообщение
Поделиться на другие сайты
ruslan14141414
if(strcmp(cmd, "/vipnomer", true) == 0)
	{
		new str[128];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "»спользуйте: /vipnomer [id] [номер(админам)] ");
		new tmpp=ReturnUser(tmp);
		if(Offlineonline(tmpp))
		{
			if(!IsPlayerInAnyVehicle(tmpp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "»грок не в автомобиле");
			new carid = GetPlayerVehicleID(tmpp);
			if(GetRealID(carid) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "»грок должен быть в своЄм автомобиле");
			if(strcmp(Name(tmpp),CarInfo[GetRealID(carid)][cOwner],true) != 0) return SendClientMessage(playerid, COLOR_ISPOLZUY, "јвтомобиль не пренадлежит игроку");
			new length = strlen(cmdtext);
			while ((idx < length) && (cmdtext[idx] <= ' ')) idx++;
			new offset = idx, result[256];
			while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
			{
				result[idx - offset] = cmdtext[idx];
				idx++;
			}
			result[idx - offset] = EOS;
			if(!strlen(result) && PlayerInfo[playerid][pAdmin] > 8)
			{
				if(!CarLabel[carid]) { }
				else Delete3DTextLabel(CarLabel[carid]);
				format(CarInfo[GetRealID(carid)][cNumber],64,"{FF0000}%s{FF0000}%d%d%d{FF0000}%s%s{2641FE}|RUS",randomchar(), random(9), random(9), random(9), randomchar(), randomchar());//
				CarLabel[carid] = Create3DTextLabel(CarInfo[GetRealID(carid)][cNumber],0xFFFF00FF,0.0,0.0,0.0,40.0,0,1);
				Attach3DTextLabelToVehicle(CarLabel[carid] , carid , 0.0, 0.0, 1.1);
				format(str,sizeof(str),"¬ам выдали номер %s јдмин %s",CarInfo[GetRealID(carid)][cNumber],Name(playerid));
				SendClientMessage(tmpp,-1,str);
				GetPlayerName(playerid, sendername, sizeof(sendername));
				SaveCar(GetRealID(carid));
				return 1;
			}
			else if(PlayerInfo[playerid][pAdmin] > 7)
			{
				if(!CarLabel[carid]) { }
				else Delete3DTextLabel(CarLabel[carid]);
				format(CarInfo[GetRealID(carid)][cNumber],64,"{FF0000}%s {2641FE}|RUS",result);
				CarLabel[carid] = Create3DTextLabel(CarInfo[GetRealID(carid)][cNumber],0xFFFF00FF,0.0,0.0,0.0,40.0,0,1);
				Attach3DTextLabelToVehicle(CarLabel[carid] , carid , 0.0, 0.0, 1.1);
				format(str,sizeof(str),"¬ам выдал блат номер %s јдмин %s",CarInfo[GetRealID(carid)][cNumber],Name(playerid));
				SendClientMessage(tmpp,-1,str);
				SaveCar(GetRealID(carid));
				return 1;
			}
			else return SendClientMessage(playerid, COLOR_GRAD1, "” вас нет прав на это!");
		}
		else return SendClientMessage(playerid, COLOR_GRAD1, "Ётого игрока нет в сети!");
	}

@Denis_Filimonov,либы что бы подошла она рабочая по пробуй эту кмд номеров она ничем не отличается почти

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

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


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

@ruslan14141414, команда аналогична моей, замена на Вашу мне не поможет (проверено)
Тема актуальна

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


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

if(!CarLabel[carid]) { }

else Delete3DTextLabel(CarLabel[carid]);

на это

Delete3DTextLabel(CarLabel[carid]);

  • Like 1

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


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

@Max_Eitzen, спасибо, с номерами помогло

 

UPD: если на продажу создано больше 2-х автомобилей, то начиная с 3-го (включительно) при продаже номер зависает, а за ним, на втором плане, появляется надпись типа "Продаётся". Нормализуется всё только после рестарта

Я такое впервые наблюдаю, ибо команды продажи/покупки/создания т/с я не трогал. В моде GTRP команды аналогичные, но почему-то там всё нормально, нежели в моём моде...

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

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


Ссылка на сообщение
Поделиться на другие сайты
Max_Eitzen
for(new cars = 1; cars < MAX_VEHICLES;cars++)

Замени на

for(new cars = 1; cars <= AllCars; cars++)

Или же попробуй

for(new cars = 0; cars < MAX_VEHICLES; cars++)
  • Like 2

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


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

@Max_Eitzen, спасибо, помогло :D83DDE0A: . С номерами проблему решил)

Всем спасибо за помощь, тему закрываю

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


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

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

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

×

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

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