Barni
Компетентный
Всем привет, вот решил вылажить свою динамическую систему домов..
Примечание* Удалите свою старую систему домов.
В начало мода заносим переменные для домов..
Далее
Сохранение и загрузка домов:
Функции:
В LoadStuff добовляем:
В SaveStuff добовляем:
Для обычной файловой системы в LoadStuff
В SaveStuff
Что типо этого
Ну теперь пилим саму команду, для этого вам понадобится инлкюды zcmd+sscanf Кому надо тот переведёт на strtok
Это мы добавли команды для добовления дома, Передвартиельное тп и тп к тому месту от куда тпешились в предв. просмотр дома
Ну и тп по домам.. для тестирования..
Команду buyhouse sellhouse сделаете сами, т.к. система похожа на гфовскую..
Урок не для новичков!
Основа системы Crime Life Редактировал я Fresh_Light.
Примечание* Удалите свою старую систему домов.
В начало мода заносим переменные для домов..
PHP:
new Float:GetPos[MAX_PLAYERS][3];//Äëÿ /gotoh and /tv
//===============================[Äîìà]=========================================
new HousesToLoad;// Переменная для подгрузки домов из stuff.ini
enum hInfo
{
Float:hEntrancex,
Float:hEntrancey,
Float:hEntrancez,
Float:hExitx,
Float:hExity,
Float:hExitz,
hOwner[MAX_PLAYER_NAME],
hValue,
hHel,
hInt,
hLock,
hOwned,
hTakings,
Text3D: hLabel,
hPickup,
hMIcon,
hVirtual,
hClass,
hVec,
hVecCol1,
hVecCol2,
hVehSost,
};
new HouseInfo[150][hInfo];
//==============================================================================
Сохранение и загрузка домов:
PHP:
//=================================[Dynamic system houses]======================
stock LoadHouses()//Çàãðóæàåò âñå äîìà
{
new filename[128];
print("Äîìà:");
for(new id = 0; id < HousesToLoad; id++)
{
format(filename, sizeof(filename), "houses/ID%d.ini",id);
new File: StuffFile = fopen(filename, io_read);
if (StuffFile)
{
new PassData[256];
new keytmp[256];
fread( StuffFile , PassData , sizeof( PassData ) );
keytmp = ini_GetKey( PassData );
new key[ 256 ] , val[ 256 ];
new Data[ 256 ];
while ( fread( StuffFile , Data , sizeof( Data ) ) )
{
key = ini_GetKey( Data );
if( strcmp( key , "IgnoreThisLine" , true ) == 0 ) { val = ini_GetValue( Data );}//1
if( strcmp( key , "EnterX" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hEntrancex] = floatstr( val ); }
if( strcmp( key , "EnterY" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hEntrancey] = floatstr( val ); }
if( strcmp( key , "EnterZ" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hEntrancez] = floatstr( val ); }
if( strcmp( key , "ExitX" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hExitx] = floatstr( val );}
if( strcmp( key , "ExitY" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hExity] = floatstr( val );}
if( strcmp( key , "ExitZ" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hExitz] = floatstr( val ); }
if( strcmp( key , "Owner" , true ) == 0 ) { val = ini_GetValue( Data ); strmid(HouseInfo[id][hOwner],val,0,strlen(val)-1,MAX_PLAYER_NAME); }
if( strcmp( key , "Value" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hValue] = strval( val ); }
if( strcmp( key , "Hel" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hHel] = strval( val ); }
if( strcmp( key , "Int" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hInt] = strval( val ); }
if( strcmp( key , "Lock" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hLock] = strval( val ); }
if( strcmp( key , "Owned" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hOwned] = strval( val ); }
if( strcmp( key , "Takings" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hTakings] = strval( val ); }
if( strcmp( key , "Virtual" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hVirtual] = strval( val ); }
if( strcmp( key , "Class" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hClass] = strval( val ); }
if( strcmp( key , "Vec" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hVec] = strval( val ); }
if( strcmp( key , "VecCol1" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hVecCol1] = strval( val ); }
if( strcmp( key , "VecCol2" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hVecCol2] = strval( val ); }
if( strcmp( key , "VehSost" , true ) == 0 ) { val = ini_GetValue( Data ); HouseInfo[id][hVehSost] = strval( val ); }
}
new classhouse[32];
if(HouseInfo[id][hClass]==0) classhouse = "Nope";
else if(HouseInfo[id][hClass]==1) classhouse = "D";
else if(HouseInfo[id][hClass]==2) classhouse = "C";
else if(HouseInfo[id][hClass]==3) classhouse = "B";
else if(HouseInfo[id][hClass]==4) classhouse = "A";
if(HouseInfo[id][hOwned] == 0)
{
HouseInfo[id][hMIcon] = CreateDynamicMapIcon(HouseInfo[id][hEntrancex], HouseInfo[id][hEntrancey], HouseInfo[id][hEntrancez], 31, COLOR_WHITE, 0, -1, -1, 400.0);
HouseInfo[id][hPickup] = CreateDynamicPickup(1273, 23, HouseInfo[id][hEntrancex], HouseInfo[id][hEntrancey], HouseInfo[id][hEntrancez],-1,-1,-1,70.0);
}
else if(HouseInfo[id][hOwned] == 1)
{
HouseInfo[id][hMIcon] = CreateDynamicMapIcon(HouseInfo[id][hEntrancex], HouseInfo[id][hEntrancey], HouseInfo[id][hEntrancez], 32, COLOR_WHITE, 0, -1, -1, 400.0);
HouseInfo[id][hPickup] = CreateDynamicPickup(1272, 23, HouseInfo[id][hEntrancex], HouseInfo[id][hEntrancey], HouseInfo[id][hEntrancez],-1,-1,-1,70.0);
}
format(key,sizeof(key),"Êëàññ: %s, Âëàäåëåö: %s\nEnterX: %.4f EnterY: %.4f EnterZ: %.4f",HouseInfo[id][hClass],HouseInfo[id][hOwner],HouseInfo[id][hEntrancex],HouseInfo[id][hEntrancey],HouseInfo[id][hEntrancez]);
print(key);
fclose(StuffFile);
}
}
return true;
}
stock SaveHouse(houseid)
{
new filename[128];
if(houseid == -1)//Ñîõðàíèòü âñå äîìà
{
for(new id = 0; id < HousesToLoad; id++)
{
format(filename,sizeof(filename),"houses/ID%d.ini",id);
new File: hFile = fopen(filename, io_write);
if(hFile)
{
new var[32];
format(var, 32, "IgnoreThisLine\n");fwrite(hFile, var);
format(var, 32, "EnterX=%f\n", HouseInfo[id][hEntrancex]);fwrite(hFile, var);
format(var, 32, "EnterY=%f\n", HouseInfo[id][hEntrancey]);fwrite(hFile, var);
format(var, 32, "EnterZ=%f\n", HouseInfo[id][hEntrancez]);fwrite(hFile, var);
format(var, 32, "ExitX=%f\n", HouseInfo[id][hExitx]);fwrite(hFile, var);
format(var, 32, "ExitY=%f\n", HouseInfo[id][hExity]);fwrite(hFile, var);
format(var, 32, "ExitZ=%f\n", HouseInfo[id][hExitz]);fwrite(hFile, var);
format(var, 32, "Owner=%s\n", HouseInfo[id][hOwner]);fwrite(hFile, var);
format(var, 32, "Value=%d\n", HouseInfo[id][hValue]);fwrite(hFile, var);
format(var, 32, "Hel=%d\n", HouseInfo[id][hHel]);fwrite(hFile, var);
format(var, 32, "Int=%d\n", HouseInfo[id][hInt]);fwrite(hFile, var);
format(var, 32, "Lock=%d\n", HouseInfo[id][hLock]);fwrite(hFile, var);
format(var, 32, "Owned=%d\n", HouseInfo[id][hOwned]);fwrite(hFile, var);
format(var, 32, "Takings=%d\n", HouseInfo[id][hTakings]);fwrite(hFile, var);
format(var, 32, "Virtual=%d\n", HouseInfo[id][hVirtual]);fwrite(hFile, var);
format(var, 32, "Class=%d\n", HouseInfo[id][hClass]);fwrite(hFile, var);
format(var, 32, "Vec=%d\n", HouseInfo[id][hVec]);fwrite(hFile, var);
format(var, 32, "VecCol1=%d\n", HouseInfo[id][hVecCol1]);fwrite(hFile, var);
format(var, 32, "VecCol2=%d\n", HouseInfo[id][hVecCol2]);fwrite(hFile, var);
format(var, 32, "VehSost=%d", HouseInfo[id][hVehSost]);fwrite(hFile, var);
fclose(hFile);
UpdateHouse(id);
}
}
}
else
{
format(filename,sizeof(filename),"houses/ID%d.ini",houseid);
new File: hFile = fopen(filename, io_write);
if(hFile)
{
new var[32];
format(var, 32, "IgnoreThisLine\n");fwrite(hFile, var);
format(var, 32, "EnterX=%f\n", HouseInfo[houseid][hEntrancex]);fwrite(hFile, var);
format(var, 32, "EnterY=%f\n", HouseInfo[houseid][hEntrancey]);fwrite(hFile, var);
format(var, 32, "EnterZ=%f\n", HouseInfo[houseid][hEntrancez]);fwrite(hFile, var);
format(var, 32, "ExitX=%f\n", HouseInfo[houseid][hExitx]);fwrite(hFile, var);
format(var, 32, "ExitY=%f\n", HouseInfo[houseid][hExity]);fwrite(hFile, var);
format(var, 32, "ExitZ=%f\n", HouseInfo[houseid][hExitz]);fwrite(hFile, var);
format(var, 32, "Owner=%s\n", HouseInfo[houseid][hOwner]);fwrite(hFile, var);
format(var, 32, "Value=%d\n", HouseInfo[houseid][hValue]);fwrite(hFile, var);
format(var, 32, "Hel=%d\n", HouseInfo[houseid][hHel]);fwrite(hFile, var);
format(var, 32, "Int=%d\n", HouseInfo[houseid][hInt]);fwrite(hFile, var);
format(var, 32, "Lock=%d\n", HouseInfo[houseid][hLock]);fwrite(hFile, var);
format(var, 32, "Owned=%d\n", HouseInfo[houseid][hOwned]);fwrite(hFile, var);
format(var, 32, "Takings=%d\n", HouseInfo[houseid][hTakings]);fwrite(hFile, var);
format(var, 32, "Virtual=%d\n", HouseInfo[houseid][hVirtual]);fwrite(hFile, var);
format(var, 32, "Class=%d\n", HouseInfo[houseid][hClass]);fwrite(hFile, var);
format(var, 32, "Vec=%d\n", HouseInfo[houseid][hVec]);fwrite(hFile, var);
format(var, 32, "VecCol1=%d\n", HouseInfo[houseid][hVecCol1]);fwrite(hFile, var);
format(var, 32, "VecCol2=%d\n", HouseInfo[houseid][hVecCol2]);fwrite(hFile, var);
format(var, 32, "VehSost=%d", HouseInfo[houseid][hVehSost]);fwrite(hFile, var);
fclose(hFile);
UpdateHouse(houseid);
}
}
return true;
}
PHP:
stock ini_GetKey( line[] )
{
new keyRes[256];
keyRes[0] = 0;
if ( strfind( line , "=" , true ) == -1 ) return keyRes;
strmid( keyRes , line , 0 , strfind( line , "=" , true ) , sizeof( keyRes) );
return keyRes;
}
stock ini_GetValue( line[] )
{
new valRes[256];
valRes[0]=0;
if ( strfind( line , "=" , true ) == -1 ) return valRes;
strmid( valRes , line , strfind( line , "=" , true )+1 , strlen( line ) , sizeof( valRes ) );
return valRes;
}
stock UpdateHouse(idx)
{
DestroyDynamicMapIcon(HouseInfo[idx][hMIcon]);
DestroyDynamicPickup(HouseInfo[idx][hPickup]);
if(HouseInfo[idx][hOwned] == 0)
{
HouseInfo[idx][hMIcon] = CreateDynamicMapIcon(HouseInfo[idx][hEntrancex], HouseInfo[idx][hEntrancey], HouseInfo[idx][hEntrancez], 31, COLOR_WHITE, 0, -1, -1, 400.0);
HouseInfo[idx][hPickup] = CreateDynamicPickup(1273, 23, HouseInfo[idx][hEntrancex], HouseInfo[idx][hEntrancey], HouseInfo[idx][hEntrancez],-1,-1,-1,70);
}
else if(HouseInfo[idx][hOwned] == 1)
{
HouseInfo[idx][hMIcon] = CreateDynamicMapIcon(HouseInfo[idx][hEntrancex], HouseInfo[idx][hEntrancey], HouseInfo[idx][hEntrancez], 32, COLOR_WHITE, 0, -1, -1, 400.0);
HouseInfo[idx][hPickup] = CreateDynamicPickup(1272, 23, HouseInfo[idx][hEntrancex], HouseInfo[idx][hEntrancey], HouseInfo[idx][hEntrancez],-1,-1,-1,70);
}
}
stock GetHouseClass(houseclass)
{
new classhouse[10];
switch(houseclass)
{
case 0: classhouse = "Nope";
case 1: classhouse = "D";
case 2: classhouse = "C";
case 3: classhouse = "B";
case 4: classhouse = "A";
}
return classhouse;
}
PHP:
iniGetInt(File,"Houses",HousesToLoad);
PHP:
iniSetInt(File,"Houses",HousesToLoad);
PHP:
HousesToLoad = strval(arrCoords[2]);//2 это число по порядку загружаемых переменных..
PHP:
public SaveStuff()
{
new coordsstring[256];
format(coordsstring, sizeof(coordsstring), "%d,%d,%d", Jackpot,Security,HousesToLoad);
new File: file2 = fopen("stuff.ini", io_write);
fwrite(file2, coordsstring);
fclose(file2);
return 1;
}
Ну теперь пилим саму команду, для этого вам понадобится инлкюды zcmd+sscanf Кому надо тот переведёт на strtok
PHP:
CMD:addhouse(playerid,params[])
{
if(PlayerInfo[playerid][pAdmin] < 10) return true;
if(HousesToLoad >= sizeof(HouseInfo)) return SendClientMessage(playerid,COLOR_GREY,"Новый дом не может быть создан: текущее кол-во домов превышает допустимое кол-во");
new interior,price,classh,string[80];
new Float:X,Float:Y,Float:Z;
if(sscanf(params,"ddd",interior,price,classh)) return SendClientMessage(playerid,COLOR_GREY,"Подсказка: /addhouse [интерьер] [цена] [Класс] 0 - Nope 1 - D 2 - C 3 - B 4 - A");
if(classh < 0 && 4 > classh) return SendClientMessage(playerid,COLOR_GREY,"Класс должен быть от 0 до 4");
switch(interior)
{
case 0: X = 2468.3701, Y = -1698.1267, Z = 1013.5078, interior = 2;
case 1: X = 2495.9368, Y = -1692.6628, Z =1014.7422, interior = 3;
case 2: X = 2233.8728, Y = -1114.5892, Z = 1050.8828, interior = 5;
case 3: X = 2196.2932,Y = -1204.2164,Z = 1049.0234, interior = 6;
case 4: X = 2318.0532,Y = -1026.1620, Z = 1050.2109, interior = 9;
case 5: X = 2259.8894,Y = -1135.5386, Z = 1050.6328, interior = 10;
case 6: X = 2365.0913,Y = -1134.9622, Z = 1050.8750, interior = 8;
case 7: X= 2283.4558, Y = -1139.5868, Z = 1050.8984, interior = 11;
case 8: X = 2217.5801,Y = -1075.7186, Z = 1050.4844, interior = 1;
case 9: X = 244.2633,Y = 305.1776,Z = 999.1484, interior = 1;
case 10: X = 267.0089,Y = 304.9504,Z = 999.1484, interior = 2;
case 11: X = 235.4259,Y = 1187.1754,Z = 1080.2578, interior = 3;
case 12: X = 226.3336,Y = 1240.0363,Z = 1082.1406, interior = 2;
case 13: X = 223.3103,Y = 1287.3929,Z = 1082.1406, interior = 1;
case 14: X = 226.7142,Y = 1114.3087, Z = 1080.9951, interior = 5;
case 15: X = 295.5774,Y = 1472.6558,Z = 1080.2578, interior = 15;
case 16: X = 260.8918, Y = 1284.7347, Z = 1080.2578, interior = 4;
case 17: X = 24.3465,Y = 1340.5371,Z = 1084.3750, interior = 10;
case 18: X = -260.9048,Y = 1456.7821,Z = 1084.3672, interior = 4;
case 19: X = 140.3034,Y = 1366.3802,Z = 1083.8594, interior = 5;
case 20: X = -69.0937,Y = 1351.6519,Z = 1080.2109, interior = 6;
case 21: X = -284.1492,Y = 1470.7615,Z = 1084.3750, interior = 15;
case 22: X = -42.6183,Y = 1405.8876,Z = 1084.4297, interior = 8;
case 23: X = 83.1937,Y = 1322.6996,Z = 1083.8662, interior = 9;
case 24: X = 260.6850,Y = 1237.5959,Z = 1084.2578, interior = 9;
}
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
HouseInfo[HousesToLoad][hEntrancex] = x;
HouseInfo[HousesToLoad][hEntrancey] = y;
HouseInfo[HousesToLoad][hEntrancez] = z;
HouseInfo[HousesToLoad][hExitx] = X;
HouseInfo[HousesToLoad][hExity] = Y;
HouseInfo[HousesToLoad][hExitz] = Z;
HouseInfo[HousesToLoad][hValue] = price;
HouseInfo[HousesToLoad][hInt] = interior;
HouseInfo[HousesToLoad][hVirtual] = HousesToLoad;
HouseInfo[HousesToLoad][hLock] = 1;
HouseInfo[HousesToLoad][hOwned] = 0;
HouseInfo[HousesToLoad][hClass] = classh;
HouseInfo[HousesToLoad][hVec] = 462;
HouseInfo[HousesToLoad][hVecCol1] = 1;
HouseInfo[HousesToLoad][hVecCol2] = 1;
strmid(HouseInfo[HousesToLoad][hOwner],"The State",0,strlen("The State"),32);
new text[256];
format(text,sizeof(text),"{FF6347}Дом{FFFFFF}\nАдрес: {7CFC00}%d{FFFFFF}\nКласс: {7CFC00}%s{FFFFFF}\nЦена: {7CFC00}$%d{FFFFFF}",HousesToLoad,GetHouseClass(classh),HouseInfo[HousesToLoad][hValue]);
HouseInfo[HousesToLoad][hLabel] = Create3DTextLabel(text,0xFFFFFFFF,HouseInfo[HousesToLoad][hEntrancex],HouseInfo[HousesToLoad][hEntrancey],HouseInfo[HousesToLoad][hEntrancez]+1,20.0,0,1);
HouseInfo[HousesToLoad][hMIcon] = CreateDynamicMapIcon(HouseInfo[HousesToLoad][hEntrancex], HouseInfo[HousesToLoad][hEntrancey], HouseInfo[HousesToLoad][hEntrancez], 31, COLOR_WHITE, 0, -1, -1, 400.0);
HouseInfo[HousesToLoad][hPickup] = CreateDynamicPickup(1273, 23, HouseInfo[HousesToLoad][hEntrancex], HouseInfo[HousesToLoad][hEntrancey], HouseInfo[HousesToLoad][hEntrancez],-1,50);
SaveHouse(HousesToLoad);
HousesToLoad ++;
SaveStuff();
format(string,sizeof(string),"Дом успешно создан ID: [%d]: Интерьер: [%d] Цена: [$%i] Класс: [%s]",HousesToLoad,interior,price,GetHouseClass(classh));
SendClientMessage(playerid,COLOR_WHITE,string);
return true;
}
CMD:tph(playerid,params[])
{
if(PlayerInfo[playerid][pAdmin] < 8) return true;
if(sscanf(params,"d",params[0])) return SendClientMessage(playerid, COLOR_WHITE, "Ââåäèòå: /tph [íîìåð äîìà]");
SetPlayerPosAC(playerid,HouseInfo[params[0]][hEntrancex],HouseInfo[params[0]][hEntrancey],HouseInfo[params[0]][hEntrancez]);
return true;
}
CMD:gotoh(playerid,params[])
{
if(PlayerInfo[playerid][pAdmin] < 10) return true;
if(sscanf(params,"d",params[0])) return SendClientMessage(playerid,COLOR_GREY,"/gotoh [1-33]");
if(GetPlayerInterior(playerid)== 0) GetPlayerPos(playerid,GetPos[playerid][0],GetPos[playerid][1],GetPos[playerid][2]);
new Float: X, Float: Y, Float: Z;
new interior;
switch(params[0])
{
case 0: X = 2468.3701, Y = -1698.1267, Z = 1013.5078, interior = 2;
case 1: X = 2495.9368, Y = -1692.6628, Z =1014.7422, interior = 3;
case 2: X = 2233.8728, Y = -1114.5892, Z = 1050.8828, interior = 5;
case 3: X = 2196.2932,Y = -1204.2164,Z = 1049.0234, interior = 6;
case 4: X = 2318.0532,Y = -1026.1620, Z = 1050.2109, interior = 9;
case 5: X = 2259.8894,Y = -1135.5386, Z = 1050.6328, interior = 10;
case 6: X = 2365.0913,Y = -1134.9622, Z = 1050.8750, interior = 8;
case 7: X= 2283.4558, Y = -1139.5868, Z = 1050.8984, interior = 11;
case 8: X = 2217.5801,Y = -1075.7186, Z = 1050.4844, interior = 1;
case 9: X = 244.2633,Y = 305.1776,Z = 999.1484, interior = 1;
case 10: X = 267.0089,Y = 304.9504,Z = 999.1484, interior = 2;
case 11: X = 235.4259,Y = 1187.1754,Z = 1080.2578, interior = 3;
case 12: X = 226.3336,Y = 1240.0363,Z = 1082.1406, interior = 2;
case 13: X = 223.3103,Y = 1287.3929,Z = 1082.1406, interior = 1;
case 14: X = 226.7142,Y = 1114.3087, Z = 1080.9951, interior = 5;
case 15: X = 295.5774,Y = 1472.6558,Z = 1080.2578, interior = 15;
case 16: X = 260.8918,Y = 1284.7347,Z = 1080.2578, interior = 4;
case 17: X = 24.3465,Y = 1340.5371,Z = 1084.3750, interior = 10;
case 18: X = -260.9048,Y = 1456.7821,Z = 1084.3672, interior = 4;
case 19: X = 140.3034,Y = 1366.3802,Z = 1083.8594, interior = 5;
case 20: X = -69.0937,Y = 1351.6519,Z = 1080.2109, interior = 6;
case 21: X = -284.1492,Y = 1470.7615,Z = 1084.3750, interior = 15;
case 22: X = 83.1937,Y = 1322.6996,Z = 1083.8662, interior = 9;
case 23: X = 260.6850,Y = 1237.5959,Z = 1084.2578, interior = 9;
////////////////////////////NEW TP////////////////////////////////
case 24: X = 2807.62,Y = -1170.15,Z = 1025.57, interior = 8;//Rifa house
case 25: X = 2233.69,Y = -1112.81,Z = 1050.88, interior = 5; //new house
case 26: X = 419.89,Y = 2537.11,Z = 10.00, interior = 10;//new house
case 27: X = 2319.12,Y = -1023.95,Z = 1050.21, interior = 9;//new house
case 28: X = 446.32,Y = 509.96,Z = 1001.41, interior = 12;//new house
case 29: X = 224.28,Y = 1289.0,Z = 1082.13, interior = 1;//new house
case 30: X = -42.52,Y = 1408.22,Z = 1084.42, interior = 8;//new house
case 31: X = -68.51,Y = 1353.84,Z = 1080.21, interior = 6;//Ballas house
}
SetPlayerPos(playerid,X,Y,Z);
SetPlayerInterior(playerid,interior);
return true;
}
CMD:tplh(playerid,params[])
{
if(PlayerInfo[playerid][pAdmin] < 8) return true;
if(GetPos[playerid][0] != 0 && GetPos[playerid][1] != 0 && GetPos[playerid][2] != 0)
{
SetPlayerInterior(playerid,0);
SetPlayerPosAC(playerid,GetPos[playerid][0],GetPos[playerid][1],GetPos[playerid][2]);
}
return true;
}
Ну и тп по домам.. для тестирования..
Команду buyhouse sellhouse сделаете сами, т.к. система похожа на гфовскую..
Урок не для новичков!
Основа системы Crime Life Редактировал я Fresh_Light.
Последнее редактирование:
