Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Авторынок как на Diamond City - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Scr ][ GF ]
Авторынок как на Diamond City
Оценка: -----

#1
Пользователь онлайн   Romzes 

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Добрый день!
- Сейчас я Вам расскажу, как создать Авторынок как на Diamond City v.3.4
- Приступим.

Создаем саму сис-му:
enum vInfo                                                                      // Для массива
{
	vOwned,                                                                     // Занята машина - 1, свободна - 0
	vOwner[MAX_PLAYER_NAME],                                                    // Владелец
	vModel,                                                                     // ИД
	Float: vPosX,                                                               // Координата спауна на авторынке X
	Float: vPosY,                                                               // Координата спауна на авторынке Y
	Float: vPosZ,                                                               // Координата спауна на авторынке Z
	Float: vAngle,                                                              // Координата спауна на авторынке Angle
	vColorOne,                                                                  // Цвет 1
	vColorTwo,                                                                  // Цвет 2
	vLock,                                                                      // Замок
	vValue,                                                                     // Цена
	Float: vParkX,                                                              // Координата спауна парка X
	Float: vParkY,                                                              // Координата спауна парка Y
	Float: vParkZ,                                                              // Координата спауна парка Z
	Float: vParkAngle,                                                          // Координата спауна парка Angle
}
new CarsInfo[MAX_BUYABLE_CARS][vInfo];                                          // Массив
new BuyableCar[MAX_BUYABLE_CARS];                                               // Вместо идов каров
forward LoadBuyableCars();                                                      // Подгрузка каров из файла
new CarFinding[MAX_PLAYERS];                                                    // Для GPS поиска кара


Затем ко всем дефайнам добавляем:
#define MAX_BUYABLE_CARS 154                                                    // Кол-во машин


в public OnPlayerEnterVehicle
if(vehicleid <= MAX_BUYABLE_CARS)
    {
    	SetVehicleParamsForPlayer(vehicleid, playerid, 0, CarsInfo[vehicleid-1][vLock]);
	}
	SetVehicleParamsForPlayer(vehicleid, playerid, 0, LOCKEDVEH[vehicleid]);

Если у Вас нет этого паблика(public OnPlayerEnterVehicle), то создайте его, сейчас покажу как у Вас должно получиться.
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	if(vehicleid <= MAX_BUYABLE_CARS)
       {
    	SetVehicleParamsForPlayer(vehicleid, playerid, 0, CarsInfo[vehicleid-1][vLock]);
	}
         return 1;
}


в if(newstate == PLAYER_STATE_DRIVER) добавляем:
		new newcar = GetPlayerVehicleID(playerid);

и
if(newcar <= MAX_BUYABLE_CARS)
		{
		    if(CarsInfo[buycar][vOwned] == 0)
		    {
		        format(string, sizeof string, "<< Этот транспорт продаётся >>\n\nСтоимость: $%d", CarsInfo[buycar][vValue]);
		        ShowPlayerDialog(playerid,51,DIALOG_STYLE_MSGBOX,"Транспорт продаётся", string,"Купить","Отмена");
		    }
		}

в public CheckStatus() добавляем: это все идет в for(new i=0; i<GetMaxPlayers(); i++)
    new vehicle;

и
if(vehicle <= MAX_BUYABLE_CARS)
					{
						if(CarsInfo[vehicle-1][vLock] == 1) { format(String,sizeof(String),"~r~locked"); }
						else if(CarsInfo[vehicle-1][vLock] == 0) { format(String,sizeof(String),"~w~unlocked"); }
                        TextDrawSetString(LockStatus[i], String);
						TextDrawHideForPlayer(i, LockStatus[i]);
		 				TextDrawShowForPlayer(i, LockStatus[i]);
					}


в public OnPlayerLogin(playerid,password[]) добавляем:
if(PlayerInfo[playerid][pCarKey] != -1 && strcmp(sendername, CarsInfo[PlayerInfo[playerid][pCarKey]][vOwner], true) == 0) { }
	else { if(PlayerInfo[playerid][pCarKey] != -1) { PlayerInfo[playerid][pCarKey] = -1; } }



