Дмитрий |
Дата: Вторник, 27.03.2012, 23:12 | Сообщение # 1 | Сообщить о нерабочей теме
|
Регистрация: | 03.12.2011
|
Страна: | Российская Федерация |
Репутация: |
14
|
Сообщений: | 1421 |
Награды: |
4
+
|
Статус: |
|
| Многие платят большую сумму денег чтобы им вырезали авто рынок с SAMP-BG 3.5 Вот вам урок как самому сделать себе такой авто рынок... И так начнем:
Мы идем в
Code new PlayerInfo[MAX_PLAYERS][pInfo];
И добовляем в нем 2 строчки
Code pCarKey, pCarKey2, new PlayerInfo[MAX_PLAYERS][pInfo];
Чтоб было у вас также как выше
Для начала мы создадим 4 форварда
Code forward LoadAuto();//згрузка авто forward SaveAuto();//сохранение авто forward TuneCar();//сохраниние тюнинга авто forward CarEnter(playerid,carid);
Далее мы создадим
Code new Autoinfo;
enum aInfo { aStats,//куплена или нет aModel,// модель Float:aAutoX,//корды Float:aAutoY, Float:aAutoZ, Float:aAutoAngle, aColor1,//цвета aColor2, aOwner[MAX_PLAYER_NAME],//владелец aPrice,//цена aKey,//уровень aLock,//штраф aPaintJob, };
new AutoInfo[MAX_VEHICLES][aInfo];
Следуюшиее делаем чтобы когда вы садитесь в машину которая на продажу высвечивалось диалоговое окно.
Code public CarEnter(playerid,carid) { if(AutoInfo[carid][aStats]==0) { new string[512]; format(string,sizeof(string),"Уровень: %d\nСтоимость: %d\nВведите 2 цвета через запятую в окошко\nПример: [2,6] без квадратных скобок и пробелов!\nЕсли не введете, то цвет останется таким, какой установлен сейчас", AutoInfo[carid][aKey], AutoInfo[carid][aPrice]); ShowPlayerDialog(playerid,920,DIALOG_STYLE_INPUT,"Авторынок",string,"Принять","Отмена"); } return 1; }
Cоздаем далее паблик
Code public OnVehicleSpawn(vehicleid) { if(AutoInfo[vehicleid][a0] != 0) { AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a0]); } if(AutoInfo[vehicleid][a1] != 0) { AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a1]); } if(AutoInfo[vehicleid][a2] != 0) { AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a2]); } if(AutoInfo[vehicleid][a3] != 0) { AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a3]); } if(AutoInfo[vehicleid][a4] != 0) { AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a4]); } if(AutoInfo[vehicleid][a5] != 0) { AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a5]); } if(AutoInfo[vehicleid][a6] != 0) { AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a6]); } if(AutoInfo[vehicleid][a7] != 0) { AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a7]); } if(AutoInfo[vehicleid][a8] != 0) { AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a8]); } if(AutoInfo[vehicleid][a9] != 0) { AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a9]); } if(AutoInfo[vehicleid][a10] != 0) { AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a10]); } if(AutoInfo[vehicleid][a11] != 0) { AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a11]); } if(AutoInfo[vehicleid][a12] != 0) { AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a12]); } if(AutoInfo[vehicleid][a13] != 0) { AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a13]); } if(AutoInfo[vehicleid][aPaintJob] != 0) { ChangeVehiclePaintjob(vehicleid,AutoInfo[vehicleid][aPaintJob]); } return 1; }
Создае три паблика сразу 1 паблик для загрузки авто 2 для сохранения кооординатов 3 для сохранения тюнинга на авто
Code public LoadAuto() { new arrCoords[26][64]; new strFromFile2[256]; new File: file = fopen("careta.cfg", io_read); if (file) { new idx; while (idx < 330) { fread(file, strFromFile2); split(strFromFile2, arrCoords, ','); AutoInfo[idx+1][aStats] = strval(arrCoords[0]); AutoInfo[idx+1][aModel] = strval(arrCoords[1]); AutoInfo[idx+1][aAutoX] = floatstr(arrCoords[2]); AutoInfo[idx+1][aAutoY] = floatstr(arrCoords[3]); AutoInfo[idx+1][aAutoZ] = floatstr(arrCoords[4]); AutoInfo[idx+1][aAutoAngle] = floatstr(arrCoords[5]); AutoInfo[idx+1][aColor1] = strval(arrCoords[6]); AutoInfo[idx+1][aColor2] = strval(arrCoords[7]); strmid(AutoInfo[idx+1][aOwner], arrCoords[8], 0, strlen(arrCoords[8]), 255); AutoInfo[idx+1][aPrice] = strval(arrCoords[9]); AutoInfo[idx+1][aKey] = strval(arrCoords[10]); AutoInfo[idx+1][a0] = strval(arrCoords[11]); AutoInfo[idx+1][a1] = strval(arrCoords[12]); AutoInfo[idx+1][a2] = strval(arrCoords[13]); AutoInfo[idx+1][a3] = strval(arrCoords[14]); AutoInfo[idx+1][a4] = strval(arrCoords[15]); AutoInfo[idx+1][a5] = strval(arrCoords[16]); AutoInfo[idx+1][a6] = strval(arrCoords[17]); AutoInfo[idx+1][a7] = strval(arrCoords[18]); AutoInfo[idx+1][a8] = strval(arrCoords[19]); AutoInfo[idx+1][a9] = strval(arrCoords[20]); AutoInfo[idx+1][a10] = strval(arrCoords[21]); AutoInfo[idx+1][a11] = strval(arrCoords[22]); AutoInfo[idx+1][a12] = strval(arrCoords[23]); AutoInfo[idx+1][a13] = strval(arrCoords[24]); AutoInfo[idx+1][aPaintJob] = strval(arrCoords[25]); idx++; } fclose(file); } return 1; }
public SaveAuto() { new idx; new File: file2; while (idx < 330) { new coordsstring[256]; format(coordsstring, sizeof(coordsstring), "%d,%d,%f,%f,%f,%f,%d,%d,%s,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n", AutoInfo[idx+1][aStats], AutoInfo[idx+1][aModel], AutoInfo[idx+1][aAutoX], AutoInfo[idx+1][aAutoY], AutoInfo[idx+1][aAutoZ], AutoInfo[idx+1][aAutoAngle], AutoInfo[idx+1][aColor1], AutoInfo[idx+1][aColor2], AutoInfo[idx+1][aOwner], AutoInfo[idx+1][aPrice], AutoInfo[idx+1][aKey], AutoInfo[idx+1][aLock], AutoInfo[idx+1][a0], AutoInfo[idx+1][a1], AutoInfo[idx+1][a2], AutoInfo[idx+1][a3], AutoInfo[idx+1][a4], AutoInfo[idx+1][a5], AutoInfo[idx+1][a6], AutoInfo[idx+1][a7], AutoInfo[idx+1][a8], AutoInfo[idx+1][a9], AutoInfo[idx+1][a10], AutoInfo[idx+1][a11], AutoInfo[idx+1][a12], AutoInfo[idx+1][a13], AutoInfo[idx+1][aPaintJob]); if(idx == 0) { file2 = fopen("careta.cfg", io_write); } else { file2 = fopen("careta.cfg", io_append); } fwrite(file2, coordsstring); idx++; fclose(file2); } return 1; }
public TuneCar() { for(new i = 0; i < 330; i++) { if(AutoInfo[i][a0] != 0) { AddVehicleComponent(i, AutoInfo[i][a0]); } if(AutoInfo[i][a1] != 0) { AddVehicleComponent(i, AutoInfo[i][a1]); } if(AutoInfo[i][a2] != 0) { AddVehicleComponent(i, AutoInfo[i][a2]); } if(AutoInfo[i][a3] != 0) { AddVehicleComponent(i, AutoInfo[i][a3]); } if(AutoInfo[i][a4] != 0) { AddVehicleComponent(i, AutoInfo[i][a4]); } if(AutoInfo[i][a5] != 0) { AddVehicleComponent(i, AutoInfo[i][a5]); } if(AutoInfo[i][a6] != 0) { AddVehicleComponent(i, AutoInfo[i][a6]); } if(AutoInfo[i][a7] != 0) { AddVehicleComponent(i, AutoInfo[i][a7]); } if(AutoInfo[i][a8] != 0) { AddVehicleComponent(i, AutoInfo[i][a8]); } if(AutoInfo[i][a9] != 0) { AddVehicleComponent(i, AutoInfo[i][a9]); } if(AutoInfo[i][a10] != 0) { AddVehicleComponent(i, AutoInfo[i][a10]); } if(AutoInfo[i][a11] != 0) { AddVehicleComponent(i, AutoInfo[i][a11]); } if(AutoInfo[i][a12] != 0) { AddVehicleComponent(i, AutoInfo[i][a12]); } if(AutoInfo[i][a13] != 0) { AddVehicleComponent(i, AutoInfo[i][a13]); } if(AutoInfo[i][aPaintJob] != 0) { ChangeVehiclePaintjob(i,AutoInfo[i][aPaintJob]); } } return 1; }
Далее в паблике OnGameModeInit() Вставляем вот это
Code for(new c=0;c<MAX_VEHICLES;c++) { Gas[c] = 100; AutoInfo[c][aStats] = -1; lockedcar[c] = 0; } LoadAuto();
for(new h = 0; h < 330; h++) { CreateVehicle(AutoInfo[h][aModel], AutoInfo[h][aAutoX], AutoInfo[h][aAutoY], AutoInfo[h][aAutoZ], AutoInfo[h][aAutoAngle], AutoInfo[h][aColor1], AutoInfo[h][aColor2],SPAWN_CARS); if(AutoInfo[h][aStats] == 0) { new strings[256]; format(strings,sizeof(strings),"Транспорт продается\nУровень: %d\nСтоимость: %d",AutoInfo[h][aKey],AutoInfo[h][aPrice]); nomer[h] = CreateDynamic3DTextLabel(strings, 0xBFF600FF, AutoInfo[h][aAutoX], AutoInfo[h][aAutoY], AutoInfo[h][aAutoZ], 15.0, INVALID_PLAYER_ID,h,0,-1,-1,-1,15.0); } else { new strings[256]; format(strings,sizeof(strings),"ID: %d\nВладелец: %s",h,AutoInfo[h][aOwner]); nomer[h] = CreateDynamic3DTextLabel(strings, 0xBFF600FF, AutoInfo[h][aAutoX], AutoInfo[h][aAutoY], AutoInfo[h][aAutoZ], 15.0, INVALID_PLAYER_ID,h,0,-1,-1,-1,15.0); } }
From Russia With Love!
|
|
|
|
Дмитрий |
Дата: Вторник, 27.03.2012, 23:12 | Сообщение # 2 | Сообщить о нерабочей теме
|
Регистрация: | 03.12.2011
|
Страна: | Российская Федерация |
Репутация: |
14
|
Сообщений: | 1421 |
Награды: |
4
+
|
Статус: |
|
| далее в public OnPlayerCommandText(playerid, cmdtext[])
Code if(strcmp(cmd, "/addveh", true) == 0)//для создание авто и игры { if(IsPlayerConnected(playerid)) { if(PlayerInfo[playerid][pAdmin] >= 5) { new vehicleid = GetPlayerVehicleID(playerid); 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 price; price = strval(tmp); if(price < 1 ) { SendClientMessage(playerid, COLOR_GREY, "Цена не меньше $1"); return 1; } new levl; levl = strval(tmp); if(levl < 2 ) { SendClientMessage(playerid, COLOR_GREY, "Уровень должен быть не меньше 2"); return 1; } new Float:X,Float:Y,Float:Z,Float:Q; GetVehiclePos(GetPlayerVehicleID(playerid), X,Y,Z); GetVehicleZAngle(GetPlayerVehicleID(playerid),Q); AutoInfo[vehicleid][aStats]=0; AutoInfo[vehicleid][aModel]=car; AutoInfo[vehicleid][aAutoX]=X; AutoInfo[vehicleid][aAutoY]=Y; AutoInfo[vehicleid][aAutoZ]=Z; AutoInfo[vehicleid][aAutoAngle]=Q; AutoInfo[vehicleid][aColor1]=color1; AutoInfo[vehicleid][aColor2]=color2; AutoInfo[vehicleid][aPrice]=price; AutoInfo[vehicleid][aKey]=levl; AutoInfo[vehicleid][a0]=0; AutoInfo[vehicleid][a1]=0; AutoInfo[vehicleid][a2]=0; AutoInfo[vehicleid][a3]=0; AutoInfo[vehicleid][a4]=0; AutoInfo[vehicleid][a5]=0; AutoInfo[vehicleid][a6]=0; AutoInfo[vehicleid][a7]=0; AutoInfo[vehicleid][a8]=0; AutoInfo[vehicleid][a9]=0; AutoInfo[vehicleid][a10]=0; AutoInfo[vehicleid][a11]=0; AutoInfo[vehicleid][a12]=0; AutoInfo[vehicleid][a13]=0; AutoInfo[vehicleid][aPaintJob]=0; strmid(AutoInfo[CAR_PROD][aOwner], "The State", 0, 9, 999); SaveAuto(); format(string, sizeof(string), "* Машина на продажу создана."); SendClientMessage(playerid, COLOR_GREY, string); } return 1; } return 1; }
и
Code if (strcmp(cmd, "/park", true) == 0)//для парка авто { if(IsPlayerConnected(playerid)) { if(PlayerInfo[playerid][pCarKey2] == 0 && PlayerInfo[playerid][pCarKey] == 0) { SendClientMessage(playerid,COLOR_GREY,"У вас нет тачки"); return 1; } if(IsPlayerInAnyVehicle(playerid)) { new cari = GetPlayerVehicleID(playerid); if(cari == PlayerInfo[playerid][pCarKey2] || cari == PlayerInfo[playerid][pCarKey]) { RemovePlayerFromVehicle(playerid); TogglePlayerControllable(playerid, 1); new Float:xcar, Float:ycar, Float:zcar, Float:ancar; new mods = GetVehicleModel(cari); GetVehicleZAngle(cari, ancar); GetVehiclePos(cari,xcar,ycar,zcar); DestroyVehicle(cari); CreateVehicle(mods,xcar,ycar,zcar,ancar,AutoInfo[cari][aColor1],AutoInfo[cari][aColor2],SPAWN_CARS); AutoInfo[cari][aAutoX] = xcar; AutoInfo[cari][aAutoY] = ycar; AutoInfo[cari][aAutoZ] = zcar; AutoInfo[cari][aAutoAngle] = ancar; SaveAuto(); if(AutoInfo[cari][a0] != 0) { AddVehicleComponent(cari, AutoInfo[cari][a0]); } if(AutoInfo[cari][a1] != 0) { AddVehicleComponent(cari, AutoInfo[cari][a1]); } if(AutoInfo[cari][a2] != 0) { AddVehicleComponent(cari, AutoInfo[cari][a2]); } if(AutoInfo[cari][a3] != 0) { AddVehicleComponent(cari, AutoInfo[cari][a3]); } if(AutoInfo[cari][a4] != 0) { AddVehicleComponent(cari, AutoInfo[cari][a4]); } if(AutoInfo[cari][a5] != 0) { AddVehicleComponent(cari, AutoInfo[cari][a5]); } if(AutoInfo[cari][a6] != 0) { AddVehicleComponent(cari, AutoInfo[cari][a6]); } if(AutoInfo[cari][a7] != 0) { AddVehicleComponent(cari, AutoInfo[cari][a7]); } if(AutoInfo[cari][a8] != 0) { AddVehicleComponent(cari, AutoInfo[cari][a8]); } if(AutoInfo[cari][a9] != 0) { AddVehicleComponent(cari, AutoInfo[cari][a9]); } if(AutoInfo[cari][a10] != 0) { AddVehicleComponent(cari, AutoInfo[cari][a10]); } if(AutoInfo[cari][a11] != 0) { AddVehicleComponent(cari, AutoInfo[cari][a11]); } if(AutoInfo[cari][a12] != 0) { AddVehicleComponent(cari, AutoInfo[cari][a12]); } if(AutoInfo[cari][a13] != 0) { AddVehicleComponent(cari, AutoInfo[cari][a13]); } if(AutoInfo[cari][aPaintJob] != 0) { ChangeVehiclePaintjob(cari,AutoInfo[cari][aPaintJob]); } SendClientMessage(playerid,COLOR_YELLOW,"Транспорт припаркован!"); } else { SendClientMessage(playerid,COLOR_GREY,"Вы не в своей купленной тачке"); } } else { SendClientMessage(playerid,COLOR_GREY,"Вы не в тачке"); } } return 1; }
From Russia With Love!
|
|
|
|