Перейти к содержимому

Хостинг SAMP-HOST


Добро пожаловать на пользовательский форум CR-MP.RU
Зарегистрируйтесь или авторизуйтесь на нашем форуме, чтобы получить доступ ко всем функциям.
Если у Вас уже имеется аккаунт, нажмите, чтобы войти.
Если у Вас нет аккаунта на нашем форуме, нажмите, чтобы перейти к регистрации. Возникли проблемы с регистрацией ? Обратитесь на почту admin@cr-mp.ru с вашей проблемой.
Фотография

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

- - - - - Проблема CRMP КОМАНДА

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1
Cappa

Житель


Репутация: 0

http://cr-mp.ru/foru...roject-v-20new/  - игровой мод для которого нужна данная команда.

 

 

 

Команда
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;
}

 

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



#2
Lefist

Гражданин


Репутация: 3

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

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, которые увеличивают производительность игрового мода.



#3
Cappa

Житель


Репутация: 0


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

 

 

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



#4
Lefist

Гражданин


Репутация: 3

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

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 на любую удобную для вас, тем самым изменив необходимый уровень администрации для данной команды.



#5
Cappa

Житель


Репутация: 0

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



#6
Cappa

Житель


Репутация: 0

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



#7
Lefist

Гражданин


Репутация: 3

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

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;
}






Темы с аналогичным тегами Проблема, CRMP, КОМАНДА

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных


Ice-Host