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

