admin | Дата: Вторник, 25.01.2011, 14:50:40 | Сообщение # 1 |
Группа: Администраторы
Сообщений: 3869
| Для начала мы заведем новую переменную, для сохранения в аккаунт: в добавим Теперь создадим переменные для наших загружаемых машин: Code enum cInfo { cOwned, cModel }; new CarInfo[1][cInfo]; и создаем Далее перейдем к загрузке машины. Создадим функцию Code public 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 внутри файла пропишем 0|411 Это собственно наши переменные Теперь создадим массив с координатами машин: Code 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 - угол поворота) И загрузим машины в мод: Добавим в и сразу после этого Code 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); } Вставьте этот код перед всеми вашими машинами. Теперь мы разобрались с машинами. Добавим в Code OnPlayerStateChange(playerid, newstate, oldstate) , что бы выкидывало, когда игрок садиться после Code if(newstate == PLAYER_STATE_DRIVER) Code 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; } Ну и сделаем покупку машины Code 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); } } и продажу Code 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, для сохранения информации в файл Code 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); } Автор:HELKERN
zm-jail.ru Разработка сайта samp-pawno.ru
|
|
|
|