в public OnPropUpdate() добавляем:
idx = 0;
	while (idx < sizeof(CarsInfo))
	{
		new coordsstring[256];
		format(coordsstring, sizeof(coordsstring), "%d,%s,%d,%f,%f,%f,%f,%d,%d,%d,%d,%f,%f,%f,%f\n",
		CarsInfo[idx][vOwned],
		CarsInfo[idx][vOwner],
		CarsInfo[idx][vModel],
		CarsInfo[idx][vPosX],
		CarsInfo[idx][vPosY],
		CarsInfo[idx][vPosZ],
		CarsInfo[idx][vAngle],
		CarsInfo[idx][vColorOne],
		CarsInfo[idx][vColorTwo],
		CarsInfo[idx][vLock],
		CarsInfo[idx][vValue],
		CarsInfo[idx][vParkX],
		CarsInfo[idx][vParkY],
		CarsInfo[idx][vParkZ],
		CarsInfo[idx][vParkAngle]);
		if(idx == 0)
		{
			file2 = fopen("Diamond/cars.cfg", io_write);
		}
		else
		{
			file2 = fopen("Diamond/cars.cfg", io_append);
		}
		fwrite(file2, coordsstring);
		idx++;
		fclose(file2);
	}


Добавляем команды в public OnPlayerCommandText(playerid, cmdtext[])
if(strcmp(cmd, "/asellcar", true) == 0)
	{
	    if(PlayerInfo[playerid][pAdmin] != 5) { return 1; }
	    GetPlayerName(playerid, sendername, sizeof(sendername));
	    new vid;
	    vid = GetPlayerVehicleID(playerid);
        if(IsPlayerInAnyVehicle(playerid))
        {
		    CarsInfo[vid-1][vOwned] = 0;
		    CarsInfo[vid-1][vColorOne] = -1;
		    CarsInfo[vid-1][vColorTwo] = -1;
		    CarsInfo[vid-1][vParkX] = 0.0;
		    CarsInfo[vid-1][vParkY] = 0.0;
		    CarsInfo[vid-1][vParkZ] = 0.0;
		    CarsInfo[vid-1][vParkAngle] = 0.0;
		    CarsInfo[vid-1][vLock] = 0;
		    UnLockCar(vid);
		    strmid(CarsInfo[vid-1][vOwner], "-", 0, strlen("-"), 255);
		    TogglePlayerControllable(playerid, 1); RemovePlayerFromVehicle(playerid); SetTimerEx("CarHack", 3000, false, "i", playerid);
		    SendClientMessage(playerid, COLOR_LIGHTRED, "Вы только-что продали транспорт!");
		    DestroyVehicle(BuyableCar[vid-1]);
		    BuyableCar[vid-1] = CreateVehicle(CarsInfo[vid-1][vModel], CarsInfo[vid-1][vPosX], CarsInfo[vid-1][vPosY], CarsInfo[vid-1][vPosZ], CarsInfo[vid-1][vAngle], CarsInfo[vid-1][vColorOne], CarsInfo[vid-1][vColorTwo], -1);
			return 1;
        }
        else return SendClientMessage(playerid, COLOR_GREY, "Ошибка: Вы должны находится в транспорте.");
	}
if(strcmp(cmd, "/setprice", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				SendClientMessage(playerid, COLOR_GRAD2, "Diamond City: /setprice [price]");
				return 1;
			}
			new intid;
			intid = strval(tmp);
			if (PlayerInfo[playerid][pAdmin] >= 5)
			{
				format(string, sizeof(string), "Diamond City: Цена изменена на $%d.", intid);
				SendClientMessage(playerid, COLOR_GRAD1, string);
				CarsInfo[GetPlayerVehicleID(playerid)-1][vValue] = intid;
			}
			else
			{
				SendClientMessage(playerid, COLOR_GRAD1, "Недостаточно прав для использования команды.");
			}
		}
		return 1;
	}
if(strcmp(cmd, "/mv", true) == 0)
	{
	    GetPlayerName(playerid, playername, sizeof(playername));
	    if(PlayerInfo[playerid][pCarKey] != -1 && strcmp(playername, CarsInfo[PlayerInfo[playerid][pCarKey]][vOwner], true) == 0)
	    {
			ShowPlayerDialog(playerid,52,DIALOG_STYLE_LIST,"Управление транспортом"," - Открыть/Закрыть\n - Продать\n - Припарковать\n - Перекрасить\n - GPS (Узнать местонахождение)","Далее","Выход");
		}
		else
		{
			SendClientMessage(playerid,COLOR_GREY, "Ошибка: У вас нет машины.");
			return 1;
		}
	}


К команде /setname добавляем:
new carkey = PlayerInfo[giveplayerid][pCarKey];
                if (carkey != -1)
                {
                    strmid(CarsInfo[carkey][vOwner], newname, 0, strlen(newname), 255);
                    OnPropUpdate();
                }


Ко всем диалогам, добавляем:
else if(dialogid == 51)
	{
	    new vid = GetPlayerVehicleID(playerid);
		new buycar = vid-1;
	    if(response)
	    {
	        if(PlayerInfo[playerid][pCarKey] == -1)
	        {
	            if(CarsInfo[buycar][vOwned] == 0)
	            {
					if(GetSRVMoney(playerid) >= CarsInfo[buycar][vValue])
					{
						if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
						{
						    CarsInfo[buycar][vOwned] = 1;
						    PlayerInfo[playerid][pCarKey] = buycar;
						    new sendername[MAX_PLAYER_NAME];
						    GetPlayerName(playerid, sendername, sizeof(sendername));
						    strmid(CarsInfo[buycar][vOwner], sendername, 0, strlen(sendername), 255);
						    GiveMoney(playerid,-CarsInfo[buycar][vValue]);
						    TogglePlayerControllable(playerid, 1);
						    SendClientMessage(playerid, COLOR_LIGHTRED, "Вы только-что купили транспорт!");
						    SendClientMessage(playerid, COLOR_LAWNGREEN, "Подсказка: Используйте /mv для управления транспортом.");
						}
					}
					else
					{
						SendClientMessage(playerid, COLOR_GREY, "Ошибка: У вас нет столько денег.");
	        			TogglePlayerControllable(playerid, 1);
						RemovePlayerFromVehicle(playerid); SetTimerEx("CarHack", 3000, false, "i", playerid);
						return 1;
					}
	            }
	        }
	        else
			{
				SendClientMessage(playerid, COLOR_GREY, "Ошибка: У вас уже есть транспорт.");
	        	TogglePlayerControllable(playerid, 1); RemovePlayerFromVehicle(playerid); SetTimerEx("CarHack", 3000, false, "i", playerid);
	        	return 1;
			}
		}
	    else
	    {
	        TogglePlayerControllable(playerid, 1); RemovePlayerFromVehicle(playerid); SetTimerEx("CarHack", 3000, false, "i", playerid);
	        return 1;
	    }
	}
	else if(dialogid == 52)
	{
	    if(response)
	    {
	        if(listitem == 0)
			{
			    new sendername[MAX_PLAYER_NAME];
			    GetPlayerName(playerid, sendername, sizeof(sendername));
				if(PlayerInfo[playerid][pCarKey] != -1 && strcmp(sendername, CarsInfo[PlayerInfo[playerid][pCarKey]][vOwner], true) == 0)
				{
				    new Float: X, Float: Y, Float: Z;
				    GetVehiclePos(PlayerInfo[playerid][pCarKey]+1, X, Y, Z);
				    if(PlayerToPoint(10.0, playerid, X, Y, Z))
				    {
				        if(CarsInfo[PlayerInfo[playerid][pCarKey]][vLock] == 0)
						{
							CarsInfo[PlayerInfo[playerid][pCarKey]][vLock] = 1;
	                        GameTextForPlayer(playerid, "~r~locked", 5000, 6);
							PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
							LockCar(PlayerInfo[playerid][pCarKey]+1);
							return 1;
						}
						else if(CarsInfo[PlayerInfo[playerid][pCarKey]][vLock] == 1)
						{
							CarsInfo[PlayerInfo[playerid][pCarKey]][vLock] = 0;
							GameTextForPlayer(playerid, "~g~unlocked", 5000, 6);
							PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
							UnLockCar(PlayerInfo[playerid][pCarKey]+1);
							return 1;
						}
					}
				    else return SendClientMessage(playerid, COLOR_GREY, "Ошибка: Вы слишком далеко от машины.");
				}
			}
			else if(listitem == 1)
			{
	   			new sendername[MAX_PLAYER_NAME];
			    GetPlayerName(playerid, sendername, sizeof(sendername));
				if(PlayerInfo[playerid][pCarKey] != -1 && strcmp(sendername, CarsInfo[PlayerInfo[playerid][pCarKey]][vOwner], true) == 0)
		        {
		            if(IsPlayerInVehicle(playerid,PlayerInfo[playerid][pCarKey]+1))
		            {
		                GiveMoney(playerid, CarsInfo[PlayerInfo[playerid][pCarKey]][vValue]);
					    CarsInfo[PlayerInfo[playerid][pCarKey]][vOwned] = 0;
					    CarsInfo[PlayerInfo[playerid][pCarKey]][vColorOne] = -1;
					    CarsInfo[PlayerInfo[playerid][pCarKey]][vColorTwo] = -1;
					    CarsInfo[PlayerInfo[playerid][pCarKey]][vParkX] = 0.0;
					    CarsInfo[PlayerInfo[playerid][pCarKey]][vParkY] = 0.0;
					    CarsInfo[PlayerInfo[playerid][pCarKey]][vParkZ] = 0.0;
					    CarsInfo[PlayerInfo[playerid][pCarKey]][vParkAngle] = 0.0;
					    CarsInfo[PlayerInfo[playerid][pCarKey]][vLock] = 0;
					    UnLockCar(PlayerInfo[playerid][pCarKey]+1);
					    strmid(CarsInfo[PlayerInfo[playerid][pCarKey]][vOwner], "-", 0, strlen("-"), 255);
					    TogglePlayerControllable(playerid, 1); RemovePlayerFromVehicle(playerid); SetTimerEx("CarHack", 3000, false, "i", playerid);
					    SendClientMessage(playerid, COLOR_LIGHTRED, "Вы только-что продали свой транспорт!");
					    DestroyVehicle(BuyableCar[PlayerInfo[playerid][pCarKey]]);
					    BuyableCar[PlayerInfo[playerid][pCarKey]] = CreateVehicle(CarsInfo[PlayerInfo[playerid][pCarKey]][vModel], CarsInfo[PlayerInfo[playerid][pCarKey]][vPosX], CarsInfo[PlayerInfo[playerid][pCarKey]][vPosY], CarsInfo[PlayerInfo[playerid][pCarKey]][vPosZ], CarsInfo[PlayerInfo[playerid][pCarKey]][vAngle], CarsInfo[PlayerInfo[playerid][pCarKey]][vColorOne], CarsInfo[PlayerInfo[playerid][pCarKey]][vColorTwo], -1);
                        PlayerInfo[playerid][pCarKey] = -1;
						return 1;
		            }
		            else return SendClientMessage(playerid, COLOR_GREY, "Ошибка: Вы должны находится в своём транспорте.");
		        }
		        else
				{
					SendClientMessage(playerid, COLOR_GREY, "Ошибка: У вас уже есть транспорт.");
		        	TogglePlayerControllable(playerid, 1); RemovePlayerFromVehicle(playerid); SetTimerEx("CarHack", 3000, false, "i", playerid);
		        	return 1;
				}
			}
			else if(listitem == 2)
			{
			    new sendername[MAX_PLAYER_NAME];
			    GetPlayerName(playerid, sendername, sizeof(sendername));
				if(PlayerInfo[playerid][pCarKey] != -1 && strcmp(sendername, CarsInfo[PlayerInfo[playerid][pCarKey]][vOwner], true) == 0)
				{
					if(IsPlayerInVehicle(playerid,PlayerInfo[playerid][pCarKey]+1))
					{
					    new Float: X, Float: Y, Float: Z, Float: A;
					    GetVehiclePos(PlayerInfo[playerid][pCarKey]+1, X, Y, Z);
					    GetVehicleZAngle(PlayerInfo[playerid][pCarKey]+1, A);
					    CarsInfo[PlayerInfo[playerid][pCarKey]][vParkX] = X;
					    CarsInfo[PlayerInfo[playerid][pCarKey]][vParkY] = Y;
					    CarsInfo[PlayerInfo[playerid][pCarKey]][vParkZ] = Z;
					    CarsInfo[PlayerInfo[playerid][pCarKey]][vParkAngle] = A;
					    DestroyVehicle(BuyableCar[PlayerInfo[playerid][pCarKey]]);
					    BuyableCar[PlayerInfo[playerid][pCarKey]] = CreateVehicle(CarsInfo[PlayerInfo[playerid][pCarKey]][vModel], CarsInfo[PlayerInfo[playerid][pCarKey]][vParkX], CarsInfo[PlayerInfo[playerid][pCarKey]][vParkY], CarsInfo[PlayerInfo[playerid][pCarKey]][vParkZ], CarsInfo[PlayerInfo[playerid][pCarKey]][vParkAngle], CarsInfo[PlayerInfo[playerid][pCarKey]][vColorOne], CarsInfo[PlayerInfo[playerid][pCarKey]][vColorTwo], -1);
                        SendClientMessage(playerid, COLOR_LIGHTRED, "Diamond City: Вы успешно припарковали свой транспорт.");
                        EngineCar[PlayerInfo[playerid][pCarKey]+1] = 0;
					}
					else return SendClientMessage(playerid, COLOR_GREY, "Ошибка: Вы не в вашей машине.");
				}
			}
			else if(listitem == 3)
			{
			    new sendername[MAX_PLAYER_NAME];
			    GetPlayerName(playerid, sendername, sizeof(sendername));
				if(PlayerInfo[playerid][pCarKey] != -1 && strcmp(sendername, CarsInfo[PlayerInfo[playerid][pCarKey]][vOwner], true) == 0)
				{
					if(IsPlayerInVehicle(playerid,PlayerInfo[playerid][pCarKey]+1))
					{
                        ShowPlayerDialog(playerid,53,DIALOG_STYLE_LIST,"Перекраска"," - Цвет 1\n - Цвет 2","Выбрать","Отмена");
					}
					else return SendClientMessage(playerid, COLOR_GREY, "Ошибка: Вы не в вашей машине.");
				}
			}
			else if(listitem == 4)
			{
				new sendername[MAX_PLAYER_NAME];
			    GetPlayerName(playerid, sendername, sizeof(sendername));
				if(PlayerInfo[playerid][pCarKey] != -1 && strcmp(sendername, CarsInfo[PlayerInfo[playerid][pCarKey]][vOwner], true) == 0)
				{
				    if(CarFinding[playerid] == 0) return CarFinding[playerid] = 1;
				    else if(CarFinding[playerid] == 1) { CarFinding[playerid] = 0; DisablePlayerCheckpoint(playerid); return 1; }
				}
			}
	    }
	    else { return 1; }
	}
	else if(dialogid == 53)
	{
	    if(response)
	    {
	        if(listitem == 0) return ShowPlayerDialog(playerid,54,DIALOG_STYLE_INPUT,"Перекраска","Введите ID цвета","Выбрать","Отмена");
	        else if(listitem == 1) return ShowPlayerDialog(playerid,55,DIALOG_STYLE_INPUT,"Перекраска","Введите ID цвета","Выбрать","Отмена");
	    }
	    else return 1;
	}
	else if(dialogid == 54)
	{
	    if(response)
	    {
  			new color;
	        color = strval(inputtext);
	        if(!strlen(inputtext)) return ShowPlayerDialog(playerid,54,DIALOG_STYLE_INPUT,"Перекраска","Введите ID цвета","Выбрать","Отмена");
			format(string, sizeof(string), "Вы изменили цвет машины 1 на: %d.", color);
            SendClientMessage(playerid, COLOR_LIGHTRED, string);
            PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
            CarsInfo[PlayerInfo[playerid][pCarKey]][vColorOne] = color;
            ChangeVehicleColor(PlayerInfo[playerid][pCarKey]+1, CarsInfo[PlayerInfo[playerid][pCarKey]][vColorOne], CarsInfo[PlayerInfo[playerid][pCarKey]][vColorTwo]);
		}
	    else return 1;
	}
	else if(dialogid == 55)
	{
	    if(response)
	    {
  			new color;
	        color = strval(inputtext);
	        if(!strlen(inputtext)) return ShowPlayerDialog(playerid,55,DIALOG_STYLE_INPUT,"Перекраска","Введите ID цвета","Выбрать","Отмена");
			format(string, sizeof(string), "Вы изменили цвет машины 2 на: %d.", color);
            SendClientMessage(playerid, COLOR_LIGHTRED, string);
            PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
            CarsInfo[PlayerInfo[playerid][pCarKey]][vColorTwo] = color;
            ChangeVehicleColor(PlayerInfo[playerid][pCarKey]+1, CarsInfo[PlayerInfo[playerid][pCarKey]][vColorOne], CarsInfo[PlayerInfo[playerid][pCarKey]][vColorTwo]);
		}
	    else return 1;
	}
	else if(dialogid == 56) return 1;


Создаем: Если у Вас есть, добавляем без форварда и паблика
forward OnVehicleStreamIn(vehicleid, forplayerid);

и
public OnVehicleStreamIn(vehicleid, forplayerid)
{
    if(vehicleid <= MAX_BUYABLE_CARS)
    {
    	SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, CarsInfo[vehicleid-1][vLock]);
	}
	SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, LOCKEDVEH[vehicleid]);
	return 1;
}


в public OnVehicleSpawn(vehicleid) добавляем:
if(vehicleid <= MAX_BUYABLE_CARS)
    {
        if(CarsInfo[vehicleid-1][vOwned] == 1)
        {
        	ChangeVehicleColor(vehicleid, CarsInfo[vehicleid-1][vColorOne], CarsInfo[vehicleid-1][vColorTwo]);
		}
	}

в public OnGameModeInit добавляем:
for(new c = 0; c < sizeof(CarsInfo); c++)
	{
	    if((CarsInfo[c][vParkX] == 0.0 && CarsInfo[c][vParkY] == 0.0 && CarsInfo[c][vParkZ] == 0.0 && CarsInfo[c][vParkAngle] == 0.0) || CarsInfo[c][vOwned] == 0)
		{
			BuyableCar[c] = CreateVehicle(CarsInfo[c][vModel], CarsInfo[c][vPosX], CarsInfo[c][vPosY], CarsInfo[c][vPosZ], CarsInfo[c][vAngle], -1, -1, -1);
		}
		else if(CarsInfo[c][vParkX] != 0.0 && CarsInfo[c][vParkY] != 0.0 && CarsInfo[c][vParkZ] != 0.0 && CarsInfo[c][vParkAngle] != 0.0 && CarsInfo[c][vOwned] == 1)
		{
		    BuyableCar[c] = CreateVehicle(CarsInfo[c][vModel], CarsInfo[c][vParkX], CarsInfo[c][vParkY], CarsInfo[c][vParkZ], CarsInfo[c][vParkAngle], CarsInfo[c][vColorOne], CarsInfo[c][vColorTwo], -1);
		}
		if(CarsInfo[c][vOwned] == 0)
		{
		    CarsInfo[c][vLock] = 0;
		}
		LOCKEDVEH[c+1] = CarsInfo[c][vLock];
	}


Создаем public LoadBuyableCars()
public LoadBuyableCars()
{
	new arrCoords[15][64];
	new strFromFile2[256];
	new File: file = fopen("Diamond/cars.cfg", io_read);
	if (file)
	{
		new idx;
		while (idx < sizeof(CarsInfo))
		{
			fread(file, strFromFile2);
			split(strFromFile2, arrCoords, ',');
			CarsInfo[idx][vOwned] = strval(arrCoords[0]);
			strmid(CarsInfo[idx][vOwner], arrCoords[1], 0, strlen(arrCoords[1]), 255);
			CarsInfo[idx][vModel] = strval(arrCoords[2]);
			CarsInfo[idx][vPosX] = floatstr(arrCoords[3]);
			CarsInfo[idx][vPosY] = floatstr(arrCoords[4]);
			CarsInfo[idx][vPosZ] = floatstr(arrCoords[5]);
			CarsInfo[idx][vAngle] = floatstr(arrCoords[6]);
			CarsInfo[idx][vColorOne] = strval(arrCoords[7]);
			CarsInfo[idx][vColorTwo] = strval(arrCoords[8]);
			CarsInfo[idx][vLock] = strval(arrCoords[9]);
			CarsInfo[idx][vValue] = strval(arrCoords[10]);
			CarsInfo[idx][vParkX] = floatstr(arrCoords[11]);
			CarsInfo[idx][vParkY] = floatstr(arrCoords[12]);
			CarsInfo[idx][vParkZ] = floatstr(arrCoords[13]);
			CarsInfo[idx][vParkAngle] = floatstr(arrCoords[14]);
			printf("Машина: [%d] | Модель: [%d] | Стоимость: [$%d] | Владелец: [%s]", idx, CarsInfo[idx][vModel], CarsInfo[idx][vValue], CarsInfo[idx][vOwner]);
			idx++;
		}
		fclose(file);
	}
	return 1;
}


Если у Вас ошибки с SetVehicleParamsForPlayer, то добавте паблики:
new LOCKEDVEH[MAX_VEHICLES];                                                    // Замок машины
public LockCar(carid)
{
	LOCKEDVEH[carid] = 1;
	for(new i = 0; i < GetMaxPlayers(); i++)
	{
		if(IsPlayerConnected(i))
		{
			SetVehicleParamsForPlayer(carid,i,0,1);
		}
	}
}
public UnLockCar(carid)
{
    LOCKEDVEH[carid] = 0;
	for(new i = 0; i < GetMaxPlayers(); i++)
	{
		if(IsPlayerConnected(i))
		{
			SetVehicleParamsForPlayer(carid,i,0,0);
		}
	}
}


Создаем в enum pInfo:
pCarKey,


Добавляем в public OnPlayerConnect(playerid)
    PlayerInfo[playerid][pCarKey] = -1;


в public OneSecondTimer() Добавляем: именно в for(new i = 0; i < GetMaxPlayers(); i++)
if(CarFinding[i] == 1)
			{
			    GetVehiclePos(PlayerInfo[i][pCarKey]+1, vX, vY, vZ);
			    SetPlayerCheckpoint(i, vX, vY, vZ, 8.0);
			    CP[i] = 0;
			}


В public OnPlayerRegister(playerid, password[]) добавляем:
				dini_IntSet(string, "CarKey", PlayerInfo[playerid][pCarKey]);


В public OnPlayerSave(playerid) добавляем:
				dini_IntSet(string, "CarKey", PlayerInfo[playerid][pCarKey]);


В public OnPlayerLogin(playerid,password[]) добавляем:
        PlayerInfo[playerid][pCarKey] = dini_Int(string2,"CarKey");


И в public OnPlayerLogin(playerid,password[]) добавляем ко всем л:
			PlayerInfo[playerid][pCarKey] = -1;


Вот и все, автор урока: sKeLeT(Lucky_Drug)

Файл с тачками:
cars.cfg [15,53К]
2

#2
Пользователь офлайн   Zverek 

  • Пользователь
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
код я под себя подстроил но выдает все равно
GGM.pwn(4722) : error 017: undefined symbol "buycar"
GGM.pwn(4724) : error 017: undefined symbol "buycar"
GGM.pwn(8658) : error 021: symbol already defined: "strtok"
GGM.pwn(8673) : error 047: array sizes do not match, or destination array is too small
GGM.pwn(8766) : error 017: undefined symbol "string"
GGM.pwn(8827) : error 017: undefined symbol "SERVER_USER_FILE"
GGM.pwn(8833) : error 017: undefined symbol "pQuest"
GGM.pwn(8834) : error 017: undefined symbol "pQuest"
GGM.pwn(8837) : error 017: undefined symbol "pNmute"
GGM.pwn(8838) : error 017: undefined symbol "pAdminLevel"
GGM.pwn(8839) : error 017: undefined symbol "pChannel"
GGM.pwn(8840) : error 017: undefined symbol "string"
GGM.pwn(8990) : error 017: undefined symbol "sendername"
GGM.pwn(28529) : error 029: invalid expression, assumed zero
GGM.pwn(28529) : error 001: expected token: ";", but found "if"
GGM.pwn(28539) : error 017: undefined symbol "GetSRVMoney"
GGM.pwn(28548) : error 017: undefined symbol "GiveMoney"
GGM.pwn(28551) : error 017: undefined symbol "COLOR_LAWNGREEN"
GGM.pwn(28618) : error 017: undefined symbol "GiveMoney"
GGM.pwn(28663) : error 017: undefined symbol "EngineCar"
GGM.pwn(28663) : error 001: expected token: ";", but found "]"
GGM.pwn(28663) : error 029: invalid expression, assumed zero
GGM.pwn(28663) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


23 Errors.


Сообщение отредактировал Zverek: 19 Май 2012 - 20:22

1

