Доступ к архиву

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Урок по созданию авторынка!

Статус
В этой теме нельзя размещать новые ответы.

Lancer

Изучающий
Пользователь
Регистрация
11 Дек 2010
Сообщения
340
Лучшие ответы
0
Репутация
29
Добрый вечер. Сегодня я вам расскажу о том, как создать авторынок.

Для начала мы заведем новую переменную, для сохранения в аккаунт:
в enum pInfo
добавим
PHP:
pCarKey

В OnPlayerRegister
PHP:
format(var, 32, "CarKey=%d\n",PlayerInfo[playerid][pCarKey]);fwrite(hFile, var);
В OnPlayerLogin

PHP:
if( strcmp( key , "CarKey" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCarKey] = strval( val ); }
В OnPlayerConnect

PHP:
PlayerInfo[playerid][pCarKey] = 0;
Теперь создадим переменные для наших загружаемых машин:

PHP:
enum cInfo
{
cOwned,
cModel
};
new CarInfo[1][cInfo];
Далее перейдем к загрузке машины.

Создадим функцию

PHP:
LoadCars()
{
new arrCoords[2][64];
new strFromFile2[256];
new File: file = fopen("cars.cfg", io_read);
if (file)
{
new idx;
while (idx < sizeof(CarInfo))
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, '|');
CarInfo[idx][cOwned] = strval(arrCoords[0]);
CarInfo[idx][cModel] = strval(arrCoords[1]);
idx++;
}
fclose(file);
}
return 1;
}
Создадим файл cars.cfg и закинем его в папку scriptfiles
внутри файла пропишем

PHP:
0|411
Это собственно наши переменные

Теперь создадим массив с координатами машин:

PHP:
new Float:BuyCarsSpawn[1][4]={
{1111.3768,-1796.1268,16.5938,123.1231}
};
где 1111.3768,-1796.1268,16.5938,123.1231 - координаты x,y,z,f машины (f - угол поворота)

И загрузим машины в мод:

Добавим в OnGameModeInit

PHP:
LoadCars();
и сразу после этого

PHP:
for(new c = 0; c < sizeof(CarInfo); c++)
{
AddStaticVehicleEx(CarInfo[c][cModel], BuyCarsSpawn[c][0], BuyCarsSpawn[c][1], BuyCarsSpawn[c][2], BuyCarsSpawn[c][3], -1, -1, 600000);
}
Вставьте этот код перед всеми вашими машинами.

Теперь мы разобрались с машинами.

Добавим в OnPlayerStateChange(playerid, newstate, oldstate), что бы выкидывало, когда игрок садиться

после
PHP:
if(newstate == PLAYER_STATE_DRIVER)
PHP:
if(newcar < sizeof(CarInfo)&&newcar!=0)
   {
    if(newcar!=PlayerInfo[playerid][pCarKey]&&CarInfo[newcar-1][cOwned]==1)
    {
     SendClientMessage(playerid, COLOR_GREY,"Ýòî íå âàøà ìàøèíà");
        RemovePlayerFromVehicle(playerid);
    }
    else if(CarInfo[newcar-1][cOwned]==0)
    {
     SendClientMessage(playerid, COLOR_GREY,"Âû ìîæåòå êóïèòü ýòó ìàøèíó. Ââåäèòå /buycar");
        TogglePlayerControllable(playerid, 0);
    }
    return 1;
   }
Ну и сделаем покупку и продажу машину

PHP:
if(strcmp(cmd, "/buycar", true) == 0)
  {
   new newcar = GetPlayerVehicleID(playerid);
   if(newcar!=0&&newcar < sizeof(CarInfo)&&CarInfo[newcar-1][cOwned]==0)
   {
    CarInfo[newcar-1][cOwned]=1;
    PlayerInfo[playerid][pCarKey]=newcar;
    SendClientMessage(playerid, COLOR_WHITE, "Âû êóïèëè ýòó ìàøèíó");
    GivePlayerMoney(playerid, -20000);
    TogglePlayerControllable(playerid, 1);
   }
  }
if(strcmp(cmd, "/sellcar", true) == 0)
  {
   CarInfo[PlayerInfo[playerid][pCarKey]-1][cOwned]=0;
   PlayerInfo[playerid][pCarKey]=0;
   SendClientMessage(playerid, COLOR_WHITE, "Âû ïðîäàëè ýòó ìàøèíó");
   GivePlayerMoney(playerid, 20000);
   RemovePlayerFromVehicle(playerid);
   OnPropUpdate();
  }
и добавим в OnPropUpdate, для сохранения информации в файл

PHP:
idx = 0;
while (idx < sizeof(CarInfo))
{
new coordsstring[256];
format(coordsstring, sizeof(coordsstring), "%i|%i\n",CarInfo[idx][cOwned],CarInfo[idx][cModel]);
if(idx == 0) file2 = fopen("cars.cfg", io_write);
else file2 = fopen("cars.cfg", io_append);
fwrite(file2, coordsstring);
idx++;
fclose(file2);
Источник:bla-bla-bla.ucoz.ru
P.S. Чуток переделал xD
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу