Сейчас попробуем создать новую категорию лицензии. В моём примере это лицензия на грузовые автомобили
Начнём. Находим
там ищем
После него добавляем название вашей лицензии, пусть это будет
Идём в
Code
public OnPlayerConnect(playerid)
Там находим
Code
PlayerInfo[playerid][pCarLic] = 0;
После него ставим
Code
PlayerInfo[playerid][pGruzLic] = 0;
Идём в
Code
public SetPlayerUnjail()
найдём там
Code
if(PlayerInfo[i][pCarLic] < 1 && IsPlayerInAnyVehicle(i) && GetPlayerState(i) == 2)
{
if(TakingLesson[i] == 1) { }
else { RemovePlayerFromVehicle(i); }
}
После него вставляем
Code
if(PlayerInfo[i][pGruzLic] < 1 && IsPlayerInAnyVehicle(i) && GetPlayerState(i) == 2)
{
if(TakingLesson[i] == 1) { }
else { RemovePlayerFromVehicle(i); }
}
У вас должно получится так
Code
if(PlayerInfo[i][pCarLic] < 1 && IsPlayerInAnyVehicle(i) && GetPlayerState(i) == 2)
{
if(TakingLesson[i] == 1) { }
else { RemovePlayerFromVehicle(i); }
}
if(PlayerInfo[i][pGruzLic] < 1 && IsPlayerInAnyVehicle(i) && GetPlayerState(i) == 2)
{
if(TakingLesson[i] == 1) { }
else { RemovePlayerFromVehicle(i); }
}
Проехали.Идём дальше.
Вбиваем в поиск
Code
public OnPlayerRegister(playerid, password[])
ниже находим
Code
format(var, 32, "CarLic=%d\n",PlayerInfo[playerid][pCarLic]);fwrite(hFile, var);
И после этого вставляем
Code
format(var, 32, "GruzLic=%d\n",PlayerInfo[playerid][pGruzLic]);fwrite(hFile, var);
Ищем
Code
public OnPlayerUpdate(playerid)
Там так же находим
Code
format(var, 32, "CarLic=%d\n",PlayerInfo[playerid][pCarLic]);fwrite(hFile, var);
Ниже него пишите
Code
format(var, 32, "GruzLic=%d\n",PlayerInfo[playerid][pGruzLic]);fwrite(hFile, var);
Идём потом в
Code
public OnPlayerLogin(playerid,password[])
Ищем там
Code
if( strcmp( key , "CarLic" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCarLic] = strval( val ); }
так же вставляем после него
Code
if( strcmp( key , "GruzLic" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pGruzLic] = strval( val ); }
Находим команду /givelicense
Ищем там
Code
if(strcmp(x_nr,"driving",true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givelicense driverslicense [playerid/PartOfName]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(playerid, sendername, sizeof(sendername));
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
format(string, sizeof(string), "* You've given a Drivers License to %s.",giveplayer);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* Instructor %s has given you a Drivers License.",sendername);
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
PlayerInfo[giveplayerid][pCarLic] = 1;
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " That player is Offline !");
return 1;
}
}
Добавлено (25.05.2010, 10:28)
---------------------------------------------
И после него добавляем
Code
if(strcmp(x_nr,"Gruz",true) == 0) // Здесь можете написать то что будете писать при выдаче лицензии
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "Используйте: /givelicense gruz [playerid/PartOfName]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(playerid, sendername, sizeof(sendername));
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
format(string, sizeof(string), "* Вам выдали лицензию на вождение грузовых автомобилей %s.",giveplayer);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* Инструктор %s выдал лицензию на вождение грузовых автомобилей.",sendername);
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
PlayerInfo[giveplayerid][pGruzLic] = 1;
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " That player is Offline !");
return 1;
}
}
Дальше находим команду /take
Ниже ищите
Code
if(strcmp(x_nr,"driving",true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, COLOR_WHITE, "Используйте: /take drivinglicense [playerid/PartOfName]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if (ProxDetectorS(8.0, playerid, giveplayerid))
{
format(string, sizeof(string), "* You have taken away %s's Drivers License.", giveplayer);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* Officer %s has taken away your Drivers License.", sendername);
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
PlayerInfo[giveplayerid][pCarLic] = 0;
}
else
{
SendClientMessage(playerid, COLOR_GREY, " That player is not near you !");
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " That player is Offline !");
return 1;
}
}
Там же ниже добавляйте
Code
if(strcmp(x_nr,"Gruz",true) == 0)// Здесь можете написать то что будете писать когда будете отбирать лицензию
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, COLOR_WHITE, "Используйте: /take gruz [playerid/PartOfName]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if (ProxDetectorS(8.0, playerid, giveplayerid))
{
format(string, sizeof(string), "* You have taken away %s's gruz License.", giveplayer);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* Officer %s has taken away your gruz License.", sendername);
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
PlayerInfo[giveplayerid][pGruzLic] = 0;
}
else
{
SendClientMessage(playerid, COLOR_GREY, " That player is not near you !");
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " That player is Offline !");
return 1;
}
}
Теперь пишем в поиске /licenses
Видим строчку
Code
if(PlayerInfo[playerid][pGunLic]) { text5 = "Passed"; } else { text5 = "Not Passed"; }
после неё вставляем
Code
if(PlayerInfo[playerid][pGruzLic]) { text6 = "Passed"; } else { text6 = "Not Passed"; }
И выше где
Пишите под ним
ниже где
Code
format(string, sizeof(string), "** Weapon License: %s.", text5);
SendClientMessage(playerid, COLOR_GREY, string);
пишите
Code
format(string, sizeof(string), "** Лицензия на грузовые авто: %s.", text6);
SendClientMessage(playerid, COLOR_GREY, string);
Потом идём ниже и видим команду /showlicenses
Опять же где
Добавляем
И после
Code
if(PlayerInfo[playerid][pGunLic]) { text5 = "Passed"; } else { text5 = "Not Passed"; }
Ниже пишем
Code
if(PlayerInfo[playerid][pGruzLic]) { text6 = "Passed"; } else { text6 = "Not Passed"; }
Ещё ниже после
Code
format(string, sizeof(string), "** Weapon License: %s.", text5);
SendClientMessage(giveplayerid, COLOR_GREY, string);
Пишем
Code
format(string, sizeof(string), "** Лицензия на грузовые авто: %s.", text6);
SendClientMessage(giveplayerid, COLOR_GREY, string);
____ Всё почти сделано. Осталось сделать только проверку на грузовые авто. Для этого создаём новый forward
Находим
Code
forward IsABoat(carid);
Ниже добавляем
Code
forward IsAGruz(carid);
В конце мода создаём такой паблик
Code
public IsAGruz(carid)
{
new gruz = GetVehicleModel(carid);
if(gruz==578||gruz==455||gruz==403||gruz==582||gruz==514||gruz==515||gruz==440||gruz==456||gruz==573||gruz==500||gruz==470||gruz==505||gr uz==495)
{
return 1;
}
return 0;
}
Здесь мои ID грузовых машин. Можете вставить свои. Только не порядковые ID, а которые используете в команде /veh, тоесть которые здесь http://wiki.sa-mp.com/wiki/Category:Vehicle
Ну вот и всё. Проверяйте. У меня всё получилось. Если есть вопросы пишите в теме.
Отдельное спасибо Scandal'у за созданную лицензию на мотоциклы. По его примеру была создана данная тема.
Добавлено (25.05.2010, 10:36)
---------------------------------------------
Отпишите если что не правильно