#3
Пользователь офлайн   Alex-Krashan 

  • VIP
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Как сделать команду /addveh под этот аторынок?
я пытался сделать, но мне не удаётся сделать паблик сохранения, а если я сделал то и то после добавления кара сервер удаляется, помогите сделать команду ребят


сама команда для этого авторынка
[size=2] if(strcmp(cmd, "/addveh", true) == 0)[/size]
	{
	    if(IsPlayerConnected(playerid))
	    {
	        if(PlayerInfo[playerid][pAdmin] >= 5)
			{
				if(!IsPlayerInAnyVehicle(playerid))
				{
				    SendClientMessage(playerid,COLOR_GREY,"Тебе нужно быть в транспорте");
				    return 1;
				}
				tmp = strtok(cmdtext, idx);
				if(!strlen(tmp))
				{
					SendClientMessage(playerid, COLOR_GRAD2, "ИНФО: /addveh [carid] [color1] [color2] [цена]");
					return 1;
				}
				new car;
				car = strval(tmp);
				if(car < 400 || car > 611) { SendClientMessage(playerid, COLOR_GREY, "От 400 до 611!"); return 1; }
				tmp = strtok(cmdtext, idx);
				if(!strlen(tmp))
				{
					SendClientMessage(playerid, COLOR_GRAD2, "ИНФО: /addveh [carid] [color1] [color2] [цена]");
					return 1;
				}
				new color1;
				color1 = strval(tmp);
				if(color1 < 0 || color1 > 300) { SendClientMessage(playerid, COLOR_GREY, "Цвет лишь от 0 до 300!"); return 1; }
				tmp = strtok(cmdtext, idx);
				if(!strlen(tmp))
				{
					SendClientMessage(playerid, COLOR_GRAD2, "ИНФО: /addveh [carid] [color1] [color2] [цена]");
					return 1;
				}
				new color2;
				color2 = strval(tmp);
				if(color2 < 0 || color2 > 300) { SendClientMessage(playerid, COLOR_GREY, "Цвет от 0 до 300!"); return 1; }
	            tmp = strtok(cmdtext, idx);
				if(!strlen(tmp))
				{
					SendClientMessage(playerid, COLOR_GRAD2, "ИНФО: /addveh [carid] [color1] [color2] [цена]");
					return 1;
				}
				new Value;
				Value = strval(tmp);
				if(Value < 10 ) { SendClientMessage(playerid, COLOR_GREY, "Цена не меньше $10"); return 1; }
				new Float:X,Float:Y,Float:Z,Float:Q;
				GetVehiclePos(GetPlayerVehicleID(playerid), X,Y,Z);
				GetVehicleZAngle(GetPlayerVehicleID(playerid),Q);
				CarsInfo[CAR_PROD][vOwned]=0;
				CarsInfo[CAR_PROD][vModel]=car;
				CarsInfo[CAR_PROD][vPosX]=X;
				CarsInfo[CAR_PROD][vPosY]=Y;
				CarsInfo[CAR_PROD][vPosZ]=Z;
				CarsInfo[CAR_PROD][vAngle]=Q;
				CarsInfo[CAR_PROD][vColorOne]=color1;
				CarsInfo[CAR_PROD][vColorTwo]=color2;
				CarsInfo[CAR_PROD][vValue]=Value;
				strmid(CarsInfo[CAR_PROD][vOwner], "The State", 0, 9, 999);
				SaveBuyableCars();
				format(string, sizeof(string), "* Машина на продажу номер %d создана.", CAR_PROD);
				SendClientMessage(playerid, COLOR_GREY, string);
			}
			return 1;
		}
		return 1;[size=2]	[/size][size=2]}[/size]

Сообщение отредактировал Alex-Krashan: 22 Апрель 2013 - 12:36

0

#4
Пользователь офлайн   VetalOK 

  • Брат за брата
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Пойдёт Romzes, всё просто и гениально! +1 :happy:
0

#5
Пользователь офлайн   PETPO 

  • San Andreas is my LOVE
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Быдло код
-1

#6
Пользователь офлайн   DJSLOCKY 

  • Новичок
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
в моде Prime-RPG такая система есть
0

#7
Пользователь онлайн   Romzes 

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Просмотр сообщенияDJSLOCKY (06 Октябрь 2016 - 16:06) писал:

в моде Prime-RPG такая система есть


Мы очень рады. Только это не является поводом подымать очень старые темы!
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей