Vladimir_Kulkov 87 Опубликовано 19 января, 2017 Ладно , лень писать начало Что имеется в системе :Система бензина ,Закрытие/открытие дверей,Вкл/Выкл фарЗапуск/глушение двигателя.Небольшое описание :Имеется спидометр , говорю сразу,он немного не доработан.Это вещь не так важна Делал Я систему на new.pwn , использовал dc_cmd , для команд.Код:0. Ко всем define #define oc_cmd(%0) strcmp(cmd, %0, true) == 0 #define cp oc_cmd 1. Ко всем new: new Text:SpeedTD[MAX_PLAYERS][10]; // Спидометр new VehicleFuel[MAX_VEHICLES]; // Бензин new IsLocked[MAX_VEHICLES]; // Двери 1 new gCarLock[MAX_VEHICLES]; // Двери 2 new zavodis[MAX_VEHICLES]; // Движок new akavandal[MAX_VEHICLES]; // Фары new engine, lights, alarm, doors, bonnet, boot, objective; // ХЗ 2» В OnGameModeInit() : ManualVehicleEngineAndLights(); // Выключение двигателя | Если есть не вставляем for(new i = 1;i<MAX_VEHICLES;i++) { VehicleFuel[i] = 120; zavodis[i] = 0; } // Вставить до создания транспорта !!! SetTimer("SecTimer",1000,1); // Таймер 1 :3 SetTimer("FuelUpdate",40000,1); // Таймер 2 :3 3. Ко всем forward : forward SecTimer(playerid); forward FuelUpdate(); 4. Куда-то в конец мода : public FuelUpdate(){ for(new i = 1;i<MAX_VEHICLES;i++){ if(GetVehicleModel(i) && !IsABMX(i)){ GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective); if(engine == 1){ if(VehicleFuel[i] > 0) VehicleFuel[i]--; else SetVehicleParamsEx(i,0,lights,alarm,doors,bonnet,boot,objective);}}}} stock CreatePlayerTextDraws(playerid) { // Speedometr SpeedTD[playerid][0] = TextDrawCreate(627.882324, 334.000000, "_"); // usebox TextDrawLetterSize(SpeedTD[playerid][0], 0.000000, 9.470368); TextDrawTextSize(SpeedTD[playerid][0], 461.058807, 0.000000); TextDrawAlignment(SpeedTD[playerid][0], 1); TextDrawColor(SpeedTD[playerid][0], 0); TextDrawUseBox(SpeedTD[playerid][0], true); TextDrawBoxColor(SpeedTD[playerid][0], 102); TextDrawSetShadow(SpeedTD[playerid][0], 0); TextDrawSetOutline(SpeedTD[playerid][0], 0); TextDrawFont(SpeedTD[playerid][0], 0); SpeedTD[playerid][1] = TextDrawCreate(463.999969, 316.166778, "_");// Car Name TextDrawLetterSize(SpeedTD[playerid][1], 0.449999, 1.600000); TextDrawAlignment(SpeedTD[playerid][1], 1); TextDrawColor(SpeedTD[playerid][1], -1); TextDrawSetShadow(SpeedTD[playerid][1], 0); TextDrawSetOutline(SpeedTD[playerid][1], 1); TextDrawBackgroundColor(SpeedTD[playerid][1], 51); TextDrawFont(SpeedTD[playerid][1], 0); TextDrawSetProportional(SpeedTD[playerid][1], 1); SpeedTD[playerid][2] = TextDrawCreate(495.999908, 331.916656, "_"); // ~b~Speed : %d TextDrawLetterSize(SpeedTD[playerid][2], 0.449999, 1.600000); TextDrawAlignment(SpeedTD[playerid][2], 1); TextDrawColor(SpeedTD[playerid][2], -1); TextDrawSetShadow(SpeedTD[playerid][2], 0); TextDrawSetOutline(SpeedTD[playerid][2], 1); TextDrawBackgroundColor(SpeedTD[playerid][2], 51); TextDrawFont(SpeedTD[playerid][2], 1); TextDrawSetProportional(SpeedTD[playerid][2], 1); SpeedTD[playerid][3] = TextDrawCreate(492.235351, 362.833251, "_"); // Health : %d TextDrawLetterSize(SpeedTD[playerid][3], 0.449999, 1.600000); TextDrawAlignment(SpeedTD[playerid][3], 1); TextDrawColor(SpeedTD[playerid][3], -1); TextDrawSetShadow(SpeedTD[playerid][3], 0); TextDrawSetOutline(SpeedTD[playerid][3], 1); TextDrawBackgroundColor(SpeedTD[playerid][3], 51); TextDrawFont(SpeedTD[playerid][3], 1); TextDrawSetProportional(SpeedTD[playerid][3], 1); SpeedTD[playerid][4] = TextDrawCreate(473.882446, 398.999938, "_"); // IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII TextDrawLetterSize(SpeedTD[playerid][4], 0.449999, 1.600000); TextDrawAlignment(SpeedTD[playerid][4], 1); TextDrawColor(SpeedTD[playerid][4], -1); TextDrawSetShadow(SpeedTD[playerid][4], 0); TextDrawSetOutline(SpeedTD[playerid][4], 1); TextDrawBackgroundColor(SpeedTD[playerid][4], 51); TextDrawFont(SpeedTD[playerid][4], 1); TextDrawSetProportional(SpeedTD[playerid][4], 1); SpeedTD[playerid][5] = TextDrawCreate(493.176361, 379.166717, "_"); // ~r~Lock TextDrawLetterSize(SpeedTD[playerid][5], 0.449999, 1.600000); TextDrawAlignment(SpeedTD[playerid][5], 1); TextDrawColor(SpeedTD[playerid][5], -1); TextDrawSetShadow(SpeedTD[playerid][5], 0); TextDrawSetOutline(SpeedTD[playerid][5], 1); TextDrawBackgroundColor(SpeedTD[playerid][5], 51); TextDrawFont(SpeedTD[playerid][5], 1); TextDrawSetProportional(SpeedTD[playerid][5], 1); SpeedTD[playerid][6] = TextDrawCreate(539.294067, 379.750000, "_"); // ~r~Engine TextDrawLetterSize(SpeedTD[playerid][6], 0.449999, 1.600000); TextDrawAlignment(SpeedTD[playerid][6], 1); TextDrawColor(SpeedTD[playerid][6], -1); TextDrawSetShadow(SpeedTD[playerid][6], 0); TextDrawSetOutline(SpeedTD[playerid][6], 1); TextDrawBackgroundColor(SpeedTD[playerid][6], 51); TextDrawFont(SpeedTD[playerid][6], 1); TextDrawSetProportional(SpeedTD[playerid][6], 1); SpeedTD[playerid][7] = TextDrawCreate(464.470581, 332.500091, "_"); // LD_POOL:BALL TextDrawLetterSize(SpeedTD[playerid][7], 0.000000, 0.000000); TextDrawTextSize(SpeedTD[playerid][7], 15.058789, 15.166663); TextDrawAlignment(SpeedTD[playerid][7], 1); TextDrawColor(SpeedTD[playerid][7], -1); TextDrawSetShadow(SpeedTD[playerid][7], 0); TextDrawSetOutline(SpeedTD[playerid][7], 0); TextDrawFont(SpeedTD[playerid][7], 4); SpeedTD[playerid][8] = TextDrawCreate(509.647216, 346.500091, "_"); // Fuel : 60 TextDrawLetterSize(SpeedTD[playerid][8], 0.449999, 1.600000); TextDrawAlignment(SpeedTD[playerid][8], 1); TextDrawColor(SpeedTD[playerid][8], -1); TextDrawSetShadow(SpeedTD[playerid][8], 0); TextDrawSetOutline(SpeedTD[playerid][8], 1); TextDrawBackgroundColor(SpeedTD[playerid][8], 51); TextDrawFont(SpeedTD[playerid][8], 1); TextDrawSetProportional(SpeedTD[playerid][8], 1); SpeedTD[playerid][9] = TextDrawCreate(468.235412, 330.749969, "_"); // x TextDrawLetterSize(SpeedTD[playerid][9], 0.449999, 1.600000); TextDrawAlignment(SpeedTD[playerid][9], 1); TextDrawColor(SpeedTD[playerid][9], -1); TextDrawSetShadow(SpeedTD[playerid][9], 0); TextDrawSetOutline(SpeedTD[playerid][9], 1); TextDrawBackgroundColor(SpeedTD[playerid][9], 51); TextDrawFont(SpeedTD[playerid][9], 1); TextDrawSetProportional(SpeedTD[playerid][9], 1); } public SecTimer(playerid) // Наш таймер , который мы вверху добавили :3 { SpeedoUpdate(playerid);// Speedometr CheckEngine(playerid);// Engine } stock IsABMX(carid){new model = GetVehicleModel(carid);if(model == 481 || model == 510) return true;return false;} // Проверочка stock SpeedoUpdate(playerid) { if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid)) { if(!IsABMX(GetPlayerVehicleID(playerid))) { for(new i;i != 10;i++) TextDrawShowForPlayer(playerid,SpeedTD[playerid][i]); new TEXT[256]; new Float:health; new veh = GetPlayerVehicleID(playerid); new EngStat[256],DoorStat[256]; new Line[512]; new Speed = SpeedVehicle(playerid); // Вот эта часть не доделана switch(Speed){ case 0 : {Line = "~w~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII";} case 1..5 : {Line = "~b~I~w~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII";} case 6..10 : {Line = "~b~III~w~IIIIIIIIIIIIIIIIIIIIIIIIIIIII";} case 280..349 : {Line = "~b~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII";} case 350..999 : {Line = "~r~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII~n~~w~OVER SPEED";} } /////////////////////////////////// GetVehicleHealth(veh, health); if(zavodis[veh] == 0) EngStat = "~r~Engine"; else EngStat = "~g~Engine"; if(IsLocked[veh] == 1) DoorStat = "~r~Lock"; else DoorStat = "~g~Open"; format(TEXT,sizeof(TEXT),"usebox"); TextDrawSetString(SpeedTD[playerid][0],TEXT); //format(TEXT,sizeof(TEXT),"%s",VehName); //TextDrawSetString(SpeedTD[playerid][1],TEXT); format(TEXT,sizeof(TEXT),"~b~Speed : %d",Speed); TextDrawSetString(SpeedTD[playerid][2],TEXT); format(TEXT,sizeof(TEXT),"Health : %d",floatround(health)); TextDrawSetString(SpeedTD[playerid][3],TEXT); format(TEXT,sizeof(TEXT),"%s",Line); TextDrawSetString(SpeedTD[playerid][4],TEXT); format(TEXT,sizeof(TEXT),"%s",DoorStat); TextDrawSetString(SpeedTD[playerid][5],TEXT); format(TEXT,sizeof(TEXT),"%s",EngStat); TextDrawSetString(SpeedTD[playerid][6],TEXT); TextDrawSetString(SpeedTD[playerid][7],"LD_POOL:BALL"); format(TEXT,sizeof(TEXT),"Fuel : %d",VehicleFuel[veh]); TextDrawSetString(SpeedTD[playerid][8],TEXT); TextDrawSetString(SpeedTD[playerid][9],"x"); } } else { for(new i;i != 10;i++) TextDrawHideForPlayer(playerid,SpeedTD[playerid][i]); } return true; } stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z){ if(IsPlayerConnected(playerid)){ new Float:oldposx, Float:oldposy, Float:oldposz; new Float:tempposx, Float:tempposy, Float:tempposz; GetPlayerPos(playerid, oldposx, oldposy, oldposz); tempposx = (oldposx -x); tempposy = (oldposy -y); tempposz = (oldposz -z); if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))){return true;}}return false;} stock GetNearestVehicle(playerid){ for(new i=0; i<MAX_VEHICLES; i++){ if(GetVehicleModel(i)){ new Float:Xx,Float:Yy,Float:Zz; GetVehiclePos(i,Xx,Yy,Zz); if(PlayerToPoint(8.0, playerid, Xx, Yy, Zz))return i;}}return -1;} stock LockCar(carid){ foreach(Player, i){ if(IsPlayerConnected(i)){ SetVehicleParamsForPlayer(carid,i,0,1); gCarLock[carid] = 1;}}} UnLockCar(carid){ foreach(Player, i){ gCarLock[carid] = 0; GetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(carid,engine,lights,alarm,VEHICLE_PARAMS_OFF,bonnet,boot,objective); SetVehicleParamsForPlayer(carid,i,0,0);}} stock SpeedVehicle(playerid){ new Float:ST[4]; if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]); else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]); ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 120.3; return floatround(ST[3]);} stock CheckEngine(playerid) { new vehicleid = GetPlayerVehicleID(playerid); new Float:CarHealth; GetVehicleHealth(vehicleid,CarHealth); if(CarHealth < 350 && zavodis[vehicleid] == 1) { GameTextForPlayer(playerid, "~r~Engine break", 5000, 1); GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective); zavodis[vehicleid] = 0; } return true; } 5. В OnPlayerConnect : CreatePlayerTextDraws(playerid); 6. Теперь в OnPlayerKeyStateChange: if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { if(!IsABMX(GetPlayerVehicleID(playerid))) { // dc_cmd / zcmd //if(newkeys & KEY_FIRE) return cmd_l(playerid); //if(newkeys & KEY_ACTION) return cmd_e(playerid); // standart #define CMD(%0) OnPlayerCommandText(playerid,%0) if(newkeys & KEY_FIRE) return CMD("l"); if(newkeys & KEY_ACTION) return CMD("e"); #undef CMD } } 7. Теперь в OnVehicleStreamIn : SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, gCarLock[vehicleid]); 8. Команды :D (dc_cmd/zcmd) : ЕСЛИ У ВАС НЕТУ ИХ - ПРОПУСКАЙТЕ CMD:e(playerid) { if(!IsABMX(GetPlayerVehicleID(playerid))) { if(zavodis[GetPlayerVehicleID(playerid)] == 0) { if(VehicleFuel[GetPlayerVehicleID(playerid)] < 1) return GameTextForPlayer(playerid, "~r~no fuel", 5000, 1); new Float:hp; GetVehicleHealth(GetPlayerVehicleID(playerid), hp); if(hp < 350) return GameTextForPlayer(playerid, "~r~Engine break", 5000, 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_ON,lights,alarm,doors,bonnet,boot,objective); zavodis[GetPlayerVehicleID(playerid)] = 1; } } } else { 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,lights,alarm,doors,bonnet,boot,objective); zavodis[GetPlayerVehicleID(playerid)] = 0; } } } } return true; } CMD:lock(playerid){ new nearveh = GetNearestVehicle(playerid); new carid; carid = nearveh; new Float:cx,Float:cy,Float:cz; GetVehiclePos(carid, cx, cy, cz); if(PlayerToPoint(4.0, playerid, cx, cy, cz)){ if(IsLocked[carid] == 1){ SendClientMessage(playerid, COLOR_GRAD1, "?????? ???????!"); UnLockCar(carid); IsLocked[carid] = 0;} else if(IsLocked[carid] == 0){ SendClientMessage(playerid, COLOR_GRAD1, "?????? ???????!"); LockCar(carid); IsLocked[carid] = 1;}}return true;} CMD:l(playerid) { new carid = GetPlayerVehicleID(playerid); if(GetPlayerVehicleID(playerid) != INVALID_VEHICLE_ID) { if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { if(akavandal[carid] == 0) { new v = GetPlayerVehicleID(playerid), Float:hp; GetVehicleHealth(v, hp); if(hp >=350) { GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid) ,engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective); akavandal[carid] = 1; PlayerPlaySound(playerid, 4604, 0.0, 0.0, 0.0); } } else { GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective); akavandal[carid] = 0; PlayerPlaySound(playerid, 4604, 0.0, 0.0, 0.0); } return true; } } return true; } 9. Эх это в OnPlayerCommandText : if(cp("e")) { if(!IsABMX(GetPlayerVehicleID(playerid))) { if(zavodis[GetPlayerVehicleID(playerid)] == 0) { if(VehicleFuel[GetPlayerVehicleID(playerid)] < 1) return GameTextForPlayer(playerid, "~r~no fuel", 5000, 1); new Float:hp; GetVehicleHealth(GetPlayerVehicleID(playerid), hp); if(hp < 350) return GameTextForPlayer(playerid, "~r~Engine break", 5000, 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_ON,lights,alarm,doors,bonnet,boot,objective); zavodis[GetPlayerVehicleID(playerid)] = 1; } } } else { 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,lights,alarm,doors,bonnet,boot,objective); zavodis[GetPlayerVehicleID(playerid)] = 0; } } } } return true; } if(cp("l")) { new carid = GetPlayerVehicleID(playerid); if(GetPlayerVehicleID(playerid) != INVALID_VEHICLE_ID) { if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { if(akavandal[carid] == 0) { new v = GetPlayerVehicleID(playerid), Float:hp; GetVehicleHealth(v, hp); if(hp >=350) { GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid) ,engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective); akavandal[carid] = 1; PlayerPlaySound(playerid, 4604, 0.0, 0.0, 0.0); } } else { GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective); akavandal[carid] = 0; PlayerPlaySound(playerid, 4604, 0.0, 0.0, 0.0); } return true; } } return true; } Ну вот,кажется, и всё ! Если я что-то забыл добавить какую-то функцию пишите в коменты Автор : opzz 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
hteppl 214 Опубликовано 23 января, 2017 Скриншоты спидометра приложите. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Preskat 9 Опубликовано 23 января, 2017 Работы на 40минут! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Web 414 Опубликовано 23 января, 2017 @Preskat, и что? Почему бы не выложить, не все же могут подобное реализовать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vladimir_Kulkov 87 Опубликовано 23 января, 2017 ,откуда скопировал, не было скриншотов... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alonso 82 Опубликовано 23 января, 2017 @Vladimir_Kulkov, а самому сделать скриншот, из игры? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ShiGanKa 68 Опубликовано 23 января, 2017 SendClientMessage(playerid, COLOR_GRAD1, "?????? ???????!"); SendClientMessage(playerid, COLOR_GRAD1, "?????? ???????!"); Когда копируешь с форума(павно) меняй раскладку на русский, а то всегда будут эти знаки вопросов. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vladimir_Kulkov 87 Опубликовано 24 января, 2017 @ShiGanKa, На счёт вопросов знаю, забыл. ,у меня gta не установлена. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты