atom2008
Дата: Четверг, 16.04.2015, 08:41 | Сообщение # 1
Новичок
Сообщений: 24
Статус: Offline
Доброго времени суток, уважаемые форумчане и знатоки! Проблема такая: комманда /repair деньги с игрока снимает, механику прибавляет, но машину не чинит, как исправить? И по возможности подскажите, как запретить использовать второй раз комманду, если уже предложил ремонт? Т.е. во избежание ситуаций, когда мех дает ремонт за 100, а потом биндом за 1000. Комманда /repair:
Код
CMD:repair(playerid, params[]) { if(PlayerLogged[playerid] == 0) return true; if(PlayerInfo[playerid][pJob] == J_MECHANIC) { if(GetPlayerState(playerid) != 2) return SendClientMessage(playerid, COLOR_GREY, "Âû äîëæíû íàõîäèòüñÿ çà ðóëåì ýâàêóàòîðà!"); new carid = GetPlayerVehicleID(playerid); if(carid >= mechanic[0] && carid <= mechanic[1] || GetVehicleModel(carid) == 525) { if(sscanf(params, "ii", params[0], params[1])) return SendClientMessage(playerid, COLOR_WHITE, "Ââåäèòå: /repair [id èãðîêà] [öåíà]"); if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_GREY, TPLAYEROFFLINE); if(PlayerLogged[params[0]] == 0) return SendClientMessage(playerid, COLOR_GREY, TPLAYERNLOGGED); if(params[1] < 1 || params[1] > 1000) return SendClientMessage(playerid, COLOR_GREY, "Öåíà îò 1 äî 1000 äîëëàðîâ!"); if(!IsPlayerInRangeOfPlayer(8.0, playerid, params[0])) return SendClientMessage(playerid, COLOR_GREY, "Èãðîê ñëèøêîì äàëåêî!"); if(GetPlayerState(params[0]) != 2) return SendClientMessage(playerid, COLOR_GREY, "Èãðîê äîëæåí íàõîäèòüñÿ çà ðóëåì òðàíñïîðòà!"); if(params[0] == playerid) return SendClientMessage(playerid, COLOR_GREY, "Òû íå ìîæåøü ïî÷èíèòü ìàøèíó ñåáå!"); SendMes(playerid, COLOR_LIGHTBLUE, "Âû ïðåäëîæèëè %s'ó ïî÷èíèòü åãî òðàíñïîðò çà %i äîëëàðîâ", sendername(params[0]), params[1]); SendMes(params[0], COLOR_LIGHTBLUE, "%s ïðåëîæèë âàì ïî÷èíèòü âàø òðàíñïîðò çà %i äîëëàðîâ", PlayerInfo[playerid][pSendername], params[1]); format(totalstring, 200, "%s ïðåëîæèë âàì ïî÷èíèòü âàø òðàíñïîðò çà %i äîëëàðîâ\n\nÂû ñîãëàñíû?", PlayerInfo[playerid][pSendername], params[1]); ShowPlayerDialog(params[0], D_JOB+67, 0, "Àâòîìåõàíèê", totalstring, "Äà", "Íåò"); SetPVarInt(playerid, "MechVehID", GetPlayerVehicleID(params[0])); SetPVarInt(params[0], "PlayerMech", playerid); SetPVarInt(params[0], "MechanicPrice", params[1]); } else SendClientMessage(playerid, COLOR_GREY, "Âû äîëæíû íàõîäèòüñÿ â ýâàêóàòîðå!"); } else SendClientMessage(playerid, COLOR_GREY, YouCanNot); return true; }
Вместо крякозябров русский текст, не знаю почему копируется так Case D_JOB+67
Код
case D_JOB+67: { new playerd = GetPVarInt(playerid, "PlayerMech"), price = GetPVarInt(playerid, "MechanicPrice"); if(response) { if(GetPlayerState(playerid) == 2) { if(GetMoney(playerid) < price) { SendMes(playerd,COLOR_LIGHTBLUE, "У игрока %s недостаточно средств", PlayerInfo[playerid][pSendername]); DeletePVar(playerid, "PlayerMech"); DeletePVar(playerid, "MechanicPrice"); return true; } SendMes(playerid,COLOR_LIGHTBLUE, "Автомеханик %s отремонтировал ваше авто за %d", sendername(playerd),price); SendMes(playerd,COLOR_LIGHTBLUE, "Вы отремонтировали авто %s за %d", PlayerInfo[playerid][pSendername],price); SetVehicleHealth(GetPlayerVehicleID(playerid),1000.0); DeletePVar(playerid, "PlayerMech"); DeletePVar(playerid, "MechanicPrice"); GiveMoney(playerid,-price); GiveMoney(playerd,price); } else SendMes(playerid, COLOR_LIGHTBLUE, "Вы должны находиться в транспорте!"); } else { SendMes(playerd, COLOR_LIGHTBLUE, "%s отклонил предложение починить транспорт за %i долларов", PlayerInfo[playerid][pSendername], price); DeletePVar(playerid, "PlayerMech"); DeletePVar(playerid, "MechanicPrice"); } }
RaffCor
Дата: Четверг, 16.04.2015, 09:36 | Сообщение # 2
Бывалый
Сообщений: 396
Статус: Offline
Ремонт машины Код
RepairVehicle (GetPlayerVehicleID(playerid));
В конец /repair Код
SetPVarInt (playerid, "Repair", 1);
В начало /repair Код
if (GetPVarInt (playerid, "Repair") > 0) return SendClientMessage (playerid, -1, "Вы уже предложили ремонт");
В D_JOB+67 Код
DeletePVar (playerd, "Repair");
Вроде всё.
04.06.2016 - 1000 дней на Cheat Master 08.09.2018 - 5 лет на Чит Мастере 02.03.2019 - 2000 дней на Cheat Master
Сообщение отредактировал RaffCor - Четверг, 16.04.2015, 09:38
atom2008
Дата: Четверг, 16.04.2015, 09:59 | Сообщение # 3
Новичок
Сообщений: 24
Статус: Offline
Спасибо, работает!