Advokat48
Умник
Всем доброго времени суток, похожих тем не видел. Итак, приступим.
1. Исправляем баг с бензином. т.е. когда счетчик бензина доходит до 0, машина глушится, и завести нельзя, при этом вы остаетесь сидеть в машине, вас не выкидывает. Для дальнейшего движения надо заправляться.
Сначала находим команду /en, и заменяем ее на
Теперь ищем вот это:
И заменяем на:
Ищем паблик(public OnPlayerUpdate(playerid)), и добавляем туда:
И в этом же паблике добавляем:
2. Как исправить баг с заправками. Т.е. можно было на рабочей/нерабочей заправке брать бесконечное количество канистр.
Ищем команду /get, и заменяем ее на:
Далее находим команду /fillcar. Для чего спросите вы. В стандартной не стоит проверки на количество бензина в баке, поэтому можно было заправляться пока руки не устанут набирать команды.
Вот она в оригинале:
И меняем ее на:
3. Как сделать так, что бы при заведенном двигателе тратился бензин, и во время движения с заглушенным двигателем бензин не тратился.
Находим
Ищем там:
И заменяем на:
Числа 0.02 можете заменить на свои. Это количество бензина, которое будет тратиться за 1 единицу времени, в моем случае 1 секунда.
4. Как сделать так, что бы каждый час снималась 1 звезда.
Идем в
В паблике ищем строки:
И прямо после них вставляем:
Вот и все.
P.S. это не проверял, но по идее должно работать.
5. Небольшая команда.
Итак все когда-либо играли на самп рп, и вот, там есть такая команда, для удаления себя из списка розыска. Вот написал данную команду. У меня 30 процентов, что команда сработает и ваш уровень розыска очистится, и 70 процентов, что вас засекут и припишут вам максимальный уровень розыска.
Начнем. Для начала ко всем new добавляем:
Далее ищем:
И вставляем туда:
Теперь в
Вставляем команду:
Вот и все, команда проверена. Можете поставить значение таймера на 5 секунд, и протестировать. Команда еще сырая(буду доделывать), но вполне уже готова к использованию.
Вот и все.
Все протестировано и работает.
Автор: Ryuu_Azuma(advokat48), т.е. Я.
Не отказываюсь от +
В случае ошибок пишите в эту тему, чем смогу, помогу. Сам только второй месяц в павно работаю.
P.S. Все 5 пунктов подойдут только для мода rls, для других модов, каждый пункт надо переделывать.
1. Исправляем баг с бензином. т.е. когда счетчик бензина доходит до 0, машина глушится, и завести нельзя, при этом вы остаетесь сидеть в машине, вас не выкидывает. Для дальнейшего движения надо заправляться.
Сначала находим команду /en, и заменяем ее на
PHP:
else if (strcmp("/en", cmdtext, true) == 0)
{
new caridi = GetPlayerVehicleID(playerid);
if(zavodis[playerid] == 0)
{
if (Fuell[caridi] <= 0) return SendClientMessage(playerid, COLOR_REDD, "Вызовите механика или заправьтесь с канистры!");
if(GetPlayerVehicleID(playerid) != INVALID_VEHICLE_ID)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(GetPlayerVehicleID(playerid) ,VEHICLE_PARAMS_ON,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
zavodis[playerid] = 1;
}
}
}
else if(zavodis[playerid] == 1)
{
if(GetPlayerVehicleID(playerid) != INVALID_VEHICLE_ID)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(GetPlayerVehicleID(playerid),VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
zavodis[playerid] = 0;
}
}
}
return 1;
}
PHP:
if(newstate == PLAYER_STATE_DRIVER)
{
if(Fuell[caridi] <= 0){ RemovePlayerFromVehicleRich(playerid);
SendClientMessage(playerid, COLOR_REDD, "::: В автомобиле нет бензина ::: ");
SendClientMessage(playerid, COLOR_GREEN, "{62AD50}Используйте телефон {FFFFFF}(( /call )) {62AD50}вызвать механика / таксиста");
PlayerInfo[playerid][pFuelcar] = 0;
}
if(GetVehicleModel(caridi) != 481 || GetVehicleModel(caridi) != 509 || GetVehicleModel(caridi) != 510)
{
if(zavodis[playerid] == 0)
{
SendClientMessage(playerid,COLOR_GREEN,"{26931c}Чтобы завести двигатель нажмите на клавишу {ffffff}'2'{26931c} или введите {ffffff}'/en'");
}
}
}
PHP:
if(newstate == PLAYER_STATE_DRIVER)
{
if(Fuell[caridi] <= 0){ SendClientMessage(playerid, COLOR_RED, "::: В автомобиле нет бензина ::: ");
SendClientMessage(playerid, COLOR_GREEN, "{62AD50}Используйте телефон {FFFFFF}(( /call )) {62AD50}вызвать механика / таксиста");
PlayerInfo[playerid][pFuelcar] = 0;
}
if(GetVehicleModel(caridi) != 481 || GetVehicleModel(caridi) != 509 || GetVehicleModel(caridi) != 510)
{
if(zavodis[playerid] == 0)
{
SendClientMessage(playerid,COLOR_GREEN,"{26931c}Чтобы завести двигатель нажмите на клавишу {ffffff}'2'{26931c} или введите {ffffff}'/en'");
}
}
}
PHP:
if(Fuell[caridi] == 0)
{
SetVehicleParamsEx(GetPlayerVehicleID(playerid) ,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
zavodis[playerid] = 0;
return true;
}
PHP:
new caridi = GetPlayerVehicleID(playerid);
Ищем команду /get, и заменяем ее на:
PHP:
if(strcmp(cmd,"/get",true)==0)
{
for(new b = 0; b < sizeof(SBizzInfo); b++)
{
if(SBizzInfo[b][sbProducts] <=0)
{
SendClientMessage(playerid,COLOR_GRAD1,"Заправка не работает!");
SBizzInfo[b][sbProducts] = 0;
return 1;
}
}
if(IsPlayerConnected(playerid))
{
new x_job[256];
x_job = strtok(cmdtext, idx);
if(!strlen(x_job)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /get fuel");
else if(strcmp(x_job,"fuel",true) == 0)
{
for(new b = 0; b < sizeof(SBizzInfo); b++)
{
if(PlayerToPoint(10.0, playerid, SBizzInfo[b][sbEntranceX], SBizzInfo[b][sbEntranceY], SBizzInfo[b][sbEntranceZ]))
{
if(PlayerInfo[playerid][pCash] < SBizzInfo[b][sbPriceProd]) return SendClientMessage(playerid, COLOR_GRAD1, "У вас не достаточно денег!");
SBizzInfo[b][sbTill] += SBizzInfo[b][sbPriceProd]/2;
PlayerInfo[playerid][pCash] -=SBizzInfo[b][sbPriceProd]/2;
SBizzInfo[b][sbProducts] -= 50;
format(string, sizeof(string), "Вы купили 20% литров бензина канистры за %d вирт",SBizzInfo[b][sbPriceProd]/2);
SendClientMessage(playerid, 0x6495EDFF, string);
PlayerInfo[playerid][pFuel] = 1;
PlayerInfo[playerid][pCash] -=SBizzInfo[b][sbPriceProd]/2;
return 1;
}
else
{
SendClientMessage(playerid,COLOR_GREY,"Вы не на заправке!");
return 1;
}
}
}
else { return 1; }
}//not connected
return 1;
}
Вот она в оригинале:
PHP:
else if(strcmp(cmd, "/fillcar", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pFuel] != 1) return SendClientMessage(playerid, COLOR_GREY, "У Вас нет канистры!");
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,COLOR_GREY,"Вы не в машине");
new vehicleid = GetPlayerVehicleID(playerid);
SendClientMessage(playerid, 0x6495EDFF, "Вы заправили Ваш автомобиль 20 литрами бензина");
Fuell[vehicleid] += 20;
PlayerInfo[playerid][pFuel] = 0;
PlayerInfo[playerid][pFuelcar] += 20;
}
return 1;
}
PHP:
else if(strcmp(cmd, "/fillcar", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new vehicleid = GetPlayerVehicleID(playerid);
if(PlayerInfo[playerid][pFuel] != 1) return SendClientMessage(playerid, COLOR_GREY, "У Вас нет канистры!");
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,COLOR_GREY,"Вы не в машине");
if(Fuell[vehicleid] >= 100) return SendClientMessage(playerid, COLOR_GREY, "Ваш бак полон!");//если бенза в баке больше либо равно 100, посылаем злобного багоюзера далего
SendClientMessage(playerid, 0x6495EDFF, "Вы заправили Ваш автомобиль 20 литрами бензина");
Fuell[vehicleid] += 20;
PlayerInfo[playerid][pFuel] = 0;
PlayerInfo[playerid][pFuelcar] += 20;
}
return 1;
}
Находим
PHP:
public UpdateSpeedometr(playerid)
PHP:
if(SpeedVehicle(playerid) !=0)
{
Fuell[vehicleid] -= 0.003;
if(GetPlayerVehicleID(playerid) == caridhouse[playerid])
{
PlayerInfo[playerid][pFuelcar] -= 0.003;
}
}
new carid = GetPlayerVehicleID(playerid);
if(SuperGt(carid))
{
if(SpeedVehicle(playerid) !=0)
{
Fuell[vehicleid] -= 0.005;
if(GetPlayerVehicleID(playerid) == caridhouse[playerid])
{
PlayerInfo[playerid][pFuelcar] -=0.005;
}
}
}
PHP:
new carid = GetPlayerVehicleID(playerid);
GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
if(zavodis[playerid] == 1 && SpeedVehicle(playerid) !=0)
{
Fuell[vehicleid] -= 0.02;
if(GetPlayerVehicleID(playerid) == caridhouse[playerid])
{
PlayerInfo[playerid][pFuelcar] -= 0.02;
}
}
if(zavodis[playerid] == 1)
{
Fuell[vehicleid] -= 0.02;
if(GetPlayerVehicleID(playerid) == caridhouse[playerid])
{
PlayerInfo[playerid][pFuelcar] -= 0.02;
}
}
if(SuperGt(carid))
{
if(SpeedVehicle(playerid) !=0)
{
Fuell[vehicleid] -= 0.02;
if(GetPlayerVehicleID(playerid) == caridhouse[playerid])
{
PlayerInfo[playerid][pFuelcar] -= 0.02;
}
}
}
4. Как сделать так, что бы каждый час снималась 1 звезда.
Идем в
PHP:
public PayDay()
PHP:
for(new i = 0; i < MAX_PLAYERS; i++)
{
new house = PlayerInfo[i][pPhousekey];
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pLevel] > 0)
{
new playername2[MAX_PLAYER_NAME];
GetPlayerName(i, playername2, sizeof(playername2));
new exp = PlayerInfo[i][pExp];
new nxtlevel = PlayerInfo[i][pLevel]+1;
new expamount = nxtlevel*levelexp;
if(exp == expamount)
{
PlayerInfo[i][pLevel] += 1;
PlayerInfo[i][pExp] = 0;
}
if(armmatbi < 0)
{
armmatbi = 0;
}
else if(armmatsf < 0)
{
armmatsf = 0;
}
PHP:
if(PlayerInfo[i][pZvezdi] >= 1)
{
WantedLevel[i] -= 1;
PlayerInfo[i][pZvezdi] -=1;
}
P.S. это не проверял, но по идее должно работать.
5. Небольшая команда.
Итак все когда-либо играли на самп рп, и вот, там есть такая команда, для удаления себя из списка розыска. Вот написал данную команду. У меня 30 процентов, что команда сработает и ваш уровень розыска очистится, и 70 процентов, что вас засекут и припишут вам максимальный уровень розыска.
Начнем. Для начала ко всем new добавляем:
PHP:
new wtimer[MAX_PLAYERS]; //объявляем наш будущий таймер
PHP:
public SetPlayerUnjail()
PHP:
for(new i = 0; i < MAX_PLAYERS; i++) //функция таймера
{
if(wtimer[i] >0) wtimer[i] --; //функция таймера
}
PHP:
public OnPlayerCommandText
PHP:
if(strcmp(cmd,"/wclear",true) == 0)
{
if(wtimer[playerid]>0) return SendClientMessage(playerid, COLOR_GREY,"Повторное использование команды возможно только через час!"); // проверка на то, что таймер не запущен
if(!ISAMAFIA(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Вам недоступна эта команда!");
if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 596 && GetVehicleModel(GetPlayerVehicleID(playerid)) != 427 && GetVehicleModel(GetPlayerVehicleID(playerid)) != 599) return SendClientMessage(playerid, COLOR_GREY, "Вы не в полицейской машине!");
new clearzvezd=random(101);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(clearzvezd <= 30)
{
if(WantedLevel[i] >= 1 && WantedLevel[i] <= 6)
{
WantedLevel[i] = 0;
PlayerInfo[i][pZvezdi] = 0;
SendClientMessage(playerid, COLOR_GREEN, "Вы удалили себя из списка розыскиваемых");
}
}
else
{
WantedLevel[i] = 6;
PlayerInfo[i][pZvezdi] = 6;
SendClientMessage(playerid, COLOR_REDD, "Вас засекли, вам присвоен максимальный уровень розыска!");
}
wtimer[playerid] = 3600; // после выполнения команды ставим значение таймера на 3600 секунд, т.е. 1 час.
return 1;
}
return 0;
}
Вот и все.
Все протестировано и работает.
Автор: Ryuu_Azuma(advokat48), т.е. Я.
Не отказываюсь от +
В случае ошибок пишите в эту тему, чем смогу, помогу. Сам только второй месяц в павно работаю.
P.S. Все 5 пунктов подойдут только для мода rls, для других модов, каждый пункт надо переделывать.
Последнее редактирование:
