Jump to content

pognivet

Member
  • Content Count

    318
  • Joined

  • Last visited

  • Medals

Everything posted by pognivet

  1. dont know where else to post this, but i felt that i should because other people like me would want it. it replaces some of the buildings on chernarus with ones from arma 3. i take no credit for this. the only reason i am posting it is because i dont think people know about it and i think its a very valuable script. it took me a long time to dig it up. it was originally made by a russian guy named dimon (https://forums.bistudio.com/user/781732-dimon/) for another purpose, then it was edited by jakehekesfists at exilemod.com, and now i have edited it. i have taken out all the weird buildings that were only put there for looting in dayz such as the little house made out of a cargo container. i have tried to make sure that everything looks organic and nothing clips into the roads or through fences too badly. some buildings such as the churches and barracks are left intact to maintain a consistent theme. my main goal was to have as many walkable interiors as possible while still maintaining the overall feel of chernarus. You need AiA terrain pack. http://www.armaholic.com/page.php?id=26682 Copy paste this and save it as "buildingReplacement.sqf" in your mission directory: /* Original Script Here: http://forums.bistudio.com/showthread.php?190404-Chernarus-Takistan Script edited by jakehekesfists[dmd] 08/05/15 -rev 2.1a (for Arma III) Replacement buildings for use with ArmaIII Assets | AIA Chernarus Terrain. if you use this script ensure you include the default altis loot positions along with the cherno loot positions. */ FFA_CLOSEHOUSE = ["Land_HouseV_2L","Land_HouseV_3I3","Land_HouseV_3I1","Land_HouseV_3I4","Land_HouseV_3I2","Land_HouseV_1L1","Land_houseV_2T1","Land_houseV_2T2","Land_HouseV_1T","Land_HouseV2_03B","Land_HouseV2_03","Land_HouseV2_01A","Land_HouseV2_01B","Land_HouseV2_02_Interier","Land_HouseV2_04_interier","Land_HouseV2_05","Land_Ind_SawMill","Land_Ind_Workshop01_03","Land_HouseV_1I2","Land_HouseV_1I1","Land_HouseV_1L2","Land_Misc_WaterStation","Land_HouseV_2I","Land_A_Office02","Land_Komin"]; _godModeBuildings = false; // set true if you want to make these replacement buildings have god mode. if (isServer) then { /* Objects & Buildings to Delete */ // _dmdDeleteThis=[["Land_SignB_Pub_CZ3","Land_SignB_Pub_RU3","Land_Sign_Bar_RU","Land_SignB_PostOffice","Land_Tec"],[""]]; /* Buildings to Replace */ _dmdRep0001=[["Land_HouseV_1I2"],["Land_i_Stone_Shed_V3_F"]]; _dmdRep0002=[["Land_Ind_SawMill"],["Land_dp_mainFactory_F"]]; _dmdRep0003=[["Land_HouseV_1I1"],["Land_i_House_Small_02_V1_F"]]; // _dmdRep0005=[["Land_Shed_W4"],["Land_Slum_House03_F"]]; //_dmdRep0006=[["Land_HouseV_1I3"],["Land_i_House_Small_03_V1_dam_f"]]; _dmdRep0006=[["Land_HouseV_1I3"],["Land_i_House_Small_03_V1_F"]]; _dmdRep0007=[["Land_HouseV_1L2"],["Land_i_House_Big_02_V1_F"]]; _dmdRep0008=[["Land_Misc_WaterStation"],["Land_ReservoirTank_V1_F"]]; // _dmdRep0009=[["Land_Farm_WTower"],["Land_R_Minaret"]]; _dmdRep0010=[["Land_HouseV_2I"],["Land_i_House_Big_01_V3_F"]]; // _dmdRep0011=[["Land_Mil_Barracks_L"],["Land_Cargo_HQ_V1_F"]]; // _dmdRep0012=[["Land_Mil_Barracks"],["Land_Unfinished_building_01_F"]]; // _dmdRep0013=[["Land_Mil_House"],["Land_MilOffices_V1_F"]]; _dmdRep0014=[["Land_A_Office02"],["Land_Offices_01_V1_F"]]; _dmdRep0015=[["Land_Ind_Workshop01_03"],["Land_Ind_Workshop01_04"]]; // _dmdRep0016=[["Land_Shed_W02"],["Land_Slum_House01_F"]]; // _dmdRep0017=[["Land_Shed_W03"],["Land_cargo_house_slum_F"]]; _dmdRep0018=[["Land_HouseV_3I3"],["Land_i_Shop_01_V1_F"]]; _dmdRep0019=[["Land_HouseV_3I1"],["Land_i_Shop_01_V2_F"]]; _dmdRep0020=[["Land_HouseV_3I4"],["Land_i_Shop_02_V1_F"]]; _dmdRep0021=[["Land_HouseV_3I2"],["Land_i_Shop_02_V3_F"]]; _dmdRep0022=[["Land_HouseV_1L1"],["Land_i_Stone_HouseBig_V2_F"]]; _dmdRep0023=[["Land_houseV_2T1"],["Land_i_Stone_HouseBig_V3_F"]]; _dmdRep0024=[["Land_houseV_2T2"],["Land_i_Stone_HouseSmall_V1_F"]]; _dmdRep0025=[["Land_HouseV_1T"],["Land_i_Stone_HouseSmall_V1_F"]]; _dmdRep0026=[["Land_HouseV_2L"],["Land_i_Stone_Shed_V1_dam_F"]]; _dmdRep0027=[["Land_HouseV2_03B"],["Land_i_Stone_HouseSmall_V3_F"]]; _dmdRep0028=[["Land_HouseV2_01A"],["Land_d_House_Big_02_V1_F"]]; _dmdRep0029=[["Land_HouseV2_01B"],["Land_i_House_Small_01_V3_F"]]; _dmdRep0030=[["Land_HouseV2_03"],["Land_i_House_Big_01_V3_F"]]; _dmdRep0031=[["Land_HouseV2_02_Interier"],["Land_i_House_Big_02_V2_dam_F"]]; _dmdRep0032=[["Land_HouseV2_04_interier"],["Land_i_Shop_01_V3_dam_F"]]; _dmdRep0033=[["Land_HouseV2_05"],["Land_u_Shop_01_V1_F"]]; // _dmdRep0034=[["Land_Church_02","Land_Church_02a","Land_Church_01"],["Land_Chapel_V1_F"]]; // _dmdRep0035=[["Land_Mil_Guardhouse"],["Land_Cargo_Tower_V1_No5_F"]]; _dmdRep0036=[["Land_Komin"],["Land_ReservoirTower_F"]]; _FFA_LHOUSEV=[]; _FFA_HOUSES=[]; if (worldName == "chernarus") then { _FFA_LHOUSEV=nearestObjects [getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition"),["house"],15000]; for "_i" from 0 to (count _FFA_LHOUSEV)-1 do { _housev=_FFA_LHOUSEV select _i; if ((typeof _housev) in FFA_CLOSEHOUSE) then { _FFA_HOUSES set [count _FFA_HOUSES,_housev]; }; }; for "_i" from 0 to (count _FFA_HOUSES)-1 do { _nBuilding =_FFA_HOUSES select _i; _dirVector = vectorDir _nBuilding; _objVector = vectorUp _nBuilding; _pos = ASLtoATL getPosASL _nBuilding; _nBuilding hideObject true; deleteVehicle _nBuilding; _type=""; call{ if ((typeof _nBuilding) in (_dmdDeleteThis select 0)) exitwith {_type="";}; if ((typeof _nBuilding) in (_dmdRep0001 select 0)) exitwith {_type=(_dmdRep0001 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0002 select 0)) exitwith {_type=(_dmdRep0002 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0003 select 0)) exitwith {_type=(_dmdRep0003 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0005 select 0)) exitwith {_type=(_dmdRep0005 select 1) select 0;}; // if ((typeof _nBuilding) in (_dmdRep0006 select 0)) exitwith {_type=(_dmdRep0006 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0007 select 0)) exitwith {_type=(_dmdRep0007 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0008 select 0)) exitwith {_type=(_dmdRep0008 select 1) select 0;}; // if ((typeof _nBuilding) in (_dmdRep0009 select 0)) exitwith {_type=(_dmdRep0009 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0010 select 0)) exitwith {_type=(_dmdRep0010 select 1) select 0;}; // if ((typeof _nBuilding) in (_dmdRep0011 select 0)) exitwith {_type=(_dmdRep0011 select 1) select 0;}; // if ((typeof _nBuilding) in (_dmdRep0012 select 0)) exitwith {_type=(_dmdRep0012 select 1) select 0;}; // if ((typeof _nBuilding) in (_dmdRep0013 select 0)) exitwith {_type=(_dmdRep0013 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0014 select 0)) exitwith {_type=(_dmdRep0014 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0016 select 0)) exitwith {_type=(_dmdRep0016 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0017 select 0)) exitwith {_type=(_dmdRep0017 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0018 select 0)) exitwith {_type=(_dmdRep0018 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0019 select 0)) exitwith {_type=(_dmdRep0019 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0020 select 0)) exitwith {_type=(_dmdRep0020 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0021 select 0)) exitwith {_type=(_dmdRep0021 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0022 select 0)) exitwith {_type=(_dmdRep0022 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0023 select 0)) exitwith {_type=(_dmdRep0023 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0024 select 0)) exitwith {_type=(_dmdRep0024 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0025 select 0)) exitwith {_type=(_dmdRep0025 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0026 select 0)) exitwith {_type=(_dmdRep0026 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0027 select 0)) exitwith {_type=(_dmdRep0027 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0028 select 0)) exitwith {_type=(_dmdRep0028 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0029 select 0)) exitwith {_type=(_dmdRep0029 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0030 select 0)) exitwith {_type=(_dmdRep0030 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0031 select 0)) exitwith {_type=(_dmdRep0031 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0032 select 0)) exitwith {_type=(_dmdRep0032 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0033 select 0)) exitwith {_type=(_dmdRep0033 select 1) select 0;}; // if ((typeof _nBuilding) in (_dmdRep0034 select 0)) exitwith {_type=(_dmdRep0034 select 1) select 0;}; // if ((typeof _nBuilding) in (_dmdRep0035 select 0)) exitwith {_type=(_dmdRep0035 select 1) select 0;}; if ((typeof _nBuilding) in (_dmdRep0036 select 0)) exitwith {_type=(_dmdRep0036 select 1) select 0;}; }; _house = createVehicle [_type, _pos, [], 0, "CAN_COLLIDE"]; _house setVectorDirAndUp [ _dirVector, _objVector]; if (_godModeBuildings) then {_house addEventHandler ["HandleDamage", {false}];}; }; }; }; if(!isServer || local player)then { waitUntil{(player==player)}; waitUntil{alive player}; waitUntil{local player}; if (worldName == "chernarus") then { _FFA_CHOUSEV=[]; _FFA_CHOUSEV=nearestObjects [getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition"),["house"],15000]; for "_i" from 0 to (count _FFA_CHOUSEV)-1 do { _housev=_FFA_CHOUSEV select _i; if ((typeof _housev) in FFA_CLOSEHOUSE) then { _housev hideObject true; deleteVehicle _housev; }; }; }; }; Place this at the bottom of init.sqf: #include "scripts\buildingReplacement.sqf" if you notice anything out of place feel free to change it yourself or tell me and ill change it
  2. I wanted to make a brief constructive post on this DLC because I see and appreciate the work you've put in to get it as far as it has. It seems people flop too hard one way or the other, either ignoring all the valid criticisms or ignoring all of the positive elements. I'll just put it in list form for the sake of readability. Pros: The map is an absolute blessing for western front WW2 in A3, not just due to its size but also its detail and the fact it is based on an actual real life location. The weapons, vehicles and models look and feel great compared to any WW2 mod. (Although I did notice the MP-40 looks suspiciously like a MP-38) The effort put into the AI morale system and other modules and effects is amazing and worthy of praise. Having groups that approximate real life organization at the time. (Except for medics in every infantry squad/Lack of platoon sergeants/Little things.) Cons: The complete absence of German language. The very narrow selection of assets, the lack of which making it impossible to directly recreate Op. Cobra without mods. The M3 Stuart stands out in this regard. Possibly overzealous censorship. Strange problems (eventhandlers?) where if you change the loadout of a SPE unit, even by directly modifying the mission.sqm in a text editor, the unit will still sometimes default to their original loadout. No Gefreiters without gaiters and various other missing gear. Units that have radios (handheld) on their vest model, such as American squad leaders, do not actually possess a radio item. Overall I really like the feel of it and that there's a base for WW2 in A3 now, as SOG provided a base for Vietnam and GM for the Cold War. It feels very tight and lively, like you're really there. I think it's very competent for the most part and I don't want the few issues it has to overshadow everything else. I hope that you continue to work on this and expand it because it's already an amazing experience yet has the potential to be a truly incredible experience. I wouldn't be discouraged by the cold initial reception, since even SOG also was not initially warmly received, but look at where it is today. Best of luck to you and your team.
  3. I've been getting this constantly ever since the 1.2 update. No idea how to fix it. It'll happen to certain face types, seemingly always the new faces added in with the update. If I place a unit with a working face and then change it to the same type as the glitched one it will be glitched. If I restart the game the faces that are glitched will change, i.e. the face type that was glitched before won't be now, but a different face type will be glitched instead. As you can see in this image they have the same loadout as is included in the DLC configs, so it has nothing to do with using modded headgear not from the DLC with the custom faces. Edit: I put this on the bug tracker so feel free to delete the thread if you want, but I'd still like to hear other people's input on this and if they're having the same problem or if it's on my end, like failing hardware.
  4. i bought it on launch expecting, or hoping, for the best. havent been able to play on any server for more than 15 minutes since. half the server gets kicked randomly. everyone has this same problem, yet all i see are worthless "comrads" and "dev updates" and no patches that actually fix this problem even though its been a month and a half. since they've stated they'll only support the game for one year i wonder for how long i will realistically be able to play the game, assuming at this pace they maybe partially rectify this problem in another month and a half. an entire quarter of the so-called "development cycle" gone. i would refund it if i could because i now feel like ive been scammed, but i thought it was a temporary problem and went over the 2 hour refund limit on steam irrationally trusting in bohemia's competence and ignoring the sagas of take on x, y lands, arma tactics or argo. to ignore or be unable to fix such a major issue for so long, one that makes the entire game unplayable in any way (since it is multiplayer-only for all intents and purposes), does not bode well for the future. the graphics are nice, everything else is awful. if arma 4 is like this in any regard (not just the multiplayer but the abysmal ballistics, rpg rounds disappearing in mid-air, brain-dead unity shovelware-level ai) i think i see myself continuing with arma 3 for many years after its release, as i and many others did with arma 2 when arma 3 was first released. i could really give less of a shit about what the water textures look like or the lighting. supposedly this was to be an alpha or a beta or whatever you want to call it "test" to get feedback from players to develop arma 4. the community consensus is this: it does not fucking work. despite this it seems this "feedback" they supposedly craved has fallen on deaf ears and i'm beginning to think that this was more motivated by a need to shore up some of their debts from past experimental failures even though they already have government grants from their own country and government contracts with mine where they overcharge bureaucrats too lazy to do an audit in order to rob us of taxpayer money, as many others do. what a joke.
  5. POG Surrender Description: There was something that I thought was desperately missing from Arma 3: the ability for the enemy to realistically surrender. I got sick of doing missions where you're forced to genocide every last enemy in existence. It made them feel like totally inhuman android enemies. Therefore I decided to make this small script for myself to add this functionality the best I could. It's not perfect, but it seems to work. I've used it for a long time, but I've decided to share it to see if anybody had any input or advice on how to improve or optimize it and also because I think that many people would find it useful for their missions. Features: - When AI get too scared and the enemy is closing in on them they will surrender. - AI's fear level is determined by the "morale" parameter and units with higher "courage" subskill can be made less likely to surrender. More info here: https://community.bistudio.com/wiki/morale - AI will drop their currently held weapon with its currently loaded magazine and it will clatter to the ground with physics as if it fell from their hand. It can be picked up after this. - AI that are in vehicles or static weapons will exit them before surrendering. - Surrendering disabled for AI on the player's side in order to avoid breaking missions. - Some AI have a small chance to decide to stop surrendering and try to flee if nobody is guarding them. - There are one or two configurable settings. Compatibility: Everything. Bugs: - May add a small amount of lag to missions with extremely large amounts of units (like hundreds, D-Day style), but I can't really tell. Please report any bugs you find. Examples of how to increase AI fear: - Suppress them - Injure them - Kill their friends - Surround them or flank them - Outnumber them by a large margin - Be much stronger than they are (i.e. drive a tank up to a guy armed with a handgun) There are many other ways. It's all on the engine level with BI's morale system. REQUIRES ACE Installation: Drop the files in your mission folder. That's all. If you want you can edit a couple of basic options in "POGSURinit.sqf". Download: Link 1: https://www.dropbox.com/s/63qnl2m09txumyo/pogsur.zip?dl=1 Link 2: http://www.mediafire.com/file/jowj4ptxlazwllw/pogsur.zip/file
  6. Thanks so much for this. I don't know how I would have found it otherwise since it's so specific and technical, and in another language. So this is what I've gathered so far from reading that page, as far as the Bundeswehr is concerned: - These armbands are only used on bases or during exercises aside from OvD/UvD/GvD/OvS/Wache/Streife. - They are worn on the left arm, but sometimes the same type of armband will be worn on both arms to signify a different meaning. (Example: red on left arm is rifleman supervisor, red on both arms is security officer.) - The Feldjager/MP ones are just for use with different uniforms or civilian clothes that might not accommodate the larger version seen on the "military policeman" unit in the mod. - OvD/UvD/GvD is officer on guard duty, NCO on guard duty and corporal on guard duty respectively. - OvS is "officer from the starting place", but I don't know what this means. It's lost in translation. A career officer, not promoted from enlisted? Maybe "startplatz" is "launch site", but for what? A SAM? A MLRS battery? It's hard to say. - Wache is someone who isnt OvD/UvD/GvD, but is on guard duty and is in the Bundeswehr. - Streife is the same as Wache, but for people who are not in the Bundeswehr. This is a little confusing to work through for someone totally unfamiliar with it. Does it sound like I'm getting this right? Edit: Found out more info on this "officer from the starting place", but it was a painful struggle to put this information together since its kind of a strangely specific role. Posting this for anyone else looking for information. Maybe someone should add this stuff to a wiki somewhere.
  7. pognivet

    Bon's Infantry Recruitment Redux

    thanks dude. you're the man.
  8. I have a question since I could find no information about this online and I would like to make my mission as realistic as possible. Bundeswehr troops have the ability to have an armband on either arm. Some are obvious, but some I just can't figure out. I looked high and low and couldn't find any information online. AO - No idea. BvW - No idea. FvW - No idea. Green - For wargames/training? GvD - No idea. LD - No idea. Commanding - When is this used and who wears it? MP - Obvious, but why the redundancy? They already have the feldgendarme shoulder pad thing or whatever? MP Detail - Who are these guys? MvD - No idea. MP (NATO) - Obvious. Red - For wargames/training? Medic - Obvious. Medical detail - Stretcher bearers? Patrol - When is this used and who wears it? Transport - Who wears this? Truck drivers? Accident Investigation - Obvious. UvD - No idea. Guard - When is this used and who wears it? White - For wargames/training? I would also like to ask what arm these are supposed to be worn on, or if there's a situation where a different one is worn on each arm at the same time. I just can't make heads or tails of it. Any assistance (most preferably form the devs) would be much appreciated. I'd really like to make some great missions or even campaigns with this after the latest update, but I want to make sure I get everything right.
  9. pognivet

    Bon's Infantry Recruitment Redux

    thanks bro ironically this link doesnt work now either
  10. please reupload as both zippyshare and armaholic are both dead now.
  11. pognivet

    ARMA 3 Addon Request Thread

    los angeles class sub for cold war special ops. even if its just a prop and doesnt move/fire.
  12. Every time I run it I get this error as well: https://files.catbox.moe/07f6hm.jpg
  13. Sorry to necro an old thread twice (I've been away for a while), but I have two questions: 1. the RSO dev site is shut down and armaholic is dead. do you know where i can get the building pack now? looked all over and i cant find a mirror anywhere. 2. I cant seem to get the script to run on startup. i added the following to description.ext: class CfgFunctions { class TAG { class replacer { class postInit { postInit = 1; file = "replacer.sqf"; }; }; }; }; I put your script in the mission folder named "replacer.sqf". Even though I don't have RSO when I run the mission I still don't see the result of "systemchat "done replacing";" so I assume its not running at all. Do you think you could help me? I really want to get this working. And thanks for posting your scripts and trying to help.
  14. why was this deleted from the workshop? it broke a lot of missions that use its content. can you please reupload it online somewhere?
  15. is there a way to have ambient chatter without audio files? there's no way i'm going to be able to get people to dub a bunch of voicelines. if i remove the parameter pointing towards the .ogg voice file in sentences.bikb but leave the text parameter as it is then the dialogue window will pop up for .000001 seconds before disappearing. i assume it only shows the text as long as the audio is playing. any way around this?
  16. this. wiki is dead. screenshots also deleted from dropbox.
  17. can you reupload this since armaholic is dead? i'd like to give it a try. thanks.
  18. sorry to necro this thread, but the site seems down. i used the briefing generator on there a lot. on the main page it says "under construction". is this true? or is it dead?
  19. pognivet

    S.O.G. Prairie Fire white face/head bug

    Luckily I found a temporary solution. Every time you're done placing units down for a mission restart the game. That seems to fix the bug. If you edit the existing units or add any new ones the bug will return until you restart the game again.
  20. there's been a few in some weird games like that far cry spinoff on the xbox 360, but coincidentally when operation flashpoint was released on the original xbox it contained the same mission editor as the pc version if i remember correctly. there was no writing or using of scripts and it was a major pain in the ass to use with a controller, but it did work and you could make some relatively entertaining missions with it. sadly, i highly doubt that anything similar will be in the console version of arma 4 which in turn makes me question what the true final editor for the pc version will look like.
  21. you need to relax bro and i dont say that spitefully or to invalidate your frustrations but youre just tweaking your brain out like crazy over something relatively insignificant in the grand scheme of life. youre destroying your mental and physical health and becoming an alcoholic over some random guy on the internet trying to one-up you with the code of an arma 3 mod. its not worth ruminating over for years. just let it go and move on with your updated version or start a new project that you can feel proud of. its also confusing how you have so much animosity for this one guy and write all of this here yet on the thread for the mod in question you still credit him and thank him for implementing cba. he has the longest and most glowing attribution given to him by you out of any of the people who contributed to the mod. whatever you do just cut back on the alcohol before you end up damaging your liver, getting into an accident/fight or getting arrested. i used to drink a lot too, but i rarely do now because it just gets in the way of trying to accomplish things that are more fulfilling but require energy and higher thought.
  22. i really hope you try to keep working on this and adding more features although it already works quite well. i use it more than any other script. with a few tricks using the "INIT=" parameter you can do some pretty interesting things.
×