• Страница 1 из 1
  • 1
Форум » PAWNO » Уроки Pawno » Авто-рынок (Авто-рынок)
Авто-рынок
Дмитрий Дата: Вторник, 27.03.2012, 23:12 | Сообщение # 1 | Сообщить о нерабочей теме


Аватар для Дмитрий

Многие платят большую сумму денег чтобы им вырезали авто рынок с 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 | Сообщить о нерабочей теме


Аватар для Дмитрий

далее в 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!
Форум » PAWNO » Уроки Pawno » Авто-рынок (Авто-рынок)
  • Страница 1 из 1
  • 1
Поиск: