25.02.2013, 13:15
gamemode samp-pro mysql
Не могу понять алгоритм исправления 2 багов!
1.Когда механик предлагает подчинить любую часть транспорта игроку пишет в чат Ошибка ...
2.Механик предлагает заправить транспорт в ответ игроку пишет
Механик Pavel_Mante заправляет ваш транспорт на 0 за $
не цену не литры не показывает...
После всей процедуры игрок заводит транспорт кнопкой N ему пишет в чат вы заправляетесь...
Функции в моде не правильные...
1.
2.
include - repair
include - refill
Алгоритм рабочей заправки
Не могу понять алгоритм исправления 2 багов!
1.Когда механик предлагает подчинить любую часть транспорта игроку пишет в чат Ошибка ...
2.Механик предлагает заправить транспорт в ответ игроку пишет
Механик Pavel_Mante заправляет ваш транспорт на 0 за $
не цену не литры не показывает...
После всей процедуры игрок заводит транспорт кнопкой N ему пишет в чат вы заправляетесь...
Функции в моде не правильные...
1.
Код:
case 76: { if(response) { new offer = RefillOffer[playerid]; if(offer != INVALID_PLAYER_ID && RefillOffer[offer] == playerid) { if(ProxDetectorS(5.0,playerid,offer, 1)) { if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && GetPlayerState(offer) == PLAYER_STATE_ONFOOT) { if(GetMoney(playerid) >= RefillPrice[playerid]) { new carid = GetPlayerVehicleID(playerid); if(!Filled[carid]) { ApplyAnimation(offer, "ROB_BANK", "CAT_Safe_Rob", 4.1, 0, 1, 1, 1, 0, 1); format(string,sizeof(string),"Механик %s заправляет ваш транспорт на %.0f за $%d",cPN(offer),RepairPrice[playerid]); SendClientMessage(playerid,COLOR_LIGHTBLUE,string); format(string,sizeof(string),"Вы заправляете транспорт игроку %s на %.0f за $%d",cPN(playerid),RepairPrice[playerid]); SendClientMessage(offer,COLOR_LIGHTBLUE,string); GiveMoney(playerid,-RepairPrice[playerid],"Repair-"); GiveMoney(offer,RepairPrice[playerid],"Repair+"); SetEngineStatus( carid, false ); SaveAccount(playerid); SaveAccount(offer); InJob[offer] = 1; Filled[carid] = 1; RefillCount[playerid] += Fuel[carid]; if(RefillCount[playerid] > 100.0) { RefillCount[playerid] = 100.0; } } else { CheckRefill(offer, 0); SendClientMessage(offer, COLOR_GREY, "Транспорт уже заправляется"); SendClientMessage(playerid, COLOR_GREY, "Транспорт уже заправляется"); } } else { CheckRefill(offer, 0); SendClientMessage(offer, COLOR_GREY, "Этот игрок отказался заправляться"); SendClientMessage(offer, COLOR_GREY, "У вас нехватает денег"); } } else { CheckRefill(offer, 0); SendClientMessage(offer, COLOR_GREY, "Вы должны находиться вне транспорта, а игрок в транспорте"); SendClientMessage(playerid, COLOR_GREY, "Вы должны находиться в транспорте, а механик вне транспорта"); } } else { CheckRefill(offer, 0); SendClientMessage(offer, COLOR_GREY, "Вы далеко от игрока"); SendClientMessage(playerid, COLOR_GREY, "Вы далеко от механика"); } } } return true;
Код:
case 75: { new rname[30]; new offer = RepairOffer[playerid]; if(response) { if(offer != INVALID_PLAYER_ID && RepairOffer[offer] == playerid) { new carid = GetPlayerVehicleID(playerid), Float:X, Float:Y, Float:Z; GetVehicleShiftPos( carid, 0, X, Y, Z, 3.0 ); if(IsPlayerInRangeOfPoint( offer, 2.0, X, Y, Z) ) { if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && GetPlayerState(offer) == PLAYER_STATE_ONFOOT) { if(GetMoney(playerid) >= RepairPrice[playerid]) { switch(RepairPart[playerid]) { case 1: { rname = "починка двигателя"; SetBonnetStatus( carid, true ); SetPlayerFaceToPoint(offer, X, Y); } case 2: { rname = "ремонт панели"; RepairReset[offer] = 15 * 20; } case 3: { rname = "ремонт дверей"; RepairReset[offer] = 15 * 20; } case 4: { rname = "ремонт фар"; RepairReset[offer] = 10 * 20; } case 5: { rname = "замена колес"; RepairReset[offer] = 20 * 20; } default: return false; } ApplyAnimation(offer, "ROB_BANK", "CAT_Safe_Rob", 4.1, 0, 1, 1, 1, 0, 1); format(string,sizeof(string),"Вы воспользовались услугами механика %s ( %s ) за $%d",cPN(offer), rname, RepairPrice[playerid]); SendClientMessage(playerid,COLOR_LIGHTBLUE,string); format(string,sizeof(string),"Вы оказываете услугу игроку %s ( %s ) за $%d",cPN(playerid), rname, RepairPrice[playerid]); SendClientMessage(offer,COLOR_LIGHTBLUE,string); GiveMoney(playerid,-RepairPrice[playerid],"Repair-"); GiveMoney(offer,RepairPrice[playerid],"Repair+"); SetEngineStatus( carid, false ); SaveAccount(playerid); SaveAccount(offer); InJob[offer] = 1; } else { SendClientMessage(playerid,COLOR_GREY,"У вас нехватает денег"); CheckRepair( offer ); } } else { SendClientMessage(playerid,COLOR_GREY,"Либо вы вне транспорта, либо механик в транспорте"); CheckRepair( offer ); } } else { SendClientMessage(playerid,COLOR_GREY,"Механик далеко от транспорта"); CheckRepair( offer ); } } else { SendClientMessage(playerid,COLOR_GREY,"Ошибка ..."); CheckRepair( offer ); } } else { SendClientMessage(playerid,COLOR_GREY,"Вы отказались ..."); CheckRepair( offer ); } return true;
Код:
COMMAND:repair(playerid, params[]) { if(PlayerInfo[playerid][pJob] == JOB_MECHANIC) { if(RefillOffer[playerid] == INVALID_PLAYER_ID && RepairOffer[playerid] == INVALID_PLAYER_ID) { if(PlayerInfo[playerid][pPasatizhi]) { if(!RepairReset[playerid]) { new id, part, price, string[150], Float:X, Float:Y[2], Float:Z, rname[30]; if(sscanf(params,"uii", id, part, price) || part < 1 || part > 5) { SendClientMessage(playerid,COLOR_ISPOLZUY,"Используйте: /repair [ID/Имя] [ID части транспорта] [Цена]"); SendClientMessage(playerid,COLOR_WHITE,"__________ Список доступных ID's __________"); SendClientMessage(playerid,COLOR_WHITE,"1. Двигатель"); SendClientMessage(playerid,COLOR_WHITE,"2. Панель"); SendClientMessage(playerid,COLOR_WHITE,"3. Двери"); SendClientMessage(playerid,COLOR_WHITE,"4. Фары"); SendClientMessage(playerid,COLOR_WHITE,"5. Колеса"); SendClientMessage(playerid,COLOR_WHITE,"____________________________________________"); return true; } switch(part) { case 1: rname = "починить двигатель"; case 2: rname = "отремонтировать панель"; case 3: rname = "отремонтировать двери"; case 4: rname = "отремонтировать фары"; case 5: rname = "заменить колеса"; } if(RepairOffer[id] == INVALID_PLAYER_ID) { if(GetPlayerState(id) == PLAYER_STATE_DRIVER) { if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) { if(price > 0) { new carid = GetPlayerVehicleID(id); GetVehicleModelInfo(GetVehicleModel(carid), VEHICLE_MODEL_INFO_SIZE, X, Y[1], Z); GetVehicleShiftPos( carid, 0, X, Y[0], Z, Y[1] / 2 ); if(IsPlayerInRangeOfPoint( playerid, 1.0, X, Y[0], Z ) ) { if(price > 200) return SendClientMessage(playerid,COLOR_GREY,"За свои услуги вы можете брать не более $200"); format(string,sizeof(string),"{FFFFFF}Механик {10F441}%s {FFFFFF}предлагает вам %s.\nСтоимость: {10F441}$%d",cPN(playerid), rname, price); if(!ShowPlayerDialogEx(id,75,0,"Починка",string,"Починить","Отмена")) { SendClientMessage(playerid, COLOR_GREY, "Недоступно в данный момент."); } else { format(string,sizeof(string),"Вы хотите %s транспорта игроку %s за $%d",cPN(id), rname, price); SendClientMessage(playerid,COLOR_LIGHTBLUE,string); RepairOffer[playerid] = id; RepairOffer[id] = playerid; RepairPrice[id] = price; RepairPart[id] = part; } } else SendClientMessage(playerid,COLOR_GREY,"Вы далеко от транспорта"); } else SendClientMessage(playerid,COLOR_GREY,"Цена должна быть от $1 до $200"); } else SendClientMessage(playerid,COLOR_GREY,"Вы должны быть вне транспорта."); } else SendClientMessage(playerid,COLOR_GREY,"Игрок должен сидеть в транспорте."); } else SendClientMessage(playerid,COLOR_GREY,"Этому игроку уже поступило предложение о починке."); } else SendClientMessage(playerid,COLOR_GREY,"Вы можете чинить,заправлять,устанавливать неон/сигнализцию только 1 раз в 30 секунд"); } else SendClientMessage(playerid,COLOR_GREY,"У вас нет гаечного ключа, чтобы чинить транспорт"); } else SendClientMessage(playerid,COLOR_GREY,"Вы уже кого-то чините/заправляете"); } return true; }
Код:
COMMAND:refill(playerid, params[]) { if(PlayerInfo[playerid][pJob] == JOB_MECHANIC) { if(PlayerInfo[playerid][pFuel]) { if(RefillOffer[playerid] == INVALID_PLAYER_ID && RepairOffer[playerid] == INVALID_PLAYER_ID) { if(!RepairReset[playerid]) { new id, price, count, string[150]; if(sscanf(params,"udd",id,price,count)) return SendClientMessage(playerid,COLOR_ISPOLZUY,"Используйте: /refill [id] [цена] [литры]"); if(ProxDetectorS(4.0,playerid,id)) { if(RepairOffer[id] == INVALID_PLAYER_ID) { if(GetPlayerState(id) == PLAYER_STATE_DRIVER) { new carid = GetPlayerVehicleID(id); if(!Filled[carid]) { if(!IsAVelik(carid)) { if(Fuel[carid] < 100.0) { if(Fuel[carid] + float(count) <= 100.0) { if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) { if(price > 0) { if(price > 200) return SendClientMessage(playerid,COLOR_GREY,"За свои услуги вы можете брать не более $200"); format(string,sizeof(string),"{FFFFFF}Механик {10F441}%s {FFFFFF}предлагает вам заправить ваш транспорт.\nЛитры: %dл\nСтоимость: {10F441}$%d",cPN(playerid), count, price); if(!ShowPlayerDialogEx(id,76,0,"Заправка",string,"Заправить","Отмена")) { SendClientMessage(playerid, COLOR_GREY, "Недоступно в данный момент."); } else { format(string,sizeof(string),"Вы хотите заправить транспорт игроку %s на %dл за $%d",cPN(id), count, price); SendClientMessage(playerid,COLOR_LIGHTBLUE,string); RefillOffer[playerid] = id; RefillOffer[id] = playerid; RefillPrice[id] = price; RefillCount[id] = float(count); } } else SendClientMessage(playerid,COLOR_GREY,"Не меньше $1"); } else SendClientMessage(playerid,COLOR_GREY,"Вы должны находиться вне транспорта"); } else { format(string,sizeof(string),"В бак столько не вместится! Максимум %.0fл", 100.0 - Fuel[carid]); SendClientMessage(playerid,COLOR_GREY,string); } } else SendClientMessage(playerid,COLOR_GREY,"В этом транспорте достаточно топлива"); } else SendClientMessage(playerid,COLOR_GREY,"Нельзя заправлять данный вид транспорта"); } else SendClientMessage(playerid,COLOR_GREY,"Транспортное средство уже заправляется"); } else SendClientMessage(playerid,COLOR_GREY,"Игрок должен сидеть в транспорте"); } else SendClientMessage(playerid,COLOR_GREY,"Этого игрока уже заправляют"); } else SendClientMessage(playerid,COLOR_GREY,"Вы далеко от игрока"); } else SendClientMessage(playerid,COLOR_GREY,"Вы можете чинить,заправлять,устанавливать неон/сигнализцию только 1 раз в 30 секунд"); } else SendClientMessage(playerid,COLOR_GREY,"Вы уже кого-то заправляете/чините"); } else SendClientMessage(playerid,COLOR_GREY,"У вас нет канистры чтобы заправить транспорт"); } return true; }
Quote:
COMMAND:fill(playerid, params[]) { if(GetPlayerState(playerid) == 2) { new carid = GetPlayerVehicleID(playerid); if(GetVehicleKindFuel(carid) != -1) { if(IsAtGasStation(playerid)) { new fuelid = GetGasStation(playerid); new bizid = FuelInfo[fuelid][fBizzID]; if(BizInfo[bizid][bProducts] >= 100) { if(!Filled[carid]) { if(Fuel[carid] < 100.0) { if(KindFuel[playerid] == -1) { if(GetVehicleKindFuel(carid) != 0) { GameTextForPlayer(playerid,"~w~љAм쑆 Џ…Њ ЏOЊ‡…BA –O„EЏ ~r~мABPEѓ…Џ’~w~~n~BAЋE–Y ЏPAмCЊOPЏмO–Y CPEѓCЏBY!",10000,4); } PlayerFuel[playerid] = fuelid; CountFuel[playerid] = 0.0; KindFuel[playerid] = 0; ShowFuelKeys[playerid] = false; new Float:fuel = 100.0 - Fuel[carid]; new string[15]; format(string, sizeof(string), "0/%.1f~g~L", fuel); SendClientMessage(playerid, COLOR_WHITE, "Используйте курсор чтобы выбрать тип топлива и его кол-во"); SendClientMessage(playerid, COLOR_WHITE, "Так же вы можете нажать на \"кол-во топлива\" для вызова доп. окна ввода"); PlayerTextDrawSetString(playerid,FuelCountDraw[playerid], string); PlayerTextDrawSetString(playerid,FuelCostDraw[playerid], "$0"); PlayerTextDrawSetString(playerid,KindFuelDraw[playerid], FuelName[0]); PlayerTextDrawTextSize(playerid,PlayerFuelBar[playerid], 233.0, 0.0); TextDrawShowForPlayer(playerid, FuelDrawBG[0]); TextDrawShowForPlayer(playerid, FuelDrawBG[1]); TextDrawShowForPlayer(playerid, FuelNextKey[0]); TextDrawShowForPlayer(playerid, FuelNextKey[1]); TextDrawShowForPlayer(playerid, FuelBackKey[0]); TextDrawShowForPlayer(playerid, FuelBackKey[1]); TextDrawShowForPlayer(playerid, FuelNextBG[0]); TextDrawShowForPlayer(playerid, FuelNextBG[1]); TextDrawShowForPlayer(playerid, FuelBarDraw); TextDrawShowForPlayer(playerid, FuelSelectDraw); TextDrawShowForPlayer(playerid, FuelCancelDraw); PlayerTextDrawShow(playerid, PlayerFuelBar[playerid]); PlayerTextDrawShow(playerid, FuelCostDraw[playerid]); PlayerTextDrawShow(playerid, FuelCountDraw[playerid]); PlayerTextDrawShow(playerid, KindFuelDraw[playerid]); SelectTextDraw(playerid, 0xAFAFAFFF); } } else SendClientMessage(playerid,COLOR_GREY,"Ваш транспорт полностью заправлен"); } else SendClientMessage(playerid,COLOR_GREY,"Ваш транспорт уже заправляется"); } else SendClientMessage(playerid,COLOR_GREY,"На этой заправке не осталось топлива"); } else SendClientMessage(playerid,COLOR_GREY,"Вы ни на 1-й из заправок..."); } else SendClientMessage(playerid,COLOR_GREY,"Топлива для вашего вида транспорта у нас нет"); } return true; } |