Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define INVALID_HOUSE_ID INVALID_PLAYER_ID
- #define MAX_HOUSE_COUNT 737//Макс. к-во домов
- new gHouses[MAX_HOUSE_COUNT][HOUSE_DATA];
- public OnGameModeInit()
- {
- new Result:houses = sql_query(zConn, "SELECT * FROM `houses` ORDER BY `id`", QUERY_CACHED);
- if(sql_num_rows(houses) >= MAX_HOUSE_COUNT) print("Кол-во домов в базе больше максимального");
- else if(!sql_num_rows(houses)) print("Домов в базе не найдено");
- else
- {
- gHouseCount = sql_num_rows(houses);
- SetDynamicObjectMaterialText(meria[0], 0, "0", 80, "Quartz MS", 50, 1, 0xFF00FFFF, 0x00000000, 1);
- for(new i;i < gHouseCount;i++)
- {
- sql_fetch_row(houses,"|",zRes);
- sql_next_row(houses);
- sscanf(zRes,"p<|>iiiiia<i>[5]a<i>[9]a<i>[4]iiiiiffffffffis[24]a<i>[3]s[24]s[24]s[24]",gHouses[i][houseID],gHouses[i][houseClass],gHouses[i][houseDays],gHouses[i][housePrice],gHouses[i][houseHint],gHouses[i][houseImprove],gHouses[i][houseGun],gHouses[i][houseSkin],gHouses[i][houseSafeCode],gHouses[i][houseSafeMoney],gHouses[i][houseDrugs],gHouses[i][houseProducts],gHouses[i][houseClose],
- gHouses[i][houseX],gHouses[i][houseY],gHouses[i][houseZ],gHouses[i][houseR], gHouses[i][houseParkX],gHouses[i][houseParkY],gHouses[i][houseParkZ],gHouses[i][houseParkR],gHouses[i][houseOwnerID],gHouses[i][houseOwner],gHouses[i][houseHabitID],gHouseHabits[i][0],gHouseHabits[i][1],gHouseHabits[i][2]);
- gHouseArea[i] = CreateDynamicSphere(gHouses[i][houseX],gHouses[i][houseY],gHouses[i][houseZ],2.0,0,0,-1);
- if(gHouses[i][houseOwnerID] != 0)
- {
- if(gHouses[i][houseDays] == 0)
- {
- Dolzen++;
- new str1[100],text[100];
- format(str1, 100, "%d", Dolzen);
- SetDynamicObjectMaterialText(meria[0],0, str1, 80, "Quartz MS", 50, 1, 0xFF00FFFF, 0x00000000, 1);//Дома
- format(text, 100, "%s", gHouses[i][houseOwner]);
- strmid(DebtorInfo[Dolzen][0][aName],text,0,strlen(text),100);
- DebtorInfo[Dolzen][0][aid] = gHouses[i][houseID];
- DebtorInfo[Dolzen][0][hX] = gHouses[i][houseX];
- DebtorInfo[Dolzen][0][hY] = gHouses[i][houseY];
- DebtorInfo[Dolzen][0][hZ] = gHouses[i][houseZ];
- }
- gHousePickup[i] = CreateDynamicPickup(19522,1,gHouses[i][houseX],gHouses[i][houseY],gHouses[i][houseZ]);
- gHouseIcon[i] = CreateDynamicMapIcon(gHouses[i][houseX],gHouses[i][houseY],gHouses[i][houseZ],32,CWHITE);
- }
- else
- {
- gHousePickup[i] = CreateDynamicPickup(1273,1,gHouses[i][houseX],gHouses[i][houseY],gHouses[i][houseZ]);
- gHouseIcon[i] = CreateDynamicMapIcon(gHouses[i][houseX],gHouses[i][houseY],gHouses[i][houseZ],31,CWHITE);
- }
- new hintid = gHouses[i][houseHint];
- for(new k;k<5;k++) //Улучшения
- {
- if(!gHouses[i][houseImprove][k]) continue;
- switch(k)
- {
- case 1: CreateDynamicObject(2332,gHintSafe[hintid][0],gHintSafe[hintid][1],gHintSafe[hintid][2],gHintSafe[hintid][3],gHintSafe[hintid][4],gHintSafe[hintid][5],i+1); //Сейф
- case 2: CreateDynamicObject(2141,gHintFreez[hintid][0],gHintFreez[hintid][1],gHintFreez[hintid][2],gHintFreez[hintid][3],gHintFreez[hintid][4],gHintFreez[hintid][5],i+1);
- case 3:
- {
- CreateDynamicObject(2708,gHintStore[hintid][0],gHintStore[hintid][1],gHintStore[hintid][2],gHintStore[hintid][3],gHintStore[hintid][4],gHintStore[hintid][5],i+1);
- new cnt;
- for(new l;l<4;l++)
- {
- if(gHouses[i][houseSkin][l]) cnt++;
- }
- cnt--;
- if(cnt < 0 && gHouses[i][houseOwnerID]) printf("Возможны лаги с одеждой в доме %d",i+1);
- else if(cnt > 0)
- {
- CreateDynamicObject(2689,gHintDress[hintid][0][0],gHintDress[hintid][0][1],gHintDress[hintid][0][2],gHintDress[hintid][0][3],gHintDress[hintid][0][4],gHintDress[hintid][0][5],i+1);
- if(cnt > 1) CreateDynamicObject(2704,gHintDress[hintid][1][0],gHintDress[hintid][1][1],gHintDress[hintid][1][2],gHintDress[hintid][1][3],gHintDress[hintid][1][4],gHintDress[hintid][1][5],i+1);
- if(cnt > 2) CreateDynamicObject(2705,gHintDress[hintid][2][0],gHintDress[hintid][2][1],gHintDress[hintid][2][2],gHintDress[hintid][2][3],gHintDress[hintid][2][4],gHintDress[hintid][2][5],i+1);
- }
- for(new l;l<9;l++)
- {
- if(!gHouses[i][houseGun][l]) continue;
- gHouseGunObject[i][l] = CreateDynamicObject(gHintGunID[l],gHintGun[hintid][l][0],gHintGun[hintid][l][1],gHintGun[hintid][l][2],gHintGun[hintid][l][3],gHintGun[hintid][l][4],gHintGun[hintid][l][5],i+1);
- }
- }
- }
- }
- }
- sql_free_result(houses);
- printf("%d houses loaded", gHouseCount);
- }
- for(new houseid; houseid < MAX_HOUSE_COUNT; houseid ++)
- {
- if(!gHouses[houseid][houseOwnerID]) continue;
- new zStr[126];
- format(zStr, sizeof(zStr), "SELECT * FROM `accounts` WHERE `id` = %i AND `house` = %i", gHouses[houseid][houseOwnerID], houseid+1);
- new Result: howners = sql_query(zConn, zStr, QUERY_CACHED);
- if(!sql_num_rows(howners))
- {
- format(zStr,sizeof(zStr),"UPDATE `houses` SET `ownerid` = '0', `owner` = '', improve = '0|0|0|0|0', gun = '0|0|0|0|0|0|0|0|0', skin = '0|0|0|0',safecode='0', safemoney='0', drugs='0', products='0',inhabit2id = '0',inhabit3id = '0',inhabit4id = '0',inhabit2='',inhabit3='',inhabit4='' WHERE `id` = '%d'",houseid+1);
- sql_query(zConn, zStr, QUERY_THREADED);
- gHouses[houseid][houseOwnerID] = 0;
- strdel(gHouses[houseid][houseOwner],0,24);
- strdel(gHouseHabits[houseid][0],0,24);
- strdel(gHouseHabits[houseid][1],0,24);
- strdel(gHouseHabits[houseid][2],0,24);
- gHouses[houseid][houseHabitID][0] = 0;
- gHouses[houseid][houseHabitID][1] = 0;
- gHouses[houseid][houseHabitID][2] = 0;
- for(new i;i<9;i++)
- {
- if(i < 5)
- {
- gHouses[houseid][houseImprove][i] = 0;
- if(i < 4) gHouses[houseid][houseSkin][i] = 0;
- }
- gHouses[houseid][houseGun][i] = 0;
- }
- gHouses[houseid][houseSafeCode] = 0;
- gHouses[houseid][houseSafeMoney] = 0;
- gHouses[houseid][houseDrugs] = 0;
- gHouses[houseid][houseProducts] = 0;
- DestroyDynamicPickup(gHousePickup[houseid]);
- gHousePickup[houseid] = CreateDynamicPickup(19522,1,gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ]);
- DestroyDynamicMapIcon(gHouseIcon[houseid]);
- gHouseIcon[houseid] = CreateDynamicMapIcon(gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ],31,CWHITE);
- }
- sql_free_result(howners);
- }
- }
- public OnPlayerSpawn(playerid)
- {
- if(pData[playerid][pHouse] && pData[playerid][pSpawn] <= 1)
- {
- SetPlayerVirtualWorld(playerid,pData[playerid][pHouse]);
- new interior, Float:r;
- new houseid = pData[playerid][pHouse] - 1;
- new hint = gHouses[houseid][houseHint];
- if(pData[playerid][pFraction])
- {
- if(gHouses[houseid][houseImprove][3] && gHouses[houseid][houseOwnerID] == pData[playerid][pMysqlID]) SetPlayerSkin(playerid,pData[playerid][pFractionSkin]);
- else SetPlayerSkin(playerid,pData[playerid][pFractionSkin]);
- }
- else SetPlayerSkin(playerid,pData[playerid][pSkin]);
- pTemp[playerid][pSelectedHouseID] = houseid;
- x = gHints[hint][hintSX];
- y = gHints[hint][hintSY];
- z = gHints[hint][hintSZ];
- r = gHints[hint][hintSR];
- interior = gHints[hint][hintInterior];
- SetPlayerInterior(playerid,interior);
- SetPlayerPos(playerid,x,y,z);
- SetPlayerFacingAngle(playerid,r);
- pTemp[playerid][pIsInHouse] = true;
- if(pData[playerid][pFraction]) SetPlayerColor(playerid,gFractionColor[pData[playerid][pFraction] - 1]);
- }
- }
- CMD:exit(playerid, params[])
- {
- if(!pTemp[playerid][pLogined]) return 1;
- if(pTemp[playerid][pIsInHouse])
- {
- if(logExit) SendClientMessage(playerid,CWHITE,"Check 1");
- new houseid = pTemp[playerid][pSelectedHouseID];
- new hint = gHouses[houseid][houseHint];
- new Float:x, Float:y, Float:z;
- x = gHints[hint][hintX];
- y = gHints[hint][hintY];
- z = gHints[hint][hintZ];
- if(IsPlayerInRangeOfPoint(playerid,2.0,x,y,z))
- {
- if(logExit) SendClientMessage(playerid,CWHITE,"Check 2");
- SetPlayerInterior(playerid,0);
- SetPlayerVirtualWorld(playerid,0);
- pTemp[playerid][pJustTP] = true;
- SetPlayerPos(playerid,gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ]);
- SetPlayerFacingAngle(playerid,gHouses[houseid][houseR]);
- pTemp[playerid][pIsInHouse] = false;
- }
- }
- return true;
- }
- CMD:home(playerid, params[])
- {
- if(!pTemp[playerid][pLogined]) return 1;
- if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CGRAY,"У Вас нет дома");
- new classname[20];
- new houseid = pData[playerid][pHouse] - 1;
- switch(gHouses[houseid][houseClass])
- {
- case 0:classname = "Эконом";
- case 1:classname = "Cредний";
- case 2:classname = "Элитный";
- case 3:classname = "Особняк";
- default: classname = "Неизвестно";
- }
- new cnt;
- for(new i;i<3;i++)
- {
- if(gHouses[houseid][houseHabitID][i]) cnt++;
- }
- new carname[24];
- if(!pData[playerid][pCar]) strcat(carname,"Нет");
- else
- {
- for(new i;i<MAX_VEHICLES;i++)
- {
- if(gCars[i][carOwnerid] == gHouses[houseid][houseOwnerID])
- {
- strcat(carname,gTransport[gCars[i][carModelid]][trName]);
- break;
- }
- }
- }
- new rent = floatround(gHouses[houseid][housePrice] * 0.005);
- if(gHouses[houseid][houseImprove][4]) rent = rent / 2;
- new status[24];
- if(gHouses[houseid][houseClose]) strcat(status,"{"#cRED"}Дом закрыт");
- else strcat(status,"{"#cGREEN"}Дом открыт");
- new improve[64];
- if(gHouses[houseid][houseImprove][0]) strcat(improve," - Автом. двери\n");
- if(gHouses[houseid][houseImprove][1]) strcat(improve," - Сейф\n");
- if(gHouses[houseid][houseImprove][2]) strcat(improve," - Холодильник\n");
- if(gHouses[houseid][houseImprove][3]) strcat(improve," - Шкаф\n");
- if(gHouses[houseid][houseImprove][4]) strcat(improve," - Субсидии");
- new Float:x, Float:y, Float:z, pos[15];
- GetPlayerPos(playerid,x,y,z);
- if(x < 0) strcat(pos,"San Fiero");
- else if(y > 100.0) strcat(pos,"Las Venturas");
- else strcat(pos,"Los Santos");
- new string[560];
- format(string, 1000, "%s"W"Класс дома: \t\t\t%s",string,classname);
- format(string, 1000, "%s\n"W"Номер дома: \t\t\t%d",string,houseid+1);
- format(string, 1000, "%s\n"W"Город / область: \t\t%s",string,pos);
- format(string, 1000, "%s\n"W"Район: \t\t\t%s",string,GetPlayerZone(houseid, 1));
- format(string, 1000, "%s\n"W"Стоимость: \t\t\t%d$",string,gHouses[houseid][housePrice]);
- format(string, 1000, "%s\n"W"Дом оплачен на: \t\t%d/30 дней",string,gHouses[houseid][houseDays]);
- format(string, 1000, "%s\n"W"Количество комнат: \t\t%d",string,gHouses[houseid][houseClass]);
- format(string, 1000, "%s\n"W"Количество жильцов: \t%d",string,cnt);
- format(string, 1000, "%s\n"W"Модель домашнего авто: \t{3399FF}%s",string,carname);
- format(string, 1000, "%s\n"W"Квартплата: \t\t\t%d$ в день",string,rent);
- format(string, 1000, "%s\n{EFFF0D}Уровень улучшений: \n%s",string,improve);
- format(string, 1000, "%s\n"W"Статус: \t\t\t%s",string,status);
- format(string, 1000, "%s\n\n{7fff00}Для открытия панели управления вашим домом",string);
- format(string, 1000, "%s\n{7fff00}нажмите кнопку \"Изменить\"",string);
- ShowPlayerDialog(playerid,dHouseStat,DIALOG_STYLE_MSGBOX,"{CC9900}Информация о доме",string,"Изменить", "Отмена");
- return true;
- }
- CMD:liveout(playerid, params[])//выселиться из дома
- {
- if(!pTemp[playerid][pLogined]) return 1;
- if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CGRAY,"У вас нет дома");
- new houseid = pData[playerid][pHouse]-1;
- new slot = -1;
- for(new i;i<3;i++)
- {
- if(gHouses[houseid][houseHabitID][i] == pData[playerid][pMysqlID])
- {
- slot = i; break;
- }
- }
- if(slot == -1) return SendClientMessage(playerid,CGRAY,"Вы не можете выселиться, т.к. являетесь владельцем дома");
- gHouses[houseid][houseHabitID][slot] = 0;
- strdel(gHouseHabits[houseid][slot],0,24);
- new query[128];
- format(query,sizeof(query),"UPDATE `houses` SET `inhabit%did`='0', `inhabit%d`='' WHERE `id`='%d'",slot+2,slot+2,houseid+1);
- sql_query(zConn, query);
- pData[playerid][pHouse] = 0;
- UpdatePlayerData(playerid,"house",0);
- SendClientMessage(playerid,CINFO,"Вы выселились из дома");
- return true;
- }
- CMD:residents(playerid, params[])
- {
- if(!pTemp[playerid][pLogined]) return 1;
- if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CGRAY,"У Вас нет дома");
- new houseid = pData[playerid][pHouse]-1;
- if(gHouses[houseid][houseOwnerID] != pData[playerid][pMysqlID]) return SendClientMessage(playerid,CGRAY,"Вы не являетесь владельцем дома в котором живете");
- if(!gHouses[houseid][houseClass]) return SendClientMessage(playerid,CGRAY,"В вашем доме нет места жильцов");
- new mes[128];
- for(new i;i<3;i++)
- {
- if(gHouses[houseid][houseHabitID][i]) format(mes,sizeof(mes),"%s{"#cWHITE"}Комната[%d]: {"#cBLUE"}%s\n",mes,i+1,gHouseHabits[houseid][i]);
- }
- if(!strlen(mes)) format(mes,sizeof(mes),"{"#cGRAY"}Жильцов нет");
- ShowPlayerDialog(playerid,dMes,0,"Жильцы",mes,"OK","");
- return true;
- }
- CMD:evict(playerid, params[])
- {
- if(!pTemp[playerid][pLogined]) return 1;
- if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CGRAY,"У Вас нет дома");
- new houseid = pData[playerid][pHouse]-1;
- if(gHouses[houseid][houseOwnerID] != pData[playerid][pMysqlID]) return SendClientMessage(playerid,CGRAY,"Вы не являетесь владельцем дома в котором живете");
- if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, CYELLOW, "• [Подсказка]:{"#cWHITE"} /evict [ID комнаты]");
- new slot;
- if(slot < 0 || slot > 2) return SendClientMessage(playerid,CGRAY,"Неверный ID комнаты. Используйте /residents");
- if(!gHouses[houseid][houseHabitID][slot]) return SendClientMessage(playerid,CGRAY,"В этой комнате никто не живет");
- new query[128];
- format(query,sizeof(query),"UPDATE `houses` SET `inhabit%did`='0', `inhabit%d`='' WHERE `id`='%d'",slot+2,slot+2,houseid+1);
- sql_query(zConn, query);
- format(query,sizeof(query),"UPDATE `accounts` SET `house`='0' WHERE `id`='%d'",gHouses[houseid][houseHabitID][slot]);
- sql_query(zConn, query);
- new actplayerid = INVALID_PLAYER_ID;
- foreach(new i:Player)
- {
- if(IsPlayerConnected(i) && pData[i][pMysqlID] == gHouses[houseid][houseHabitID][slot])
- {
- actplayerid = i;
- break;
- }
- }
- if(actplayerid != INVALID_PLAYER_ID)
- {
- pData[actplayerid][pHouse] = 0;
- SendClientMessage(actplayerid,CINFO,"Вас Выселили из дома");
- }
- new mes[128];
- format(mes,sizeof(mes),"%s {"#cINFO"} был Выселен из вашего дома",gHouseHabits[houseid][slot]);
- SendClientMessage(playerid,CWHITE,mes);
- gHouses[houseid][houseHabitID][slot] = 0;
- strdel(gHouseHabits[houseid][slot],0,24);
- return true;
- }
- CMD:store(playerid, params[])
- {
- if(!pTemp[playerid][pLogined]) return 1;
- if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CWHITE,"У Вас нет дома");
- new houseid = pData[playerid][pHouse] - 1;
- if(gHouses[houseid][houseOwnerID] != pData[playerid][pMysqlID]) return SendClientMessage(playerid,CGRAY,"Только владелец дома может пользоваться шкафом");
- if(!gHouses[houseid][houseImprove][3]) return SendClientMessage(playerid,CGRAY,"У Вас нет шкафа");
- new hintid = gHouses[houseid][houseHint];
- if(!IsPlayerInDynamicArea(playerid,gHintStoreArea[hintid])) return SendClientMessage(playerid,CGRAY,"Вы должны быть возле шкафа");
- ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду\n"D"4. "W"Выкинуть одежду","Далее","Отмена");
- return true;
- }
- CMD:safe(playerid, params[])
- {
- if(!pTemp[playerid][pLogined]) return 1;
- if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CWHITE,"У Вас нет дома");
- new houseid = pData[playerid][pHouse] - 1;
- new hintid = gHouses[houseid][houseHint];
- if(!gHouses[houseid][houseImprove][1]) return SendClientMessage(playerid,CGRAY,"У Вас нет сейфа");
- if(!IsPlayerInDynamicArea(playerid,gHintSafeArea[hintid])) return SendClientMessage(playerid,CGRAY,"Вы должны быть возле сейфа");
- ShowPlayerDialog(playerid,dSafeCode,1,"Сейф","{"#cWHITE"}Введите код от сейфа:","ОК","Отмена");
- return true;
- }
- CMD:freez(playerid, params[])
- {
- if(!pTemp[playerid][pLogined]) return 1;
- if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CWHITE,"У Вас нет дома");
- new houseid = pData[playerid][pHouse] - 1;
- new hintid = gHouses[houseid][houseHint];
- if(!gHouses[houseid][houseImprove][2]) return SendClientMessage(playerid,CGRAY,"У Вас нет холодильника");
- if(!IsPlayerInDynamicArea(playerid,gHintFreezArea[hintid])) return SendClientMessage(playerid,CGRAY,"Вы должны быть возле холодильника");
- ShowPlayerDialog(playerid,dFreez,2,"Холодильник","Хот-дог ({"#cRED"}-10 прод. {"#cGREEN"}+20 сытость{"#cWHITE"})\nБургер ({"#cRED"}-15 прод. {"#cGREEN"}+30 сытость{"#cWHITE"})\nПицца ({"#cRED"}-30 прод. {"#cGREEN"}+60 сытость{"#cWHITE"})","Съесть","Отмена");
- return true;
- }
- CMD:getclass(playerid, params[])
- {
- if(!pTemp[playerid][pLogined]) return 1;
- if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,CGRAY,"Не в машине");
- new vehicleid = GetPlayerVehicleID(playerid);
- new model = GetVehicleModel(vehicleid);
- new modelid = model-400;
- new mes[128],classname[24];
- GetCarClassName(gTransport[modelid][trClass],classname);
- format(mes,sizeof(mes),"Класс %s",classname);
- SendClientMessage(playerid,CWHITE,mes);
- return true;
- }
- CMD:leave(playerid, params[])
- {
- //...
- new houseid = pData[playerid][pHouse]-1;
- if(!(houseid+1) || ((houseid+1) > 0 && pData[playerid][pMysqlID] != gHouses[houseid][houseOwnerID])) SetPlayerSkin(playerid,pData[playerid][pSkin]);
- else if(!gHouses[houseid][houseImprove][3]) SetPlayerSkin(playerid,pData[playerid][pSkin]);
- else
- {
- for(new x; x < 3; x ++)
- {
- if(!gHouses[houseid][houseSkin]) continue;
- pData[playerid][pSkin] = gHouses[houseid][houseSkin];
- if(GetPlayerSkin(playerid) == gHouses[houseid][houseSkin][3]) SetPlayerSkin(playerid,pData[playerid][pSkin]);
- }
- gHouses[houseid][houseSkin][3] = 0;
- UpdateHouseDress(houseid);
- }
- //...
- return 1;
- }
- CMD:hcar(playerid, params[])
- {
- if(dikg3dadminslogin[playerid] == false) return 1;
- if(!pTemp[playerid][pLogined]) return 1;
- if(pData[playerid][pAdmin] < 6) return 1;
- if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, CYELLOW, "• [Подсказка]:{"#cWHITE"} /hcar [ID дома]");
- if(params[0] < 1 || params[0] > MAX_HOUSE_COUNT) return SendClientMessage(playerid,CGRAY,"Значение Выходит за допустимые пределы");
- if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,CGRAY,"Вы должны быть в машине");
- new vehicleid = GetPlayerVehicleID(playerid);
- new Float:x, Float:y, Float:z, Float:r;
- GetVehiclePos(vehicleid,x,y,z);
- GetVehicleZAngle(vehicleid,r);
- new query[512];
- format(query,sizeof(query),"UPDATE `houses` SET `parkx`='%.4f', `parky`='%.4f', `parkz`='%.4f', `parkr`='%.4f' WHERE `id`='%d'",x,y,z,r,params[0]);
- sql_query(zConn, query, QUERY_THREADED);
- SendClientMessage(playerid,CGREEN,"Парковочное место к дому установлено");
- new i = params[0] - 1;
- gHouses[i][houseParkX] = x;
- gHouses[i][houseParkY] = y;
- gHouses[i][houseParkZ] = z;
- gHouses[i][houseParkR] = r;
- return true;
- }
- CMD:house(playerid, params[])
- {
- if(dikg3dadminslogin[playerid] == false) return 1;
- if(!pTemp[playerid][pLogined]) return 1;
- if(pData[playerid][pAdmin] < 3) return 1;
- if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, CYELLOW, "• [Подсказка]:{"#cWHITE"} /house [ID]");
- if(params[0] < 1 || params[0] > MAX_HOUSE_COUNT) return SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"Неверный [ID]!");
- SetPlayerPos(playerid,gHouses[params[0]-1][houseX],gHouses[params[0]-1][houseY],gHouses[params[0]-1][houseZ]);
- SetPlayerInterior(playerid, 0);
- SetPlayerVirtualWorld(playerid, 0);
- return true;
- }
- CMD:fwarn(playerid,params[])
- {
- //...
- new houseid = pData[params[0]][pHouse]-1;//Узнаем id дома игрока
- if(!(houseid+1) || ((houseid+1) > 0 && pData[params[0]][pMysqlID] != gHouses[houseid][houseOwnerID])) SetPlayerSkin(params[0],pData[params[0]][pSkin]);
- else if(!gHouses[houseid][houseImprove][3]) SetPlayerSkin(params[0],pData[params[0]][pSkin]);
- else
- {
- for(new x; x < 3; x ++)
- {
- if(!gHouses[houseid][houseSkin]) continue;
- pData[params[0]][pSkin] = gHouses[houseid][houseSkin];
- if(GetPlayerSkin(params[0]) == gHouses[houseid][houseSkin][3]) SetPlayerSkin(params[0],pData[params[0]][pSkin]);
- }
- gHouses[houseid][houseSkin][3] = 0;
- UpdateHouseDress(houseid);
- }
- //...
- return 1;
- }
- CMD:okay(playerid, params[])
- {
- //...
- if(pData[params[0]][pHouse])
- {
- new houseid = pData[params[0]][pHouse] - 1;
- if(gHouses[houseid][houseOwnerID] == pData[params[0]][pMysqlID])
- {
- format(gHouses[houseid][houseOwner],MAX_PLAYER_NAME,"%s",nickname);
- format(query,sizeof(query),"UPDATE `houses` SET `owner` = '%s' WHERE `id` = '%d'",nickname,houseid+1);
- sql_query(zConn, query);
- }
- else
- {
- new slot = -1;
- if(gHouses[houseid][houseHabitID][0] == pData[params[0]][pMysqlID]) slot = 0;
- else if(gHouses[houseid][houseHabitID][1] == pData[params[0]][pMysqlID]) slot = 1;
- else if(gHouses[houseid][houseHabitID][2] == pData[params[0]][pMysqlID]) slot = 2;
- else return SendClientMessage(params[0],CGRAY,"Ошибка (#122)");
- format(gHouseHabits[houseid][slot],MAX_PLAYER_NAME,"%s",nickname);
- format(query,sizeof(query),"UPDATE `houses` SET `inhabit%d`='%s' WHERE `id`='%d'",slot+2,nickname,houseid+1);
- sql_query(zConn, query);
- }
- }
- //...
- return 1;
- }
- CMD:sellmycar(playerid, params[])
- {
- //...
- new houseid = pData[params[0]][pHouse]-1;
- if(gHouses[houseid][houseOwnerID] != pData[params[0]][pMysqlID]) return SendClientMessage(playerid,CGRAY,"Машина может быть только у владельца дома");
- //...
- return 1;
- }
- CMD:sellmyhouse(playerid, params[])
- {
- if(!pTemp[playerid][pLogined]) return 1;
- if(sscanf(params,"dd", params[0],params[1])) return SendClientMessage(playerid, CYELLOW, "• [Подсказка]:{"#cWHITE"} /sellmyhouse [id] [цена]");
- if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CGRAY,"У Вас нет дома");
- if(pData[playerid][pCar]) return SendClientMessage(playerid,CGRAY,"У Вас есть машина. Вы должны продать её прежде чем продавать дом");
- new houseid = pData[playerid][pHouse]-1;
- if(gHouses[houseid][houseOwnerID] != pData[playerid][pMysqlID]) return SendClientMessage(playerid,CGRAY,"Вы не являетесь владельцем дома в котором живете");
- if(pTemp[playerid][pTaxiID] != INVALID_VEHICLE_ID || pTemp[playerid][pTaxiPass] != INVALID_PLAYER_ID) return SendClientMessage(playerid,CGRAY,"Нельзя использовать данную Команду сейчас");
- if(params[1] < gHouses[houseid][housePrice] || params[1] > gHouses[houseid][housePrice] * 3)
- {
- new goscena1[128];
- format(goscena1,sizeof(goscena1), "Цена не может быть меньше %d$ и больше %d$", gHouses[houseid][housePrice],gHouses[houseid][housePrice]*3);
- SendClientMessage(playerid,CGRAY,goscena1);
- return 1;
- }
- if(!IsPlayerConnected(params[0]) || playerid == params[0]) return SendClientMessage(playerid,CGRAY,"Неверный ID игрока");
- if(pData[params[0]][pHouse]) return SendClientMessage(playerid,CGRAY,"У игрока уже есть дом");
- if(GetPlayerDistanceToPlayer(playerid,params[0]) > 3.0 || GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(params[0])) return SendClientMessage(playerid,CGRAY,"Вы далеко друг от друга");
- new mes[310],classname[30],housenumber[12];
- if(pData[playerid][pHouse])
- {
- format(housenumber,12, "%d", pData[playerid][pHouse]);
- switch(gHouses[pData[playerid][pHouse]-1][houseClass])
- {
- case 0:classname = "дом эконом класса №";
- case 1:classname = "дом среднего класса №";
- case 2:classname = "элитный дом №";
- case 3:classname = "особняк №";
- default: classname = "[Неизвестно]";
- }
- }
- format(mes,sizeof(mes),"Вы предложили {FF6600}%s{3399FF} купить Ваш дом за {00CC00}%d$",pData[params[0]][pNickname],params[1]);
- SendClientMessage(playerid,0x3399FFFF,mes);
- format(mes,sizeof(mes),"%s предлагает вам купить его %s %s за {00CC00}%d$",pData[playerid][pNickname],classname,housenumber,params[1]);
- SendClientMessage(params[0],0x3399FFFF,mes);
- SendClientMessage(params[0],-1, "Нажмите {00CC00}Y "W"чтобы согласиться или {FF6600}N "W"для отказа");
- pTemp[playerid][pSellHouseOffer] = playerid;
- pTemp[params[0]][pSellHouseOffer] = playerid;
- pTemp[params[0]][pSellHouseOffee] = params[0];
- pTemp[params[0]][pSellHousePrice] = params[1];
- pTemp[params[0]][pSellHouseID] = houseid;
- return true;
- }
- CMD:debtorhouse(playerid, params[])
- {
- if(!pTemp[playerid][pLogined]) return 1;
- if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, CYELLOW, "• [Подсказка]:{"#cWHITE"} /debtorhouse [ID]");
- new houseid = params[0]-1;
- new ownerid = GetPlayerID(gHouses[houseid][houseOwner]);
- if(!IsAbleToHire(playerid)) return SendErr(playerid,"Ваш ранг недостаточен");
- new Float:pos[3], full = 0;
- GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
- for(new i;i<MAX_PLAYERS;i++)
- {
- if(IsPlayerInRangeOfPoint(i, 15.0, pos[0], pos[1], pos[2]))
- {
- if(pData[playerid][pSubfraction] == pData[i][pSubfraction] && pData[i][pRank] > 3)
- {
- if(i >= 2)
- {
- full = 1;
- break;
- }
- }
- }
- }
- if(full == 0) return SendErr(playerid, "Рядом нет двух сотрудников вашей организации");
- new querysell[500];
- if(gHouses[houseid][houseDays] <= 0 && gHouses[houseid][houseOwnerID] >= 1)
- {
- if(pData[ownerid][pCar])
- {
- new carID = GetCarSlot(pData[ownerid][pCar]); new vehicleid = gCars[carID][carVid]; new modelid = GetVehicleModel(vehicleid) - 400;
- new carprice = floatround(gTransport[modelid][trPrice]/100*80);
- if(pData[ownerid][pStatus] == 1)
- {
- pData[ownerid][pCar] = 0;
- UpdatePlayerData(ownerid,"car", pData[ownerid][pCar]);
- pData[ownerid][pReturnCarMoney] += carprice;
- UpdatePlayerData(ownerid,"returncar", pData[ownerid][pReturnCarMoney]);
- format(querysell,sizeof(querysell), "DELETE FROM `cars` WHERE `id` = '%d'",pData[ownerid][pCar]);
- sql_query(zConn, querysell);
- DestroyVehicle(gCars[carID][carVid]);
- SendClientMessage(playerid,0xFF7F50ff,"Машина продана в онлайне");
- }
- else if(pData[ownerid][pStatus] == 0)
- {
- format(querysell,sizeof(querysell),"UPDATE `accounts` SET returncar = '+%s', car = '0' WHERE id = '%d'", carprice, gHouses[houseid][houseOwnerID]);
- sql_query(zConn, querysell);
- format(querysell,sizeof(querysell), "DELETE FROM `cars` WHERE `id` = '%d'",pData[ownerid][pCar]);
- sql_query(zConn, querysell);
- SendClientMessage(playerid,0xFF7F50ff,"Машина продана в офлайне");
- }
- }
- new houseprice = floatround(gHouses[houseid][housePrice]/100*80);
- format(querysell,sizeof(querysell),"UPDATE `houses` SET `ownerid` = '0', `owner` = '', improve = '0|0|0|0|0', gun = '0|0|0|0|0|0|0|0|0', skin = '0|0|0|0',safecode='0', safemoney='0', drugs='0', products='0',inhabit2id = '0',inhabit3id = '0',inhabit4id = '0',inhabit2='',inhabit3='',inhabit4='',days='3' WHERE `id` = '%d'",houseid+1);
- sql_query(zConn, querysell);
- gHouses[houseid][houseOwnerID] = 0;
- strdel(gHouses[houseid][houseOwner],0,24);
- strdel(gHouseHabits[houseid][0],0,24);
- strdel(gHouseHabits[houseid][1],0,24);
- strdel(gHouseHabits[houseid][2],0,24);
- gHouses[houseid][houseHabitID][0] = 0;
- gHouses[houseid][houseHabitID][1] = 0;
- gHouses[houseid][houseHabitID][2] = 0;
- for(new j;j<9;j++)
- {
- if(j < 5)
- {
- gHouses[houseid][houseImprove][j] = 0;
- if(j < 4) gHouses[houseid][houseSkin][j] = 0;
- }
- gHouses[houseid][houseGun][j] = 0;
- }
- gHouses[houseid][houseSafeCode] = 0;
- gHouses[houseid][houseSafeMoney] = 0;
- gHouses[houseid][houseDrugs] = 0;
- gHouses[houseid][houseDays] = 3;
- gHouses[houseid][houseProducts] = 0;
- for(new i;i<MAX_PLAYERS;i++)
- {
- if(IsPlayerInRangeOfPoint(i, 15.0, pos[0], pos[1], pos[2]))
- {
- if(pData[playerid][pSubfraction] == pData[i][pSubfraction])
- {
- TransferMoney(-1,i,400,"debtor");
- SendClientMessage(i,0xFF7F50ff,"Должник выселен");
- break;
- }
- }
- }
- TransferMoney(-1,playerid,400,"debtor");
- SendClientMessage(playerid,0xFF7F50ff,"Должник выселен");
- Dolzen--;
- new str1[100];
- format(str1, 100, "%i", Dolzen);
- SetDynamicObjectMaterialText(meria[0], 0, str1, 80, "Quartz MS", 50, 1, 0xFF00FFFF, 0x00000000, 1);
- if(Dolzen == 0) SetDynamicObjectMaterialText(meria[0],0, "0", 80, "Quartz MS", 50, 1, 0xFF00FFFF, 0x00000000, 1);
- DestroyDynamicPickup(gHousePickup[houseid]);
- gHousePickup[houseid] = CreateDynamicPickup(1273,1,gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ]);
- DestroyDynamicMapIcon(gHouseIcon[houseid]);
- gHouseIcon[houseid] = CreateDynamicMapIcon(gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ],31,CWHITE);
- if(pData[ownerid][pStatus] == 1)
- {
- pData[ownerid][pHouse] = 0;
- pData[ownerid][pReturnHouseMoney] += houseprice;
- UpdatePlayerData(ownerid,"returnhouse", pData[ownerid][pReturnHouseMoney]);
- UpdatePlayerData(ownerid,"house", pData[ownerid][pHouse]);
- SendClientMessage(ownerid,CGRAY,"Ваш дом был продан государству за неуплату налогов");
- SendClientMessage(ownerid,-1,"Если у Вас был транспорт, он тоже был продан");
- SendClientMessage(ownerid,0xFF7F50ff,"* Вы можете вернуть 80 процентов от стоимости списанного имущества");
- SendClientMessage(ownerid,0xFF7F50ff,"* Для этого введите команду {1E90FF}/returnmoney");
- SendClientMessage(playerid,0xFF7F50ff,"Дом продан в онлайне");
- }
- else if(pData[ownerid][pStatus] == 0)
- {
- pData[ownerid][pReturnHouseMoney] += houseprice;
- format(querysell,sizeof(querysell),"UPDATE `accounts` SET econfirmed = '1' WHERE id = '%i'",gHouses[houseid][houseOwnerID]);
- sql_query(zConn, querysell);
- format(querysell,sizeof(querysell),"UPDATE `accounts` SET house = '0', spawn = '0' ,returnhouse = '+%i', house = '0' WHERE id = '%d'", floatround(gHouses[houseid][housePrice]/100*80), gHouses[houseid][houseOwnerID]);
- sql_query(zConn,querysell);
- SendClientMessage(playerid,0xFF7F50ff,"Дом продан в офлайне");
- }
- }
- else SendErr(playerid, "Владелец этого дома не должник");
- return true;
- }
- public OnPlayerEnterDynamicArea(playerid, areaid)
- {
- if(areaid >= gHouseArea[0] && areaid <= gHouseArea[gHouseCount-1])
- {
- if(pTemp[playerid][pJustTP])
- {
- pTemp[playerid][pJustTP] = false;
- return 1;
- }
- new houseid=areaid - gHouseArea[0];
- if(houseid == -1) return 1;
- pTemp[playerid][pSelectedHouseID] = houseid;
- new mes[240];
- new classname[20],Float:x, Float:y, Float:z, pos[15];
- GetPlayerPos(playerid,x,y,z);
- if(x < 0) strcat(pos,"San Fiero");
- else if(y > 100.0) strcat(pos,"Las Venturas");
- else strcat(pos,"Los Santos");
- switch(gHouses[houseid][houseClass])
- {
- case 0:classname = "Эконом класс";
- case 1:classname = "Cредний класс";
- case 2:classname = "Элитные апартаменты";
- case 3:classname = "Особняк";
- default: classname = "Неизвестно";
- }
- if(!IsPlayerInAnyVehicle(playerid))
- {
- if(!gHouses[houseid][houseOwnerID]) // на продажу
- {
- format(mes,sizeof(mes),""W"Стоимость дома: {2D6323}%d$\n"W"Тип: %s\n\n"W"Адрес: {628A89}г. %s, %s, дом №%d",gHouses[houseid][housePrice],classname,pos,GetPlayerZone(houseid, 1),gHouses[houseid][houseID]);
- ShowPlayerDialog(playerid,dHouseInfo,0,"Продается",mes,"Купить","Отмена");
- }
- else
- {
- format(mes,sizeof(mes),""W"Собственник: {33CCFF}%s\n"W"Стоимость дома: {2D6323}%d$\n"W"Тип: %s\n\n"W"Адрес: {628A89}г.%s, %s, дом №%d",gHouses[houseid][houseOwner],gHouses[houseid][housePrice],classname,pos,GetPlayerZone(houseid, 1),gHouses[houseid][houseID]);
- ShowPlayerDialog(playerid,dHouseInfo,0,"{FF9900}Дом занят",mes,"Войти","Отмена");
- }
- }
- }
- /*if(areaid >= gBintBuyArea[0] && areaid <= gBintBuyArea[BINT_COUNT-1])
- {
- new id = pTemp[playerid][pSelectedBusinessID];
- if(id < 0) return 1;
- new products = gBusiness[id][busiProduct];
- if(gBusiness[id][busiOwnerID])
- {
- if(!products) return SendClientMessage(playerid,CGRAY,"К сожалению, товара не осталось");
- }
- new type = gBusiness[id][busiType];
- switch(type)
- {
- case 1: // Прод. магазин
- {*/
- if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CGRAY,"У Вас нет дома");
- new houseid = pData[playerid][pHouse]-1;
- if(!gHouses[houseid][houseImprove][2]) return SendClientMessage(playerid,CGRAY,"У Вас дома нет холодильника");
- if(pTemp[playerid][pCarryProducts]) return SendClientMessage(playerid,CGRAY,"Вы уже купили продукты");
- ShowPlayerDialog(playerid,dGrocer,1,"Магазин продуктов","{"#cWHITE"}Здесь Вы можете купить продукты которые будут храниться в вашем холодильнике\nУкажите количество продуктов которое Вы хотите купить:","ОК","Отмена");
- /*}
- }
- }*/
- //DeimoS - Укладка продуктов в холодильник
- if(areaid >= gHintFreezArea[0] && areaid <= gHintFreezArea[HINTS_COUNT-1])
- {
- new houseid = pTemp[playerid][pSelectedHouseID];
- if(pData[playerid][pHouse] == houseid+1)
- {
- if(pTemp[playerid][pCarryProducts] && pTemp[playerid][pIsInHouse])
- {
- new products = pTemp[playerid][pCarryProducts];
- new query[128];
- format(query,sizeof(query),"UPDATE `houses` SET `products` = '%d' WHERE `id` = '%d'",gHouses[houseid][houseProducts] + products,houseid+1);
- sql_query(zConn, query);
- gHouses[houseid][houseProducts] += products;
- pTemp[playerid][pCarryProducts] = 0;
- MeAction(playerid,"положил(а) продукты в холодильник");
- }
- }
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(newkeys & KEY_YES)
- {
- if(pTemp[playerid][pSellHouseOffee] == playerid) //Согласился купить дом
- {
- new houseid = pTemp[playerid][pSellHouseID];
- new price = pTemp[playerid][pSellHousePrice];
- new offerid = pTemp[playerid][pSellHouseOffer];
- if(!gHouses[houseid][houseOwnerID] || !pData[offerid][pHouse])
- {
- SendClientMessage(playerid,CGRAY,"Дом был продан в гос.");
- pTemp[offerid][pSellHouseOffer] = INVALID_PLAYER_ID;
- pTemp[playerid][pSellHouseOffer] = INVALID_PLAYER_ID;
- pTemp[playerid][pSellHouseOffee] = INVALID_PLAYER_ID;
- pTemp[playerid][pSellHousePrice] = 0;
- pTemp[playerid][pSellHouseID] = 0;
- return 1;
- }
- if(pTemp[offerid][pSellHouseOffer] == INVALID_PLAYER_ID || !IsPlayerConnected(offerid))
- {
- SendClientMessage(playerid,CGRAY,"Продавец вышел из игры, либо продал дом другому игроку");
- pTemp[offerid][pSellHouseOffer] = INVALID_PLAYER_ID;
- pTemp[playerid][pSellHouseOffer] = INVALID_PLAYER_ID;
- pTemp[playerid][pSellHouseOffee] = INVALID_PLAYER_ID;
- pTemp[playerid][pSellHousePrice] = 0;
- pTemp[playerid][pSellHouseID] = 0;
- return 1;
- }
- if(GetPlayerMoneyEx(playerid) < price)
- {
- SendClientMessage(playerid,CGRAY,"У Вас недостаточно денег на руках");
- SendClientMessage(offerid,CGRAY,"У покупателя недостаточно денег");
- pTemp[offerid][pSellHouseOffer] = INVALID_PLAYER_ID;
- pTemp[playerid][pSellHouseOffer] = INVALID_PLAYER_ID;
- pTemp[playerid][pSellHouseOffee] = INVALID_PLAYER_ID;
- pTemp[playerid][pSellHousePrice] = 0;
- pTemp[playerid][pSellHouseID] = 0;
- return 1;
- }
- UpdatePlayerData(offerid,"house",0);
- UpdatePlayerData(playerid,"house",houseid+1);
- new query[256], str[128];
- format(query,sizeof(query),"UPDATE `houses` SET `ownerid` = '%d', owner = '%s',inhabit2id = '0',inhabit3id = '0',inhabit4id = '0',inhabit2='',inhabit3='',inhabit4='' WHERE `id` = '%d'",pData[playerid][pMysqlID],pData[playerid][pNickname],houseid+1);
- sql_query(zConn, query);
- TransferMoney(playerid,offerid,price,"sellhouse");
- format(str, sizeof(str), "~r~ -%d$",price);
- GameTextForPlayer(playerid,str,2000,1);
- format(str, sizeof(str), "~g~ +%d$",price);
- GameTextForPlayer(offerid,str,5000,1);
- pData[playerid][pHouse] = houseid+1;
- pData[offerid][pHouse] = 0;
- gHouses[houseid][houseOwnerID] = pData[playerid][pMysqlID];
- format(gHouses[houseid][houseOwner],MAX_PLAYER_NAME,"%s",pData[playerid][pNickname]);
- strdel(gHouseHabits[houseid][0],0,24);
- strdel(gHouseHabits[houseid][1],0,24);
- strdel(gHouseHabits[houseid][2],0,24);
- gHouses[houseid][houseHabitID][0] = 0;
- gHouses[houseid][houseHabitID][1] = 0;
- gHouses[houseid][houseHabitID][2] = 0;
- gHouses[houseid][houseSkin][1] = 0;
- gHouses[houseid][houseSkin][2] = 0;
- gHouses[houseid][houseSkin][3] = 0;
- if(pData[playerid][pFraction]) gHouses[houseid][houseSkin][3] = pData[playerid][pFractionSkin];
- UpdateHouseDress(houseid);
- if(pData[offerid][pFraction]) SetPlayerSkin(offerid,pData[offerid][pFractionSkin]);
- SendClientMessage(playerid,0x66CC00FF,"Поздравляем, Вы купили дом");
- SendClientMessage(playerid,0x66CC00FF,"Напишите {3399FF}/home {66CC00}чтобы узнать о возможностях");
- SendClientMessage(playerid,0xEFFF12FF, "Настоятельно рекомендуем проверить кварплату. При необходимости заплатить за дом в банке");
- SendClientMessage(offerid,0x66CC00FF,"Дом продан");
- pTemp[offerid][pSellHouseOffer] = INVALID_PLAYER_ID;
- pTemp[playerid][pSellHouseOffer] = INVALID_PLAYER_ID;
- pTemp[playerid][pSellHouseOffee] = INVALID_PLAYER_ID;
- pTemp[playerid][pSellHousePrice] = 0;
- pTemp[playerid][pSellHouseID] = 0;
- }
- if(pTemp[playerid][pSettleHouseOffee] == playerid)
- {
- new houseid = pTemp[playerid][pSettleHouseID];
- new offerid = pTemp[playerid][pSettleHouseOffer];
- if(pTemp[offerid][pSettleHouseOffer] == INVALID_PLAYER_ID || !IsPlayerConnected(offerid))
- {
- SendClientMessage(playerid,CGRAY,"Тот, кто предлагал поселиться у него дома вышел из игры");
- pTemp[offerid][pSettleHouseOffer] = INVALID_PLAYER_ID;
- pTemp[playerid][pSettleHouseOffer] = INVALID_PLAYER_ID;
- pTemp[playerid][pSettleHouseOffee] = INVALID_PLAYER_ID;
- pTemp[playerid][pSettleHouseID] = 0;
- return 1;
- }
- new slot=-1;
- for(new i;i<gHouses[houseid][houseClass];i++)
- {
- if(!gHouses[houseid][houseHabitID][i]) {slot = i; break;}
- }
- if(slot == -1)
- {
- SendClientMessage(playerid,CGRAY,"В доме нет места");
- SendClientMessage(offerid,CGRAY,"В доме нет места");
- pTemp[offerid][pSettleHouseOffer] = INVALID_PLAYER_ID;
- pTemp[playerid][pSettleHouseOffer] = INVALID_PLAYER_ID;
- pTemp[playerid][pSettleHouseOffee] = INVALID_PLAYER_ID;
- pTemp[playerid][pSettleHouseID] = 0;
- }
- UpdatePlayerData(playerid,"house",houseid+1);
- new query[128];
- format(query,sizeof(query),"UPDATE `houses` SET `inhabit%did`='%d', `inhabit%d`='%s' WHERE `id`='%d'",slot+2,pData[playerid][pMysqlID],slot+2,pData[playerid][pNickname],houseid+1);
- sql_query(zConn, query);
- SFCM(playerid,CINFO,"Вы стали жильцом в доме {"#cWHITE"}%s",pData[offerid][pNickname]);
- SFCM(offerid,CINFO,"Вы приняли {"#cWHITE"}%s {"#cINFO"}жильцом в свой дом",pData[playerid][pNickname]);
- pData[playerid][pHouse] = houseid+1;
- gHouses[houseid][houseHabitID][slot] = pData[playerid][pMysqlID];
- format(gHouseHabits[houseid][slot],MAX_PLAYER_NAME,"%s",pData[playerid][pNickname]);
- pTemp[offerid][pSettleHouseOffer] = INVALID_PLAYER_ID;
- pTemp[playerid][pSettleHouseOffer] = INVALID_PLAYER_ID;
- pTemp[playerid][pSettleHouseOffee] = INVALID_PLAYER_ID;
- pTemp[playerid][pSettleHouseID] = 0;
- }
- }
- if (newkeys & KEY_WALK)
- {
- if(pTemp[playerid][pIsInHouse])
- {
- new houseid = pTemp[playerid][pSelectedHouseID];
- if(gHouses[houseid][houseImprove][0])
- {
- new hint = gHouses[houseid][houseHint];
- new Float:x, Float:y, Float:z;
- x = gHints[hint][hintX];
- y = gHints[hint][hintY];
- z = gHints[hint][hintZ];
- if(IsPlayerInRangeOfPoint(playerid,2.0,x,y,z))
- {
- SetPlayerInterior(playerid,0);
- SetPlayerVirtualWorld(playerid,0);
- pTemp[playerid][pJustTP] = true;
- SetPlayerPos(playerid,gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ]);
- SetPlayerFacingAngle(playerid,gHouses[houseid][houseR]);
- pTemp[playerid][pIsInHouse] = false;
- }
- }
- }
- }
- if (newkeys & KEY_CTRL_BACK)
- {
- new houseid = pData[playerid][pHouse]-1;
- if(pData[playerid][pHouse] && pTemp[playerid][pSelectedHouseID])
- {
- if(gHouses[houseid][houseOwnerID] == pData[playerid][pMysqlID]) {
- new hintid = gHouses[houseid][houseHint];
- if(gHouses[houseid][houseImprove][2] && IsPlayerInDynamicArea(playerid,gHintFreezArea[hintid]))
- {
- ShowPlayerDialog(playerid,dFreez,2,"Холодильник","Хот-дог ({"#cRED"}-10 прод. {"#cGREEN"}+20 сытость{"#cWHITE"})\nБургер ({"#cRED"}-15 прод. {"#cGREEN"}+30 сытость{"#cWHITE"})\nПицца ({"#cRED"}-30 прод. {"#cGREEN"}+60 сытость{"#cWHITE"})","Съесть","Отмена");
- }
- if(gHouses[houseid][houseImprove][3] && IsPlayerInDynamicArea(playerid,gHintStoreArea[hintid]))
- {
- ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду","Далее","Отмена");
- }
- }
- else SendClientMessage(playerid, -1, "{"#cGRAY"}Только владелец дома может использовать шкаф");
- }
- }
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- if(pTemp[playerid][pSelectStoreGun])
- {
- new newkeys,ud,lr;
- GetPlayerKeys(playerid,newkeys,ud,lr);
- if (lr > 0)
- {
- new id = pTemp[playerid][pStoreGun];
- if(id == 8) id = 0;
- else id++;
- new houseid = pData[playerid][pHouse]-1;
- new hintid = gHouses[houseid][houseHint];
- for(new i=id;i<9;i++)
- {
- if(gHouses[houseid][houseGun][i])
- {
- new Float:x, Float:y, Float:z, Float:x2, Float:y2, Float:z2;
- GetPlayerCameraPos(playerid,x,y,z);
- GetGunCameraOffset(gHintGun[hintid][i][0],gHintGun[hintid][i][1],gHintStore[hintid][5],x2,y2);
- z2 = gHintGun[hintid][i][2] + 0.4;
- InterpolateCameraPos(playerid,x,y,z,x2,y2,z2,700,CAMERA_MOVE);
- GetPlayerCameraFrontVector(playerid,x2,y2,z2);
- x += x2;
- y += y2;
- z += z2;
- InterpolateCameraLookAt(playerid,x,y,z,gHintGun[hintid][i][0],gHintGun[hintid][i][1],gHintGun[hintid][i][2],700,CAMERA_MOVE);
- pTemp[playerid][pStoreGun] = i;
- pTemp[playerid][pSelectStoreGun] = false;
- SetTimerEx("SelectStoreGun",1000,false,"i",playerid);
- new gunname[32],mes[48];
- GetWeaponName(GetStoreGunID(i),gunname,32);
- format(mes,48,"~w~%s (~g~%d~w~)",gunname,gHouses[houseid][houseGun][i]);
- GameTextForPlayer(playerid,mes,100000,3);
- break;
- }
- if(i == 8) i = 0;
- }
- }
- if (lr < 0)
- {
- new id = pTemp[playerid][pStoreGun];
- if(id == 0) id = 8;
- else id--;
- new houseid = pData[playerid][pHouse]-1;
- new hintid = gHouses[houseid][houseHint];
- for(new i=id;i>=0;i--)
- {
- if(gHouses[houseid][houseGun][i])
- {
- new Float:x, Float:y, Float:z, Float:x2, Float:y2, Float:z2;
- GetPlayerCameraPos(playerid,x,y,z);
- GetGunCameraOffset(gHintGun[hintid][i][0],gHintGun[hintid][i][1],gHintStore[hintid][5],x2,y2);
- z2 = gHintGun[hintid][i][2] + 0.4;
- InterpolateCameraPos(playerid,x,y,z,x2,y2,z2,700,CAMERA_MOVE);
- GetPlayerCameraFrontVector(playerid,x2,y2,z2);
- x += x2;
- y += y2;
- z += z2;
- InterpolateCameraLookAt(playerid,x,y,z,gHintGun[hintid][i][0],gHintGun[hintid][i][1],gHintGun[hintid][i][2],700,CAMERA_MOVE);
- pTemp[playerid][pStoreGun] = i;
- pTemp[playerid][pSelectStoreGun] = false;
- SetTimerEx("SelectStoreGun",1000,false,"i",playerid);
- new gunname[32],mes[48];
- GetWeaponName(GetStoreGunID(i),gunname,32);
- format(mes,48,"~w~%s (~g~%d~w~)",gunname,gHouses[houseid][houseGun][i]);
- GameTextForPlayer(playerid,mes,100000,3);
- break;
- }
- if(i == 0) i = 8;
- }
- }
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case dCreatehouse1:
- {
- if(!response) return 1;
- gCreatehouse[playerid][chouseHint] = listitem;
- ShowPlayerDialog(playerid,dCreatehouse2,1,"Создание жилища","Укажите цену за квартиру/дом (от 1 тыс. до 15 млн.)","Далее","Выход");
- }
- case dCreatehouse2:
- {
- if(!response) return 1;
- new price = strval(inputtext);
- if(!isNumeric(inputtext) || price < 1000 || price > 15000000)
- {
- SendClientMessage(playerid,CRED,"Неверная цена");
- ShowPlayerDialog(playerid,dCreatehouse2,1,"Создание жилища","Укажите цену за квартиру/дом (от 1 тыс. до 10 млн.)","Далее","Выход");
- return 1;
- }
- gCreatehouse[playerid][chousePrice] = price;
- ShowPlayerDialog(playerid,dCreatehouse3,2,"Создание жилища","Эконом класс\nСредний класс\nЭлитный класс\nОсобняк","Создать","Выход");
- }
- case dCreatehouse3:
- {
- if(!response) return 1;
- new clas=listitem;
- new Float:x, Float:y, Float:z, Float:r;
- GetPlayerPos(playerid,x,y,z);
- GetPlayerFacingAngle(playerid,r);
- new query[512];
- format(query,sizeof(query),"INSERT INTO `houses` VALUES('','%d','3','%d','%d','0|0|0|0|0','0|0|0|0|0|0|0|0|0','0|0|0|0','0','0','0','0','0','%f','%f','%f','%f','','','','','','','','','','','','')",clas,gCreatehouse[playerid][chousePrice],gCreatehouse[playerid][chouseHint],x,y,z,r);
- new Result:d = sql_query(zConn, query, QUERY_CACHED);
- new houseid = sql_insert_id(d);
- sql_free_result(d);
- new i = houseid - 1;
- SPFD(playerid,dMes,0,"Результат","ОК","","Создан дом. ID: {"#cGREEN"} %d",houseid);
- gHouses[i][houseID] = houseid;
- gHouses[i][houseClass] = clas;
- gHouses[i][housePrice] = gCreatehouse[playerid][chousePrice];
- gHouses[i][houseHint] = gCreatehouse[playerid][chouseHint];
- gHouses[i][houseX] = x;
- gHouses[i][houseY] = y;
- gHouses[i][houseZ] = z;
- gHouses[i][houseR] = r;
- gHouseArea[i] = CreateDynamicSphere(gHouses[i][houseX],gHouses[i][houseY],gHouses[i][houseZ],2.0,0,0,-1);
- gHousePickup[i] = CreateDynamicPickup(1273,1,gHouses[i][houseX],gHouses[i][houseY],gHouses[i][houseZ]);
- }
- case dHouseInfo:
- {
- if(!response) return 1;
- new houseid = pTemp[playerid][pSelectedHouseID];
- if(!gHouses[houseid][houseOwnerID])
- {
- if(pData[playerid][pHouse]) return SendClientMessage(playerid,CGRAY,"У Вас уже есть дом");
- SPFD(playerid,dHouseBuy,0,"Частный дом","Да","Нет","{"#cWHITE"}Вы действительно хотите купить этот дом за {"#cGREEN"}$%d?",gHouses[houseid][housePrice]);
- }
- else
- {
- if(gHouses[houseid][houseClose]) return GameTextForPlayer(playerid,"~r~closed",2000,1);
- SetPlayerInterior(playerid,gHints[gHouses[houseid][houseHint]][hintInterior]);
- SetPlayerPos(playerid,gHints[gHouses[houseid][houseHint]][hintX],gHints[gHouses[houseid][houseHint]][hintY],gHints[gHouses[houseid][houseHint]][hintZ]);
- SetPlayerFacingAngle(playerid,gHints[gHouses[houseid][houseHint]][hintR]);
- SetPlayerVirtualWorld(playerid,houseid+1);
- pTemp[playerid][pIsInHouse] = true;
- }
- }
- case dHouseBuy:
- {
- if(!response) return 1;
- new houseid = pTemp[playerid][pSelectedHouseID];
- if(!gHouses[houseid][houseOwnerID])
- {
- new price = gHouses[houseid][housePrice];
- if(GetPlayerMoneyEx(playerid) < price) return SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"У Вас недостаточно денег на руках");
- new query[256];
- format(query,sizeof(query),"UPDATE `houses` SET `ownerid` = '%d', `owner` = '%s' WHERE `id` = '%d'",pData[playerid][pMysqlID],pData[playerid][pNickname],gHouses[houseid][houseID]);
- sql_query(zConn, query);
- UpdatePlayerData(playerid,"house",gHouses[houseid][houseID]);
- gHouses[houseid][houseOwnerID] = pData[playerid][pMysqlID];
- format(gHouses[houseid][houseOwner],MAX_PLAYER_NAME,"%s",pData[playerid][pNickname]);
- pData[playerid][pHouse] = gHouses[houseid][houseID];
- SendClientMessage(playerid,0xFFFFFFFF,"Поздравляем! Вы купили дом");
- SendClientMessage(playerid,0x66CC00FF,"Напишите {3399FF}/home {66CC00}чтобы узнать о возможностях");
- format(query,sizeof(query),"UPDATE `houses` SET `days` = '3' WHERE id = '%d'",pData[playerid][pHouse]);
- sql_query(zConn, query);
- PlayerPlaySound(playerid,1185,0.0,0.0,0.0);
- SetTimerEx("PlayerPlaySoundDelay",6900,false,"ii",playerid,1186);
- TransferMoney(playerid,-1,price,"buyhouse");
- new str[40];
- format(str, sizeof(str), "~r~ -%d$",price);
- GameTextForPlayer(playerid,str,2000,1);
- DestroyDynamicPickup(gHousePickup[houseid]);
- gHousePickup[houseid] = CreateDynamicPickup(19522,1,gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ]);
- DestroyDynamicMapIcon(gHouseIcon[houseid]);
- gHouseIcon[houseid] = CreateDynamicMapIcon(gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ],32,CWHITE);
- }
- }
- case dSellHouse:
- {
- if(!response) return 1;
- new houseid = pData[playerid][pHouse]-1;
- UpdatePlayerData(playerid,"house",0);
- new query[512];
- format(query,sizeof(query),"UPDATE `houses` SET `ownerid` = '0', `owner` = '', `days` = '3', improve = '0|0|0|0|0', gun = '0|0|0|0|0|0|0|0|0', skin = '0|0|0|0',safecode='0', safemoney='0', drugs='0', products='0',inhabit2id = '0',inhabit3id = '0',inhabit4id = '0',inhabit2='',inhabit3='',inhabit4='' WHERE `id` = '%d'",houseid+1);
- sql_query(zConn, query);
- pData[playerid][pHouse] = 0;
- gHouses[houseid][houseOwnerID] = 0;
- strdel(gHouses[houseid][houseOwner],0,24);
- strdel(gHouseHabits[houseid][0],0,24);
- strdel(gHouseHabits[houseid][1],0,24);
- strdel(gHouseHabits[houseid][2],0,24);
- gHouses[houseid][houseHabitID][0] = 0;
- gHouses[houseid][houseHabitID][1] = 0;
- gHouses[houseid][houseHabitID][2] = 0;
- for(new i;i<9;i++)
- {
- if(i < 5)
- {
- gHouses[houseid][houseImprove][i] = 0;
- if(i < 4) gHouses[houseid][houseSkin][i] = 0;
- }
- gHouses[houseid][houseGun][i] = 0;
- }
- gHouses[houseid][houseSafeCode] = 0;
- gHouses[houseid][houseSafeMoney] = 0;
- gHouses[houseid][houseDrugs] = 0;
- gHouses[houseid][houseProducts] = 0;
- TransferMoney(-1,playerid,gHouses[houseid][housePrice]/100*80,"gossellhouse");
- new str[40];
- format(str, sizeof(str), "~g~ +%d$",gHouses[houseid][housePrice]/100*80);
- GameTextForPlayer(playerid,str,2000,1);
- DestroyDynamicPickup(gHousePickup[houseid]);
- gHousePickup[houseid] = CreateDynamicPickup(1273,1,gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ]);
- DestroyDynamicMapIcon(gHouseIcon[houseid]);
- gHouseIcon[houseid] = CreateDynamicMapIcon(gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ],31,CWHITE);
- SendClientMessage(playerid,CGREEN,"Дом продан");
- }
- case dHouseMenu:
- {
- if(!response) return 1;
- new houseid = pData[playerid][pHouse] - 1;
- switch(listitem)
- {
- case 0://Открыть - закрыть
- {
- if(!gHouses[houseid][houseClose])
- {
- gHouses[houseid][houseClose] = 1;
- PlayerPlaySound(playerid, 36401, 0.0, 0.0, 0.0);
- GameTextForPlayer(playerid,"~r~CLOSE",2000,3);
- }
- else
- {
- gHouses[houseid][houseClose] = 0;
- PlayerPlaySound(playerid, 36401, 0.0, 0.0, 0.0);
- GameTextForPlayer(playerid,"~g~OPEN",2000,3);
- }
- new query[256];
- format(query,sizeof(query),"UPDATE `houses` SET `close` = '%d' WHERE `id` = '%d'",gHouses[houseid][houseClose],houseid);
- sql_query(zConn, query);
- }
- case 1: //Улучшения
- {
- new mes[256];
- for(new i;i<5;i++)
- {
- new c[7];
- if(gHouses[houseid][houseImprove][i]) c = ""#cGREEN"";
- else if(!i || gHouses[houseid][houseImprove][i-1]) c = ""#cWHITE"";
- else c = ""#cGRAY"";
- if(!i) format(mes,sizeof(mes),"{%s}%d. %s",c,i+1,gHouseImproveName[i]);
- else format(mes,sizeof(mes),"%s\n{%s}%d. %s",mes,c,i+1,gHouseImproveName[i]);
- }
- ShowPlayerDialog(playerid,dHouseImprove,2,"Управление домом",mes,"Купить","Отмена");
- }
- case 2:
- {
- if(!pData[playerid][pCar] || (!pData[playerid][pHouse])) return SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"У Вас нет т/с");
- new carID = GetCarSlot(pData[playerid][pCar]); new vehicleid = gCars[carID][carVid]; new modelid = GetVehicleModel(vehicleid) - 400;
- new Float:factor;
- if(pData[playerid][pHouse]) factor = 0.5;
- else factor = 0.8;
- new price = floatround(gTransport[modelid][trPrice]*factor);
- SetPVarInt(playerid,"psellcarPrice",price);
- SetPVarInt(playerid,"psellcarID",carID);
- new mes[228];
- format(mes,sizeof(mes),"\t\t\t{"#cWHITE"}Вы хотите продать свой автомобиль за {"#cGREEN"}$%d?\n\n\t\t\t\t\t{FFFF00}• [Подсказка] •\n{"#cWHITE"}Чтобы продать автомобиль другому игроку используйте команду /sellmycar [id] [цена]",price);
- ShowPlayerDialog(playerid,dSellCar,0,"Продажа автомобиля",mes,"Продать","Отмена");
- }
- case 3:
- {
- if(!pData[playerid][pCar]) return SendClientMessage(playerid,CGRAY,"У вас нет личного т/с");
- if(pData[playerid][pMoney] < 500) return SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"Недостаточно денег. Требуется {"#cGREEN"}500$");
- new carid = GetCarSlot(pData[playerid][pCar]);
- if(carid == -1) return SendClientMessage(playerid,CGRAY,"Ошибка #115");
- new vid = gCars[carid][carVid];
- if(vid == INVALID_VEHICLE_ID) return SendClientMessage(playerid,CGRAY,"Ошибка #116");
- SetVehicleToRespawnEx(vid);
- SendClientMessage(playerid,0x3399FFFF,"Транспорт был доставлен к Вашему дому");
- gVehicles[vid-1][vLock] = 1;
- for(new i5;i5<14;i5++)
- {
- new tun = gCars[carid][carTuning][i5];
- if(tun != 0) AddVehicleComponent(vid, tun);
- }
- if(!gCars[carid][carPaintJob]) ChangeVehiclePaintjob(vid, gCars[carid][carPaintJob]);
- SetVehicleNumberPlate(vid, pData[playerid][pCarNumber]);
- TransferMoney(playerid,-1,500,"fixcar");
- GameTextForPlayer(playerid, "~r~-500$", 3000, 1);
- }
- case 4: //Отметить тс на гпс
- {
- if(!pData[playerid][pCar]) return SendClientMessage(playerid,CGRAY,"У вас нет личного т/с");
- if(pTemp[playerid][pGPS])
- {
- DisablePlayerCheckpoint(playerid);
- pTemp[playerid][pGPS] = false;
- SendClientMessage(playerid,CRED,"Метка {"#cWHITE"}снята с радара");
- }
- new carid = GetCarSlot(pData[playerid][pCar]);
- if(carid == -1) return SendClientMessage(playerid,CGRAY,"Ошибка #115");
- new vid = gCars[carid][carVid];
- if(vid == INVALID_VEHICLE_ID) return SendClientMessage(playerid,CGRAY,"Ошибка #116");
- SetPlayerCheckpoint(playerid,gVehicles[vid-1][vX],gVehicles[vid-1][vY],gVehicles[vid-1][vZ],5.0);
- pTemp[playerid][pGPS] = true;
- PlayerPlaySound(playerid, 4601, 0.0, 0.0, 0.0);
- TextDrawShowForPlayer(playerid, GPSON[playerid]);
- SendClientMessage(playerid,CRED,"Метка {"#cWHITE"}установлена у Вас на радаре. Чтобы снять метку напишите {"#cINFO"}/gps");
- }
- case 5:
- {
- if(pData[playerid][pCar]) return SendClientMessage(playerid,CGRAY,"У Вас есть машина. Вы должны продать её прежде чем продавать дом");
- new price = gHouses[houseid][housePrice]/100*80;
- new mes[264];
- format(mes,sizeof(mes),"\t\t\t{"#cWHITE"}Вы хотите продать дом государству за {"#cGREEN"}%d$?\n\n\t\t\t\t\t{FFFF00}• [Подсказка] •\n{"#cWHITE"}Чтобы продать дом другому игроку используйте команду /sellmyhouse [id] [цена]",price);
- ShowPlayerDialog(playerid,dSellHouse,0,"Продажа дома",mes,"Продать","Отмена");
- }
- case 6:
- {
- if(!pData[playerid][pCar]) return SendClientMessage(playerid,CGRAY,"У вас нет личного т/с");
- if(pData[playerid][pMoney] < 15000) return SendClientMessage(playerid,CRED,"x [Ошибка] {ffffff}У вас не достаточно денег!");
- ShowPlayerDialog(playerid, dDellTuning, DIALOG_STYLE_MSGBOX, "{"#cGREEN"}Удаление тюнинга", "\n\n\n{FFFFFF}Вы действительно хотите удалить все компоненты\nтюнинга с Вашего транспорта?\n\n\n", "Да", "Отмена");
- }
- }
- }
- case dHouseStat:
- {
- ShowPlayerDialog(playerid,dHouseMenu,2,"Управление домом",""D"1. "W"Открыть / закрыть дом\n"D"2. "W"Улучшения\n"D"3. "W"Продать домашний транспорт\n"D"4. "W"Доставить транспорт к дому{"#cGREEN"} 500$\n"D"5. "W"Отметить транспорт на GPS\n"D"6. "W"Продать дом\n{FF0000}7. Удалить тюннинг с автомобиля {"#cGREEN"}15.000$","ОК","Отмена");
- }
- case dHouseImprove:
- {
- if(!response) return ShowPlayerDialog(playerid,dHouseMenu,2,"Управление домом",""D"1. "W"Открыть / закрыть дом\n"D"2. "W"Улучшения\n"D"3. "W"Продать домашний транспорт\n"D"4. "W"Доставить транспорт к дому{43FF0A} (500$)\n"D"5. "W"Отметить транспорт на GPS\n"D"6. "W"Продать дом\n"D"7. {FF0000}Удалить тюннинг с автомобиля","ОК","Отмена");
- new houseid = pData[playerid][pHouse] - 1;
- if(gHouses[houseid][houseImprove][listitem])
- {
- SendClientMessage(playerid,CGREEN,"У Вас уже установлено это улучшение");
- ShowPlayerDialog(playerid,dHouseMenu,2,"Управление домом",""D"1. "W"Открыть / закрыть дом\n"D"2. "W"Улучшения\n"D"3. "W"Продать домашний транспорт\n"D"4. "W"Доставить транспорт к дому{43FF0A} (500$)\n"D"5. "W"Отметить транспорт на GPS\n"D"6. "W"Продать дом\n"D"7. {FF0000}Удалить тюннинг с автомобиля","ОК","Отмена");
- }
- else if((!listitem && !gHouses[houseid][houseImprove][listitem]) || (gHouses[houseid][houseImprove][listitem-1] && !gHouses[houseid][houseImprove][listitem]))
- {
- new mes[128];
- format(mes, sizeof(mes),"{"#cWHITE"}Вы хотите купить улучшение: {"#cINFO"}\"%s\"?\n{"#cWHITE"}Оно обойдется Вам в {"#cRED"}$%d",gHouseImproveName[listitem],gHouseImprovePrice[listitem]);
- ShowPlayerDialog(playerid,dHouseImprove2,0,"Управление домом",mes,"Да","Нет");
- SetPVarInt(playerid,"improveid",listitem);
- }
- else
- {
- SendClientMessage(playerid,CGRAY,"Это улучшение еще не доступно Вам");
- ShowPlayerDialog(playerid,dHouseMenu,2,"Управление домом",""D"1. "W"Открыть / закрыть дом\n"D"2. "W"Улучшения\n"D"3. "W"Продать домашний транспорт\n"D"4. "W"Доставить транспорт к дому{43FF0A} (500$)\n"D"5. "W"Отметить транспорт на GPS\n"D"6. "W"Продать дом\n"D"7. {FF0000}Удалить тюннинг с автомобиля","ОК","Отмена");
- }
- }
- case dHouseImprove2:
- {
- new improveid = GetPVarInt(playerid,"improveid");
- DeletePVar(playerid,"improveid");
- if(!response) return ShowPlayerDialog(playerid,dHouseMenu,2,"Управление домом",""D"1. "W"Открыть / закрыть дом\n"D"2. "W"Улучшения\n"D"3. "W"Продать домашний транспорт\n"D"4. "W"Доставить транспорт к дому{43FF0A} (500$)\n"D"5. "W"Отметить транспорт на GPS\n"D"6. "W"Продать дом\n"D"7. {FF0000}Удалить тюннинг с автомобиля","ОК","Отмена");
- new price = gHouseImprovePrice[improveid];
- if(GetPlayerMoneyEx(playerid) < price)
- {
- ShowPlayerDialog(playerid,dHouseMenu,2,"Управление домом",""D"1. "W"Открыть / закрыть дом\n"D"2. "W"Улучшения\n"D"3. "W"Продать домашний транспорт\n"D"4. "W"Доставить транспорт к дому{43FF0A} (500$)\n"D"5. "W"Отметить транспорт на GPS\n"D"6. "W"Продать дом\n"D"7. {FF0000}Удалить тюннинг с автомобиля","ОК","Отмена");
- return SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"У Вас недостаточно денег");
- }
- new houseid = pData[playerid][pHouse] - 1;
- gHouses[houseid][houseImprove][improveid] = 1;
- new hintid = gHouses[houseid][houseHint];
- switch(improveid)
- {
- case 1: CreateDynamicObject(2332,gHintSafe[hintid][0],gHintSafe[hintid][1],gHintSafe[hintid][2],gHintSafe[hintid][3],gHintSafe[hintid][4],gHintSafe[hintid][5],houseid+1); //Сейф
- case 2: CreateDynamicObject(2141,gHintFreez[hintid][0],gHintFreez[hintid][1],gHintFreez[hintid][2],gHintFreez[hintid][3],gHintFreez[hintid][4],gHintFreez[hintid][5],houseid+1);
- case 3:
- {
- CreateDynamicObject(2708,gHintStore[hintid][0],gHintStore[hintid][1],gHintStore[hintid][2],gHintStore[hintid][3],gHintStore[hintid][4],gHintStore[hintid][5],houseid+1);
- gHouses[houseid][houseSkin][0] = pData[playerid][pSkin];
- if(pData[playerid][pFraction]) gHouses[houseid][houseSkin][3] = pData[playerid][pFractionSkin];
- UpdateHouseDress(houseid);
- }
- }
- new data[32],query[128];
- for(new i;i<5;i++)
- {
- if(!i) format(data,sizeof(data),"%d",gHouses[houseid][houseImprove][i]);
- else format(data,sizeof(data),"%s|%d",data,gHouses[houseid][houseImprove][i]);
- }
- format(query,sizeof(query),"UPDATE `houses` SET `improve` = '%s' WHERE id = '%d'",data,houseid+1);
- sql_query(zConn, query);
- TransferMoney(playerid,-1,price,"houseimprove");
- new str[40];
- format(str, sizeof(str), "~r~ -%d$",price);
- GameTextForPlayer(playerid,str,2000,1);
- SendClientMessage(playerid,0x3881FFFF,"Поздравляем, Вы купили улучшение для дома.");
- if(improveid == 1) SendClientMessage(playerid,CINFO,"Код сейфа по умолчанию: \"{"#cGRAY"}0000{"#cINFO"}\"");
- }
- case dStore:
- {
- if(!response) return 1;
- switch(listitem)
- {
- case 0: //Берем оружие
- {
- new houseid = pData[playerid][pHouse]-1;
- new hintid = gHouses[houseid][houseHint];
- for(new i;i<9;i++)
- {
- if(gHouses[houseid][houseGun][i])
- {
- new Float:x, Float:y, Float:z, Float:x2, Float:y2, Float:z2;
- GetPlayerCameraPos(playerid,x,y,z);
- SetPVarFloat(playerid,"oldcx",x);
- SetPVarFloat(playerid,"oldcy",y);
- SetPVarFloat(playerid,"oldcz",z);
- GetGunCameraOffset(gHintGun[hintid][i][0],gHintGun[hintid][i][1],gHintStore[hintid][5],x2,y2);
- z2 = gHintGun[hintid][i][2] + 0.4;
- InterpolateCameraPos(playerid,x,y,z,x2,y2,z2,1000,CAMERA_MOVE);
- GetPlayerCameraFrontVector(playerid,x2,y2,z2);
- x += x2;
- y += y2;
- z += z2;
- InterpolateCameraLookAt(playerid,x,y,z,gHintGun[hintid][i][0],gHintGun[hintid][i][1],gHintGun[hintid][i][2],1000,CAMERA_MOVE);
- pTemp[playerid][pSelectStoreGun] = true;
- pTemp[playerid][pStoreGun] = i;
- pTemp[playerid][pSelectStoreGun] = false;
- SetTimerEx("SelectStoreGun",1000,false,"i",playerid);
- SendClientMessage(playerid,CWHITE,"Используйте клавиши {"#cGREEN"}влево{"#cWHITE"} и {"#cGREEN"}вправо{"#cWHITE"} для выбора оружия");
- SendClientMessage(playerid,CWHITE,"Используйте клавишу {"#cGREEN"}входа / Выхода из транспорта{"#cWHITE"} для Выхода");
- SendClientMessage(playerid,CWHITE,"Используйте клавишу {"#cGREEN"}быстрого бега{"#cWHITE"} для подтверждения");
- new gunname[32],mes[48];
- GetWeaponName(GetStoreGunID(i),gunname,32);
- format(mes,48,"~w~%s (~g~%d~w~)",gunname,gHouses[houseid][houseGun][i]);
- GameTextForPlayer(playerid,mes,100000,3);
- TogglePlayerControllable(playerid,0);
- return 1;
- }
- }
- return SendClientMessage(playerid,CGRAY,"У Вас нет оружия в шкафу");
- }
- case 1: //Ложим оружие
- {
- ShowGunList(playerid);
- }
- case 2: //Одежду
- {
- if(pData[playerid][pFraction]) return SendClientMessage(playerid,CWHITE,"Вы состоите в организации, менять внешний вид {ff0000}запрещено");
- new houseid = pData[playerid][pHouse] - 1;
- new mes[128],cnt;
- for(new i;i<4;i++)
- {
- if(i == 3 && pData[playerid][pFractionSkin]) format(mes,sizeof(mes),"%sФракционная одежда",mes);
- else if(gHouses[houseid][houseSkin][i])
- {
- format(mes,sizeof(mes),"%sОдежда %d\n",mes,i+1);
- }
- else continue;
- cnt++;
- }
- if(!cnt)
- {
- SendClientMessage(playerid,CGRAY,"Нет одежды в шкафу");
- return ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду","Далее","Отмена");
- }
- ShowPlayerDialog(playerid,dStoreSkin,2,"Шкаф",mes,"Одеть","Отмена");
- }
- case 3:
- {
- if(pData[playerid][pFraction]) return SendClientMessage(playerid,CWHITE,"Вы состоите в организации, менять внешний вид {ff0000}запрещено");
- new houseid = pData[playerid][pHouse] - 1;
- new mes[128],cnt;
- for(new i;i<4;i++)
- {
- if(gHouses[houseid][houseSkin][i]) format(mes,sizeof(mes),"%sОдежда %d\n",mes,i+1);
- else continue;
- cnt++;
- }
- if(!cnt)
- {
- SendClientMessage(playerid,CGRAY,"Нет одежды в шкафу");
- return ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду\n"D"4. "W"Выкинуть одежду","Далее","Отмена");
- }
- ShowPlayerDialog(playerid,dDelSkin,2,"Шкаф",mes,"Выкинуть","Отмена");
- }
- }
- }
- case dDelSkin:
- {
- if(!response) return ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду\n"D"4. "W"Выкинуть одежду","Далее","Отмена");
- new houseid = pData[playerid][pHouse] - 1;
- gHouses[houseid][houseSkin][listitem+1] = 0;
- SendSucc(playerid, "Вы успешно выкинули одну одежду из шкафа");
- UpdateHouseDress(houseid);
- return 1;
- }
- case dStoreSkin:
- {
- if(!response) return ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду\n"D"4. "W"Выкинуть одежду","Далее","Отмена");
- new skin,id;
- new houseid = pData[playerid][pHouse] - 1;
- if(!strcmp(inputtext,"Фракционная одежда",false))
- {
- skin = pData[playerid][pFractionSkin];
- SetPlayerColor(playerid,gFractionColor[pData[playerid][pFraction] - 1]);
- SetPVarInt(playerid,"odetcol",0);
- }
- else
- {
- SetPlayerColor(playerid,0xffffff11);
- sscanf(inputtext,"{s[100]}i",id);
- skin = gHouses[houseid][houseSkin][id-1];
- SetPVarInt(playerid,"odetcol",1);
- pData[playerid][pSkin] = skin;
- UpdatePlayerData(playerid, "skin", skin);
- }
- SetPlayerSkin(playerid,skin);
- MeAction(playerid,"переоделся(ась)");
- new mes[128],cnt;
- for(new i;i<4;i++)
- {
- if(i == 3 && pData[playerid][pFractionSkin]) format(mes,sizeof(mes),"%sФракционная одежда",mes);
- else if(gHouses[houseid][houseSkin][i])
- {
- format(mes,sizeof(mes),"%sОдежда %d\n",mes,i+1);
- }
- else continue;
- cnt ++;
- }
- if(!cnt)
- {
- SendClientMessage(playerid,CGRAY,"Нет одежды в шкафу");
- return ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду","Далее","Отмена");
- }
- ShowPlayerDialog(playerid,dStoreSkin,2,"Шкаф",mes,"Одеть","Отмена");
- }
- case dStorePut:
- {
- if(!response) return ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду\n"D"4. "W"Выкинуть одежду","Далее","Отмена");
- new cnt;
- new houseid = pData[playerid][pHouse]-1;
- for(new i;i<=11;i++)
- {
- new gunid,ammo,storeslot;
- GetPlayerWeaponData(playerid,i,gunid,ammo);
- storeslot = GetStoreGunSlot(gunid);
- if(!gunid || storeslot == -1 || ammo <= 0) continue;
- if(gunid == 23 && pTemp[playerid][pTazerGun]) continue;
- if(listitem == cnt)
- {
- new cnt2;
- for(new i2;i2<9;i2++) if(gHouses[houseid][houseGun][i2] && storeslot != i2) cnt2++;
- if(cnt2 >= 3)
- {
- SendClientMessage(playerid,CGRAY,"Вы не можете хранить больше 3-х видов оружия в шкафу");
- return ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду","Далее","Отмена");
- }
- if(gHouses[houseid][houseGun][storeslot] + ammo > 10000) return SendClientMessage(playerid,CWHITE,"У Вас в шкафу максимальное к-во патронов данного оружия");
- gHouses[houseid][houseGun][storeslot] += ammo;
- SaveStoreGun(houseid);
- UpdateHouseGun(houseid);
- SetPlayerAmmoEx(playerid,gunid,0);
- MeAction(playerid,"положил(а) оружие в шкаф");
- SendClientMessage(playerid,CGREEN,"Вы положили оружие в шкаф");
- SetTimerEx("ShowGunList",500,false,"i",playerid);
- //ShowGunList(playerid);
- break;
- }
- cnt++;
- }
- }
- case dStoreGet:
- {
- if(!response) return ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду","Далее","Отмена");
- new ammo = strval(inputtext);
- new storeslot = pTemp[playerid][pStoreGun];
- new houseid = pData[playerid][pHouse] - 1;
- if(ammo < 1)
- {
- new gunname[32],mes[128];
- GetWeaponName(gHintGunID[storeslot],gunname,32);
- format(mes,sizeof(mes),"{"#cWHITE"}Укажите сколько патронов{"#cGREEN"}%s{"#cWHITE"} Вы хотите взять:");
- ShowPlayerDialog(playerid,dStoreGet,1,"Шкаф",mes,"Взять","Отмена");
- return SendClientMessage(playerid,CGRAY,"Нельзя брать меньше 1 патрона");
- }
- if(ammo > gHouses[houseid][houseGun][storeslot])
- {
- new gunname[32],mes[128];
- GetWeaponName(gHintGunID[storeslot],gunname,32);
- format(mes,sizeof(mes),"{"#cWHITE"}Укажите сколько патронов{"#cGREEN"}%s{"#cWHITE"} Вы хотите взять:");
- ShowPlayerDialog(playerid,dStoreGet,1,"Шкаф",mes,"Взять","Отмена");
- return SendClientMessage(playerid,CGRAY,"Недостаточно патронов в шкафу");
- }
- gHouses[houseid][houseGun][storeslot] -= ammo;
- SaveStoreGun(houseid);
- UpdateHouseGun(houseid);
- GivePlayerWeaponEx(playerid,GetStoreGunID(storeslot),ammo);
- GameTextForPlayer(playerid," ",100,3);
- MeAction(playerid,"взял(а) оружие и патроны из шкафа");
- new active=-1;
- for(new i;i<9;i++) if(gHouses[houseid][houseGun][i]) active = i;
- if(active == -1)
- {
- SendClientMessage(playerid,CGRAY,"В шкафу больше нет оружия");
- new Float:x, Float:y, Float:z, Float:x1, Float:y1, Float:z1;
- x = GetPVarFloat(playerid,"oldcx");
- y = GetPVarFloat(playerid,"oldcy");
- z = GetPVarFloat(playerid,"oldcz");
- GetPlayerCameraPos(playerid,x1,y1,z1);
- InterpolateCameraPos(playerid,x1,y1,z1,x,y,z,700,CAMERA_MOVE);
- SetTimerEx("SetCameraBehindPlayerDelay",1000,false,"i",playerid);
- pTemp[playerid][pSelectStoreGun] = false;
- pTemp[playerid][pStoreGun] = 0;
- GameTextForPlayer(playerid," ",100,3);
- TogglePlayerControllable(playerid,1);
- }
- }
- case dSafeCode:
- {
- if(!response) return 1;
- new code = strval(inputtext);
- new houseid = pData[playerid][pHouse] - 1;
- if(!isNumeric(inputtext) || strlen(inputtext) != 4 || code != gHouses[houseid][houseSafeCode]) return SendClientMessage(playerid,CGRAY,"Код введен неверно");
- new mes[128];
- format(mes,sizeof(mes),"{"#cWHITE"}Наркотики [{"#cGREEN"}%d/10000{"#cWHITE"}]\nДеньги [{"#cGREEN"}%d$/1000000${"#cWHITE"}]",gHouses[houseid][houseDrugs],gHouses[houseid][houseSafeMoney]);
- ShowPlayerDialog(playerid,dSafe,0,"Сейф",mes,"Далее","Отмена");
- }
- case dSafe:
- {
- if(!response) return 1;
- else ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
- }
- case dSafeAction:
- {
- if(!response)
- {
- new houseid = pData[playerid][pHouse] - 1;
- new mes[128];
- format(mes,sizeof(mes),"{"#cWHITE"}Наркотики [{"#cGREEN"}%d/10000{"#cWHITE"}]\nДеньги [{"#cGREEN"}%d$/1000000${"#cWHITE"}]",gHouses[houseid][houseDrugs],gHouses[houseid][houseSafeMoney]);
- return ShowPlayerDialog(playerid,dSafe,0,"Сейф",mes,"Далее","Отмена");
- }
- switch(listitem)
- {
- case 0: ShowPlayerDialog(playerid,dSafePutMoney,1,"Сейф","{"#cWHITE"}Укажите сумму, которую хотите положить в сейф:","Положить","Отмена");
- case 1: ShowPlayerDialog(playerid,dSafeGetMoney,1,"Сейф","{"#cWHITE"}Укажите сумму, которую хотите взять из сейфа:","Взять","Отмена");
- case 2: ShowPlayerDialog(playerid,dSafePutDrug,1,"Сейф","{"#cWHITE"}Укажите к-во наркотиков, которое Вы хотите положить в сейф","Положить","Отмена");
- case 3: ShowPlayerDialog(playerid,dSafeGetDrug,1,"Сейф","{"#cWHITE"}Укажите к-во наркотиков, которое Вы взять из сейфа","Взять","Отмена");
- case 4: ShowPlayerDialog(playerid,dSafeCodeChange,1,"Сейф","{"#cWHITE"}Введите новый код от сейфа в формате \"{"#cRED"}XXXX{"#cWHITE"}\"","Изменить","Отмена");
- }
- }
- case dSafePutMoney:
- {
- if(!response) ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
- new money = strval(inputtext);
- if(money < 1 || money > 1000000)
- {
- SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"Неверная сумма");
- return ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
- }
- if(GetPlayerMoneyEx(playerid) < money)
- {
- SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"У Вас недостаточно денег");
- return ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
- }
- new houseid = pData[playerid][pHouse] - 1;
- if(gHouses[houseid][houseSafeMoney] + money > 1000000)
- {
- SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"У Вас недостаточно места в сейфе");
- return ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
- }
- new query[128],reason[24];
- format(reason,24,"safeput(%d)",houseid+1);
- format(query,sizeof(query),"UPDATE `houses` SET `safemoney` = '%d' WHERE id = '%d'",gHouses[houseid][houseSafeMoney]+money,houseid+1);
- sql_query(zConn, query);
- gHouses[houseid][houseSafeMoney] += money;
- TransferMoney(playerid,-1,money,reason);
- MeAction(playerid,"положил(а) деньги в сейф");
- ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
- }
- case dSafeGetMoney:
- {
- if(!response) ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
- new money = strval(inputtext);
- new houseid = pData[playerid][pHouse] - 1;
- if(money < 1 || money > 1000000) SendClientMessage(playerid,CGRAY,"Сумма должна быть от 1 до 1000000");
- else if(money > gHouses[houseid][houseSafeMoney]) SendClientMessage(playerid,CGRAY,"У Вас недостаточно денег в сейфе");
- else
- {
- new query[128];
- format(query,sizeof(query),"UPDATE `houses` SET `safemoney` = '%d' WHERE id = '%d'",gHouses[houseid][houseSafeMoney]-money,houseid+1);
- sql_query(zConn, query);
- gHouses[houseid][houseSafeMoney] -= money;
- TransferMoney(-1,playerid,money,"safeget");
- MeAction(playerid,"взял(а) деньги из сейфа");
- }
- ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
- }
- case dSafePutDrug:
- {
- if(!response) ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
- new drug = strval(inputtext);
- new houseid = pData[playerid][pHouse] - 1;
- if(drug < 1 || drug > 2000) SendClientMessage(playerid,CGRAY,"Вы не можете положить меньше 1 и больше 2000 г. наркотиков в сейф");
- else if(pData[playerid][pDrugs] < drug) SendClientMessage(playerid,CGRAY,"У Вас недостаточно наркотиков");
- else if(gHouses[houseid][houseDrugs] + drug > 2000) SendClientMessage(playerid,CGRAY,"Недостаточно места в сейфе");
- else
- {
- new query[128];
- format(query,sizeof(query),"UPDATE `houses` SET `drugs` = '%d' WHERE id = '%d'",gHouses[houseid][houseDrugs]+drug,houseid+1);
- sql_query(zConn, query);
- gHouses[houseid][houseDrugs] += drug;
- pData[playerid][pDrugs] -= drug;
- MeAction(playerid,"положил(а) наркотики в сейф");
- }
- }
- case dSafeGetDrug:
- {
- if(!response) ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
- new drug = strval(inputtext);
- new houseid = pData[playerid][pHouse] - 1;
- if(drug < 1 || drug > 2000) SendClientMessage(playerid,CGRAY,"Вы не можете взять меньше 1 и больше 2000 г. наркотиков в сейф");
- else if(gHouses[houseid][houseDrugs] < drug) SendClientMessage(playerid,CGRAY,"У Вас недостаточно наркотиков в сейфе");
- else
- {
- new query[128];
- format(query,sizeof(query),"UPDATE `houses` SET `drugs` = '%d' WHERE id = '%d'",gHouses[houseid][houseDrugs]-drug,houseid+1);
- sql_query(zConn, query);
- gHouses[houseid][houseDrugs] -= drug;
- pData[playerid][pDrugs] += drug;
- MeAction(playerid,"взял(а) наркотики из сейфа");
- }
- }
- case dSafeCodeChange:
- {
- if(!response)
- {
- new houseid = pData[playerid][pHouse] - 1;
- new mes[128];
- format(mes,sizeof(mes),"{"#cWHITE"}Наркотики [{"#cGREEN"}%d/10000{"#cWHITE"}]\nДеньги [{"#cGREEN"}%d$/1000000${"#cWHITE"}]",gHouses[houseid][houseDrugs],gHouses[houseid][houseSafeMoney]);
- return ShowPlayerDialog(playerid,dSafe,0,"Сейф",mes,"Далее","Отмена");
- }
- if(strlen(inputtext) != 4 || !isNumeric(inputtext))
- {
- SendClientMessage(playerid,CGRAY,"Код должен состоять из 4-х цифр");
- return ShowPlayerDialog(playerid,dSafeCodeChange,1,"Сейф","{"#cWHITE"}Введите новый код от сейфа в формате \"{"#cRED"}XXXX{"#cWHITE"}\"","Изменить","Отмена");
- }
- new code = strval(inputtext);
- SetPVarInt(playerid,"safecode",code);
- ShowPlayerDialog(playerid,dSafeCodeChange2,1,"Сейф","{"#cWHITE"}Введите новый код еще раз","Изменить","Отмена");
- }
- case dSafeCodeChange2:
- {
- if(!response)
- {
- new houseid = pData[playerid][pHouse] - 1;
- new mes[128];
- format(mes,sizeof(mes),"{"#cWHITE"}Наркотики [{"#cGREEN"}%d/10000{"#cWHITE"}]\nДеньги [{"#cGREEN"}%d$/1000000${"#cWHITE"}]",gHouses[houseid][houseDrugs],gHouses[houseid][houseSafeMoney]);
- return ShowPlayerDialog(playerid,dSafe,0,"Сейф",mes,"Далее","Отмена");
- }
- if(strlen(inputtext) != 4 || !isNumeric(inputtext))
- {
- SendClientMessage(playerid,CGRAY,"Код должен состоять из 4-х цифр");
- return ShowPlayerDialog(playerid,dSafeCodeChange,1,"Сейф","{"#cWHITE"}Введите новый код от сейфа в формате \"{"#cRED"}XXXX{"#cWHITE"}\"","Изменить","Отмена");
- }
- new code = strval(inputtext);
- if(code != GetPVarInt(playerid,"safecode"))
- {
- SendClientMessage(playerid,CGRAY,"Коды не совпадают");
- return ShowPlayerDialog(playerid,dSafeCodeChange,1,"Сейф","{"#cWHITE"}Введите новый код от сейфа в формате \"{"#cRED"}XXXX{"#cWHITE"}\"","Изменить","Отмена");
- }
- new houseid = pData[playerid][pHouse] - 1;
- gHouses[houseid][houseSafeCode] = code;
- new query[128];
- format(query,sizeof(query),"UPDATE `houses` SET `safecode` = '%d' WHERE id = '%d'",code,houseid+1);
- sql_query(zConn, query);
- format(query,sizeof(query),"Ваш новый код сейфа: %s. Не забудьте его!",inputtext);
- SendClientMessage(playerid,CGREEN,query);
- }
- case dBuySkin:
- {
- if(!response) return 1;
- new houseid = pData[playerid][pHouse]-1;
- if(!pData[playerid][pHouse] || !gHouses[houseid][houseImprove][3] || ((houseid+1) > 0 && pData[playerid][pMysqlID] != gHouses[houseid][houseOwnerID])) ShowPlayerDialog(playerid,dBuySkin2,0,"Покупка одежды","{"#cRED"}Внимание! {"#cWHITE"}У Вас нет шкафа для одежды.\nЕсли Вы купите эту одежду, то она заменит вашу текущую\nВы все равно хотите купить Выбранную одежду?","Да","Нет");
- else
- {
- new skinid = GetPVarInt(playerid,"clothes_select");
- new skin = gSkins[skinid][skinID];
- new price = GetSkinPrice(skinid);
- new id = pTemp[playerid][pSelectedBusinessID];
- new slot=-1;
- for(new i;i<3;i++)
- {
- if(skin == gHouses[houseid][houseSkin][i]) return SendClientMessage(playerid,CGRAY,"У Вас уже есть эта одежда в шкафу");
- if(!gHouses[houseid][houseSkin][i]) {slot = i; break;}
- }
- if(slot == -1) return ShowPlayerDialog(playerid,dBuySkin2,0,"Покупка одежды","{"#cRED"}Внимание! {"#cWHITE"}У Вас недостаточно места в шкафу.\nЕсли Вы купите эту одежду, то она заменит вашу текущую\nВы все равно хотите купить Выбранную одежду?","Да","Нет");
- if(GetPlayerMoneyEx(playerid) < price) return SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"Недостаточно денег");
- if(gBusiness[id][busiOwnerID])
- {
- if(gBusiness[id][busiProduct] - floatround((price / 150) * 5) / 10 <= 0) return SendClientMessage(playerid, CGRAY, "Ошибка: В бизнесе недостаточно продуктов.");
- }
- gBusiness[id][busiBank] += floatround((price / 150) * 12);
- gBusiness[id][busiProduct] -= floatround((price / 150) * 5) / 20;
- UpdateBusinessText(id);
- UpdateBusinessDataEx(id+1,"product",gBusiness[id][busiProduct],"bank",gBusiness[id][busiBank]);
- gHouses[houseid][houseSkin][slot] = skin;
- UpdateHouseDress(houseid);
- TransferMoney(playerid,-1,price,"buyskin");
- SendClientMessage(playerid,CGREEN,"Одежда была доставлена в ваш шкаф");
- pTemp[playerid][pChangingSkin] = false;
- if(GetPVarInt(playerid, "curskin") == pData[playerid][pFractionSkin] || (!(houseid+1) || ((houseid+1) > 0 && gHouses[houseid][houseOwnerID] != pData[playerid][pMysqlID])) && pData[playerid][pFraction]) SetPlayerSkin(playerid, GetPVarInt(playerid, "curskin"));
- else pData[playerid][pSkin] = skin, SetPlayerSkin(playerid,skin);
- HidePlayerClothesTD(playerid);
- pTemp[playerid][pJustTP] = true;
- SetPlayerPos(playerid, GetPVarFloat(playerid, "posx"), GetPVarFloat(playerid, "posy"), GetPVarFloat(playerid, "posz"));
- SetPlayerInterior(playerid, GetPVarInt(playerid, "interior"));
- SetPlayerVirtualWorld(playerid, GetPVarInt(playerid, "vw"));
- SetPlayerFacingAngle(playerid, GetPVarInt(playerid, "posa"));
- TogglePlayerControllable(playerid, 1);
- SetCameraBehindPlayer(playerid);
- DeletePVar(playerid, "posx");
- DeletePVar(playerid, "posy");
- DeletePVar(playerid, "posz");
- DeletePVar(playerid, "posa");
- DeletePVar(playerid, "interior");
- DeletePVar(playerid, "vw");
- DeletePVar(playerid, "clothes_sel");
- DeletePVar(playerid, "clothes_class");
- pTemp[playerid][pChangingSkin] = false;
- }
- }
- case dBuySkin2:
- {
- if(!response) return 1;
- new skin;
- new skinid = GetPVarInt(playerid,"clothes_select");
- new houseid = pData[playerid][pHouse]-1;
- skin = gSkins[skinid][skinID];
- new price = GetSkinPrice(skinid);
- new id = pTemp[playerid][pSelectedBusinessID];
- if(GetPlayerMoneyEx(playerid) < price) return SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"Недостаточно денег");
- if(gBusiness[id][busiOwnerID])
- {
- if(gBusiness[id][busiProduct] - floatround((price / 150) * 5) / 10 <= 0) return SendClientMessage(playerid, CGRAY, "Ошибка: В бизнесе недостаточно продуктов.");
- }
- gBusiness[id][busiBank] += floatround((price / 150) * 5);
- gBusiness[id][busiProduct] -= floatround((price / 150) * 5) / 10;
- UpdateBusinessText(id);
- UpdateBusinessDataEx(id+1,"product",gBusiness[id][busiProduct],"bank",gBusiness[id][busiBank]);
- if((houseid+1) && pData[playerid][pMysqlID] == gHouses[houseid][houseOwnerID])
- {
- new slot=-1, cnt;
- for(new i;i<3;i++)
- {
- if(gHouses[houseid][houseSkin][i]) cnt++;
- if(gHouses[houseid][houseSkin][i] == pData[playerid][pSkin]) slot = i;
- }
- if(cnt >= 3)
- {
- if(slot == -1) return SendClientMessage(playerid,CRED,"Ошибка при нахождении заменямого скина в шкафу");
- gHouses[houseid][houseSkin][slot] = skin;
- UpdateHouseDress(houseid);
- }
- }
- UpdatePlayerData(playerid,"skin",skin);
- TransferMoney(playerid,-1,price,"buyskin");
- pData[playerid][pSkin] = skin;
- pTemp[playerid][pChangingSkin] = false;
- if(GetPVarInt(playerid, "curskin") == pData[playerid][pFractionSkin] || (!(houseid+1) || ((houseid+1) > 0 && gHouses[houseid][houseOwnerID] != pData[playerid][pMysqlID])) && pData[playerid][pFraction]) SetPlayerSkin(playerid, GetPVarInt(playerid, "curskin"));
- else SetPlayerSkin(playerid,pData[playerid][pSkin]);
- HidePlayerClothesTD(playerid);
- pTemp[playerid][pJustTP] = true;
- SetPlayerPos(playerid, GetPVarFloat(playerid, "posx"), GetPVarFloat(playerid, "posy"), GetPVarFloat(playerid, "posz"));
- SetPlayerInterior(playerid, GetPVarInt(playerid, "interior"));
- SetPlayerVirtualWorld(playerid, GetPVarInt(playerid, "vw"));
- SetPlayerFacingAngle(playerid, GetPVarInt(playerid, "posa"));
- TogglePlayerControllable(playerid, 1);
- SetCameraBehindPlayer(playerid);
- DeletePVar(playerid, "posx");
- DeletePVar(playerid, "posy");
- DeletePVar(playerid, "posz");
- DeletePVar(playerid, "posa");
- DeletePVar(playerid, "interior");
- DeletePVar(playerid, "vw");
- DeletePVar(playerid, "clothes_sel");
- DeletePVar(playerid, "clothes_class");
- pTemp[playerid][pChangingSkin] = false;
- }
- case dFreez:
- {
- if(!response) return 1;
- new products,name[24];
- switch(listitem)
- {
- case 0: {products = 10; strcat(name,"хот-дог");}
- case 1: {products = 15; strcat(name,"бургер");}
- case 2: {products = 30; strcat(name,"пиццу");}
- }
- new houseid = pData[playerid][pHouse] - 1;
- if(gHouses[houseid][houseProducts] < products)
- {
- SFCM(playerid,CGRAY,"У Вас в холодильнике недостаточно продуктов. %d/%d",gHouses[houseid][houseProducts],products);
- ShowPlayerDialog(playerid,dFreez,2,"Холодильник","Хот-дог ({"#cRED"}-10 прод. {"#cGREEN"}+20 сытость{"#cWHITE"})\nБургер ({"#cRED"}-15 прод. {"#cGREEN"}+30 сытость{"#cWHITE"})\nПицца ({"#cRED"}-30 прод. {"#cGREEN"}+60 сытость{"#cWHITE"})","Съесть","Отмена");
- return 1;
- }
- new query[128];
- format(query,sizeof(query),"UPDATE `houses` SET `products` = '%d' WHERE `id` = '%d'",gHouses[houseid][houseProducts]-products,houseid+1);
- sql_query(zConn, query);
- gHouses[houseid][houseProducts] -= products;
- SFCM(playerid,CORANGE,"Чтобы съесть напишите {"#cWHITE"}/eat{"#cORANGE"}. Осталось %d продуктов",gHouses[houseid][houseProducts]);
- SendClientMessage(playerid,-1,"Чтобы положить поднос, введите {"#cORANGE"}/put{"#cWHITE"}.");
- new mes[128];
- format(mes,sizeof(mes),"взял(а) %s из холодильника",name);
- MeAction(playerid,mes);
- if(listitem == 1) SetPlayerAttachedObject(playerid,0,2214,3,0.232999,-0.376998,-0.408999,54.199886,-35.700153,-35.000019,1.000000,1.000000,1.000000);
- else if(listitem == 2) SetPlayerAttachedObject(playerid,0,2220,3,0.232999,-0.376998,-0.408999,54.199886,-35.700153,-35.000019,1.000000,1.000000,1.000000);
- else if(!listitem) SetPlayerAttachedObject(playerid,0,19346,6,0.059000,0.059999,0.000000,-97.399963,0.000000,0.000000);
- if(listitem) SetPlayerSpecialAction(playerid, 25);
- SetPVarInt(playerid,"respeat",1);
- }
- }
- }
- stock SaveStoreGun(houseid)
- {
- new query[128],data[64];
- for(new i;i<9;i++)
- {
- if(!i) format(data,sizeof(data),"%d",gHouses[houseid][houseGun][i]);
- else format(data,sizeof(data),"%s|%d",data,gHouses[houseid][houseGun][i]);
- }
- format(query,sizeof(query),"UPDATE `houses` SET `gun` = '%s' WHERE `id` = '%d'",data,houseid+1);
- sql_query(zConn, query);
- return 1;
- }
- stock UpdateHouseGun(houseid)
- {
- new hintid = gHouses[houseid][houseHint];
- for(new i;i<9;i++)
- {
- if(gHouses[houseid][houseGun][i] && !gHouseGunObject[houseid][i]) gHouseGunObject[houseid][i] = CreateDynamicObject(gHintGunID[i],gHintGun[hintid][i][0],gHintGun[hintid][i][1],gHintGun[hintid][i][2],gHintGun[hintid][i][3],gHintGun[hintid][i][4],gHintGun[hintid][i][5],houseid+1);
- else if(!gHouses[houseid][houseGun][i] && gHouseGunObject[houseid][i])
- {
- DestroyDynamicObject(gHouseGunObject[houseid][i]);
- gHouseGunObject[houseid][i] = 0;
- }
- }
- }
- stock GetGunCameraOffset(Float:x, Float:y, Float:angle, &Float:x2, &Float:y2)
- {
- x2 = 0.7*floatsin(angle,degrees) + x;
- y2 = -0.7*floatcos(angle,degrees) + y;
- }
- stock UpdateHouseDress(houseid)
- {
- new cnt;
- new hintid = gHouses[houseid][houseHint];
- for(new l;l<4;l++)
- {
- if(gHouses[houseid][houseSkin][l]) cnt++;
- }
- cnt--;
- if(cnt < 0 && gHouses[houseid][houseOwnerID]) printf("Возможны лаги с одеждой в доме %d",houseid+1);
- else if(cnt > 0)
- {
- CreateDynamicObject(2689,gHintDress[hintid][0][0],gHintDress[hintid][0][1],gHintDress[hintid][0][2],gHintDress[hintid][0][3],gHintDress[hintid][0][4],gHintDress[hintid][0][5],houseid+1);
- if(cnt > 1) CreateDynamicObject(2704,gHintDress[hintid][1][0],gHintDress[hintid][1][1],gHintDress[hintid][1][2],gHintDress[hintid][1][3],gHintDress[hintid][1][4],gHintDress[hintid][1][5],houseid+1);
- if(cnt > 2) CreateDynamicObject(2705,gHintDress[hintid][2][0],gHintDress[hintid][2][1],gHintDress[hintid][2][2],gHintDress[hintid][2][3],gHintDress[hintid][2][4],gHintDress[hintid][2][5],houseid+1);
- }
- new data[24],query[128];
- for(new i;i<4;i++)
- {
- if(!i) format(data,sizeof(data),"%d",gHouses[houseid][houseSkin][i]);
- else format(data,sizeof(data),"%s|%d",data,gHouses[houseid][houseSkin][i]);
- }
- format(query,sizeof(query),"UPDATE `houses` SET `skin` = '%s' WHERE id = '%d'",data,houseid+1);
- sql_query(zConn, query);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement