Wanted Posted March 8, 2013 Share Posted March 8, 2013 (edited) https://github.com/OfficialSCARInclude/OSI2/commit/3b4a8c69a198bccd91e0dc932e38f1b8bf683041 OSI still compiling in under 90ms!! RS07 Global AdditionsHalf of Game Tab functions Half of Inventory functions Half of Map functions FindBitmapColor routines Box/TBAFromGrid TPAExtractPoints/TPAExtractSlice RS07 compatibly Small structure change. Game-TabX above Game-Tabs.scar Add DTM.scar, DTM Wrappers FindBitmap Wrappers More FindColor Wrappers Lots of goodies! Let's just go down the list Globals MMTPA is now available! With backup (not that is ever going to be needed, but hey...)! [sCAR]{=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= function MMTPA: TPointArray; Contributors: Wanted Description: All MiniMap dynamic points. Date Created: March 7th, 2013. By Wanted. RS07 Build ???. Last Modified: March 7th, 2013. By Wanted. RS07 Build ???. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}[/sCAR] [sCAR]{=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= function MMPA: LongInt; Contributors: Wanted Description: MiniMap TPA search are pixel count. Like this because if it reverts or ever changes this has to be dynamically changable. Date Created: March 7th, 2013. By Wanted. RS07 Build ???. Last Modified: March 7th, 2013. By Wanted. RS07 Build ???. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}[/sCAR] GameTab Half? Ok I guess ALL of them that I can think of for now are done. I forgot I moved out all the other functions into their respective files in \GameTabs\ [sCAR] * function GetAllTabBounds: TBoxArray; By: Wanted * function GetTabBounds(Tab: Integer): TBox; By: Wanted * function TabExists(Tab: Integer): Integer; By: Wanted * function GetCurrentTab: Integer; By: Wanted * function SetGameTab(Tab: Integer): Integer; By: Wanted[/sCAR] [sCAR]{$DEFINE RS07} {$DEFINE OSI_RS07_Color_Anti_Randoms} {$I OSI\OSI.scar} {$I OSI\Divi\Misc\Debug.scar} procedure ScriptTerminate; begin FreeOSI; end; begin SetUpOSI; DebugTBA(GetAllTabBounds) end.[/sCAR] [sCAR]const Tab_Count = 14; Tab_Combat = 0; Tab_Stats = 1; Tab_Quest = 2; Tab_Inv = 3; Tab_Equip = 4; Tab_Prayer = 5; Tab_Magic = 6; Tab_Clan = 7; Tab_Friends = 8; Tab_Ignore = 9; Tab_LogOut = 10; Tab_Options = 11; Tab_Emotes = 12; Tab_Music = 13;[/sCAR] Inventory I couldn't do any of the OCR (i.e. Drop functions) they are already coded but there is no chooseoption yet! Fear not that will be done soon for now here's the other half! well....2/3 really.. [sCAR] * function GetAllInvSlotBounds: TBoxArray; By: Wanted * function InvSlotsBounds: TBox; By: Wanted * function GetInvSlotBounds(Slot: Integer): TBox; By: Wanted * function CordsToInvSlot(P: TPoint): Integer; By: Wanted * function InvItemExists(Slot: Integer; CheckIT: Boolean): Boolean; By: Wanted * function InvCount(CheckIT: Boolean): Integer; By: Wanted * function InvFull(CheckIT: Boolean): Boolean; By: Wanted * function InvEmpty(CheckIT: Boolean): Boolean; By: Wanted * function MouseItem(Slot: Integer; TypeC: ClickActions; CheckIT: Boolean): Boolean; By: Wanted * function DragItem(FromSlot, ToSlot: Integer; CheckIT: Boolean): Boolean; By: Wanted * function FindInvItemsDTM(dtm: Integer; CheckIT: Boolean): TIntegerArray; By: Wanted * function CountInvItemsDTM(dtm: Integer; CheckIT: Boolean): Integer; By: Wanted * function FindInvItemsBMP(bmp, Tol: Integer; CheckIT: Boolean): TIntegerArray; By: Wanted * function CountInvItemsBMP(bmp, Tol: Integer; CheckIT: Boolean): Integer; By: Wanted[/sCAR] [sCAR]{$DEFINE RS07} {$DEFINE OSI_RS07_Color_Anti_Randoms} {$I OSI\OSI.scar} {$I OSI\Divi\Misc\Debug.scar} procedure ScriptTerminate; begin FreeOSI; end; begin SetUpOSI; DebugTBA(GetAllInvSlotBounds) end.[/sCAR] [sCAR]{$DEFINE RS07} {$DEFINE OSI_RS07_Color_Anti_Randoms} {$I OSI\OSI.scar} {$I OSI\Divi\Misc\Debug.scar} procedure ScriptTerminate; begin FreeOSI; end; begin SetUpOSI; DebugBox(InvSlotsBounds) end. [/sCAR] Map You already saw MMTPA up in Globals but here's some more useful stuff out of map... about half of all of Map. [sCAR] * function OnMM(P: TPoint): Boolean; By: Wanted * function TPAOnMM(TPA: TPointArray): Boolean; By: Wanted * procedure TPAExtractMMPoints(var TPA: TPointArray); By: Wanted * function MMToMSEx(MM: TPoint; Height: Extended): TPoint; By: Wanted * function MMToMS(MM: TPoint): TPoint; By: Wanted * function MMOnMS(MM: TPoint): Boolean; By: Wanted * function MMsToMSs(TPA: TPointArray): TPointArray; By: Wanted * function FilterMMPointsMS(TPA: TPointArray): TPointArray; By: Wanted * function FindMMColorTol(var P: TPoint; Color, Tol: Integer): Boolean; By: Wanted * function FindMMColorsTolerance(var TPA: TPointArray; Color, Tol: Integer): Boolean; By: Wanted * procedure SetAngle(Highest: Boolean); By: Wanted[/sCAR] MMToMS needs improvement =/ Box/TBA Here's the key functions behind GetInvItemBounds, GetTabBounds etc. Thanks to Janilabo for the idea and using something similar before me =P (the code has been in OSI 1 for a long time but never organized into its own function before!!) [sCAR]{=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= function BoxFromGrid(P: TPoint; Index, Width, Height, Rows, Columns, RowSpace, ColumnSpace: LongInt): TBox; Contributors: Wanted, Janilabo. Description: Creates box from indexes of boxes arranged in rows and columns. Date Created: March 7th, 2013. By Wanted Last Modified: March 7th, 2013. By Wanted =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=} function BoxFromGrid(P: TPoint; Index, Width, Height, Rows, Columns, RowSpace, ColumnSpace: LongInt): TBox; var TP: TPoint; begin TP := Point(P.X + ((Index mod Columns) * ColumnSpace), P.Y + ((Index div Columns) * RowSpace)); Result := Box(TP.X, TP.Y, TP.X + (Width - 1), TP.Y + (Height - 1)); end;[/sCAR] [sCAR]{=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= function TBAFromGrid(P: TPoint; Width, Height, Rows, Columns, RowSpace, ColumnSpace: LongInt): TBoxArray; Contributors: Wanted, Janilabo. Description: Creates TBAs arranged in rows and columns. Date Created: March 7th, 2013. By Wanted Last Modified: March 7th, 2013. By Wanted =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=} function TBAFromGrid(P: TPoint; Width, Height, Rows, Columns, RowSpace, ColumnSpace: LongInt): TBoxArray; var I, H: LongInt; begin Result := []; H := (Rows * Columns) - 1; SetLength(Result, H + 1); for I := 0 to H do Result := BoxFromGrid(P, I, Width, Height, Rows, Columns, RowSpace, ColumnSpace); end;[/sCAR] TPA [sCAR]{=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= procedure TPAExtractPoints(var TPA: TPointArray; WithinTPA: TPointArray); Contributors: Wanted Description: Removes all points in TPA not within the other TPA. Date Created: March 7th, 2013. By Wanted Last Modified: March 7th, 2013. By Wanted =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=} procedure TPAExtractPoints(var TPA: TPointArray; WithinTPA: TPointArray); var TBLA: TBooleanArray; I, H: LongInt; begin H := High(TPA); SetLength(TBLA, H + 1); for I := 0 to H do if (not (TPAContains(WithinTPA, TPA))) then TBLA := True; for I := 0 to H do if (TBLA) then TPADelete(TPA, I); end;[/sCAR] Fixed TPAExtractSlice for RS07 too Wrappers OSI is moving towards Point in Box wrappers in your functions! Basically what this is Allowing you to do FindColorsP(P, Color, B) instead of typing out P.X, P.Y, B.X1, B.Y1 etc. very annoying indeed! this is being applied to all kinds of things! Everything eventually! You can imagine it's a lot of redundant work so I'm doing them as I go or when I get bored, feel free to request specific ones Bitmap Introducing a new way to search for colors (Much like 'Freeze', 'Unfreeze' in simba) this method has also been in OSI for a long time but is finally refined now thanks to Freddy's new SCAR bmp system, Janibalo's great idea for innovations, and me putting it all together. [sCAR] * function FindBitmapColorIn(var P: TPoint; Color: LongInt; bmp: TSCARBitmap; B: TBox): Boolean; By: Wanted * function FindBitmapColor(var P: TPoint; Color: LongInt; bmp: TSCARBitmap): Boolean; By: Wanted * function FindBitmapColorExIn(var TPA: TPointArray; Color: LongInt; bmp: TSCARBitmap; B: TBox): Boolean; By: Wanted * function FindBitmapColorEx(var TPA: TPointArray; Color: LongInt; bmp: TSCARBitmap): Boolean; By: Wanted [/sCAR] You can now capture a part of the screen and 'freeze' it or just search for colors on a normal bitmap simply by calling a different FindColor function listed about. Example of this powerful usage below in LoadMMTPA [sCAR]{=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= procedure LoadMMTPA; Contributors: Wanted Description: Loads all points of the minimap and count of that for use in MMTPA and MMPA by using a Blank Map and reverting to 6 pie slices if failed. Date Created: March 7th, 2013. By Wanted. RS07 Build ???. Last Modified: March 7th, 2013. By Wanted. RS07 Build ???. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=} procedure LoadMMTPA; var bmpBlankMap: TSCARBitmap; ATPA: T2DPointArray; I: Integer; begin bmpBlankMap := TSCARBitmap.Create('deNrt1TESAjEMBEH/PyPiuUdKBAHlK0bu' + '/YGmAz3Wc03a9XHL/g/ll2lbkWLXlWLXlWLXlWLXlWKXxjoW7ho0XtRggYM1Hu' + '46cryo8aIGKw3HqKVGp6XGJaSGowVHoaWmf0tN+Zaa5i01tVtqOufURG6RKdxS' + '07alpmpLTc+cmpgtMiVbahq21NTLqUnXItMtpyZai0yxnJpcLTKtWmoq5dQkap' + 'Hpk1MTp0WmTE5NFmS2lUyTnJogyGwrmRo5NSmQGTJ7J9MhpyYCMjMzM4/MkCEz' + 'ZIYMmSEzZMgMmSFDZshsExm1nBcyZIbMkCEzZPaVjFrOCxkyQ2bIkBky+0pGLe' + 'eFDJndQEYt54UMmd1ARi3nhQyZ3UBGLeeFrEhGLeeFrEhGLeeFrEhGLedFrehF' + 'reiFrEhGLedFrehFregFrohFLepFregFrohFLerFrigFrotFLeoFrohFLep1LN' + 'waMV7gYIGDdY7aOmmwqPECB2uAGqmWGqOWGp2WGpeWGpGWGouWGoWWmv4tNeVb' + 'apojQ4aMGi9khowarxlqCofgVG2p6YnM9sFp2FJTL4E45swXg+jNaA=='); if (FindBitmapColorEx(MMTPAv, clWhite, bmpBlankMap)) then begin OffsetTPA(MMTPAv, MMX1, MMY1); MMPAv := Length(MMTPAv); end else begin WriteLn('Failed to load bmpBlankMap!'); WriteLn('Reverting to backup MMTPA/MMPA...'); SetLength(ATPA, 6); for I := 0 to 5 do ATPA := TPAFromBox(MMB); TPAExtractSlice(ATPA[0], 0, 72, -75, 75, MMCP); TPAExtractSlice(ATPA[1], 0, 67, 245, 285, MMCP); TPAExtractSlice(ATPA[2], 0, 67, 75, 115, MMCP); TPAExtractSlice(ATPA[3], 0, 58, 115, 245, MMCP); TPAExtractSlice(ATPA[4], 58, 68, 168, 195, MMCP); TPAExtractSlice(ATPA[5], 68, 73, 173, 190, MMCP); MMTPAv := MergeATPA(ATPA); TPAUnique(MMTPAv); MMPAv := Length(MMTPAv); end; try bmpBlankMap.Free; except end; WriteLn('Loaded MMTPA/MMPA'); MMTPALoaded := True; end;[/sCAR] Well that's all for now! I am working VERY HARD to get OSI 2 /RS07 done as quickly as possible and starting with the essentials to get you all using OSI 2 with your RS07 scripts as quickly as possible while still striving for the best (runescape..and overall) include ever dreamed of. Hopefully more great stuff for tomorrow! OCR, Bank, the other halfs of Map and Inventory, Stats tab, Login etc.! Looking forward to all your feedback and encouragements. Together we can give these simba and java skids a run for their money! Thanks again OSI Lead developer -Wanted Edited March 8, 2013 by Wanted Quote Link to comment Share on other sites More sharing options...
Janilabo Posted March 8, 2013 Share Posted March 8, 2013 Really nice work James! Everything here looks pretty damn professional to me. ..and you are right, this is some major progress you have done during last few days, awesomness mate! Keep it going. So far, so good. U liek teh Bitmap API Freddy built us, don't cha?! The more you learn of it, the more you'll love it.. Pretty much! P.S. Gotta love those pictures, beautiful colors everywhere. -Jani Quote Link to comment Share on other sites More sharing options...
Bixby Sayz Posted March 8, 2013 Share Posted March 8, 2013 I gotta start contributing more. Have to chuckle when "innovative" stuff I've been doing for ages in private scripts shows up in the includes. Side note: MCCX is inaccurate? Would expect it to be the same as MSCX but it isn't. Quote Link to comment Share on other sites More sharing options...
FHannes Posted March 8, 2013 Share Posted March 8, 2013 Introducing a new way to search for colors (Much like 'Freeze', 'Unfreeze' in simba) this method has also been in OSI for a long time but is finally refined now thanks to Freddy's new SCAR bmp system, Janibalo's great idea for innovations, and me putting it all together. That's essentially what SCAR does internally Quote Link to comment Share on other sites More sharing options...
Bixby Sayz Posted March 8, 2013 Share Posted March 8, 2013 I do something similiar but I grab from the area of the desktop that corresponds to client area: Works regardless of graphics mode. Downside is you wind up writing a "wrapper" routine for all SCAR's FindColor/CountColor/FindDtm/etc routines. Quote Link to comment Share on other sites More sharing options...
Wanted Posted March 8, 2013 Author Share Posted March 8, 2013 I gotta start contributing more. Have to chuckle when "innovative" stuff I've been doing for ages in private scripts shows up in the includes. Side note: MCCX is inaccurate? Would expect it to be the same as MSCX but it isn't. [sCAR] MSCX = 260; // Main Screen Center Points // August 7, 2011 Wanted 660 MSCY = 171; // August 7, 2011 Wanted 660 MSX1 = 4; // Main Screen Edge Points // August 7, 2011 Wanted 660 MSY1 = 4; // August 7, 2011 Wanted 660 MSX2 = 515; // August 7, 2011 Wanted 660 MSY2 = 337; [/sCAR] [sCAR] MCCX = 176; // Chat Box Center Points // March 5, 2013 Wanted ??? MCCY = 409; // March 5, 2013 Wanted ??? MCX1 = 7; // Chat Box Edge Points // August 8, 2011 Wanted 660 MCY1 = 345; // August 8, 2011 Wanted 660 MCX2 = 496; // March 5, 2013 Wanted ??? MCY2 = 473; // March 5, 2013 Wanted ??? MCPW = (MCX2 - MCX1) + 1; // Chat Box Width // June 23, 2012 LordJashin 718 MCPH = (MCY2 - MCY1) + 1; // Chat Box Height // June 23, 2012 LordJashin 718 MCPA = MIPW * MIPH; // Chat Box Area // June 23, 2012 LordJashin 718 [/sCAR] It's hard to see the the gray MS box, but you can see they have different bounds and centers. Thanks for the feedback everyone Hope to get another good update out again soon Quote Link to comment Share on other sites More sharing options...
Bixby Sayz Posted March 8, 2013 Share Posted March 8, 2013 I stand corrected. My bad. Quote Link to comment Share on other sites More sharing options...
LordJashin Posted March 8, 2013 Share Posted March 8, 2013 So let me get this straight. You can capture a part of the screen (Bitmap), and only search for colors on that? Is that what the FindBitmapColorIn does? Good idea Quote Link to comment Share on other sites More sharing options...
ScreamingIsMyAir Posted March 8, 2013 Share Posted March 8, 2013 O_O last time I checked you could already do that? O_O maybe I'm just missing something. Quote Link to comment Share on other sites More sharing options...
Wanted Posted March 9, 2013 Author Share Posted March 9, 2013 So let me get this straight. You can capture a part of the screen (Bitmap), and only search for colors on that? Is that what the FindBitmapColorIn does? Good idea Yea all you have to do is Map := GetClient.CaptureExB(MMB); FindBitmapColor.. etc. O_O last time I checked you could already do that? O_O maybe I'm just missing something. Areas, but if your capturing a part of active screen /rs the pixels move pretty fast constantly so if you reference back to those points they'll have probably of moved. And yes we've been able to do this for a long time in SCAR but only recently has it been made convenient. Quote Link to comment Share on other sites More sharing options...
Bixby Sayz Posted March 11, 2013 Share Posted March 11, 2013 It's hard to see the the gray MS box, but you can see they have different bounds and centers. Yes, but *this* much difference? Here is the mouse at (MCCX, MCCY): Not where I expected it to be. Quote Link to comment Share on other sites More sharing options...
BryceTheCoder Posted March 11, 2013 Share Posted March 11, 2013 OMG I'm loving these updates:) Quote Link to comment Share on other sites More sharing options...
Wanted Posted March 11, 2013 Author Share Posted March 11, 2013 Yes, but *this* much difference? Here is the mouse at (MCCX, MCCY): [ATTACH=CONFIG]775[/ATTACH] Not where I expected it to be. [sCAR]MCCX = 252; // Chat Box Center Points // March 11, 2013 Wanted ??? MCCY = 409; // March 5, 2013 Wanted ???[/sCAR] That has been corrected. Nice catch. Typo on my end. Some of the other center points were a few pixels off and I have adjusted.. I have no idea how though. I'll push later with Login stuff You can see though it's significantly different than MSCP [sCAR]MSCX = 260; // Main Screen Center Points // August 7, 2011 Wanted 660 MSCY = 171; // August 7, 2011 Wanted 660[/sCAR] Quote Link to comment Share on other sites More sharing options...
TerryKig Posted July 18 Share Posted July 18 500 000 bitcoin price can i buy $25 worth of bitcoin bitcoin etf where to buy 0.1342 bitcoins en euro buy domain bitcoin 2021 bitcoin correction 10 000 in bitcoin in 2010 shibainu price etherscab what are the 11 bitcoin etfs pepe gemini ai bitcoins how can i buy large amounts of bitcoin buying a bitcoin denver crypto conference 10 million dollars in bitcoin can i make money buying bitcoins buy bitcoin on bybit 20 week ema bitcoin best crypto wallet for long term hold 4chan 21 bitcoin club mav price prediction buying bitcoins online reddit 64 bitcoins 00009 bitcoin to usd 0.00494801 btc bitcoin in usd stardew sturgeon best free crypto mining apps 400 bitcoins in usd co gems card crypto escrow services delysium crypto how to get a loan on cash app buying bitcoin cash app reddit ad bitcoin how to buy amazon gift card with bitcoin in india akita inu crypto 0.6 bitcoin in pounds 0.000521 bitcoin crypto coin portfolio cash app fee for buying bitcoin crypto prop firms a list of websites to earn bitcoins best place to buy bitcoin in philippines looksrare nft can't buy bitcoin on luno bitcoin and cash app scams crypto airdrop history friendtech crypto marinade solana Quote Link to comment Share on other sites More sharing options...
TerryKig Posted July 23 Share Posted July 23 crypto icos upcoming cms holdings buy osrs gp bitcoin best crypto app to invest bitcoins machine locations 23andme bitcoin funfair crypto is crypto illegal in us friedman crypto 2 billion crypto scam barchart crypto 666 on bitcoin can you buy crypto on td ameritrade bonk coin news online bitcoin atm 1 bitcoin purchase price in india buy bitcoins for cryptolocker kako kupiti bitcoin why is bitcoin dropping today best crypto scam recovery companies $bul crypto a cuanto esta el bitcoin junio 2019 other bitcoins 7 crypto instrument list what is crypto burning best crypto for day trading today flare crypto news shiba inu burning portal is cash app safe to buy bitcoin how to buy ripple on poloniex with bitcoin bitbox bitcoin atm chain link price prediction margin trading crypto usa how to buy bitcoin for ira how do i buy my first bitcoin all crypto price prediction tokenly inc how can buying bitcoin make you money crypto drainer is this the first meme of 2024 how to buy ripple in coinbase how to buy bitcoin netherlands best crypto options trading platform us 0 005 bitcoin in dollar 2 factor bitcoin.com bitcoin of america how to hack blooket crypto game ada prediction 2024 can u buy bitcoin with gift card stakefair Quote Link to comment Share on other sites More sharing options...
TerryKig Posted July 23 Share Posted July 23 50 euro crypto voucher composable finance crypto millionaire couple crime scene photos buy vouchers with bitcoin uk arbitrum token price prediction bnbusdt best crypto live chart app 5.67 in bitcoin how much cost a bitcoin to buy 2018 map of crypto landscape suite c crypto arena can i buy $1 of bitcoin how to buy and store bitcoin reddi bonk drop #5 when a cell is placed in a hypertonic solution ach pull crypto.com buy bitcoin bitcoin $100 of bitcoin in 2010 0.00177454 bitcoin to usd buy bitcoin or ethereum with credit card 456.833 tau crypto in usd cryptos with low circulating supply 21 day ma bitcoin mint blockchain 5 letter crypto words best app for crypto notifications best crypto to buy now reddit how to set up a qfs account apps for crypto news velo price best time to buy bitcoin in 2017 blackedge capital staking pyth network how to buy bitcoins in canada with paypal what are crypto tokens crypto airdrop scam 374 bitcoin to usd 0.08 bitcoin kaç tl 2017 yılında bitcoin ne kadardı buy litecoin bitcoin dogecoin bitcoin cash 7 500 bitcoins first crypto exchange is coinbase secure wallet buglab a cuanto equivale un bit de bitcoin is coinbase and coinbase wallet the same dmail network $spell crypto price alph crypto william hockey Quote Link to comment Share on other sites More sharing options...
MiltonSmure Posted September 22 Share Posted September 22 Гидроизоляция это ключевой элемент в строительстве, обеспечивающий охрану объектов от воздействия влаги и воды. В большой зависимости от условий эксплуатации и материала конструкции, выбирается определенный тип гидроизоляции. Рассмотрим основные разновидности и их применения. 1. Рулонные материалы Рулонные водоизоляционные материалы применяются для защиты кровель и фундаментов. Они посещают на основе битума и полимеров. - Битумные рулоны популярны благодаря своей доступности и безопасности. Употребляются на плоских крышах и в основании зданий. - Полимерные рулоны имеют более высокую прочность и долговечность, подходят для трудных климатических критерий. 2. Жидкая гидроизоляция Жидкие гидроизоляторы применяются для создания бесшовного покрытия. Они посещают на основе: - Полимеров с легкостью наносятся и образуют прочную мембрану. - Цемента идеально подходят для ванной и кухни, обладают неплохими гидрофобными качествами. 3. Проникающая гидроизоляция Этот тип проникает в структуру бетона и наполняет микротрещины, обеспечивая надежную охрану. Применяется преимущественно для фундаментов и подвалов. Проникающая гидроизоляция отлично справляется с постоянным воздействием влаги. 4. Мембранная гидроизоляция Мембранные системы часто используются для крыши и находящийся под землей конструкций. Такой метод дает обеспечение надежную защиту от атмосферных осадков и грунтовых вод. - ЭПДМ и ТПО мембраны имеют высокую устойчивость к солнечному излучению и механическим повреждениям https://gidroizolyaciya-dlya-vsekh.ru 5. Гидрофобные добавки Гидрофобные добавки в бетон или раствор помогают предотвратить проникновение воды. Они совершенно то что надо для творения водонепроницаемых конструкций, в том числе бассейны и резервуары. Выбор типа гидроизоляции При выборе гидроизоляции главно учитывать: - Условия эксплуатации влажность, температура, возможные нагрузки. - Материалы конструкции для каждого типа материала существует собственный лучший вариант гидроизоляции. - Бюджет некие методы более затратные, но дают обеспечение большую долговечность. В заключение, выбор гидроизоляции зависит от множества факторов. Правильное решение поможет продлить срок службы строительных объектов и избежать серьезных проблем с влажностью. Quote Link to comment Share on other sites More sharing options...
Marcussence Posted October 6 Share Posted October 6 Sports Betting: A Comprehensive Guide Sports betting has become a global phenomenon, captivating millions of enthusiasts with its blend of excitement, strategy, and the potential for financial gain. This article aims to provide a comprehensive overview of sports betting, exploring its history, popular types, strategies, and the legal landscape. A Brief History Sports betting dates back to ancient civilizations, where wagers were placed on events such as chariot races and gladiatorial contests. Over the centuries, the practice evolved, encompassing a wide range of sports and becoming a formalized industry in the modern era. Today, sports betting is a multi-billion-dollar industry with a substantial presence both online and offline. Types of Sports Bets There are several types of bets that one can place on sports events, including: 1. Moneyline Bets: The simplest form of betting where you pick the winner of a game or match. 2. Point Spread Bets: This bet involves predicting the margin of victory. 3. Over/Under Bets: Also known as totals, these bets are placed on the total number of points scored by both teams combined. 4. Prop Bets: These are bets on specific outcomes within a game, such as the first team to score. 5. Futures Bets: Bets placed on events that will happen in the future, like who will win the championship at the end of the season. Strategies for Successful Betting Successful sports betting requires more than just luck. Here are some strategies to consider: 1. Research and Analysis: Study the teams, players, and historical performance data http://downzone.pl/profile.php?lookup=4971 2. Bankroll Management: Set a budget and stick to it, avoiding the temptation to chase losses. 3. Understanding Odds: Learn how to read and understand betting odds to make informed decisions. 4. Shop for the Best Lines: Different sportsbooks offer different odds and payouts, so shop around for the best deals. The Legal Landscape The legality of sports betting varies around the world. In some countries, it is fully legalized and regulated, while in others, it is either restricted or outright banned. The advent of online sportsbooks has also added a layer of complexity, as bettors can now place wagers from pretty much anywhere, often bypassing local regulations. Conclusion Sports betting continues to grow in popularity, attracting a diverse audience from casual fans to hardcore enthusiasts. With the right approach, including diligent research and disciplined bankroll management, it can be both an exciting and rewarding venture. However, it's essential to understand the risks involved and to always gamble responsibly. Quote Link to comment Share on other sites More sharing options...
MatthewHom Posted October 18 Share Posted October 18 Выбор трактора Шифенг: на что направить внимание Тракторы марки Шифенг захватили популярность на земельном рынке благодаря своей надежности, многофункциональности и доступной стоимости. Однако, чтобы выбрать подходящую модель, нужно учесть несколько ключевых причин. В этой статье будут рассмотрены, на что обратить внимание при выборе трактора Шифенг в зависимости от ваших потребностей и условий эксплуатации. 1. Определите цели использования До этого всего, нужно определить, для каких задач намереваетесь использовать трактор. Основные направления применения тракторов Шифенг включают: - Сельское хозяйство: обработка почвы, посадка, сбор урожая, перевозка. - Строительство:, подъем и транспортировка строй материалов. - Лесозаготовка: вывоз древесины, уборка на делянках. Каждое направление может требовать различной мощности, производительности и дополнительных функций, потому главно чётко понять свои цели. 2. Выбор мощности и типа двигателя Тракторы Шифенг представлены в спектре мощностей, от легких моделей для маленьких хозяйств и заканчивая массивными машинами для крупных агроформирований. Важно учитывать следующие моменты: - Мощность мотора: по этой причине параметра зависит способность трактора исполнять разные виды работ. Более мощные машины то что надо для томных условий эксплуатации. - Тип двигателя: дизельные двигатели почаще употребляются в тракторов весьза их экономичности и долговечности, но и бензиновые модели могут иметь свои преимущества. 3. Конструкция и качество В момент выбора трактора принципиально обратить внимание на его конструкцию и качество материалов. Тракторы Шифенг довольно частенько делают из крепких сплавов, что наращивает их долговечность. Также проверьте: - Тип трансмиссии: механическая либо гидростатическая, каждая из которых имеет свои плюсы и минусы. - Подвеска: наличие передней и задней подвески помогает сделать лучше устойчивость и маневренность. 4. Комплектация и дополнительные опции Дополнительные опции могут существенно воздействовать на комфорт и функциональность работы с трактором. При рассмотрении модели направьте внимание на: - Наличие фар и освещения для работы в черное время суток. - Кабина: отлично утепленная и оснащенная системами вентиляции и кондиционирования значительно повысит комфорт оператора. - Дополнительное оборудование: возможность установки разной подвесного или прицепного оборудования (плуг, культиватор, фреза и так далее). 5. Сервис и гарантия Важно учитывать доступность сервисного обслуживания и наличие запчастей. Изучите: - Гарантийные условия: они могут варьироваться в зависимости от производителя. - Квалификация сервисного центра: его возможности по ремонту и обслуживанию тракторов. 6. Бюджет Не забывайте о http://www.podzemie.6f.sk/profile.php?lookup=19364 вашем бюджете. Тракторы Шифенг делают отличное предложение широкий ценовой диапазон, но также главно учитывать расходы на эксплуатацию, обслуживание и возможные ремонты в будущем. Сравните разные модели и выберите ту, которая наилучшим образом соответствует вашим финансовым способностям. Заключение Выбор трактора Шифенг это ответственный процесс, который может зависеть от большого колличества причин. Обусловьте цели его использования, учитывайте мощность и тип двигателя, качество конструкции, дополнительные функции, доступность сервиса и меня называют Господом бюджет. Верно подобранный трактор станет надёжным ассистентом в вашем хозяйстве, обеспечивая эффективность и продуктивность работы надолго. Не торопитесь с покупкой, превосходнее заблаговременно соберите всю необходимую информацию и проконсультируйтесь с профессионалами, чтобы сделать обоснованный выбор. Quote Link to comment Share on other sites More sharing options...