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

Нужна команда смены авто для вип - /chmodel

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

Cappa

http://cr-mp.ru/forum/topic/20165-eternity-project-v-20new/  - игровой мод для которого нужна данная команда.

 

 

 

[spoiler=Команда]if(strcmp(cmd, "/chmodel", true) == 0)
{

if(PlayerInfo[playerid][pAdmin] >= 7)
{
new cars = GetVID(PlayerInfo[playerid][pCKey]),GetPlayerVehicleID(playerid);;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Используй: /chmodel [iD автомобиля]");
new proplev = strval(tmp);
if(proplev < 400 || proplev > 611)
{
SendClientMessage(playerid, COLOR_GREY,"Такой машины нету!");
return 1;
}
VehicleSystem[GetCreatorID(cars)][modelCA] = proplev;
SaveCar(GetCreatorID(cars));
DestroyVehicle(car);
car = CreateVehicle(proplev,VehicleSystem[PlayerInfo[playerid][pCKey]][xCA],VehicleSystem[PlayerInfo[playerid][pCKey]][yCA],VehicleSystem[PlayerInfo[playerid][pCKey]][zCA],VehicleSystem[PlayerInfo[playerid][pCKey]][aCA],ЦВЕТ 1,ЦВЕТ 2,60000*4);
return 1;
}
else
{
SendClientMessage(playerid, COLOR_RED, "Команда временно отключена.");
}
return 1;
}

 

 

Эту команду нужно подстроить под этот мод

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


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

Адаптировал команду под мод(скачал резервную версию, на первом посте битая ссылка):

if(strcmp(cmd, "/chmodel", true) == 0) {
	if(PlayerInfo[playerid][pAdmin] >= 7) {
		new vehIdx = GetVehicleIdxByKey(PlayerInfo[playerid][pCKey]);
		
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Используйте: /chmodel [ID модели]");
		new newModel = strval(tmp);
		if(newModel < 400 || newModel > 611) {
			SendClientMessage(playerid, COLOR_GREY, "Указан ID не существующей модели!");
			return 1;
		}

		aData[vehIdx][aModel] = newModel;
		SaveVehicle(vehIdx);
		DestroyVehicle(aData[vehIdx][aCarid]);
		aData[vehIdx][aCarid] = CreateVehicle(newModel, aData[vehIdx][aPos][0], aData[vehIdx][aPos][1], aData[vehIdx][aPos][2], aData[vehIdx][aPos][3], aData[vehIdx][aColor1], aData[vehIdx][aColor2], 60000*4);
		return 1;
	}
	else {
		SendClientMessage(playerid, COLOR_RED, "Команда временно отключена.");
	}
	return 1;
}

Получается команда изменяет модель автомобиля, к которому есть ключи у администратора. Возможны ошибки в написании, так как писал на скорую руку.

 

Посоветовал был изменить слегка код, чтобы не было выхода за границы массива, а именно добавить:

if (vehIdx == -1) return SendClientMessage(playerid, COLOR_RED, "У вас нет ключей от автомобиля!");

сразу после:

new vehIdx = GetVehicleIdxByKey(PlayerInfo[playerid][pCKey]);

Посоветовал бы переходить уже на новый командный процессор(например например PawnCMD) и подключить плагин sscanf, которые увеличивают производительность игрового мода.

  • Like 1

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


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

 

 


SendClientMessage(playerid, COLOR_RED, "Команда временно отключена.");

 

 

Команда не работает выходит : "SendClientMessage(playerid, COLOR_RED, "Команда временно отключена.");"

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


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

Проанализировав данный участок кода:

if(PlayerInfo[playerid][pAdmin] >= 7) {
...
}
else {
SendClientMessage(playerid, COLOR_RED, "Команда временно отключена.");
}

можно выяснить, что данная команда для администраторов 7 и выше уровня. Проверить можно при помощи какой-нибудь другой команды, например "/admin":

if(strcmp(cmd, "/admin", true) == 0 || strcmp(cmd, "/a", true) == 0 || strcmp(cmd, "//", true) == 0)
{
    if(IsPlayerConnected(playerid))
    {
        if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pHelper] == 1)
        {
            ...
        }
    }
    return 1;
}

Можно заметить, что переменные совпадают, значит у нас правильный путь к уровню администрации. Вы можете изменить цифру 7 на любую удобную для вас, тем самым изменив необходимый уровень администрации для данной команды.

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


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

@Lefist, админ уровень  у меня верный ,но все равно не работает

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


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

А как для данной команды установить запрещающие для замены ид авто?

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


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

Просто добавляешь дополнительную проверку новым условием:

if(newModel < 400 || newModel > 611) {
    ...
} 
else if (newModel == /*замени на свой ид*/) {
    SendClientMessage(playerid, COLOR_GREY, "Указан ID запрещенной модели!");
    return 1;
}

Можно сделать еще так(не знаю на сколько быстро будет):

if(newModel < 400 || newModel > 611) {
    ...
} 

// Проверка на запрещенную модель
switch(newModel) {
    case /*запрещенные id моделей*/: {
        SendClientMessage(playerid, COLOR_GREY, "Указан ID запрещенной модели!");
        return 1;
    }
}

Но лучше проверку делать отдельной функций, хороший тон и мало ли где будешь еще раз использовать:

stock isVehicleModelForbidden(modelId) {
    switch (modelId) {
        case /*запрещенные модели*/: {
            return true;
        }
    }
    return false;
}

Проверка будет выглядеть следующим видом:

if(newModel < 400 || newModel > 611) {
    ...
} 
else if (isVehicleModelForbidden(newModel)) {
    SendClientMessage(playerid, COLOR_GREY, "Указан ID запрещенной модели!");
    return 1;
}

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


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

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

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

×

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

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