shape1
shape2
shape3
shape4
shape7
shape8

SetVehicleNumberPlate - проблема


Статус
Закрыто для дальнейших ответов.

forestgun

Освоившийся
Пользователь
25.08.2014
189
18
0
23
Добрый день, форумчане. У меня возникла проблема, хотел сделать номера через "SetVehicleNumberPlate", но вот номера не работают. Подскажите, в чём проблема.

if(strcmp(cmd, "/nomergivea", true) == 0)
{
new str[128];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Используйте: /nomergive [ID Player]");
new tmpp=ReturnUser(tmp);
if(IsPlayerConnected(tmpp))
{
if(!IsPlayerInAnyVehicle(tmpp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Игрок не в автомобиле");
new carid = GetPlayerVehicleID(tmpp);
new vid = GetPlayerVehicleID(playerid),Str[10], Float:x, Float:y, Float:z, Float:ang;
if(GetRealID(carid) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Игрок не в своём автомобиле");
if(strcmp(Names(tmpp),CarInfo[GetRealID(carid)][cOwner],true) != 0) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Автомобиль не пренадлежит игроку");
if(PlayerInfo[playerid][pMember] == 20||PlayerInfo[playerid][pLeader] == 20)
{
if(!CarLabel[carid]) { }
format(CarInfo[GetRealID(carid)][cNumber],64,"{000000}%s%d%d%d%s%s",randomchar(), random(9), random(9), random(9), randomchar(), randomchar());//
new fmt_nbr[16];
SaveCar(GetRealID(carid));
///////
format(fmt_nbr, sizeof fmt_nbr, "{000000}%s", CarInfo[GetRealID(carid)][cNumber]);
SetVehicleNumberPlate(carid, fmt_nbr);
GetVehiclePos(vid, x,y,z);
GetVehicleZAngle(vid,ang);
SetVehicleToRespawn(vid);
SetVehiclePos(vid,x,y,z);
PutPlayerInVehicle(playerid,vid,0);
SetVehicleZAngle(vid,ang);
/////////
giveplayerid = ReturnUser(tmp);
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
////////
format(str,sizeof(str),"{FFFFFF}Автомобиль зарегистрирован: {FFFFFF}%s {FFFFFF}Сотрудник МРЭО: %s",CarInfo[GetRealID(carid)][cNumber],Names(playerid));
SendClientMessage(tmpp,-1,str);
format(str,sizeof(str),"{FFFFFF}Вы зарегистрировали ТС: {FFFFFF}%s",CarInfo[GetRealID(carid)][cNumber]);
SendClientMessage(playerid,-1,str);
return true;
}
else return SendClientMessage(playerid, COLOR_GRAD1, "У вас нет прав на это!");
}
else return SendClientMessage(playerid, COLOR_GRAD1, "Этого игрока нет в сети!");
}

Буду очень благодарен.

 

player

Новичок
Пользователь
30.04.2017
0
13
0
Насколько мне известно данная функция не работает в 0.3e.

 

forestgun

Освоившийся
Пользователь
25.08.2014
189
18
0
23
@player, увы, если-бы не работала - я бы не пытался сделать... Она работает.

 

ac1nve

Продвинутый
Пользователь
23.02.2016
591
231
0
У тебя мод-пак есть с этими номерами?

 

forestgun

Освоившийся
Пользователь
25.08.2014
189
18
0
23
@ac1nve, не только, данные номера есть и на стандартных SA автомобилях

 

player

Новичок
Пользователь
30.04.2017
0
13
0
Большинство машин в КР не поддерживают кастомные номерные знаки, они вбиты в модель.
Поэтому можете покопаться в в файлах игры и посмотреть, в каких машинах номерные знаки не вбиты в модель. Скорее всего это машины из SA-MP.
 

forestgun

Освоившийся
Пользователь
25.08.2014
189
18
0
23
@player,я использую машины из стандартной GTA SA. На них система carplate есть 

 

player

Новичок
Пользователь
30.04.2017
0
13
0
@forestgun, Попробуйте вывести получившийся номер в консоль (printf) и также проверьте значение в файлах/бд.  

Код:
if(strcmp(cmd, "/nomergivea", true) == 0)
{
        new str[128];
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Используйте: /nomergive [ID Player]");
        new tmpp=ReturnUser(tmp);
        if(IsPlayerConnected(tmpp))
        {
                if(!IsPlayerInAnyVehicle(tmpp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Игрок не в автомобиле");
                new carid = GetPlayerVehicleID(tmpp);
                new vid = GetPlayerVehicleID(playerid),Str[10], Float:x, Float:y, Float:z, Float:ang;
                if(GetRealID(carid) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Игрок не в своём автомобиле");
                if(strcmp(Names(tmpp),CarInfo[GetRealID(carid)][cOwner],true) != 0) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Автомобиль не пренадлежит игроку");
                if(PlayerInfo[playerid][pMember] == 20||PlayerInfo[playerid][pLeader] == 20)
                {
                        if(!CarLabel[carid]) { }
                        format(CarInfo[GetRealID(carid)][cNumber],64,"{000000}%s%d%d%d%s%s",randomchar(), random(9), random(9), random(9), randomchar(), randomchar());//
                        new fmt_nbr[16];
                        SaveCar(GetRealID(carid));
                        ///////
                        format(fmt_nbr, sizeof fmt_nbr, "{000000}%s", CarInfo[GetRealID(carid)][cNumber]);
                        SetVehicleNumberPlate(carid, fmt_nbr);
                        printf("number: %s, vehicleid: %d", fmt_nbr, carid);
                        GetVehiclePos(vid, x,y,z);
                        GetVehicleZAngle(vid,ang);
                        SetVehicleToRespawn(vid);
                        SetVehiclePos(vid,x,y,z);
                        PutPlayerInVehicle(playerid,vid,0);
                        SetVehicleZAngle(vid,ang);
                        /////////
                        giveplayerid = ReturnUser(tmp);
                        GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        ////////
                        format(str,sizeof(str),"{FFFFFF}Автомобиль зарегистрирован: {FFFFFF}%s {FFFFFF}Сотрудник МРЭО: %s",CarInfo[GetRealID(carid)][cNumber],Names(playerid));
                        SendClientMessage(tmpp,-1,str);
                        format(str,sizeof(str),"{FFFFFF}Вы зарегистрировали ТС: {FFFFFF}%s",CarInfo[GetRealID(carid)][cNumber]);
                        SendClientMessage(playerid,-1,str);
                        return true;
                }
                else return SendClientMessage(playerid, COLOR_GRAD1, "У вас нет прав на это!");
        }
        else return SendClientMessage(playerid, COLOR_GRAD1, "Этого игрока нет в сети!");
}
 

forestgun

Освоившийся
Пользователь
25.08.2014
189
18
0
23
@player,я попробую, а это как-то влияет? 

Update: не сработало

 
Последнее редактирование модератором:

player

Новичок
Пользователь
30.04.2017
0
13
0
а это как-то влияет? 
Если проблем в форматировании нет и в бд/файлах записывается все верно, значит проблема в функции SetVehicleNumberPlate.

Update: не сработало
Что именно не сработало? Значение в бд/файлах и в консоли правильные? Проверьте в игре id машины (/dl) и в консоли, если значения совпадают, значит проблема в функции SetVehicleNumberPlate.

 

forestgun

Освоившийся
Пользователь
25.08.2014
189
18
0
23
@player,ну у меня получилось "[15:08:08] number: {000000}{000000, vehicleid: 17"  в логах. Напрягло что тут номера нет, а в бд есть.

 

player

Новичок
Пользователь
30.04.2017
0
13
0
@forestgun, Это из-за недостаточного кол-ва выделенных ячеек. Попробуйте заменить команду и посмотрите что опять выдаст в консоль.

Код:
if(strcmp(cmd, "/nomergivea", true) == 0)
{
        new str[128];
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Используйте: /nomergive [ID Player]");
        new tmpp=ReturnUser(tmp);
        if(IsPlayerConnected(tmpp))
        {
                if(!IsPlayerInAnyVehicle(tmpp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Игрок не в автомобиле");
                new carid = GetPlayerVehicleID(tmpp);
                new vid = GetPlayerVehicleID(playerid),Str[10], Float:x, Float:y, Float:z, Float:ang;
                if(GetRealID(carid) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Игрок не в своём автомобиле");
                if(strcmp(Names(tmpp),CarInfo[GetRealID(carid)][cOwner],true) != 0) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Автомобиль не пренадлежит игроку");
                if(PlayerInfo[playerid][pMember] == 20||PlayerInfo[playerid][pLeader] == 20)
                {
                        if(!CarLabel[carid]) { }
                        format(CarInfo[GetRealID(carid)][cNumber],64,"{000000}%s%d%d%d%s%s",randomchar(), random(9), random(9), random(9), randomchar(), randomchar());//
                        new fmt_nbr[16];
                        SaveCar(GetRealID(carid));
                        ///////
                        format(fmt_nbr, sizeof fmt_nbr, "%s", CarInfo[GetRealID(carid)][cNumber]);
                        SetVehicleNumberPlate(carid, fmt_nbr);
                        printf("number: %s, vehicleid: %d", fmt_nbr, carid);
                        GetVehiclePos(vid, x,y,z);
                        GetVehicleZAngle(vid,ang);
                        SetVehicleToRespawn(vid);
                        SetVehiclePos(vid,x,y,z);
                        PutPlayerInVehicle(playerid,vid,0);
                        SetVehicleZAngle(vid,ang);
                        /////////
                        giveplayerid = ReturnUser(tmp);
                        GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        ////////
                        format(str,sizeof(str),"{FFFFFF}Автомобиль зарегистрирован: {FFFFFF}%s {FFFFFF}Сотрудник МРЭО: %s",CarInfo[GetRealID(carid)][cNumber],Names(playerid));
                        SendClientMessage(tmpp,-1,str);
                        format(str,sizeof(str),"{FFFFFF}Вы зарегистрировали ТС: {FFFFFF}%s",CarInfo[GetRealID(carid)][cNumber]);
                        SendClientMessage(playerid,-1,str);
                        return true;
                }
                else return SendClientMessage(playerid, COLOR_GRAD1, "У вас нет прав на это!");
        }
        else return SendClientMessage(playerid, COLOR_GRAD1, "Этого игрока нет в сети!");
} 
 

forestgun

Освоившийся
Пользователь
25.08.2014
189
18
0
23
@player,всё совпало и id и номера в БД. Значит проблема в самой функции. Теперь как-бы эту ошибку исправить. 

 

noname_idk

Гуру
Пользователь
19.07.2015
4 046
7
787
0
Скриптер
@forestgun, SetVehicleNumberPlate

Транспортное средство должно быть повторно заспавнено для того , чтобы изменения вступили в силу.
Если у модели транспорта (оригинальной) нет номерных знаков, тогда при помощи этой функции номер изменить невозможно.

 

forestgun

Освоившийся
Пользователь
25.08.2014
189
18
0
23
@Elrmrnt-Kritik,у меня после использования данной функции происходит респавн автомобиля, но номер остаётся XYZR 000 

 

forestgun

Освоившийся
Пользователь
25.08.2014
189
18
0
23
Всем спасибо за помощь, я смог разобраться с проблемой)

 
Статус
Закрыто для дальнейших ответов.