Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <a_players>
- #include <Dini>
- #include <streamer>
- #include <zcmd>
- #include <sscanf2>
- #define MAX_HOUSES 200
- #define COLOR_WHITE 0xFFFFFFAA //White color
- #define COLOR_RED 0xFF0000AA //Red Color
- #define COLOR_GREEN 0x00FF00AA //Green color
- enum hInfo
- {
- Float:hEnterX, //Entrance X. It's an float! example: 0.0000000. I'm gonna use the same with the other entrances/exits
- Float:hEnterY,
- Float:hEnterZ,
- Float:hExitX,
- Float:hExitY,
- Float:hExitZ,
- hInsideInt, //The inside interior.. DUH!
- hInsideVir, //Already subscribed above
- hOutsideInt,
- hOutsideVir,
- bool:hOwned, //boolean! Is house owned? NO = False, YES = True
- hOwner[MAX_PLAYER_NAME], //The house owner! I'm gonna use MAX_PLAYER_NAME, because a player can't have a longer name :')
- hPrice, //Will store the price
- hPickup, //The pickup. This is used to remove/move the pickup icon!
- hIcon, //The map icon. Also used to remove/move it! We are going to need an ID. Without an ID we can't do NOTHING!
- h3D,
- };
- new HouseInfo[MAX_HOUSES][hInfo];
- stock LoadHouse(houseid)
- {
- new fstring[10]; //The string for the file [format]
- format(fstring, 10, "Houses/%d", houseid); //Format the filename
- if(!dini_Exists(fstring)) return 0; //"If Houses/{houseid} not exists then return False (0)"
- HouseInfo[houseid][hEnterX] = dini_Float(fstring, "EnterX");
- HouseInfo[houseid][hEnterY] = dini_Float(fstring, "EnterY");
- HouseInfo[houseid][hEnterZ] = dini_Float(fstring, "EnterZ");
- HouseInfo[houseid][hExitX] = dini_Float(fstring, "ExitX");
- HouseInfo[houseid][hExitY] = dini_Float(fstring, "ExitY");
- HouseInfo[houseid][hExitZ] = dini_Float(fstring, "ExitZ");
- HouseInfo[houseid][hInsideInt] = dini_Int(fstring, "InsideInt");
- HouseInfo[houseid][hInsideVir] = dini_Int(fstring, "InsideVir");
- HouseInfo[houseid][hOutsideInt] = dini_Int(fstring, "OutsideInt");
- HouseInfo[houseid][hOutsideVir] = dini_Int(fstring, "OutsideVir");
- HouseInfo[houseid][hOwned] = dini_Bool(fstring, "Owned") ? true : false; //Because it is an boolean: ? true : false;
- // strmid(HouseInfo[houseid][hOwner], dini_Get(fstring, "Owner"), 0, false, strlen(dini_Get("Owner"))); //Used this one instead of {string} = {string}. I've ever read that this is faster
- strmid(HouseInfo[houseid][hOwner], dini_Get(fstring, "Owner"), 0, false, strlen(dini_Get(fstring, "Owner")));
- HouseInfo[houseid][hPrice] = dini_Int(fstring, "Price");
- return 1;
- }
- stock LHouse()
- {
- for(new i=0; i<MAX_HOUSES; i++)
- {
- new fstring[10]; //The string for the file [format]
- format(fstring, 10, "Houses/%d", i); //Format the filename
- if(!dini_Exists(fstring)) return 0; //"If Houses/{houseid} not exists then return False (0)"
- HouseInfo[i][hEnterX] = dini_Float(fstring, "EnterX");
- HouseInfo[i][hEnterY] = dini_Float(fstring, "EnterY");
- HouseInfo[i][hEnterZ] = dini_Float(fstring, "EnterZ");
- HouseInfo[i][hExitX] = dini_Float(fstring, "ExitX");
- HouseInfo[i][hExitY] = dini_Float(fstring, "ExitY");
- HouseInfo[i][hExitZ] = dini_Float(fstring, "ExitZ");
- HouseInfo[i][hInsideInt] = dini_Int(fstring, "InsideInt");
- HouseInfo[i][hInsideVir] = dini_Int(fstring, "InsideVir");
- HouseInfo[i][hOutsideInt] = dini_Int(fstring, "OutsideInt");
- HouseInfo[i][hOutsideVir] = dini_Int(fstring, "OutsideVir");
- HouseInfo[i][hOwned] = dini_Bool(fstring, "Owned") ? true : false; //Because it is an boolean: ? true : false;
- // strmid(HouseInfo[houseid][hOwner], dini_Get(fstring, "Owner"), 0, false, strlen(dini_Get("Owner"))); //Used this one instead of {string} = {string}. I've ever read that this is faster
- strmid(HouseInfo[i][hOwner], dini_Get(fstring, "Owner"), 0, false, strlen(dini_Get(fstring, "Owner")));
- HouseInfo[i][hPrice] = dini_Int(fstring, "Price");
- LoadHouseVisual(i, false);
- }
- return 1;
- }
- stock LHouse2()
- {
- for(new i=0; i<MAX_HOUSES; i++)
- {
- new fstring[10]; //The string for the file [format]
- format(fstring, 10, "Houses/%d", i); //Format the filename
- if(!dini_Exists(fstring)) return 0; //"If Houses/{houseid} not exists then return False (0)"
- HouseInfo[i][hEnterX] = dini_Float(fstring, "EnterX");
- HouseInfo[i][hEnterY] = dini_Float(fstring, "EnterY");
- HouseInfo[i][hEnterZ] = dini_Float(fstring, "EnterZ");
- HouseInfo[i][hExitX] = dini_Float(fstring, "ExitX");
- HouseInfo[i][hExitY] = dini_Float(fstring, "ExitY");
- HouseInfo[i][hExitZ] = dini_Float(fstring, "ExitZ");
- HouseInfo[i][hInsideInt] = dini_Int(fstring, "InsideInt");
- HouseInfo[i][hInsideVir] = dini_Int(fstring, "InsideVir");
- HouseInfo[i][hOutsideInt] = dini_Int(fstring, "OutsideInt");
- HouseInfo[i][hOutsideVir] = dini_Int(fstring, "OutsideVir");
- HouseInfo[i][hOwned] = dini_Bool(fstring, "Owned") ? true : false; //Because it is an boolean: ? true : false;
- // strmid(HouseInfo[houseid][hOwner], dini_Get(fstring, "Owner"), 0, false, strlen(dini_Get("Owner"))); //Used this one instead of {string} = {string}. I've ever read that this is faster
- strmid(HouseInfo[i][hOwner], dini_Get(fstring, "Owner"), 0, false, strlen(dini_Get(fstring, "Owner")));
- HouseInfo[i][hPrice] = dini_Int(fstring, "Price");
- LoadHouseVisual(i, true);
- }
- return 1;
- }
- stock LoadHouseVisual(houseid, bool:reload = false)
- {
- if(reload)
- {
- DestroyDynamicMapIcon(HouseInfo[houseid][hIcon]);
- DestroyDynamicPickup(HouseInfo[houseid][hPickup]);
- Delete3DTextLabel(HouseInfo[houseid][h3D]); // tu pierwszy warning 213: tag mismatch
- }
- if(!HouseInfo[houseid][hOwned]) //Also known as 'if(HouseInfo[houseid][hOwned] == false)' - With aan boolean you can use '!{option}' and "{option}"! (!IsPlayerAdmin())) (IsPlayerAdmin())
- {
- //So the house is not owned. Let's make an green mapicon and en green house pickup!
- new string[128];
- format(string, 128, "Dom %s\nID; %d\n Cena: %d", HouseInfo[houseid][hOwner], houseid, HouseInfo[houseid][hPrice]);
- HouseInfo[houseid][h3D] = Create3DTextLabel( string, 0x008080FF, HouseInfo[houseid][hEnterX], HouseInfo[houseid][hEnterY], HouseInfo[houseid][hEnterZ], 30.0, 0, 0); // tu 2
- HouseInfo[houseid][hIcon] = CreateDynamicMapIcon(HouseInfo[houseid][hEnterX], HouseInfo[houseid][hEnterY], HouseInfo[houseid][hEnterZ], 31, 0, HouseInfo[houseid][hOutsideVir], HouseInfo[houseid][hOutsideInt]);
- HouseInfo[houseid][hPickup] = CreateDynamicPickup(1273, 1, HouseInfo[houseid][hEnterX], HouseInfo[houseid][hEnterY], HouseInfo[houseid][hEnterZ], HouseInfo[houseid][hOutsideVir], HouseInfo[houseid][hOutsideInt]);
- }
- else
- {
- //House is already owned. Blue pickup and red icon!
- HouseInfo[houseid][hIcon] = CreateDynamicMapIcon(HouseInfo[houseid][hEnterX], HouseInfo[houseid][hEnterY], HouseInfo[houseid][hEnterZ], 31, 0, HouseInfo[houseid][hOutsideVir], HouseInfo[houseid][hOutsideInt]);
- HouseInfo[houseid][hPickup] = CreateDynamicPickup(1272, 1, HouseInfo[houseid][hEnterX], HouseInfo[houseid][hEnterY], HouseInfo[houseid][hEnterZ], HouseInfo[houseid][hOutsideVir], HouseInfo[houseid][hOutsideInt]);
- new string[128]; //
- format(string, 128, "Dom gracza: %s\nID; %d", HouseInfo[houseid][hOwner], houseid ); //Format the filename
- HouseInfo[houseid][h3D] = Create3DTextLabel( string, 0x008080FF, HouseInfo[houseid][hEnterX], HouseInfo[houseid][hEnterY], HouseInfo[houseid][hEnterZ], 30.0, 0, 0); // tu 3
- }
- // return 0;
- }
- stock SaveHouse(houseid)
- {
- new fstring[10]; //The string for the file [format]
- format(fstring, 10, "Houses/%d", houseid); //Format the filename
- dini_Create(fstring);//tworzy plik
- dini_FloatSet(fstring, "EnterX", HouseInfo[houseid][hEnterX]);
- dini_FloatSet(fstring, "EnterY", HouseInfo[houseid][hEnterY]);
- dini_FloatSet(fstring, "EnterZ", HouseInfo[houseid][hEnterZ]);
- dini_FloatSet(fstring, "ExitX", HouseInfo[houseid][hExitX]);
- dini_FloatSet(fstring, "ExitY", HouseInfo[houseid][hExitY]);
- dini_FloatSet(fstring, "ExitZ", HouseInfo[houseid][hExitZ]);
- dini_IntSet(fstring, "InsideInt", HouseInfo[houseid][hInsideInt]);
- dini_IntSet(fstring, "InsideVir", HouseInfo[houseid][hInsideVir]);
- dini_IntSet(fstring, "OutsideInt", HouseInfo[houseid][hOutsideInt]);
- dini_IntSet(fstring, "OutsideVir", HouseInfo[houseid][hOutsideVir]);
- dini_BoolSet(fstring, "Owned", HouseInfo[houseid][hOwned]);
- // dini_Set(fstring, "Owner", HouseInfo[houseid][hOwner]), strmid(HouseInfo[houseid][hOwner], "Na sprzedaz", 0, false, 8); //Set the owner of the house to "For Sale" //No, not "GetSet"! :P
- // dini_Set(fstring, "Owner", HouseInfo[houseid][hOwner]), 0, false, strlen(dini_Set(fstring, "Owner", HouseInfo[houseid][hOwner]));
- dini_Set(fstring, "Owner", "Na Sprzedaz"); //No, not "GetSet"! :P
- dini_IntSet(fstring, "Price", HouseInfo[houseid][hPrice]);
- }
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" Domy zaladowane ");
- print("--------------------------------------\n");
- SetTimer("UpdatePlayersHouseInfo", 1000, true); //Every 1000 milli seconds (1 sec.) it will be used again
- LHouse();
- // LHouseVisual(false);
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- forward UpdatePlayersHouseInfo();
- public UpdatePlayersHouseInfo()
- {
- new str[100]; //The string we are gonna format
- for(new i = 0; i < MAX_PLAYERS; i++) //Loop through all the players
- {
- for(new j = 0; j < MAX_HOUSES; j++) //Loop through all the houses
- {
- if(IsPlayerInRangeOfPoint(j, 1.5, HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ]) && GetPlayerInterior(j) == HouseInfo[i][hOutsideInt] && GetPlayerVirtualWorld(j) == HouseInfo[i][hOutsideVir]) //You already know this! If you don't know it, do step 3 again!
- {
- if(HouseInfo[j][hOwned]) //Is house owned?
- format(str, 100, "~w~Dom gracza ~r~%s", HouseInfo[j][hOwner]); //Will give: {white_color}House owned by {yellow_color}OWNER
- else //House isn't owned
- format(str, 100, "~w~Dom na sprzedaz!~n~Cena: ~g~$%d,-", HouseInfo[j][hPrice]); //Will give: {white_color}House for sale!{new line}Price: {green_color}$PRICE
- GameTextForPlayer(i, str, 2000, 3); //Show the text 2 seconds!
- }
- }
- }
- return 1;
- }
- /*
- public OnPlayerRequestClass(playerid, classid)
- {
- SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
- return 1;
- }
- */
- public OnPlayerConnect(playerid)
- {
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- public OnVehicleSpawn(vehicleid)
- {
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- return 1;
- }
- CMD:komenda(playerid, params[])
- {
- //zrob cos tutaj
- }
- CMD:ladujdomy(playerid, params[])
- {
- LHouse2();
- }
- CMD:domypomoc(playerid, params[])
- {
- SendClientMessage(playerid, COLOR_GREEN, "Dom kupiony!"); //Send the player an message.
- return 1;
- }
- CMD:createhouse(playerid, params[])
- {
- new Float:X, Float:Y, Float:Z;
- GetPlayerPos(playerid, X, Y, Z);
- for(new i=0; i<MAX_HOUSES; i++)
- {
- new fstring[10]; //The string for the file [format]
- format(fstring, 10, "Houses/%d", i); //Format the filename
- if(!dini_Exists(fstring))
- {
- i = i++;
- new hi = i + 10;
- HouseInfo[i][hEnterX] = X;
- HouseInfo[i][hEnterY] = Y;
- HouseInfo[i][hEnterZ] = Z;
- HouseInfo[i][hExitX] = 2496.049804;
- HouseInfo[i][hExitY] = -1695.238159;
- HouseInfo[i][hExitZ] = 1014.742187;
- HouseInfo[i][hInsideInt] = 3;
- HouseInfo[i][hInsideVir] = hi;
- HouseInfo[i][hOutsideInt] = 0;
- HouseInfo[i][hOutsideVir] = 0;
- HouseInfo[i][hOwned] = false;
- strmid(HouseInfo[i][hOwner], "Na sprzedaz", 0, false, 8); //Set the owner of the house to "For Sale"
- HouseInfo[i][hPrice] = 1000;
- SaveHouse(i);
- LoadHouseVisual(i, true);
- UpdatePlayersHouseInfo();
- LoadHouse(i);
- /*
- dini_FloatSet(fstring, "EnterX", HouseInfo[i][hEnterX]);
- dini_FloatSet(fstring, "EnterY", HouseInfo[i][hEnterY]);
- dini_FloatSet(fstring, "EnterZ", HouseInfo[i][hEnterZ]);
- dini_FloatSet(fstring, "ExitX", HouseInfo[i][hExitX]);
- dini_FloatSet(fstring, "ExitY", HouseInfo[i][hExitY]);
- dini_FloatSet(fstring, "ExitZ", HouseInfo[i][hExitZ]);
- dini_IntSet(fstring, "InsideInt", HouseInfo[i][hInsideInt]);
- dini_IntSet(fstring, "InsideVir", HouseInfo[i][hInsideVir]);
- dini_IntSet(fstring, "OutsideInt", HouseInfo[i][hOutsideInt]);
- dini_IntSet(fstring, "OutsideVir", HouseInfo[i][hOutsideVir]);
- dini_BoolSet(fstring, "Owned", HouseInfo[i][hOwned]);
- dini_Set(fstring, "Owner", HouseInfo[i][hOwner]); //No, not "GetSet"! :P
- dini_IntSet(fstring, "Price", HouseInfo[i][hPrice]);
- */
- break; //<-- kończy pętle poto aby zrobiło tylko jeden domek :D
- }
- }
- return 1;
- }
- CMD:buyhouse(playerid, params[])
- {
- new pName[MAX_PLAYER_NAME]; //For the player's name - For the house
- GetPlayerName(playerid, pName, MAX_PLAYER_NAME); //Get the name of the player and store it in [u]pName[/u]
- for(new i = 0; i < MAX_HOUSES; i++) //Last time I'm gonna say it: Loop through all the houses
- {
- if(IsPlayerInRangeOfPoint(playerid, 1.5, HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ]) && GetPlayerInterior(playerid) == HouseInfo[i][hOutsideInt] && GetPlayerVirtualWorld(playerid) == HouseInfo[i][hOutsideVir]) //Is player near house entrance, and if player is in interior of that house + virtual world (Last time I said this too!)
- {
- if(HouseInfo[i][hOwned]) return SendClientMessage(playerid, COLOR_RED, "Ten dom ma juz wlasciciela!"); //Is the house owned? Then send message that it's owned and stop.
- if(GetPlayerMoney(playerid) < HouseInfo[i][hPrice]) return SendClientMessage(playerid, COLOR_RED, "Nie masz wystarczajacej ilosci pieniedzy!"); //Has player too less money? Send him a message!
- HouseInfo[i][hOwned] = true; //The house is owned, where the player used /buyhouse
- strmid(HouseInfo[i][hOwner], pName, 0, false, strlen(pName)); //Put the players name into the "hOwner" of the house
- GivePlayerMoney(playerid, -HouseInfo[i][hPrice]); //Remove some money of the player.. The value of the house
- SendClientMessage(playerid, COLOR_GREEN, "Dom kupiony!"); //Send the player an message.
- SaveHouse(i);
- LoadHouseVisual(i, true); //Load House Visual. Now, I've added ', true': It will RELOAD now!
- return 1;
- }
- }
- return 1;
- }
- CMD:sellhouse(playerid, params[])
- {
- new pName[MAX_PLAYER_NAME]; //See /buyhouse
- GetPlayerName(playerid, pName, MAX_PLAYER_NAME); //See new pName[MAX_PLAYER_NAME];
- for(new i = 0; i < MAX_HOUSES; i++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 1.5, HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ]) && GetPlayerInterior(playerid) == HouseInfo[i][hOutsideInt] && GetPlayerVirtualWorld(playerid) == HouseInfo[i][hOutsideVir])
- {
- if(!strcmp(HouseInfo[i][hOwner], pName, false)) //Is the owner of the house the same as the players name (is the player the owner?? !)
- {
- strmid(HouseInfo[i][hOwner], "Na sprzedaz", 0, false, 8); //Set the owner of the house to "For Sale"
- HouseInfo[i][hOwned] = false; //House is not owner anymore!
- GivePlayerMoney(playerid, HouseInfo[i][hPrice]/2); //Give the player 50% of the house value back!
- SendClientMessage(playerid, COLOR_GREEN, "Dom sprzedany!");
- SaveHouse(i);
- LoadHouseVisual(i, true); //Load House Visual. Now, I've added ', true': It will RELOAD now!
- return 1;
- }
- }
- }
- return 1;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- return 1;
- }
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- return 1;
- }
- public OnPlayerEnterCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerEnterRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnRconCommand(cmd[])
- {
- return 1;
- }
- public OnPlayerRequestSpawn(playerid)
- {
- return 1;
- }
- public OnObjectMoved(objectid)
- {
- return 1;
- }
- public OnPlayerObjectMoved(playerid, objectid)
- {
- return 1;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- return 1;
- }
- public OnVehicleMod(playerid, vehicleid, componentid)
- {
- return 1;
- }
- public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
- {
- return 1;
- }
- public OnVehicleRespray(playerid, vehicleid, color1, color2)
- {
- return 1;
- }
- public OnPlayerSelectedMenuRow(playerid, row)
- {
- return 1;
- }
- public OnPlayerExitedMenu(playerid)
- {
- return 1;
- }
- public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
- {
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(newkeys & 16 && !IsPlayerInAnyVehicle(playerid)) //If player pressed ENTER_VEHICLe and if he's not in an vehicle
- {
- for(new i = 0; i < MAX_HOUSES; i++) //Loop through all the houses
- {
- if(IsPlayerInRangeOfPoint(playerid, 1.5, HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ]) && GetPlayerInterior(playerid) == HouseInfo[i][hOutsideInt] && GetPlayerVirtualWorld(playerid) == HouseInfo[i][hOutsideVir]) //Is player near house entrance, and if player is in interior of that house + virtual world
- {
- SetPlayerPos(playerid, HouseInfo[i][hExitX], HouseInfo[i][hExitY], HouseInfo[i][hExitZ]);
- SetPlayerInterior(playerid, HouseInfo[i][hInsideInt]);
- SetPlayerVirtualWorld(playerid, HouseInfo[i][hInsideVir]);
- //This will put the player IN the house
- }
- else if(IsPlayerInRangeOfPoint(playerid, 1.5, HouseInfo[i][hExitX], HouseInfo[i][hExitY], HouseInfo[i][hExitZ]) && GetPlayerInterior(playerid) == HouseInfo[i][hInsideInt] && GetPlayerVirtualWorld(playerid) == HouseInfo[i][hInsideVir]) //Same as the previous IsPlayerInRangeOfPoint, but now if the player is near the house exit+int+vir
- {
- SetPlayerPos(playerid, HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ]);
- SetPlayerInterior(playerid, HouseInfo[i][hOutsideInt]);
- SetPlayerVirtualWorld(playerid, HouseInfo[i][hOutsideVir]);
- }
- }
- }
- return 1;
- }
- public OnRconLoginAttempt(ip[], password[], success)
- {
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- return 1;
- }
- public OnPlayerStreamIn(playerid, forplayerid)
- {
- return 1;
- }
- public OnPlayerStreamOut(playerid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamIn(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamOut(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- return 1;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
- stock IsValidVehicleModel(vehiclemodel)
- {
- if(vehiclemodel >= 400 && vehiclemodel <= 611)
- return true;
- return false;
- }
Add Comment
Please, Sign In to add comment