switch(po61)
Дата: Четверг, 18.07.2013, 19:00 | Сообщение # 1
Любитель
Сообщений: 44
Статус: Offline
Суть проблемы: Ранее если игрок не имеющий нужных переменных с нужным уровнем (Пример PlayerInfo[playerid][pMember]) выкидывался из машины, но через некоторое время, после того как я добавил продажу автомобилей, убрал другие вещи проверка не работает на фракции, то-есть где-то в какой-то момент останавливается. Таких проблем очень много, и решить её можно наверное лишь долгим путем проб и ошибок. В общем, если игрок без прав/лицензии на воздух/воду то его выкидывает из транспорта где она нужна, а если игрок заходит в автомобиль но у него нету нужной переменной, то его должно было выкинуть но функция видимо до этого момента не доходит... Вот необходимые вырезки из мода:
Код
stock RemoveCar(playerid, vehicleid) { new string[128]; TelePos[playerid][0] = 0.0; TelePos[playerid][1] = 0.0; if(IsABoat(vehicleid)) { if(PlayerInfo[playerid][pBoatLic] != 0) return true; SendClientMessage(playerid, COLOR_WHITE, "У вас нет лицензии на управлении морским транспортом!"); Remove(playerid); return true; } if(IsAPlane(vehicleid)) { if(PlayerInfo[playerid][pFlyLic] != 0) return true; if(TakingLesson[playerid] == 1) return true; SendClientMessage(playerid, COLOR_GREY, "У вас нет лицензии пилота!"); Remove(playerid); return true; } if(CarLic(vehicleid)) { if(PlayerInfo[playerid][pCarLic] != 0) return true; if(TakingLesson[playerid] == 1) return true; SendClientMessage(playerid, COLOR_GREY, "У вас нет водительских прав!"); Remove(playerid); return true; } if(IsAnAmbulance(vehicleid)) { if(FormaFrac[playerid] == 9) return true; SendClientMessage(playerid, COLOR_GREY, "Транспорт преднадлежит Больнице"); Remove(playerid); return true; } if(vehicleid >= govcar[0] && vehicleid <= govcar[1]) { if(FormaFrac[playerid]==7) return true; SendClientMessage(playerid, COLOR_GREY, "Транспорт преднадлежит Правительству"); Remove(playerid); return true; } if(vehicleid >= mehanik[0] && vehicleid <= mehanik[1]) { if(PlayerInfo[playerid][pJob] != 2) { SendClientMessage(playerid, COLOR_GREY, "Вы не механик"); Remove(playerid); } if(arenda[playerid] != 1) return true; SPD(playerid,9128,DIALOG_STYLE_MSGBOX, " ", "<< Автопарк >>\nЦена аренды: 500\nВы хотите взять автомобиль на прокат?", "Да", "Нет"); return true; } if(vehicleid >= sapdcar[0] && vehicleid <= sapdcar[1]) { if(FormaFrac[playerid] == 1) return true; SendClientMessage(playerid, COLOR_GREY, "Транспорт преднадлежит LSPD"); Remove(playerid); return true; } if(vehicleid >= fbicar[0] && vehicleid <= fbicar[1]) { if(FormaFrac[playerid] == 2) return true; SendClientMessage(playerid, COLOR_GREY, "Транспорт преднадлежит ФБР"); Remove(playerid); return true; } if(vehicleid >= armycarsf[0] && vehicleid <= armycarsf[1]) { if(FormaFrac[playerid] == 3) SendClientMessage(playerid, COLOR_GREY, "Транспорт преднадлежит Net Samp Army"); Remove(playerid); return true; } if(vehicleid >= coronoscar[0] && vehicleid <= coronoscar[1]) { if(PlayerInfo[playerid][pMember] == 7) return true; SendClientMessage(playerid, COLOR_GREY, "Транспорт преднадлежит банде Padres Familia "); Remove(playerid); return true; } if(vehicleid >= vagoscar[0] && vehicleid <= vagoscar[1]) { if(PlayerInfo[playerid][pMember] == 8) return true; SendClientMessage(playerid, COLOR_GREY, "Транспорт преднадлежит Los Santos Vagos Gang"); Remove(playerid); return true; } if(GroveCar(vehicleid)) { if(PlayerInfo[playerid][pMember] == 5) return true; SendClientMessage(playerid, COLOR_GREY, "Транспорт преднадлежит Green Street"); Remove(playerid); return true; } if(vehicleid >= ballascar[0] && vehicleid <= ballascar[1]) { if(PlayerInfo[playerid][pMember] == 6) return true; SendClientMessage(playerid, COLOR_GREY, "Транспорт преднадлежит банде East Side"); Remove(playerid); return true; } if(vehicleid >= buycar[0] && vehicleid <= buycar[1]) { format(string,sizeof(string), "- Название автомобиля: \t %s\n- Стоимость автомобиля:\t{2aa2c8}%d {00BF00}$", VehicleNames[GetVehicleModel(vehicleid)-400], CostCar(vehicleid)); SPD(playerid,1113, DIALOG_STYLE_MSGBOX,"{ffcc00}Автосалон",string,"Купить","Отмена"); TogglePlayerControllable(playerid, 0); } return true; }
Код
if(newstate == PLAYER_STATE_DRIVER) { RemoveCar(playerid, GetPlayerVehicleID(playerid)); }
Этих данных должно хватить на наводку/исправление. Будьте добры помочь мне. Спасибо.
My manuals (pawno): http://cheat-master.ru/forum/117-154879-1 - покупка оружия
Голубь
Дата: Пятница, 19.07.2013, 20:07 | Сообщение # 2
Авторитет
Сообщений: 2137
Статус: Offline
Цитата (switch(po61) )
if(IsABoat(vehicleid)) { if(PlayerInfo[playerid][pBoatLic] != 0) return true; SendClientMessage(playerid, COLOR_WHITE, "У вас нет лицензии на управлении морским транспортом!"); Remove(playerid); return true; }
У тебя тут в любом случае будет retrun true; - вот чём проблема
двач https://vk.com/povargek
Сообщение отредактировал Голубь - Пятница, 19.07.2013, 20:09
switch(po61)
Дата: Среда, 24.07.2013, 07:56 | Сообщение # 3
Любитель
Сообщений: 44
Статус: Offline
Голубь , спасибо, понял ошибку... на стандартном RLS просто стоит две скобы, я решил их ретурном заменить, похоже там код и забивался, на первой проверке...
My manuals (pawno): http://cheat-master.ru/forum/117-154879-1 - покупка оружия