daily pastebin goal
66%
SHARE
TWEET

Untitled

PhoenixxxCzar Dec 24th, 2018 154 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; <COMPILER: v1.1.29.01>
  2. #IfWinActive GTA:SA:MP
  3. #Persistent
  4. #SingleInstance FORCE
  5. #MaxThreads
  6. #MaxHotkeysPerInterval 200
  7. global ERROR_OK                     := 0
  8. global ERROR_PROCESS_NOT_FOUND      := 1
  9. global ERROR_OPEN_PROCESS           := 2
  10. global ERROR_INVALID_HANDLE         := 3
  11. global ERROR_MODULE_NOT_FOUND       := 4
  12. global ERROR_ENUM_PROCESS_MODULES   := 5
  13. global ERROR_ZONE_NOT_FOUND         := 6
  14. global ERROR_CITY_NOT_FOUND         := 7
  15. global ERROR_READ_MEMORY            := 8
  16. global ERROR_WRITE_MEMORY           := 9
  17. global ERROR_ALLOC_MEMORY           := 10
  18. global ERROR_FREE_MEMORY            := 11
  19. global ERROR_WAIT_FOR_OBJECT        := 12
  20. global ERROR_CREATE_THREAD          := 13
  21. global ADDR_ZONECODE                := 0xA49AD4
  22. global ADDR_POSITION_X              := 0xB6F2E4
  23. global ADDR_POSITION_Y              := 0xB6F2E8
  24. global ADDR_POSITION_Z              := 0xB6F2EC
  25. global ADDR_CPED_PTR                := 0xB6F5F0
  26. global ADDR_CPED_HPOFF              := 0x540
  27. global ADDR_CPED_ARMOROFF           := 0x548
  28. global ADDR_CPED_MONEY              := 0x0B7CE54
  29. global ADDR_CPED_INTID              := 0xA4ACE8
  30. global ADDR_CPED_SKINIDOFF          := 0x22
  31. global ADDR_VEHICLE_PTR             := 0xBA18FC
  32. global ADDR_VEHICLE_HPOFF           := 0x4C0
  33. global ADDR_VEHICLE_DOORSTATE       := 0x4F8
  34. global ADDR_VEHICLE_ENGINESTATE     := 0x428
  35. global ADDR_VEHICLE_LIGHTSTATE      := 0x584
  36. global ADDR_VEHICLE_MODEL           := 0x22
  37. global ADDR_VEHICLE_TYPE            := 0x590
  38. global ADDR_VEHICLE_DRIVER          := 0x460
  39. global ADDR_VEHICLE_X               := 0x44
  40. global ADDR_VEHICLE_Y               := 0x48
  41. global ADDR_VEHICLE_Z               := 0x4C
  42. global oAirplaneModels := [417, 425, 447, 460, 469, 476, 487, 488, 497, 511, 512, 513, 519, 520, 548, 553, 563, 577, 592, 593]
  43. global oBikeModels := [481,509,510]
  44. global ovehicleNames := ["Landstalker","Bravura","Buffalo","Linerunner","Perrenial","Sentinel","Dumper","Firetruck","Trashmaster","Stretch","Manana","Infernus","Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam","Esperanto","Taxi","Washington","Bobcat","Whoopee","BFInjection","Hunter","Premier","Enforcer","Securicar","Banshee","Predator","Bus","Rhino","Barracks","Hotknife","Trailer","Previon","Coach","Cabbie","Stallion","Rumpo","RCBandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer","Turismo","Speeder","Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley'sRCVan","Skimmer","PCJ-600","Faggio","Freeway","RCBaron","RCRaider","Glendale","Oceanic","Sanchez","Sparrow","Patriot","Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR-350","Walton","Regina","Comet","BMX","Burrito","Camper","Marquis","Baggage","Dozer","Maverick","NewsChopper","Rancher","FBI Rancher","Virgo","Greenwood","Jetmax","Hotring","Sandking","BlistaCompact","Police Maverick","Boxvillde","Benson","Mesa","RCGoblin","HotringRacerA","HotringRacerB","BloodringBanger","Rancher","SuperGT","Elegant","Journey","Bike","MountainBike","Beagle","Cropduster","Stunt","Tanker","Roadtrain","Nebula","Majestic","Buccaneer","Shamal","hydra","FCR-900","NRG-500","HPV1000","CementTruck","TowTruck","Fortune","Cadrona","FBI Truck","Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade","Freight","Streak","Vortex","Vincent","Bullet","Clover","Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob","Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster","Monster","Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RCTiger","Flash","Tahoma","Savanna","Bandito","FreightFlat","StreakCarriage","Kart","Mower","Dune","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford","BF-400","NewsVan","Tug","Trailer","Emperor","Wayfarer","Euros","Hotdog","Club","FreightBox","Trailer","Andromada","Dodo","RCCam","Launch","PoliceCar","PoliceCar","PoliceCar","Police Ranger","Picador","S.W.A.T","Alpha","Phoenix","GlendaleShit","SadlerShit","Luggage","Luggage","Stairs","Boxville","Tiller","UtilityTrailer"]
  45. global oweaponNames := ["Fist","Brass Knuckles","Golf Club","Nightstick","Knife","Baseball Bat","Shovel","Pool Cue","Katana","Chainsaw","Purple Dildo","Dildo","Vibrator","Silver Vibrator","Flowers","Cane","Grenade","Tear Gas","Molotov Cocktail", "", "", "", "9mm","Silenced 9mm","Desert Eagle","Shotgun","Sawnoff Shotgun","Combat Shotgun","Micro SMG/Uzi","MP5","AK-47","M4","Tec-9","Country Rifle","Sniper Rifle","RPG","HS Rocket","Flamethrower","Minigun","Satchel Charge","Detonator","Spraycan","Fire Extinguisher","Camera","Night Vis Goggles","Thermal Goggles","Parachute"]
  46. global oradiostationNames := ["Playback FM", "K Rose", "K-DST", "Bounce FM", "SF-UR", "Radio Los Santos", "Radio X", "CSR 103.9", "K-JAH West", "Master Sounds 98.3", "WCTR Talk Radio", "User Track Player", "Radio Off"]
  47. global oweatherNames := ["EXTRASUNNY_LA", "SUNNY_LA", "EXTRASUNNY_SMOG_LA", "SUNNY_SMOG_LA", "CLOUDY_LA", "SUNNY_SF", "EXTRASUNNY_SF", "CLOUDY_SF", "RAINY_SF", "FOGGY_SF", "SUNNY_VEGAS", "EXTRASUNNY_VEGAS", "CLOUDY_VEGAS", "EXTRASUNNY_COUNTRYSIDE", "SUNNY_COUNTRYSIDE", "CLOUDY_COUNTRYSIDE", "RAINY_COUNTRYSIDE", "EXTRASUNNY_DESERT", "SUNNY_DESERT", "SANDSTORM_DESERT", "UNDERWATER", "EXTRACOLOURS_1", "EXTRACOLOURS_2"]
  48. global ADDR_SAMP_INCHAT_PTR             := 0x21a10c
  49. global ADDR_SAMP_INCHAT_PTR_OFF         := 0x55
  50. global ADDR_SAMP_USERNAME               := 0x219A6F
  51. global FUNC_SAMP_SENDCMD                := 0x65c60
  52. global FUNC_SAMP_SENDSAY                := 0x57f0
  53. global FUNC_SAMP_ADDTOCHATWND           := 0x64520
  54. global ADDR_SAMP_CHATMSG_PTR            := 0x21a0e4
  55. global FUNC_SAMP_SHOWGAMETEXT           := 0x9c2c0
  56. global FUNC_SAMP_PLAYAUDIOSTR           := 0x62da0
  57. global FUNC_SAMP_STOPAUDIOSTR           := 0x629a0
  58. global DIALOG_STYLE_MSGBOX          := 0
  59. global DIALOG_STYLE_INPUT           := 1
  60. global DIALOG_STYLE_LIST            := 2
  61. global DIALOG_STYLE_PASSWORD        := 3
  62. global DIALOG_STYLE_TABLIST         := 4
  63. global DIALOG_STYLE_TABLIST_HEADERS := 5
  64. global SAMP_DIALOG_STRUCT_PTR                   := 0x21A0B8
  65. global SAMP_DIALOG_PTR1_OFFSET              := 0x1C
  66. global SAMP_DIALOG_LINES_OFFSET             := 0x44C
  67. global SAMP_DIALOG_INDEX_OFFSET             := 0x443
  68. global SAMP_DIALOG_BUTTON_HOVERING_OFFSET   := 0x465
  69. global SAMP_DIALOG_BUTTON_CLICKED_OFFSET    := 0x466
  70. global SAMP_DIALOG_PTR2_OFFSET              := 0x20
  71. global SAMP_DIALOG_LINECOUNT_OFFSET         := 0x150
  72. global SAMP_DIALOG_OPEN_OFFSET              := 0x28
  73. global SAMP_DIALOG_STYLE_OFFSET             := 0x2C
  74. global SAMP_DIALOG_ID_OFFSET                := 0x30
  75. global SAMP_DIALOG_TEXT_PTR_OFFSET          := 0x34
  76. global SAMP_DIALOG_CAPTION_OFFSET           := 0x40
  77. global FUNC_SAMP_SHOWDIALOG                 := 0x6B9C0
  78. global FUNC_SAMP_CLOSEDIALOG                := 0x6C040
  79. global SAMP_DIALOG_TEXT                     := 0x12D8F8
  80. global SAMP_DIALOG_SHOW                     := 0x28
  81. global SAMP_DIALOG_ID                       := 0x30
  82. global SAMP_CHAT_SHOW                       := 0x21A0E8
  83. global FUNC_UPDATESCOREBOARD                := 0x8A10
  84. global SAMP_INFO_OFFSET                     := 0x21A0F8
  85. global ADDR_SAMP_CRASHREPORT                := 0x5CF2C
  86. global SAMP_PPOOLS_OFFSET                   := 0x3CD
  87. global SAMP_PPOOL_PLAYER_OFFSET             := 0x18
  88. global SAMP_SLOCALPLAYERID_OFFSET           := 0x4
  89. global SAMP_ISTRLEN_LOCALPLAYERNAME_OFFSET  := 0x1A
  90. global SAMP_SZLOCALPLAYERNAME_OFFSET        := 0xA
  91. global SAMP_PSZLOCALPLAYERNAME_OFFSET       := 0xA
  92. global SAMP_PREMOTEPLAYER_OFFSET            := 0x2E
  93. global SAMP_ISTRLENNAME___OFFSET            := 0x1C
  94. global SAMP_SZPLAYERNAME_OFFSET             := 0xC
  95. global SAMP_PSZPLAYERNAME_OFFSET            := 0xC
  96. global SAMP_ILOCALPLAYERPING_OFFSET         := 0x26
  97. global SAMP_ILOCALPLAYERSCORE_OFFSET        := 0x2A
  98. global SAMP_IPING_OFFSET                    := 0x28
  99. global SAMP_ISCORE_OFFSET                   := 0x24
  100. global SAMP_ISNPC_OFFSET                    := 0x4
  101. global SAMP_PLAYER_MAX                      := 1004
  102. global CheckpointCheck                      := 0xC7DEEA
  103. global rmaddrs                              := [0xC7DEC8, 0xC7DECC, 0xC7DED0]
  104. global SIZE_SAMP_CHATMSG := 0xFC
  105. global hGTA := 0x0
  106. global dwGTAPID := 0x0
  107. global dwSAMP := 0x0
  108. global pMemory := 0x0
  109. global pParam1 := 0x0
  110. global pParam2 := 0x0
  111. global pParam3 := 0x0
  112. global pParam4                         := 0x0
  113. global pParam5                         := 0x0
  114. global pInjectFunc := 0x0
  115. global nZone := 1
  116. global nCity := 1
  117. global bInitZaC := 0
  118. global iRefreshScoreboard := 0
  119. global oScoreboardData := ""
  120. global iRefreshHandles := 0
  121. global iUpdateTick := 2500
  122. IsChatActive() {
  123.     if(!checkHandles())
  124.     return -1
  125.     dwInputInfo := readDWORD(hGTA, dwSAMP + SAMP_CHAT_SHOW)
  126.     dwInputBox := readDWORD(hGTA, dwInputInfo + 8)
  127.     byteChatActive := readMem(hGTA, dwInputBox + 4, 1)
  128.     if(ErrorLevel) {
  129.         ErrorLevel := ERROR_READ_MEMORY
  130.         return -1
  131.     }
  132.     return byteChatActive
  133. }
  134. ClearTextDialog() {
  135.     if(!checkHandles())
  136.     return ""
  137.     dwAddress := dwSAMP + SAMP_DIALOG_TEXT
  138.     sUsername := writeString(hGTA, dwAddress, "")
  139.     if(ErrorLevel) {
  140.         ErrorLevel := ERROR_READ_MEMORY
  141.         return ""
  142.     }
  143.     ErrorLevel := ERROR_OK
  144.     return sUsername
  145. }
  146. GetChatText() {
  147.     if(!checkHandles())
  148.     return -1
  149.     dwAddress := dwSAMP + SAMP_DIALOG_TEXT
  150.     sUsername := readString(hGTA, dwAddress, 256)
  151.     if(ErrorLevel) {
  152.         ErrorLevel := ERROR_READ_MEMORY
  153.         return -2
  154.     }
  155.     ErrorLevel := ERROR_OK
  156.     return sUsername
  157. }
  158. IsSAMPAvailable() {
  159.     if(!checkHandles())
  160.     return false
  161.     dwChatInfo := readDWORD(hGTA, dwSAMP + ADDR_SAMP_CHATMSG_PTR)
  162.     if(dwChatInfo == 0 || dwChatInfo == "ERROR")
  163.     {
  164.         return false
  165.     }
  166.     else
  167.     {
  168.         return true
  169.     }
  170. }
  171. isInChat() {
  172.     if(!checkHandles())
  173.     return -1
  174.     dwPtr := dwSAMP + ADDR_SAMP_INCHAT_PTR
  175.     dwAddress := readDWORD(hGTA, dwPtr) + ADDR_SAMP_INCHAT_PTR_OFF
  176.     if(ErrorLevel) {
  177.         ErrorLevel := ERROR_READ_MEMORY
  178.         return -1
  179.     }
  180.     dwInChat := readDWORD(hGTA, dwAddress)
  181.     if(ErrorLevel) {
  182.         ErrorLevel := ERROR_READ_MEMORY
  183.         return -1
  184.     }
  185.     ErrorLevel := ERROR_OK
  186.     if(dwInChat > 0) {
  187.         return true
  188.     } else {
  189.         return false
  190.     }
  191. }
  192. getUsername() {
  193.     if(!checkHandles())
  194.     return ""
  195.     dwAddress := dwSAMP + ADDR_SAMP_USERNAME
  196.     sUsername := readString(hGTA, dwAddress, 25)
  197.     if(ErrorLevel) {
  198.         ErrorLevel := ERROR_READ_MEMORY
  199.         return ""
  200.     }
  201.     ErrorLevel := ERROR_OK
  202.     return sUsername
  203. }
  204. getId() {
  205.     s:=getUsername()
  206.     return getPlayerIdByName(s)
  207. }
  208. SendChat(wText) {
  209.     wText := "" wText
  210.     if(!checkHandles())
  211.     return false
  212.     dwFunc:=0
  213.     if(SubStr(wText, 1, 1) == "/") {
  214.         dwFunc := dwSAMP + FUNC_SAMP_SENDCMD
  215.     } else {
  216.         dwFunc := dwSAMP + FUNC_SAMP_SENDSAY
  217.     }
  218.     callWithParams(hGTA, dwFunc, [["s", wText]], false)
  219.     ErrorLevel := ERROR_OK
  220.     return true
  221. }
  222. addChatMessage(text,color=0xffffffff) {
  223.     if(!checkHandles())
  224.     return false
  225.     dwFunc := dwSAMP + 0x64010
  226.     dwAddress := readDWORD(hGTA, dwSAMP + 0x21A0E4)
  227.     if(ErrorLevel || dwAddress==0) {
  228.         ErrorLevel := ERROR_READ_MEMORY
  229.         return false
  230.     }
  231.     callWithParamsforaddToChatWindow(hGTA, dwFunc, [["i", dwAddress],["i", 8],["s", text],["i", 0],["i", color],["i", 0]], false, true)
  232.     ErrorLevel := ERROR_OK
  233.     return true
  234. }
  235. showGameText(wText, dwTime, dwSize) {
  236.     wText := "" wText
  237.     dwTime += 0
  238.     dwTime := Floor(dwTime)
  239.     dwSize += 0
  240.     dwSize := Floor(dwSize)
  241.     if(!checkHandles())
  242.     return false
  243.     dwFunc := dwSAMP + FUNC_SAMP_SHOWGAMETEXT
  244.     callWithParams(hGTA, dwFunc, [["s", wText], ["i", dwTime], ["i", dwSize]], false)
  245.     ErrorLevel := ERROR_OK
  246.     return true
  247. }
  248. playAudioStream(wUrl) {
  249.     wUrl := "" wUrl
  250.     if(!checkHandles())
  251.     return false
  252.     dwFunc := dwSAMP + FUNC_SAMP_PLAYAUDIOSTR
  253.     patchRadio()
  254.     callWithParams(hGTA, dwFunc, [["s", wUrl], ["i", 0], ["i", 0], ["i", 0], ["i", 0], ["i", 0]], false)
  255.     unPatchRadio()
  256.     ErrorLevel := ERROR_OK
  257.     return true
  258. }
  259. stopAudioStream() {
  260.     if(!checkHandles())
  261.     return false
  262.     dwFunc := dwSAMP + FUNC_SAMP_STOPAUDIOSTR
  263.     patchRadio()
  264.     callWithParams(hGTA, dwFunc, [["i", 1]], false)
  265.     unPatchRadio()
  266.     ErrorLevel := ERROR_OK
  267.     return true
  268. }
  269. patchRadio()
  270. {
  271.     if(!checkHandles())
  272.     return false
  273.     VarSetCapacity(nop, 4, 0)
  274.     NumPut(0x90909090,nop,0,"UInt")
  275.     dwFunc := dwSAMP + FUNC_SAMP_PLAYAUDIOSTR
  276.     writeRaw(hGTA, dwFunc, &nop, 4)
  277.     writeRaw(hGTA, dwFunc+4, &nop, 1)
  278.     dwFunc := dwSAMP + FUNC_SAMP_STOPAUDIOSTR
  279.     writeRaw(hGTA, dwFunc, &nop, 4)
  280.     writeRaw(hGTA, dwFunc+4, &nop, 1)
  281.     return true
  282. }
  283. unPatchRadio()
  284. {
  285.     if(!checkHandles())
  286.     return false
  287.     VarSetCapacity(old, 4, 0)
  288.     dwFunc := dwSAMP + FUNC_SAMP_PLAYAUDIOSTR
  289.     NumPut(0x74003980,old,0,"UInt")
  290.     writeRaw(hGTA, dwFunc, &old, 4)
  291.     NumPut(0x39,old,0,"UChar")
  292.     writeRaw(hGTA, dwFunc+4, &old, 1)
  293.     dwFunc := dwSAMP + FUNC_SAMP_STOPAUDIOSTR
  294.     NumPut(0x74003980,old,0,"UInt")
  295.     writeRaw(hGTA, dwFunc, &old, 4)
  296.     NumPut(0x09,old,0,"UChar")
  297.     writeRaw(hGTA, dwFunc+4, &old, 1)
  298.     return true
  299. }
  300. blockChatInput() {
  301.     if(!checkHandles())
  302.     return false
  303.     VarSetCapacity(nop, 2, 0)
  304.     dwFunc := dwSAMP + FUNC_SAMP_SENDSAY
  305.     NumPut(0x04C2,nop,0,"Short")
  306.     writeRaw(hGTA, dwFunc, &nop, 2)
  307.     dwFunc := dwSAMP + FUNC_SAMP_SENDCMD
  308.     writeRaw(hGTA, dwFunc, &nop, 2)
  309.     return true
  310. }
  311. unBlockChatInput() {
  312.     if(!checkHandles())
  313.     return false
  314.     VarSetCapacity(nop, 2, 0)
  315.     dwFunc := dwSAMP + FUNC_SAMP_SENDSAY
  316.     NumPut(0xA164,nop,0,"Short")
  317.     writeRaw(hGTA, dwFunc, &nop, 2)
  318.     dwFunc := dwSAMP + FUNC_SAMP_SENDCMD
  319.     writeRaw(hGTA, dwFunc, &nop, 2)
  320.     return true
  321. }
  322. getServerName() {
  323.     if(!checkHandles())
  324.     return -1
  325.     dwAdress := readMem(hGTA, dwSAMP + 0x21A0F8, 4, "int")
  326.     if(ErrorLevel) {
  327.         ErrorLevel := ERROR_READ_MEMORY
  328.         return -1
  329.     }
  330.     if(!dwAdress)
  331.     return -1
  332.     ServerName := readString(hGTA, dwAdress + 0x121, 200)
  333.     if(ErrorLevel) {
  334.         ErrorLevel := ERROR_READ_MEMORY
  335.         return -1
  336.     }
  337.     ErrorLevel := ERROR_OK
  338.     return ServerName
  339. }
  340. getServerIP() {
  341.     if(!checkHandles())
  342.     return -1
  343.     dwAdress := readMem(hGTA, dwSAMP + 0x21A0F8, 4, "int")
  344.     if(ErrorLevel) {
  345.         ErrorLevel := ERROR_READ_MEMORY
  346.         return -1
  347.     }
  348.     if(!dwAdress)
  349.     return -1
  350.     ServerIP := readString(hGTA, dwAdress + 0x20, 100)
  351.     if(ErrorLevel) {
  352.         ErrorLevel := ERROR_READ_MEMORY
  353.         return -1
  354.     }
  355.     ErrorLevel := ERROR_OK
  356.     return ServerIP
  357. }
  358. getServerPort() {
  359.     if(!checkHandles())
  360.     return -1
  361.     dwAdress := readMem(hGTA, dwSAMP + 0x21A0F8, 4, "int")
  362.     if(ErrorLevel) {
  363.         ErrorLevel := ERROR_READ_MEMORY
  364.         return -1
  365.     }
  366.     if(!dwAdress)
  367.     return -1
  368.     ServerPort := readMem(hGTA, dwAdress + 0x225, 4, "int")
  369.     if(ErrorLevel) {
  370.         ErrorLevel := ERROR_READ_MEMORY
  371.         return -1
  372.     }
  373.     ErrorLevel := ERROR_OK
  374.     return ServerPort
  375. }
  376. getWeatherID() {
  377.     if(!checkHandles())
  378.     return -1
  379.     dwGTA := getModuleBaseAddress("gta_sa.exe", hGTA)
  380.     WeatherID := readMem(hGTA, dwGTA + 0xC81320, 2, "byte")
  381.     if(ErrorLevel) {
  382.         ErrorLevel := ERROR_READ_MEMORY
  383.         return -1
  384.     }
  385.     ErrorLevel := ERROR_OK
  386.     return WeatherID
  387. }
  388. getWeatherName() {
  389.     if(isPlayerInAnyVehicle() == 0)
  390.     return -1
  391.     if(id >= 0 && id < 23)
  392.     {
  393.         return oweatherNames[id-1]
  394.     }
  395.     return ""
  396. }
  397. getTargetPed() {
  398.     if(!checkHandles())
  399.     return 0
  400.     dwAddress := readDWORD(hGTA, 0xB6F3B8)
  401.     if(ErrorLevel) {
  402.         ErrorLevel := ERROR_READ_MEMORY
  403.         return 0
  404.     }
  405.     if(!dwAddress)
  406.     return 0
  407.     dwAddress := readDWORD(hGTA, dwAddress+0x79C)
  408.     if(ErrorLevel) {
  409.         ErrorLevel := ERROR_READ_MEMORY
  410.         return 0
  411.     }
  412.     ErrorLevel := ERROR_OK
  413.     return dwAddress
  414. }
  415. calcScreenCoors(fX,fY,fZ)
  416. {
  417.     if(!checkHandles())
  418.     return false
  419.     dwM := 0xB6FA2C
  420.     m_11 := readFloat(hGTA, dwM + 0*4)
  421.     if(ErrorLevel) {
  422.         ErrorLevel := ERROR_READ_MEMORY
  423.         return false
  424.     }
  425.     m_12 := readFloat(hGTA, dwM + 1*4)
  426.     m_13 := readFloat(hGTA, dwM + 2*4)
  427.     m_21 := readFloat(hGTA, dwM + 4*4)
  428.     m_22 := readFloat(hGTA, dwM + 5*4)
  429.     m_23 := readFloat(hGTA, dwM + 6*4)
  430.     m_31 := readFloat(hGTA, dwM + 8*4)
  431.     m_32 := readFloat(hGTA, dwM + 9*4)
  432.     m_33 := readFloat(hGTA, dwM + 10*4)
  433.     m_41 := readFloat(hGTA, dwM + 12*4)
  434.     m_42 := readFloat(hGTA, dwM + 13*4)
  435.     m_43 := readFloat(hGTA, dwM + 14*4)
  436.     dwLenX := readDWORD(hGTA, 0xC17044)
  437.     if(ErrorLevel) {
  438.         ErrorLevel := ERROR_READ_MEMORY
  439.         return false
  440.     }
  441.     dwLenY := readDWORD(hGTA, 0xC17048)
  442.     frX := fZ * m_31 + fY * m_21 + fX * m_11 + m_41
  443.     frY := fZ * m_32 + fY * m_22 + fX * m_12 + m_42
  444.     frZ := fZ * m_33 + fY * m_23 + fX * m_13 + m_43
  445.     fRecip := 1.0/frZ
  446.     frX *= fRecip * dwLenX
  447.     frY *= fRecip * dwLenY
  448.     if(frX<=dwLenX && frY<=dwLenY && frZ>1)
  449.     return [frX,frY,frZ]
  450. }
  451. getPedById(dwId) {
  452.     dwId += 0
  453.     dwId := Floor(dwId)
  454.     if(dwId < 0 || dwId >= SAMP_PLAYER_MAX)
  455.     return 0
  456.     if(iRefreshScoreboard+iUpdateTick > A_TickCount)
  457.     {
  458.         if(oScoreboardData[dwId])
  459.         {
  460.             if(oScoreboardData[dwId].HasKey("PED"))
  461.             return oScoreboardData[dwId].PED
  462.         }
  463.         return 0
  464.     }
  465.     if(!updateOScoreboardData())
  466.     return 0
  467.     if(oScoreboardData[dwId])
  468.     {
  469.         if(oScoreboardData[dwId].HasKey("PED"))
  470.         return oScoreboardData[dwId].PED
  471.     }
  472.     return 0
  473. }
  474. getIdByPed(dwPed) {
  475.     dwPed += 0
  476.     dwPed := Floor(dwPed)
  477.     if(!dwPed)
  478.     return -1
  479.     if(iRefreshScoreboard+iUpdateTick > A_TickCount)
  480.     {
  481.         For i, o in oScoreboardData
  482.         {
  483.             if(o.HasKey("PED"))
  484.             {
  485.                 if(o.PED==dwPed)
  486.                 return i
  487.             }
  488.         }
  489.         return -1
  490.     }
  491.     if(!updateOScoreboardData())
  492.     return -1
  493.     For i, o in oScoreboardData
  494.     {
  495.         if(o.HasKey("PED"))
  496.         {
  497.             if(o.PED==dwPed)
  498.             return i
  499.         }
  500.     }
  501.     return -1
  502. }
  503. getStreamedInPlayersInfo() {
  504.     r:=[]
  505.     if(iRefreshScoreboard+iUpdateTick > A_TickCount)
  506.     {
  507.         For i, o in oScoreboardData
  508.         {
  509.             if(o.HasKey("PED"))
  510.             {
  511.                 p := getPedCoordinates(o.PED)
  512.                 if(p)
  513.                 {
  514.                     o.POS := p
  515.                     r[i] := o
  516.                 }
  517.             }
  518.         }
  519.         return r
  520.     }
  521.     if(!updateOScoreboardData())
  522.     return ""
  523.     For i, o in oScoreboardData
  524.     {
  525.         if(o.HasKey("PED"))
  526.         {
  527.             p := getPedCoordinates(o.PED)
  528.             if(p)
  529.             {
  530.                 o.POS := p
  531.                 r[i] := o
  532.             }
  533.         }
  534.     }
  535.     return r
  536. }
  537. callFuncForAllStreamedInPlayers(cfunc,dist=0x7fffffff) {
  538.     cfunc := "" cfunc
  539.     dist += 0
  540.     if(!IsFunc(cfunc))
  541.     return false
  542.     p := getStreamedInPlayersInfo()
  543.     if(!p)
  544.     return false
  545.     if(dist<0x7fffffff)
  546.     {
  547.         lpos := getCoordinates()
  548.         if(!lpos)
  549.         return false
  550.         For i, o in p
  551.         {
  552.             if(dist>getDist(lpos,o.POS))
  553.             %cfunc%(o)
  554.         }
  555.     }
  556.     else
  557.     {
  558.         For i, o in p
  559.         %cfunc%(o)
  560.     }
  561.     return true
  562. }
  563. getDist(pos1,pos2) {
  564.     if(!pos1 || !pos2)
  565.     return 0
  566.     return Sqrt((pos1[1]-pos2[1])*(pos1[1]-pos2[1])+(pos1[2]-pos2[2])*(pos1[2]-pos2[2])+(pos1[3]-pos2[3])*(pos1[3]-pos2[3]))
  567. }
  568. getClosestPlayerPed() {
  569.     dist := 0x7fffffff
  570.     p := getStreamedInPlayersInfo()
  571.     if(!p)
  572.     return -1
  573.     lpos := getCoordinates()
  574.     if(!lpos)
  575.     return -1
  576.     id := -1
  577.     For i, o in p
  578.     {
  579.         t:=getDist(lpos,o.POS)
  580.         if(t<dist)
  581.         {
  582.             dist := t
  583.             id := i
  584.         }
  585.     }
  586.     PED := getPedById(id)
  587.     return PED
  588. }
  589. getClosestPlayerId() {
  590.     dist := 0x7fffffff
  591.     p := getStreamedInPlayersInfo()
  592.     if(!p)
  593.     return -1
  594.     lpos := getCoordinates()
  595.     if(!lpos)
  596.     return -1
  597.     id := -1
  598.     For i, o in p
  599.     {
  600.         t:=getDist(lpos,o.POS)
  601.         if(t<dist)
  602.         {
  603.             dist := t
  604.             id := i
  605.         }
  606.     }
  607.     return id
  608. }
  609. CountOnlinePlayers() {
  610.     if(!checkHandles())
  611.     return -1
  612.     dwOnline := readDWORD(hGTA, dwSAMP + 0x21A0B4)
  613.     if(ErrorLevel) {
  614.         ErrorLevel := ERROR_READ_MEMORY
  615.         return -1
  616.     }
  617.     dwAddr := dwOnline + 0x4
  618.     OnlinePlayers := readDWORD(hGTA, dwAddr)
  619.     if(ErrorLevel) {
  620.         ErrorLevel := ERROR_READ_MEMORY
  621.         return -1
  622.     }
  623.     ErrorLevel := ERROR_OK
  624.     return OnlinePlayers
  625. }
  626. getPedCoordinates(dwPED) {
  627.     dwPED += 0
  628.     dwPED := Floor(dwPED)
  629.     if(!dwPED)
  630.     return ""
  631.     if(!checkHandles())
  632.     return ""
  633.     dwAddress := readDWORD(hGTA, dwPED + 0x14)
  634.     if(ErrorLevel || dwAddress==0) {
  635.         ErrorLevel := ERROR_READ_MEMORY
  636.         return ""
  637.     }
  638.     fX := readFloat(hGTA, dwAddress + 0x30)
  639.     if(ErrorLevel) {
  640.         ErrorLevel := ERROR_READ_MEMORY
  641.         return ""
  642.     }
  643.     fY := readFloat(hGTA, dwAddress + 0x34)
  644.     if(ErrorLevel) {
  645.         ErrorLevel := ERROR_READ_MEMORY
  646.         return ""
  647.     }
  648.     fZ := readFloat(hGTA, dwAddress + 0x38)
  649.     if(ErrorLevel) {
  650.         ErrorLevel := ERROR_READ_MEMORY
  651.         return ""
  652.     }
  653.     ErrorLevel := ERROR_OK
  654.     return [fX, fY, fZ]
  655. }
  656. getTargetPos(dwId) {
  657.     dwId += 0
  658.     dwId := Floor(dwId)
  659.     if(dwId < 0 || dwId >= SAMP_PLAYER_MAX)
  660.     return ""
  661.     if(iRefreshScoreboard+iUpdateTick > A_TickCount)
  662.     {
  663.         if(oScoreboardData[dwId])
  664.         {
  665.             if(oScoreboardData[dwId].HasKey("PED"))
  666.             return getPedCoordinates(oScoreboardData[dwId].PED)
  667.             if(oScoreboardData[dwId].HasKey("MPOS"))
  668.             return oScoreboardData[dwId].MPOS
  669.         }
  670.         return ""
  671.     }
  672.     if(!updateOScoreboardData())
  673.     return ""
  674.     if(oScoreboardData[dwId])
  675.     {
  676.         if(oScoreboardData[dwId].HasKey("PED"))
  677.         return getPedCoordinates(oScoreboardData[dwId].PED)
  678.         if(oScoreboardData[dwId].HasKey("MPOS"))
  679.         return oScoreboardData[dwId].MPOS
  680.     }
  681.     return ""
  682. }
  683. getTargetPlayerSkinIdByPed(dwPED) {
  684.     if(!checkHandles())
  685.     return -1
  686.     dwAddr := dwPED + ADDR_CPED_SKINIDOFF
  687.     SkinID := readMem(hGTA, dwAddr, 2, "byte")
  688.     if(ErrorLevel) {
  689.         ErrorLevel := ERROR_READ_MEMORY
  690.         return -1
  691.     }
  692.     ErrorLevel := ERROR_OK
  693.     return SkinID
  694. }
  695. getTargetPlayerSkinIdById(dwId) {
  696.     if(!checkHandles())
  697.     return -1
  698.     dwPED := getPedById(dwId)
  699.     dwAddr := dwPED + ADDR_CPED_SKINIDOFF
  700.     SkinID := readMem(hGTA, dwAddr, 2, "byte")
  701.     if(ErrorLevel) {
  702.         ErrorLevel := ERROR_READ_MEMORY
  703.         return -1
  704.     }
  705.     ErrorLevel := ERROR_OK
  706.     return SkinID
  707. }
  708. getVehiclePointerByPed(dwPED) {
  709.     dwPED += 0
  710.     dwPED := Floor(dwPED)
  711.     if(!dwPED)
  712.     return 0
  713.     if(!checkHandles())
  714.     return 0
  715.     dwAddress := readDWORD(hGTA, dwPED + 0x58C)
  716.     if(ErrorLevel) {
  717.         ErrorLevel := ERROR_READ_MEMORY
  718.         return 0
  719.     }
  720.     ErrorLevel := ERROR_OK
  721.     return dwAddress
  722. }
  723. getVehiclePointerById(dwId) {
  724.     if(!dwId)
  725.     return 0
  726.     if(!checkHandles())
  727.     return 0
  728.     dwPed_By_Id := getPedById(dwId)
  729.     dwAddress := readDWORD(hGTA, dwPed_By_Id + 0x58C)
  730.     if(ErrorLevel) {
  731.         ErrorLevel := ERROR_READ_MEMORY
  732.         return 0
  733.     }
  734.     ErrorLevel := ERROR_OK
  735.     return dwAddress
  736. }
  737. isTargetInAnyVehicleByPed(dwPED)
  738. {
  739.     if(!checkHandles())
  740.     return -1
  741.     dwVehiclePointer := getVehiclePointerByPed(dwPedPointer)
  742.     if(dwVehiclePointer > 0)
  743.     {
  744.         return 1
  745.     }
  746.     else if(dwVehiclePointer <= 0)
  747.     {
  748.         return 0
  749.     }
  750.     else
  751.     {
  752.         return -1
  753.     }
  754. }
  755. isTargetInAnyVehiclebyId(dwId)
  756. {
  757.     if(!checkHandles())
  758.     return -1
  759.     dwPedPointer := getPedById(dwId)
  760.     dwVehiclePointer := getVehiclePointerByPed(dwPedPointer)
  761.     if(dwVehiclePointer > 0)
  762.     {
  763.         return 1
  764.     }
  765.     else if(dwVehiclePointer <= 0)
  766.     {
  767.         return 0
  768.     }
  769.     else
  770.     {
  771.         return -1
  772.     }
  773. }
  774. getTargetVehicleHealthByPed(dwPed) {
  775.     if(!checkHandles())
  776.     return -1
  777.     dwVehPtr := getVehiclePointerByPed(dwPed)
  778.     dwAddr := dwVehPtr + ADDR_VEHICLE_HPOFF
  779.     fHealth := readFloat(hGTA, dwAddr)
  780.     if(ErrorLevel) {
  781.         ErrorLevel := ERROR_READ_MEMORY
  782.         return -1
  783.     }
  784.     ErrorLevel := ERROR_OK
  785.     return Round(fHealth)
  786. }
  787. getTargetVehicleHealthById(dwId) {
  788.     if(!checkHandles())
  789.     return -1
  790.     dwVehPtr := getVehiclePointerById(dwId)
  791.     dwAddr := dwVehPtr + ADDR_VEHICLE_HPOFF
  792.     fHealth := readFloat(hGTA, dwAddr)
  793.     if(ErrorLevel) {
  794.         ErrorLevel := ERROR_READ_MEMORY
  795.         return -1
  796.     }
  797.     ErrorLevel := ERROR_OK
  798.     return Round(fHealth)
  799. }
  800. getTargetVehicleTypeByPed(dwPED) {
  801.     if(!checkHandles())
  802.     return 0
  803.     dwAddr := getVehiclePointerByPed(dwPED)
  804.     if(!dwAddr)
  805.     return 0
  806.     cVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_TYPE, 1, "Char")
  807.     if(ErrorLevel) {
  808.         ErrorLevel := ERROR_READ_MEMORY
  809.         return 0
  810.     }
  811.     ErrorLevel := ERROR_OK
  812.     if(!cVal)
  813.     {
  814.         mid := getVehicleModelId()
  815.         Loop % oAirplaneModels.MaxIndex()
  816.         {
  817.             if(oAirplaneModels[A_Index]==mid)
  818.             return 5
  819.         }
  820.         return 1
  821.     }
  822.     else if(cVal==5)
  823.     return 2
  824.     else if(cVal==6)
  825.     return 3
  826.     else if(cVal==9)
  827.     {
  828.         mid := getVehicleModelId()
  829.         Loop % oBikeModels.MaxIndex()
  830.         {
  831.             if(oBikeModels[A_Index]==mid)
  832.             return 6
  833.         }
  834.         return 4
  835.     }
  836.     return 0
  837. }
  838. getTargetVehicleTypeById(dwId) {
  839.     if(!checkHandles())
  840.     return 0
  841.     dwAddr := getVehiclePointerById(dwId)
  842.     if(!dwAddr)
  843.     return 0
  844.     cVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_TYPE, 1, "Char")
  845.     if(ErrorLevel) {
  846.         ErrorLevel := ERROR_READ_MEMORY
  847.         return 0
  848.     }
  849.     ErrorLevel := ERROR_OK
  850.     if(!cVal)
  851.     {
  852.         mid := getVehicleModelId()
  853.         Loop % oAirplaneModels.MaxIndex()
  854.         {
  855.             if(oAirplaneModels[A_Index]==mid)
  856.             return 5
  857.         }
  858.         return 1
  859.     }
  860.     else if(cVal==5)
  861.     return 2
  862.     else if(cVal==6)
  863.     return 3
  864.     else if(cVal==9)
  865.     {
  866.         mid := getVehicleModelId()
  867.         Loop % oBikeModels.MaxIndex()
  868.         {
  869.             if(oBikeModels[A_Index]==mid)
  870.             return 6
  871.         }
  872.         return 4
  873.     }
  874.     return 0
  875. }
  876. getTargetVehicleModelIdByPed(dwPED) {
  877.     if(!checkHandles())
  878.     return 0
  879.     dwAddr := getVehiclePointerByPed(dwPED)
  880.     if(!dwAddr)
  881.     return 0
  882.     sVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_MODEL, 2, "Short")
  883.     if(ErrorLevel) {
  884.         ErrorLevel := ERROR_READ_MEMORY
  885.         return 0
  886.     }
  887.     ErrorLevel := ERROR_OK
  888.     return sVal
  889. }
  890. getTargetVehicleModelIdById(dwId) {
  891.     if(!checkHandles())
  892.     return 0
  893.     dwAddr := getVehiclePointerById(dwId)
  894.     if(!dwAddr)
  895.     return 0
  896.     sVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_MODEL, 2, "Short")
  897.     if(ErrorLevel) {
  898.         ErrorLevel := ERROR_READ_MEMORY
  899.         return 0
  900.     }
  901.     ErrorLevel := ERROR_OK
  902.     return sVal
  903. }
  904. getTargetVehicleModelNameByPed(dwPED) {
  905.     id := getTargetVehicleModelIdByPed(dwPED)
  906.     if(id > 400 && id < 611)
  907.     {
  908.         return ovehicleNames[id-399]
  909.     }
  910.     return ""
  911. }
  912. getTargetVehicleModelNameById(dwId) {
  913.     id := getTargetVehicleModelIdById(dwId)
  914.     if(id > 400 && id < 611)
  915.     {
  916.         return ovehicleNames[id-399]
  917.     }
  918.     return ""
  919. }
  920. getTargetVehicleLightStateByPed(dwPED) {
  921.     if(!checkHandles())
  922.     return -1
  923.     dwAddr := getVehiclePointerByPed(dwPED)
  924.     if(!dwAddr)
  925.     return -1
  926.     dwVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_LIGHTSTATE, 4, "Int")
  927.     if(ErrorLevel) {
  928.         ErrorLevel := ERROR_READ_MEMORY
  929.         return -1
  930.     }
  931.     ErrorLevel := ERROR_OK
  932.     return (dwVal>0)
  933. }
  934. getTargetVehicleLightStateById(dwId) {
  935.     if(!checkHandles())
  936.     return -1
  937.     dwAddr := getVehiclePointerById(dwId)
  938.     if(!dwAddr)
  939.     return -1
  940.     dwVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_LIGHTSTATE, 4, "Int")
  941.     if(ErrorLevel) {
  942.         ErrorLevel := ERROR_READ_MEMORY
  943.         return -1
  944.     }
  945.     ErrorLevel := ERROR_OK
  946.     return (dwVal>0)
  947. }
  948. getTargetVehicleLockStateByPed(dwPED) {
  949.     if(!checkHandles())
  950.     return -1
  951.     dwAddr := getVehiclePointerByPed(dwPED)
  952.     if(!dwAddr)
  953.     return -1
  954.     dwVal := readDWORD(hGTA, dwAddr + ADDR_VEHICLE_DOORSTATE)
  955.     if(ErrorLevel) {
  956.         ErrorLevel := ERROR_READ_MEMORY
  957.         return -1
  958.     }
  959.     ErrorLevel := ERROR_OK
  960.     return (dwVal==2)
  961. }
  962. getTargetVehicleLockStateById(dwId) {
  963.     if(!checkHandles())
  964.     return -1
  965.     dwAddr := getVehiclePointerById(dwId)
  966.     if(!dwAddr)
  967.     return -1
  968.     dwVal := readDWORD(hGTA, dwAddr + ADDR_VEHICLE_DOORSTATE)
  969.     if(ErrorLevel) {
  970.         ErrorLevel := ERROR_READ_MEMORY
  971.         return -1
  972.     }
  973.     ErrorLevel := ERROR_OK
  974.     return (dwVal==2)
  975. }
  976. getTargetVehicleColor1byPed(dwPED) {
  977.     if(!checkHandles())
  978.     return 0
  979.     dwAddr := getVehiclePointerByPed(dwPED)
  980.     if(!dwAddr)
  981.     return 0
  982.     sVal := readMem(hGTA, dwAddr + 1076, 1, "byte")
  983.     if(ErrorLevel) {
  984.         ErrorLevel := ERROR_READ_MEMORY
  985.         return 0
  986.     }
  987.     ErrorLevel := ERROR_OK
  988.     return sVal
  989. }
  990. getTargetVehicleColor1byId(dwId) {
  991.     if(!checkHandles())
  992.     return 0
  993.     dwAddr := getVehiclePointerById(dwId)
  994.     if(!dwAddr)
  995.     return 0
  996.     sVal := readMem(hGTA, dwAddr + 1076, 1, "byte")
  997.     if(ErrorLevel) {
  998.         ErrorLevel := ERROR_READ_MEMORY
  999.         return 0
  1000.     }
  1001.     ErrorLevel := ERROR_OK
  1002.     return sVal
  1003. }
  1004. getTargetVehicleColor2byPed(dwPED) {
  1005.     if(!checkHandles())
  1006.     return 0
  1007.     dwAddr := getVehiclePointerByPed(dwPED)
  1008.     if(!dwAddr)
  1009.     return 0
  1010.     sVal := readMem(hGTA, dwAddr + 1077, 1, "byte")
  1011.     if(ErrorLevel) {
  1012.         ErrorLevel := ERROR_READ_MEMORY
  1013.         return 0
  1014.     }
  1015.     ErrorLevel := ERROR_OK
  1016.     return sVal
  1017. }
  1018. getTargetVehicleColor2byId(dwId) {
  1019.     if(!checkHandles())
  1020.     return 0
  1021.     dwAddr := getVehiclePointerById(dwId)
  1022.     if(!dwAddr)
  1023.     return 0
  1024.     sVal := readMem(hGTA, dwAddr + 1077, 1, "byte")
  1025.     if(ErrorLevel) {
  1026.         ErrorLevel := ERROR_READ_MEMORY
  1027.         return 0
  1028.     }
  1029.     ErrorLevel := ERROR_OK
  1030.     return sVal
  1031. }
  1032. getTargetVehicleSpeedByPed(dwPED) {
  1033.     if(!checkHandles())
  1034.     return -1
  1035.     dwAddr := getVehiclePointerByPed(dwPED)
  1036.     fSpeedX := readMem(hGTA, dwAddr + ADDR_VEHICLE_X, 4, "float")
  1037.     fSpeedY := readMem(hGTA, dwAddr + ADDR_VEHICLE_Y, 4, "float")
  1038.     fSpeedZ := readMem(hGTA, dwAddr + ADDR_VEHICLE_Z, 4, "float")
  1039.     fVehicleSpeed :=  sqrt((fSpeedX * fSpeedX) + (fSpeedY * fSpeedY) + (fSpeedZ * fSpeedZ))
  1040.     fVehicleSpeed := (fVehicleSpeed * 100) * 1.43
  1041.     return fVehicleSpeed
  1042. }
  1043. getTargetVehicleSpeedById(dwId) {
  1044.     if(!checkHandles())
  1045.     return -1
  1046.     dwAddr := getVehiclePointerById(dwId)
  1047.     fSpeedX := readMem(hGTA, dwAddr + ADDR_VEHICLE_X, 4, "float")
  1048.     fSpeedY := readMem(hGTA, dwAddr + ADDR_VEHICLE_Y, 4, "float")
  1049.     fSpeedZ := readMem(hGTA, dwAddr + ADDR_VEHICLE_Z, 4, "float")
  1050.     fVehicleSpeed :=  sqrt((fSpeedX * fSpeedX) + (fSpeedY * fSpeedY) + (fSpeedZ * fSpeedZ))
  1051.     fVehicleSpeed := (fVehicleSpeed * 100) * 1.43
  1052.     return fVehicleSpeed
  1053. }
  1054. getPlayerNameById(dwId) {
  1055.     dwId += 0
  1056.     dwId := Floor(dwId)
  1057.     if(dwId < 0 || dwId >= SAMP_PLAYER_MAX)
  1058.     return ""
  1059.     if(iRefreshScoreboard+iUpdateTick > A_TickCount)
  1060.     {
  1061.         if(oScoreboardData[dwId])
  1062.         return oScoreboardData[dwId].NAME
  1063.         return ""
  1064.     }
  1065.     if(!updateOScoreboardData())
  1066.     return ""
  1067.     if(oScoreboardData[dwId])
  1068.     return oScoreboardData[dwId].NAME
  1069.     return ""
  1070. }
  1071. getPlayerIdByName(wName) {
  1072.     wName := "" wName
  1073.     if(StrLen(wName) < 1 || StrLen(wName) > 24)
  1074.     return -1
  1075.     if(iRefreshScoreboard+iUpdateTick > A_TickCount)
  1076.     {
  1077.         For i, o in oScoreboardData
  1078.         {
  1079.             if(InStr(o.NAME,wName)==1)
  1080.             return i
  1081.         }
  1082.         return -1
  1083.     }
  1084.     if(!updateOScoreboardData())
  1085.     return -1
  1086.     For i, o in oScoreboardData
  1087.     {
  1088.         if(InStr(o.NAME,wName)==1)
  1089.         return i
  1090.     }
  1091.     return -1
  1092. }
  1093. getPlayerScoreById(dwId) {
  1094.     dwId += 0
  1095.     dwId := Floor(dwId)
  1096.     if(dwId < 0 || dwId >= SAMP_PLAYER_MAX)
  1097.     return ""
  1098.     if(iRefreshScoreboard+iUpdateTick > A_TickCount)
  1099.     {
  1100.         if(oScoreboardData[dwId])
  1101.         return oScoreboardData[dwId].SCORE
  1102.         return ""
  1103.     }
  1104.     if(!updateOScoreboardData())
  1105.     return ""
  1106.     if(oScoreboardData[dwId])
  1107.     return oScoreboardData[dwId].SCORE
  1108.     return ""
  1109. }
  1110. getPlayerPingById(dwId) {
  1111.     dwId += 0
  1112.     dwId := Floor(dwId)
  1113.     if(dwId < 0 || dwId >= SAMP_PLAYER_MAX)
  1114.     return -1
  1115.     if(iRefreshScoreboard+iUpdateTick > A_TickCount)
  1116.     {
  1117.         if(oScoreboardData[dwId])
  1118.         return oScoreboardData[dwId].PING
  1119.         return -1
  1120.     }
  1121.     if(!updateOScoreboardData())
  1122.     return -1
  1123.     if(oScoreboardData[dwId])
  1124.     return oScoreboardData[dwId].PING
  1125.     return -1
  1126. }
  1127. isNPCById(dwId) {
  1128.     dwId += 0
  1129.     dwId := Floor(dwId)
  1130.     if(dwId < 0 || dwId >= SAMP_PLAYER_MAX)
  1131.     return -1
  1132.     if(iRefreshScoreboard+iUpdateTick > A_TickCount)
  1133.     {
  1134.         if(oScoreboardData[dwId])
  1135.         return oScoreboardData[dwId].ISNPC
  1136.         return -1
  1137.     }
  1138.     if(!updateOScoreboardData())
  1139.     return -1
  1140.     if(oScoreboardData[dwId])
  1141.     return oScoreboardData[dwId].ISNPC
  1142.     return -1
  1143. }
  1144. updateScoreboardDataEx() {
  1145.     if(!checkHandles())
  1146.     return false
  1147.     dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
  1148.     if(ErrorLevel || dwAddress==0) {
  1149.         ErrorLevel := ERROR_READ_MEMORY
  1150.         return false
  1151.     }
  1152.     dwFunc := dwSAMP + FUNC_UPDATESCOREBOARD
  1153.     VarSetCapacity(injectData, 11, 0)
  1154.     NumPut(0xB9, injectData, 0, "UChar")
  1155.     NumPut(dwAddress, injectData, 1, "UInt")
  1156.     NumPut(0xE8, injectData, 5, "UChar")
  1157.     offset := dwFunc - (pInjectFunc + 10)
  1158.     NumPut(offset, injectData, 6, "Int")
  1159.     NumPut(0xC3, injectData, 10, "UChar")
  1160.     writeRaw(hGTA, pInjectFunc, &injectData, 11)
  1161.     if(ErrorLevel)
  1162.     return false
  1163.     hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
  1164.     if(ErrorLevel)
  1165.     return false
  1166.     waitForSingleObject(hThread, 0xFFFFFFFF)
  1167.     closeProcess(hThread)
  1168.     return true
  1169. }
  1170. updateOScoreboardData() {
  1171.     if(!checkHandles())
  1172.     return 0
  1173.     oScoreboardData := []
  1174.     if(!updateScoreboardDataEx())
  1175.     return 0
  1176.     iRefreshScoreboard := A_TickCount
  1177.     dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
  1178.     if(ErrorLevel || dwAddress==0) {
  1179.         ErrorLevel := ERROR_READ_MEMORY
  1180.         return 0
  1181.     }
  1182.     dwAddress := readDWORD(hGTA, dwAddress + SAMP_PPOOLS_OFFSET)
  1183.     if(ErrorLevel || dwAddress==0) {
  1184.         ErrorLevel := ERROR_READ_MEMORY
  1185.         return 0
  1186.     }
  1187.     dwPlayers := readDWORD(hGTA, dwAddress + SAMP_PPOOL_PLAYER_OFFSET)
  1188.     if(ErrorLevel || dwPlayers==0) {
  1189.         ErrorLevel := ERROR_READ_MEMORY
  1190.         return 0
  1191.     }
  1192.     wID := readMem(hGTA, dwPlayers + SAMP_SLOCALPLAYERID_OFFSET, 2, "Short")
  1193.     if(ErrorLevel) {
  1194.         ErrorLevel := ERROR_READ_MEMORY
  1195.         return 0
  1196.     }
  1197.     dwPing := readMem(hGTA, dwPlayers + SAMP_ILOCALPLAYERPING_OFFSET, 4, "Int")
  1198.     if(ErrorLevel) {
  1199.         ErrorLevel := ERROR_READ_MEMORY
  1200.         return 0
  1201.     }
  1202.     dwScore := readMem(hGTA, dwPlayers + SAMP_ILOCALPLAYERSCORE_OFFSET, 4, "Int")
  1203.     if(ErrorLevel) {
  1204.         ErrorLevel := ERROR_READ_MEMORY
  1205.         return 0
  1206.     }
  1207.     dwTemp := readMem(hGTA, dwPlayers + SAMP_ISTRLEN_LOCALPLAYERNAME_OFFSET, 4, "Int")
  1208.     if(ErrorLevel) {
  1209.         ErrorLevel := ERROR_READ_MEMORY
  1210.         return 0
  1211.     }
  1212.     sUsername := ""
  1213.     if(dwTemp <= 0xf) {
  1214.         sUsername := readString(hGTA, dwPlayers + SAMP_SZLOCALPLAYERNAME_OFFSET, 16)
  1215.         if(ErrorLevel) {
  1216.             ErrorLevel := ERROR_READ_MEMORY
  1217.             return 0
  1218.         }
  1219.     }
  1220.     else {
  1221.         dwAddress := readDWORD(hGTA, dwPlayers + SAMP_PSZLOCALPLAYERNAME_OFFSET)
  1222.         if(ErrorLevel) {
  1223.             ErrorLevel := ERROR_READ_MEMORY
  1224.             return 0
  1225.         }
  1226.         sUsername := readString(hGTA, dwAddress, 25)
  1227.         if(ErrorLevel) {
  1228.             ErrorLevel := ERROR_READ_MEMORY
  1229.             return 0
  1230.         }
  1231.     }
  1232.     oScoreboardData[wID] := Object("NAME", sUsername, "ID", wID, "PING", dwPing, "SCORE", dwScore, "ISNPC", 0)
  1233.     Loop, % SAMP_PLAYER_MAX
  1234.     {
  1235.         i := A_Index-1
  1236.         dwRemoteplayer := readDWORD(hGTA, dwPlayers+SAMP_PREMOTEPLAYER_OFFSET+i*4)
  1237.         if(ErrorLevel) {
  1238.             ErrorLevel := ERROR_READ_MEMORY
  1239.             return 0
  1240.         }
  1241.         if(dwRemoteplayer==0)
  1242.         continue
  1243.         dwPing := readMem(hGTA, dwRemoteplayer + SAMP_IPING_OFFSET, 4, "Int")
  1244.         if(ErrorLevel) {
  1245.             ErrorLevel := ERROR_READ_MEMORY
  1246.             return 0
  1247.         }
  1248.         dwScore := readMem(hGTA, dwRemoteplayer + SAMP_ISCORE_OFFSET, 4, "Int")
  1249.         if(ErrorLevel) {
  1250.             ErrorLevel := ERROR_READ_MEMORY
  1251.             return 0
  1252.         }
  1253.         dwIsNPC := readMem(hGTA, dwRemoteplayer + SAMP_ISNPC_OFFSET, 4, "Int")
  1254.         if(ErrorLevel) {
  1255.             ErrorLevel := ERROR_READ_MEMORY
  1256.             return 0
  1257.         }
  1258.         dwTemp := readMem(hGTA, dwRemoteplayer + SAMP_ISTRLENNAME___OFFSET, 4, "Int")
  1259.         if(ErrorLevel) {
  1260.             ErrorLevel := ERROR_READ_MEMORY
  1261.             return 0
  1262.         }
  1263.         sUsername := ""
  1264.         if(dwTemp <= 0xf)
  1265.         {
  1266.             sUsername := readString(hGTA, dwRemoteplayer+SAMP_SZPLAYERNAME_OFFSET, 16)
  1267.             if(ErrorLevel) {
  1268.                 ErrorLevel := ERROR_READ_MEMORY
  1269.                 return 0
  1270.             }
  1271.         }
  1272.         else {
  1273.             dwAddress := readDWORD(hGTA, dwRemoteplayer + SAMP_PSZPLAYERNAME_OFFSET)
  1274.             if(ErrorLevel || dwAddress==0) {
  1275.                 ErrorLevel := ERROR_READ_MEMORY
  1276.                 return 0
  1277.             }
  1278.             sUsername := readString(hGTA, dwAddress, 25)
  1279.             if(ErrorLevel) {
  1280.                 ErrorLevel := ERROR_READ_MEMORY
  1281.                 return 0
  1282.             }
  1283.         }
  1284.         o := Object("NAME", sUsername, "ID", i, "PING", dwPing, "SCORE", dwScore, "ISNPC", dwIsNPC)
  1285.         oScoreboardData[i] := o
  1286.         dwRemoteplayerData := readDWORD(hGTA, dwRemoteplayer + 0x0)
  1287.         if(ErrorLevel) {
  1288.             ErrorLevel := ERROR_READ_MEMORY
  1289.             return 0
  1290.         }
  1291.         if(dwRemoteplayerData==0)
  1292.         continue
  1293.         dwAddress := readDWORD(hGTA, dwRemoteplayerData + 489)
  1294.         if(ErrorLevel) {
  1295.             ErrorLevel := ERROR_READ_MEMORY
  1296.             return 0
  1297.         }
  1298.         if(dwAddress)
  1299.         {
  1300.             ix := readMem(hGTA, dwRemoteplayerData + 493, 4, "Int")
  1301.             if(ErrorLevel) {
  1302.                 ErrorLevel := ERROR_READ_MEMORY
  1303.                 return 0
  1304.             }
  1305.             iy := readMem(hGTA, dwRemoteplayerData + 497, 4, "Int")
  1306.             if(ErrorLevel) {
  1307.                 ErrorLevel := ERROR_READ_MEMORY
  1308.                 return 0
  1309.             }
  1310.             iz := readMem(hGTA, dwRemoteplayerData + 501, 4, "Int")
  1311.             if(ErrorLevel) {
  1312.                 ErrorLevel := ERROR_READ_MEMORY
  1313.                 return 0
  1314.             }
  1315.             o.MPOS := [ix, iy, iz]
  1316.         }
  1317.         dwpSAMP_Actor := readDWORD(hGTA, dwRemoteplayerData + 0x0)
  1318.         if(ErrorLevel) {
  1319.             ErrorLevel := ERROR_READ_MEMORY
  1320.             return 0
  1321.         }
  1322.         if(dwpSAMP_Actor==0)
  1323.         continue
  1324.         dwPed := readDWORD(hGTA, dwpSAMP_Actor + 676)
  1325.         if(ErrorLevel) {
  1326.             ErrorLevel := ERROR_READ_MEMORY
  1327.             return 0
  1328.         }
  1329.         if(dwPed==0)
  1330.         continue
  1331.         o.PED := dwPed
  1332.         fHP := readFloat(hGTA, dwRemoteplayerData + 444)
  1333.         if(ErrorLevel) {
  1334.             ErrorLevel := ERROR_READ_MEMORY
  1335.             return 0
  1336.         }
  1337.         fARMOR := readFloat(hGTA, dwRemoteplayerData + 440)
  1338.         if(ErrorLevel) {
  1339.             ErrorLevel := ERROR_READ_MEMORY
  1340.             return 0
  1341.         }
  1342.         o.HP := fHP
  1343.         o.ARMOR := fARMOR
  1344.     }
  1345.     ErrorLevel := ERROR_OK
  1346.     return 1
  1347. }
  1348. GetChatLine(Line, ByRef Output, timestamp=0, color=0){
  1349.     chatindex := 0
  1350.     FileRead, file, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
  1351.     loop, Parse, file, `n, `r
  1352.     {
  1353.         if(A_LoopField)
  1354.         chatindex := A_Index
  1355.     }
  1356.     loop, Parse, file, `n, `r
  1357.     {
  1358.         if(A_Index = chatindex - line){
  1359.             output := A_LoopField
  1360.             break
  1361.         }
  1362.     }
  1363.     file := ""
  1364.     if(!timestamp)
  1365. output := RegExReplace(output, "U)^\[\d{2}:\d{2}:\d{2}\]")
  1366.     if(!color)
  1367. output := RegExReplace(output, "Ui)\{[a-f0-9]{6}\}")
  1368.     return
  1369. }
  1370. getPlayerHealth() {
  1371.     if(!checkHandles())
  1372.     return -1
  1373.     dwCPedPtr := readDWORD(hGTA, ADDR_CPED_PTR)
  1374.     if(ErrorLevel) {
  1375.         ErrorLevel := ERROR_READ_MEMORY
  1376.         return -1
  1377.     }
  1378.     dwAddr := dwCPedPtr + ADDR_CPED_HPOFF
  1379.     fHealth := readFloat(hGTA, dwAddr)
  1380.     if(ErrorLevel) {
  1381.         ErrorLevel := ERROR_READ_MEMORY
  1382.         return -1
  1383.     }
  1384.     ErrorLevel := ERROR_OK
  1385.     return Round(fHealth)
  1386. }
  1387. getPlayerArmor() {
  1388.     if(!checkHandles())
  1389.     return -1
  1390.     dwCPedPtr := readDWORD(hGTA, ADDR_CPED_PTR)
  1391.     if(ErrorLevel) {
  1392.         ErrorLevel := ERROR_READ_MEMORY
  1393.         return -1
  1394.     }
  1395.     dwAddr := dwCPedPtr + ADDR_CPED_ARMOROFF
  1396.     fHealth := readFloat(hGTA, dwAddr)
  1397.     if(ErrorLevel) {
  1398.         ErrorLevel := ERROR_READ_MEMORY
  1399.         return -1
  1400.     }
  1401.     ErrorLevel := ERROR_OK
  1402.     return Round(fHealth)
  1403. }
  1404. getPlayerInteriorId() {
  1405.     if(!checkHandles())
  1406.     return -1
  1407.     iid := readMem(hGTA, ADDR_CPED_INTID, 4, "Int")
  1408.     if(ErrorLevel) {
  1409.         ErrorLevel := ERROR_READ_MEMORY
  1410.         return -1
  1411.     }
  1412.     ErrorLevel := ERROR_OK
  1413.     return iid
  1414. }
  1415. getPlayerSkinID() {
  1416.     if(!checkHandles())
  1417.     return -1
  1418.     dwCPedPtr := readDWORD(hGTA, ADDR_CPED_PTR)
  1419.     if(ErrorLevel) {
  1420.         ErrorLevel := ERROR_READ_MEMORY
  1421.         return -1
  1422.     }
  1423.     dwAddr := dwCPedPtr + ADDR_CPED_SKINIDOFF
  1424.     SkinID := readMem(hGTA, dwAddr, 2, "byte")
  1425.     if(ErrorLevel) {
  1426.         ErrorLevel := ERROR_READ_MEMORY
  1427.         return -1
  1428.     }
  1429.     ErrorLevel := ERROR_OK
  1430.     return SkinID
  1431. }
  1432. getPlayerMoney() {
  1433.     if(!checkHandles())
  1434.     return ""
  1435.     money := readMem(hGTA, ADDR_CPED_MONEY, 4, "Int")
  1436.     if(ErrorLevel) {
  1437.         ErrorLevel := ERROR_READ_MEMORY
  1438.         return ""
  1439.     }
  1440.     ErrorLevel := ERROR_OK
  1441.     return money
  1442. }
  1443. getPlayerWanteds() {
  1444.     if(!checkHandles())
  1445.     return -1
  1446.     dwPtr := 0xB7CD9C
  1447.     dwPtr := readDWORD(hGTA, dwPtr)
  1448.     if(ErrorLevel) {
  1449.         ErrorLevel := ERROR_READ_MEMORY
  1450.         return -1
  1451.     }
  1452.     Wanteds := readDWORD(hGTA, dwPtr)
  1453.     if(ErrorLevel) {
  1454.         ErrorLevel := ERROR_READ_MEMORY
  1455.         return -1
  1456.     }
  1457.     ErrorLevel := ERROR_OK
  1458.     return Wanteds
  1459. }
  1460. getPlayerWeaponId() {
  1461.     if(!checkHandles())
  1462.     return 0
  1463.     WaffenId := readMem(hGTA, 0xBAA410, 4, "byte")
  1464.     if(ErrorLevel) {
  1465.         ErrorLevel := ERROR_READ_MEMORY
  1466.         return -1
  1467.     }
  1468.     return WaffenId
  1469. }
  1470. getPlayerWeaponName() {
  1471.     id := getPlayerWeaponId()
  1472.     if(id >= 0 && id < 44)
  1473.     {
  1474.         return oweaponNames[id+1]
  1475.     }
  1476.     return ""
  1477. }
  1478. getPlayerState() {
  1479.     if(!checkHandles())
  1480.     return -1
  1481.     dwCPedPtr := readDWORD(hGTA, ADDR_CPED_PTR)
  1482.     if(ErrorLevel) {
  1483.         ErrorLevel := ERROR_READ_MEMORY
  1484.         return -1
  1485.     }
  1486.     State := readDWORD(hGTA, dwCPedPtr + 0x530)
  1487.     if(ErrorLevel) {
  1488.         ErrorLevel := ERROR_READ_MEMORY
  1489.         return -1
  1490.     }
  1491.     ErrorLevel := ERROR_OK
  1492.     return State
  1493. }
  1494. IsPlayerInMenu() {
  1495.     if(!checkHandles())
  1496.     return -1
  1497.     IsInMenu := readMem(hGTA, 0xBA67A4, 4, "byte")
  1498.     if(ErrorLevel) {
  1499.         ErrorLevel := ERROR_READ_MEMORY
  1500.         return -1
  1501.     }
  1502.     ErrorLevel := ERROR_OK
  1503.     return IsInMenu
  1504. }
  1505. getPlayerMapPosX() {
  1506.     if(!checkHandles())
  1507.     return -1
  1508.     MapPosX := readFloat(hGTA, 0xBA67B8)
  1509.     if(ErrorLevel) {
  1510.         ErrorLevel := ERROR_READ_MEMORY
  1511.         return -1
  1512.     }
  1513.     ErrorLevel := ERROR_OK
  1514.     return MapPosX
  1515. }
  1516. getPlayerMapPosY() {
  1517.     if(!checkHandles())
  1518.     return -1
  1519.     MapPosY := readFloat(hGTA, 0xBA67BC)
  1520.     if(ErrorLevel) {
  1521.         ErrorLevel := ERROR_READ_MEMORY
  1522.         return -1
  1523.     }
  1524.     ErrorLevel := ERROR_OK
  1525.     return MapPosY
  1526. }
  1527. getPlayerMapZoom() {
  1528.     if(!checkHandles())
  1529.     return -1
  1530.     MapZoom := readFloat(hGTA, 0xBA67AC)
  1531.     if(ErrorLevel) {
  1532.         ErrorLevel := ERROR_READ_MEMORY
  1533.         return -1
  1534.     }
  1535.     ErrorLevel := ERROR_OK
  1536.     return MapZoom
  1537. }
  1538. IsPlayerFreezed() {
  1539.     if(!checkHandles())
  1540.     return -1
  1541.     dwGTA := getModuleBaseAddress("gta_sa.exe", hGTA)
  1542.     IPF := readMem(hGTA, dwGTA + 0x690495, 2, "byte")
  1543.     if(ErrorLevel) {
  1544.         ErrorLevel := ERROR_READ_MEMORY
  1545.         return -1
  1546.     }
  1547.     ErrorLevel := ERROR_OK
  1548.     return IPF
  1549. }
  1550. isPlayerInAnyVehicle()
  1551. {
  1552.     if(!checkHandles())
  1553.     return -1
  1554.     dwVehPtr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
  1555.     if(ErrorLevel) {
  1556.         ErrorLevel := ERROR_READ_MEMORY
  1557.         return -1
  1558.     }
  1559.     return (dwVehPtr > 0)
  1560. }
  1561. isPlayerDriver() {
  1562.     if(!checkHandles())
  1563.     return -1
  1564.     dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
  1565.     if(ErrorLevel) {
  1566.         ErrorLevel := ERROR_READ_MEMORY
  1567.         return -1
  1568.     }
  1569.     if(!dwAddr)
  1570.     return -1
  1571.     dwCPedPtr := readDWORD(hGTA, ADDR_CPED_PTR)
  1572.     if(ErrorLevel) {
  1573.         ErrorLevel := ERROR_READ_MEMORY
  1574.         return -1
  1575.     }
  1576.     dwVal := readDWORD(hGTA, dwAddr + ADDR_VEHICLE_DRIVER)
  1577.     if(ErrorLevel) {
  1578.         ErrorLevel := ERROR_READ_MEMORY
  1579.         return -1
  1580.     }
  1581.     ErrorLevel := ERROR_OK
  1582.     return (dwVal==dwCPedPtr)
  1583. }
  1584. getVehicleHealth() {
  1585.     if(!checkHandles())
  1586.     return -1
  1587.     dwVehPtr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
  1588.     if(ErrorLevel) {
  1589.         ErrorLevel := ERROR_READ_MEMORY
  1590.         return -1
  1591.     }
  1592.     dwAddr := dwVehPtr + ADDR_VEHICLE_HPOFF
  1593.     fHealth := readFloat(hGTA, dwAddr)
  1594.     if(ErrorLevel) {
  1595.         ErrorLevel := ERROR_READ_MEMORY
  1596.         return -1
  1597.     }
  1598.     ErrorLevel := ERROR_OK
  1599.     return Round(fHealth)
  1600. }
  1601. getVehicleType() {
  1602.     if(!checkHandles())
  1603.     return 0
  1604.     dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
  1605.     if(ErrorLevel) {
  1606.         ErrorLevel := ERROR_READ_MEMORY
  1607.         return 0
  1608.     }
  1609.     if(!dwAddr)
  1610.     return 0
  1611.     cVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_TYPE, 1, "Char")
  1612.     if(ErrorLevel) {
  1613.         ErrorLevel := ERROR_READ_MEMORY
  1614.         return 0
  1615.     }
  1616.     ErrorLevel := ERROR_OK
  1617.     if(!cVal)
  1618.     {
  1619.         mid := getVehicleModelId()
  1620.         Loop % oAirplaneModels.MaxIndex()
  1621.         {
  1622.             if(oAirplaneModels[A_Index]==mid)
  1623.             return 5
  1624.         }
  1625.         return 1
  1626.     }
  1627.     else if(cVal==5)
  1628.     return 2
  1629.     else if(cVal==6)
  1630.     return 3
  1631.     else if(cVal==9)
  1632.     {
  1633.         mid := getVehicleModelId()
  1634.         Loop % oBikeModels.MaxIndex()
  1635.         {
  1636.             if(oBikeModels[A_Index]==mid)
  1637.             return 6
  1638.         }
  1639.         return 4
  1640.     }
  1641.     return 0
  1642. }
  1643. getVehicleModelId() {
  1644.     if(!checkHandles())
  1645.     return 0
  1646.     dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
  1647.     if(ErrorLevel) {
  1648.         ErrorLevel := ERROR_READ_MEMORY
  1649.         return 0
  1650.     }
  1651.     if(!dwAddr)
  1652.     return 0
  1653.     sVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_MODEL, 2, "Short")
  1654.     if(ErrorLevel) {
  1655.         ErrorLevel := ERROR_READ_MEMORY
  1656.         return 0
  1657.     }
  1658.     ErrorLevel := ERROR_OK
  1659.     return sVal
  1660. }
  1661. getVehicleModelName() {
  1662.     id:=getVehicleModelId()
  1663.     if(id > 400 && id < 611)
  1664.     {
  1665.         return ovehicleNames[id-399]
  1666.     }
  1667.     return ""
  1668. }
  1669. getVehicleLightState() {
  1670.     if(!checkHandles())
  1671.     return -1
  1672.     dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
  1673.     if(ErrorLevel) {
  1674.         ErrorLevel := ERROR_READ_MEMORY
  1675.         return -1
  1676.     }
  1677.     if(!dwAddr)
  1678.     return -1
  1679.     dwVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_LIGHTSTATE, 4, "Int")
  1680.     if(ErrorLevel) {
  1681.         ErrorLevel := ERROR_READ_MEMORY
  1682.         return -1
  1683.     }
  1684.     ErrorLevel := ERROR_OK
  1685.     return (dwVal>0)
  1686. }
  1687. getVehicleEngineState() {
  1688.     if(!checkHandles())
  1689.     return -1
  1690.     dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
  1691.     if(ErrorLevel) {
  1692.         ErrorLevel := ERROR_READ_MEMORY
  1693.         return -1
  1694.     }
  1695.     if(!dwAddr)
  1696.     return -1
  1697.     cVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_ENGINESTATE, 1, "Char")
  1698.     if(ErrorLevel) {
  1699.         ErrorLevel := ERROR_READ_MEMORY
  1700.         return -1
  1701.     }
  1702.     ErrorLevel := ERROR_OK
  1703.     return (cVal==24 || cVal==56 || cVal==88 || cVal==120)
  1704. }
  1705. getVehicleLockState() {
  1706.     if(!checkHandles())
  1707.     return -1
  1708.     dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
  1709.     if(ErrorLevel) {
  1710.         ErrorLevel := ERROR_READ_MEMORY
  1711.         return -1
  1712.     }
  1713.     if(!dwAddr)
  1714.     return -1
  1715.     dwVal := readDWORD(hGTA, dwAddr + ADDR_VEHICLE_DOORSTATE)
  1716.     if(ErrorLevel) {
  1717.         ErrorLevel := ERROR_READ_MEMORY
  1718.         return -1
  1719.     }
  1720.     ErrorLevel := ERROR_OK
  1721.     return (dwVal==2)
  1722. }
  1723. getVehicleColor1() {
  1724.     if(!checkHandles())
  1725.     return 0
  1726.     dwAddr := readDWORD(hGTA, 0xBA18FC)
  1727.     if(ErrorLevel) {
  1728.         ErrorLevel := ERROR_READ_MEMORY
  1729.         return 0
  1730.     }
  1731.     if(!dwAddr)
  1732.     return 0
  1733.     sVal := readMem(hGTA, dwAddr + 1076, 1, "byte")
  1734.     if(ErrorLevel) {
  1735.         ErrorLevel := ERROR_READ_MEMORY
  1736.         return 0
  1737.     }
  1738.     ErrorLevel := ERROR_OK
  1739.     return sVal
  1740. }
  1741. getVehicleColor2() {
  1742.     if(!checkHandles())
  1743.     return 0
  1744.     dwAddr := readDWORD(hGTA, 0xBA18FC)
  1745.     if(ErrorLevel) {
  1746.         ErrorLevel := ERROR_READ_MEMORY
  1747.         return 0
  1748.     }
  1749.     if(!dwAddr)
  1750.     return 0
  1751.     sVal := readMem(hGTA, dwAddr + 1077, 1, "byte")
  1752.     if(ErrorLevel) {
  1753.         ErrorLevel := ERROR_READ_MEMORY
  1754.         return 0
  1755.     }
  1756.     ErrorLevel := ERROR_OK
  1757.     return sVal
  1758. }
  1759. getVehicleSpeed() {
  1760.     if(!checkHandles())
  1761.     return -1
  1762.     dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
  1763.     if(ErrorLevel) {
  1764.         ErrorLevel := ERROR_READ_MEMORY
  1765.         return ""
  1766.     }
  1767.     fSpeedX := readMem(hGTA, dwAddr + ADDR_VEHICLE_X, 4, "float")
  1768.     fSpeedY := readMem(hGTA, dwAddr + ADDR_VEHICLE_Y, 4, "float")
  1769.     fSpeedZ := readMem(hGTA, dwAddr + ADDR_VEHICLE_Z, 4, "float")
  1770.     fVehicleSpeed :=  sqrt((fSpeedX * fSpeedX) + (fSpeedY * fSpeedY) + (fSpeedZ * fSpeedZ))
  1771.     fVehicleSpeed := (fVehicleSpeed * 100) * 1.43
  1772.     return fVehicleSpeed
  1773. }
  1774. getPlayerRadiostationID() {
  1775.     if(!checkHandles())
  1776.     return -1
  1777.     if(isPlayerInAnyVehicle() == 0)
  1778.     return -1
  1779.     dwGTA := getModuleBaseAddress("gta_sa.exe", hGTA)
  1780.     RadioStationID := readMem(hGTA, dwGTA + 0x4CB7E1, 1, "byte")
  1781.     if(ErrorLevel) {
  1782.         ErrorLevel := ERROR_READ_MEMORY
  1783.         return -1
  1784.     }
  1785.     return RadioStationID
  1786. }
  1787. getPlayerRadiostationName() {
  1788.     if(isPlayerInAnyVehicle() == 0)
  1789.     return -1
  1790.     id := getPlayerRadiostationID()
  1791.     if(id == 0)
  1792.     return -1
  1793.     if(id >= 0 && id < 14)
  1794.     {
  1795.         return oradiostationNames[id]
  1796.     }
  1797.     return ""
  1798. }
  1799. setCheckpoint(fX, fY, fZ, fSize ) {
  1800.     if(!checkHandles())
  1801.     return false
  1802.     dwFunc := dwSAMP + 0x9D340
  1803.     dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_INCHAT_PTR)
  1804.     if(ErrorLevel || dwAddress==0) {
  1805.         ErrorLevel := ERROR_READ_MEMORY
  1806.         return false
  1807.     }
  1808.     VarSetCapacity(buf, 16, 0)
  1809.     NumPut(fX, buf, 0, "Float")
  1810.     NumPut(fY, buf, 4, "Float")
  1811.     NumPut(fZ, buf, 8, "Float")
  1812.     NumPut(fSize, buf, 12, "Float")
  1813.     writeRaw(hGTA, pParam1, &buf, 16)
  1814.     dwLen := 31
  1815.     VarSetCapacity(injectData, dwLen, 0)
  1816.     NumPut(0xB9, injectData, 0, "UChar")
  1817.     NumPut(dwAddress, injectData, 1, "UInt")
  1818.     NumPut(0x68, injectData, 5, "UChar")
  1819.     NumPut(pParam1+12, injectData, 6, "UInt")
  1820.     NumPut(0x68, injectData, 10, "UChar")
  1821.     NumPut(pParam1, injectData, 11, "UInt")
  1822.     NumPut(0xE8, injectData, 15, "UChar")
  1823.     offset := dwFunc - (pInjectFunc + 20)
  1824.     NumPut(offset, injectData, 16, "Int")
  1825.     NumPut(0x05C7, injectData, 20, "UShort")
  1826.     NumPut(dwAddress+0x24, injectData, 22, "UInt")
  1827.     NumPut(1, injectData, 26, "UInt")
  1828.     NumPut(0xC3, injectData, 30, "UChar")
  1829.     writeRaw(hGTA, pInjectFunc, &injectData, dwLen)
  1830.     if(ErrorLevel)
  1831.     return false
  1832.     hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
  1833.     if(ErrorLevel)
  1834.     return false
  1835.     waitForSingleObject(hThread, 0xFFFFFFFF)
  1836.     closeProcess(hThread)
  1837.     ErrorLevel := ERROR_OK
  1838.     return true
  1839. }
  1840. disableCheckpoint()
  1841. {
  1842.     if(!checkHandles())
  1843.     return false
  1844.     dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_INCHAT_PTR)
  1845.     if(ErrorLevel || dwAddress==0) {
  1846.         ErrorLevel := ERROR_READ_MEMORY
  1847.         return false
  1848.     }
  1849.     VarSetCapacity(enablecp, 4, 0)
  1850.     NumPut(0,enablecp,0,"Int")
  1851.     writeRaw(hGTA, dwAddress+0x24, &enablecp, 4)
  1852.     ErrorLevel := ERROR_OK
  1853.     return true
  1854. }
  1855. IsMarkerCreated(){
  1856.     If(!checkHandles())
  1857.     return false
  1858.     active := readMem(hGTA, CheckpointCheck, 1, "byte")
  1859.     If(!active)
  1860.     return 0
  1861.     else return 1
  1862. }
  1863. CoordsFromRedmarker(){
  1864.     if(!checkhandles())
  1865.     return false
  1866.     for i, v in rmaddrs
  1867.     f%i% := readFloat(hGTA, v)
  1868.     return [f1, f2, f3]
  1869. }
  1870. getCoordinates() {
  1871.     if(!checkHandles())
  1872.     return ""
  1873.     fX := readFloat(hGTA, ADDR_POSITION_X)
  1874.     if(ErrorLevel) {
  1875.         ErrorLevel := ERROR_READ_MEMORY
  1876.         return ""
  1877.     }
  1878.     fY := readFloat(hGTA, ADDR_POSITION_Y)
  1879.     if(ErrorLevel) {
  1880.         ErrorLevel := ERROR_READ_MEMORY
  1881.         return ""
  1882.     }
  1883.     fZ := readFloat(hGTA, ADDR_POSITION_Z)
  1884.     if(ErrorLevel) {
  1885.         ErrorLevel := ERROR_READ_MEMORY
  1886.         return ""
  1887.     }
  1888.     ErrorLevel := ERROR_OK
  1889.     return [fX, fY, fZ]
  1890. }
  1891. GetPlayerPos(ByRef fX,ByRef fY,ByRef fZ) {
  1892.     if(!checkHandles())
  1893.     return 0
  1894.     fX := readFloat(hGTA, ADDR_POSITION_X)
  1895.     if(ErrorLevel) {
  1896.         ErrorLevel := ERROR_READ_MEMORY
  1897.         return 0
  1898.     }
  1899.     fY := readFloat(hGTA, ADDR_POSITION_Y)
  1900.     if(ErrorLevel) {
  1901.         ErrorLevel := ERROR_READ_MEMORY
  1902.         return 0
  1903.     }
  1904.     fZ := readFloat(hGTA, ADDR_POSITION_Z)
  1905.     if(ErrorLevel) {
  1906.         ErrorLevel := ERROR_READ_MEMORY
  1907.         return 0
  1908.     }
  1909.     ErrorLevel := ERROR_OK
  1910. }
  1911. getDialogStructPtr() {
  1912.     if (!checkHandles()) {
  1913.         ErrorLevel := ERROR_INVALID_HANDLE
  1914.         return false
  1915.     }
  1916.     dwPointer := readDWORD(hGTA, dwSAMP + SAMP_DIALOG_STRUCT_PTR)
  1917.     if (ErrorLevel) {
  1918.         ErrorLevel := ERROR_READ_MEMORY
  1919.         return false
  1920.     }
  1921.     ErrorLevel := ERROR_OK
  1922.     return dwPointer
  1923. }
  1924. isDialogOpen() {
  1925.     dwPointer := getDialogStructPtr()
  1926.     if (ErrorLevel || !dwPointer)
  1927.     return false
  1928.     dwIsOpen := readMem(hGTA, dwPointer + SAMP_DIALOG_OPEN_OFFSET, 4, "UInt")
  1929.     if (ErrorLevel) {
  1930.         ErrorLevel := ERROR_READ_MEMORY
  1931.         return false
  1932.     }
  1933.     ErrorLevel := ERROR_OK
  1934.     return dwIsOpen ? true : false
  1935. }
  1936. getDialogStyle() {
  1937.     dwPointer := getDialogStructPtr()
  1938.     if (ErrorLevel || !dwPointer)
  1939.     return -1
  1940.     style := readMem(hGTA, dwPointer + SAMP_DIALOG_STYLE_OFFSET, 4, "UInt")
  1941.     if (ErrorLevel) {
  1942.         ErrorLevel := ERROR_READ_MEMORY
  1943.         return -1
  1944.     }
  1945.     ErrorLevel := ERROR_OK
  1946.     return style
  1947. }
  1948. getDialogID() {
  1949.     dwPointer := getDialogStructPtr()
  1950.     if (ErrorLevel || !dwPointer)
  1951.     return -1
  1952.     id := readMem(hGTA, dwPointer + SAMP_DIALOG_ID_OFFSET, 4, "UInt")
  1953.     if (ErrorLevel) {
  1954.         ErrorLevel := ERROR_READ_MEMORY
  1955.         return -1
  1956.     }
  1957.     ErrorLevel := ERROR_OK
  1958.     return id
  1959. }
  1960. setDialogID(id) {
  1961.     dwPointer := getDialogStructPtr()
  1962.     if (ErrorLevel || !dwPointer)
  1963.     return false
  1964.     writeMemory(hGTA, dwPointer + SAMP_DIALOG_ID_OFFSET, id, "UInt", 4)
  1965.     if (ErrorLevel) {
  1966.         ErrorLevel := ERROR_WRITE_MEMORY
  1967.         return false
  1968.     }
  1969.     ErrorLevel := ERROR_OK
  1970.     return true
  1971. }
  1972. getDialogIndex() {
  1973.     dwPointer := getDialogStructPtr()
  1974.     if (ErrorLevel || !dwPointer)
  1975.     return 0
  1976.     dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_PTR1_OFFSET)
  1977.     if (ErrorLevel) {
  1978.         ErrorLevel := ERROR_READ_MEMORY
  1979.         return 0
  1980.     }
  1981.     index := readMem(hGTA, dwPointer + SAMP_DIALOG_INDEX_OFFSET, 1, "Byte")
  1982.     if (ErrorLevel) {
  1983.         ErrorLevel := ERROR_READ_MEMORY
  1984.         return 0
  1985.     }
  1986.     ErrorLevel := ERROR_OK
  1987.     return index + 1
  1988. }
  1989. getDialogCaption() {
  1990.     dwPointer := getDialogStructPtr()
  1991.     if (ErrorLevel || !dwPointer)
  1992.     return ""
  1993.     text := readString(hGTA, dwPointer + SAMP_DIALOG_CAPTION_OFFSET, 64)
  1994.     if (ErrorLevel) {
  1995.         ErrorLevel := ERROR_READ_MEMORY
  1996.         return ""
  1997.     }
  1998.     ErrorLevel := ERROR_OK
  1999.     return text
  2000. }
  2001. getDialogTextSize(dwAddress) {
  2002.     i := 0
  2003.     Loop, 4096 {
  2004.         i := A_Index - 1
  2005.         byte := Memory_ReadByte(hGTA, dwAddress + i)
  2006.         if (!byte)
  2007.         break
  2008.     }
  2009.     return i
  2010. }
  2011. getDialogText() {
  2012.     dwPointer := getDialogStructPtr()
  2013.     if (ErrorLevel || !dwPointer)
  2014.     return ""
  2015.     dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_TEXT_PTR_OFFSET)
  2016.     if (ErrorLevel) {
  2017.         ErrorLevel := ERROR_READ_MEMORY
  2018.         return ""
  2019.     }
  2020.     text := readString(hGTA, dwPointer, 4096)
  2021.     if (ErrorLevel) {
  2022.         text := readString(hGTA, dwPointer, getDialogTextSize(dwPointer))
  2023.         if (ErrorLevel) {
  2024.             ErrorLevel := ERROR_READ_MEMORY
  2025.             return ""
  2026.         }
  2027.     }
  2028.     ErrorLevel := ERROR_OK
  2029.     return text
  2030. }
  2031. getDialogLineCount() {
  2032.     dwPointer := getDialogStructPtr()
  2033.     if (ErrorLevel || !dwPointer)
  2034.     return 0
  2035.     dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_PTR2_OFFSET)
  2036.     if (ErrorLevel) {
  2037.         ErrorLevel := ERROR_READ_MEMORY
  2038.         return 0
  2039.     }
  2040.     count := readMem(hGTA, dwPointer + SAMP_DIALOG_LINECOUNT_OFFSET, 4, "UInt")
  2041.     if (ErrorLevel) {
  2042.         ErrorLevel := ERROR_READ_MEMORY
  2043.         return 0
  2044.     }
  2045.     ErrorLevel := ERROR_OK
  2046.     return count
  2047. }
  2048. getDialogLine__(index) {
  2049.     if (getDialogLineCount > index)
  2050.     return ""
  2051.     dwPointer := getDialogStructPtr()
  2052.     if (ErrorLevel || !dwPointer)
  2053.     return ""
  2054.     dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_PTR1_OFFSET)
  2055.     if (ErrorLevel) {
  2056.         ErrorLevel := ERROR_READ_MEMORY
  2057.         return ""
  2058.     }
  2059.     dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_LINES_OFFSET)
  2060.     if (ErrorLevel) {
  2061.         ErrorLevel := ERROR_READ_MEMORY
  2062.         return ""
  2063.     }
  2064.     dwLineAddress := readDWORD(hGTA, dwPointer + (index - 1) * 0x4)
  2065.     line := readString(hGTA, dwLineAddress, 128)
  2066.     ErrorLevel := ERROR_OK
  2067.     return line
  2068. }
  2069. getDialogLine(index) {
  2070.     lines := getDialogLines()
  2071.     if (index > lines.Length())
  2072.     return ""
  2073.     if (getDialogStyle() == DIALOG_STYLE_TABLIST_HEADERS)
  2074.     index++
  2075.     return lines[index]
  2076. }
  2077. getDialogLines() {
  2078.     text := getDialogText()
  2079.     if (text == "")
  2080.     return -1
  2081.     lines := StrSplit(text, "`n")
  2082.     return lines
  2083. }
  2084. isDialogButton1Selected() {
  2085.     dwPointer := getDialogStructPtr()
  2086.     if (ErrorLevel || !dwPointer)
  2087.     return false
  2088.     dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_PTR1_OFFSET)
  2089.     if (ErrorLevel) {
  2090.         ErrorLevel := ERROR_READ_MEMORY
  2091.         return false
  2092.     }
  2093.     selected := readMem(hGTA, dwPointer + SAMP_DIALOG_BUTTON_HOVERING_OFFSET, 1, "Byte")
  2094.     if (ErrorLevel) {
  2095.         ErrorLevel := ERROR_READ_MEMORY
  2096.         return false
  2097.     }
  2098.     ErrorLevel := ERROR_OK
  2099.     return selected
  2100. }
  2101. getDialogLines__() {
  2102.     count := getDialogLineCount()
  2103.     dwPointer := getDialogStructPtr()
  2104.     if (ErrorLevel || !dwPointer)
  2105.     return -1
  2106.     dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_PTR1_OFFSET)
  2107.     if (ErrorLevel) {
  2108.         ErrorLevel := ERROR_READ_MEMORY
  2109.         return -1
  2110.     }
  2111.     dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_LINES_OFFSET)
  2112.     if (ErrorLevel) {
  2113.         ErrorLevel := ERROR_READ_MEMORY
  2114.         return -1
  2115.     }
  2116.     lines := []
  2117.     Loop %count% {
  2118.         dwLineAddress := readDWORD(hGTA, dwPointer + (A_Index - 1) * 0x4)
  2119.         lines[A_Index] := readString(hGTA, dwLineAddress, 128)
  2120.     }
  2121.     ErrorLevel := ERROR_OK
  2122.     return lines
  2123. }
  2124. showDialog(style, caption, text, button1, button2 := "", id := 1) {
  2125.     style += 0
  2126.     style := Floor(style)
  2127.     id += 0
  2128.     id := Floor(id)
  2129.     caption := "" caption
  2130.     text := "" text
  2131.     button1 := "" button1
  2132.     button2 := "" button2
  2133.     if (id < 0 || id > 32767 || style < 0 || style > 5 || StrLen(caption) > 64 || StrLen(text) > 4096 || StrLen(button1) > 10 || StrLen(button2) > 10)
  2134.     return false
  2135.     if (!checkHandles())
  2136.     return false
  2137.     dwFunc := dwSAMP + FUNC_SAMP_SHOWDIALOG
  2138.     dwAddress := readDWORD(hGTA, dwSAMP + SAMP_DIALOG_STRUCT_PTR)
  2139.     if (ErrorLevel || !dwAddress) {
  2140.         ErrorLevel := ERROR_READ_MEMORY
  2141.         return false
  2142.     }
  2143.     writeString(hGTA, pParam5, caption)
  2144.     if (ErrorLevel)
  2145.     return false
  2146.     writeString(hGTA, pParam1, text)
  2147.     if (ErrorLevel)
  2148.     return false
  2149.     writeString(hGTA, pParam5 + 512, button1)
  2150.     if (ErrorLevel)
  2151.     return false
  2152.     writeString(hGTA, pParam5+StrLen(caption) + 1, button2)
  2153.     if (ErrorLevel)
  2154.     return false
  2155.     dwLen := 5 + 7 * 5 + 5 + 1
  2156.     VarSetCapacity(injectData, dwLen, 0)
  2157.     NumPut(0xB9, injectData, 0, "UChar")
  2158.     NumPut(dwAddress, injectData, 1, "UInt")
  2159.     NumPut(0x68, injectData, 5, "UChar")
  2160.     NumPut(1, injectData, 6, "UInt")
  2161.     NumPut(0x68, injectData, 10, "UChar")
  2162.     NumPut(pParam5 + StrLen(caption) + 1, injectData, 11, "UInt")
  2163.     NumPut(0x68, injectData, 15, "UChar")
  2164.     NumPut(pParam5 + 512, injectData, 16, "UInt")
  2165.     NumPut(0x68, injectData, 20, "UChar")
  2166.     NumPut(pParam1, injectData, 21, "UInt")
  2167.     NumPut(0x68, injectData, 25, "UChar")
  2168.     NumPut(pParam5, injectData, 26, "UInt")
  2169.     NumPut(0x68, injectData, 30, "UChar")
  2170.     NumPut(style, injectData, 31, "UInt")
  2171.     NumPut(0x68, injectData, 35, "UChar")
  2172.     NumPut(id, injectData, 36, "UInt")
  2173.     NumPut(0xE8, injectData, 40, "UChar")
  2174.     offset := dwFunc - (pInjectFunc + 45)
  2175.     NumPut(offset, injectData, 41, "Int")
  2176.     NumPut(0xC3, injectData, 45, "UChar")
  2177.     writeRaw(hGTA, pInjectFunc, &injectData, dwLen)
  2178.     if (ErrorLevel)
  2179.     return false
  2180.     hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
  2181.     if (ErrorLevel)
  2182.     return false
  2183.     waitForSingleObject(hThread, 0xFFFFFFFF)
  2184.     closeProcess(hThread)
  2185.     return true
  2186. }
  2187. initZonesAndCities() {
  2188.     AddCity("Las Venturas", 685.0, 476.093, -500.0, 3000.0, 3000.0, 500.0)
  2189.     AddCity("San Fierro", -3000.0, -742.306, -500.0, -1270.53, 1530.24, 500.0)
  2190.     AddCity("San Fierro", -1270.53, -402.481, -500.0, -1038.45, 832.495, 500.0)
  2191.     AddCity("San Fierro", -1038.45, -145.539, -500.0, -897.546, 376.632, 500.0)
  2192.     AddCity("Los Santos", 480.0, -3000.0, -500.0, 3000.0, -850.0, 500.0)
  2193.     AddCity("Los Santos", 80.0, -2101.61, -500.0, 1075.0, -1239.61, 500.0)
  2194.     AddCity("Tierra Robada", -1213.91, 596.349, -242.99, -480.539, 1659.68, 900.0)
  2195.     AddCity("Red County", -1213.91, -768.027, -242.99, 2997.06, 596.349, 900.0)
  2196.     AddCity("Flint County", -1213.91, -2892.97, -242.99, 44.6147, -768.027, 900.0)
  2197.     AddCity("Whetstone", -2997.47, -2892.97, -242.99, -1213.91, -1115.58, 900.0)
  2198.     AddZone("Avispa Country Club", -2667.810, -302.135, -28.831, -2646.400, -262.320, 71.169)
  2199.     AddZone("Easter Bay Airport", -1315.420, -405.388, 15.406, -1264.400, -209.543, 25.406)
  2200.     AddZone("Avispa Country Club", -2550.040, -355.493, 0.000, -2470.040, -318.493, 39.700)
  2201.     AddZone("Easter Bay Airport", -1490.330, -209.543, 15.406, -1264.400, -148.388, 25.406)
  2202.     AddZone("Garcia", -2395.140, -222.589, -5.3, -2354.090, -204.792, 200.000)
  2203.     AddZone("Shady Cabin", -1632.830, -2263.440, -3.0, -1601.330, -2231.790, 200.000)
  2204.     AddZone("East Los Santos", 2381.680, -1494.030, -89.084, 2421.030, -1454.350, 110.916)
  2205.     AddZone("LVA Freight Depot", 1236.630, 1163.410, -89.084, 1277.050, 1203.280, 110.916)
  2206.     AddZone("Blackfield Intersection", 1277.050, 1044.690, -89.084, 1315.350, 1087.630, 110.916)
  2207.     AddZone("Avispa Country Club", -2470.040, -355.493, 0.000, -2270.040, -318.493, 46.100)
  2208.     AddZone("Temple", 1252.330, -926.999, -89.084, 1357.000, -910.170, 110.916)
  2209.     AddZone("Unity Station", 1692.620, -1971.800, -20.492, 1812.620, -1932.800, 79.508)
  2210.     AddZone("LVA Freight Depot", 1315.350, 1044.690, -89.084, 1375.600, 1087.630, 110.916)
  2211.     AddZone("Los Flores", 2581.730, -1454.350, -89.084, 2632.830, -1393.420, 110.916)
  2212.     AddZone("Starfish Casino", 2437.390, 1858.100, -39.084, 2495.090, 1970.850, 60.916)
  2213.     AddZone("Easter Bay Chemicals", -1132.820, -787.391, 0.000, -956.476, -768.027, 200.000)
  2214.     AddZone("Downtown", 1370.850, -1170.870, -89.084, 1463.900, -1130.850, 110.916)
  2215.     AddZone("Esplanade East", -1620.300, 1176.520, -4.5, -1580.010, 1274.260, 200.000)
  2216.     AddZone("Market Station", 787.461, -1410.930, -34.126, 866.009, -1310.210, 65.874)
  2217.     AddZone("Linden Station", 2811.250, 1229.590, -39.594, 2861.250, 1407.590, 60.406)
  2218.     AddZone("Montgomery Intersection", 1582.440, 347.457, 0.000, 1664.620, 401.750, 200.000)
  2219.     AddZone("Frederick Bridge", 2759.250, 296.501, 0.000, 2774.250, 594.757, 200.000)
  2220.     AddZone("Yellow Bell Station", 1377.480, 2600.430, -21.926, 1492.450, 2687.360, 78.074)
  2221.     AddZone("Downtown Los Santos", 1507.510, -1385.210, 110.916, 1582.550, -1325.310, 335.916)
  2222.     AddZone("Jefferson", 2185.330, -1210.740, -89.084, 2281.450, -1154.590, 110.916)
  2223.     AddZone("Mulholland", 1318.130, -910.170, -89.084, 1357.000, -768.027, 110.916)
  2224.     AddZone("Avispa Country Club", -2361.510, -417.199, 0.000, -2270.040, -355.493, 200.000)
  2225.     AddZone("Jefferson", 1996.910, -1449.670, -89.084, 2056.860, -1350.720, 110.916)
  2226.     AddZone("Julius Thruway West", 1236.630, 2142.860, -89.084, 1297.470, 2243.230, 110.916)
  2227.     AddZone("Jefferson", 2124.660, -1494.030, -89.084, 2266.210, -1449.670, 110.916)
  2228.     AddZone("Julius Thruway North", 1848.400, 2478.490, -89.084, 1938.800, 2553.490, 110.916)
  2229.     AddZone("Rodeo", 422.680, -1570.200, -89.084, 466.223, -1406.050, 110.916)
  2230.     AddZone("Cranberry Station", -2007.830, 56.306, 0.000, -1922.000, 224.782, 100.000)
  2231.     AddZone("Downtown Los Santos", 1391.050, -1026.330, -89.084, 1463.900, -926.999, 110.916)
  2232.     AddZone("Redsands West", 1704.590, 2243.230, -89.084, 1777.390, 2342.830, 110.916)
  2233.     AddZone("Little Mexico", 1758.900, -1722.260, -89.084, 1812.620, -1577.590, 110.916)
  2234.     AddZone("Blackfield Intersection", 1375.600, 823.228, -89.084, 1457.390, 919.447, 110.916)
  2235.     AddZone("Los Santos International", 1974.630, -2394.330, -39.084, 2089.000, -2256.590, 60.916)
  2236.     AddZone("Beacon Hill", -399.633, -1075.520, -1.489, -319.033, -977.516, 198.511)
  2237.     AddZone("Rodeo", 334.503, -1501.950, -89.084, 422.680, -1406.050, 110.916)
  2238.     AddZone("Richman", 225.165, -1369.620, -89.084, 334.503, -1292.070, 110.916)
  2239.     AddZone("Downtown Los Santos", 1724.760, -1250.900, -89.084, 1812.620, -1150.870, 110.916)
  2240.     AddZone("The Strip", 2027.400, 1703.230, -89.084, 2137.400, 1783.230, 110.916)
  2241.     AddZone("Downtown Los Santos", 1378.330, -1130.850, -89.084, 1463.900, -1026.330, 110.916)
  2242.     AddZone("Blackfield Intersection", 1197.390, 1044.690, -89.084, 1277.050, 1163.390, 110.916)
  2243.     AddZone("Conference Center", 1073.220, -1842.270, -89.084, 1323.900, -1804.210, 110.916)
  2244.     AddZone("Montgomery", 1451.400, 347.457, -6.1, 1582.440, 420.802, 200.000)
  2245.     AddZone("Foster Valley", -2270.040, -430.276, -1.2, -2178.690, -324.114, 200.000)
  2246.     AddZone("Blackfield Chapel", 1325.600, 596.349, -89.084, 1375.600, 795.010, 110.916)
  2247.     AddZone("Los Santos International", 2051.630, -2597.260, -39.084, 2152.450, -2394.330, 60.916)
  2248.     AddZone("Mulholland", 1096.470, -910.170, -89.084, 1169.130, -768.027, 110.916)
  2249.     AddZone("Yellow Bell Gol Course", 1457.460, 2723.230, -89.084, 1534.560, 2863.230, 110.916)
  2250.     AddZone("The Strip", 2027.400, 1783.230, -89.084, 2162.390, 1863.230, 110.916)
  2251.     AddZone("Jefferson", 2056.860, -1210.740, -89.084, 2185.330, -1126.320, 110.916)
  2252.     AddZone("Mulholland", 952.604, -937.184, -89.084, 1096.470, -860.619, 110.916)
  2253.     AddZone("Aldea Malvada", -1372.140, 2498.520, 0.000, -1277.590, 2615.350, 200.000)
  2254.     AddZone("Las Colinas", 2126.860, -1126.320, -89.084, 2185.330, -934.489, 110.916)
  2255.     AddZone("Las Colinas", 1994.330, -1100.820, -89.084, 2056.860, -920.815, 110.916)
  2256.     AddZone("Richman", 647.557, -954.662, -89.084, 768.694, -860.619, 110.916)
  2257.     AddZone("LVA Freight Depot", 1277.050, 1087.630, -89.084, 1375.600, 1203.280, 110.916)
  2258.     AddZone("Julius Thruway North", 1377.390, 2433.230, -89.084, 1534.560, 2507.230, 110.916)
  2259.     AddZone("Willowfield", 2201.820, -2095.000, -89.084, 2324.000, -1989.900, 110.916)
  2260.     AddZone("Julius Thruway North", 1704.590, 2342.830, -89.084, 1848.400, 2433.230, 110.916)
  2261.     AddZone("Temple", 1252.330, -1130.850, -89.084, 1378.330, -1026.330, 110.916)
  2262.     AddZone("Little Mexico", 1701.900, -1842.270, -89.084, 1812.620, -1722.260, 110.916)
  2263.     AddZone("Queens", -2411.220, 373.539, 0.000, -2253.540, 458.411, 200.000)
  2264.     AddZone("Las Venturas Airport", 1515.810, 1586.400, -12.500, 1729.950, 1714.560, 87.500)
  2265.     AddZone("Richman", 225.165, -1292.070, -89.084, 466.223, -1235.070, 110.916)
  2266.     AddZone("Temple", 1252.330, -1026.330, -89.084, 1391.050, -926.999, 110.916)
  2267.     AddZone("East Los Santos", 2266.260, -1494.030, -89.084, 2381.680, -1372.040, 110.916)
  2268.     AddZone("Julius Thruway East", 2623.180, 943.235, -89.084, 2749.900, 1055.960, 110.916)
  2269.     AddZone("Willowfield", 2541.700, -1941.400, -89.084, 2703.580, -1852.870, 110.916)
  2270.     AddZone("Las Colinas", 2056.860, -1126.320, -89.084, 2126.860, -920.815, 110.916)
  2271.     AddZone("Julius Thruway East", 2625.160, 2202.760, -89.084, 2685.160, 2442.550, 110.916)
  2272.     AddZone("Rodeo", 225.165, -1501.950, -89.084, 334.503, -1369.620, 110.916)
  2273.     AddZone("Las Brujas", -365.167, 2123.010, -3.0, -208.570, 2217.680, 200.000)
  2274.     AddZone("Julius Thruway East", 2536.430, 2442.550, -89.084, 2685.160, 2542.550, 110.916)
  2275.     AddZone("Rodeo", 334.503, -1406.050, -89.084, 466.223, -1292.070, 110.916)
  2276.     AddZone("Vinewood", 647.557, -1227.280, -89.084, 787.461, -1118.280, 110.916)
  2277.     AddZone("Rodeo", 422.680, -1684.650, -89.084, 558.099, -1570.200, 110.916)
  2278.     AddZone("Julius Thruway North", 2498.210, 2542.550, -89.084, 2685.160, 2626.550, 110.916)
  2279.     AddZone("Downtown Los Santos", 1724.760, -1430.870, -89.084, 1812.620, -1250.900, 110.916)
  2280.     AddZone("Rodeo", 225.165, -1684.650, -89.084, 312.803, -1501.950, 110.916)
  2281.     AddZone("Jefferson", 2056.860, -1449.670, -89.084, 2266.210, -1372.040, 110.916)
  2282.     AddZone("Hampton Barns", 603.035, 264.312, 0.000, 761.994, 366.572, 200.000)
  2283.     AddZone("Temple", 1096.470, -1130.840, -89.084, 1252.330, -1026.330, 110.916)
  2284.     AddZone("Kincaid Bridge", -1087.930, 855.370, -89.084, -961.950, 986.281, 110.916)
  2285.     AddZone("Verona Beach", 1046.150, -1722.260, -89.084, 1161.520, -1577.590, 110.916)
  2286.     AddZone("Commerce", 1323.900, -1722.260, -89.084, 1440.900, -1577.590, 110.916)
  2287.     AddZone("Mulholland", 1357.000, -926.999, -89.084, 1463.900, -768.027, 110.916)
  2288.     AddZone("Rodeo", 466.223, -1570.200, -89.084, 558.099, -1385.070, 110.916)
  2289.     AddZone("Mulholland", 911.802, -860.619, -89.084, 1096.470, -768.027, 110.916)
  2290.     AddZone("Mulholland", 768.694, -954.662, -89.084, 952.604, -860.619, 110.916)
  2291.     AddZone("Julius Thruway South", 2377.390, 788.894, -89.084, 2537.390, 897.901, 110.916)
  2292.     AddZone("Idlewood", 1812.620, -1852.870, -89.084, 1971.660, -1742.310, 110.916)
  2293.     AddZone("Ocean Docks", 2089.000, -2394.330, -89.084, 2201.820, -2235.840, 110.916)
  2294.     AddZone("Commerce", 1370.850, -1577.590, -89.084, 1463.900, -1384.950, 110.916)
  2295.     AddZone("Julius Thruway North", 2121.400, 2508.230, -89.084, 2237.400, 2663.170, 110.916)
  2296.     AddZone("Temple", 1096.470, -1026.330, -89.084, 1252.330, -910.170, 110.916)
  2297.     AddZone("Glen Park", 1812.620, -1449.670, -89.084, 1996.910, -1350.720, 110.916)
  2298.     AddZone("Easter Bay Airport", -1242.980, -50.096, 0.000, -1213.910, 578.396, 200.000)
  2299.     AddZone("Martin Bridge", -222.179, 293.324, 0.000, -122.126, 476.465, 200.000)
  2300.     AddZone("The Strip", 2106.700, 1863.230, -89.084, 2162.390, 2202.760, 110.916)
  2301.     AddZone("Willowfield", 2541.700, -2059.230, -89.084, 2703.580, -1941.400, 110.916)
  2302.     AddZone("Marina", 807.922, -1577.590, -89.084, 926.922, -1416.250, 110.916)
  2303.     AddZone("Las Venturas Airport", 1457.370, 1143.210, -89.084, 1777.400, 1203.280, 110.916)
  2304.     AddZone("Idlewood", 1812.620, -1742.310, -89.084, 1951.660, -1602.310, 110.916)
  2305.     AddZone("Esplanade East", -1580.010, 1025.980, -6.1, -1499.890, 1274.260, 200.000)
  2306.     AddZone("Downtown Los Santos", 1370.850, -1384.950, -89.084, 1463.900, -1170.870, 110.916)
  2307.     AddZone("The Mako Span", 1664.620, 401.750, 0.000, 1785.140, 567.203, 200.000)
  2308.     AddZone("Rodeo", 312.803, -1684.650, -89.084, 422.680, -1501.950, 110.916)
  2309.     AddZone("Pershing Square", 1440.900, -1722.260, -89.084, 1583.500, -1577.590, 110.916)
  2310.     AddZone("Mulholland", 687.802, -860.619, -89.084, 911.802, -768.027, 110.916)
  2311.     AddZone("Gant Bridge", -2741.070, 1490.470, -6.1, -2616.400, 1659.680, 200.000)
  2312.     AddZone("Las Colinas", 2185.330, -1154.590, -89.084, 2281.450, -934.489, 110.916)
  2313.     AddZone("Mulholland", 1169.130, -910.170, -89.084, 1318.130, -768.027, 110.916)
  2314.     AddZone("Julius Thruway North", 1938.800, 2508.230, -89.084, 2121.400, 2624.230, 110.916)
  2315.     AddZone("Commerce", 1667.960, -1577.590, -89.084, 1812.620, -1430.870, 110.916)
  2316.     AddZone("Rodeo", 72.648, -1544.170, -89.084, 225.165, -1404.970, 110.916)
  2317.     AddZone("Roca Escalante", 2536.430, 2202.760, -89.084, 2625.160, 2442.550, 110.916)
  2318.     AddZone("Rodeo", 72.648, -1684.650, -89.084, 225.165, -1544.170, 110.916)
  2319.     AddZone("Market", 952.663, -1310.210, -89.084, 1072.660, -1130.850, 110.916)
  2320.     AddZone("Las Colinas", 2632.740, -1135.040, -89.084, 2747.740, -945.035, 110.916)
  2321.     AddZone("Mulholland", 861.085, -674.885, -89.084, 1156.550, -600.896, 110.916)
  2322.     AddZone("King's", -2253.540, 373.539, -9.1, -1993.280, 458.411, 200.000)
  2323.     AddZone("Redsands East", 1848.400, 2342.830, -89.084, 2011.940, 2478.490, 110.916)
  2324.     AddZone("Downtown", -1580.010, 744.267, -6.1, -1499.890, 1025.980, 200.000)
  2325.     AddZone("Conference Center", 1046.150, -1804.210, -89.084, 1323.900, -1722.260, 110.916)
  2326.     AddZone("Richman", 647.557, -1118.280, -89.084, 787.461, -954.662, 110.916)
  2327.     AddZone("Ocean Flats", -2994.490, 277.411, -9.1, -2867.850, 458.411, 200.000)
  2328.     AddZone("Greenglass College", 964.391, 930.890, -89.084, 1166.530, 1044.690, 110.916)
  2329.     AddZone("Glen Park", 1812.620, -1100.820, -89.084, 1994.330, -973.380, 110.916)
  2330.     AddZone("LVA Freight Depot", 1375.600, 919.447, -89.084, 1457.370, 1203.280, 110.916)
  2331.     AddZone("Regular Tom", -405.770, 1712.860, -3.0, -276.719, 1892.750, 200.000)
  2332.     AddZone("Verona Beach", 1161.520, -1722.260, -89.084, 1323.900, -1577.590, 110.916)
  2333.     AddZone("East Los Santos", 2281.450, -1372.040, -89.084, 2381.680, -1135.040, 110.916)
  2334.     AddZone("Caligula's Palace", 2137.400, 1703.230, -89.084, 2437.390, 1783.230, 110.916)
  2335.     AddZone("Idlewood", 1951.660, -1742.310, -89.084, 2124.660, -1602.310, 110.916)
  2336.     AddZone("Pilgrim", 2624.400, 1383.230, -89.084, 2685.160, 1783.230, 110.916)
  2337.     AddZone("Idlewood", 2124.660, -1742.310, -89.084, 2222.560, -1494.030, 110.916)
  2338.     AddZone("Queens", -2533.040, 458.411, 0.000, -2329.310, 578.396, 200.000)
  2339.     AddZone("Downtown", -1871.720, 1176.420, -4.5, -1620.300, 1274.260, 200.000)
  2340.     AddZone("Commerce", 1583.500, -1722.260, -89.084, 1758.900, -1577.590, 110.916)
  2341.     AddZone("East Los Santos", 2381.680, -1454.350, -89.084, 2462.130, -1135.040, 110.916)
  2342.     AddZone("Marina", 647.712, -1577.590, -89.084, 807.922, -1416.250, 110.916)
  2343.     AddZone("Richman", 72.648, -1404.970, -89.084, 225.165, -1235.070, 110.916)
  2344.     AddZone("Vinewood", 647.712, -1416.250, -89.084, 787.461, -1227.280, 110.916)
  2345.     AddZone("East Los Santos", 2222.560, -1628.530, -89.084, 2421.030, -1494.030, 110.916)
  2346.     AddZone("Rodeo", 558.099, -1684.650, -89.084, 647.522, -1384.930, 110.916)
  2347.     AddZone("Easter Tunnel", -1709.710, -833.034, -1.5, -1446.010, -730.118, 200.000)
  2348.     AddZone("Rodeo", 466.223, -1385.070, -89.084, 647.522, -1235.070, 110.916)
  2349.     AddZone("Redsands East", 1817.390, 2202.760, -89.084, 2011.940, 2342.830, 110.916)
  2350.     AddZone("The Clown's Pocket", 2162.390, 1783.230, -89.084, 2437.390, 1883.230, 110.916)
  2351.     AddZone("Idlewood", 1971.660, -1852.870, -89.084, 2222.560, -1742.310, 110.916)
  2352.     AddZone("Montgomery Intersection", 1546.650, 208.164, 0.000, 1745.830, 347.457, 200.000)
  2353.     AddZone("Willowfield", 2089.000, -2235.840, -89.084, 2201.820, -1989.900, 110.916)
  2354.     AddZone("Temple", 952.663, -1130.840, -89.084, 1096.470, -937.184, 110.916)
  2355.     AddZone("Prickle Pine", 1848.400, 2553.490, -89.084, 1938.800, 2863.230, 110.916)
  2356.     AddZone("Los Santos International", 1400.970, -2669.260, -39.084, 2189.820, -2597.260, 60.916)
  2357.     AddZone("Garver Bridge", -1213.910, 950.022, -89.084, -1087.930, 1178.930, 110.916)
  2358.     AddZone("Garver Bridge", -1339.890, 828.129, -89.084, -1213.910, 1057.040, 110.916)
  2359.     AddZone("Kincaid Bridge", -1339.890, 599.218, -89.084, -1213.910, 828.129, 110.916)
  2360.     AddZone("Kincaid Bridge", -1213.910, 721.111, -89.084, -1087.930, 950.022, 110.916)
  2361.     AddZone("Verona Beach", 930.221, -2006.780, -89.084, 1073.220, -1804.210, 110.916)
  2362.     AddZone("Verdant Bluffs", 1073.220, -2006.780, -89.084, 1249.620, -1842.270, 110.916)
  2363.     AddZone("Vinewood", 787.461, -1130.840, -89.084, 952.604, -954.662, 110.916)
  2364.     AddZone("Vinewood", 787.461, -1310.210, -89.084, 952.663, -1130.840, 110.916)
  2365.     AddZone("Commerce", 1463.900, -1577.590, -89.084, 1667.960, -1430.870, 110.916)
  2366.     AddZone("Market", 787.461, -1416.250, -89.084, 1072.660, -1310.210, 110.916)
  2367.     AddZone("Rockshore West", 2377.390, 596.349, -89.084, 2537.390, 788.894, 110.916)
  2368.     AddZone("Julius Thruway North", 2237.400, 2542.550, -89.084, 2498.210, 2663.170, 110.916)
  2369.     AddZone("East Beach", 2632.830, -1668.130, -89.084, 2747.740, -1393.420, 110.916)
  2370.     AddZone("Fallow Bridge", 434.341, 366.572, 0.000, 603.035, 555.680, 200.000)
  2371.     AddZone("Willowfield", 2089.000, -1989.900, -89.084, 2324.000, -1852.870, 110.916)
  2372.     AddZone("Chinatown", -2274.170, 578.396, -7.6, -2078.670, 744.170, 200.000)
  2373.     AddZone("El Castillo del Diablo", -208.570, 2337.180, 0.000, 8.430, 2487.180, 200.000)
  2374.     AddZone("Ocean Docks", 2324.000, -2145.100, -89.084, 2703.580, -2059.230, 110.916)
  2375.     AddZone("Easter Bay Chemicals", -1132.820, -768.027, 0.000, -956.476, -578.118, 200.000)
  2376.     AddZone("The Visage", 1817.390, 1703.230, -89.084, 2027.400, 1863.230, 110.916)
  2377.     AddZone("Ocean Flats", -2994.490, -430.276, -1.2, -2831.890, -222.589, 200.000)
  2378.     AddZone("Richman", 321.356, -860.619, -89.084, 687.802, -768.027, 110.916)
  2379.     AddZone("Green Palms", 176.581, 1305.450, -3.0, 338.658, 1520.720, 200.000)
  2380.     AddZone("Richman", 321.356, -768.027, -89.084, 700.794, -674.885, 110.916)
  2381.     AddZone("Starfish Casino", 2162.390, 1883.230, -89.084, 2437.390, 2012.180, 110.916)
  2382.     AddZone("East Beach", 2747.740, -1668.130, -89.084, 2959.350, -1498.620, 110.916)
  2383.     AddZone("Jefferson", 2056.860, -1372.040, -89.084, 2281.450, -1210.740, 110.916)
  2384.     AddZone("Downtown Los Santos", 1463.900, -1290.870, -89.084, 1724.760, -1150.870, 110.916)
  2385.     AddZone("Downtown Los Santos", 1463.900, -1430.870, -89.084, 1724.760, -1290.870, 110.916)
  2386.     AddZone("Garver Bridge", -1499.890, 696.442, -179.615, -1339.890, 925.353, 20.385)
  2387.     AddZone("Julius Thruway South", 1457.390, 823.228, -89.084, 2377.390, 863.229, 110.916)
  2388.     AddZone("East Los Santos", 2421.030, -1628.530, -89.084, 2632.830, -1454.350, 110.916)
  2389.     AddZone("Greenglass College", 964.391, 1044.690, -89.084, 1197.390, 1203.220, 110.916)
  2390.     AddZone("Las Colinas", 2747.740, -1120.040, -89.084, 2959.350, -945.035, 110.916)
  2391.     AddZone("Mulholland", 737.573, -768.027, -89.084, 1142.290, -674.885, 110.916)
  2392.     AddZone("Ocean Docks", 2201.820, -2730.880, -89.084, 2324.000, -2418.330, 110.916)
  2393.     AddZone("East Los Santos", 2462.130, -1454.350, -89.084, 2581.730, -1135.040, 110.916)
  2394.     AddZone("Ganton", 2222.560, -1722.330, -89.084, 2632.830, -1628.530, 110.916)
  2395.     AddZone("Avispa Country Club", -2831.890, -430.276, -6.1, -2646.400, -222.589, 200.000)
  2396.     AddZone("Willowfield", 1970.620, -2179.250, -89.084, 2089.000, -1852.870, 110.916)
  2397.     AddZone("Esplanade North", -1982.320, 1274.260, -4.5, -1524.240, 1358.900, 200.000)
  2398.     AddZone("The High Roller", 1817.390, 1283.230, -89.084, 2027.390, 1469.230, 110.916)
  2399.     AddZone("Ocean Docks", 2201.820, -2418.330, -89.084, 2324.000, -2095.000, 110.916)
  2400.     AddZone("Last Dime Motel", 1823.080, 596.349, -89.084, 1997.220, 823.228, 110.916)
  2401.     AddZone("Bayside Marina", -2353.170, 2275.790, 0.000, -2153.170, 2475.790, 200.000)
  2402.     AddZone("King's", -2329.310, 458.411, -7.6, -1993.280, 578.396, 200.000)
  2403.     AddZone("El Corona", 1692.620, -2179.250, -89.084, 1812.620, -1842.270, 110.916)
  2404.     AddZone("Blackfield Chapel", 1375.600, 596.349, -89.084, 1558.090, 823.228, 110.916)
  2405.     AddZone("The Pink Swan", 1817.390, 1083.230, -89.084, 2027.390, 1283.230, 110.916)
  2406.     AddZone("Julius Thruway West", 1197.390, 1163.390, -89.084, 1236.630, 2243.230, 110.916)
  2407.     AddZone("Los Flores", 2581.730, -1393.420, -89.084, 2747.740, -1135.040, 110.916)
  2408.     AddZone("The Visage", 1817.390, 1863.230, -89.084, 2106.700, 2011.830, 110.916)
  2409.     AddZone("Prickle Pine", 1938.800, 2624.230, -89.084, 2121.400, 2861.550, 110.916)
  2410.     AddZone("Verona Beach", 851.449, -1804.210, -89.084, 1046.150, -1577.590, 110.916)
  2411.     AddZone("Robada Intersection", -1119.010, 1178.930, -89.084, -862.025, 1351.450, 110.916)
  2412.     AddZone("Linden Side", 2749.900, 943.235, -89.084, 2923.390, 1198.990, 110.916)
  2413.     AddZone("Ocean Docks", 2703.580, -2302.330, -89.084, 2959.350, -2126.900, 110.916)
  2414.     AddZone("Willowfield", 2324.000, -2059.230, -89.084, 2541.700, -1852.870, 110.916)
  2415.     AddZone("King's", -2411.220, 265.243, -9.1, -1993.280, 373.539, 200.000)
  2416.     AddZone("Commerce", 1323.900, -1842.270, -89.084, 1701.900, -1722.260, 110.916)
  2417.     AddZone("Mulholland", 1269.130, -768.027, -89.084, 1414.070, -452.425, 110.916)
  2418.     AddZone("Marina", 647.712, -1804.210, -89.084, 851.449, -1577.590, 110.916)
  2419.     AddZone("Battery Point", -2741.070, 1268.410, -4.5, -2533.040, 1490.470, 200.000)
  2420.     AddZone("The Four Dragons Casino", 1817.390, 863.232, -89.084, 2027.390, 1083.230, 110.916)
  2421.     AddZone("Blackfield", 964.391, 1203.220, -89.084, 1197.390, 1403.220, 110.916)
  2422.     AddZone("Julius Thruway North", 1534.560, 2433.230, -89.084, 1848.400, 2583.230, 110.916)
  2423.     AddZone("Yellow Bell Gol Course", 1117.400, 2723.230, -89.084, 1457.460, 2863.230, 110.916)
  2424.     AddZone("Idlewood", 1812.620, -1602.310, -89.084, 2124.660, -1449.670, 110.916)
  2425.     AddZone("Redsands West", 1297.470, 2142.860, -89.084, 1777.390, 2243.230, 110.916)
  2426.     AddZone("Doherty", -2270.040, -324.114, -1.2, -1794.920, -222.589, 200.000)
  2427.     AddZone("Hilltop Farm", 967.383, -450.390, -3.0, 1176.780, -217.900, 200.000)
  2428.     AddZone("Las Barrancas", -926.130, 1398.730, -3.0, -719.234, 1634.690, 200.000)
  2429.     AddZone("Pirates in Men's Pants", 1817.390, 1469.230, -89.084, 2027.400, 1703.230, 110.916)
  2430.     AddZone("City Hall", -2867.850, 277.411, -9.1, -2593.440, 458.411, 200.000)
  2431.     AddZone("Avispa Country Club", -2646.400, -355.493, 0.000, -2270.040, -222.589, 200.000)
  2432.     AddZone("The Strip", 2027.400, 863.229, -89.084, 2087.390, 1703.230, 110.916)
  2433.     AddZone("Hashbury", -2593.440, -222.589, -1.0, -2411.220, 54.722, 200.000)
  2434.     AddZone("Los Santos International", 1852.000, -2394.330, -89.084, 2089.000, -2179.250, 110.916)
  2435.     AddZone("Whitewood Estates", 1098.310, 1726.220, -89.084, 1197.390, 2243.230, 110.916)
  2436.     AddZone("Sherman Reservoir", -789.737, 1659.680, -89.084, -599.505, 1929.410, 110.916)
  2437.     AddZone("El Corona", 1812.620, -2179.250, -89.084, 1970.620, -1852.870, 110.916)
  2438.     AddZone("Downtown", -1700.010, 744.267, -6.1, -1580.010, 1176.520, 200.000)
  2439.     AddZone("Foster Valley", -2178.690, -1250.970, 0.000, -1794.920, -1115.580, 200.000)
  2440.     AddZone("Las Payasadas", -354.332, 2580.360, 2.0, -133.625, 2816.820, 200.000)
  2441.     AddZone("Valle Ocultado", -936.668, 2611.440, 2.0, -715.961, 2847.900, 200.000)
  2442.     AddZone("Blackfield Intersection", 1166.530, 795.010, -89.084, 1375.600, 1044.690, 110.916)
  2443.     AddZone("Ganton", 2222.560, -1852.870, -89.084, 2632.830, -1722.330, 110.916)
  2444.     AddZone("Easter Bay Airport", -1213.910, -730.118, 0.000, -1132.820, -50.096, 200.000)
  2445.     AddZone("Redsands East", 1817.390, 2011.830, -89.084, 2106.700, 2202.760, 110.916)
  2446.     AddZone("Esplanade East", -1499.890, 578.396, -79.615, -1339.890, 1274.260, 20.385)
  2447.     AddZone("Caligula's Palace", 2087.390, 1543.230, -89.084, 2437.390, 1703.230, 110.916)
  2448.     AddZone("Royal Casino", 2087.390, 1383.230, -89.084, 2437.390, 1543.230, 110.916)
  2449.     AddZone("Richman", 72.648, -1235.070, -89.084, 321.356, -1008.150, 110.916)
  2450.     AddZone("Starfish Casino", 2437.390, 1783.230, -89.084, 2685.160, 2012.180, 110.916)
  2451.     AddZone("Mulholland", 1281.130, -452.425, -89.084, 1641.130, -290.913, 110.916)
  2452.     AddZone("Downtown", -1982.320, 744.170, -6.1, -1871.720, 1274.260, 200.000)
  2453.     AddZone("Hankypanky Point", 2576.920, 62.158, 0.000, 2759.250, 385.503, 200.000)
  2454.     AddZone("K.A.C.C. Military Fuels", 2498.210, 2626.550, -89.084, 2749.900, 2861.550, 110.916)
  2455.     AddZone("Harry Gold Parkway", 1777.390, 863.232, -89.084, 1817.390, 2342.830, 110.916)
  2456.     AddZone("Bayside Tunnel", -2290.190, 2548.290, -89.084, -1950.190, 2723.290, 110.916)
  2457.     AddZone("Ocean Docks", 2324.000, -2302.330, -89.084, 2703.580, -2145.100, 110.916)
  2458.     AddZone("Richman", 321.356, -1044.070, -89.084, 647.557, -860.619, 110.916)
  2459.     AddZone("Randolph Industrial Estate", 1558.090, 596.349, -89.084, 1823.080, 823.235, 110.916)
  2460.     AddZone("East Beach", 2632.830, -1852.870, -89.084, 2959.350, -1668.130, 110.916)
  2461.     AddZone("Flint Water", -314.426, -753.874, -89.084, -106.339, -463.073, 110.916)
  2462.     AddZone("Blueberry", 19.607, -404.136, 3.8, 349.607, -220.137, 200.000)
  2463.     AddZone("Linden Station", 2749.900, 1198.990, -89.084, 2923.390, 1548.990, 110.916)
  2464.     AddZone("Glen Park", 1812.620, -1350.720, -89.084, 2056.860, -1100.820, 110.916)
  2465.     AddZone("Downtown", -1993.280, 265.243, -9.1, -1794.920, 578.396, 200.000)
  2466.     AddZone("Redsands West", 1377.390, 2243.230, -89.084, 1704.590, 2433.230, 110.916)
  2467.     AddZone("Richman", 321.356, -1235.070, -89.084, 647.522, -1044.070, 110.916)
  2468.     AddZone("Gant Bridge", -2741.450, 1659.680, -6.1, -2616.400, 2175.150, 200.000)
  2469.     AddZone("Lil' Probe Inn", -90.218, 1286.850, -3.0, 153.859, 1554.120, 200.000)
  2470.     AddZone("Flint Intersection", -187.700, -1596.760, -89.084, 17.063, -1276.600, 110.916)
  2471.     AddZone("Las Colinas", 2281.450, -1135.040, -89.084, 2632.740, -945.035, 110.916)
  2472.     AddZone("Sobell Rail Yards", 2749.900, 1548.990, -89.084, 2923.390, 1937.250, 110.916)
  2473.     AddZone("The Emerald Isle", 2011.940, 2202.760, -89.084, 2237.400, 2508.230, 110.916)
  2474.     AddZone("El Castillo del Diablo", -208.570, 2123.010, -7.6, 114.033, 2337.180, 200.000)
  2475.     AddZone("Santa Flora", -2741.070, 458.411, -7.6, -2533.040, 793.411, 200.000)
  2476.     AddZone("Playa del Seville", 2703.580, -2126.900, -89.084, 2959.350, -1852.870, 110.916)
  2477.     AddZone("Market", 926.922, -1577.590, -89.084, 1370.850, -1416.250, 110.916)
  2478.     AddZone("Queens", -2593.440, 54.722, 0.000, -2411.220, 458.411, 200.000)
  2479.     AddZone("Pilson Intersection", 1098.390, 2243.230, -89.084, 1377.390, 2507.230, 110.916)
  2480.     AddZone("Spinybed", 2121.400, 2663.170, -89.084, 2498.210, 2861.550, 110.916)
  2481.     AddZone("Pilgrim", 2437.390, 1383.230, -89.084, 2624.400, 1783.230, 110.916)
  2482.     AddZone("Blackfield", 964.391, 1403.220, -89.084, 1197.390, 1726.220, 110.916)
  2483.     AddZone("'The Big Ear'", -410.020, 1403.340, -3.0, -137.969, 1681.230, 200.000)
  2484.     AddZone("Dillimore", 580.794, -674.885, -9.5, 861.085, -404.790, 200.000)
  2485.     AddZone("El Quebrados", -1645.230, 2498.520, 0.000, -1372.140, 2777.850, 200.000)
  2486.     AddZone("Esplanade North", -2533.040, 1358.900, -4.5, -1996.660, 1501.210, 200.000)
  2487.     AddZone("Easter Bay Airport", -1499.890, -50.096, -1.0, -1242.980, 249.904, 200.000)
  2488.     AddZone("Fisher's Lagoon", 1916.990, -233.323, -100.000, 2131.720, 13.800, 200.000)
  2489.     AddZone("Mulholland", 1414.070, -768.027, -89.084, 1667.610, -452.425, 110.916)
  2490.     AddZone("East Beach", 2747.740, -1498.620, -89.084, 2959.350, -1120.040, 110.916)
  2491.     AddZone("San Andreas Sound", 2450.390, 385.503, -100.000, 2759.250, 562.349, 200.000)
  2492.     AddZone("Shady Creeks", -2030.120, -2174.890, -6.1, -1820.640, -1771.660, 200.000)
  2493.     AddZone("Market", 1072.660, -1416.250, -89.084, 1370.850, -1130.850, 110.916)
  2494.     AddZone("Rockshore West", 1997.220, 596.349, -89.084, 2377.390, 823.228, 110.916)
  2495.     AddZone("Prickle Pine", 1534.560, 2583.230, -89.084, 1848.400, 2863.230, 110.916)
  2496.     AddZone("Easter Basin", -1794.920, -50.096, -1.04, -1499.890, 249.904, 200.000)
  2497.     AddZone("Leafy Hollow", -1166.970, -1856.030, 0.000, -815.624, -1602.070, 200.000)
  2498.     AddZone("LVA Freight Depot", 1457.390, 863.229, -89.084, 1777.400, 1143.210, 110.916)
  2499.     AddZone("Prickle Pine", 1117.400, 2507.230, -89.084, 1534.560, 2723.230, 110.916)
  2500.     AddZone("Blueberry", 104.534, -220.137, 2.3, 349.607, 152.236, 200.000)
  2501.     AddZone("El Castillo del Diablo", -464.515, 2217.680, 0.000, -208.570, 2580.360, 200.000)
  2502.     AddZone("Downtown", -2078.670, 578.396, -7.6, -1499.890, 744.267, 200.000)
  2503.     AddZone("Rockshore East", 2537.390, 676.549, -89.084, 2902.350, 943.235, 110.916)
  2504.     AddZone("San Fierro Bay", -2616.400, 1501.210, -3.0, -1996.660, 1659.680, 200.000)
  2505.     AddZone("Paradiso", -2741.070, 793.411, -6.1, -2533.040, 1268.410, 200.000)
  2506.     AddZone("The Camel's Toe", 2087.390, 1203.230, -89.084, 2640.400, 1383.230, 110.916)
  2507.     AddZone("Old Venturas Strip", 2162.390, 2012.180, -89.084, 2685.160, 2202.760, 110.916)
  2508.     AddZone("Juniper Hill", -2533.040, 578.396, -7.6, -2274.170, 968.369, 200.000)
  2509.     AddZone("Juniper Hollow", -2533.040, 968.369, -6.1, -2274.170, 1358.900, 200.000)
  2510.     AddZone("Roca Escalante", 2237.400, 2202.760, -89.084, 2536.430, 2542.550, 110.916)
  2511.     AddZone("Julius Thruway East", 2685.160, 1055.960, -89.084, 2749.900, 2626.550, 110.916)
  2512.     AddZone("Verona Beach", 647.712, -2173.290, -89.084, 930.221, -1804.210, 110.916)
  2513.     AddZone("Foster Valley", -2178.690, -599.884, -1.2, -1794.920, -324.114, 200.000)
  2514.     AddZone("Arco del Oeste", -901.129, 2221.860, 0.000, -592.090, 2571.970, 200.000)
  2515.     AddZone("Fallen Tree", -792.254, -698.555, -5.3, -452.404, -380.043, 200.000)
  2516.     AddZone("The Farm", -1209.670, -1317.100, 114.981, -908.161, -787.391, 251.981)
  2517.     AddZone("The Sherman Dam", -968.772, 1929.410, -3.0, -481.126, 2155.260, 200.000)
  2518.     AddZone("Esplanade North", -1996.660, 1358.900, -4.5, -1524.240, 1592.510, 200.000)
  2519.     AddZone("Financial", -1871.720, 744.170, -6.1, -1701.300, 1176.420, 300.000)
  2520.     AddZone("Garcia", -2411.220, -222.589, -1.14, -2173.040, 265.243, 200.000)
  2521.     AddZone("Montgomery", 1119.510, 119.526, -3.0, 1451.400, 493.323, 200.000)
  2522.     AddZone("Creek", 2749.900, 1937.250, -89.084, 2921.620, 2669.790, 110.916)
  2523.     AddZone("Los Santos International", 1249.620, -2394.330, -89.084, 1852.000, -2179.250, 110.916)
  2524.     AddZone("Santa Maria Beach", 72.648, -2173.290, -89.084, 342.648, -1684.650, 110.916)
  2525.     AddZone("Mulholland Intersection", 1463.900, -1150.870, -89.084, 1812.620, -768.027, 110.916)
  2526.     AddZone("Angel Pine", -2324.940, -2584.290, -6.1, -1964.220, -2212.110, 200.000)
  2527.     AddZone("Verdant Meadows", 37.032, 2337.180, -3.0, 435.988, 2677.900, 200.000)
  2528.     AddZone("Octane Springs", 338.658, 1228.510, 0.000, 664.308, 1655.050, 200.000)
  2529.     AddZone("Come-A-Lot", 2087.390, 943.235, -89.084, 2623.180, 1203.230, 110.916)
  2530.     AddZone("Redsands West", 1236.630, 1883.110, -89.084, 1777.390, 2142.860, 110.916)
  2531.     AddZone("Santa Maria Beach", 342.648, -2173.290, -89.084, 647.712, -1684.650, 110.916)
  2532.     AddZone("Verdant Bluffs", 1249.620, -2179.250, -89.084, 1692.620, -1842.270, 110.916)
  2533.     AddZone("Las Venturas Airport", 1236.630, 1203.280, -89.084, 1457.370, 1883.110, 110.916)
  2534.     AddZone("Flint Range", -594.191, -1648.550, 0.000, -187.700, -1276.600, 200.000)
  2535.     AddZone("Verdant Bluffs", 930.221, -2488.420, -89.084, 1249.620, -2006.780, 110.916)
  2536.     AddZone("Palomino Creek", 2160.220, -149.004, 0.000, 2576.920, 228.322, 200.000)
  2537.     AddZone("Ocean Docks", 2373.770, -2697.090, -89.084, 2809.220, -2330.460, 110.916)
  2538.     AddZone("Easter Bay Airport", -1213.910, -50.096, -4.5, -947.980, 578.396, 200.000)
  2539.     AddZone("Whitewood Estates", 883.308, 1726.220, -89.084, 1098.310, 2507.230, 110.916)
  2540.     AddZone("Calton Heights", -2274.170, 744.170, -6.1, -1982.320, 1358.900, 200.000)
  2541.     AddZone("Easter Basin", -1794.920, 249.904, -9.1, -1242.980, 578.396, 200.000)
  2542.     AddZone("Los Santos Inlet", -321.744, -2224.430, -89.084, 44.615, -1724.430, 110.916)
  2543.     AddZone("Doherty", -2173.040, -222.589, -1.0, -1794.920, 265.243, 200.000)
  2544.     AddZone("Mount Chiliad", -2178.690, -2189.910, -47.917, -2030.120, -1771.660, 576.083)
  2545.     AddZone("Fort Carson", -376.233, 826.326, -3.0, 123.717, 1220.440, 200.000)
  2546.     AddZone("Foster Valley", -2178.690, -1115.580, 0.000, -1794.920, -599.884, 200.000)
  2547.     AddZone("Ocean Flats", -2994.490, -222.589, -1.0, -2593.440, 277.411, 200.000)
  2548.     AddZone("Fern Ridge", 508.189, -139.259, 0.000, 1306.660, 119.526, 200.000)
  2549.     AddZone("Bayside", -2741.070, 2175.150, 0.000, -2353.170, 2722.790, 200.000)
  2550.     AddZone("Las Venturas Airport", 1457.370, 1203.280, -89.084, 1777.390, 1883.110, 110.916)
  2551.     AddZone("Blueberry Acres", -319.676, -220.137, 0.000, 104.534, 293.324, 200.000)
  2552.     AddZone("Palisades", -2994.490, 458.411, -6.1, -2741.070, 1339.610, 200.000)
  2553.     AddZone("North Rock", 2285.370, -768.027, 0.000, 2770.590, -269.740, 200.000)
  2554.     AddZone("Hunter Quarry", 337.244, 710.840, -115.239, 860.554, 1031.710, 203.761)
  2555.     AddZone("Los Santos International", 1382.730, -2730.880, -89.084, 2201.820, -2394.330, 110.916)
  2556.     AddZone("Missionary Hill", -2994.490, -811.276, 0.000, -2178.690, -430.276, 200.000)
  2557.     AddZone("San Fierro Bay", -2616.400, 1659.680, -3.0, -1996.660, 2175.150, 200.000)
  2558.     AddZone("Restricted Area", -91.586, 1655.050, -50.000, 421.234, 2123.010, 250.000)
  2559.     AddZone("Mount Chiliad", -2997.470, -1115.580, -47.917, -2178.690, -971.913, 576.083)
  2560.     AddZone("Mount Chiliad", -2178.690, -1771.660, -47.917, -1936.120, -1250.970, 576.083)
  2561.     AddZone("Easter Bay Airport", -1794.920, -730.118, -3.0, -1213.910, -50.096, 200.000)
  2562.     AddZone("The Panopticon", -947.980, -304.320, -1.1, -319.676, 327.071, 200.000)
  2563.     AddZone("Shady Creeks", -1820.640, -2643.680, -8.0, -1226.780, -1771.660, 200.000)
  2564.     AddZone("Back o Beyond", -1166.970, -2641.190, 0.000, -321.744, -1856.030, 200.000)
  2565.     AddZone("Mount Chiliad", -2994.490, -2189.910, -47.917, -2178.690, -1115.580, 576.083)
  2566.     AddZone("Tierra Robada", -1213.910, 596.349, -242.990, -480.539, 1659.680, 900.000)
  2567.     AddZone("Flint County", -1213.910, -2892.970, -242.990, 44.615, -768.027, 900.000)
  2568.     AddZone("Whetstone", -2997.470, -2892.970, -242.990, -1213.910, -1115.580, 900.000)
  2569.     AddZone("Bone County", -480.539, 596.349, -242.990, 869.461, 2993.870, 900.000)
  2570.     AddZone("Tierra Robada", -2997.470, 1659.680, -242.990, -480.539, 2993.870, 900.000)
  2571.     AddZone("San Fierro", -2997.470, -1115.580, -242.990, -1213.910, 1659.680, 900.000)
  2572.     AddZone("Las Venturas", 869.461, 596.349, -242.990, 2997.060, 2993.870, 900.000)
  2573.     AddZone("Red County", -1213.910, -768.027, -242.990, 2997.060, 596.349, 900.000)
  2574.     AddZone("Los Santos", 44.615, -2892.970, -242.990, 2997.060, -768.027, 900.000)
  2575.     AddCube("A-1", -3000.000000,2750.000000,-500,-2750.000000,3000.000000,500)
  2576.     AddCube("A-2", -2750.000000,2750.000000,-500,-2500.000000,3000.000000,500)
  2577.     AddCube("A-3", -2500.000000,2750.000000,-500,-2250.000000,3000.000000,500)
  2578.     AddCube("A-4", -2250.000000,2750.000000,-500,-2000.000000,3000.000000,500)
  2579.     AddCube("A-5", -2000.000000,2750.000000,-500,-1750.000000,3000.000000,500)
  2580.     AddCube("A-6", -1750.000000,2750.000000,-500,-1500.000000,3000.000000,500)
  2581.     AddCube("A-7", -1500.000000,2750.000000,-500,-1250.000000,3000.000000,500)
  2582.     AddCube("A-8", -1250.000000,2750.000000,-500,-1000.000000,3000.000000,500)
  2583.     AddCube("A-9", -1000.000000,2750.000000,-500,-750.000000,3000.000000,500)
  2584.     AddCube("A-10", -750.000000,2750.000000,-500,-500.000000,3000.000000,500)
  2585.     AddCube("A-11", -500.000000,2750.000000,-500,-250.000000,3000.000000,500)
  2586.     AddCube("A-12", -250.000000,2750.000000,-500,0.000000,3000.000000,500)
  2587.     AddCube("A-13", 0.000000,2750.000000,-500,250.000000,3000.000000,500)
  2588.     AddCube("A-14", 250.000000,2750.000000,-500,500.000000,3000.000000,500)
  2589.     AddCube("A-15", 500.000000,2750.000000,-500,750.000000,3000.000000,500)
  2590.     AddCube("A-16", 750.000000,2750.000000,-500,1000.000000,3000.000000,500)
  2591.     AddCube("A-17", 1000.000000,2750.000000,-500,1250.000000,3000.000000,500)
  2592.     AddCube("A-18", 1250.000000,2750.000000,-500,1500.000000,3000.000000,500)
  2593.     AddCube("A-19", 1500.000000,2750.000000,-500,1750.000000,3000.000000,500)
  2594.     AddCube("A-20", 1750.000000,2750.000000,-500,2000.000000,3000.000000,500)
  2595.     AddCube("A-21", 2000.000000,2750.000000,-500,2250.000000,3000.000000,500)
  2596.     AddCube("A-22", 2250.000000,2750.000000,-500,2500.000000,3000.000000,500)
  2597.     AddCube("A-23", 2500.000000,2750.000000,-500,2750.000000,3000.000000,500)
  2598.     AddCube("A-24", 2750.000000,2750.000000,-500,3000.000000,3000.000000,500)
  2599.     AddCube("Б-1", -3000.000000,2500.000000,-500,-2750.000000,2750.000000,500)
  2600.     AddCube("Б-2", -2750.000000,2500.000000,-500,-2500.000000,2750.000000,500)
  2601.     AddCube("Б-3", -2500.000000,2500.000000,-500,-2250.000000,2750.000000,500)
  2602.     AddCube("Б-4", -2250.000000,2500.000000,-500,-2000.000000,2750.000000,500)
  2603.     AddCube("Б-5", -2000.000000,2500.000000,-500,-1750.000000,2750.000000,500)
  2604.     AddCube("Б-6", -1750.000000,2500.000000,-500,-1500.000000,2750.000000,500)
  2605.     AddCube("Б-7", -1500.000000,2500.000000,-500,-1250.000000,2750.000000,500)
  2606.     AddCube("Б-8", -1250.000000,2500.000000,-500,-1000.000000,2750.000000,500)
  2607.     AddCube("Б-9", -1000.000000,2500.000000,-500,-750.000000,2750.000000,500)
  2608.     AddCube("Б-10", -750.000000,2500.000000,-500,-500.000000,2750.000000,500)
  2609.     AddCube("Б-11", -500.000000,2500.000000,-500,-250.000000,2750.000000,500)
  2610.     AddCube("Б-12", -250.000000,2500.000000,-500,0.000000,2750.000000,500)
  2611.     AddCube("Б-13", 0.000000,2500.000000,-500,250.000000,2750.000000,500)
  2612.     AddCube("Б-14", 250.000000,2500.000000,-500,500.000000,2750.000000,500)
  2613.     AddCube("Б-15", 500.000000,2500.000000,-500,750.000000,2750.000000,500)
  2614.     AddCube("Б-16", 750.000000,2500.000000,-500,1000.000000,2750.000000,500)
  2615.     AddCube("Б-17", 1000.000000,2500.000000,-500,1250.000000,2750.000000,500)
  2616.     AddCube("Б-18", 1250.000000,2500.000000,-500,1500.000000,2750.000000,500)
  2617.     AddCube("Б-19", 1500.000000,2500.000000,-500,1750.000000,2750.000000,500)
  2618.     AddCube("Б-20", 1750.000000,2500.000000,-500,2000.000000,2750.000000,500)
  2619.     AddCube("Б-21", 2000.000000,2500.000000,-500,2250.000000,2750.000000,500)
  2620.     AddCube("Б-22", 2250.000000,2500.000000,-500,2500.000000,2750.000000,500)
  2621.     AddCube("Б-23", 2500.000000,2500.000000,-500,2750.000000,2750.000000,500)
  2622.     AddCube("Б-24", 2750.000000,2500.000000,-500,3000.000000,2750.000000,500)
  2623.     AddCube("В-1", -3000.000000,2250.000000,-500,-2750.000000,2500.000000,500)
  2624.     AddCube("В-2", -2750.000000,2250.000000,-500,-2500.000000,2500.000000,500)
  2625.     AddCube("В-3", -2500.000000,2250.000000,-500,-2250.000000,2500.000000,500)
  2626.     AddCube("В-4", -2250.000000,2250.000000,-500,-2000.000000,2500.000000,500)
  2627.     AddCube("В-5", -2000.000000,2250.000000,-500,-1750.000000,2500.000000,500)
  2628.     AddCube("В-6", -1750.000000,2250.000000,-500,-1500.000000,2500.000000,500)
  2629.     AddCube("В-7", -1500.000000,2250.000000,-500,-1250.000000,2500.000000,500)
  2630.     AddCube("В-8", -1250.000000,2250.000000,-500,-1000.000000,2500.000000,500)
  2631.     AddCube("В-9", -1000.000000,2250.000000,-500,-750.000000,2500.000000,500)
  2632.     AddCube("В-10", -750.000000,2250.000000,-500,-500.000000,2500.000000,500)
  2633.     AddCube("В-11", -500.000000,2250.000000,-500,-250.000000,2500.000000,500)
  2634.     AddCube("В-12", -250.000000,2250.000000,-500,0.000000,2500.000000,500)
  2635.     AddCube("В-13", 0.000000,2250.000000,-500,250.000000,2500.000000,500)
  2636.     AddCube("В-14", 250.000000,2250.000000,-500,500.000000,2500.000000,500)
  2637.     AddCube("В-15", 500.000000,2250.000000,-500,750.000000,2500.000000,500)
  2638.     AddCube("В-16", 750.000000,2250.000000,-500,1000.000000,2500.000000,500)
  2639.     AddCube("В-17", 1000.000000,2250.000000,-500,1250.000000,2500.000000,500)
  2640.     AddCube("В-18", 1250.000000,2250.000000,-500,1500.000000,2500.000000,500)
  2641.     AddCube("В-19", 1500.000000,2250.000000,-500,1750.000000,2500.000000,500)
  2642.     AddCube("В-20", 1750.000000,2250.000000,-500,2000.000000,2500.000000,500)
  2643.     AddCube("В-21", 2000.000000,2250.000000,-500,2250.000000,2500.000000,500)
  2644.     AddCube("В-22", 2250.000000,2250.000000,-500,2500.000000,2500.000000,500)
  2645.     AddCube("В-23", 2500.000000,2250.000000,-500,2750.000000,2500.000000,500)
  2646.     AddCube("В-24", 2750.000000,2250.000000,-500,3000.000000,2500.000000,500)
  2647.     AddCube("Г-1", -3000.000000,2000.000000,-500,-2750.000000,2250.000000,500)
  2648.     AddCube("Г-2", -2750.000000,2000.000000,-500,-2500.000000,2250.000000,500)
  2649.     AddCube("Г-3", -2500.000000,2000.000000,-500,-2250.000000,2250.000000,500)
  2650.     AddCube("Г-4", -2250.000000,2000.000000,-500,-2000.000000,2250.000000,500)
  2651.     AddCube("Г-5", -2000.000000,2000.000000,-500,-1750.000000,2250.000000,500)
  2652.     AddCube("Г-6", -1750.000000,2000.000000,-500,-1500.000000,2250.000000,500)
  2653.     AddCube("Г-7", -1500.000000,2000.000000,-500,-1250.000000,2250.000000,500)
  2654.     AddCube("Г-8", -1250.000000,2000.000000,-500,-1000.000000,2250.000000,500)
  2655.     AddCube("Г-9", -1000.000000,2000.000000,-500,-750.000000,2250.000000,500)
  2656.     AddCube("Г-10", -750.000000,2000.000000,-500,-500.000000,2250.000000,500)
  2657.     AddCube("Г-11", -500.000000,2000.000000,-500,-250.000000,2250.000000,500)
  2658.     AddCube("Г-12", -250.000000,2000.000000,-500,0.000000,2250.000000,500)
  2659.     AddCube("Г-13", 0.000000,2000.000000,-500,250.000000,2250.000000,500)
  2660.     AddCube("Г-14", 250.000000,2000.000000,-500,500.000000,2250.000000,500)
  2661.     AddCube("Г-15", 500.000000,2000.000000,-500,750.000000,2250.000000,500)
  2662.     AddCube("Г-16", 750.000000,2000.000000,-500,1000.000000,2250.000000,500)
  2663.     AddCube("Г-17", 1000.000000,2000.000000,-500,1250.000000,2250.000000,500)
  2664.     AddCube("Г-18", 1250.000000,2000.000000,-500,1500.000000,2250.000000,500)
  2665.     AddCube("Г-19", 1500.000000,2000.000000,-500,1750.000000,2250.000000,500)
  2666.     AddCube("Г-20", 1750.000000,2000.000000,-500,2000.000000,2250.000000,500)
  2667.     AddCube("Г-21", 2000.000000,2000.000000,-500,2250.000000,2250.000000,500)
  2668.     AddCube("Г-22", 2250.000000,2000.000000,-500,2500.000000,2250.000000,500)
  2669.     AddCube("Г-23", 2500.000000,2000.000000,-500,2750.000000,2250.000000,500)
  2670.     AddCube("Г-24", 2750.000000,2000.000000,-500,3000.000000,2250.000000,500)
  2671.     AddCube("Д-1", -3000.000000,1750.000000,-500,-2750.000000,2000.000000,500)
  2672.     AddCube("Д-2", -2750.000000,1750.000000,-500,-2500.000000,2000.000000,500)
  2673.     AddCube("Д-3", -2500.000000,1750.000000,-500,-2250.000000,2000.000000,500)
  2674.     AddCube("Д-4", -2250.000000,1750.000000,-500,-2000.000000,2000.000000,500)
  2675.     AddCube("Д-5", -2000.000000,1750.000000,-500,-1750.000000,2000.000000,500)
  2676.     AddCube("Д-6", -1750.000000,1750.000000,-500,-1500.000000,2000.000000,500)
  2677.     AddCube("Д-7", -1500.000000,1750.000000,-500,-1250.000000,2000.000000,500)
  2678.     AddCube("Д-8", -1250.000000,1750.000000,-500,-1000.000000,2000.000000,500)
  2679.     AddCube("Д-9", -1000.000000,1750.000000,-500,-750.000000,2000.000000,500)
  2680.     AddCube("Д-10", -750.000000,1750.000000,-500,-500.000000,2000.000000,500)
  2681.     AddCube("Д-11", -500.000000,1750.000000,-500,-250.000000,2000.000000,500)
  2682.     AddCube("Д-12", -250.000000,1750.000000,-500,0.000000,2000.000000,500)
  2683.     AddCube("Д-13", 0.000000,1750.000000,-500,250.000000,2000.000000,500)
  2684.     AddCube("Д-14", 250.000000,1750.000000,-500,500.000000,2000.000000,500)
  2685.     AddCube("Д-15", 500.000000,1750.000000,-500,750.000000,2000.000000,500)
  2686.     AddCube("Д-16", 750.000000,1750.000000,-500,1000.000000,2000.000000,500)
  2687.     AddCube("Д-17", 1000.000000,1750.000000,-500,1250.000000,2000.000000,500)
  2688.     AddCube("Д-18", 1250.000000,1750.000000,-500,1500.000000,2000.000000,500)
  2689.     AddCube("Д-19", 1500.000000,1750.000000,-500,1750.000000,2000.000000,500)
  2690.     AddCube("Д-20", 1750.000000,1750.000000,-500,2000.000000,2000.000000,500)
  2691.     AddCube("Д-21", 2000.000000,1750.000000,-500,2250.000000,2000.000000,500)
  2692.     AddCube("Д-22", 2250.000000,1750.000000,-500,2500.000000,2000.000000,500)
  2693.     AddCube("Д-23", 2500.000000,1750.000000,-500,2750.000000,2000.000000,500)
  2694.     AddCube("Д-24", 2750.000000,1750.000000,-500,3000.000000,2000.000000,500)
  2695.     AddCube("Ж-1", -3000.000000,1500.000000,-500,-2750.000000,1750.000000,500)
  2696.     AddCube("Ж-2", -2750.000000,1500.000000,-500,-2500.000000,1750.000000,500)
  2697.     AddCube("Ж-3", -2500.000000,1500.000000,-500,-2250.000000,1750.000000,500)
  2698.     AddCube("Ж-4", -2250.000000,1500.000000,-500,-2000.000000,1750.000000,500)
  2699.     AddCube("Ж-5", -2000.000000,1500.000000,-500,-1750.000000,1750.000000,500)
  2700.     AddCube("Ж-6", -1750.000000,1500.000000,-500,-1500.000000,1750.000000,500)
  2701.     AddCube("Ж-7", -1500.000000,1500.000000,-500,-1250.000000,1750.000000,500)
  2702.     AddCube("Ж-8", -1250.000000,1500.000000,-500,-1000.000000,1750.000000,500)
  2703.     AddCube("Ж-9", -1000.000000,1500.000000,-500,-750.000000,1750.000000,500)
  2704.     AddCube("Ж-10", -750.000000,1500.000000,-500,-500.000000,1750.000000,500)
  2705.     AddCube("Ж-11", -500.000000,1500.000000,-500,-250.000000,1750.000000,500)
  2706.     AddCube("Ж-12", -250.000000,1500.000000,-500,0.000000,1750.000000,500)
  2707.     AddCube("Ж-13", 0.000000,1500.000000,-500,250.000000,1750.000000,500)
  2708.     AddCube("Ж-14", 250.000000,1500.000000,-500,500.000000,1750.000000,500)
  2709.     AddCube("Ж-15", 500.000000,1500.000000,-500,750.000000,1750.000000,500)
  2710.     AddCube("Ж-16", 750.000000,1500.000000,-500,1000.000000,1750.000000,500)
  2711.     AddCube("Ж-17", 1000.000000,1500.000000,-500,1250.000000,1750.000000,500)
  2712.     AddCube("Ж-18", 1250.000000,1500.000000,-500,1500.000000,1750.000000,500)
  2713.     AddCube("Ж-19", 1500.000000,1500.000000,-500,1750.000000,1750.000000,500)
  2714.     AddCube("Ж-20", 1750.000000,1500.000000,-500,2000.000000,1750.000000,500)
  2715.     AddCube("Ж-21", 2000.000000,1500.000000,-500,2250.000000,1750.000000,500)
  2716.     AddCube("Ж-22", 2250.000000,1500.000000,-500,2500.000000,1750.000000,500)
  2717.     AddCube("Ж-23", 2500.000000,1500.000000,-500,2750.000000,1750.000000,500)
  2718.     AddCube("Ж-24", 2750.000000,1500.000000,-500,3000.000000,1750.000000,500)
  2719.     AddCube("З-1", -3000.000000,1250.000000,-500,-2750.000000,1500.000000,500)
  2720.     AddCube("З-2", -2750.000000,1250.000000,-500,-2500.000000,1500.000000,500)
  2721.     AddCube("З-3", -2500.000000,1250.000000,-500,-2250.000000,1500.000000,500)
  2722.     AddCube("З-4", -2250.000000,1250.000000,-500,-2000.000000,1500.000000,500)
  2723.     AddCube("З-5", -2000.000000,1250.000000,-500,-1750.000000,1500.000000,500)
  2724.     AddCube("З-6", -1750.000000,1250.000000,-500,-1500.000000,1500.000000,500)
  2725.     AddCube("З-7", -1500.000000,1250.000000,-500,-1250.000000,1500.000000,500)
  2726.     AddCube("З-8", -1250.000000,1250.000000,-500,-1000.000000,1500.000000,500)
  2727.     AddCube("З-9", -1000.000000,1250.000000,-500,-750.000000,1500.000000,500)
  2728.     AddCube("З-10", -750.000000,1250.000000,-500,-500.000000,1500.000000,500)
  2729.     AddCube("З-11", -500.000000,1250.000000,-500,-250.000000,1500.000000,500)
  2730.     AddCube("З-12", -250.000000,1250.000000,-500,0.000000,1500.000000,500)
  2731.     AddCube("З-13", 0.000000,1250.000000,-500,250.000000,1500.000000,500)
  2732.     AddCube("З-14", 250.000000,1250.000000,-500,500.000000,1500.000000,500)
  2733.     AddCube("З-15", 500.000000,1250.000000,-500,750.000000,1500.000000,500)
  2734.     AddCube("З-16", 750.000000,1250.000000,-500,1000.000000,1500.000000,500)
  2735.     AddCube("З-17", 1000.000000,1250.000000,-500,1250.000000,1500.000000,500)
  2736.     AddCube("З-18", 1250.000000,1250.000000,-500,1500.000000,1500.000000,500)
  2737.     AddCube("З-19", 1500.000000,1250.000000,-500,1750.000000,1500.000000,500)
  2738.     AddCube("З-20", 1750.000000,1250.000000,-500,2000.000000,1500.000000,500)
  2739.     AddCube("З-21", 2000.000000,1250.000000,-500,2250.000000,1500.000000,500)
  2740.     AddCube("З-22", 2250.000000,1250.000000,-500,2500.000000,1500.000000,500)
  2741.     AddCube("З-23", 2500.000000,1250.000000,-500,2750.000000,1500.000000,500)
  2742.     AddCube("З-24", 2750.000000,1250.000000,-500,3000.000000,1500.000000,500)
  2743.     AddCube("И-1", -3000.000000,1000.000000,-500,-2750.000000,1250.000000,500)
  2744.     AddCube("И-2", -2750.000000,1000.000000,-500,-2500.000000,1250.000000,500)
  2745.     AddCube("И-3", -2500.000000,1000.000000,-500,-2250.000000,1250.000000,500)
  2746.     AddCube("И-4", -2250.000000,1000.000000,-500,-2000.000000,1250.000000,500)
  2747.     AddCube("И-5", -2000.000000,1000.000000,-500,-1750.000000,1250.000000,500)
  2748.     AddCube("И-6", -1750.000000,1000.000000,-500,-1500.000000,1250.000000,500)
  2749.     AddCube("И-7", -1500.000000,1000.000000,-500,-1250.000000,1250.000000,500)
  2750.     AddCube("И-8", -1250.000000,1000.000000,-500,-1000.000000,1250.000000,500)
  2751.     AddCube("И-9", -1000.000000,1000.000000,-500,-750.000000,1250.000000,500)
  2752.     AddCube("И-10", -750.000000,1000.000000,-500,-500.000000,1250.000000,500)
  2753.     AddCube("И-11", -500.000000,1000.000000,-500,-250.000000,1250.000000,500)
  2754.     AddCube("И-12", -250.000000,1000.000000,-500,0.000000,1250.000000,500)
  2755.     AddCube("И-13", 0.000000,1000.000000,-500,250.000000,1250.000000,500)
  2756.     AddCube("И-14", 250.000000,1000.000000,-500,500.000000,1250.000000,500)
  2757.     AddCube("И-15", 500.000000,1000.000000,-500,750.000000,1250.000000,500)
  2758.     AddCube("И-16", 750.000000,1000.000000,-500,1000.000000,1250.000000,500)
  2759.     AddCube("И-17", 1000.000000,1000.000000,-500,1250.000000,1250.000000,500)
  2760.     AddCube("И-18", 1250.000000,1000.000000,-500,1500.000000,1250.000000,500)
  2761.     AddCube("И-19", 1500.000000,1000.000000,-500,1750.000000,1250.000000,500)
  2762.     AddCube("И-20", 1750.000000,1000.000000,-500,2000.000000,1250.000000,500)
  2763.     AddCube("И-21", 2000.000000,1000.000000,-500,2250.000000,1250.000000,500)
  2764.     AddCube("И-22", 2250.000000,1000.000000,-500,2500.000000,1250.000000,500)
  2765.     AddCube("И-23", 2500.000000,1000.000000,-500,2750.000000,1250.000000,500)
  2766.     AddCube("И-24", 2750.000000,1000.000000,-500,3000.000000,1250.000000,500)
  2767.     AddCube("К-1", -3000.000000,750.000000,-500,-2750.000000,1000.000000,500)
  2768.     AddCube("К-2", -2750.000000,750.000000,-500,-2500.000000,1000.000000,500)
  2769.     AddCube("К-3", -2500.000000,750.000000,-500,-2250.000000,1000.000000,500)
  2770.     AddCube("К-4", -2250.000000,750.000000,-500,-2000.000000,1000.000000,500)
  2771.     AddCube("К-5", -2000.000000,750.000000,-500,-1750.000000,1000.000000,500)
  2772.     AddCube("К-6", -1750.000000,750.000000,-500,-1500.000000,1000.000000,500)
  2773.     AddCube("К-7", -1500.000000,750.000000,-500,-1250.000000,1000.000000,500)
  2774.     AddCube("К-8", -1250.000000,750.000000,-500,-1000.000000,1000.000000,500)
  2775.     AddCube("К-9", -1000.000000,750.000000,-500,-750.000000,1000.000000,500)
  2776.     AddCube("К-10", -750.000000,750.000000,-500,-500.000000,1000.000000,500)
  2777.     AddCube("К-11", -500.000000,750.000000,-500,-250.000000,1000.000000,500)
  2778.     AddCube("К-12", -250.000000,750.000000,-500,0.000000,1000.000000,500)
  2779.     AddCube("К-13", 0.000000,750.000000,-500,250.000000,1000.000000,500)
  2780.     AddCube("К-14", 250.000000,750.000000,-500,500.000000,1000.000000,500)
  2781.     AddCube("К-15", 500.000000,750.000000,-500,750.000000,1000.000000,500)
  2782.     AddCube("К-16", 750.000000,750.000000,-500,1000.000000,1000.000000,500)
  2783.     AddCube("К-17", 1000.000000,750.000000,-500,1250.000000,1000.000000,500)
  2784.     AddCube("К-18", 1250.000000,750.000000,-500,1500.000000,1000.000000,500)
  2785.     AddCube("К-19", 1500.000000,750.000000,-500,1750.000000,1000.000000,500)
  2786.     AddCube("К-20", 1750.000000,750.000000,-500,2000.000000,1000.000000,500)
  2787.     AddCube("К-21", 2000.000000,750.000000,-500,2250.000000,1000.000000,500)
  2788.     AddCube("К-22", 2250.000000,750.000000,-500,2500.000000,1000.000000,500)
  2789.     AddCube("К-23", 2500.000000,750.000000,-500,2750.000000,1000.000000,500)
  2790.     AddCube("К-24", 2750.000000,750.000000,-500,3000.000000,1000.000000,500)
  2791.     AddCube("Л-1", -3000.000000,500.000000,-500,-2750.000000,750.000000,500)
  2792.     AddCube("Л-2", -2750.000000,500.000000,-500,-2500.000000,750.000000,500)
  2793.     AddCube("Л-3", -2500.000000,500.000000,-500,-2250.000000,750.000000,500)
  2794.     AddCube("Л-4", -2250.000000,500.000000,-500,-2000.000000,750.000000,500)
  2795.     AddCube("Л-5", -2000.000000,500.000000,-500,-1750.000000,750.000000,500)
  2796.     AddCube("Л-6", -1750.000000,500.000000,-500,-1500.000000,750.000000,500)
  2797.     AddCube("Л-7", -1500.000000,500.000000,-500,-1250.000000,750.000000,500)
  2798.     AddCube("Л-8", -1250.000000,500.000000,-500,-1000.000000,750.000000,500)
  2799.     AddCube("Л-9", -1000.000000,500.000000,-500,-750.000000,750.000000,500)
  2800.     AddCube("Л-10", -750.000000,500.000000,-500,-500.000000,750.000000,500)
  2801.     AddCube("Л-11", -500.000000,500.000000,-500,-250.000000,750.000000,500)
  2802.     AddCube("Л-12", -250.000000,500.000000,-500,0.000000,750.000000,500)
  2803.     AddCube("Л-13", 0.000000,500.000000,-500,250.000000,750.000000,500)
  2804.     AddCube("Л-14", 250.000000,500.000000,-500,500.000000,750.000000,500)
  2805.     AddCube("Л-15", 500.000000,500.000000,-500,750.000000,750.000000,500)
  2806.     AddCube("Л-16", 750.000000,500.000000,-500,1000.000000,750.000000,500)
  2807.     AddCube("Л-17", 1000.000000,500.000000,-500,1250.000000,750.000000,500)
  2808.     AddCube("Л-18", 1250.000000,500.000000,-500,1500.000000,750.000000,500)
  2809.     AddCube("Л-19", 1500.000000,500.000000,-500,1750.000000,750.000000,500)
  2810.     AddCube("Л-20", 1750.000000,500.000000,-500,2000.000000,750.000000,500)
  2811.     AddCube("Л-21", 2000.000000,500.000000,-500,2250.000000,750.000000,500)
  2812.     AddCube("Л-22", 2250.000000,500.000000,-500,2500.000000,750.000000,500)
  2813.     AddCube("Л-23", 2500.000000,500.000000,-500,2750.000000,750.000000,500)
  2814.     AddCube("Л-24", 2750.000000,500.000000,-500,3000.000000,750.000000,500)
  2815.     AddCube("М-1", -3000.000000,250.000000,-500,-2750.000000,500.000000,500)
  2816.     AddCube("М-2", -2750.000000,250.000000,-500,-2500.000000,500.000000,500)
  2817.     AddCube("М-3", -2500.000000,250.000000,-500,-2250.000000,500.000000,500)
  2818.     AddCube("М-4", -2250.000000,250.000000,-500,-2000.000000,500.000000,500)
  2819.     AddCube("М-5", -2000.000000,250.000000,-500,-1750.000000,500.000000,500)
  2820.     AddCube("М-6", -1750.000000,250.000000,-500,-1500.000000,500.000000,500)
  2821.     AddCube("М-7", -1500.000000,250.000000,-500,-1250.000000,500.000000,500)
  2822.     AddCube("М-8", -1250.000000,250.000000,-500,-1000.000000,500.000000,500)
  2823.     AddCube("М-9", -1000.000000,250.000000,-500,-750.000000,500.000000,500)
  2824.     AddCube("М-10", -750.000000,250.000000,-500,-500.000000,500.000000,500)
  2825.     AddCube("М-11", -500.000000,250.000000,-500,-250.000000,500.000000,500)
  2826.     AddCube("М-12", -250.000000,250.000000,-500,0.000000,500.000000,500)
  2827.     AddCube("М-13", 0.000000,250.000000,-500,250.000000,500.000000,500)
  2828.     AddCube("М-14", 250.000000,250.000000,-500,500.000000,500.000000,500)
  2829.     AddCube("М-15", 500.000000,250.000000,-500,750.000000,500.000000,500)
  2830.     AddCube("М-16", 750.000000,250.000000,-500,1000.000000,500.000000,500)
  2831.     AddCube("М-17", 1000.000000,250.000000,-500,1250.000000,500.000000,500)
  2832.     AddCube("М-18", 1250.000000,250.000000,-500,1500.000000,500.000000,500)
  2833.     AddCube("М-19", 1500.000000,250.000000,-500,1750.000000,500.000000,500)
  2834.     AddCube("М-20", 1750.000000,250.000000,-500,2000.000000,500.000000,500)
  2835.     AddCube("М-21", 2000.000000,250.000000,-500,2250.000000,500.000000,500)
  2836.     AddCube("М-22", 2250.000000,250.000000,-500,2500.000000,500.000000,500)
  2837.     AddCube("М-23", 2500.000000,250.000000,-500,2750.000000,500.000000,500)
  2838.     AddCube("М-24", 2750.000000,250.000000,-500,3000.000000,500.000000,500)
  2839.     AddCube("Н-1", -3000.000000,0.000000,-500,-2750.000000,250.000000,500)
  2840.     AddCube("Н-2", -2750.000000,0.000000,-500,-2500.000000,250.000000,500)
  2841.     AddCube("Н-3", -2500.000000,0.000000,-500,-2250.000000,250.000000,500)
  2842.     AddCube("Н-4", -2250.000000,0.000000,-500,-2000.000000,250.000000,500)
  2843.     AddCube("Н-5", -2000.000000,0.000000,-500,-1750.000000,250.000000,500)
  2844.     AddCube("Н-6", -1750.000000,0.000000,-500,-1500.000000,250.000000,500)
  2845.     AddCube("Н-7", -1500.000000,0.000000,-500,-1250.000000,250.000000,500)
  2846.     AddCube("Н-8", -1250.000000,0.000000,-500,-1000.000000,250.000000,500)
  2847.     AddCube("Н-9", -1000.000000,0.000000,-500,-750.000000,250.000000,500)
  2848.     AddCube("Н-10", -750.000000,0.000000,-500,-500.000000,250.000000,500)
  2849.     AddCube("Н-11", -500.000000,0.000000,-500,-250.000000,250.000000,500)
  2850.     AddCube("Н-12", -250.000000,0.000000,-500,0.000000,250.000000,500)
  2851.     AddCube("Н-13", 0.000000,0.000000,-500,250.000000,250.000000,500)
  2852.     AddCube("Н-14", 250.000000,0.000000,-500,500.000000,250.000000,500)
  2853.     AddCube("Н-15", 500.000000,0.000000,-500,750.000000,250.000000,500)
  2854.     AddCube("Н-16", 750.000000,0.000000,-500,1000.000000,250.000000,500)
  2855.     AddCube("Н-17", 1000.000000,0.000000,-500,1250.000000,250.000000,500)
  2856.     AddCube("Н-18", 1250.000000,0.000000,-500,1500.000000,250.000000,500)
  2857.     AddCube("Н-19", 1500.000000,0.000000,-500,1750.000000,250.000000,500)
  2858.     AddCube("Н-20", 1750.000000,0.000000,-500,2000.000000,250.000000,500)
  2859.     AddCube("Н-21", 2000.000000,0.000000,-500,2250.000000,250.000000,500)
  2860.     AddCube("Н-22", 2250.000000,0.000000,-500,2500.000000,250.000000,500)
  2861.     AddCube("Н-23", 2500.000000,0.000000,-500,2750.000000,250.000000,500)
  2862.     AddCube("Н-24", 2750.000000,0.000000,-500,3000.000000,250.000000,500)
  2863.     AddCube("О-1", -3000.000000,-250.000000,-500,-2750.000000,0.000000,500)
  2864.     AddCube("О-2", -2750.000000,-250.000000,-500,-2500.000000,0.000000,500)
  2865.     AddCube("О-3", -2500.000000,-250.000000,-500,-2250.000000,0.000000,500)
  2866.     AddCube("О-4", -2250.000000,-250.000000,-500,-2000.000000,0.000000,500)
  2867.     AddCube("О-5", -2000.000000,-250.000000,-500,-1750.000000,0.000000,500)
  2868.     AddCube("О-6", -1750.000000,-250.000000,-500,-1500.000000,0.000000,500)
  2869.     AddCube("О-7", -1500.000000,-250.000000,-500,-1250.000000,0.000000,500)
  2870.     AddCube("О-8", -1250.000000,-250.000000,-500,-1000.000000,0.000000,500)
  2871.     AddCube("О-9", -1000.000000,-250.000000,-500,-750.000000,0.000000,500)
  2872.     AddCube("О-10", -750.000000,-250.000000,-500,-500.000000,0.000000,500)
  2873.     AddCube("О-11", -500.000000,-250.000000,-500,-250.000000,0.000000,500)
  2874.     AddCube("О-12", -250.000000,-250.000000,-500,0.000000,0.000000,500)
  2875.     AddCube("О-13", 0.000000,-250.000000,-500,250.000000,0.000000,500)
  2876.     AddCube("О-14", 250.000000,-250.000000,-500,500.000000,0.000000,500)
  2877.     AddCube("О-15", 500.000000,-250.000000,-500,750.000000,0.000000,500)
  2878.     AddCube("О-16", 750.000000,-250.000000,-500,1000.000000,0.000000,500)
  2879.     AddCube("О-17", 1000.000000,-250.000000,-500,1250.000000,0.000000,500)
  2880.     AddCube("О-18", 1250.000000,-250.000000,-500,1500.000000,0.000000,500)
  2881.     AddCube("О-19", 1500.000000,-250.000000,-500,1750.000000,0.000000,500)
  2882.     AddCube("О-20", 1750.000000,-250.000000,-500,2000.000000,0.000000,500)
  2883.     AddCube("О-21", 2000.000000,-250.000000,-500,2250.000000,0.000000,500)
  2884.     AddCube("О-22", 2250.000000,-250.000000,-500,2500.000000,0.000000,500)
  2885.     AddCube("О-23", 2500.000000,-250.000000,-500,2750.000000,0.000000,500)
  2886.     AddCube("О-24", 2750.000000,-250.000000,-500,3000.000000,0.000000,500)
  2887.     AddCube("П-1", -3000.000000,-500.000000,-500,-2750.000000,-250.000000,500)
  2888.     AddCube("П-2", -2750.000000,-500.000000,-500,-2500.000000,-250.000000,500)
  2889.     AddCube("П-3", -2500.000000,-500.000000,-500,-2250.000000,-250.000000,500)
  2890.     AddCube("П-4", -2250.000000,-500.000000,-500,-2000.000000,-250.000000,500)
  2891.     AddCube("П-5", -2000.000000,-500.000000,-500,-1750.000000,-250.000000,500)
  2892.     AddCube("П-6", -1750.000000,-500.000000,-500,-1500.000000,-250.000000,500)
  2893.     AddCube("П-7", -1500.000000,-500.000000,-500,-1250.000000,-250.000000,500)
  2894.     AddCube("П-8", -1250.000000,-500.000000,-500,-1000.000000,-250.000000,500)
  2895.     AddCube("П-9", -1000.000000,-500.000000,-500,-750.000000,-250.000000,500)
  2896.     AddCube("П-10", -750.000000,-500.000000,-500,-500.000000,-250.000000,500)
  2897.     AddCube("П-11", -500.000000,-500.000000,-500,-250.000000,-250.000000,500)
  2898.     AddCube("П-12", -250.000000,-500.000000,-500,0.000000,-250.000000,500)
  2899.     AddCube("П-13", 0.000000,-500.000000,-500,250.000000,-250.000000,500)
  2900.     AddCube("П-14", 250.000000,-500.000000,-500,500.000000,-250.000000,500)
  2901.     AddCube("П-15", 500.000000,-500.000000,-500,750.000000,-250.000000,500)
  2902.     AddCube("П-16", 750.000000,-500.000000,-500,1000.000000,-250.000000,500)
  2903.     AddCube("П-17", 1000.000000,-500.000000,-500,1250.000000,-250.000000,500)
  2904.     AddCube("П-18", 1250.000000,-500.000000,-500,1500.000000,-250.000000,500)
  2905.     AddCube("П-19", 1500.000000,-500.000000,-500,1750.000000,-250.000000,500)
  2906.     AddCube("П-20", 1750.000000,-500.000000,-500,2000.000000,-250.000000,500)
  2907.     AddCube("П-21", 2000.000000,-500.000000,-500,2250.000000,-250.000000,500)
  2908.     AddCube("П-22", 2250.000000,-500.000000,-500,2500.000000,-250.000000,500)
  2909.     AddCube("П-23", 2500.000000,-500.000000,-500,2750.000000,-250.000000,500)
  2910.     AddCube("П-24", 2750.000000,-500.000000,-500,3000.000000,-250.000000,500)
  2911.     AddCube("Р-1", -3000.000000,-750.000000,-500,-2750.000000,-500.000000,500)
  2912.     AddCube("Р-2", -2750.000000,-750.000000,-500,-2500.000000,-500.000000,500)
  2913.     AddCube("Р-3", -2500.000000,-750.000000,-500,-2250.000000,-500.000000,500)
  2914.     AddCube("Р-4", -2250.000000,-750.000000,-500,-2000.000000,-500.000000,500)
  2915.     AddCube("Р-5", -2000.000000,-750.000000,-500,-1750.000000,-500.000000,500)
  2916.     AddCube("Р-6", -1750.000000,-750.000000,-500,-1500.000000,-500.000000,500)
  2917.     AddCube("Р-7", -1500.000000,-750.000000,-500,-1250.000000,-500.000000,500)
  2918.     AddCube("Р-8", -1250.000000,-750.000000,-500,-1000.000000,-500.000000,500)
  2919.     AddCube("Р-9", -1000.000000,-750.000000,-500,-750.000000,-500.000000,500)
  2920.     AddCube("Р-10", -750.000000,-750.000000,-500,-500.000000,-500.000000,500)
  2921.     AddCube("Р-11", -500.000000,-750.000000,-500,-250.000000,-500.000000,500)
  2922.     AddCube("Р-12", -250.000000,-750.000000,-500,0.000000,-500.000000,500)
  2923.     AddCube("Р-13", 0.000000,-750.000000,-500,250.000000,-500.000000,500)
  2924.     AddCube("Р-14", 250.000000,-750.000000,-500,500.000000,-500.000000,500)
  2925.     AddCube("Р-15", 500.000000,-750.000000,-500,750.000000,-500.000000,500)
  2926.     AddCube("Р-16", 750.000000,-750.000000,-500,1000.000000,-500.000000,500)
  2927.     AddCube("Р-17", 1000.000000,-750.000000,-500,1250.000000,-500.000000,500)
  2928.     AddCube("Р-18", 1250.000000,-750.000000,-500,1500.000000,-500.000000,500)
  2929.     AddCube("Р-19", 1500.000000,-750.000000,-500,1750.000000,-500.000000,500)
  2930.     AddCube("Р-20", 1750.000000,-750.000000,-500,2000.000000,-500.000000,500)
  2931.     AddCube("Р-21", 2000.000000,-750.000000,-500,2250.000000,-500.000000,500)
  2932.     AddCube("Р-22", 2250.000000,-750.000000,-500,2500.000000,-500.000000,500)
  2933.     AddCube("Р-23", 2500.000000,-750.000000,-500,2750.000000,-500.000000,500)
  2934.     AddCube("Р-24", 2750.000000,-750.000000,-500,3000.000000,-500.000000,500)
  2935.     AddCube("С-1", -3000.000000,-1000.000000,-500,-2750.000000,-750.000000,500)
  2936.     AddCube("С-2", -2750.000000,-1000.000000,-500,-2500.000000,-750.000000,500)
  2937.     AddCube("С-3", -2500.000000,-1000.000000,-500,-2250.000000,-750.000000,500)
  2938.     AddCube("С-4", -2250.000000,-1000.000000,-500,-2000.000000,-750.000000,500)
  2939.     AddCube("С-5", -2000.000000,-1000.000000,-500,-1750.000000,-750.000000,500)
  2940.     AddCube("С-6", -1750.000000,-1000.000000,-500,-1500.000000,-750.000000,500)
  2941.     AddCube("С-7", -1500.000000,-1000.000000,-500,-1250.000000,-750.000000,500)
  2942.     AddCube("С-8", -1250.000000,-1000.000000,-500,-1000.000000,-750.000000,500)
  2943.     AddCube("С-9", -1000.000000,-1000.000000,-500,-750.000000,-750.000000,500)
  2944.     AddCube("С-10", -750.000000,-1000.000000,-500,-500.000000,-750.000000,500)
  2945.     AddCube("С-11", -500.000000,-1000.000000,-500,-250.000000,-750.000000,500)
  2946.     AddCube("С-12", -250.000000,-1000.000000,-500,0.000000,-750.000000,500)
  2947.     AddCube("С-13", 0.000000,-1000.000000,-500,250.000000,-750.000000,500)
  2948.     AddCube("С-14", 250.000000,-1000.000000,-500,500.000000,-750.000000,500)
  2949.     AddCube("С-15", 500.000000,-1000.000000,-500,750.000000,-750.000000,500)
  2950.     AddCube("С-16", 750.000000,-1000.000000,-500,1000.000000,-750.000000,500)
  2951.     AddCube("С-17", 1000.000000,-1000.000000,-500,1250.000000,-750.000000,500)
  2952.     AddCube("С-18", 1250.000000,-1000.000000,-500,1500.000000,-750.000000,500)
  2953.     AddCube("С-19", 1500.000000,-1000.000000,-500,1750.000000,-750.000000,500)
  2954.     AddCube("С-20", 1750.000000,-1000.000000,-500,2000.000000,-750.000000,500)
  2955.     AddCube("С-21", 2000.000000,-1000.000000,-500,2250.000000,-750.000000,500)
  2956.     AddCube("С-22", 2250.000000,-1000.000000,-500,2500.000000,-750.000000,500)
  2957.     AddCube("С-23", 2500.000000,-1000.000000,-500,2750.000000,-750.000000,500)
  2958.     AddCube("С-24", 2750.000000,-1000.000000,-500,3000.000000,-750.000000,500)
  2959.     AddCube("Т-1", -3000.000000,-1250.000000,-500,-2750.000000,-1000.000000,500)
  2960.     AddCube("Т-2", -2750.000000,-1250.000000,-500,-2500.000000,-1000.000000,500)
  2961.     AddCube("Т-3", -2500.000000,-1250.000000,-500,-2250.000000,-1000.000000,500)
  2962.     AddCube("Т-4", -2250.000000,-1250.000000,-500,-2000.000000,-1000.000000,500)
  2963.     AddCube("Т-5", -2000.000000,-1250.000000,-500,-1750.000000,-1000.000000,500)
  2964.     AddCube("Т-6", -1750.000000,-1250.000000,-500,-1500.000000,-1000.000000,500)
  2965.     AddCube("Т-7", -1500.000000,-1250.000000,-500,-1250.000000,-1000.000000,500)
  2966.     AddCube("Т-8", -1250.000000,-1250.000000,-500,-1000.000000,-1000.000000,500)
  2967.     AddCube("Т-9", -1000.000000,-1250.000000,-500,-750.000000,-1000.000000,500)
  2968.     AddCube("Т-10", -750.000000,-1250.000000,-500,-500.000000,-1000.000000,500)
  2969.     AddCube("Т-11", -500.000000,-1250.000000,-500,-250.000000,-1000.000000,500)
  2970.     AddCube("Т-12", -250.000000,-1250.000000,-500,0.000000,-1000.000000,500)
  2971.     AddCube("Т-13", 0.000000,-1250.000000,-500,250.000000,-1000.000000,500)
  2972.     AddCube("Т-14", 250.000000,-1250.000000,-500,500.000000,-1000.000000,500)
  2973.     AddCube("Т-15", 500.000000,-1250.000000,-500,750.000000,-1000.000000,500)
  2974.     AddCube("Т-16", 750.000000,-1250.000000,-500,1000.000000,-1000.000000,500)
  2975.     AddCube("Т-17", 1000.000000,-1250.000000,-500,1250.000000,-1000.000000,500)
  2976.     AddCube("Т-18", 1250.000000,-1250.000000,-500,1500.000000,-1000.000000,500)
  2977.     AddCube("Т-19", 1500.000000,-1250.000000,-500,1750.000000,-1000.000000,500)
  2978.     AddCube("Т-20", 1750.000000,-1250.000000,-500,2000.000000,-1000.000000,500)
  2979.     AddCube("Т-21", 2000.000000,-1250.000000,-500,2250.000000,-1000.000000,500)
  2980.     AddCube("Т-22", 2250.000000,-1250.000000,-500,2500.000000,-1000.000000,500)
  2981.     AddCube("Т-23", 2500.000000,-1250.000000,-500,2750.000000,-1000.000000,500)
  2982.     AddCube("Т-24", 2750.000000,-1250.000000,-500,3000.000000,-1000.000000,500)
  2983.     AddCube("У-1", -3000.000000,-1500.000000,-500,-2750.000000,-1250.000000,500)
  2984.     AddCube("У-2", -2750.000000,-1500.000000,-500,-2500.000000,-1250.000000,500)
  2985.     AddCube("У-3", -2500.000000,-1500.000000,-500,-2250.000000,-1250.000000,500)
  2986.     AddCube("У-4", -2250.000000,-1500.000000,-500,-2000.000000,-1250.000000,500)
  2987.     AddCube("У-5", -2000.000000,-1500.000000,-500,-1750.000000,-1250.000000,500)
  2988.     AddCube("У-6", -1750.000000,-1500.000000,-500,-1500.000000,-1250.000000,500)
  2989.     AddCube("У-7", -1500.000000,-1500.000000,-500,-1250.000000,-1250.000000,500)
  2990.     AddCube("У-8", -1250.000000,-1500.000000,-500,-1000.000000,-1250.000000,500)
  2991.     AddCube("У-9", -1000.000000,-1500.000000,-500,-750.000000,-1250.000000,500)
  2992.     AddCube("У-10", -750.000000,-1500.000000,-500,-500.000000,-1250.000000,500)
  2993.     AddCube("У-11", -500.000000,-1500.000000,-500,-250.000000,-1250.000000,500)
  2994.     AddCube("У-12", -250.000000,-1500.000000,-500,0.000000,-1250.000000,500)
  2995.     AddCube("У-13", 0.000000,-1500.000000,-500,250.000000,-1250.000000,500)
  2996.     AddCube("У-14", 250.000000,-1500.000000,-500,500.000000,-1250.000000,500)
  2997.     AddCube("У-15", 500.000000,-1500.000000,-500,750.000000,-1250.000000,500)
  2998.     AddCube("У-16", 750.000000,-1500.000000,-500,1000.000000,-1250.000000,500)
  2999.     AddCube("У-17", 1000.000000,-1500.000000,-500,1250.000000,-1250.000000,500)
  3000.     AddCube("У-18", 1250.000000,-1500.000000,-500,1500.000000,-1250.000000,500)
  3001.     AddCube("У-19", 1500.000000,-1500.000000,-500,1750.000000,-1250.000000,500)
  3002.     AddCube("У-20", 1750.000000,-1500.000000,-500,2000.000000,-1250.000000,500)
  3003.     AddCube("У-21", 2000.000000,-1500.000000,-500,2250.000000,-1250.000000,500)
  3004.     AddCube("У-22", 2250.000000,-1500.000000,-500,2500.000000,-1250.000000,500)
  3005.     AddCube("У-23", 2500.000000,-1500.000000,-500,2750.000000,-1250.000000,500)
  3006.     AddCube("У-24", 2750.000000,-1500.000000,-500,3000.000000,-1250.000000,500)
  3007.     AddCube("Ф-1", -3000.000000,-1750.000000,-500,-2750.000000,-1500.000000,500)
  3008.     AddCube("Ф-2", -2750.000000,-1750.000000,-500,-2500.000000,-1500.000000,500)
  3009.     AddCube("Ф-3", -2500.000000,-1750.000000,-500,-2250.000000,-1500.000000,500)
  3010.     AddCube("Ф-4", -2250.000000,-1750.000000,-500,-2000.000000,-1500.000000,500)
  3011.     AddCube("Ф-5", -2000.000000,-1750.000000,-500,-1750.000000,-1500.000000,500)
  3012.     AddCube("Ф-6", -1750.000000,-1750.000000,-500,-1500.000000,-1500.000000,500)
  3013.     AddCube("Ф-7", -1500.000000,-1750.000000,-500,-1250.000000,-1500.000000,500)
  3014.     AddCube("Ф-8", -1250.000000,-1750.000000,-500,-1000.000000,-1500.000000,500)
  3015.     AddCube("Ф-9", -1000.000000,-1750.000000,-500,-750.000000,-1500.000000,500)
  3016.     AddCube("Ф-10", -750.000000,-1750.000000,-500,-500.000000,-1500.000000,500)
  3017.     AddCube("Ф-11", -500.000000,-1750.000000,-500,-250.000000,-1500.000000,500)
  3018.     AddCube("Ф-12", -250.000000,-1750.000000,-500,0.000000,-1500.000000,500)
  3019.     AddCube("Ф-13", 0.000000,-1750.000000,-500,250.000000,-1500.000000,500)
  3020.     AddCube("Ф-14", 250.000000,-1750.000000,-500,500.000000,-1500.000000,500)
  3021.     AddCube("Ф-15", 500.000000,-1750.000000,-500,750.000000,-1500.000000,500)
  3022.     AddCube("Ф-16", 750.000000,-1750.000000,-500,1000.000000,-1500.000000,500)
  3023.     AddCube("Ф-17", 1000.000000,-1750.000000,-500,1250.000000,-1500.000000,500)
  3024.     AddCube("Ф-18", 1250.000000,-1750.000000,-500,1500.000000,-1500.000000,500)
  3025.     AddCube("Ф-19", 1500.000000,-1750.000000,-500,1750.000000,-1500.000000,500)
  3026.     AddCube("Ф-20", 1750.000000,-1750.000000,-500,2000.000000,-1500.000000,500)
  3027.     AddCube("Ф-21", 2000.000000,-1750.000000,-500,2250.000000,-1500.000000,500)
  3028.     AddCube("Ф-22", 2250.000000,-1750.000000,-500,2500.000000,-1500.000000,500)
  3029.     AddCube("Ф-23", 2500.000000,-1750.000000,-500,2750.000000,-1500.000000,500)
  3030.     AddCube("Ф-24", 2750.000000,-1750.000000,-500,3000.000000,-1500.000000,500)
  3031.     AddCube("Х-1", -3000.000000,-2000.000000,-500,-2750.000000,-1750.000000,500)
  3032.     AddCube("Х-2", -2750.000000,-2000.000000,-500,-2500.000000,-1750.000000,500)
  3033.     AddCube("Х-3", -2500.000000,-2000.000000,-500,-2250.000000,-1750.000000,500)
  3034.     AddCube("Х-4", -2250.000000,-2000.000000,-500,-2000.000000,-1750.000000,500)
  3035.     AddCube("Х-5", -2000.000000,-2000.000000,-500,-1750.000000,-1750.000000,500)
  3036.     AddCube("Х-6", -1750.000000,-2000.000000,-500,-1500.000000,-1750.000000,500)
  3037.     AddCube("Х-7", -1500.000000,-2000.000000,-500,-1250.000000,-1750.000000,500)
  3038.     AddCube("Х-8", -1250.000000,-2000.000000,-500,-1000.000000,-1750.000000,500)
  3039.     AddCube("Х-9", -1000.000000,-2000.000000,-500,-750.000000,-1750.000000,500)
  3040.     AddCube("Х-10", -750.000000,-2000.000000,-500,-500.000000,-1750.000000,500)
  3041.     AddCube("Х-11", -500.000000,-2000.000000,-500,-250.000000,-1750.000000,500)
  3042.     AddCube("Х-12", -250.000000,-2000.000000,-500,0.000000,-1750.000000,500)
  3043.     AddCube("Х-13", 0.000000,-2000.000000,-500,250.000000,-1750.000000,500)
  3044.     AddCube("Х-14", 250.000000,-2000.000000,-500,500.000000,-1750.000000,500)
  3045.     AddCube("Х-15", 500.000000,-2000.000000,-500,750.000000,-1750.000000,500)
  3046.     AddCube("Х-16", 750.000000,-2000.000000,-500,1000.000000,-1750.000000,500)
  3047.     AddCube("Х-17", 1000.000000,-2000.000000,-500,1250.000000,-1750.000000,500)
  3048.     AddCube("Х-18", 1250.000000,-2000.000000,-500,1500.000000,-1750.000000,500)
  3049.     AddCube("Х-19", 1500.000000,-2000.000000,-500,1750.000000,-1750.000000,500)
  3050.     AddCube("Х-20", 1750.000000,-2000.000000,-500,2000.000000,-1750.000000,500)
  3051.     AddCube("Х-21", 2000.000000,-2000.000000,-500,2250.000000,-1750.000000,500)
  3052.     AddCube("Х-22", 2250.000000,-2000.000000,-500,2500.000000,-1750.000000,500)
  3053.     AddCube("Х-23", 2500.000000,-2000.000000,-500,2750.000000,-1750.000000,500)
  3054.     AddCube("Х-24", 2750.000000,-2000.000000,-500,3000.000000,-1750.000000,500)
  3055.     AddCube("Ц-1", -3000.000000,-2250.000000,-500,-2750.000000,-2000.000000,500)
  3056.     AddCube("Ц-2", -2750.000000,-2250.000000,-500,-2500.000000,-2000.000000,500)
  3057.     AddCube("Ц-3", -2500.000000,-2250.000000,-500,-2250.000000,-2000.000000,500)
  3058.     AddCube("Ц-4", -2250.000000,-2250.000000,-500,-2000.000000,-2000.000000,500)
  3059.     AddCube("Ц-5", -2000.000000,-2250.000000,-500,-1750.000000,-2000.000000,500)
  3060.     AddCube("Ц-6", -1750.000000,-2250.000000,-500,-1500.000000,-2000.000000,500)
  3061.     AddCube("Ц-7", -1500.000000,-2250.000000,-500,-1250.000000,-2000.000000,500)
  3062.     AddCube("Ц-8", -1250.000000,-2250.000000,-500,-1000.000000,-2000.000000,500)
  3063.     AddCube("Ц-9", -1000.000000,-2250.000000,-500,-750.000000,-2000.000000,500)
  3064.     AddCube("Ц-10", -750.000000,-2250.000000,-500,-500.000000,-2000.000000,500)
  3065.     AddCube("Ц-11", -500.000000,-2250.000000,-500,-250.000000,-2000.000000,500)
  3066.     AddCube("Ц-12", -250.000000,-2250.000000,-500,0.000000,-2000.000000,500)
  3067.     AddCube("Ц-13", 0.000000,-2250.000000,-500,250.000000,-2000.000000,500)
  3068.     AddCube("Ц-14", 250.000000,-2250.000000,-500,500.000000,-2000.000000,500)
  3069.     AddCube("Ц-15", 500.000000,-2250.000000,-500,750.000000,-2000.000000,500)
  3070.     AddCube("Ц-16", 750.000000,-2250.000000,-500,1000.000000,-2000.000000,500)
  3071.     AddCube("Ц-17", 1000.000000,-2250.000000,-500,1250.000000,-2000.000000,500)
  3072.     AddCube("Ц-18", 1250.000000,-2250.000000,-500,1500.000000,-2000.000000,500)
  3073.     AddCube("Ц-19", 1500.000000,-2250.000000,-500,1750.000000,-2000.000000,500)
  3074.     AddCube("Ц-20", 1750.000000,-2250.000000,-500,2000.000000,-2000.000000,500)
  3075.     AddCube("Ц-21", 2000.000000,-2250.000000,-500,2250.000000,-2000.000000,500)
  3076.     AddCube("Ц-22", 2250.000000,-2250.000000,-500,2500.000000,-2000.000000,500)
  3077.     AddCube("Ц-23", 2500.000000,-2250.000000,-500,2750.000000,-2000.000000,500)
  3078.     AddCube("Ц-24", 2750.000000,-2250.000000,-500,3000.000000,-2000.000000,500)
  3079.     AddCube("Ч-1", -3000.000000,-2500.000000,-500,-2750.000000,-2250.000000,500)
  3080.     AddCube("Ч-2", -2750.000000,-2500.000000,-500,-2500.000000,-2250.000000,500)
  3081.     AddCube("Ч-3", -2500.000000,-2500.000000,-500,-2250.000000,-2250.000000,500)
  3082.     AddCube("Ч-4", -2250.000000,-2500.000000,-500,-2000.000000,-2250.000000,500)
  3083.     AddCube("Ч-5", -2000.000000,-2500.000000,-500,-1750.000000,-2250.000000,500)
  3084.     AddCube("Ч-6", -1750.000000,-2500.000000,-500,-1500.000000,-2250.000000,500)
  3085.     AddCube("Ч-7", -1500.000000,-2500.000000,-500,-1250.000000,-2250.000000,500)
  3086.     AddCube("Ч-8", -1250.000000,-2500.000000,-500,-1000.000000,-2250.000000,500)
  3087.     AddCube("Ч-9", -1000.000000,-2500.000000,-500,-750.000000,-2250.000000,500)
  3088.     AddCube("Ч-10", -750.000000,-2500.000000,-500,-500.000000,-2250.000000,500)
  3089.     AddCube("Ч-11", -500.000000,-2500.000000,-500,-250.000000,-2250.000000,500)
  3090.     AddCube("Ч-12", -250.000000,-2500.000000,-500,0.000000,-2250.000000,500)
  3091.     AddCube("Ч-13", 0.000000,-2500.000000,-500,250.000000,-2250.000000,500)
  3092.     AddCube("Ч-14", 250.000000,-2500.000000,-500,500.000000,-2250.000000,500)
  3093.     AddCube("Ч-15", 500.000000,-2500.000000,-500,750.000000,-2250.000000,500)
  3094.     AddCube("Ч-16", 750.000000,-2500.000000,-500,1000.000000,-2250.000000,500)
  3095.     AddCube("Ч-17", 1000.000000,-2500.000000,-500,1250.000000,-2250.000000,500)
  3096.     AddCube("Ч-18", 1250.000000,-2500.000000,-500,1500.000000,-2250.000000,500)
  3097.     AddCube("Ч-19", 1500.000000,-2500.000000,-500,1750.000000,-2250.000000,500)
  3098.     AddCube("Ч-20", 1750.000000,-2500.000000,-500,2000.000000,-2250.000000,500)
  3099.     AddCube("Ч-21", 2000.000000,-2500.000000,-500,2250.000000,-2250.000000,500)
  3100.     AddCube("Ч-22", 2250.000000,-2500.000000,-500,2500.000000,-2250.000000,500)
  3101.     AddCube("Ч-23", 2500.000000,-2500.000000,-500,2750.000000,-2250.000000,500)
  3102.     AddCube("Ч-24", 2750.000000,-2500.000000,-500,3000.000000,-2250.000000,500)
  3103.     AddCube("Ш-1", -3000.000000,-2750.000000,-500,-2750.000000,-2500.000000,500)
  3104.     AddCube("Ш-2", -2750.000000,-2750.000000,-500,-2500.000000,-2500.000000,500)
  3105.     AddCube("Ш-3", -2500.000000,-2750.000000,-500,-2250.000000,-2500.000000,500)
  3106.     AddCube("Ш-4", -2250.000000,-2750.000000,-500,-2000.000000,-2500.000000,500)
  3107.     AddCube("Ш-5", -2000.000000,-2750.000000,-500,-1750.000000,-2500.000000,500)
  3108.     AddCube("Ш-6", -1750.000000,-2750.000000,-500,-1500.000000,-2500.000000,500)
  3109.     AddCube("Ш-7", -1500.000000,-2750.000000,-500,-1250.000000,-2500.000000,500)
  3110.     AddCube("Ш-8", -1250.000000,-2750.000000,-500,-1000.000000,-2500.000000,500)
  3111.     AddCube("Ш-9", -1000.000000,-2750.000000,-500,-750.000000,-2500.000000,500)
  3112.     AddCube("Ш-10", -750.000000,-2750.000000,-500,-500.000000,-2500.000000,500)
  3113.     AddCube("Ш-11", -500.000000,-2750.000000,-500,-250.000000,-2500.000000,500)
  3114.     AddCube("Ш-12", -250.000000,-2750.000000,-500,0.000000,-2500.000000,500)
  3115.     AddCube("Ш-13", 0.000000,-2750.000000,-500,250.000000,-2500.000000,500)
  3116.     AddCube("Ш-14", 250.000000,-2750.000000,-500,500.000000,-2500.000000,500)
  3117.     AddCube("Ш-15", 500.000000,-2750.000000,-500,750.000000,-2500.000000,500)
  3118.     AddCube("Ш-16", 750.000000,-2750.000000,-500,1000.000000,-2500.000000,500)
  3119.     AddCube("Ш-17", 1000.000000,-2750.000000,-500,1250.000000,-2500.000000,500)
  3120.     AddCube("Ш-18", 1250.000000,-2750.000000,-500,1500.000000,-2500.000000,500)
  3121.     AddCube("Ш-19", 1500.000000,-2750.000000,-500,1750.000000,-2500.000000,500)
  3122.     AddCube("Ш-20", 1750.000000,-2750.000000,-500,2000.000000,-2500.000000,500)
  3123.     AddCube("Ш-21", 2000.000000,-2750.000000,-500,2250.000000,-2500.000000,500)
  3124.     AddCube("Ш-22", 2250.000000,-2750.000000,-500,2500.000000,-2500.000000,500)
  3125.     AddCube("Ш-23", 2500.000000,-2750.000000,-500,2750.000000,-2500.000000,500)
  3126.     AddCube("Ш-24", 2750.000000,-2750.000000,-500,3000.000000,-2500.000000,500)
  3127.     AddCube("Я-1", -3000.000000,-3000.000000,-500,-2750.000000,-2750.000000,500)
  3128.     AddCube("Я-2", -2750.000000,-3000.000000,-500,-2500.000000,-2750.000000,500)
  3129.     AddCube("Я-3", -2500.000000,-3000.000000,-500,-2250.000000,-2750.000000,500)
  3130.     AddCube("Я-4", -2250.000000,-3000.000000,-500,-2000.000000,-2750.000000,500)
  3131.     AddCube("Я-5", -2000.000000,-3000.000000,-500,-1750.000000,-2750.000000,500)
  3132.     AddCube("Я-6", -1750.000000,-3000.000000,-500,-1500.000000,-2750.000000,500)
  3133.     AddCube("Я-7", -1500.000000,-3000.000000,-500,-1250.000000,-2750.000000,500)
  3134.     AddCube("Я-8", -1250.000000,-3000.000000,-500,-1000.000000,-2750.000000,500)
  3135.     AddCube("Я-9", -1000.000000,-3000.000000,-500,-750.000000,-2750.000000,500)
  3136.     AddCube("Я-10", -750.000000,-3000.000000,-500,-500.000000,-2750.000000,500)
  3137.     AddCube("Я-11", -500.000000,-3000.000000,-500,-250.000000,-2750.000000,500)
  3138.     AddCube("Я-12", -250.000000,-3000.000000,-500,0.000000,-2750.000000,500)
  3139.     AddCube("Я-13", 0.000000,-3000.000000,-500,250.000000,-2750.000000,500)
  3140.     AddCube("Я-14", 250.000000,-3000.000000,-500,500.000000,-2750.000000,500)
  3141.     AddCube("Я-15", 500.000000,-3000.000000,-500,750.000000,-2750.000000,500)
  3142.     AddCube("Я-16", 750.000000,-3000.000000,-500,1000.000000,-2750.000000,500)
  3143.     AddCube("Я-17", 1000.000000,-3000.000000,-500,1250.000000,-2750.000000,500)
  3144.     AddCube("Я-18", 1250.000000,-3000.000000,-500,1500.000000,-2750.000000,500)
  3145.     AddCube("Я-19", 1500.000000,-3000.000000,-500,1750.000000,-2750.000000,500)
  3146.     AddCube("Я-20", 1750.000000,-3000.000000,-500,2000.000000,-2750.000000,500)
  3147.     AddCube("Я-21", 2000.000000,-3000.000000,-500,2250.000000,-2750.000000,500)
  3148.     AddCube("Я-22", 2250.000000,-3000.000000,-500,2500.000000,-2750.000000,500)
  3149.     AddCube("Я-23", 2500.000000,-3000.000000,-500,2750.000000,-2750.000000,500)
  3150.     AddCube("Я-24", 2750.000000,-3000.000000,-500,3000.000000,-2750.000000,500)
  3151. }
  3152. calculateZone(posX, posY, posZ) {
  3153.     if ( bInitZaC == 0 )
  3154.     {
  3155.         initZonesAndCities()
  3156.         bInitZaC := 1
  3157.     }
  3158.     Loop % nZone-1
  3159.     {
  3160.         if (posX >= zone%A_Index%_x1) && (posY >= zone%A_Index%_y1) && (posZ >= zone%A_Index%_z1) && (posX <= zone%A_Index%_x2) && (posY <= zone%A_Index%_y2) && (posZ <= zone%A_Index%_z2)
  3161.         {
  3162.             ErrorLevel := ERROR_OK
  3163.             return zone%A_Index%_name
  3164.         }
  3165.     }
  3166.     ErrorLevel := ERROR_ZONE_NOT_FOUND
  3167.     return "Unbekannt"
  3168. }
  3169. calculateCity(posX, posY, posZ) {
  3170.     if ( bInitZaC == 0 )
  3171.     {
  3172.         initZonesAndCities()
  3173.         bInitZaC := 1
  3174.     }
  3175.     smallestCity := "Unbekannt"
  3176.     currentCitySize := 0
  3177.     smallestCitySize := 0
  3178.     Loop % nCity-1
  3179.     {
  3180.         if (posX >= city%A_Index%_x1) && (posY >= city%A_Index%_y1) && (posZ >= city%A_Index%_z1) && (posX <= city%A_Index%_x2) && (posY <= city%A_Index%_y2) && (posZ <= city%A_Index%_z2)
  3181.         {
  3182.             currentCitySize := ((city%A_Index%_x2 - city%A_Index%_x1) * (city%A_Index%_y2 - city%A_Index%_y1) * (city%A_Index%_z2 - city%A_Index%_z1))
  3183.             if (smallestCity == "Unbekannt") || (currentCitySize < smallestCitySize)
  3184.             {
  3185.                 smallestCity := city%A_Index%_name
  3186.                 smallestCitySize := currentCitySize
  3187.             }
  3188.         }
  3189.     }
  3190.     if(smallestCity == "Unbekannt") {
  3191.         ErrorLevel := ERROR_CITY_NOT_FOUND
  3192.     } else {
  3193.         ErrorLevel := ERROR_OK
  3194.     }
  3195.     return smallestCity
  3196. }
  3197. AddZone(sName, x1, y1, z1, x2, y2, z2) {
  3198.     global
  3199.     zone%nZone%_name := sName
  3200.     zone%nZone%_x1 := x1
  3201.     zone%nZone%_y1 := y1
  3202.     zone%nZone%_z1 := z1
  3203.     zone%nZone%_x2 := x2
  3204.     zone%nZone%_y2 := y2
  3205.     zone%nZone%_z2 := z2
  3206.     nZone := nZone + 1
  3207. }
  3208. AddCity(sName, x1, y1, z1, x2, y2, z2) {
  3209.     global
  3210.     city%nCity%_name := sName
  3211.     city%nCity%_x1 := x1
  3212.     city%nCity%_y1 := y1
  3213.     city%nCity%_z1 := z1
  3214.     city%nCity%_x2 := x2
  3215.     city%nCity%_y2 := y2
  3216.     city%nCity%_z2 := z2
  3217.     nCity := nCity + 1
  3218. }
  3219. IsPlayerInRangeOfPoint(_posX, _posY, _posZ, _posRadius)
  3220. {
  3221.     GetPlayerPos(posX, posY, posZ)
  3222.     X := posX -_posX
  3223.     Y := posY -_posY
  3224.     Z := posZ -_posZ
  3225.     if(((X < _posRadius) && (X > -_posRadius)) && ((Y < _posRadius) && (Y > -_posRadius)) && ((Z < _posRadius) && (Z > -_posRadius)))
  3226.     return TRUE
  3227.     return FALSE
  3228. }
  3229. IsPlayerInRangeOfPoint2D(_posX, _posY, _posRadius)
  3230. {
  3231.     GetPlayerPos(posX, posY, posZ)
  3232.     X := posX - _posX
  3233.     Y := posY - _posY
  3234.     if(((X < _posRadius) && (X > -_posRadius)) && ((Y < _posRadius) && (Y > -_posRadius)))
  3235.     return TRUE
  3236.     return FALSE
  3237. }
  3238. getPlayerZone()
  3239. {
  3240.     aktPos := getCoordinates()
  3241.     return calculateZone(aktPos[1], aktPos[2], aktPos[3])
  3242. }
  3243. getPlayerCity()
  3244. {
  3245.     aktPos := getCoordinates()
  3246.     return calculateCity(aktPos[1], aktPos[2], aktPos[3])
  3247. }
  3248. AntiCrash(){
  3249.     If(!checkHandles())
  3250.     return false
  3251.     cReport := ADDR_SAMP_CRASHREPORT
  3252.     writeMemory(hGTA, dwSAMP + cReport, 0x90909090, 4)
  3253.     cReport += 0x4
  3254.     writeMemory(hGTA, dwSAMP + cReport, 0x90, 1)
  3255.     cReport += 0x9
  3256.     writeMemory(hGTA, dwSAMP + cReport, 0x90909090, 4)
  3257.     cReport += 0x4
  3258.     writeMemory(hGTA, dwSAMP + cReport, 0x90, 1)
  3259. }
  3260. writeMemory(hProcess,address,writevalue,length=4, datatype="int") {
  3261.     if(!hProcess) {
  3262.         ErrorLevel := ERROR_INVALID_HANDLE
  3263.         return false
  3264.     }
  3265.     VarSetCapacity(finalvalue,length, 0)
  3266.     NumPut(writevalue,finalvalue,0,datatype)
  3267.     dwRet :=  DllCall(  "WriteProcessMemory"
  3268.     ,"Uint",hProcess
  3269.     ,"Uint",address
  3270.     ,"Uint",&finalvalue
  3271.     ,"Uint",length
  3272.     ,"Uint",0)
  3273.     if(dwRet == 0) {
  3274.         ErrorLevel := ERROR_WRITE_MEMORY
  3275.         return false
  3276.     }
  3277.     ErrorLevel := ERROR_OK
  3278.     return true
  3279. }
  3280. checkHandles() {
  3281.     if(iRefreshHandles+500>A_TickCount)
  3282.     return true
  3283.     iRefreshHandles:=A_TickCount
  3284.     if(!refreshGTA() || !refreshSAMP() || !refreshMemory()) {
  3285.         return false
  3286.     } else {
  3287.         return true
  3288.     }
  3289.     return true
  3290. }
  3291. refreshGTA() {
  3292.     newPID := getPID("GTA:SA:MP")
  3293.     if(!newPID) {
  3294.         if(hGTA) {
  3295.             virtualFreeEx(hGTA, pMemory, 0, 0x8000)
  3296.             closeProcess(hGTA)
  3297.             hGTA := 0x0
  3298.         }
  3299.         dwGTAPID := 0
  3300.         hGTA := 0x0
  3301.         dwSAMP := 0x0
  3302.         pMemory := 0x0
  3303.         return false
  3304.     }
  3305.     if(!hGTA || (dwGTAPID != newPID)) {
  3306.         hGTA := openProcess(newPID)
  3307.         if(ErrorLevel) {
  3308.             dwGTAPID := 0
  3309.             hGTA := 0x0
  3310.             dwSAMP := 0x0
  3311.             pMemory := 0x0
  3312.             return false
  3313.         }
  3314.         dwGTAPID := newPID
  3315.         dwSAMP := 0x0
  3316.         pMemory := 0x0
  3317.         return true
  3318.     }
  3319.     return true
  3320. }
  3321. refreshSAMP() {
  3322.     if(dwSAMP)
  3323.     return true
  3324.     dwSAMP := getModuleBaseAddress("samp.dll", hGTA)
  3325.     if(!dwSAMP)
  3326.     return false
  3327.     return true
  3328. }
  3329. refreshMemory() {
  3330.     if(!pMemory) {
  3331.         pMemory     := virtualAllocEx(hGTA, 6144, 0x1000 | 0x2000, 0x40)
  3332.         if(ErrorLevel) {
  3333.             pMemory := 0x0
  3334.             return false
  3335.         }
  3336.         pParam1     := pMemory
  3337.         pParam2     := pMemory + 1024
  3338.         pParam3     := pMemory + 2048
  3339.         pParam4     := pMemory + 3072
  3340.         pParam5     := pMemory + 4096
  3341.         pInjectFunc := pMemory + 5120
  3342.     }
  3343.     return true
  3344. }
  3345. getPID(szWindow) {
  3346.     local dwPID := 0
  3347.     WinGet, dwPID, PID, %szWindow%
  3348.     return dwPID
  3349. }
  3350. openProcess(dwPID, dwRights = 0x1F0FFF) {
  3351.     hProcess := DllCall("OpenProcess"
  3352.     , "UInt", dwRights
  3353.     , "int",  0
  3354.     , "UInt", dwPID
  3355.     , "Uint")
  3356.     if(hProcess == 0) {
  3357.         ErrorLevel := ERROR_OPEN_PROCESS
  3358.         return 0
  3359.     }
  3360.     ErrorLevel := ERROR_OK
  3361.     return hProcess
  3362. }
  3363. closeProcess(hProcess) {
  3364.     if(hProcess == 0) {
  3365.         ErrorLevel := ERROR_INVALID_HANDLE
  3366.         return 0
  3367.     }
  3368.     dwRet := DllCall(    "CloseHandle"
  3369.     , "Uint", hProcess
  3370.     , "UInt")
  3371.     ErrorLevel := ERROR_OK
  3372. }
  3373. getModuleBaseAddress(sModule, hProcess) {
  3374.     if(!sModule) {
  3375.         ErrorLevel := ERROR_MODULE_NOT_FOUND
  3376.         return 0
  3377.     }
  3378.     if(!hProcess) {
  3379.         ErrorLevel := ERROR_INVALID_HANDLE
  3380.         return 0
  3381.     }
  3382.     dwSize = 1024*4
  3383.     VarSetCapacity(hMods, dwSize)
  3384.     VarSetCapacity(cbNeeded, 4)
  3385.     dwRet := DllCall(    "Psapi.dll\EnumProcessModules"
  3386.     , "UInt", hProcess
  3387.     , "UInt", &hMods
  3388.     , "UInt", dwSize
  3389.     , "UInt*", cbNeeded
  3390.     , "UInt")
  3391.     if(dwRet == 0) {
  3392.         ErrorLevel := ERROR_ENUM_PROCESS_MODULES
  3393.         return 0
  3394.     }
  3395.     dwMods := cbNeeded / 4
  3396.     i := 0
  3397.     VarSetCapacity(hModule, 4)
  3398.     VarSetCapacity(sCurModule, 260)
  3399.     while(i < dwMods) {
  3400.         hModule := NumGet(hMods, i*4)
  3401.         DllCall("Psapi.dll\GetModuleFileNameEx"
  3402.         , "UInt", hProcess
  3403.         , "UInt", hModule
  3404.         , "Str", sCurModule
  3405.         , "UInt", 260)
  3406.         SplitPath, sCurModule, sFilename
  3407.         if(sModule == sFilename) {
  3408.             ErrorLevel := ERROR_OK
  3409.             return hModule
  3410.         }
  3411.         i := i + 1
  3412.     }
  3413.     ErrorLevel := ERROR_MODULE_NOT_FOUND
  3414.     return 0
  3415. }
  3416. readString(hProcess, dwAddress, dwLen) {
  3417.     if(!hProcess) {
  3418.         ErrorLevel := ERROR_INVALID_HANDLE
  3419.         return 0
  3420.     }
  3421.     VarSetCapacity(sRead, dwLen)
  3422.     dwRet := DllCall(    "ReadProcessMemory"
  3423.     , "UInt", hProcess
  3424.     , "UInt", dwAddress
  3425.     , "Str", sRead
  3426.     , "UInt", dwLen
  3427.     , "UInt*", 0
  3428.     , "UInt")
  3429.     if(dwRet == 0) {
  3430.         ErrorLevel := ERROR_READ_MEMORY
  3431.         return 0
  3432.     }
  3433.     ErrorLevel := ERROR_OK
  3434.     if A_IsUnicode
  3435.     return __ansiToUnicode(sRead)
  3436.     return sRead
  3437. }
  3438. readFloat(hProcess, dwAddress) {
  3439.     if(!hProcess) {
  3440.         ErrorLevel := ERROR_INVALID_HANDLE
  3441.         return 0
  3442.     }
  3443.     VarSetCapacity(dwRead, 4)
  3444.     dwRet := DllCall(    "ReadProcessMemory"
  3445.     , "UInt",  hProcess
  3446.     , "UInt",  dwAddress
  3447.     , "Str",   dwRead
  3448.     , "UInt",  4
  3449.     , "UInt*", 0
  3450.     , "UInt")
  3451.     if(dwRet == 0) {
  3452.         ErrorLevel := ERROR_READ_MEMORY
  3453.         return 0
  3454.     }
  3455.     ErrorLevel := ERROR_OK
  3456.     return NumGet(dwRead, 0, "Float")
  3457. }
  3458. readDWORD(hProcess, dwAddress) {
  3459.     if(!hProcess) {
  3460.         ErrorLevel := ERROR_INVALID_HANDLE
  3461.         return 0
  3462.     }
  3463.     VarSetCapacity(dwRead, 4)
  3464.     dwRet := DllCall(    "ReadProcessMemory"
  3465.     , "UInt",  hProcess
  3466.     , "UInt",  dwAddress
  3467.     , "Str",   dwRead
  3468.     , "UInt",  4
  3469.     , "UInt*", 0)
  3470.     if(dwRet == 0) {
  3471.         ErrorLevel := ERROR_READ_MEMORY
  3472.         return 0
  3473.     }
  3474.     ErrorLevel := ERROR_OK
  3475.     return NumGet(dwRead, 0, "UInt")
  3476. }
  3477. readMem(hProcess, dwAddress, dwLen=4, type="UInt") {
  3478.     if(!hProcess) {
  3479.         ErrorLevel := ERROR_INVALID_HANDLE
  3480.         return 0
  3481.     }
  3482.     VarSetCapacity(dwRead, dwLen)
  3483.     dwRet := DllCall(    "ReadProcessMemory"
  3484.     , "UInt",  hProcess
  3485.     , "UInt",  dwAddress
  3486.     , "Str",   dwRead
  3487.     , "UInt",  dwLen
  3488.     , "UInt*", 0)
  3489.     if(dwRet == 0) {
  3490.         ErrorLevel := ERROR_READ_MEMORY
  3491.         return 0
  3492.     }
  3493.     ErrorLevel := ERROR_OK
  3494.     return NumGet(dwRead, 0, type)
  3495. }
  3496. writeString(hProcess, dwAddress, wString) {
  3497.     if(!hProcess) {
  3498.         ErrorLevel := ERROR_INVALID_HANDLE
  3499.         return false
  3500.     }
  3501.     sString := wString
  3502.     if A_IsUnicode
  3503.     sString := __unicodeToAnsi(wString)
  3504.     dwRet := DllCall(    "WriteProcessMemory"
  3505.     , "UInt", hProcess
  3506.     , "UInt", dwAddress
  3507.     , "Str", sString
  3508.     , "UInt", StrLen(wString) + 1
  3509.     , "UInt", 0
  3510.     , "UInt")
  3511.     if(dwRet == 0) {
  3512.         ErrorLEvel := ERROR_WRITE_MEMORY
  3513.         return false
  3514.     }
  3515.     ErrorLevel := ERROR_OK
  3516.     return true
  3517. }
  3518. writeRaw(hProcess, dwAddress, pBuffer, dwLen) {
  3519.     if(!hProcess) {
  3520.         ErrorLevel := ERROR_INVALID_HANDLE
  3521.         return false
  3522.     }
  3523.     dwRet := DllCall(    "WriteProcessMemory"
  3524.     , "UInt", hProcess
  3525.     , "UInt", dwAddress
  3526.     , "UInt", pBuffer
  3527.     , "UInt", dwLen
  3528.     , "UInt", 0
  3529.     , "UInt")
  3530.     if(dwRet == 0) {
  3531.         ErrorLEvel := ERROR_WRITE_MEMORY
  3532.         return false
  3533.     }
  3534.     ErrorLevel := ERROR_OK
  3535.     return true
  3536. }
  3537. Memory_ReadByte(process_handle, address) {
  3538.     VarSetCapacity(value, 1, 0)
  3539.     DllCall("ReadProcessMemory", "UInt", process_handle, "UInt", address, "Str", value, "UInt", 1, "UInt *", 0)
  3540.     return, NumGet(value, 0, "Byte")
  3541. }
  3542. callWithParams(hProcess, dwFunc, aParams, bCleanupStack = true) {
  3543.     if(!hProcess) {
  3544.         ErrorLevel := ERROR_INVALID_HANDLE
  3545.         return false
  3546.     }
  3547.     validParams := 0
  3548.     i := aParams.MaxIndex()
  3549.     dwLen := i * 5    + 5    + 1
  3550.     if(bCleanupStack)
  3551.     dwLen += 3
  3552.     VarSetCapacity(injectData, i * 5    + 5       + 3       + 1, 0)
  3553.     i_ := 1
  3554.     while(i > 0) {
  3555.         if(aParams[i][1] != "") {
  3556.             dwMemAddress := 0x0
  3557.             if(aParams[i][1] == "p") {
  3558.                 dwMemAddress := aParams[i][2]
  3559.             } else if(aParams[i][1] == "s") {
  3560.                 if(i_>3)
  3561.                 return false
  3562.                 dwMemAddress := pParam%i_%
  3563.                 writeString(hProcess, dwMemAddress, aParams[i][2])
  3564.                 if(ErrorLevel)
  3565.                 return false
  3566.                 i_ += 1
  3567.             } else if(aParams[i][1] == "i") {
  3568.                 dwMemAddress := aParams[i][2]
  3569.             } else {
  3570.                 return false
  3571.             }
  3572.             NumPut(0x68, injectData, validParams * 5, "UChar")
  3573.             NumPut(dwMemAddress, injectData, validParams * 5 + 1, "UInt")
  3574.             validParams += 1
  3575.         }
  3576.         i -= 1
  3577.     }
  3578.     offset := dwFunc - ( pInjectFunc + validParams * 5 + 5 )
  3579.     NumPut(0xE8, injectData, validParams * 5, "UChar")
  3580.     NumPut(offset, injectData, validParams * 5 + 1, "Int")
  3581.     if(bCleanupStack) {
  3582.         NumPut(0xC483, injectData, validParams * 5 + 5, "UShort")
  3583.         NumPut(validParams*4, injectData, validParams * 5 + 7, "UChar")
  3584.         NumPut(0xC3, injectData, validParams * 5 + 8, "UChar")
  3585.     } else {
  3586.         NumPut(0xC3, injectData, validParams * 5 + 5, "UChar")
  3587.     }
  3588.     writeRaw(hGTA, pInjectFunc, &injectData, dwLen)
  3589.     if(ErrorLevel)
  3590.     return false
  3591.     hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
  3592.     if(ErrorLevel)
  3593.     return false
  3594.     waitForSingleObject(hThread, 0xFFFFFFFF)
  3595.     closeProcess(hThread)
  3596.     return true
  3597. }
  3598. virtualAllocEx(hProcess, dwSize, flAllocationType, flProtect) {
  3599.     if(!hProcess) {
  3600.         ErrorLevel := ERROR_INVALID_HANDLE
  3601.         return 0
  3602.     }
  3603.     dwRet := DllCall(    "VirtualAllocEx"
  3604.     , "UInt", hProcess
  3605.     , "UInt", 0
  3606.     , "UInt", dwSize
  3607.     , "UInt", flAllocationType
  3608.     , "UInt", flProtect
  3609.     , "UInt")
  3610.     if(dwRet == 0) {
  3611.         ErrorLEvel := ERROR_ALLOC_MEMORY
  3612.         return 0
  3613.     }
  3614.     ErrorLevel := ERROR_OK
  3615.     return dwRet
  3616. }
  3617. virtualFreeEx(hProcess, lpAddress, dwSize, dwFreeType) {
  3618.     if(!hProcess) {
  3619.         ErrorLevel := ERROR_INVALID_HANDLE
  3620.         return 0
  3621.     }
  3622.     dwRet := DllCall(    "VirtualFreeEx"
  3623.     , "UInt", hProcess
  3624.     , "UInt", lpAddress
  3625.     , "UInt", dwSize
  3626.     , "UInt", dwFreeType
  3627.     , "UInt")
  3628.     if(dwRet == 0) {
  3629.         ErrorLEvel := ERROR_FREE_MEMORY
  3630.         return 0
  3631.     }
  3632.     ErrorLevel := ERROR_OK
  3633.     return dwRet
  3634. }
  3635. createRemoteThread(hProcess, lpThreadAttributes, dwStackSize, lpStartAddress, lpParameter, dwCreationFlags, lpThreadId) {
  3636.     if(!hProcess) {
  3637.         ErrorLevel := ERROR_INVALID_HANDLE
  3638.         return 0
  3639.     }
  3640.     dwRet := DllCall(    "CreateRemoteThread"
  3641.     , "UInt", hProcess
  3642.     , "UInt", lpThreadAttributes
  3643.     , "UInt", dwStackSize
  3644.     , "UInt", lpStartAddress
  3645.     , "UInt", lpParameter
  3646.     , "UInt", dwCreationFlags
  3647.     , "UInt", lpThreadId
  3648.     , "UInt")
  3649.     if(dwRet == 0) {
  3650.         ErrorLEvel := ERROR_ALLOC_MEMORY
  3651.         return 0
  3652.     }
  3653.     ErrorLevel := ERROR_OK
  3654.     return dwRet
  3655. }
  3656. waitForSingleObject(hThread, dwMilliseconds) {
  3657.     if(!hThread) {
  3658.         ErrorLevel := ERROR_INVALID_HANDLE
  3659.         return 0
  3660.     }
  3661.     dwRet := DllCall(    "WaitForSingleObject"
  3662.     , "UInt", hThread
  3663.     , "UInt", dwMilliseconds
  3664.     , "UInt")
  3665.     if(dwRet == 0xFFFFFFFF) {
  3666.         ErrorLEvel := ERROR_WAIT_FOR_OBJECT
  3667.         return 0
  3668.     }
  3669.     ErrorLevel := ERROR_OK
  3670.     return dwRet
  3671. }
  3672. __ansiToUnicode(sString, nLen = 0) {
  3673.     If !nLen
  3674.     {
  3675.         nLen := DllCall("MultiByteToWideChar"
  3676.         , "Uint", 0
  3677.         , "Uint", 0
  3678.         , "Uint", &sString
  3679.         , "int",  -1
  3680.         , "Uint", 0
  3681.         , "int",  0)
  3682.     }
  3683.     VarSetCapacity(wString, nLen * 2)
  3684.     DllCall("MultiByteToWideChar"
  3685.     , "Uint", 0
  3686.     , "Uint", 0
  3687.     , "Uint", &sString
  3688.     , "int",  -1
  3689.     , "Uint", &wString
  3690.     , "int",  nLen)
  3691.     return wString
  3692. }
  3693. __unicodeToAnsi(wString, nLen = 0) {
  3694.     pString := wString + 1 > 65536 ? wString : &wString
  3695.     If !nLen
  3696.     {
  3697.         nLen := DllCall("WideCharToMultiByte"
  3698.         , "Uint", 0
  3699.         , "Uint", 0
  3700.         , "Uint", pString
  3701.         , "int",  -1
  3702.         , "Uint", 0
  3703.         , "int",  0
  3704.         , "Uint", 0
  3705.         , "Uint", 0)
  3706.     }
  3707.     VarSetCapacity(sString, nLen)
  3708.     DllCall("WideCharToMultiByte"
  3709.     , "Uint", 0
  3710.     , "Uint", 0
  3711.     , "Uint", pString
  3712.     , "int",  -1
  3713.     , "str",  sString
  3714.     , "int",  nLen
  3715.     , "Uint", 0
  3716.     , "Uint", 0)
  3717.     return sString
  3718. }
  3719. callWithParamsforaddToChatWindow(hProcess, dwFunc, aParams, bCleanupStack = true, thiscall = false) {
  3720.     if(!hProcess) {
  3721.         ErrorLevel := ERROR_INVALID_HANDLE
  3722.         return false
  3723.     }
  3724.     validParams := 0
  3725.     i := aParams.MaxIndex()
  3726.     dwLen := i * 5    + 5    + 1
  3727.     if(bCleanupStack)
  3728.     dwLen += 3
  3729.     VarSetCapacity(injectData, i * 5    + 5       + 3       + 1, 0)
  3730.     i_ := 1
  3731.     while(i > 0) {
  3732.         if(aParams[i][1] != "") {
  3733.             dwMemAddress := 0x0
  3734.             if(aParams[i][1] == "p") {
  3735.                 dwMemAddress := aParams[i][2]
  3736.             } else if(aParams[i][1] == "s") {
  3737.                 if(i_>3)
  3738.                 return false
  3739.                 dwMemAddress := pParam%i_%
  3740.                 writeString(hProcess, dwMemAddress, aParams[i][2])
  3741.                 if(ErrorLevel)
  3742.                 return false
  3743.                 i_ += 1
  3744.             } else if(aParams[i][1] == "i") {
  3745.                 dwMemAddress := aParams[i][2]
  3746.             } else {
  3747.                 return false
  3748.             }
  3749.             NumPut((thiscall && i == 1 ? 0xB9 : 0x68), injectData, validParams * 5, "UChar")
  3750.             NumPut(dwMemAddress, injectData, validParams * 5 + 1, "UInt")
  3751.             validParams += 1
  3752.         }
  3753.         i -= 1
  3754.     }
  3755.     offset := dwFunc - ( pInjectFunc + validParams * 5 + 5 )
  3756.     NumPut(0xE8, injectData, validParams * 5, "UChar")
  3757.     NumPut(offset, injectData, validParams * 5 + 1, "Int")
  3758.     if(bCleanupStack) {
  3759.         NumPut(0xC483, injectData, validParams * 5 + 5, "UShort")
  3760.         NumPut(validParams*4, injectData, validParams * 5 + 7, "UChar")
  3761.         NumPut(0xC3, injectData, validParams * 5 + 8, "UChar")
  3762.     } else {
  3763.         NumPut(0xC3, injectData, validParams * 5 + 5, "UChar")
  3764.     }
  3765.     writeRaw(hGTA, pInjectFunc, &injectData, dwLen)
  3766.     if(ErrorLevel)
  3767.     return false
  3768.     hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
  3769.     if(ErrorLevel)
  3770.     return false
  3771.     waitForSingleObject(hThread, 0xFFFFFFFF)
  3772.     closeProcess(hThread)
  3773.     return true
  3774. }
  3775. getsexbyskin(skin)
  3776. {
  3777.     if skin in 1,2,3,4,5,6,7,8,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,42,43,44,45,46,47,48,49,50,51,52,57,58,59,60,61,62,66,67,68,70,71,72,73,79,80,81,82,83,84,86,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,132,133,134,135,136,137,142,143,144,146,147,149,153,154,155,156,158,159,160,161,162,163,164,165,166,167,168,170,171,173,174,175,176,177,179,180,181,182,183,184,185,186,187,188,189,200,202,203,204,206,208,209,210,212,213,217,220,221,222,223,227,228,229,230,234,235,236,239,240,241,242,247,248,249,250,252,253,254,255,258,259,260,261,262,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,299,300,301,302,303,304,305,310,311
  3778.     return 1
  3779.     if skin in 9,10,11,12,13,31,38,39,40,41,53,54,55,56,63,64,65,69,75,76,77,85,87,88,89,90,91,92,93,129,130,131,138,139,140,141,143,144,145,148,150,151,152,157,169,172,178,190,191,192,193,194,195,196,197,198,199,201,205,207,211,214,215,216,218,219,224,225,226,231,232,233,237,238,243,244,245,246,251,256,257,263,298,306,307,308,309
  3780.     return 2
  3781.     else
  3782.     return 0
  3783. }
  3784. NearPlayerInCar(dist)
  3785. {
  3786.     TempDist := 100000
  3787.     if(!p := getStreamedInPlayersInfo())
  3788.     return false
  3789.     if(!lpos := getCoordinates())
  3790.     return false
  3791.     for i, o in p
  3792.     {
  3793.         t := getDist(lpos, o.POS)
  3794.         if(t <= dist)
  3795.         {
  3796.             if(t < TempDist && t > 5 && isTargetInAnyVehiclebyId(o.ID))
  3797.             TempId := i, TempDist := t
  3798.         }
  3799.     }
  3800.     return TempId
  3801. }
  3802. getTargetPlayerArmour(player)
  3803. {
  3804.     if(!checkHandles())
  3805.     return 0
  3806.     if (player is integer) and (player >= 0) and (player <= 999)
  3807.     player := getPedById(player)
  3808.     if(!player)
  3809.     return 0
  3810.     return readMem(hGTA, player + 0x548, 2, "byte")
  3811. }
  3812. getTargetPlayerHealth(player)
  3813. {
  3814.     if(!checkHandles())
  3815.     return 0
  3816.     if (player is integer) and (player >= 0) and (player <= 999)
  3817.     player := getPedById(player)
  3818.     if(!player)
  3819.     return 0
  3820.     return readMem(hGTA, player + 0x540, 2, "byte")
  3821. }
  3822. getPlayerCube()
  3823. {
  3824.     aktPos := getCoordinates()
  3825.     return calculateCube(aktPos[1], aktPos[2], aktPos[3])
  3826. }
  3827. calculateCube(posX, posY, posZ) {
  3828.     if ( bInitZaC == 0 )
  3829.     {
  3830.         initZonesAndCities()
  3831.         bInitZaC := 1
  3832.     }
  3833.     Loop % nCube-1
  3834.     {
  3835.         if (posX >= cube%A_Index%_x1) && (posY >= cube%A_Index%_y1) && (posZ >= cube%A_Index%_z1) && (posX <= cube%A_Index%_x2) && (posY <= cube%A_Index%_y2) && (posZ <= cube%A_Index%_z2)
  3836.         {
  3837.             ErrorLevel := ERROR_OK
  3838.             return cube%A_Index%_name
  3839.         }
  3840.     }
  3841.     ErrorLevel := ERROR_CUBE_NOT_FOUND
  3842.     return "Unbekannt"
  3843. }
  3844. AddCube(sName, x1, y1, z1, x2, y2, z2) {
  3845.     global
  3846.     cube%nCube%_name := sName
  3847.     cube%nCube%_x1 := x1
  3848.     cube%nCube%_y1 := y1
  3849.     cube%nCube%_z1 := z1
  3850.     cube%nCube%_x2 := x2
  3851.     cube%nCube%_y2 := y2
  3852.     cube%nCube%_z2 := z2
  3853.     nCube := nCube + 1
  3854. }
  3855. getDialogLineNumber() {
  3856.     dwPointer := getDialogStructPtr()
  3857.     if (ErrorLevel || !dwPointer)
  3858.     return 0
  3859.     dwPointer := readDWORD(hGTA, dwPointer + SAMP_DIALOG_PTR2_OFFSET)
  3860.     if (ErrorLevel) {
  3861.         ErrorLevel := ERROR_READ_MEMORY
  3862.         return 0
  3863.     }
  3864.     count := readMem(hGTA, dwPointer + SAMP_DIALOG_LINENUMBER_OFFSET, 4, "UInt")
  3865.     if (ErrorLevel) {
  3866.         ErrorLevel := ERROR_READ_MEMORY
  3867.         return 0
  3868.     }
  3869.     return count//16777216+1
  3870. }
  3871. time()
  3872. {
  3873.     whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
  3874.     whr.Open("GET", "http://time100.ru", true)
  3875.     whr.Send()
  3876.     whr.WaitForResponse(30)
  3877.     if RegExMatch(whr.ResponseText, "U)\<span\>.*<\/span\>.*\>(.*)\<\/div\>", match)
  3878.     return match1
  3879. }
  3880. IsInAFK() {
  3881.     res := ProcessReadMemory(0xBA6748 + 0x5C, "gta_sa.exe")
  3882.     if (res==-1)
  3883.     return -1
  3884.     WinGet, win, MinMax, GTA:SA:MP
  3885.     if ((res=0) and (win=-1)) or res=1
  3886.     return 1
  3887.     return 0
  3888. }
  3889. ProcessReadMemory(address, processIDorName, type := "Int", numBytes := 4) {
  3890.     VarSetCapacity(buf, numBytes, 0)
  3891.     Process Exist, %processIDorName%
  3892.     if !processID := ErrorLevel
  3893.     return -1
  3894.     if !processHandle := DllCall("OpenProcess", "Int", 24, "UInt", 0, "UInt", processID, "Ptr")
  3895.     throw Exception("Failed to open process.`n`nError code:`t" . A_LastError)
  3896.     result := DllCall("ReadProcessMemory", "Ptr", processHandle, "Ptr", address, "Ptr", &buf, "Ptr", numBytes, "PtrP", numBytesRead, "UInt")
  3897.     if !DllCall("CloseHandle", "Ptr", processHandle, "UInt") && !result
  3898.     throw Exception("Failed to close process handle.`n`nError code:`t" . A_LastError)
  3899.     if !result
  3900.     throw Exception("Failed to read process memory.`n`nError code:`t" . A_LastError)
  3901.     if !numBytesRead
  3902.     throw Exception("Read 0 bytes from the`n`nprocess:`t" . processIDorName . "`naddress:`t" . address)
  3903.     return (type = "Str")
  3904.     ? StrGet(&buf, numBytes)
  3905.     : NumGet(buf, type)
  3906. }
  3907. WallHack(tog := -1)
  3908. {
  3909.     if(!checkHandles())
  3910.     return -1
  3911.     byte := readMem(hGTA, dwSAMP + 0x70F1A, 1, "byte")
  3912.     if((tog == -1 && byte == 232) || tog == true || tog == 1) {
  3913.         writeBytes(hGTA, dwSAMP + 0x70F1A, "9090909090")
  3914.         writeBytes(hGTA, dwSAMP + 0x6FE0A, "9090909090")
  3915.         writeBytes(hGTA, dwSAMP + 0x70E24, "909090909090")
  3916.         writeBytes(hGTA, dwSAMP + 0x6FD14, "909090909090")
  3917.         return true
  3918.     } else if((tog == -1 && byte == 144) || !tog) {
  3919.         writeBytes(hGTA, dwSAMP + 0x70F1A, "E8B1AD0300")
  3920.         writeBytes(hGTA, dwSAMP + 0x6FE0A, "E8C1BE0300")
  3921.         writeBytes(hGTA, dwSAMP + 0x70E24, "0F8A71010000")
  3922.         writeBytes(hGTA, dwSAMP + 0x6FD14, "0F8A50010000")
  3923.         return false
  3924.     }
  3925.     return -1
  3926. }
  3927. writeBytes(handle, address, bytes)
  3928. {
  3929.     length := strlen(bytes) / 2
  3930.     VarSetCapacity(toInject, length, 0)
  3931.     Loop %length%
  3932.     {
  3933.         byte := "0x" substr(bytes, ((A_Index - 1) * 2) + 1, 2)
  3934.         NumPut(byte, toInject, A_Index - 1, "uchar")
  3935.     }
  3936.     return writeRaw(handle, address, &toInject, length)
  3937. }
  3938. PrintLow(text, time) {
  3939.     if(!checkHandles())
  3940.     return -1
  3941.     dwFunc := 0x69F1E0
  3942.     callwithparams(hGta, dwFunc, [["s",text], ["i", time], ["i", 1], ["i", 1]], true)
  3943. }
  3944. UnlockFps(status) {
  3945.     if(!checkHandles())
  3946.     return false
  3947.     if (status = 1) {
  3948.         dwSAMP := getModuleBaseAddress("samp.dll", hGTA)
  3949.         writeMemory(hGTA, dwSAMP + 0x9D9D0, 1347550997, 4, "UInt")
  3950.     }
  3951.     if (status = 0) {
  3952.         dwSAMP := getModuleBaseAddress("samp.dll", hGTA)
  3953.         writeMemory(hGTA, dwSAMP + 0x9D9D0, 4294417384, 4, "UInt")
  3954.     }
  3955.     return
  3956. }
  3957. getLastDamagePed(ByRef Ped := "", ByRef Weapon := "")
  3958. {
  3959.     if(!checkHandles())
  3960.     return -1
  3961.     if(!CPed := readDWORD(hGTA, ADDR_CPED_PTR))
  3962.     return -1
  3963.     if(!dwPed := readDWORD(hGTA, CPed + 0x764))
  3964.     return -1
  3965.     Ped := getIdByPed(dwPed)
  3966.     Weapon := readMem(hGTA, CPed + 0x760, 4, "int")
  3967.     return Ped
  3968. }
  3969. isPlayerInStreamById(player_id, radius := 150)
  3970. {
  3971.     NAME := ""
  3972.     check := []
  3973.     p := getStreamedInPlayersInfo()
  3974.     if (!p)
  3975.     return 0
  3976.     For i, o in p
  3977.     {
  3978.         if (Floor(getDist(getCoordinates(), o.POS)) <= radius)
  3979.         {
  3980.             NAME .= o.NAME ", "
  3981.         }
  3982.     }
  3983.     if (IsObject(player_id))
  3984.     {
  3985.         for k, v in player_id
  3986.         {
  3987.             i := 0
  3988.             Loop, Parse, % NAME, % ",", % " ,.`n`r"
  3989.             {
  3990.                 if (A_LoopField == getPlayerNameById(v))
  3991.                 {
  3992.                     i := 1
  3993.                     break
  3994.                 }
  3995.             }
  3996.             if (i)
  3997.             check[v] := i
  3998.             else
  3999.             check[v] := i
  4000.         }
  4001.         return check
  4002.     }
  4003.     else if (!IsObject(player_id))
  4004.     {
  4005.         if (!getPlayerNameById(player_id))
  4006.         return 0
  4007.         i := 0
  4008.         Loop, Parse, % NAME, % ",", % " ,.`n`r"
  4009.         {
  4010.             if (A_LoopField == getPlayerNameById(player_id))
  4011.             return 1
  4012.         }
  4013.         return 0
  4014.     }
  4015. }
  4016. inPostRus()
  4017. {
  4018. JDLS := {X: "1785.413574", Y: "-1909.141602", Z: "13.993283", R: "45"}
  4019. CHLS := {X: "1481.575317", Y: "-1750.532959", Z: "16.042505", R: "50"}
  4020. KPPLSPD := {X: "1543.679688", Y: "-1627.167236", Z: "13.982813", R: "15"}
  4021. HLS := {X: "1177.892578", Y: "-1323.650757", Z: "14.693136", R: "40"}
  4022. AVLS := {X: "1202.490601", Y: "-1744.581299", Z: "14.191917", R: "50"}
  4023. KPPSFPD := {X: "-1572.757568", Y: "662.726624", Z: "7.787500", R: "15"}
  4024. HSF := {X: "-2656.206299", Y: "606.864624", Z: "15.053125", R: "40"}
  4025. CHSF := {X: "-2760.261230", Y: "375.565125", Z: "5.352239", R: "50"}
  4026. JDSF := {X: "-1993.992310", Y: "141.007004", Z: "28.139063", R: "50"}
  4027. HLV := {X: "1604.737915", Y: "1837.302979", Z: "11.420313", R: "30"}
  4028. KPPLVPD := {X: "2346.144775", Y: "2423.343018", Z: "11.401557", R: "10"}
  4029. CHLV := {X: "2388.144775", Y: "2465.935547", Z: "11.420313", R: "30"}
  4030. JDLV := {X: "2811.458008", Y: "1295.672729", Z: "11.350000", R: "80"}
  4031. T_LV_LS := {X: "1797.266968", Y: "823.091553", Z: "11.244115", R: "20"}
  4032. T_SF_LV := {X: "-1653.182739", Y: "559.955078", Z: "39.928123", R: "30"}
  4033. T_LS_SF := {X: "58.200413", Y: "-1533.299194", Z: "5.830749", R: "30"}
  4034. SV_KPP_1 := {X: "212.180481", Y: "1798.314209", Z: "18.323168", R: "20"}
  4035.     if (IsPlayerInRangeOfPoint(JDLS.X, JDLS.Y, JDLS.Z, JDLS.R)="1")
  4036.     {
  4037.         Inpost := "ЖДЛС"
  4038.         return Inpost
  4039.     }
  4040.     else if (IsPlayerInRangeOfPoint(CHLS.X, CHLS.Y, CHLS.Z, CHLS.R)="1")
  4041.     {
  4042.         Inpost := "Мэрия LS"
  4043.         return Inpost
  4044.     }
  4045.     else if (IsPlayerInRangeOfPoint(KPPLSPD.X, KPPLSPD.Y, KPPLSPD.Z, KPPLSPD.R)="1")
  4046.     {
  4047.         Inpost := "КПП LSPD"
  4048.         return Inpost
  4049.     }
  4050.     else if (IsPlayerInRangeOfPoint(HLS.X, HLS.Y, HLS.Z, HLS.R)="1")
  4051.     {
  4052.         Inpost := "Больница LS"
  4053.         return Inpost
  4054.     }
  4055.     else if (IsPlayerInRangeOfPoint(AVLS.X, AVLS.Y, AVLS.Z, AVLS.R)="1")
  4056.     {
  4057.         Inpost := "АВЛС"
  4058.         return Inpost
  4059.     }
  4060.     else if (IsPlayerInRangeOfPoint(KPPSFPD.X, KPPSFPD.Y, KPPSFPD.Z, KPPSFPD.R)="1")
  4061.     {
  4062.         Inpost := "КПП SFPD"
  4063.         return Inpost
  4064.     }
  4065.     else if (IsPlayerInRangeOfPoint(HSF.X, HSF.Y, HSF.Z, HSF.R)="1")
  4066.     {
  4067.         Inpost := "Больница SF"
  4068.         return Inpost
  4069.     }
  4070.     else if (IsPlayerInRangeOfPoint(CHSF.X, CHSF.Y, CHSF.Z, CHSF.R)="1")
  4071.     {
  4072.         Inpost := "Мэрия SF"
  4073.         return Inpost
  4074.     }
  4075.     else if (IsPlayerInRangeOfPoint(JDSF.X, JDSF.Y, JDSF.Z, JDSF.R)="1")
  4076.     {
  4077.         Inpost := "ЖДСФ"
  4078.         return Inpost
  4079.     }
  4080.     else if (IsPlayerInRangeOfPoint(HLV.X, HLV.Y, HLV.Z, HLV.R)="1")
  4081.     {
  4082.         Inpost := "Больница LV"
  4083.         return Inpost
  4084.     }
  4085.     else if (IsPlayerInRangeOfPoint(KPPLVPD.X, KPPLVPD.Y, KPPLVPD.Z, KPPLVPD.R)="1")
  4086.     {
  4087.         Inpost := "КПП LVPD"
  4088.         return Inpost
  4089.     }
  4090.     else if (IsPlayerInRangeOfPoint(CHLV.X, CHLV.Y, CHLV.Z, CHLV.R)="1")
  4091.     {
  4092.         Inpost := "Мэрия LV"
  4093.         return Inpost
  4094.     }
  4095.     else if (IsPlayerInRangeOfPoint(JDLV.X, JDLV.Y, JDLV.Z, JDLV.R)="1")
  4096.     {
  4097.         Inpost := "ЖДЛВ"
  4098.         return Inpost
  4099.     }
  4100.     else if (IsPlayerInRangeOfPoint(T_LV_LS.X, T_LV_LS.Y, T_LV_LS.Z, T_LV_LS.R)="1")
  4101.     {
  4102.         Inpost := "Таможня LV-LS"
  4103.         return Inpost
  4104.     }
  4105.     else if (IsPlayerInRangeOfPoint(T_SF_LV.X, T_SF_LV.Y, T_SF_LV.Z, T_SF_LV.R)="1")
  4106.     {
  4107.         Inpost := "Таможня SF-LV"
  4108.         return Inpost
  4109.     }
  4110.     else if (IsPlayerInRangeOfPoint(T_LS_SF.X, T_LS_SF.Y, T_LS_SF.Z, T_LS_SF.R)="1")
  4111.     {
  4112.         Inpost := "Таможня LS-SF"
  4113.         return Inpost
  4114.     }
  4115.     else
  4116.     {
  4117.         return 0
  4118.     }
  4119. }
  4120. inPostEng()
  4121. {
  4122. JDLS := {X: "1785.413574", Y: "-1909.141602", Z: "13.993283", R: "45"}
  4123. CHLS := {X: "1481.575317", Y: "-1750.532959", Z: "16.042505", R: "50"}
  4124. KPPLSPD := {X: "1543.679688", Y: "-1627.167236", Z: "13.982813", R: "15"}
  4125. HLS := {X: "1177.892578", Y: "-1323.650757", Z: "14.693136", R: "40"}
  4126. AVLS := {X: "1202.490601", Y: "-1744.581299", Z: "14.191917", R: "50"}
  4127. KPPSFPD := {X: "-1572.757568", Y: "662.726624", Z: "7.787500", R: "15"}
  4128. HSF := {X: "-2656.206299", Y: "606.864624", Z: "15.053125", R: "40"}
  4129. CHSF := {X: "-2760.261230", Y: "375.565125", Z: "5.352239", R: "50"}
  4130. JDSF := {X: "-1993.992310", Y: "141.007004", Z: "28.139063", R: "50"}
  4131. HLV := {X: "1604.737915", Y: "1837.302979", Z: "11.420313", R: "30"}
  4132. KPPLVPD := {X: "2346.144775", Y: "2423.343018", Z: "11.401557", R: "10"}
  4133. CHLV := {X: "2388.144775", Y: "2465.935547", Z: "11.420313", R: "30"}
  4134. JDLV := {X: "2811.458008", Y: "1295.672729", Z: "11.350000", R: "80"}
  4135. T_LV_LS := {X: "1797.266968", Y: "823.091553", Z: "11.244115", R: "20"}
  4136. T_SF_LV := {X: "-1653.182739", Y: "559.955078", Z: "39.928123", R: "30"}
  4137.     if (IsPlayerInRangeOfPoint(JDLS.X, JDLS.Y, JDLS.Z, JDLS.R)="1")
  4138.     {
  4139.         Inpost := "Railway station LS"
  4140.         return Inpost
  4141.     }
  4142.     else if (IsPlayerInRangeOfPoint(CHLS.X, CHLS.Y, CHLS.Z, CHLS.R)="1")
  4143.     {
  4144.         Inpost := "city hall LS"
  4145.         return Inpost
  4146.     }
  4147.     else if (IsPlayerInRangeOfPoint(KPPLSPD.X, KPPLSPD.Y, KPPLSPD.Z, KPPLSPD.R)="1")
  4148.     {
  4149.         Inpost := "KPP LSPD"
  4150.         return Inpost
  4151.     }
  4152.     else if (IsPlayerInRangeOfPoint(HLS.X, HLS.Y, HLS.Z, HLS.R)="1")
  4153.     {
  4154.         Inpost := "Hospital LS"
  4155.         return Inpost
  4156.     }
  4157.     else if (IsPlayerInRangeOfPoint(AVLS.X, AVLS.Y, AVLS.Z, AVLS.R)="1")
  4158.     {
  4159.         Inpost := "Bus terminal LS"
  4160.         return Inpost
  4161.     }
  4162.     else if (IsPlayerInRangeOfPoint(KPPSFPD.X, KPPSFPD.Y, KPPSFPD.Z, KPPSFPD.R)="1")
  4163.     {
  4164.         Inpost := "KPP SFPD"
  4165.         return Inpost
  4166.     }
  4167.     else if (IsPlayerInRangeOfPoint(HSF.X, HSF.Y, HSF.Z, HSF.R)="1")
  4168.     {
  4169.         Inpost := "Hospital SF"
  4170.         return Inpost
  4171.     }
  4172.     else if (IsPlayerInRangeOfPoint(CHSF.X, CHSF.Y, CHSF.Z, CHSF.R)="1")
  4173.     {
  4174.         Inpost := "city hall SF"
  4175.         return Inpost
  4176.     }
  4177.     else if (IsPlayerInRangeOfPoint(JDSF.X, JDSF.Y, JDSF.Z, JDSF.R)="1")
  4178.     {
  4179.         Inpost := "Railway station SF"
  4180.         return Inpost
  4181.     }
  4182.     else if (IsPlayerInRangeOfPoint(HLV.X, HLV.Y, HLV.Z, HLV.R)="1")
  4183.     {
  4184.         Inpost := "Hospital LV"
  4185.         return Inpost
  4186.     }
  4187.     else if (IsPlayerInRangeOfPoint(KPPLVPD.X, KPPLVPD.Y, KPPLVPD.Z, KPPLVPD.R)="1")
  4188.     {
  4189.         Inpost := "KPP LVPD"
  4190.         return Inpost
  4191.     }
  4192.     else if (IsPlayerInRangeOfPoint(CHLV.X, CHLV.Y, CHLV.Z, CHLV.R)="1")
  4193.     {
  4194.         Inpost := "city hall LV"
  4195.         return Inpost
  4196.     }
  4197.     else if (IsPlayerInRangeOfPoint(JDLV.X, JDLV.Y, JDLV.Z, JDLV.R)="1")
  4198.     {
  4199.         Inpost := "Railway station LV"
  4200.         return Inpost
  4201.     }
  4202.     else if (IsPlayerInRangeOfPoint(T_LV_LS.X, T_LV_LS.Y, T_LV_LS.Z, T_LV_LS.R)="1")
  4203.     {
  4204.         Inpost := "Customs LV-LS"
  4205.         return Inpost
  4206.     }
  4207.     else if (IsPlayerInRangeOfPoint(T_SF_LV.X, T_SF_LV.Y, T_SF_LV.Z, T_SF_LV.R)="1")
  4208.     {
  4209.         Inpost := "Customs SF-LV"
  4210.         return Inpost
  4211.     }
  4212.     else if (IsPlayerInRangeOfPoint(T_LS_SF.X, T_LS_SF.Y, T_LS_SF.Z, T_LS_SF.R)="1")
  4213.     {
  4214.         Inpost := "Customs LS-SF"
  4215.         return Inpost
  4216.     }
  4217.     else
  4218.     {
  4219.         return 0
  4220.     }
  4221. }
  4222. getVehicleSirenState() {
  4223.     if(!checkHandles())
  4224.     return -1
  4225.     dwAddr := readDWORD(hGTA, ADDR_VEHICLE_PTR)
  4226.     if(ErrorLevel) {
  4227.         ErrorLevel := ERROR_READ_MEMORY
  4228.         return -1
  4229.     }
  4230.     if(!dwAddr)
  4231.     return -1
  4232.     cVal := readMem(hGTA, dwAddr + ADDR_VEHICLE_SIRENSTATE, 1, "Char")
  4233.     if(ErrorLevel) {
  4234.         ErrorLevel := ERROR_READ_MEMORY
  4235.         return -1
  4236.     }
  4237.     ErrorLevel := ERROR_OK
  4238.     return (cVal==-48)
  4239. }
  4240. GetMoPost(){
  4241. SV_KPP_1 := {X: "212.180481", Y: "1798.314209", Z: "18.323168", R: "15"}
  4242. SV_SKLAD := {X: "250.734238", Y: "1835.049561", Z: "18.270926", R: "15"}
  4243. SV_KPP_2 := {X: "121.046822", Y: "2066.117188", Z: "17.593664", R: "30"}
  4244. SV_ANGAR := {X: "293.387512", Y: "1888.370483", Z: "18.270926", R: "30"}
  4245. SV_VISH := {X: "225.055359", Y: "1808.448242", Z: "26.144825", R: "15"}
  4246. NV_KPP := {X: "-1530.420532", Y: "484.470276", Z: "7.779687", R: "30"}
  4247. NV_P_VISH := {X: "-1715.963867", Y: "270.900116", Z: "8.609352", R: "40"}
  4248.     if (IsPlayerInRangeOfPoint(SV_KPP_1.X, SV_KPP_1.Y, SV_KPP_1.Z, SV_KPP_1.R)="1")
  4249.     {
  4250.         Inpost := "КПП-1"
  4251.         return Inpost
  4252.     }
  4253.     else if (IsPlayerInRangeOfPoint(SV_SKLAD.X, SV_SKLAD.Y, SV_SKLAD.Z, SV_SKLAD.R)="1")
  4254.     {
  4255.         Inpost := "Склад"
  4256.         return Inpost
  4257.     }
  4258.     else if (IsPlayerInRangeOfPoint(SV_ANGAR.X, SV_ANGAR.Y, SV_ANGAR.Z, SV_ANGAR.R)="1")
  4259.     {
  4260.         Inpost := "Ангар"
  4261.         return Inpost
  4262.     }
  4263.     else if (IsPlayerInRangeOfPoint(SV_KPP_2.X, SV_KPP_2.Y, SV_KPP_2.Z, SV_KPP_2.R)="1")
  4264.     {
  4265.         Inpost := "КПП-2"
  4266.         return Inpost
  4267.     }
  4268.     else if (IsPlayerInRangeOfPoint(SV_VISH.X, SV_VISH.Y, SV_VISH.Z, SV_VISH.R)="1")
  4269.     {
  4270.         Inpost := "Вышка"
  4271.         return Inpost
  4272.     }
  4273.     else if (IsPlayerInRangeOfPoint(NV_KPP.X, NV_KPP.Y, NV_KPP.Z, NV_KPP.R)="1")
  4274.     {
  4275.         Inpost := "КПП"
  4276.         return Inpost
  4277.     }
  4278.     else if (IsPlayerInRangeOfPoint(NV_P_VISH.X, NV_P_VISH.Y, NV_P_VISH.Z, NV_P_VISH.R)="1")
  4279.     {
  4280.         Inpost := "Правобережная Вышка"
  4281.         return Inpost
  4282.     }
  4283.     else
  4284.     {
  4285.         return 0
  4286.     }
  4287. }
  4288. getPlayerColor(id)
  4289. {
  4290.     id += 0
  4291.     if(!checkHandles())
  4292.     return -1
  4293.     color := readDWORD(hGTA, dwSAMP + 0x216378 + 4*id)
  4294.     if(ErrorLevel) {
  4295.         ErrorLevel := ERROR_READ_MEMORY
  4296.         return -1
  4297.     }
  4298.     return color
  4299. }
  4300. comment = Оно тебе не надо
  4301.  
  4302. mtver := "2.4.3"
  4303. global TazerIn:=0
  4304. global TazerOut:=0
  4305. global TazerTo:=0
  4306. global WeaponDrawn:=0
  4307. CommandProcessor := new CommandProcessor()
  4308. CommandProcessor.SetStatusProcessor(true)
  4309. CommandProcessor.RegisterCommand("/su", "SU")
  4310. CommandProcessor.RegisterCommand("/cuff", "CUF")
  4311. CommandProcessor.RegisterCommand("/uncuff", "UNCUF")
  4312. CommandProcessor.RegisterCommand("/права", "PRAVA")
  4313. CommandProcessor.RegisterCommand("/патруль", "PATRL")
  4314. CommandProcessor.RegisterCommand("/ticket", "FINE")
  4315. CommandProcessor.RegisterCommand("/mhelp", "HELP")
  4316. CommandProcessor.RegisterCommand("/ppass", "PPASS")
  4317. CommandProcessor.RegisterCommand("/eject", "EJECT")
  4318. CommandProcessor.RegisterCommand("/invite", "INVITE")
  4319. CommandProcessor.RegisterCommand("/uninvite", "UNINVITE")
  4320. CommandProcessor.RegisterCommand("/arrest", "AREST")
  4321. CommandProcessor.RegisterCommand("/look", "OBISK")
  4322. CommandProcessor.RegisterCommand("/r", "RR")
  4323. CommandProcessor.RegisterCommand("/d", "DD")
  4324. CommandProcessor.RegisterCommand("/f", "FF")
  4325. CommandProcessor.RegisterCommand("/changeskin", "SKIN")
  4326. CommandProcessor.RegisterCommand("/ud", "UD")
  4327. CommandProcessor.RegisterCommand("/маскировка", "MASK")
  4328. CommandProcessor.RegisterCommand("/push", "CPUT")
  4329. CommandProcessor.RegisterCommand("/бомба", "BOMB")
  4330. CommandProcessor.RegisterCommand("/fwarn", "FWARN")
  4331. CommandProcessor.RegisterCommand("/rang", "RANG")
  4332. CommandProcessor.RegisterCommand("/funwarn", "UNWARN")
  4333. CommandProcessor.RegisterCommand("/time", "TIME")
  4334. CommandProcessor.RegisterCommand("/mask", "MSK")
  4335. CommandProcessor.RegisterCommand("/healme", "HEAL")
  4336. CommandProcessor.RegisterCommand("/лекция", "LEC")
  4337. CommandProcessor.RegisterCommand("/sos", "SOS")
  4338. CommandProcessor.RegisterCommand("/esp", "POD")
  4339. CommandProcessor.RegisterCommand("/hack", "HACK")
  4340. CommandProcessor.RegisterCommand("/unmask", "UNMASK")
  4341. CommandProcessor.RegisterCommand("/zp", "ZP")
  4342. CommandProcessor.RegisterCommand("/sc", "SC")
  4343. CommandProcessor.RegisterCommand("/пост", "APOST")
  4344. CommandProcessor.RegisterCommand("/таймер", "TIMER")
  4345. CommandProcessor.RegisterCommand("/tstop", "TSTOP")
  4346. CommandProcessor.RegisterCommand("/givekey", "SKIP")
  4347. CommandProcessor.RegisterCommand("/полиграф", "POLIG")
  4348. CommandProcessor.RegisterCommand("/take", "TAKE")
  4349. CommandProcessor.RegisterCommand("/clear", "CLEAR")
  4350. CommandProcessor.RegisterCommand("/search", "SSSEARCH")
  4351. CommandProcessor.RegisterCommand("/incar", "INCAR")
  4352. CommandProcessor.RegisterCommand("/timeinpost", "TIMEPOST")
  4353. CommandProcessor.RegisterCommand("/obc", "KPK")
  4354. CommandProcessor.RegisterCommand("/playrad", "RADIO")
  4355. CommandProcessor.RegisterCommand("/stoprad", "SRAD")
  4356. CommandProcessor.RegisterCommand("/myplay", "PLAYMY")
  4357. CommandProcessor.RegisterCommand("/gotome", "GOTOME")
  4358. CommandProcessor.RegisterCommand("/radar", "RADAR")
  4359. CommandProcessor.RegisterCommand("/radoff", "RADOFF")
  4360. Random randh, 1, 11
  4361. if (randh==1)
  4362. {
  4363.     helpname := "Brandon"
  4364. }
  4365. if (randh==2)
  4366. {
  4367.     helpname := "Richard"
  4368. }
  4369. if (randh==3)
  4370. {
  4371.     helpname := "Jennyfer"
  4372. }
  4373. if (randh==4)
  4374. {
  4375.     helpname := "Patrick"
  4376. }
  4377. if (randh==5)
  4378. {
  4379.     helpname := "Charly"
  4380. }
  4381. if (randh==6)
  4382. {
  4383.     helpname := "Mario"
  4384. }
  4385. if (randh==7)
  4386. {
  4387.     helpname := "John"
  4388. }
  4389. if (randh==8)
  4390. {
  4391.     helpname := "Ricco"
  4392. }
  4393. if (randh==9)
  4394. {
  4395.     helpname := "Ozzy"
  4396. }
  4397. if (randh==10)
  4398. {
  4399.     helpname := "Thomas"
  4400. }
  4401. if (randh==11)
  4402. {
  4403.     helpname := "Homer"
  4404. }
  4405. settimer, PRIVETSTVIE, 1500
  4406. FileInstall, INPOST.txt, %A_MyDocuments%\GTA San Andreas User Files\SAMP\INPOST.txt
  4407. today1 := A_DD
  4408. mount1 := A_MM
  4409. Fileread, day, %A_MyDocuments%\GTA San Andreas User Files\SAMP\INPOST.txt
  4410. if RegExMatch(day, "(.*[0-9]+) (.*[0-9]+) (.*[0-9]+)", posst)
  4411. {
  4412.     if (posst1==mount1 && posst2==today1)
  4413.     {
  4414.         settimer, TIMEINPOST, 60000
  4415.     }
  4416.     else
  4417.     {
  4418.         FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\INPOST.txt
  4419.         FileAppend, %mount1% %today1% 0, %A_MyDocuments%\GTA San Andreas User Files\SAMP\INPOST.txt
  4420.         settimer, TIMEINPOST, 60000
  4421.     }
  4422. }
  4423. ReadIni:
  4424. RegRead, RegPlayerName, HKEY_CURRENT_USER\Software\SAMP, PlayerName
  4425. IniRead, myname, Setting.ini, Settings, myname
  4426. IniRead, zvan, Setting.ini, Settings, zvan
  4427. IniRead, org, Setting.ini, Settings, org
  4428. IniRead, sex, Setting.ini, Settings, sex
  4429. IniRead, rung, Setting.ini, Settings, rung
  4430. IniRead, tegr, Setting.ini, Settings, tegr
  4431. IniRead, tegd, Setting.ini, Settings, tegd
  4432. IniRead, tegf, Setting.ini, Settings, tegf
  4433. IniRead, ascreen, Setting.ini, Settings, ascreen
  4434. IniRead, raz, Setting.ini, Settings, raz
  4435. IniRead, clock, Setting.ini, Settings, clock
  4436. IniRead, adok, Setting.ini, Settings, adok
  4437. IniRead, zad, Setting.ini, Settings, zad
  4438. IniRead, phone, Setting.ini, Settings, phone
  4439. IniRead, RPgun, Setting.ini, Settings, RPgun
  4440. IniRead, Podskaz, Setting.ini, Settings, Podskaz
  4441. IniRead, log, Setting.ini, Settings, log
  4442. IniRead, print, Setting.ini, Settings, print
  4443. IniRead, HK1, Setting.ini, KeySetup, HK1
  4444. IniRead, HK2, Setting.ini, KeySetup, HK2
  4445. IniRead, HK3, Setting.ini, KeySetup, HK3
  4446. IniRead, HK4, Setting.ini, KeySetup, HK4
  4447. IniRead, HK5, Setting.ini, KeySetup, HK5
  4448. IniRead, BS1, Setting.ini, Settings, BS1
  4449. IniRead, BS2, Setting.ini, Settings, BS2
  4450. IniRead, BS3, Setting.ini, Settings, BS3
  4451. IniRead, BS4, Setting.ini, Settings, BS4
  4452. IniRead, BS5, Setting.ini, Settings, BS5
  4453. IniRead, HK6, Setting.ini, KeySetup, HK6
  4454. IniRead, HK7, Setting.ini, KeySetup, HK7
  4455. IniRead, HK8, Setting.ini, KeySetup, HK8
  4456. IniRead, HK9, Setting.ini, KeySetup, HK9
  4457. IniRead, HK10, Setting.ini, KeySetup, HK10
  4458. Index := 0
  4459. loop, %BS1%
  4460. {
  4461.     Index++
  4462.     IniRead, B1ind%A_Index%, Setting.ini, Binder1, Bind%Index%
  4463.     IniRead, D1elay%A_Index%, Setting.ini, Binder1, Delay%Index%
  4464. }
  4465. Index := 0
  4466. loop, %BS2%
  4467. {
  4468.     Index++
  4469.     IniRead, B2ind%A_Index%, Setting.ini, Binder2, Bind%Index%
  4470.     IniRead, D2elay%A_Index%, Setting.ini, Binder2, Delay%Index%
  4471. }
  4472. Index := 0
  4473. loop, %BS3%
  4474. {
  4475.     Index++
  4476.     IniRead, B3ind%A_Index%, Setting.ini, Binder3, Bind%Index%
  4477.     IniRead, D3elay%A_Index%, Setting.ini, Binder3, Delay%Index%
  4478. }
  4479. Index := 0
  4480. loop, %BS4%
  4481. {
  4482.     Index++
  4483.     IniRead, B4ind%A_Index%, Setting.ini, Binder4, Bind%Index%
  4484.     IniRead, D4elay%A_Index%, Setting.ini, Binder4, Delay%Index%
  4485. }
  4486. Index := 0
  4487. loop, %BS5%
  4488. {
  4489.     Index++
  4490.     IniRead, B5ind%A_Index%, Setting.ini, Binder5, Bind%Index%
  4491.     IniRead, D5elay%A_Index%, Setting.ini, Binder5, Delay%Index%
  4492. }
  4493. if (BS1=="ERROR")
  4494. {
  4495.     BS1 := ""
  4496. }
  4497. if (BS2=="ERROR")
  4498. {
  4499.     BS2 := ""
  4500. }
  4501. if (BS3=="ERROR")
  4502. {
  4503.     BS3 := ""
  4504. }
  4505. if (BS4=="ERROR")
  4506. {
  4507.     BS4 := ""
  4508. }
  4509. if (BS5=="ERROR")
  4510. {
  4511.     BS5 := ""
  4512. }
  4513. if (myname=="ERROR")
  4514. {
  4515.     myname := RegExReplace(RegPlayerName,"_"," ")
  4516. }
  4517. if (zvan=="ERROR")
  4518. {
  4519.     zvan := "Рядовой"
  4520. }
  4521. if (tegr=="ERROR")
  4522. {
  4523.     tegr := ""
  4524. }
  4525. if (tegd=="ERROR")
  4526. {
  4527.     tegd := ""
  4528. }
  4529. if (tegf=="ERROR")
  4530. {
  4531.     tegf := ""
  4532. }
  4533. if (phone=="ERROR")
  4534. {
  4535.     phone := "000000"
  4536. }
  4537. if (zad=="ERROR")
  4538. {
  4539.     zad := "300000"
  4540. }
  4541. if (sex=="ERROR")
  4542. {
  4543.     sex := "Мужской"
  4544. }
  4545. if (org=="ERROR")
  4546. {
  4547.     org := "LSPD"
  4548. }
  4549. if (rung=="ERROR")
  4550. {
  4551.     rung := "1"
  4552. }
  4553. HotKey, %HK1%, Off, UseErrorLevel
  4554. Gui, Submit, NoHide,
  4555. HotKey, %HK1%, Active1, On, UseErrorLevel
  4556. HotKey, %HK2%, Off, UseErrorLevel
  4557. Gui, Submit, NoHide,
  4558. HotKey, %HK2%, Active2, On, UseErrorLevel
  4559. HotKey, %HK3%, Off, UseErrorLevel
  4560. Gui, Submit, NoHide,
  4561. HotKey, %HK3%, Active3, On, UseErrorLevel
  4562. HotKey, %HK4%, Off, UseErrorLevel
  4563. Gui, Submit, NoHide,
  4564. HotKey, %HK4%, Active4, On, UseErrorLevel
  4565. HotKey, %HK5%, Off, UseErrorLevel
  4566. Gui, Submit, NoHide,
  4567. HotKey, %HK5%, Active5, On, UseErrorLevel
  4568. HotKey, %HK6%, Off, UseErrorLevel
  4569. Gui, Submit, NoHide,
  4570. HotKey, %HK6%, Active6, On, UseErrorLevel
  4571. HotKey, %HK7%, Off, UseErrorLevel
  4572. Gui, Submit, NoHide,
  4573. HotKey, %HK7%, Active7, On, UseErrorLevel
  4574. HotKey, %HK8%, Off, UseErrorLevel
  4575. Gui, Submit, NoHide,
  4576. HotKey, %HK8%, Active8, On, UseErrorLevel
  4577. HotKey, %HK9%, Off, UseErrorLevel
  4578. Gui, Submit, NoHide,
  4579. HotKey, %HK9%, Active9, On, UseErrorLevel
  4580. HotKey, %HK10%, Off, UseErrorLevel
  4581. Gui, Submit, NoHide,
  4582. HotKey, %HK10%, Active10, On, UseErrorLevel
  4583. if RPgun =1
  4584. {
  4585.     Settimer, UnloadGun, 2000
  4586. }
  4587. if Podskaz =1
  4588. {
  4589.     Settimer, TOZP, 60000
  4590. }
  4591. if sex =Мужской
  4592. {
  4593.     Female := ""
  4594.     LA := ""
  4595. }
  4596. if sex =Женский
  4597. {
  4598.     Female := "а"
  4599.     LA := "ла"
  4600. }
  4601. SetTimer, RPcar, 500
  4602. Gui, 1:Font, S8 CDefault, Franklin Gothic Medium
  4603. Gui, +Theme
  4604. FileInstall, C:\Users\Zver\Desktop\АХК\MVD Tools\Back.png, %A_Temp%\Back.png
  4605. FileInstall, C:\Users\Zver\Desktop\АХК\MVD Tools\Back2.png, %A_Temp%\Back2.png
  4606. FileInstall, C:\Users\Zver\Desktop\АХК\MVD Tools\backbin.png, %A_Temp%\backbin.png
  4607. Gui, Add, Picture, x-8 y-1 w750 h380 , %A_Temp%\Back.png
  4608. Gui, Add, Text, x36 y39 w100 h30 +BackgroundTrans, Ваш ник (без _ ):
  4609. Gui, Add, Edit, x140 y39 w100 h20 vmyname, % myname
  4610. Gui, Add, Text, x36 y69 w100 h30 +BackgroundTrans, Ваша должность:
  4611. Gui, Add, Edit, x140 y69 w100 h20 vzvan, % zvan
  4612. Gui, Add, Text, x36 y99 w100 h30 +BackgroundTrans, Ваша организация:
  4613. Gui, Add, DropDownList, x140 y99 w100 h500 vorg, LSPD|SFPD|LVPD|FBI
  4614. GuiControl, ChooseString, org, %org%
  4615. Gui, Add, Text, x36 y139 w100 h30 +BackgroundTrans, Ваш пол:
  4616. Gui, Add, DropDownList, x140 y139 w100 h500 vsex, Мужской|Женский
  4617. GuiControl, ChooseString, sex, %sex%
  4618. Gui, Add, Text, x36 y179 w100 h30 +BackgroundTrans, Ранг:
  4619. Gui, Add, DropDownList, x140 y179 w100 h500 vrung, 1|2|3|4|5|6|7|8|9|10
  4620. GuiControl, ChooseString, rung, %rung%
  4621. Gui, Add, Text, x36 y219 w100 h30 +BackgroundTrans, Номер телефона:
  4622. Gui, Add, Edit, x140 y219 w100 h20 vphone, % phone
  4623. Gui, Add, Text, x282 y39 w100 h30 +BackgroundTrans, Тег в /r
  4624. Gui, Add, Edit, x392 y39 w100 h20 vtegr, % tegr
  4625. Gui, Add, Text, x282 y64 w100 h30 +BackgroundTrans, Тег в /f
  4626. Gui, Add, Edit, x392 y64 w100 h20 vtegf, % tegf
  4627. Gui, Add, Text, x282 y89 w100 h30 +BackgroundTrans, Тег в /d
  4628. Gui, Add, Edit, x392 y89 w100 h20 vtegd, % tegd
  4629. Gui, Add, CheckBox, x282 y143 w13 h13 vascreen Checked%ascreen%, Автоскрин
  4630. Gui, Add, Text, x305 y143 w100 h30 +BackgroundTrans, Автоскрин
  4631. Gui, Add, CheckBox, x282 y158 w13 h13 vraz Checked%raz%, РП отыгровка рации
  4632. Gui, Add, Text, x305 y158 w150 h30 +BackgroundTrans, РП отыгровка рации
  4633. Gui, Add, CheckBox, x282 y173 w13 h13 vclock Checked%clock%, РП отыгровка часов
  4634. Gui, Add, Text, x305 y173 w150 h30 +BackgroundTrans, РП отыгровка часов
  4635. Gui, Add, CheckBox, x282 y188 w13 h13 vRPgun Checked%RPgun%, РП отыгровка оружия
  4636. Gui, Add, Text, x305 y188 w150 h30 +BackgroundTrans, РП отыгровка оружия
  4637. Gui, Add, CheckBox, x282 y203 w13 h13 vPodskaz Checked%Podskaz%, Подсказки
  4638. Gui, Add, Text, x305 y203 w150 h30 +BackgroundTrans, Подсказки
  4639. Gui, Add, CheckBox, x282 y218 w13 h13 vlog Checked%log%, Логирование действий
  4640. Gui, Add, Text, x305 y218 w150 h30 +BackgroundTrans, Логирование действий
  4641. Gui, Add, CheckBox, x282 y233 w13 h13 vprint Checked%print%, Отоброжение названий постов
  4642. Gui, Add, Text, x305 y233 w200 h30 +BackgroundTrans, Отображение названий постов
  4643. Gui, Add, CheckBox, x36 y280 w13 h13 vadok Checked%adok%, Автодоклад с патруля/поста
  4644. Gui, Add, Text, x56 y280 w150 h30 +BackgroundTrans, Автодоклад с патруля/поста
  4645. Gui, Add, Text, x36 y310 w200 h60 +BackgroundTrans, Время задержки в миллисекундах`n (5 минут- 300000 миллисекунд)
  4646. Gui, Add, Edit, x222 y312 w100 h20 vzad, % zad
  4647. Gui, 1:Add, Button, x352 y323 w145 h33 gSave, Применить
  4648. Gui, 1:Add, Button, x352 y266 w145 h33 gBINDER, Биндер
  4649. Gui, Add, Text, x530 y34 w120 h20 +BackgroundTrans, Удостоверение:
  4650. Gui, Add, HotKey, x628 y34 w87 h20 vHK1, %HK1%
  4651. Gui, Add, Text, x530 y54 w120 h30 +BackgroundTrans, Часы:
  4652. Gui, Add, HotKey, x628 y54 w87 h20 vHK2, %HK2%
  4653. Gui, Add, Text, x530 y74 w120 h30 +BackgroundTrans, Мегафон:
  4654. Gui, Add, HotKey, x628 y74 w87 h20 vHK3, %HK3%
  4655. Gui, Add, Text, x530 y94 w120 h30 +BackgroundTrans, Подножка:   ПКМ +
  4656. Gui, Add, HotKey, x628 y94 w87 h20 vHK4, %HK4%
  4657. Gui, Add, Text, x530 y115 w120 h30 +BackgroundTrans, Кричалка
  4658. Gui, Add, HotKey, x628 y114 w87 h20 vHK5, %HK5%
  4659. Gui, 1:Add, Button, x548 y266 w145 h33 gPom, Помощь
  4660. Gui, 1:Add, Button, x548 y209 w145 h33 gAvtori, Авторы
  4661. Gui, 1:Add, Button, x548 y152 w145 h33 gSvaz, Обратная Связь
  4662. Gui, 1:Add, Button, x548 y323 w145 h33 gLaunchGoogle, Обновить
  4663. Gui, 1:Font, S10 CDefault, Franklin Gothic Medium
  4664. Gui, Add, Text, x770 y223 w1000 h1000 +BackgroundTrans, Имя - %myname%
  4665. Gui, Add, Text, x915 y223 w1000 h1000 +BackgroundTrans, Место службы - %org%
  4666. Gui, Add, Text, x770 y268 w1000 h1000 +BackgroundTrans, Звание - %zvan%
  4667. Gui, Add, Text, x915 y268 w1000 h1000 +BackgroundTrans, Удостоверение №%phone%
  4668. Gui, Add, Text, x770 y313 w1000 h1000 +BackgroundTrans, Пол - %sex%
  4669. Gui, Show, w740 h379, MVD Tools v%mtver%
  4670. return
  4671. LaunchGoogle:
  4672. verscript := "2.4.3"
  4673. buildscr := "8"
  4674. SplashTextOn, , 60,Обновление, Ожидайте..`nПроверяем наличие обновлений.
  4675. URLDownloadToFile, https://raw.githubusercontent.com/Capo228/MVD_Support/master/upd.txt, upd.txt
  4676. FileRead, toup, upd.txt
  4677. if RegExMatch(toup, "\Qvers - \E(.*) \Qbui - \E(.*) \Qlink - \E(.*)", upd)
  4678. {
  4679.     SplashTextOff
  4680.     if (upd2 > buildscr)
  4681.     {
  4682.         msgbox, 1, Обновление, Хотите ли Вы обновиться до версиии %upd1%?
  4683.         IfMsgBox OK
  4684.         {
  4685.             FileDelete, upd.txt
  4686.             SplashTextOn, , 60,Автообновление, Обновление. Ожидайте..`nНастраиваем систему обновления.
  4687.             sleep, 1000
  4688.             SplashTextOff
  4689.             Gui, 7:Show, w353 h40, MVD Tools [Загрузка обновления]
  4690.             Gui, 7:Add, Picture, x-8 y-1 w750 h380 , %A_Temp%\Back2.png
  4691.             Gui, 7:Add, Progress, x12 y10 w330 h20 , 0
  4692.             sleep 100
  4693.             Gui, 7:Add, Progress, x12 y10 w330 h20 , 10
  4694.             Sleep, 200
  4695.             Gui, 7:Add, Progress, x12 y10 w330 h20 , 20
  4696.             Sleep, 200
  4697.             Gui, 7:Add, Progress, x12 y10 w330 h20 , 30
  4698.             Sleep, 200
  4699.             Gui, 7:Add, Progress, x12 y10 w330 h20 , 40
  4700.             Sleep, 200
  4701.             Gui, 7:Add, Progress, x12 y10 w330 h20 , 50
  4702.             Sleep, 200
  4703.             URLDownloadToFile, %upd3%, MVD Tools v%upd1%.exe
  4704.             Gui, 7:Add, Progress, x12 y10 w330 h20 , 60
  4705.             Sleep, 200
  4706.             Gui, 7:Add, Progress, x12 y10 w330 h20 , 70
  4707.             Sleep, 200
  4708.             Gui, 7:Add, Progress, x12 y10 w330 h20 , 80
  4709.             Sleep, 200
  4710.             Gui, 7:Add, Progress, x12 y10 w330 h20 , 90
  4711.             Sleep, 200
  4712.             Gui, 7:Add, Progress, x12 y10 w330 h20 , 100
  4713.             Sleep, 200
  4714.             Gui, 7:Add, Progress, x12 y10 w330 h20 , 110
  4715.             Gui, 7:Destroy
  4716.             sleep 500
  4717.             SplashTextOn, , 60,Автообновление, Обновление. Ожидайте..`nЗапускаем обновленную версию.
  4718.             sleep 1000
  4719.             Run, MVD Tools v%upd1%.exe
  4720.             ExitApp
  4721.         }
  4722.     }
  4723.     else
  4724.     {
  4725.         FileDelete, upd.txt
  4726.         MsgBox, 64, Обновление, У вас актуальная версия!
  4727.     }
  4728. }
  4729. else
  4730. {
  4731.     SplashTextOff
  4732.     FileDelete, upd.txt
  4733.     MsgBox, 16, Error, Не удалось установить связь с сервером!
  4734. }
  4735. return
  4736. Save:
  4737. Gui, 1:Submit, NoHide
  4738. HotKey, %HK6%, Off, UseErrorLevel
  4739. Gui, Submit, NoHide,
  4740. HotKey, %HK6%, Active6, On, UseErrorLevel
  4741. HotKey, %HK7%, Off, UseErrorLevel
  4742. Gui, Submit, NoHide,
  4743. HotKey, %HK7%, Active7, On, UseErrorLevel
  4744. HotKey, %HK8%, Off, UseErrorLevel
  4745. Gui, Submit, NoHide,
  4746. HotKey, %HK8%, Active8, On, UseErrorLevel
  4747. HotKey, %HK9%, Off, UseErrorLevel
  4748. Gui, Submit, NoHide,
  4749. HotKey, %HK9%, Active9, On, UseErrorLevel
  4750. HotKey, %HK10%, Off, UseErrorLevel
  4751. Gui, Submit, NoHide,
  4752. HotKey, %HK10%, Active10, On, UseErrorLevel
  4753. IniWrite, %myname%, Setting.ini, Settings, myname
  4754. IniWrite, %zvan%, Setting.ini, Settings, zvan
  4755. IniWrite, %org%, Setting.ini, Settings, org
  4756. IniWrite, %sex%, Setting.ini, Settings, sex
  4757. IniWrite, %rung%, Setting.ini, Settings, rung
  4758. IniWrite, %tegr%, Setting.ini, Settings, tegr
  4759. IniWrite, %tegd%, Setting.ini, Settings, tegd
  4760. IniWrite, %tegf%, Setting.ini, Settings, tegf
  4761. IniWrite, %ascreen%, Setting.ini, Settings, ascreen
  4762. IniWrite, %raz%, Setting.ini, Settings, raz
  4763. IniWrite, %clock%, Setting.ini, Settings, clock
  4764. IniWrite, %adok%, Setting.ini, Settings, adok
  4765. IniWrite, %zad%, Setting.ini, Settings, zad
  4766. IniWrite, %phone%, Setting.ini, Settings, phone
  4767. IniWrite, %RPgun%, Setting.ini, Settings, RPgun
  4768. IniWrite, %Podskaz%, Setting.ini, Settings, Podskaz
  4769. IniWrite, %log%, Setting.ini, Settings, log
  4770. IniWrite, %print%, Setting.ini, Settings, print
  4771. IniWrite, %HK1%, Setting.ini, KeySetup, HK1
  4772. IniWrite, %HK2%, Setting.ini, KeySetup, HK2
  4773. IniWrite, %HK3%, Setting.ini, KeySetup, HK3
  4774. IniWrite, %HK4%, Setting.ini, KeySetup, HK4
  4775. IniWrite, %HK5%, Setting.ini, KeySetup, HK5
  4776. IniWrite, %BS1%, Setting.ini, Settings, BS1
  4777. IniWrite, %BS2%, Setting.ini, Settings, BS2
  4778. IniWrite, %BS3%, Setting.ini, Settings, BS3
  4779. IniWrite, %BS4%, Setting.ini, Settings, BS4
  4780. IniWrite, %BS5%, Setting.ini, Settings, BS5
  4781. IniWrite, %HK6%, Setting.ini, KeySetup, HK6
  4782. IniWrite, %HK7%, Setting.ini, KeySetup, HK7
  4783. IniWrite, %HK8%, Setting.ini, KeySetup, HK8
  4784. IniWrite, %HK9%, Setting.ini, KeySetup, HK9
  4785. IniWrite, %HK10%, Setting.ini, KeySetup, HK10
  4786. Index := 0
  4787. loop, %BS1%
  4788. {
  4789.     Index++
  4790.     IniWrite, % B1ind%A_Index%, Setting.ini, Binder1, Bind%Index%
  4791.     IniWrite, % D1elay%A_Index%, Setting.ini, Binder1, Delay%Index%
  4792. }
  4793. Index := 0
  4794. loop, %BS2%
  4795. {
  4796.     Index++
  4797.     IniWrite, % B2ind%A_Index%, Setting.ini, Binder2, Bind%Index%
  4798.     IniWrite, % D2elay%A_Index%, Setting.ini, Binder2, Delay%Index%
  4799. }
  4800. Index := 0
  4801. loop, %BS3%
  4802. {
  4803.     Index++
  4804.     IniWrite, % B3ind%A_Index%, Setting.ini, Binder3, Bind%Index%
  4805.     IniWrite, % D3elay%A_Index%, Setting.ini, Binder3, Delay%Index%
  4806. }
  4807. Index := 0
  4808. loop, %BS4%
  4809. {
  4810.     Index++
  4811.     IniWrite, % B4ind%A_Index%, Setting.ini, Binder4, Bind%Index%
  4812.     IniWrite, % D4elay%A_Index%, Setting.ini, Binder4, Delay%Index%
  4813. }
  4814. Index := 0
  4815. loop, %BS5%
  4816. {
  4817.     Index++
  4818.     IniWrite, % B5ind%A_Index%, Setting.ini, Binder5, Bind%Index%
  4819.     IniWrite, % D5elay%A_Index%, Setting.ini, Binder5, Delay%Index%
  4820. }
  4821. Gui, Submit, NoHide
  4822. MsgBox, 48, Успешно, Настройки сохранены.
  4823. Reload
  4824. Return
  4825. ShowClose:
  4826. ExitApp
  4827. Return
  4828. GuiClose:
  4829. ExitApp
  4830. Return
  4831. BINDER:
  4832. Gui, 4:Destroy
  4833. Gui, 4:Font, S8 CDefault, Franklin Gothic Medium
  4834. Gui, 4:Add, Hotkey, x22 y54 w100 h30 vHK6, %HK6%
  4835. Gui, 4:Add, Hotkey, x22 y104 w100 h30 vHK7, %HK7%
  4836. Gui, 4:Add, Hotkey, x22 y154 w100 h30 vHK8, %HK8%
  4837. Gui, 4:Add, Hotkey, x22 y204 w100 h30 vHK9, %HK9%
  4838. Gui, 4:Add, Hotkey, x22 y254 w100 h30 vHK10, %HK10%
  4839. Gui, 4:Add, Edit, x162 y54 w100 h30 vBS1, %BS1%
  4840. Gui, 4:Add, Edit, x162 y104 w100 h30 vBS2, %BS2%
  4841. Gui, 4:Add, Edit, x162 y154 w100 h30 vBS3, %BS3%
  4842. Gui, 4:Add, Edit, x162 y204 w100 h30 vBS4, %BS4%
  4843. Gui, 4:Add, Edit, x162 y254 w100 h30 vBS5, %BS5%
  4844. Gui, 4:Add, Button, x302 y54 w98 h30 gBIN1, Бинд №1
  4845. Gui, 4:Add, Button, x302 y105 w98 h30 gBIN2, Бинд №2
  4846. Gui, 4:Add, Button, x302 y155 w98 h30 gBIN3, Бинд №3
  4847. Gui, 4:Add, Button, x302 y205 w98 h30 gBIN4, Бинд №4
  4848. Gui, 4:Add, Button, x302 y255 w98 h30 gBIN5, Бинд №5
  4849. Gui, 4:Add, Button, x162 y306 w98 h30 gSave, Сохранить
  4850. Gui, 4:Show, w424 h353, MVD Tools BINDER
  4851. Gui, 4:Add, Picture, x0 y0 w424 h355 , %A_Temp%\backbin.png
  4852. return
  4853. Pom:
  4854. Gui, 2:Font, S10 CDefault, Franklin Gothic Medium
  4855. Gui, 2:+Theme
  4856. Gui, 2:Show, w596 h150, MVD Tools - Помощь
  4857. Gui, 2:Add, Text, x15 y15 w1000 h30 +BackgroundTrans, 1) Для отображения списка команд введите /mhelp.
  4858. Gui, 2:Add, Text, x15 y50 w1000 h30 +BackgroundTrans, 2) Для корректной работы скрипта рекомендуется запуск от имени администратора.
  4859. Gui, 2:Add, Text, x15 y85 w1000 h30 +BackgroundTrans, 3) Для коректной работы скрипта, требуется перетащить его в отдельную папку на рабочем столе.
  4860. Gui, 2:Add, Text, x15 y115 w1000 h30 +BackgroundTrans, 4) Для коректной работы скрипта, требуется установить "AutoHotKey" с кодировкой "Ansi-32".
  4861. Gui, 2:Add, Picture, x-8 y-1 w750 h380 , %A_Temp%\Back2.png
  4862. return
  4863. Avtori:
  4864. Gui, 3:Font, S10 CDefault, Franklin Gothic Medium
  4865. Gui, 3:+Theme
  4866. Gui, 3:Show, w320 h90, MVD Tools - Авторы
  4867. Gui, 3:Add, Text, x15 y15 w1000 h30 +BackgroundTrans, Louis Capo - Автор скрипта.
  4868. Gui, 3:Add, Text, x15 y50 w1000 h30 +BackgroundTrans, Ricco Streten - Помощь в отладке скрипта, дизайн.
  4869. Gui, 3:Add, Picture, x-8 y-1 w750 h380 , %A_Temp%\Back2.png
  4870. return
  4871. Svaz:
  4872. Run, https://goo.gl/forms/8ClYiX4WIVGSOWcG2
  4873. return
  4874. Active1:
  4875. if org =FBI
  4876. {
  4877.     if (rung < 3)
  4878.     {
  4879.         SendChat("/me засунул"Female " руку в карман ветровки")
  4880.         Sleep 1200
  4881.         SendChat("/me достав из кармана ветровки значок, показал"Female " его")
  4882.         Sleep 1000
  4883.         SendChat("/anim 17")
  4884.         Sleep 1000
  4885.         SendChat("/ud")
  4886.         sleep 1200
  4887.     Send,{Enter}
  4888.         return
  4889.     }
  4890.     if (rung > 2)
  4891.     {
  4892.         SendChat("/me засунул"Female " руку в карман пиджака")
  4893.         Sleep 1200
  4894.         SendChat("/me достав из внутреннего кармана пиджака значок, показал"Female " его")
  4895.         Sleep 1000
  4896.         SendChat("/anim 17")
  4897.         Sleep 1000
  4898.         SendChat("/ud")
  4899.         sleep 1200
  4900.     Send,{Enter}
  4901.         return
  4902.     }
  4903. }
  4904. else
  4905. {
  4906.     if (org=="МВД")
  4907.     {
  4908.         SendChat("/me засунул"Female " руку в карман пиджака")
  4909.         Sleep 1200
  4910.         SendChat("/me достав из внутреннего кармана пиджака удостоверение, раскрыл"Female " его")
  4911.         Sleep 1000
  4912.         SendChat("/anim 17")
  4913.         Sleep 1000
  4914.         SendChat("/ud")
  4915.         sleep 1200
  4916.     Send,{Enter}
  4917.         return
  4918.     }
  4919.     if (rang > 7)
  4920.     {
  4921.         SendChat("/me засунул"Female " руку в карман пиджака")
  4922.         Sleep 1200
  4923.         SendChat("/me достав из внутреннего кармана пиджака удостоверение, раскрыл"Female " его")
  4924.         Sleep 1000
  4925.         SendChat("/anim 17")
  4926.         Sleep 1000
  4927.         SendChat("/ud")
  4928.         sleep 1200
  4929.     Send,{Enter}
  4930.         return
  4931.     }
  4932.     else
  4933.     {
  4934.         SendChat("/me засунул"Female " руку в карман кителя")
  4935.         Sleep 1200
  4936.         SendChat("/me достав из внутреннего кармана кителя удостоверение, раскрыл"Female " его")
  4937.         Sleep 1000
  4938.         SendChat("/anim 17")
  4939.         Sleep 1000
  4940.         SendChat("/ud")
  4941.         sleep 1200
  4942.     Send,{Enter}
  4943.         return
  4944.     }
  4945. }
  4946. return
  4947. Active2:
  4948. vrem := time()
  4949. RegExMatch(vrem, "(.*)\Q:\E(.*)\Q:\E(.*)", tvrem)
  4950. if clock =1
  4951. {
  4952.     SendChat("/me подняв руку, отогнул"Female " рукав")
  4953.     Sleep 2500
  4954.     SendChat("/time")
  4955.     Sleep 1300
  4956.     SendChat("/do На часах: "tvrem1 " час(-ов) | "tvrem2 " минут(-ы) | "tvrem3 " секунд(-ы)")
  4957. }
  4958. else
  4959. {
  4960.     SendChat("/time")
  4961. }
  4962. return
  4963. Active3:
  4964. Ids := NearPlayerInCar(90)
  4965. If (Ids <= 0){
  4966.     SendChat("/m Водитель остановите транспортное средство и прижмитесь к обочине!")
  4967.     sleep 1200
  4968.     SendChat("/m В противном случае, я буду вынужден открыть огонь!")
  4969. }
  4970. else
  4971. {
  4972.     if (getTargetVehicleModelNameById(NearPlayerInCar(90))=="MountainBike") or (getTargetVehicleModelNameById(NearPlayerInCar(90))=="Bike") or (getTargetVehicleModelNameById(NearPlayerInCar(90))=="BMX"){
  4973.         SendChat("/m Велосипедист на "getTargetVehicleModelNameById(NearPlayerInCar(90)) ", немедленно прикратите движение!")
  4974.         sleep 1200
  4975.         SendChat("/m В противном случае, я буду вынужден открыть огонь!")
  4976.         return
  4977.     }
  4978.     else if (getTargetVehicleModelNameById(NearPlayerInCar(90))=="PCJ-600") or (getTargetVehicleModelNameById(NearPlayerInCar(90))=="Faggio") or (getTargetVehicleModelNameById(NearPlayerInCar(90))=="Freeway") or (getTargetVehicleModelNameById(NearPlayerInCar(90))=="Sanchez") or (getTargetVehicleModelNameById(NearPlayerInCar(90))=="Quad") or (getTargetVehicleModelNameById(NearPlayerInCar(90))=="FCR-900") or (getTargetVehicleModelNameById(NearPlayerInCar(90))=="NRG-500") or (getTargetVehicleModelNameById(NearPlayerInCar(90))=="HPV1000") or (getTargetVehicleModelNameById(NearPlayerInCar(90))=="BF-400") or (getTargetVehicleModelNameById(NearPlayerInCar(90))=="Wayfarer"){
  4979.         SendChat("/m Мотоциклист на "getTargetVehicleModelNameById(NearPlayerInCar(90)) ", немедленно прикратите движение!")
  4980.         sleep 1200
  4981.         SendChat("/m Прижмитесь к обочине и заглушите двигатель!")
  4982.         sleep 1200
  4983.         SendChat("/m В противном случае, я буду вынужден открыть огонь!")
  4984.         return
  4985.     }
  4986.     else
  4987.     {
  4988.         SendChat("/m Водитель "getTargetVehicleModelNameById(NearPlayerInCar(90)) " с гос.номером ["NearPlayerInCar(90) "]...")
  4989.         sleep 1200
  4990.         SendChat("/m Немедленно остановите машину и прижмитесь к обочине!")
  4991.         sleep 1200
  4992.         SendChat("/m В противном случае, я буду вынужден открыть огонь!")
  4993.     }
  4994. }
  4995. return
  4996. Active4:
  4997. chat := isInChat()
  4998. targ:=getIdByPed(getTargetPed())
  4999. if chat =1
  5000. {
  5001.     return
  5002. }
  5003. else
  5004. {
  5005.     if (targ!="-1")
  5006.     {
  5007.         name:=getPlayerNameById(targ)
  5008.         RPnick := RegExReplace(name,"_"," ")
  5009.         sendChat("/me применил"Female " против "RPName " спецприём")
  5010.         sleep 900
  5011.         sendChat("/me повалил"Female " "RPName " на землю")
  5012.     }
  5013.     else
  5014.     {
  5015.     addChatMessage("{ff6347} Ошибка: Не выбран игрок.")
  5016.     }
  5017. }
  5018. return
  5019. Active5:
  5020. SendChat("/s Всем оставаться на своих местах, руки за голову! Работает "org "!!!")
  5021. sleep 1200
  5022. SendChat("/s В случае неподчинения, буду вынужден открыть огонь!")
  5023. return
  5024. SU:
  5025. chatInput := CommandProcessor.TempText
  5026. if (RegExMatch(chatInput, "^/su"))
  5027. {
  5028.     if RegExMatch(chatInput, "/su (.*[0-9]+)", suid)
  5029.     {
  5030.         if (suid1=="")
  5031.         {
  5032.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /su [id]")
  5033.             return
  5034.         }
  5035.         namesu:=getPlayerNameById(suid1)
  5036.         RPnick := RegExReplace(namesu,"_"," ")
  5037.         SendChat("/me зажал"Female " кнопку на рации")
  5038.         Sleep 1200
  5039.         SendChat("/me сообщил"Female " приметы преступника диспетчеру по рации")
  5040.         Sleep 1200
  5041.         SendChat("/su "suid1)
  5042.         Sleep 1200
  5043.         SendChat("/do "RPnick " объявлен в розыск.")
  5044.         if (log==1)
  5045.         {
  5046.             ho := A_Hour
  5047.             mi := A_Min
  5048.             se := A_Sec
  5049.             FileAppend, [%ho%:%mi%:%se%] | Действие - выдача розыска | Ник игрока - %RPnick% `n, Log.txt
  5050.         }
  5051.         return
  5052.     }
  5053.     else
  5054.     {
  5055.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /su [id]")
  5056.     }
  5057. }
  5058. return
  5059. CUF:
  5060. chatInput := CommandProcessor.TempText
  5061. if (RegExMatch(chatInput, "^/cuff"))
  5062. {
  5063.     if RegExMatch(chatInput, "/cuff (.*[0-9]+)", cufid)
  5064.     {
  5065.         if (cufid1=="")
  5066.         {
  5067.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /cuff [id]")
  5068.             return
  5069.         }
  5070.         else
  5071.         {
  5072.             namecuff:=getPlayerNameById(cufid1)
  5073.             RPnick := RegExReplace(namecuff,"_"," ")
  5074.             SendChat("/do На тактическом поясе висят наручники")
  5075.             Sleep 1300
  5076.             SendChat("/me потянув руку к поясу, снял"Female " наручники")
  5077.             Sleep 1300
  5078.             SendChat("/cuff "cufid1 )
  5079.             Sleep 1300
  5080.             SendChat("/me накинул"Female " наручники на "RPnick )
  5081.         }
  5082.     }
  5083.     else
  5084.     {
  5085.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /cuff [id]")
  5086.     }
  5087. }
  5088. return
  5089. UNCUF:
  5090. chatInput := CommandProcessor.TempText
  5091. if (RegExMatch(chatInput, "^/uncuff"))
  5092. {
  5093.     if RegExMatch(chatInput, "/uncuff (.*[0-9]+)", uncufid)
  5094.     {
  5095.         if (uncufid1=="")
  5096.         {
  5097.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /uncuff [id]")
  5098.             return
  5099.         }
  5100.         else
  5101.         {
  5102.             nameuncuff:=getPlayerNameById(uncufid1)
  5103.             RPnick := RegExReplace(nameuncuff,"_"," ")
  5104.             SendChat("/do У "RPnick " за спиной застегнуты наручники.")
  5105.             Sleep 1300
  5106.             SendChat("/me вытащив ключи от наручников из кармана, протянул"Female " руки за спину "RPnick )
  5107.             Sleep 1300
  5108.             SendChat("/me вставив ключ в наручники, прокрутил"Female " его")
  5109.             Sleep 1300
  5110.             SendChat("/uncuff "uncufid1 )
  5111.             Sleep 1300
  5112.             SendChat("/me сняв наручники с запястей "RPnick ", повесил"Female " их на тактический пояс")
  5113.         }
  5114.     }
  5115.     else
  5116.     {
  5117.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /uncuff [id]")
  5118.     }
  5119. }
  5120. return
  5121. PRAVA:
  5122. SendChat("Вы имеете право хранить молчание.")
  5123. Sleep 2000
  5124. SendChat("Всё, что вы скажете, может и будет использовано против вас в суде.")
  5125. Sleep 2000
  5126. SendChat("Ваш адвокат может присутствовать при допросе. ")
  5127. Sleep 2000
  5128. SendChat("Если вы не можете оплатить услуги адвоката, он будет предоставлен вам государством.")
  5129. return
  5130. PATRL:
  5131. city := getPlayerCity()
  5132. rayon := getPlayerZone()
  5133. if (rayon=="Unbekannt") or (city=="Unbekannt")
  5134. {
  5135. addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Не удалось определить район.")
  5136.     return
  5137. }
  5138. if adok =0
  5139. {
  5140.     if ascreen =0
  5141.     {
  5142.         if (tegr=="")
  5143.         {
  5144.             SendChat("/r Докладывает: "myname ", веду патрулирование города - "city " в районе - "rayon )
  5145.         }
  5146.         else
  5147.         {
  5148.             SendChat("/r "tegr " Докладывает: "myname ", веду патрулирование города - "city " в районе - "rayon )
  5149.         }
  5150.         sleep 2500
  5151.     }
  5152.     if ascreen =1
  5153.     {
  5154.         if (tegr=="")
  5155.         {
  5156.             SendChat("/r Докладывает: "myname ", веду патрулирование города - "city " в районе - "rayon )
  5157.         }
  5158.         else
  5159.         {
  5160.             SendChat("/r "tegr " Докладывает: "myname ", веду патрулирование города - "city " в районе - "rayon )
  5161.         }
  5162.         Sleep 1300
  5163.         SendChat("/time")
  5164.         Sleep 1000
  5165.     Send, {F8}
  5166.         sleep 2000
  5167.     }
  5168.     carhp := getVehicleHealth()
  5169.     if carhp <= 0
  5170.     {
  5171.     addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял!")
  5172.         return
  5173.     }
  5174.     else if carhp <= 750
  5175.     {
  5176.     addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял! Смените транспортное средство.")
  5177.         return
  5178.     }
  5179.     else
  5180.     {
  5181.     addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял!")
  5182.         return
  5183.     }
  5184. }
  5185. if adok =1
  5186. {
  5187.     if ascreen =0
  5188.     {
  5189.         if (tegr=="")
  5190.         {
  5191.             SendChat("/r Докладывает: "myname ", веду патрулирование города - "city " в районе - "rayon )
  5192.         }
  5193.         else
  5194.         {
  5195.             SendChat("/r "tegr " Докладывает: "myname ", веду патрулирование города - "city " в районе - "rayon )
  5196.         }
  5197.         Settimer, ADOK , %zad%
  5198.     addChatmessage("{1E90FF}[MVD Tools] {FFFFFF}- Автоматический доклал с патруля {FFA500}запущен.")
  5199.     }
  5200.     if ascreen =1
  5201.     {
  5202.         if (tegr=="")
  5203.         {
  5204.             SendChat("/r Докладывает: "myname ", веду патрулирование города - "city " в районе - "rayon )
  5205.         }
  5206.         else
  5207.         {
  5208.             SendChat("/r "tegr " Докладывает: "myname ", веду патрулирование города - "city " в районе - "rayon )
  5209.         }
  5210.         Sleep 1300
  5211.         SendChat("/time")
  5212.         Sleep 1000
  5213.     Send, {F8}
  5214.         Settimer, ADOKsc , %zad%
  5215.     addChatmessage("{1E90FF}[MVD Tools] {FFFFFF}- Автоматический доклал с патруля {FFA500}запущен.")
  5216.     }
  5217.     carhp := getVehicleHealth()
  5218.     if carhp <= 0
  5219.     {
  5220.     addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял!")
  5221.         return
  5222.     }
  5223.     else if carhp <= 750
  5224.     {
  5225.     addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял! Смените транспортное средство.")
  5226.         return
  5227.     }
  5228.     else
  5229.     {
  5230.     addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял!")
  5231.         return
  5232.     }
  5233. }
  5234. return
  5235. FINE:
  5236. chatInput := CommandProcessor.TempText
  5237. if (RegExMatch(chatInput, "^/ticket"))
  5238. {
  5239.     if RegExMatch(chatInput, "/ticket (.*[0-9]+) (.*[0-9]+) (.*)", idfine)
  5240.     {
  5241.         if (idfine1=="")
  5242.         {
  5243.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /ticket [id] [Сумма штрафа] [Причина штрафа]")
  5244.             return
  5245.         }
  5246.         else
  5247.         {
  5248.             nametic:=getPlayerNameById(idfine1)
  5249.             RPnick := RegExReplace(nametic,"_"," ")
  5250.             SendChat("/me достал"Female " из сумки папку с бланками")
  5251.             Sleep 1500
  5252.             SendChat("/me достал"Female " из папки бланк и ручку")
  5253.             Sleep 1500
  5254.             SendChat("/me заполняет бланк")
  5255.             Sleep 1500
  5256.             SendChat("/do Бланк заполнен.")
  5257.             Sleep 1500
  5258.             SendChat("/me передал"Female " бланк "RPnick)
  5259.             Sleep 1200
  5260.             SendChat("/ticket "idfine1 " "idfine2 " "idfine3)
  5261.             Sleep 1300
  5262.             if (ascreen==1)
  5263.             {
  5264.                 Sleep 1300
  5265.                 SendChat("/time")
  5266.                 Sleep 1000
  5267.             Send, {F8}
  5268.             }
  5269.             if (log==1)
  5270.             {
  5271.                 ho := A_Hour
  5272.                 mi := A_Min
  5273.                 se := A_Sec
  5274.                 FileAppend, [%ho%:%mi%:%se%] | Действие - Выписывание штрафа | Ник игрока - %RPnick% | Сумма штрафа - %idfine2% | Причина - %idfine3%`n, Log.txt
  5275.             }
  5276.         }
  5277.     }
  5278.     else
  5279.     {
  5280.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /ticket [id] [Сумма штрафа] [Причина штрафа]")
  5281.     }
  5282. }
  5283. return
  5284. HELP:
  5285. AntiCrash()
  5286. showDialog(0, "{1E90FF}Команды:", "{FFFFFF}{FFA500}/cuff - {FFFFFF}Надеть наручники`n{FFA500}/uncuff - {FFFFFF}Снять наручники`n{FFA500}/ticket - {FFFFFF}Выписать штраф`n{FFA500}/патруль - {FFFFFF}Доклад с патруля`n{FFA500}/su - {FFFFFF}Выдача розыска`n{FFA500}/ppass - {FFFFFF}Попросить предъявить документы`n{FFA500}/invite - {FFFFFF}принять игрока во фракцию`n{FFA500}/uninvite - {FFFFFF}Уволить игрока из фракции`n{FFA500}/arrest - {FFFFFF}передать прступника в КПЗ`n{FFA500}/look - {FFFFFF}произвести обыск.`n{FFA500}/ud - {FFFFFF}показать удостоверение`n{FFA500}/маскировка - {FFFFFF}надеть маскировку`n{FFA500}/push - {FFFFFF}затолкать преступника в машину`n{FFA500}/бомба - {FFFFFF}Обезвредить бомбу`n{FFA500}/лекция - {FFFFFF}Прочитать лекции`n{FFA500}/sos - {FFFFFF}Подать сигнал о похищении`n{FFA500}/esp - {FFFFFF}Запросить подмогу`n{FFA500}ПКМ(таргет) + назначенная клавиша - {FFFFFF}Напрыгнуть на преступника`n{FFA500}/zp - {FFFFFF}узнать время до зарплаты`n{FFA500}/sc - {FFFFFF}сделать скриншот с /time`n{FFA500}/пост - {FFFFFF}Доклад с поста`n{FFA500}/таймер -{FFFFFF} установить таймер`n{FFA500}/tstop -{FFFFFF}Провести traffic stop`n{FFA500}/полиграф {FFFFFF}- отыгровка полиграфа`n{FFA500}/take {FFFFFF}- изъять лицензии/запрещенные предметы`n{FFA500}/clear {FFFFFF}- Снять розыск`n{FFA500}/incar {FFFFFF}- Вытащить/Скинуть преступника с машины/мотоцикла`n{FFA500}/timeinpost {FFFFFF}- Посмотреть время проведенное за сегодня на посту`n{FFA500}/obc {FFFFFF}- Бортовой компьютер`n{FFA500}/playrad {FFFFFF}- Онлайн радио`n{FFA500}/myplay {FFFFFF}- Проигрывание собственного потока`n{FFA500}/radar {FFFFFF}- Активировать радар`n{FFA500}/givekey {FFFFFF}- Выписать пропуск" , "Закрыть")
  5287. AntiCrash()
  5288. return
  5289. PPASS:
  5290. chatInput := CommandProcessor.TempText
  5291. if (RegExMatch(chatInput, "^/ppass"))
  5292. {
  5293.     if RegExMatch(chatInput, "/ppass (.*[1-3]+)", ppass)
  5294.     {
  5295.         if (ppass1=="")
  5296.         {
  5297.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /ppass [Номер действия(1-3)]")
  5298.             return
  5299.         }
  5300.         if (ppass1=="1")
  5301.         {
  5302.             SendChat("Вас беспокоит "zvan " "org " - "myname ".")
  5303.             Sleep 1200
  5304.             SendChat("Будьте любезны предоставить для проверки ваши документы.")
  5305.             Sleep 1000
  5306.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Если c документами все в порядке, введите {FFA500}/ppass 2")
  5307.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Если человек находится в розыске, введите {FFA500}/ppass 3")
  5308.             return
  5309.         }
  5310.         if (ppass1=="2")
  5311.         {
  5312.             SendChat("/do На плече закрепленна рация.")
  5313.             Sleep 1200
  5314.             SendChat("/me зажав кнопку рации, сообщил"Female " диспетчеру "helpname " паспортные данные")
  5315.             Sleep 1200
  5316.             SendChat("Все в порядке, можете идти.")
  5317.             return
  5318.         }
  5319.         if (ppass1=="3")
  5320.         {
  5321.             SendChat("/me связавшись с диспетчером "helpname ", сообщил паспортные данные")
  5322.             Sleep 1200
  5323.             SendChat("/me положил руку на кабуру")
  5324.             sleep 1200
  5325.             SendChat("Вы находитесь в розыске!")
  5326.             Sleep 1200
  5327.             SendChat("Медленно поднимите руки так, что бы я их видел!")
  5328.             sleep 1200
  5329.             SendChat("И медленно опускайтесь на колени!")
  5330.             return
  5331.         }
  5332.     }
  5333.     else
  5334.     {
  5335.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /ppass [Номер действия(1-3)]")
  5336.     }
  5337. }
  5338. return
  5339. EJECT:
  5340. chatInput := CommandProcessor.TempText
  5341. if (RegExMatch(chatInput, "^/eject"))
  5342. {
  5343.     if RegExMatch(chatInput, "/eject (.*[0-9]+)", ideject)
  5344.     {
  5345.         if (ideject1=="")
  5346.         {
  5347.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /eject [id]")
  5348.             return
  5349.         }
  5350.         else
  5351.         {
  5352.             nameeject:=getPlayerNameById(ideject1)
  5353.             RPnick := RegExReplace(nameeject,"_"," ")
  5354.             Random rand, 1, 3
  5355.             if (rand==1)
  5356.             {
  5357.                 SendChat("/me выйдя из машины, открыл"Female " пасажирскую дверь")
  5358.                 Sleep 1200
  5359.                 SendChat("/me помог"LA " "RPnick " выйти из машины")
  5360.                 Sleep 1200
  5361.                 SendChat("/eject "ideject1 )
  5362.             }
  5363.             if (rand==2)
  5364.             {
  5365.                 SendChat("/me выйдя из машины, открыл"Female " пасажирскую дверь")
  5366.                 Sleep 1200
  5367.                 SendChat("/me вытащил"Female " "RPnick " из машины")
  5368.                 Sleep 1200
  5369.                 SendChat("/eject "ideject1 )
  5370.             }
  5371.             if (rand==3)
  5372.             {
  5373.                 SendChat("/me выйдя из машины, открыл"Female " пасажирскую дверь")
  5374.                 Sleep 1200
  5375.                 SendChat("/me cхватив за руку "RPnick ", вытащил"Female " его из машины")
  5376.                 Sleep 1200
  5377.                 SendChat("/eject "ideject1 )
  5378.             }
  5379.         }
  5380.     }
  5381.     else
  5382.     {
  5383.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /eject [id]")
  5384.     }
  5385. }
  5386. return
  5387. ADOK:
  5388. city := getPlayerCity()
  5389. rayon := getPlayerZone()
  5390. if (rayon=="Unbekannt") or (city=="Unbekannt")
  5391. {
  5392. addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Не удалось определить район.")
  5393.     return
  5394. }
  5395. if (tegr=="")
  5396. {
  5397.     SendChat("/r Докладывает: "myname ", веду патрулирование города - "city " в районе - "rayon )
  5398. }
  5399. else
  5400. {
  5401.     SendChat("/r "tegr " Докладывает: "myname ", веду патрулирование города - "city " в районе - "rayon )
  5402. }
  5403. sleep 1500
  5404. carhp := getVehicleHealth()
  5405. if carhp <= 0
  5406. {
  5407. addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял!")
  5408.     return
  5409. }
  5410. else if carhp <= 750
  5411. {
  5412. addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял! Смените или почините транспортное средство.")
  5413.     return
  5414. }
  5415. else
  5416. {
  5417. addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял!")
  5418.     return
  5419. }
  5420. return
  5421. ADOKsc:
  5422. city := getPlayerCity()
  5423. rayon := getPlayerZone()
  5424. if (rayon=="Unbekannt") or (city=="Unbekannt")
  5425. {
  5426. addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Не удалось определить район.")
  5427.     return
  5428. }
  5429. if (tegr=="")
  5430. {
  5431.     SendChat("/r Докладывает: "myname ", веду патрулирование города - "city " в районе - "rayon )
  5432. }
  5433. else
  5434. {
  5435.     SendChat("/r "tegr " Докладывает: "myname ", веду патрулирование города - "city " в районе - "rayon )
  5436. }
  5437. Sleep 1300
  5438. SendChat("/time")
  5439. Sleep 1000
  5440. Send, {F8}
  5441. sleep 1200
  5442. carhp := getVehicleHealth()
  5443. if carhp <= 0
  5444. {
  5445. addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял!")
  5446.     return
  5447. }
  5448. else if carhp <= 750
  5449. {
  5450. addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял! Смените или почините транспортное средство.")
  5451.     return
  5452. }
  5453. else
  5454. {
  5455. addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял!")
  5456.     return
  5457. }
  5458. return
  5459. INVITE:
  5460. chatInput := CommandProcessor.TempText
  5461. if (RegExMatch(chatInput, "^/invite"))
  5462. {
  5463.     if RegExMatch(chatInput, "/invite (.*[0-9]+)", idinv)
  5464.     {
  5465.         if (idinv1=="")
  5466.         {
  5467.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /invite [id]")
  5468.             return
  5469.         }
  5470.         else
  5471.         {
  5472.             invite:=getPlayerNameById(idinv1)
  5473.             RPnick := RegExReplace(invite,"_"," ")
  5474.             if rung <9
  5475.             {
  5476.             addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Финкция доступна для старшего состава!")
  5477.             }
  5478.             else
  5479.             {
  5480.                 SendChat("/do За спиной рюкзак.")
  5481.                 Sleep 1300
  5482.                 SendChat("/me сняв рюкзак с плеч, расстегнул"Female " его")
  5483.                 Sleep 1300
  5484.                 SendChat("Добро пожаловать!")
  5485.                 Sleep 1300
  5486.                 SendChat("/invite "idinv1 )
  5487.                 Sleep 1300
  5488.                 SendChat("/me достав форму из рюкзака, передал"Female " ее "RPnick )
  5489.                 if (log==1)
  5490.                 {
  5491.                     ho := A_Hour
  5492.                     mi := A_Min
  5493.                     se := A_Sec
  5494.                     FileAppend, [%ho%:%mi%:%se%] Действие - invite | %invite%`n, Log.txt
  5495.                 }
  5496.             }
  5497.         }
  5498.     }
  5499.     else
  5500.     {
  5501.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /invite [id]")
  5502.     }
  5503. }
  5504. return
  5505. UNINVITE:
  5506. chatInput := CommandProcessor.TempText
  5507. if (RegExMatch(chatInput, "^/uninvite"))
  5508. {
  5509.     if RegExMatch(chatInput, "/uninvite (.*[0-9]+) (.*)", iduninv)
  5510.     {
  5511.         if (iduninv2=="")
  5512.         {
  5513.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /uninvite [id] [Причина увальнения]")
  5514.             return
  5515.         }
  5516.         else
  5517.         {
  5518.             uninvite:=getPlayerNameById(iduninv1)
  5519.             RPnick := RegExReplace(uninvite,"_"," ")
  5520.             if rung <8
  5521.             {
  5522.             addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Финкция доступна для старшего состава!")
  5523.                 return
  5524.             }
  5525.             else
  5526.             {
  5527.                 SendChat("/me достал"Female " КПК")
  5528.                 Sleep 1300
  5529.                 SendChat("/me введя пароль, вошел"Female " в базу данных сотрудников")
  5530.                 Sleep 1300
  5531.                 SendChat("/me открыл"Female " личное дело "RPnick )
  5532.                 Sleep 1300
  5533.                 SendChat("/me удалил"Female " личное дело из базы данных сотрудников "org )
  5534.                 Sleep 1300
  5535.                 SendChat("/uninvite "iduninv1 " "iduninv2 )
  5536.                 if (log==1)
  5537.                 {
  5538.                     ho := A_Hour
  5539.                     mi := A_Min
  5540.                     se := A_Sec
  5541.                     FileAppend, [%ho%:%mi%:%se%] Действие - uninvite | Причина - %iduninv2% | %uninvite%`n, Log.txt
  5542.                 }
  5543.             }
  5544.         }
  5545.     }
  5546.     else
  5547.     {
  5548.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /uninvite [id] [Причина увальнения]")
  5549.     }
  5550. }
  5551. return
  5552. AREST:
  5553. chatInput := CommandProcessor.TempText
  5554. if (RegExMatch(chatInput, "^/arrest"))
  5555. {
  5556.     if RegExMatch(chatInput, "/arrest (.*[0-9]+)", idarest)
  5557.     {
  5558.         if (idarest1=="")
  5559.         {
  5560.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /arrest [id]")
  5561.             return
  5562.         }
  5563.         else
  5564.         {
  5565.             acity:=getPlayerCity()
  5566.             arest:=getPlayerNameById(idarest1)
  5567.             RPnick := RegExReplace(arest,"_"," ")
  5568.             SendChat("/me отрыл"Female " бордачек")
  5569.             Sleep 1500
  5570.             SendChat("/me достал"Female " из бордачка бланк на арест и ручку")
  5571.             Sleep 1500
  5572.             SendChat("/me заполняет бланк")
  5573.             Sleep 1200
  5574.             SendChat("/do Бланк заполнен на имя: "RPnick ".")
  5575.             Sleep 1200
  5576.             SendChat("/me поставил"Female " дату и подспись.")
  5577.             Sleep 1500
  5578.             SendChat("/me сообщил"Female " диспетчеру")
  5579.             Sleep 1500
  5580.             SendChat("/me передал"Female " бланк аpестованого в участок")
  5581.             sleep 1200
  5582.             SendChat("/do Через некоторое время "RPnick " был отправлен в КПЗ.")
  5583.             Sleep 1500
  5584.             SendChat("/arrest "idarest1 )
  5585.             Sleep 1500
  5586.             if (tegr=="")
  5587.             {
  5588.                 SendChat("/r Передал"Female " дело №"idarest1 " - "RPnick " в участок города "acity "!")
  5589.             }
  5590.             else
  5591.             {
  5592.                 SendChat("/r "tegr ": Передал"Female " дело №"idarest1 " - "RPnick " в участок города "acity "!")
  5593.             }
  5594.             if (ascreen==1)
  5595.             {
  5596.                 SendChat("/time")
  5597.                 Sleep 1000
  5598.             Send, {F8}
  5599.             }
  5600.             if (log==1)
  5601.             {
  5602.                 ho := A_Hour
  5603.                 mi := A_Min
  5604.                 se := A_Sec
  5605.                 FileAppend, [%ho%:%mi%:%se%] | Действие - Арест | Ник игрока - %RPnick%`n, Log.txt
  5606.             }
  5607.         }
  5608.     }
  5609.     else
  5610.     {
  5611.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /arrest [id]")
  5612.     }
  5613. }
  5614. return
  5615. OBISK:
  5616. chatInput := CommandProcessor.TempText
  5617. if (RegExMatch(chatInput, "^/look"))
  5618. {
  5619.     if RegExMatch(chatInput, "/look (.*[0-9]+)", idobisk)
  5620.     {
  5621.         if (idobisk1=="")
  5622.         {
  5623.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /look [id]")
  5624.             return
  5625.         }
  5626.         else
  5627.         {
  5628.             obisk:=getPlayerNameById(idobisk1)
  5629.             RPnick := RegExReplace(obisk,"_"," ")
  5630.             SendChat("Встаньте спиной ко мне, и поднимите руки вверх!")
  5631.             Sleep 1200
  5632.             SendChat("/n /anim 19")
  5633.             Sleep 1200
  5634.             SendChat("/do В нагрудном кармане лежит пара резиновых перчаток.")
  5635.             Sleep 1500
  5636.             SendChat("/me отстегнул"Female " пуговицу нагрудного кармана, затем достал"Female " пару перчаток")
  5637.             Sleep 1500
  5638.             SendChat("/do Пара резиновых перчаток в руках.")
  5639.             Sleep 1500
  5640.             SendChat("/me надел"Female " резиновые перчатки")
  5641.             Sleep 1500
  5642.             SendChat("/me провел"Female " руками по спине "RPnick )
  5643.             Sleep 3500
  5644.             SendChat("/me провел"Female " руками по телу "RPnick " в районе рёбер")
  5645.             Sleep 3500
  5646.             SendChat("/me провел"Female " руками по ногам "RPnick )
  5647.             sleep 2500
  5648.             SendChat("/me ощупал карманы "RPnick)
  5649.             Sleep 1200
  5650.             SendChat("/look "idobisk1 )
  5651.             Sleep 1200
  5652.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- После обыска, забирайте запрещенные предметы командой /take")
  5653.         }
  5654.     }
  5655.     else
  5656.     {
  5657.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /look [id]")
  5658.     }
  5659. }
  5660. return
  5661. RR:
  5662. chatInput := CommandProcessor.TempText
  5663. if (RegExMatch(chatInput, "^/r"))
  5664. {
  5665.     if RegExMatch(chatInput, "/r (.*)", textr)
  5666.     {
  5667.         if (textr=="")
  5668.         {
  5669.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /r [Текст сообщения]")
  5670.             return
  5671.         }
  5672.         else
  5673.         {
  5674.             if raz =1
  5675.             {
  5676.                 if (tegr=="")
  5677.                 {
  5678.                     SendChat("/do На плече закреплена рация.")
  5679.                     Sleep 1000
  5680.                     SendChat("/r "textr1 )
  5681.                     Sleep 1200
  5682.                     SendChat("/me зажав кнопку на рации, что-то сказал"Female )
  5683.                     return
  5684.                 }
  5685.                 else
  5686.                 {
  5687.                     SendChat("/do На плече закреплена рация.")
  5688.                     Sleep 1000
  5689.                     SendChat("/r "tegr " "textr1 )
  5690.                     Sleep 1200
  5691.                     SendChat("/me зажав кнопку на рации, что-то сказал"Female )
  5692.                     return
  5693.                 }
  5694.             }
  5695.             if raz =0
  5696.             {
  5697.                 if (tegr=="")
  5698.                 {
  5699.                     SendChat("/r "textr1 )
  5700.                     return
  5701.                 }
  5702.                 else
  5703.                 {
  5704.                     SendChat("/r "tegr " "textr1 )
  5705.                     return
  5706.                 }
  5707.             }
  5708.         }
  5709.     }
  5710.     else
  5711.     {
  5712.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /r [Текст сообщения]")
  5713.     }
  5714. }
  5715. return
  5716. DD:
  5717. chatInput := CommandProcessor.TempText
  5718. if (RegExMatch(chatInput, "^/d"))
  5719. {
  5720.     if RegExMatch(chatInput, "/d (.*)", textd)
  5721.     {
  5722.         if (textd=="")
  5723.         {
  5724.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /d [Текст сообщения]")
  5725.             return
  5726.         }
  5727.         else
  5728.         {
  5729.             if raz =1
  5730.             {
  5731.                 if (tegd=="")
  5732.                 {
  5733.                     SendChat("/do На плече закреплена рация.")
  5734.                     Sleep 1000
  5735.                     SendChat("/d "textd1 )
  5736.                     Sleep 1200
  5737.                     SendChat("/me зажав кнопку на рации, что-то сказал"Female )
  5738.                     return
  5739.                 }
  5740.                 else
  5741.                 {
  5742.                     SendChat("/do На плече закреплена рация.")
  5743.                     Sleep 1000
  5744.                     SendChat("/d "tegd " "textd1 )
  5745.                     Sleep 1200
  5746.                     SendChat("/me зажав кнопку на рации, что-то сказал"Female )
  5747.                     return
  5748.                 }
  5749.             }
  5750.             if raz =0
  5751.             {
  5752.                 if (tegd=="")
  5753.                 {
  5754.                     SendChat("/d "textd1 )
  5755.                     return
  5756.                 }
  5757.                 else
  5758.                 {
  5759.                     SendChat("/d "tegd " "textd1 )
  5760.                     return
  5761.                 }
  5762.             }
  5763.         }
  5764.     }
  5765.     else
  5766.     {
  5767.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /d [Текст сообщения]")
  5768.     }
  5769. }
  5770. return
  5771. FF:
  5772. chatInput := CommandProcessor.TempText
  5773. if (RegExMatch(chatInput, "^/f"))
  5774. {
  5775.     if RegExMatch(chatInput, "/f (.*)", textf)
  5776.     {
  5777.         if (textf=="")
  5778.         {
  5779.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /f [Текст сообщения]")
  5780.             return
  5781.         }
  5782.         else
  5783.         {
  5784.             if raz =1
  5785.             {
  5786.                 if (tegf=="")
  5787.                 {
  5788.                     SendChat("/do На плече закреплена рация.")
  5789.                     Sleep 1000
  5790.                     SendChat("/f "textf1 )
  5791.                     Sleep 1200
  5792.                     SendChat("/me зажав кнопку на рации, что-то сказал"Female )
  5793.                     return
  5794.                 }
  5795.                 else
  5796.                 {
  5797.                     SendChat("/do На плече закреплена рация.")
  5798.                     Sleep 1000
  5799.                     SendChat("/f "tegf " "textf1 )
  5800.                     Sleep 1200
  5801.                     SendChat("/me зажав кнопку на рации, что-то сказал"Female )
  5802.                     return
  5803.                 }
  5804.             }
  5805.             if raz =0
  5806.             {
  5807.                 if (tegf=="")
  5808.                 {
  5809.                     SendChat("/f "textf1 )
  5810.                     return
  5811.                 }
  5812.                 else
  5813.                 {
  5814.                     SendChat("/f "tegf " "textf1 )
  5815.                     return
  5816.                 }
  5817.             }
  5818.         }
  5819.     }
  5820.     else
  5821.     {
  5822.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /f [Текст сообщения]")
  5823.     }
  5824. }
  5825. return
  5826. SKIN:
  5827. myid := getId()
  5828. chatInput := CommandProcessor.TempText
  5829. if (RegExMatch(chatInput, "^/changeskin"))
  5830. {
  5831.     if RegExMatch(chatInput, "/changeskin (.*[0-9]+)", idskin)
  5832.     {
  5833.         if (idskin1=="")
  5834.         {
  5835.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /changeskin [id]")
  5836.             return
  5837.         }
  5838.         else
  5839.         {
  5840.             skin:=getPlayerNameById(idskin1)
  5841.             RPnick := RegExReplace(skin,"_"," ")
  5842.             if rung <8
  5843.             {
  5844.             addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Функция доступна для старшего состава")
  5845.                 return
  5846.             }
  5847.             else
  5848.             {
  5849.                 if (idskin1==myid)
  5850.                 {
  5851.                     SendChat("/do За спиной рюкзак.")
  5852.                     Sleep 1400
  5853.                     SendChat("/me сняв рюкзак с плеч, расстегнул"Female " его")
  5854.                     Sleep 1400
  5855.                     SendChat("/me достал"Female " форму из рюкзака")
  5856.                     Sleep 1400
  5857.                     SendChat("/me начал"Female " переодеваться")
  5858.                     Sleep 1400
  5859.                     SendChat("/changeskin "idskin1 )
  5860.                 }
  5861.                 else
  5862.                 {
  5863.                     SendChat("/do За спиной рюкзак.")
  5864.                     Sleep 1400
  5865.                     SendChat("/me сняв рюкзак с плеч, расстегнул"Female " его")
  5866.                     Sleep 1400
  5867.                     SendChat("/me достал"Female " форму из рюкзака")
  5868.                     Sleep 1400
  5869.                     SendChat("/me передал"Female " форму "RPnick )
  5870.                     Sleep 1400
  5871.                     SendChat("/changeskin "idskin1 )
  5872.                 }
  5873.             }
  5874.         }
  5875.     }
  5876.     else
  5877.     {
  5878.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /changeskin [id]")
  5879.     }
  5880. }
  5881. return
  5882. UD:
  5883. if org =FBI
  5884. {
  5885.     if rung <3
  5886.     {
  5887.         SendChat("/me засунул"Female " руку в карман ветровки")
  5888.         Sleep 1200
  5889.         SendChat("/me достав из кармана ветровки значок, показал"Female " его")
  5890.         Sleep 1000
  5891.         SendChat("/anim 17")
  5892.         Sleep 1000
  5893.         SendChat("/ud")
  5894.         sleep 1200
  5895.     Send,{Enter}
  5896.         return
  5897.     }
  5898.     if rung >2
  5899.     {
  5900.         SendChat("/me засунул"Female " руку в карман пиджака")
  5901.         Sleep 1200
  5902.         SendChat("/me достав из внутреннего кармана пиджака значок, показал"Female " его")
  5903.         Sleep 1000
  5904.         SendChat("/anim 17")
  5905.         Sleep 1000
  5906.         SendChat("/ud")
  5907.         sleep 1200
  5908.     Send,{Enter}
  5909.         return
  5910.     }
  5911. }
  5912. else
  5913. {
  5914.     if (org=="МВД")
  5915.     {
  5916.         SendChat("/me засунул"Female " руку в карман пиджака")
  5917.         Sleep 1200
  5918.         SendChat("/me достав из внутреннего кармана пиджака удостоверение, раскрыл"Female " его")
  5919.         Sleep 1000
  5920.         SendChat("/anim 17")
  5921.         Sleep 1000
  5922.         SendChat("/ud")
  5923.         sleep 1200
  5924.     Send,{Enter}
  5925.         return
  5926.     }
  5927.     if rang >7
  5928.     {
  5929.         SendChat("/me засунул"Female " руку в карман пиджака")
  5930.         Sleep 1200
  5931.         SendChat("/me достав из внутреннего кармана пиджака удостоверение, раскрыл"Female " его")
  5932.         Sleep 1000
  5933.         SendChat("/anim 17")
  5934.         Sleep 1000
  5935.         SendChat("/ud")
  5936.         sleep 1200
  5937.     Send,{Enter}
  5938.         return
  5939.     }
  5940.     else
  5941.     {
  5942.         SendChat("/me засунул"Female " руку в карман кителя")
  5943.         Sleep 1200
  5944.         SendChat("/me достав из внутреннего кармана кителя удостоверение, раскрыл"Female " его")
  5945.         Sleep 1000
  5946.         SendChat("/anim 17")
  5947.         Sleep 1000
  5948.         SendChat("/ud")
  5949.         sleep 1200
  5950.     Send,{Enter}
  5951.         return
  5952.     }
  5953. }
  5954. return
  5955. UnloadGun:
  5956. if (WeaponDrawn = 1)
  5957. {
  5958.     if not (getPlayerWeaponId() = 24) and (TazerOut = 2)
  5959.     {
  5960.         SendChat("/me поставив пистолет на предохранитель, убрал"Female " его в кобуру")
  5961.         WeaponDrawn:=0
  5962.         TazerOut:=0
  5963.     }
  5964.     if not (getPlayerWeaponId() = 3)  and (TazerOut = 3)
  5965.     {
  5966.         SendChat("/me повесил"Female " дубинку на пояс")
  5967.         WeaponDrawn:=0
  5968.         TazerOut:=0
  5969.     }
  5970.     if not (getPlayerWeaponId() = 23)  and (TazerOut = 4)
  5971.     {
  5972.         SendChat("/me убрал"Female " taser x-26 в кобуру на поясе")
  5973.         WeaponDrawn:=0
  5974.         TazerOut:=0
  5975.     }
  5976.     if not (getPlayerWeaponId() = 25)  and (TazerOut = 5)
  5977.     {
  5978.         SendChat("/me поставив дробовик на предохранитель, повесил"Female " его на плечо")
  5979.         WeaponDrawn:=0
  5980.         TazerOut:=0
  5981.     }
  5982.     if not (getPlayerWeaponId() = 34) and (TazerOut = 6)
  5983.     {
  5984.         SendChat("/me поставив снайперскую винтовку на предохранитель, повесил"Female " его на плечо")
  5985.         WeaponDrawn:=0
  5986.         TazerOut:=0
  5987.     }
  5988.     if not (getPlayerWeaponId() = 31)  and (TazerOut = 7)
  5989.     {
  5990.         SendChat("/me поставив автомат на предохранитель, повесил"Female " его на плечо")
  5991.         WeaponDrawn:=0
  5992.         TazerOut:=0
  5993.     }
  5994.     if not (getPlayerWeaponId() = 30) and (TazerOut = 8)
  5995.     {
  5996.         SendChat("/me поставив автомат на предохранитель, повесил"Female " его на плечо")
  5997.         WeaponDrawn:=0
  5998.         TazerOut:=0
  5999.     }
  6000.     if not (getPlayerWeaponId() = 17) and (TazerOut = 9)
  6001.     {
  6002.         SendChat("/me убирает газовую гранату в нагрудный карман бронежилета")
  6003.         TazerOut:=0
  6004.         WeaponDrawn:=0
  6005.     }
  6006.     if not (getPlayerWeaponId() = 33) and (TazerOut = 10)
  6007.     {
  6008.         SendChat("/me ставит винтовку на предохранитель, вешает её на плечо")
  6009.         TazerOut:=0
  6010.         WeaponDrawn:=0
  6011.     }
  6012.     if not (getPlayerWeaponId() = 29) and (TazerOut = 11)
  6013.     {
  6014.         SendChat("/me поставив пистолет-пулемёт на предохранитель, повесил"Female " его на плечо")
  6015.         TazerOut:=0
  6016.         WeaponDrawn:=0
  6017.     }
  6018.     if not (getPlayerWeaponId() = 1) and (TazerOut = 12)
  6019.     {
  6020.         SendChat("/me снял"Female " кастет.")
  6021.         TazerOut:=0
  6022.         WeaponDrawn:=0
  6023.     }
  6024.     if not (getPlayerWeaponId() = 14) and (TazerOut = 13)
  6025.     {
  6026.         SendChat("/me убрал"Female " цветы в маленькую сумку на поясе")
  6027.         TazerOut:=0
  6028.         WeaponDrawn:=0
  6029.     }
  6030.     if not (getPlayerWeaponId() = 5) and (TazerOut = 14)
  6031.     {
  6032.         SendChat("/me убрал"Female " биту в сумку на спине")
  6033.         TazerOut:=0
  6034.         WeaponDrawn:=0
  6035.     }
  6036.     if not (getPlayerWeaponId() = 43) and (TazerOut = 15)
  6037.     {
  6038.         SendChat("/me закрыл"Female " крышечкой объектив фотоаппарата")
  6039.         TazerOut:=0
  6040.         WeaponDrawn:=0
  6041.     }
  6042.     if not (getPlayerWeaponId() = 46) and (TazerOut = 16)
  6043.     {
  6044.         SendChat("/me снял"Female " парашют")
  6045.         TazerOut:=0
  6046.         WeaponDrawn:=0
  6047.     }
  6048.     if not (getPlayerWeaponId() = 8) and (TazerOut = 17)
  6049.     {
  6050.         SendChat("/me убрал"Female " катану в чехол на поясе")
  6051.         TazerOut:=0
  6052.         WeaponDrawn:=0
  6053.     }
  6054.     if not (getPlayerWeaponId() = 28) and (TazerOut = 18)
  6055.     {
  6056.         SendChat("/me убрал"Female " UZI в кабуру под пиджаком")
  6057.         TazerOut:=0
  6058.         WeaponDrawn:=0
  6059.     }
  6060.     if not (getPlayerWeaponId() = 41) and (TazerOut = 19)
  6061.     {
  6062.         SendChat("/me убрал"Female " перцовый болончик в чехол на поясе")
  6063.         TazerOut:=0
  6064.         WeaponDrawn:=0
  6065.     }
  6066.     Sleep 1000
  6067.     goto, UnloadGun
  6068. }
  6069. else
  6070. {
  6071.     goto, TakeGun
  6072. }
  6073. return
  6074. TakeGun:
  6075. if (WeaponDrawn = 0)
  6076. {
  6077.     if (getPlayerWeaponId() = 24)  and (TazerOut != 2)
  6078.     {
  6079.         SendChat("/me достав пистолет из кобуры, снял"Female " его с предохранителя")
  6080.         TazerOut:=2
  6081.         WeaponDrawn:=1
  6082.     }
  6083.     if (getPlayerWeaponId() = 3) and (TazerOut != 3)
  6084.     {
  6085.         SendChat("/me резким движением правой руки снял"Female " дубинку с пояса")
  6086.         TazerOut:=3
  6087.         WeaponDrawn:=1
  6088.     }
  6089.     if (getPlayerWeaponId() = 23)  and (TazerOut != 4)
  6090.     {
  6091.         SendChat("/me достав taser x-26 из кобуры, положил"Female " палец на курок")
  6092.         TazerOut:=4
  6093.         WeaponDrawn:=1
  6094.     }
  6095.     if (getPlayerWeaponId() = 25)  and (TazerOut != 5)
  6096.     {
  6097.         SendChat("/me сняв дробовик с плеча, переключил"Female " предохранитель")
  6098.         TazerOut:=5
  6099.         WeaponDrawn:=1
  6100.     }
  6101.     if (getPlayerWeaponId() = 34)  and (TazerOut != 6)
  6102.     {
  6103.         SendChat("/me сняв снайперскую винтовку с сплеча, переключил"Female " предохранитель")
  6104.         TazerOut:=6
  6105.         WeaponDrawn:=1
  6106.     }
  6107.     if (getPlayerWeaponId() = 31)  and (TazerOut != 7)
  6108.     {
  6109.         SendChat("/me сняв автомат с плеча, переключил"Female " предохранитель")
  6110.         TazerOut:=7
  6111.         WeaponDrawn:=1
  6112.     }
  6113.     if (getPlayerWeaponId() = 30)  and (TazerOut != 8)
  6114.     {
  6115.         SendChat("/me сняв автомат с плеча, переключил"Female " предохранитель")
  6116.         TazerOut:=8
  6117.         WeaponDrawn:=1
  6118.     }
  6119.     if (getPlayerWeaponId() = 17)  and (TazerOut != 9)
  6120.     {
  6121.         SendChat("/me достал"Female " из нагрудного кармана бронежилета газовую гранат")
  6122.         TazerOut:=9
  6123.         WeaponDrawn:=1
  6124.     }
  6125.     if (getPlayerWeaponId() = 33)  and (TazerOut != 10)
  6126.     {
  6127.         SendChat("/me сняв винтовку с плеча, снял"Female " её с предохранителя")
  6128.         TazerOut:=10
  6129.         WeaponDrawn:=1
  6130.     }
  6131.     if (getPlayerWeaponId() = 29)  and (TazerOut != 11)
  6132.     {
  6133.         SendChat("/me сняв пистолет-пулемёт с плеча, снял"Female " его с предохранителя")
  6134.         TazerOut:=11
  6135.         WeaponDrawn:=1
  6136.     }
  6137.     if (getPlayerWeaponId() = 1)  and (TazerOut != 12)
  6138.     {
  6139.         SendChat("/me надел"Female " кастет на правую руку")
  6140.         TazerOut:=12
  6141.         WeaponDrawn:=1
  6142.     }
  6143.     if (getPlayerWeaponId() = 14)  and (TazerOut != 13)
  6144.     {
  6145.         SendChat("/me развернул"Female " букет цветов")
  6146.         TazerOut:=13
  6147.         WeaponDrawn:=1
  6148.     }
  6149.     if (getPlayerWeaponId() = 5)  and (TazerOut != 14)
  6150.     {
  6151.         SendChat("/me завел"Famale " правую руку за спину")
  6152.         sleep 1000
  6153.         SendChat("/me достал"Female " биту из сумки на спине")
  6154.         TazerOut:=14
  6155.         WeaponDrawn:=1
  6156.     }
  6157.     if (getPlayerWeaponId() = 43)  and (TazerOut != 15)
  6158.     {
  6159.         SendChat("/me снял"Famale " фотоаппарат с шеи")
  6160.         TazerOut:=15
  6161.         WeaponDrawn:=1
  6162.     }
  6163.     if (getPlayerWeaponId() = 46)  and (TazerOut != 16)
  6164.     {
  6165.         SendChat("/me надел"Famale " парашют на плечи")
  6166.         TazerOut:=16
  6167.         WeaponDrawn:=1
  6168.     }
  6169.     if (getPlayerWeaponId() = 8)  and (TazerOut != 17)
  6170.     {
  6171.         SendChat("/me вытащил"Famale " катану из чехла на поясе")
  6172.         TazerOut:=17
  6173.         WeaponDrawn:=1
  6174.     }
  6175.     if (getPlayerWeaponId() = 28)  and (TazerOut != 18)
  6176.     {
  6177.         SendChat("/me вытащил"Famale " UZI из кабуры из-под пиджака")
  6178.         TazerOut:=18
  6179.         WeaponDrawn:=1
  6180.     }
  6181.     if (getPlayerWeaponId() = 41)  and (TazerOut != 19)
  6182.     {
  6183.         SendChat("/me вытащил"Famale " перцовый балончик из чехла на поясе")
  6184.         TazerOut:=19
  6185.         WeaponDrawn:=1
  6186.     }
  6187.     Sleep 1000
  6188.     goto, TakeGun
  6189. }
  6190. else
  6191. {
  6192.     goto, UnloadGun
  6193. }
  6194. return
  6195. MASK:
  6196. chatInput := CommandProcessor.TempText
  6197. if (RegExMatch(chatInput, "^/маскировка"))
  6198. {
  6199.     if RegExMatch(chatInput, "/маскировка (.*[1-2]+)", idmask)
  6200.     {
  6201.         if (idmask1=="1")
  6202.         {
  6203.             if org =FBI
  6204.             {
  6205.                 SendChat("/me протянув руку, снял"Female " с вешалки одежду")
  6206.                 Sleep 1300
  6207.                 SendChat("/me положив вешалку с одеждой на лавку, начал"Female " cнимать с себя форму")
  6208.                 Sleep 1300
  6209.                 SendChat("/do Процесс...")
  6210.                 Sleep 3000
  6211.                 SendChat("/me сняв форму, начал"Female " надевать маскировку")
  6212.                 Sleep 1200
  6213.                 SendChat("/do Процесс...")
  6214.                 Sleep 1200
  6215.                 SendChat("/me переодевшись, убрал"Female " форму в шкафчик")
  6216.                 sleep 500
  6217.             addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Для того, что бы снять маскировку, введите {FFA500}/маскировка 2")
  6218.                 return
  6219.             }
  6220.             else
  6221.             {
  6222.             addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Функция доступна только для агентов FBI")
  6223.                 return
  6224.             }
  6225.         }
  6226.         if (idmask1=="2")
  6227.         {
  6228.             if org =FBI
  6229.             {
  6230.                 SendChat("/me протянув руку, достал"Female " из шкафчика форму")
  6231.                 Sleep 1300
  6232.                 SendChat("/me положив вешалку с формой на лавку, начал"Female " cнимать с себя маскировку")
  6233.                 Sleep 1300
  6234.                 SendChat("/do Процесс...")
  6235.                 Sleep 3000
  6236.                 SendChat("/me сняв маскировку, начал"Female " надевать форму")
  6237.                 Sleep 1200
  6238.                 SendChat("/do Процесс...")
  6239.                 Sleep 1200
  6240.                 SendChat("/me переодевшись, повесил"Female " маскировку на вешалку")
  6241.                 return
  6242.             }
  6243.             else
  6244.             {
  6245.             addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Функция доступна только для агентов FBI")
  6246.                 return
  6247.             }
  6248.         }
  6249.     }
  6250.     else
  6251.     {
  6252.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /маскировка [1 - надеть масировку | 2 - снять маскировку]")
  6253.     }
  6254. }
  6255. return
  6256. CPUT:
  6257. chatInput := CommandProcessor.TempText
  6258. if (RegExMatch(chatInput, "^/push"))
  6259. {
  6260.     if RegExMatch(chatInput, "/push (.*[0-9]+)", idcput)
  6261.     {
  6262.         if (idcput1=="")
  6263.         {
  6264.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /push [id]")
  6265.             return
  6266.         }
  6267.         else
  6268.         {
  6269.             cput:=getPlayerNameById(idcput1)
  6270.             RPnick := RegExReplace(cput,"_"," ")
  6271.             SendChat("/me открыв дверь, выпрыгнул"Female " с машины")
  6272.             Sleep 1300
  6273.             SendChat("/me схватитв "RPnick " за руку, подтянул"Female " его к себе")
  6274.             Sleep 1300
  6275.             SendChat("/me открыл"Female " дверь т/c и помог"LA " "RPnick " сесть")
  6276.             Sleep 1300
  6277.             SendChat("/push "idcput1 )
  6278.             Sleep 1300
  6279.             SendChat("/me захлопнул"Female " дверь")
  6280.             Sleep 1300
  6281.             SendChat("/me сев в т/с заблокировал"Female " двери")
  6282.         }
  6283.     }
  6284.     else
  6285.     {
  6286.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /push [id]")
  6287.     }
  6288. }
  6289. return
  6290. BOMB:
  6291. SendChat("/me достал"Female " чемоданчик с набором сапера")
  6292. Sleep 1300
  6293. SendChat("/me положил"Female " чемоданчик рядом с собой")
  6294. Sleep 1300
  6295. SendChat("/do На корпусе бомбы 2 болта.")
  6296. Sleep 1300
  6297. SendChat("/me достал"Female " отвертку из чемодана с набором сапера")
  6298. Sleep 1300
  6299. SendChat("/me откручивает болты с корпуса бомбы")
  6300. Sleep 1300
  6301. SendChat("/do Процесс...")
  6302. Sleep 1300
  6303. SendChat("/do Болты выкручены.")
  6304. Sleep 1300
  6305. SendChat("/me убрал"Female " отвертку обратно в чемоданчик")
  6306. Sleep 1300
  6307. SendChat("/me просматривает бомбу")
  6308. Sleep 1300
  6309. SendChat("/me заметил"Female " детонатор")
  6310. Sleep 1300
  6311. SendChat("/me заметил"Female " таймер")
  6312. Sleep 1300
  6313. SendChat("/me достал"Female " щипцы из чемодана")
  6314. Sleep 1300
  6315. SendChat("/me надрезал"Female " красный провод")
  6316. Sleep 1300
  6317. SendChat("/try Обезвредил"Female " бомбу.")
  6318. Sleep 200
  6319. GetChatLine(0, bombsost)
  6320. if RegExMatch(bombsost, " "getUsername() "\Q Обезвредил бомбу. | \E(.*)", pbomb){
  6321.     if (pbomb1=="Неудачно"){
  6322.         sleep 1200
  6323.         SendChat("/me достал"Female " из чемоданчика балончик с заморозкой")
  6324.         Sleep 1300
  6325.         SendChat("/me нанес"LA " заморозку на детонатор")
  6326.         Sleep 1300
  6327.         SendChat("/do Таймер остановлен.")
  6328.         Sleep 1300
  6329.         SendChat("/me перерезал"Female " остальные провода")
  6330.         Sleep 1300
  6331.         SendChat("/do Бомба обезвреженна.")
  6332.     }
  6333.     else
  6334.     {
  6335.         sleep 1200
  6336.         SendChat("/do Таймер остановлен.")
  6337.     }
  6338. }
  6339. else
  6340. {
  6341. addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Не удалось оплучить результат отыгровки :(")
  6342. }
  6343. return
  6344. FWARN:
  6345. chatInput := CommandProcessor.TempText
  6346. if (RegExMatch(chatInput, "^/fwarn"))
  6347. {
  6348.     if RegExMatch(chatInput, "/fwarn (.*[0-9]+) (.*)", idwarn)
  6349.     {
  6350.         if (idwarn2=="")
  6351.         {
  6352.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /fwarn [id] [Причина]")
  6353.             return
  6354.         }
  6355.         else
  6356.         {
  6357.             namewarn:=getPlayerNameById(idwarn1)
  6358.             RPnick := RegExReplace(namewarn,"_"," ")
  6359.             SendChat("/me достал"Female " КПК")
  6360.             Sleep 1300
  6361.             SendChat("/me введя пароль, открыл"Female " базу данных сотрудников")
  6362.             Sleep 1300
  6363.             SendChat("/me открыл"Female " дело сотрудника "RPnick " и внес"LA " изменения")
  6364.             Sleep 1300
  6365.             SendChat("/fwarn "idwarn1 " "idwarn2)
  6366.         }
  6367.     }
  6368.     else
  6369.     {
  6370.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /fwarn [id] [Причина]")
  6371.     }
  6372. }
  6373. return
  6374. RANG:
  6375. chatInput := CommandProcessor.TempText
  6376. if (RegExMatch(chatInput, "^/rang"))
  6377. {
  6378.     if RegExMatch(chatInput, "/rang (.*[0-9]+)", idrang)
  6379.     {
  6380.         if (idrang1=="")
  6381.         {
  6382.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /rang [id]")
  6383.             return
  6384.         }
  6385.         else
  6386.         {
  6387.             if log =0
  6388.             {
  6389.                 rang:=getPlayerNameById(idrang1)
  6390.                 RPnick := RegExReplace(rang,"_"," ")
  6391.                 SendChat("/rang "idrang1 )
  6392.                 Sleep 1300
  6393.                 SendChat("/me достал"Female " КПК")
  6394.                 Sleep 1300
  6395.                 SendChat("/me введя пароль, открыл"Female " в базу данных сотрудников")
  6396.                 Sleep 1300
  6397.                 SendChat("/me открыл"Female " дело сотрудника "RPnick " и внес"LA " изменения")
  6398.                 Sleep 1300
  6399.                 SendChat("/me просунув руку в карман пиджака, достал"Female " новое удостоверение")
  6400.                 Sleep 1300
  6401.                 SendChat("/me передал"Female " новое удостоверение "RPnick)
  6402.             }
  6403.             if log =1
  6404.             {
  6405.                 ho := A_Hour
  6406.                 mi := A_Min
  6407.                 se := A_Sec
  6408.                 rang:=getPlayerNameById(idrang1)
  6409.                 RPnick := RegExReplace(rang,"_"," ")
  6410.                 SendChat("/rang "idrang1 )
  6411.                 Sleep 1300
  6412.                 SendChat("/me достал КПК")
  6413.                 Sleep 1300
  6414.                 SendChat("/me введя пароль, открыл в базу данных сотрудников")
  6415.                 Sleep 1300
  6416.                 SendChat("/me открыл дело сотрудника "RPnick " и внес изменения")
  6417.                 Sleep 1300
  6418.                 SendChat("/me просунув руку в карман пиджака, достал новое удостоверение")
  6419.                 Sleep 1300
  6420.                 SendChat("/me передал новое удостоверение "RPnick)
  6421.                 FileAppend, [%ho%:%mi%:%se%] Действие - повышение/понижение ранга | %rang%`n, Log.txt
  6422.             addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Лог успешно сохранен!")
  6423.             }
  6424.         }
  6425.     }
  6426.     else
  6427.     {
  6428.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /rang [id]")
  6429.     }
  6430. }
  6431. UNWARN:
  6432. chatInput := CommandProcessor.TempText
  6433. if (RegExMatch(chatInput, "^/funwarn"))
  6434. {
  6435.     if RegExMatch(chatInput, "/funwarn (.*[0-9]+) (.*)", idunwarn)
  6436.     {
  6437.         if (idunwarn2=="")
  6438.         {
  6439.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /funwarn [id] [Причина]")
  6440.             return
  6441.         }
  6442.         else
  6443.         {
  6444.             nameunwarn:=getPlayerNameById(idunwarn1)
  6445.             RPnick := RegExReplace(nameunwarn,"_"," ")
  6446.             SendChat("/me достал"Female " КПК")
  6447.             Sleep 1300
  6448.             SendChat("/me введя пароль, открыл"Female " базу данных сотрудников")
  6449.             Sleep 1300
  6450.             SendChat("/me открыл"Female " дело сотрудника "RPnick " и внес"LA " изменения")
  6451.             Sleep 1300
  6452.             SendChat("/funwarn "idunwarn1 " "idunwarn2)
  6453.         }
  6454.     }
  6455.     else
  6456.     {
  6457.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /funwarn [id] [Причина]")
  6458.     }
  6459. }
  6460. return
  6461. TIME:
  6462. vrem := time()
  6463. RegExMatch(vrem, "(.*)\Q:\E(.*)\Q:\E(.*)", tvrem)
  6464. if clock =1
  6465. {
  6466.     SendChat("/me подняв руку, отогнул"Female " рукав")
  6467.     Sleep 1500
  6468.     SendChat("/time")
  6469.     Sleep 1300
  6470.     SendChat("/do На часах: "tvrem1 " час(-ов) | "tvrem2 " минут(-ы) | "tvrem3 " секунд(-ы)")
  6471. }
  6472. else
  6473. {
  6474.     SendChat("/time")
  6475. }
  6476. return
  6477. MSK:
  6478. SendChat("/mask")
  6479. sleep 1000
  6480. SendChat("/me достал"Female " из нагрудного кармана маску")
  6481. Sleep 1300
  6482. SendChat("/me натянул"Female " маску на голову")
  6483. Sleep 1300
  6484. SendChat("/do Маска на лице.")
  6485. return
  6486. HEAL:
  6487. SendChat("/healme")
  6488. sleep 1300
  6489. SendChat("/me достал"Female " карманную аптечку")
  6490. Sleep 1300
  6491. SendChat("/me разорвав упаковку достал"Female " шприц с обезболевающим, после чего воткнул"Female " его в ногу")
  6492. return
  6493. LEC:
  6494. if rung <5
  6495. {
  6496. addChatMessage("{1E90FF}[MVD Tools]{FFFFFF} - Функция доступна от должности «Старший агент/Ст.Лейтенант»!")
  6497.     return
  6498. }
  6499. if rung >4
  6500. {
  6501. showdialog("1", "Лекции", "{FFA500}Для выбора лекции введите ее номер:`n{1E90FF}1) - Лекция о Субординации`n2) - Лекция о ПДД`n3) - Лекция о наркотиках`n4) - Лекция о ношении оружия`n5) - Действия при теракте`n", "Далее")
  6502. input, idlec, V, {Enter}
  6503.     sleep 100
  6504.     if (idlec=="1")
  6505.     {
  6506.         SendChat("Сейчас я прочитаю вам лекцию о субординации!")
  6507.         Sleep 4500
  6508.         SendChat("Субординация это истема строгого служебного подчинения младших к старшим.")
  6509.         Sleep 4500
  6510.         SendChat("Иными словами – это поведение, которое демонстрирует уважение подчиненных к коллегам")
  6511.         Sleep 4500
  6512.         SendChat("Еще этот термин можно назвать правилом, которое заключается в том")
  6513.         Sleep 4500
  6514.         SendChat("что младшие по званию или по должности, обязаны уважать старших по званию или по должности.")
  6515.         Sleep 4500
  6516.         SendChat("Таким образом, можно заметить")
  6517.         Sleep 4500
  6518.         SendChat("что соблюдение субординации является обязательной частью формата...")
  6519.         Sleep 4500
  6520.         SendChat("отношений «подчиненный – начальник»")
  6521.         return
  6522.     }
  6523.     if (idlec=="2")
  6524.     {
  6525.         SendChat("Сейчас я прочитаю вам лекцию о ПДД!")
  6526.         Sleep 4500
  6527.         SendChat("Если кому-то неизвестно, ПДД расшифровывается, как Правила Дорожного Движения")
  6528.         Sleep 4500
  6529.         SendChat("И в данной лекции я расскажу о этих правилах.")
  6530.         Sleep 4500
  6531.         SendChat("Сначала поговорим об ограничениях скорости.")
  6532.         Sleep 4500
  6533.         SendChat(" За пределом города разрешено ехать с любой скоростью.")
  6534.         Sleep 4500
  6535.         SendChat("Остановка и стоянка транспортного средства разрешена на обочине или же в отведенных для этого местах.")
  6536.         Sleep 4500
  6537.         SendChat("Обгон разрешен только с левой стороны.")
  6538.         Sleep 4500
  6539.         SendChat("На этом у меня все, спасибо за внимание, лекция окончена.")
  6540.     }
  6541.     if (idlec=="3")
  6542.     {
  6543.         SendChat("Сейчас я прочитаю вам лекцию о наркотических веществах!")
  6544.         Sleep 4500
  6545.         SendChat("Вообще, хранение наркотиков в нашем штате очень спорная тема")
  6546.         Sleep 4500
  6547.         SendChat("За употребление наркотических веществ можно попасть в розыск четвертой степени.")
  6548.         Sleep 4500
  6549.         SendChat("А так же наказывают за хранение, перевозку и сбыт")
  6550.         Sleep 4500
  6551.         SendChat("Сейчас я вам расскажу, как надо действовать при нахождении наркотических вещест")
  6552.         Sleep 4500
  6553.         SendChat("При обыске следует надеть перчатки, дабы не оставить сових отпечатков")
  6554.         Sleep 4500
  6555.         SendChat("При обнаружении наркотических средств, вы должны убрать их в гермитичный пакет")
  6556.         Sleep 4500
  6557.         SendChat("А так же объявить человека в розыс пятой степени по статье - 4.1 ЕПК")
  6558.         Sleep 4500
  6559.         SendChat("Если же приступник был пойман при распространении или продаже")
  6560.         Sleep 4500
  6561.         SendChat("Тогда объявляем его в розыск шестой степени по статье - 4.2 ЕПК")
  6562.     }
  6563.     if (idlec=="4")
  6564.     {
  6565.         SendChat("Сейчас я прочитаю вам лекцию о хранении оружия!")
  6566.         Sleep 4500
  6567.         SendChat("Хранение оружия, если у вас имеется лицензия - ненаказуемо")
  6568.         Sleep 4500
  6569.         SendChat("Однако не стоит забывать, что закон регулирует ношение оружия в открытом виде")
  6570.         Sleep 4500
  6571.         SendChat("За продажу, как и за ношение его без лицензии")
  6572.         Sleep 4500
  6573.         SendChat("Можно получить четвертый уровень розыска по статье - 3.2 ЕПК")
  6574.         Sleep 4500
  6575.         SendChat("А за ношение оружия в открытом виде - второй уровень розыска по статье 3.1 УК")
  6576.     }
  6577.     if (idlec=="5")
  6578.     {
  6579.         SendChat("Сейчас я расскажу, как вы должны действовать во время теракта")
  6580.         Sleep 4500
  6581.         SendChat("Руководство полицейского департамента, в чьем городе происходит теракт")
  6582.         Sleep 1500
  6583.         SendChat("обязаны выслать на место происшествия всех своих сотрудников.")
  6584.         Sleep 4500
  6585.         SendChat("Сотрудники ППС и ДПС должны оцепить предполагаемую зону происшествия так")
  6586.         Sleep 1500
  6587.         SendChat("чтобы преступники не могли покинуть местность.")
  6588.         Sleep 4500
  6589.         SendChat("Сотрудники ППС и ДПС должны эвакуировать гражданских с места происшествия силой.")
  6590.         Sleep 4500
  6591.         SendChat("Сотрудники SWAT помогает в оцеплении и ждут дальнейших указаний от Руководства FBI.")
  6592.         Sleep 4500
  6593.         SendChat("Старший офицер в штате, должен собрать всех своих подчиненных")
  6594.         Sleep 2500
  6595.         SendChat("И связаться с руководством ФБР для получения инструкций.")
  6596.         Sleep 4500
  6597.         SendChat("Сотрудники ППС и ДПС обязаны не впускать в зону происшествия гражданских, использовать taser x26")
  6598.         Sleep 4500
  6599.         SendChat("Полицейские должны четко выполнять действия, указанные сотрудниками ФБР.")
  6600.         Sleep 2500
  6601.         SendChat("Дальнейшие действия только по приказу руководства ФБР или ответственного за операцией.")
  6602.     }
  6603.     else
  6604.     {
  6605.         return
  6606.     }
  6607. }
  6608. return
  6609. SOS:
  6610. city:=getPlayerCity()
  6611. zone:=getPlayerZone()
  6612. PlayerID := getId()
  6613. sendChat("/do Часы на левой руке.")
  6614. sleep 1200
  6615. sendChat("/me нажал кнопку на часах")
  6616. Sleep 1200
  6617. sendChat("/do Запущена система экстренного оповещения.")
  6618. Sleep 1200
  6619. sendChat("/do Идёт вычисление данных.")
  6620. Sleep 1500
  6621. sendChat("/do Данные вычислены.")
  6622. sleep 1200
  6623. if ( city == "Unbekannt")
  6624. {
  6625.     sendChat("/su " PlayerID " 6 GPS-устройство [Тревога]")
  6626.     sleep 1000
  6627.     sendChat("/f [Тревога]: "myname " в опасности. Частота GPS-трекера: " PlayerID ".")
  6628.     return
  6629. }
  6630. if ( zone == "Unbekannt")
  6631. {
  6632.     sendChat("/su " PlayerID " 6 GPS-устройство [Тревога]")
  6633.     sleep 1000
  6634.     sendChat("/f [Тревога]: "myname " в опасности. Частота GPS-трекера: " PlayerID ".")
  6635.     return
  6636. }
  6637. else
  6638. {
  6639.     sendChat("/do Местоположение: город: "city " | район: "zone ".")
  6640.     Sleep 900
  6641.     sendChat("/do Включился GPS-трекер | Частота: "PlayerID ".")
  6642.     sleep 900
  6643.     sendChat("/do Началась передача данных.")
  6644.     sleep 800
  6645.     sendChat("/su "PlayerID " 6 GPS-устройство [Тревога]")
  6646.     sleep 1000
  6647.     sendChat("/f [Тревога]: "myname " в опасности | Частота GPS-трекера: "PlayerID ".")
  6648.     sleep 1000
  6649.     sendChat("/f [Тревога]: Текущее местоположение "myname ". Город: "city " | район: "zone ".")
  6650.     sleep 1200
  6651.     sendChat("/do Данные переданы.")
  6652.     sleep 2500
  6653.     sendChat("/do После передачи данных спутники начали визуальное наблюдение.")
  6654.     sleep 1500
  6655.     sendChat("/do Деактивация GPS-трекера или уничтожение часов не даст эффекта.")
  6656.     sleep 1500
  6657.     sendChat("/do Прервать слежение невозможно.")
  6658. }
  6659. return
  6660. POD:
  6661. city := getPlayerCity()
  6662. rayon := getPlayerZone()
  6663. if (rayon=="Unbekannt")
  6664. {
  6665. addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Не удалось определить район.")
  6666.     return
  6667. }
  6668. SendChat("/me зажав кнопку на рации, что-то сказал"Female )
  6669. Sleep 1200
  6670. SendChat("/r Запрашиваю подмогу в город - "city ", в район - "rayon)
  6671. return
  6672. ZP:
  6673. ntime := A_Min
  6674. nsec := A_Sec
  6675. m = 60
  6676. m -= %ntime%
  6677. s = 60
  6678. s -= %nsec%
  6679. addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- До зарплаты осталось {FFA500}"m "{FFFFFF} минут(-ы) | {FFA500}"s " {FFFFFF} секунд(-ы)")
  6680. return
  6681. TOZP:
  6682. ntime := A_Min
  6683. nsec := A_Sec
  6684. m = 60
  6685. m -= %ntime%
  6686. Random rand, 1, 4
  6687. if (rand==1)
  6688. {
  6689.     if m =5
  6690.     {
  6691.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- До зарплаты осталось {FFA500}5{FFFFFF} минут, не пропусти!")
  6692.         return
  6693.     }
  6694.     if m =30
  6695.     {
  6696.         armor := getPlayerArmor()
  6697.         if armor <=0
  6698.         {
  6699.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Надень бронежилет!")
  6700.             return
  6701.         }
  6702.         else
  6703.         {
  6704.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Помни, стрельба в интерьерах запрещена!")
  6705.             return
  6706.         }
  6707.     }
  6708.     if m =10
  6709.     {
  6710.         armor := getPlayerArmor()
  6711.         if armor <=0
  6712.         {
  6713.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Надень бронежилет!")
  6714.             return
  6715.         }
  6716.         else
  6717.         {
  6718.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Что бы обезвредить бомбу введи /бомба")
  6719.         }
  6720.         return
  6721.     }
  6722.     if m =50
  6723.     {
  6724.         armor := getPlayerArmor()
  6725.         if armor <=0
  6726.         {
  6727.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Надень бронежилет!")
  6728.             return
  6729.         }
  6730.         else
  6731.         {
  6732.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Для просмотра всех команд введите {FFA500}/mhelp")
  6733.             return
  6734.         }
  6735.     }
  6736.     else
  6737.     {
  6738.         return
  6739.     }
  6740. }
  6741. if (rand==2)
  6742. {
  6743.     if m =5
  6744.     {
  6745.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- До зарплаты осталось {FFA500}5{FFFFFF} минут, не пропусти!")
  6746.         return
  6747.     }
  6748.     if m =30
  6749.     {
  6750.         armor := getPlayerArmor()
  6751.         if armor <=0
  6752.         {
  6753.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Надень бронежилет!")
  6754.             return
  6755.         }
  6756.         else
  6757.         {
  6758.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Что бы обезвредить бомбу введи /бомба")
  6759.         }
  6760.         return
  6761.     }
  6762.     if m =10
  6763.     {
  6764.         armor := getPlayerArmor()
  6765.         if armor <=0
  6766.         {
  6767.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Надень бронежилет!")
  6768.             return
  6769.         }
  6770.         else
  6771.         {
  6772.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Для просмотра всех команд введите {FFA500}/mhelp")
  6773.             return
  6774.         }
  6775.     }
  6776.     if m =50
  6777.     {
  6778.         armor := getPlayerArmor()
  6779.         if armor <=0
  6780.         {
  6781.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Надень бронежилет!")
  6782.             return
  6783.         }
  6784.         else
  6785.         {
  6786.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Помни, стрельба в интерьерах запрещена!")
  6787.             return
  6788.         }
  6789.     }
  6790.     if m =20
  6791.     {
  6792.         armor := getPlayerArmor()
  6793.         if armor <=0
  6794.         {
  6795.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Надень бронежилет!")
  6796.             return
  6797.         }
  6798.         else
  6799.         {
  6800.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Что бы обезвредить бомбу введи /бомба")
  6801.         }
  6802.         return
  6803.     }
  6804.     else
  6805.     {
  6806.         return
  6807.     }
  6808. }
  6809. if (rand==3)
  6810. {
  6811.     if m =5
  6812.     {
  6813.     addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- До зарплаты осталось {FFA500}5{FFFFFF} минут, не пропусти!")
  6814.         return
  6815.     }
  6816.     if m =30
  6817.     {
  6818.         armor := getPlayerArmor()
  6819.         if armor <=0
  6820.         {
  6821.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Надень бронежилет!")
  6822.             return
  6823.         }
  6824.         else
  6825.         {
  6826.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Помни, стрельба в интерьерах запрещена!")
  6827.             return
  6828.         }
  6829.     }
  6830.     if m =10
  6831.     {
  6832.         armor := getPlayerArmor()
  6833.         if armor <=0
  6834.         {
  6835.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Надень бронежилет!")
  6836.             return
  6837.         }
  6838.         else
  6839.         {
  6840.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Для просмотра всех команд введите {FFA500}/mhelp")
  6841.             return
  6842.         }
  6843.     }
  6844.     if m =50
  6845.     {
  6846.         armor := getPlayerArmor()
  6847.         if armor <=0
  6848.         {
  6849.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Надень бронежилет!")
  6850.             return
  6851.         }
  6852.         else
  6853.         {
  6854.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Что бы обезвредить бомбу введи /бомба")
  6855.         }
  6856.         return
  6857.     }
  6858.     else
  6859.     {
  6860.         return
  6861.     }
  6862. }
  6863. if (rand==4)
  6864. {
  6865.     if m =5
  6866.     {
  6867.     addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- До зарплаты осталось {FFA500}5{FFFFFF} минут, не пропусти!")
  6868.         return
  6869.     }
  6870.     if m =30
  6871.     {
  6872.         armor := getPlayerArmor()
  6873.         if armor <=0
  6874.         {
  6875.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Надень бронежилет!")
  6876.             return
  6877.         }
  6878.         else
  6879.         {
  6880.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Для просмотра всех команд введите {FFA500}/mhelp")
  6881.             return
  6882.         }
  6883.     }
  6884.     if m =10
  6885.     {
  6886.         armor := getPlayerArmor()
  6887.         if armor <=0
  6888.         {
  6889.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Надень бронежилет!")
  6890.             return
  6891.         }
  6892.         else
  6893.         {
  6894.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Помни, стрельба в интерьерах запрещена!")
  6895.             return
  6896.         }
  6897.     }
  6898.     if m =50
  6899.     {
  6900.         armor := getPlayerArmor()
  6901.         if armor <=0
  6902.         {
  6903.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Надень бронежилет!")
  6904.             return
  6905.         }
  6906.         else
  6907.         {
  6908.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Чтобы провести Traffic Stop, введи /tstop")
  6909.         }
  6910.         return
  6911.     }
  6912.     else
  6913.     {
  6914.         return
  6915.     }
  6916. }
  6917. return
  6918. PRIVETSTVIE:
  6919. mynamef := getUsername()
  6920. RegExMatch(mynamef, "[a-zA-Z]+\Q_\E(.*[a-zA-Z]+)", myfam)
  6921. if (IsSAMPAvailable()==1){
  6922.     verscript := "2.4.3"
  6923.     buildscr := "8"
  6924.     URLDownloadToFile, https://raw.githubusercontent.com/Capo228/MVD_Support/master/upd.txt, upd.txt
  6925.     FileRead, toup, upd.txt
  6926.     if (IsInAFK()==1){
  6927.         return
  6928.     }
  6929.     if RegExMatch(toup, "\Qvers - \E(.*) \Qbui - \E(.*) \Qlink - \E(.*)", upd)
  6930.     {
  6931.         if upd2 > %buildscr%
  6932.         {
  6933.             FileDelete, upd.txt
  6934.             ShowGameText("~n~~n~~n~~n~~n~~n~~n~~r~MVD Tools v"verscript " ~n~~w~Loading.", 500, 5)
  6935.             sleep 500
  6936.             ShowGameText("~n~~n~~n~~n~~n~~n~~n~~r~MVD Tools v"verscript " ~n~~w~Loading..", 500, 5)
  6937.             sleep 500
  6938.             ShowGameText("~n~~n~~n~~n~~n~~n~~n~~r~MVD Tools v"verscript " ~n~~w~Loading...", 500, 5)
  6939.             sleep 500
  6940.             ShowGameText("~n~~n~~n~~n~~n~~n~~n~~r~MVD Tools v"verscript " ~n~~w~Loading.", 500, 5)
  6941.             sleep 500
  6942.             ShowGameText("~n~~n~~n~~n~~n~~n~~n~~r~MVD Tools v"verscript " ~n~~w~Loading..", 500, 5)
  6943.             sleep 500
  6944.             ShowGameText("~n~~n~~n~~n~~n~~n~~n~~r~MVD Tools v"verscript " ~n~~w~Loading...", 500, 5)
  6945.             sleep 200
  6946.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Здравия желаю "zvan " - {FFA500}"myfam1 "!")
  6947.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Вы используете не актуальную версию скрипта {FFA500}MVD Tools v"verscript)
  6948.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- На данный момент актуальная версия - {FFA500}"upd1)
  6949.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Обновить вы ее можете нажав на кнопку {FF0000}«Обновить»{FFFFFF} в меню скрипта")
  6950.             if print =1
  6951.             {
  6952.                 SetTimer, PrintLow, 300
  6953.             }
  6954.         }
  6955.         else
  6956.         {
  6957.             if (IsInAFK()==1){
  6958.                 return
  6959.             }
  6960.             else
  6961.             {
  6962.                 FileDelete, upd.txt
  6963.                 ShowGameText("~n~~n~~n~~n~~n~~n~~n~~r~MVD Tools v"verscript " ~n~~w~Loading.", 500, 5)
  6964.                 sleep 500
  6965.                 ShowGameText("~n~~n~~n~~n~~n~~n~~n~~r~MVD Tools v"verscript " ~n~~w~Loading..", 500, 5)
  6966.                 sleep 500
  6967.                 ShowGameText("~n~~n~~n~~n~~n~~n~~n~~r~MVD Tools v"verscript " ~n~~w~Loading...", 500, 5)
  6968.                 sleep 500
  6969.                 ShowGameText("~n~~n~~n~~n~~n~~n~~n~~r~MVD Tools v"verscript " ~n~~w~Loading.", 500, 5)
  6970.                 sleep 500
  6971.                 ShowGameText("~n~~n~~n~~n~~n~~n~~n~~r~MVD Tools v"verscript " ~n~~w~Loading..", 500, 5)
  6972.                 sleep 500
  6973.                 ShowGameText("~n~~n~~n~~n~~n~~n~~n~~r~MVD Tools v"verscript " ~n~~w~Loading...", 500, 5)
  6974.                 sleep 200
  6975.             addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Здравия желаю, "zvan " - {FFA500}"myfam1 "{FFFFFF}!")
  6976.             addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Удачи на службе!")
  6977.                 if (print==1)
  6978.                 {
  6979.                     SetTimer, PrintLow, 300
  6980.                 }
  6981.             }
  6982.         }
  6983.     }
  6984.     settimer, PRIVETSTVIE, off
  6985. }
  6986. return
  6987. SC:
  6988. SendChat("/time")
  6989. Sleep 1000
  6990. Send, {F8}
  6991. return
  6992. BLACK:
  6993. chatInput := CommandProcessor.TempText
  6994. if (RegExMatch(chatInput, "^/blacklist"))
  6995. {
  6996.     if RegExMatch(chatInput, "/blacklist (.*[0-9]+)", idblack)
  6997.     {
  6998.         if (idblack1==""){
  6999.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /blacklist [id]")
  7000.             return
  7001.         }
  7002.         else
  7003.         {
  7004.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Перед тем, как использовать {FFA500}«Черный список»{FFFFFF}, обнови его!")
  7005.             sleep 1000
  7006.             prov:=getPlayerNameById(idblack1)
  7007.             fileread, provbl, Доп.Данные\BlackList.txt
  7008.             if provbl contains %prov%
  7009.             {
  7010.             addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- "prov " {FF0000}находится{FFFFFF} в черном списке!")
  7011.                 return
  7012.             }
  7013.             else
  7014.             {
  7015.                 RPnick := RegExReplace(prov,"_"," ")
  7016.                 fileread, provbla, Доп.Данные\BlackList.txt
  7017.                 if provbla contains %RPnick%
  7018.                 {
  7019.                 addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- "RPnick " {FF0000}находится{FFFFFF} в черном списке!")
  7020.                 }
  7021.                 else
  7022.                 {
  7023.                 addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- "prov " {FFA500}не находится{FFFFFF} в черном списке!")
  7024.                     return
  7025.                 }
  7026.             }
  7027.         }
  7028.     }
  7029.     else
  7030.     {
  7031.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /blacklist [id]")
  7032.     }
  7033. }
  7034. return
  7035. ADDBLACK:
  7036. chatInput := CommandProcessor.TempText
  7037. if (RegExMatch(chatInput, "^/addbl"))
  7038. {
  7039.     if RegExMatch(chatInput, "/addbl (.*[0-9]+)", idaddblack)
  7040.     {
  7041.         if (idaddblack1=="")
  7042.         {
  7043.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /addbl [id]")
  7044.             return
  7045.         }
  7046.         else
  7047.         {
  7048.             addblack := getPlayerNameById(idaddblack1)
  7049.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Вносим в черный список {FFA500}"addblack )
  7050.             FileAppend, %addblack%`n, Доп.Данные\BlackList.txt
  7051.             sleep 1000
  7052.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Игрок {FFA500}"addblack "{FFFFFF} внеcен в черный список!")
  7053.         }
  7054.     }
  7055.     else
  7056.     {
  7057.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /addbl [id]")
  7058.     }
  7059. }
  7060. return
  7061. APOST:
  7062. if adok =0
  7063. {
  7064.     amypost := inPostRus()
  7065.     if (amypost==0)
  7066.     {
  7067.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Вы не находитесь не на одном из постов")
  7068.         return
  7069.     }
  7070.     if ascreen =0
  7071.     {
  7072.         if (tegr=="")
  7073.         {
  7074.             SendChat("/r Докладывает: "myname " | Пост: "amypost " | Cостояние стабильное.")
  7075.         }
  7076.         else
  7077.         {
  7078.             SendChat("/r "tegr " Докладывает: "myname " | Пост: "amypost " | Cостояние стабильное.")
  7079.         }
  7080.         sleep 1200
  7081.         arm := getPlayerArmor()
  7082.         if arm <= 0
  7083.         {
  7084.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял! Наденьте бронежилет.")
  7085.             return
  7086.         }
  7087.         else if arm <= 75
  7088.         {
  7089.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял! Смените бронежилет.")
  7090.             return
  7091.         }
  7092.         else
  7093.         {
  7094.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял!")
  7095.             return
  7096.         }
  7097.     }
  7098.     if ascreen =1
  7099.     {
  7100.         if (tegr=="")
  7101.         {
  7102.             SendChat("/r Докладывает: "myname " | Пост: "amypost " | Cостояние стабильное.")
  7103.         }
  7104.         else
  7105.         {
  7106.             SendChat("/r "tegr " Докладывает: "myname " | Пост: "amypost " | Cостояние стабильное.")
  7107.         }
  7108.         sleep 1200
  7109.         SendChat("/time")
  7110.         Sleep 1000
  7111.     Send, {F8}
  7112.         sleep 1200
  7113.         arm := getPlayerArmor()
  7114.         if arm <= 0
  7115.         {
  7116.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял! Наденьте бронежилет.")
  7117.             return
  7118.         }
  7119.         else if arm <= 75
  7120.         {
  7121.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял! Смените бронежилет.")
  7122.             return
  7123.         }
  7124.         else
  7125.         {
  7126.         addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял!")
  7127.             return
  7128.         }
  7129.     }
  7130. }
  7131. if adok =1
  7132. {
  7133.     if ascreen =0
  7134.     {
  7135.         if (tegr=="")
  7136.         {
  7137.             SendChat("/r Докладывает: "myname " | Пост: "amypost " | Cостояние стабильное.")
  7138.         }
  7139.         else
  7140.         {
  7141.             SendChat("/r "tegr " Докладывает: "myname " | Пост: "amypost " | Cостояние стабильное.")
  7142.         }
  7143.         sleep 1200
  7144.     }
  7145.     if ascreen =1
  7146.     {
  7147.         if (tegr=="")
  7148.         {
  7149.             SendChat("/r Докладывает: "myname " | Пост: "amypost " | Cостояние стабильное.")
  7150.         }
  7151.         else
  7152.         {
  7153.             SendChat("/r "tegr " Докладывает: "myname " | Пост: "amypost " | Cостояние стабильное.")
  7154.         }
  7155.         sleep 1200
  7156.         SendChat("/time")
  7157.         Sleep 1000
  7158.     Send, {F8}
  7159.         sleep 1200
  7160.     }
  7161.     arm := getPlayerArmor()
  7162.     if arm <= 0
  7163.     {
  7164.     addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял! Наденьте бронежилет.")
  7165.         return
  7166.     }
  7167.     else if arm <= 75
  7168.     {
  7169.     addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял! Смените бронежилет.")
  7170.         return
  7171.     }
  7172.     else
  7173.     {
  7174.     addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял!")
  7175.         return
  7176.     }
  7177. addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Автодоклад с поста -{FFA500} активирован!")
  7178.     settimer, AdPOST, %zad%
  7179. }
  7180. return
  7181. AdPOST:
  7182. amypost := inPostRus()
  7183. if (amypost==0)
  7184. {
  7185. addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Вы не находитесь не на одном из постов")
  7186.     return
  7187. }
  7188. if ascreen =0
  7189. {
  7190.     if (tegr=="")
  7191.     {
  7192.         SendChat("/r Докладывает: "myname " | Пост: "amypost " | Cостояние стабильное.")
  7193.     }
  7194.     else
  7195.     {
  7196.         SendChat("/r "tegr " Докладывает: "myname " | Пост: "amypost " | Cостояние стабильное.")
  7197.     }
  7198.     sleep 1200
  7199. }
  7200. if ascreen =1
  7201. {
  7202.     if (tegr=="")
  7203.     {
  7204.         SendChat("/r Докладывает: "myname " | Пост: "amypost " | Cостояние стабильное.")
  7205.     }
  7206.     else
  7207.     {
  7208.         SendChat("/r "tegr " Докладывает: "myname " | Пост: "amypost " | Cостояние стабильное.")
  7209.     }
  7210.     sleep 1200
  7211.     SendChat("/time")
  7212.     Sleep 1000
  7213. Send, {F8}
  7214.     sleep 1200
  7215. }
  7216. arm := getPlayerArmor()
  7217. if arm <= 0
  7218. {
  7219. addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял! Наденьте бронежилет.")
  7220.     return
  7221. }
  7222. else if arm <= 75
  7223. {
  7224. addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял! Смените бронежилет.")
  7225.     return
  7226. }
  7227. else
  7228. {
  7229. addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Вас понял!")
  7230.     return
  7231. }
  7232. return
  7233. TIMER:
  7234. chatInput := CommandProcessor.TempText
  7235. if (RegExMatch(chatInput, "^/таймер"))
  7236. {
  7237.     if RegExMatch(chatInput, "/таймер (.*)", sect)
  7238.     {
  7239.         if (sect1=="")
  7240.         {
  7241.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /таймер [Количество секнуд]")
  7242.             return
  7243.         }
  7244.         else
  7245.         {
  7246.             SendChat("/me достал"Female " из кармана таймер")
  7247.             sleep 1200
  7248.             SendChat("/me установил"Female " на таймере вермя: "sect1 " секунд, затем нажал кнопку старт")
  7249.             sek := 0
  7250.             SetTimer, TIMER2, 1000
  7251.         }
  7252.     }
  7253.     else
  7254.     {
  7255.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /таймер [Количество секнуд]")
  7256.     }
  7257. }
  7258. return
  7259. TIMER2:
  7260. sek++
  7261. if sek =%sect1%
  7262. {
  7263.     SendChat("/do Время на таймере истекло.")
  7264.     sec := 0
  7265.     SetTimer, TIMER2, off
  7266. }
  7267. return
  7268. TSTOP:
  7269. chatInput := CommandProcessor.TempText
  7270. if (RegExMatch(chatInput, "^/tstop"))
  7271. {
  7272.     if RegExMatch(chatInput, "/tstop (.*[1-3]+)", stop)
  7273.     {
  7274.         if (stop1=="1")
  7275.         {
  7276.             SendChat("/m Заглушите автомобиль, положите руки на руль и оставайтесь в машине.")
  7277.             Sleep 1200
  7278.             SendChat("/m В противном случае я буду вынужден открыть огонь!")
  7279.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Если игрок выполнил требования, введи {FFA500}/tstop 2")
  7280.             return
  7281.         }
  7282.         if (stop1=="2")
  7283.         {
  7284.             SendChat("/me положил"Female " правую руку на кабуру")
  7285.             Sleep 1200
  7286.             SendChat("/me подойдя к машине, приложил"Female " руку к багажнику")
  7287.             Sleep 1200
  7288.             SendChat("/do В левой руке фонарик.")
  7289.             Sleep 1200
  7290.             SendChat("/me нажал"Female " на кнопку фонарика, тем самым включил"Female " его")
  7291.             Sleep 1200
  7292.             SendChat("/flight 1")
  7293.             sleep 1200
  7294.             SendChat("/me посветил"Female " фонариком в салон автомобилья")
  7295.             Sleep 1200
  7296.             SendChat("/do Что мог"LA " заметить полицейский в автомобиле?")
  7297.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Если игрок ответил в /do, введи {FFA500}/tstop 3")
  7298.             return
  7299.         }
  7300.         if (stop1=="3")
  7301.         {
  7302.             SendChat("/me выключив фонарик, повесил"Female " его на тактический пояс")
  7303.             sleep 1200
  7304.             SendChat("/flight 0")
  7305.             Sleep 1200
  7306.             SendChat("/me постучал"Female " в окно автомобиля")
  7307.             Sleep 1200
  7308.             SendChat("Здравствуйте, вас беспокоит "zvan " "org " "myname ".")
  7309.             Sleep 1200
  7310.             SendChat("Будьте любезны предоставить документы удостоверяющие вашу личность.")
  7311.             return
  7312.         }
  7313.     }
  7314.     else
  7315.     {
  7316.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /tstop [Стадия(1-3)]")
  7317.     }
  7318. }
  7319. return
  7320. SKIP:
  7321. chatInput := CommandProcessor.TempText
  7322. if (RegExMatch(chatInput, "^/givekey"))
  7323. {
  7324.     if RegExMatch(chatInput, "/givekey (.*[0-9]+)", skip)
  7325.     {
  7326.         if (skip1=="")
  7327.         {
  7328.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /givekey [id]")
  7329.             return
  7330.         }
  7331.         nameskip:=getPlayerNameById(skip1)
  7332.         RPnick := RegExReplace(nameskip,"_"," ")
  7333.         SendChat("/me достал"Female " бланк пропуска")
  7334.         Sleep 1200
  7335.         SendChat("/me начал"Female " заполнять пропуск на имя "RPnick)
  7336.         Sleep 1200
  7337.         SendChat("/givekey "skip1)
  7338.         Sleep 1200
  7339.         if (tegr==""){
  7340.             SendChat("/r Выписал"Female " пропуск на имя - "RPnick)
  7341.         }
  7342.         else
  7343.         {
  7344.             SendChat("/r "tegr " Выписал"Female " пропуск на имя - "RPnick)
  7345.         }
  7346.     }
  7347.     else
  7348.     {
  7349.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /givekey [id]")
  7350.     }
  7351. }
  7352. return
  7353. PrintLow:
  7354. aamypost := inPostEng()
  7355. if (aamypost==0)
  7356. {
  7357.     amyposth := ""
  7358. }
  7359. else
  7360. {
  7361.     amyposth := aamypost
  7362. }
  7363. ShowGameText("~n~~n~~n~~n~~n~~n~~n~~n~~w~"amyposth, 300, 5)
  7364. return
  7365. POLIG:
  7366. chatInput := CommandProcessor.TempText
  7367. if (RegExMatch(chatInput, "^/полиграф"))
  7368. {
  7369.     if RegExMatch(chatInput, "/полиграф (.*[0-9]+) (.*[1-2]+)", polig)
  7370.     {
  7371.         if (polig2=="")
  7372.         {
  7373.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /полиграф [id] [Стадия(1-2)]")
  7374.             return
  7375.         }
  7376.         else if polig2 =1
  7377.         {
  7378.             polig:=getPlayerNameById(polig1)
  7379.             RPnick := RegExReplace(polig,"_"," ")
  7380.             SendChat("/me положил"Female " полиграф на стол")
  7381.             Sleep 1500
  7382.             SendChat("/me разложил"Female " перед собой все необходимые датчики")
  7383.             sleep 1500
  7384.             SendChat("/me начал"Female " подключать датчики к полиграфу")
  7385.             sleep 1500
  7386.             SendChat("/do Все необходимые датчики к полиграфу подключены.")
  7387.             sleep 1500
  7388.             SendChat("Встаньте и повернитесь ко мне спиной.")
  7389.             sleep 3000
  7390.             SendChat("/me начал"Female " подключение датчиков к "RPnick)
  7391.             sleep 2000
  7392.             SendChat("/me прикрепил"Female " датчик грудного дыхания к "RPnick)
  7393.             sleep 2500
  7394.             SendChat("/me прикрепил"Female " датчик диафрагмального дыхания к "RPnick)
  7395.             sleep 2500
  7396.             SendChat("/me установил"Female " фотоплетизмаграмму на палец "RPnick)
  7397.             sleep 2500
  7398.             SendChat("/me установил"Female " датчики двигательной активности")
  7399.             sleep 2500
  7400.             SendChat("/me установил"Female " датчик речевых реакций")
  7401.             sleep 2500
  7402.             SendChat("/me установил"Female " датчик речевых реакций")
  7403.             sleep 2500
  7404.             SendChat("/me установил"Female " датчик кожно-гальванической реакции")
  7405.             sleep 2500
  7406.             SendChat("/me начал"Female " подключать полиграф к ноутбуку")
  7407.             sleep 2500
  7408.             SendChat("/do Полиграф готов к использованию.")
  7409.             sleep 3000
  7410.             SendChat("/do На столе лежит два листа бумаги.")
  7411.             sleep 1500
  7412.             SendChat("/do Один лист бумаги белый, второй черный.")
  7413.             sleep 1500
  7414.             SendChat("Отвечать на мои вопросы нужно односложно.")
  7415.             sleep 1500
  7416.             SendChat("/me указывает пальцем на черный лист бумаги")
  7417.             Sleep 1500
  7418.             SendChat("Это черный лист бумаги?")
  7419.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- После ответа введи {FFA500}/полиграф "polig1 " 2")
  7420.             return
  7421.         }
  7422.         else if polig2 =2
  7423.         {
  7424.             polig:=getPlayerNameById(polig1)
  7425.             RPnick := RegExReplace(polig,"_"," ")
  7426.             SendChat("/do Полиграф анализирует полученную информацию.")
  7427.             sleep 1200
  7428.             SendChat("/me изучил"Female " данные полученные полиграфом")
  7429.             sleep 1200
  7430.             SendChat("/try Согласно показаниям полиграфа - "RPnick " врет.")
  7431.             return
  7432.         }
  7433.     }
  7434.     else
  7435.     {
  7436.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /полиграф [id] [Стадия(1-2)]")
  7437.     }
  7438. }
  7439. return
  7440. TAKE:
  7441. chatInput := CommandProcessor.TempText
  7442. if (RegExMatch(chatInput, "^/take"))
  7443. {
  7444.     if RegExMatch(chatInput, "/take (.*[0-9]+) (.*[1-2])", take)
  7445.     {
  7446.         if (take2=="")
  7447.         {
  7448.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /take [id] [1 - лицензии | 2 - запрещенные предметы]")
  7449.             return
  7450.         }
  7451.         else if (take1=="1"){
  7452.             takeid:=getPlayerNameById(take1)
  7453.             RPnick := RegExReplace(takeid,"_"," ")
  7454.             SendChat("/me достал"Female " КПК из офицерской сумки")
  7455.             sleep 1200
  7456.             SendChat("/me введя пароль, открыл"Female " в базу данный МВД")
  7457.             sleep 1200
  7458.             SendChat("/me открыв список лицензий "RPnick ", внес"LA " в него поправки")
  7459.             sleep 1200
  7460.             SendChat("/take "take1)
  7461.         }
  7462.         else if (take1=="2"){
  7463.             takeid:=getPlayerNameById(take1)
  7464.             RPnick := RegExReplace(takeid,"_"," ")
  7465.             SendChat("/do На руках перчатки.")
  7466.             sleep 1200
  7467.             SendChat("/me заметив запрещенный предмет у "RPnick " достал"Female " его")
  7468.             sleep 1200
  7469.             SendChat("/me достал"Female " из нагрудного кармана «zip lock» и убрал"Female " запрещенный предмет в него")
  7470.             sleep 1200
  7471.             SendChat("/me плотно закрыл"Female " пакет, затем убрал"Female " его в сумку")
  7472.             sleep 1200
  7473.             SendChat("/take "take1)
  7474.         }
  7475.     }
  7476.     else
  7477.     {
  7478.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /take [id] [1 - лицензии | 2 - запрещенные предметы]")
  7479.     }
  7480. }
  7481. return
  7482. CLEAR:
  7483. chatInput := CommandProcessor.TempText
  7484. if (RegExMatch(chatInput, "^/clear"))
  7485. {
  7486.     if RegExMatch(chatInput, "/clear (.*[0-9]+) (.*)", clear)
  7487.     {
  7488.         if (clear2=="")
  7489.         {
  7490.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /clear [id] [Причина]")
  7491.             return
  7492.         }
  7493.         clearid:=getPlayerNameById(clear1)
  7494.         RPnick := RegExReplace(clearid,"_"," ")
  7495.         SendChat("/me достал"Female " КПК из офицерской сумки")
  7496.         sleep 1200
  7497.         SendChat("/me введя пароль, открыл"Female " в базу данный МВД")
  7498.         sleep 1200
  7499.         SendChat("/me открыв список розыскиваемых, удалил"Female " дело №["clear1 "]")
  7500.         sleep 1200
  7501.         SendChat("/clear "clear1)
  7502.         sleep 1200
  7503.         SendChat("/do Дело №"clear1 " - "RPnick " - Закрыто.")
  7504.         sleep 1200
  7505.         if (tegf=="")
  7506.         {
  7507.             SendChat("/f Закрыл"Female " дело №["clear1 "] | Причина - ["clear2 "].")
  7508.             return
  7509.         }
  7510.         else
  7511.         {
  7512.             SendChat("/f "tegf " Закрыл"Female " дело №["clear1 "] | Причина - ["clear2 "].")
  7513.             return
  7514.         }
  7515.     }
  7516.     else
  7517.     {
  7518.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /clear [id] [Причина]")
  7519.     }
  7520. }
  7521. return
  7522. INCAR:
  7523. chatInput := CommandProcessor.TempText
  7524. if (RegExMatch(chatInput, "^/incar"))
  7525. {
  7526.     if RegExMatch(chatInput, "/incar (.*[0-9]+) (.*[1-2])", incarid)
  7527.     {
  7528.         if (incarid2=="")
  7529.         {
  7530.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /incar [id] [1 - машина | 2 - мотоцикл]")
  7531.             return
  7532.         }
  7533.         namecar:=getPlayerNameById(incarid1)
  7534.         RPnick := RegExReplace(namecar,"_"," ")
  7535.         if (incarid2=="1")
  7536.         {
  7537.             SendChat("/me достал"Female " дубинку с поясного держателя")
  7538.             Sleep 1500
  7539.             SendChat("/me размахнувшись, ударил"Female " дубинкой по стеклу")
  7540.             Sleep 1500
  7541.             SendChat("/me просунув руку в окно, разблокировал"Female " дверь")
  7542.             Sleep 1500
  7543.             SendChat("/me схватил"Female " "RPnick " заруку")
  7544.             Sleep 1500
  7545.             SendChat("/me потянул"Female " "RPnick " на себя, тем самым вытащил"Female " его из машины")
  7546.             return
  7547.         }
  7548.         if (incarid2=="2")
  7549.         {
  7550.             SendChat("/me протянул"Female " правую руку к рулю")
  7551.             Sleep 1500
  7552.             SendChat("/me зажал"Female " рукой рычаг тормоза")
  7553.             Sleep 1500
  7554.             SendChat("/me левой рукой скинул"Female " "RPnick " с мотоцикла")
  7555.             return
  7556.         }
  7557.     }
  7558.     else
  7559.     {
  7560.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /incar [id] [1 - машина | 2 - мотоцикл]")
  7561.     }
  7562. }
  7563. return
  7564. TIMEINPOST:
  7565. poost := inPostEng()
  7566. affk := IsInAFK()
  7567. if (affk==1)
  7568. {
  7569.     return
  7570. }
  7571. if (poost==0)
  7572. {
  7573.     return
  7574. }
  7575. else
  7576. {
  7577.     today := A_DD
  7578.     mount := A_MM
  7579.     Fileread, day, %A_MyDocuments%\GTA San Andreas User Files\SAMP\INPOST.txt
  7580.     if RegExMatch(day, "(.*[0-9]+) (.*[0-9]+) (.*[0-9]+)", postt)
  7581.     {
  7582.         if (postt1==mount && postt2==today)
  7583.         {
  7584.             FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\INPOST.txt
  7585.             postt3++
  7586.         }
  7587.         else
  7588.         {
  7589.             FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\INPOST.txt
  7590.             FileAppend, %mount% %today% 1, %A_MyDocuments%\GTA San Andreas User Files\SAMP\INPOST.txt
  7591.             return
  7592.         }
  7593.         FileAppend, %mount% %today% %postt3%, %A_MyDocuments%\GTA San Andreas User Files\SAMP\INPOST.txt
  7594.     }
  7595.     else
  7596.     {
  7597.         FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\INPOST.txt
  7598.         FileAppend, %mount% %today% 1, %A_MyDocuments%\GTA San Andreas User Files\SAMP\INPOST.txt
  7599.     }
  7600. }
  7601. return
  7602. TIMEPOST:
  7603. Fileread, day, %A_MyDocuments%\GTA San Andreas User Files\SAMP\INPOST.txt
  7604. if RegExMatch(day, "(.*[0-9]+) (.*[0-9]+) (.*[0-9]+)", postt)
  7605. {
  7606. addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- За сегодня вы провели на посту - {FFA500}"postt3 " {FFFFFF}минут.")
  7607. }
  7608. else
  7609. {
  7610. addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- Не удалось вычислить время проведенное вами на посту.")
  7611. }
  7612. return
  7613. ^!Numpad0::
  7614. Random, ROP, 1, 13
  7615. if (ROP==1)
  7616. {
  7617.     SendChat("Мне будет тебя не хватать...")
  7618. }
  7619. if (ROP==2)
  7620. {
  7621.     SendChat("А ты забавный...")
  7622. }
  7623. if (ROP==3)
  7624. {
  7625.     SendChat("Надо сходить, свечку за упокой поставить...")
  7626. }
  7627. if (ROP==4)
  7628. {
  7629.     SendChat("Земля в ухо!")
  7630. }
  7631. if (ROP==5)
  7632. {
  7633.     SendChat("Спи спокойно...")
  7634. }
  7635. if (ROP==6)
  7636. {
  7637.     SendChat("Ой, я случайно!")
  7638. }
  7639. if (ROP==7)
  7640. {
  7641.     SendChat("В травмпункт подбросить?")
  7642. }
  7643. if (ROP==8)
  7644. {
  7645.     SendChat("Пиу-пиу")
  7646. }
  7647. if (ROP==9)
  7648. {
  7649.     SendChat("Извини, не хотел тебя обидеть!")
  7650. }
  7651. if (ROP==10)
  7652. {
  7653.     SendChat("Я конечно девочек не обижаю, но ради тебя сделал исключение!")
  7654.     sleep 1000
  7655.     SendChat(")")
  7656. }
  7657. if (ROP==11)
  7658. {
  7659.     SendChat("0")
  7660.     sleep 1000
  7661.     SendChat("Кхм")
  7662.     sleep 1000
  7663.     SendChat(")")
  7664. }
  7665. if (ROP==12)
  7666. {
  7667.     SendChat("Мощный, жилистый!")
  7668. }
  7669. if (ROP==13)
  7670. {
  7671.     SendChat(".r Жмых уничтожен!")
  7672.     sleep 1000
  7673.     SendChat("КХМ...")
  7674. }
  7675. return
  7676. KPK:
  7677. if (isPlayerDriver() == 1) {
  7678.     if (getVehicleModelName() == "FBI Rancher") or (getVehicleModelName() == "PoliceCar") or (getVehicleModelName() == "Police Ranger") or (getVehicleModelName() == "FBI Truck") or (getVehicleModelName() == "S.W.A.T") or (getVehicleModelName() == "Police Maverick") or (getVehicleModelName() == "Cheetah") or (getVehicleModelName() == "Enforcer") or (getVehicleModelName() == "Sultan") or (getVehicleModelName() == "NRG-500") or (getVehicleModelName() == "HPV1000") or (getVehicleModelName() == "Burrito"){
  7679.         if (getVehicleModelName() == "NRG-500") or (getVehicleModelName() == "HPV1000"){
  7680.             SendChat("/me достал"Female " карманный компьютер из офицерской сумки")
  7681.             sleep 1200
  7682.             SendChat("/me введя пароль от базы данных, выбрал"Female " нужное личное дело")
  7683.             sleep 1000
  7684.             SendChat("/obc")
  7685.             return
  7686.         }
  7687.         SendChat("/do В "getVehicleModelName() " установлен бортовой компьютер.")
  7688.         sleep 1200
  7689.         SendChat("/me отрыв крышку бортового компьютера, включил"Female " его")
  7690.         sleep 1200
  7691.         SendChat("/me введя пароль от базы данных, выбрал"Female " нужное личное дело")
  7692.         sleep 1000
  7693.         SendChat("/obc")
  7694.     }
  7695.     else
  7696.     {
  7697.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Использовать бортовой компьютер можно только в служебном авто!")
  7698.     }
  7699. }
  7700. else
  7701. {
  7702. addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Использовать бортовой компьютер можно только в машине!")
  7703. }
  7704. return
  7705. RADIO:
  7706. chatInput := CommandProcessor.TempText
  7707. if (RegExMatch(chatInput, "^/playrad"))
  7708. {
  7709.     if RegExMatch(chatInput, "/playrad (.*[1-5])", idrad)
  7710.     {
  7711.         if (idrad1=="")
  7712.         {
  7713.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /playrad [1-5]")
  7714.             return
  7715.         }
  7716.         if (idrad1=="1")
  7717.         {
  7718.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Включено «Авторадио»")
  7719.             playAudioStream("http://ic2.101.ru:8000/v3_1")
  7720.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Для отключения используй - /stoprad")
  7721.         }
  7722.         if (idrad1=="2")
  7723.         {
  7724.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Включено «Радио Шансон»")
  7725.             playAudioStream("http://chanson.hostingradio.ru:8041/chanson128.mp3")
  7726.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Для отключения используй - /stoprad")
  7727.         }
  7728.         if (idrad1=="3")
  7729.         {
  7730.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Включено «Blackstar Radio»")
  7731.             playAudioStream("http://blackstarradio.hostingradio.ru:8024/blackstarradio128.mp3")
  7732.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Для отключения используй - /stoprad")
  7733.         }
  7734.         if (idrad1=="4")
  7735.         {
  7736.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Включено «Radio HOT 108 JAMZ»")
  7737.             playAudioStream("http://sc.hot108.com:4020/")
  7738.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Для отключения используй - /stoprad")
  7739.         }
  7740.         if (idrad1=="5")
  7741.         {
  7742.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Включено «DFM Trap»")
  7743.             playAudioStream("http://icecast.radiodfm.cdnvideo.ru/st07.mp3")
  7744.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Для отключения используй - /stoprad")
  7745.         }
  7746.     }
  7747.     else
  7748.     {
  7749.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /playrad [1-5]")
  7750.     }
  7751. }
  7752. return
  7753. SRAD:
  7754. addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Проигрование прекращено")
  7755. stopAudioStream()
  7756. return
  7757. PLAYMY:
  7758. chatInput := CommandProcessor.TempText
  7759. if (RegExMatch(chatInput, "^/myplay"))
  7760. {
  7761.     if RegExMatch(chatInput, "/myplay (.*)", idmyrad)
  7762.     {
  7763.         if (idmyrad1=="")
  7764.         {
  7765.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /myplay [Ссылка на аудиопоток]")
  7766.             return
  7767.         }
  7768.         playAudioStream(idmyrad1)
  7769.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Для отключения используй - /stoprad")
  7770.     }
  7771.     else
  7772.     {
  7773.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /myplay [Ссылка на аудиопоток]")
  7774.     }
  7775. }
  7776. return
  7777. RPcar:
  7778. if (isPlayerDriver() == 1) {
  7779.     if (getVehicleEngineState() == 1){
  7780.         if (getVehicleModelName()=="MountainBike") or (getVehicleModelName()=="Bike") or (getVehicleModelName()=="BMX"){
  7781.             return
  7782.         }
  7783.         SendChat("/me вставил ключ и завел " getVehicleModelName())
  7784.         SetTimer, RPcar2, 500
  7785.         SetTimer, RPcar, off
  7786.         return
  7787.     }
  7788. }
  7789. return
  7790. RPcar2:
  7791. if (isPlayerDriver() == 1) {
  7792.     if (getVehicleEngineState() == 0)
  7793.     {
  7794.         if (getVehicleModelName()=="MountainBike" | getVehicleModelName()=="Bike" | getVehicleModelName()=="BMX"){
  7795.             return
  7796.         }
  7797.         SendChat("/me заглушил " getVehicleModelName() " и вытащил ключи")
  7798.         SetTimer, RPcar2, off
  7799.         SetTimer, RPcar, 500
  7800.         return
  7801.     }
  7802. }
  7803. return
  7804. GOTOME:
  7805. chatInput := CommandProcessor.TempText
  7806. if (RegExMatch(chatInput, "^/gotome"))
  7807. {
  7808.     if RegExMatch(chatInput, "/gotome (.*[0-9]+)", idgot)
  7809.     {
  7810.         if (idgot1=="")
  7811.         {
  7812.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /gotome [id]")
  7813.             return
  7814.         }
  7815.         namegoto := getPlayerNameById(idgot1)
  7816.         RPnick := RegExReplace(namegoto,"_"," ")
  7817.         SendChat("/me Применив спец.прием, заломал"Female " руку "RPnick)
  7818.         sleep 1200
  7819.         SendChat("/gotome "idgot1)
  7820.     }
  7821.     else
  7822.     {
  7823.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /gotome [id]")
  7824.     }
  7825. }
  7826. return
  7827. HACK:
  7828. SendChat("/me нанес удар ногой подвери дома")
  7829. sleep 1200
  7830. SendChat("/do Дверь выбита.")
  7831. sleep 1200
  7832. SendChat("/hack")
  7833. RADAR:
  7834. chatInput := CommandProcessor.TempText
  7835. if (RegExMatch(chatInput, "^/radar"))
  7836. {
  7837.     if RegExMatch(chatInput, "/radar (.*[0-9]+)", idrad)
  7838.     {
  7839.         if (idrad1==""){
  7840.         addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /radar [скорость]")
  7841.             return
  7842.         }
  7843.         SetTimer, RAD, 1000
  7844.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Для отключения радара используй - /radoff")
  7845.     }
  7846.     else
  7847.     {
  7848.     addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Используй /radar [скорость]")
  7849.     }
  7850. }
  7851. return
  7852. RAD:
  7853. idsp := NearPlayerInCar(90)
  7854. radspeed := getTargetVehicleSpeedById(idsp)
  7855. if (radspeed > idrad1){
  7856. addChatMessage("{00CED1}[DISP - "helpname " to "myname "] {FFFFFF}- "getTargetVehicleModelNameById(idsp) " с гос.номером ["idsp "] движется со сокростью: "radspeed)
  7857. }
  7858. return
  7859. RADOFF:
  7860. SetTimer, RAD, Off
  7861. addChatMessage("{1E90FF}[MVD Tools] {FFFFFF}- Радар отключен.")
  7862. return
  7863. BIN1:
  7864. Gui, Submit, NoHide
  7865. if (HK6=="")
  7866. {
  7867.     TrayTip, Ошибка!, Назначьте клавишу!, 5, 3
  7868.     return
  7869. }
  7870. if (BS1=="")
  7871. {
  7872.     TrayTip, Ошибка!, Введите количество строк!, 5, 3
  7873.     return
  7874. }
  7875. if RegExMatch(BS1, "(.*[0-9]+)", BBS)
  7876. {
  7877.     yPos := 30
  7878.     yDelay := 60
  7879.     NumMenu1 := 0
  7880.     Gui, 5:Destroy
  7881.     Gui, 5:Add, Text, x6 y10 w280 h20 +BackgroundTrans, Бинд
  7882.     Index := 0
  7883.     loop, %BS1%
  7884.     {
  7885.         NumMenu1++
  7886.         Index++
  7887.         Gui, 5:Add, Text, x6 y%yDelay% w80 h20 +BackgroundTrans, Задержка
  7888.         Gui, 5:Font, norm,
  7889.         Gui, 5:Add, Edit, x6 y%yPos% w440 h20 +BackgroundTrans vB1ind%NumMenu1%, % B1ind%Index%
  7890.         yPos := yPos + 30
  7891.         Gui, 5:Add, Edit, x76 y%yPos% w70 h20 +BackgroundTrans vD1elay%NumMenu1%, % D1elay%Index%
  7892.         yPos := yPos + 30
  7893.         yDelay+=60
  7894.     }
  7895.     Gui, 5:add, button, y%yPos% x6 gSave, Применить
  7896.     yPos+=30
  7897.     Gui, 5:Show, center h%yPos% w455, MVD Tools [Настройки]
  7898. }
  7899. else
  7900. {
  7901.     MsgBox, 16, Ошибка, Введите коректное количество строк!
  7902. }
  7903. return
  7904. BIN2:
  7905. Gui, Submit, NoHide
  7906. if (HK7=="")
  7907. {
  7908.     TrayTip, Ошибка!, Назначьте клавишу!, 5, 3
  7909.     return
  7910. }
  7911. if (BS2=="")
  7912. {
  7913.     TrayTip, Ошибка!, Введите количество строк!, 5, 3
  7914.     return
  7915. }
  7916. if RegExMatch(BS2, "(.*[0-9]+)", BBS)
  7917. {
  7918.     yPos := 30
  7919.     yDelay := 60
  7920.     NumMenu1 := 0
  7921.     Gui, 5:Destroy
  7922.     Gui, 5:Add, Text, x6 y10 w280 h20 +BackgroundTrans, Бинд
  7923.     Index := 0
  7924.     loop, %BS2%
  7925.     {
  7926.         NumMenu1++
  7927.         Index++
  7928.         Gui, 5:Add, Text, x6 y%yDelay% w80 h20 +BackgroundTrans, Задержка
  7929.         Gui, 5:Font, norm,
  7930.         Gui, 5:Add, Edit, x6 y%yPos% w440 h20 +BackgroundTrans vB2ind%NumMenu1%, % B2ind%Index%
  7931.         yPos := yPos + 30
  7932.         Gui, 5:Add, Edit, x76 y%yPos% w70 h20 +BackgroundTrans vD2elay%NumMenu1%, % D2elay%Index%
  7933.         yPos := yPos + 30
  7934.         yDelay+=60
  7935.     }
  7936.     Gui, 5:add, button, y%yPos% x6 gSave, Применить
  7937.     yPos+=30
  7938.     Gui, 5:Show, center h%yPos% w455, MVD Tools [Настройки]
  7939. }
  7940. else
  7941. {
  7942.     MsgBox, 16, Ошибка, Введите коректное количество строк!
  7943. }
  7944. return
  7945. BIN3:
  7946. Gui, Submit, NoHide
  7947. if (HK8=="")
  7948. {
  7949.     TrayTip, Ошибка!, Назначьте клавишу!, 5, 3
  7950.     return
  7951. }
  7952. if (BS3=="")
  7953. {
  7954.     TrayTip, Ошибка!, Введите количество строк!, 5, 3
  7955.     return
  7956. }
  7957. if RegExMatch(BS3, "(.*[0-9]+)", BBS)
  7958. {
  7959.     yPos := 30
  7960.     yDelay := 60
  7961.     NumMenu1 := 0
  7962.     Gui, 5:Destroy
  7963.     Gui, 5:Add, Text, x6 y10 w280 h20 +BackgroundTrans, Бинд
  7964.     Index := 0
  7965.     loop, %BS3%
  7966.     {
  7967.         NumMenu1++
  7968.         Index++
  7969.         Gui, 5:Add, Text, x6 y%yDelay% w80 h20 +BackgroundTrans, Задержка
  7970.         Gui, 5:Font, norm,
  7971.         Gui, 5:Add, Edit, x6 y%yPos% w440 h20 +BackgroundTrans vB3ind%NumMenu1%, % B3ind%Index%
  7972.         yPos := yPos + 30
  7973.         Gui, 5:Add, Edit, x76 y%yPos% w70 h20 +BackgroundTrans vD3elay%NumMenu1%, % D3elay%Index%
  7974.         yPos := yPos + 30
  7975.         yDelay+=60
  7976.     }
  7977.     Gui, 5:add, button, y%yPos% x6 gSave, Применить
  7978.     yPos+=30
  7979.     Gui, 5:Show, center h%yPos% w455, MVD Tools [Настройки]
  7980. }
  7981. else
  7982. {
  7983.     MsgBox, 16, Ошибка, Введите коректное количество строк!
  7984. }
  7985. return
  7986. BIN4:
  7987. Gui, Submit, NoHide
  7988. if (HK9=="")
  7989. {
  7990.     TrayTip, Ошибка!, Назначьте клавишу!, 5, 3
  7991.     return
  7992. }
  7993. if (BS4=="")
  7994. {
  7995.     TrayTip, Ошибка!, Введите количество строк!, 5, 3
  7996.     return
  7997. }
  7998. if RegExMatch(BS4, "(.*[0-9]+)", BBS)
  7999. {
  8000.     yPos := 30
  8001.     yDelay := 60
  8002.     NumMenu1 := 0
  8003.     Gui, 5:Destroy
  8004.     Gui, 5:Add, Text, x6 y10 w280 h20 +BackgroundTrans, Бинд
  8005.     Index := 0
  8006.     loop, %BS4%
  8007.     {
  8008.         NumMenu1++
  8009.         Index++
  8010.         Gui, 5:Add, Text, x6 y%yDelay% w80 h20 +BackgroundTrans, Задержка
  8011.         Gui, 5:Font, norm,
  8012.         Gui, 5:Add, Edit, x6 y%yPos% w440 h20 +BackgroundTrans vB4ind%NumMenu1%, % B4ind%Index%
  8013.         yPos := yPos + 30
  8014.         Gui, 5:Add, Edit, x76 y%yPos% w70 h20 +BackgroundTrans vD4elay%NumMenu1%, % D4elay%Index%
  8015.         yPos := yPos + 30
  8016.         yDelay+=60
  8017.     }
  8018.     Gui, 5:add, button, y%yPos% x6 gSave, Применить
  8019.     yPos+=30
  8020.     Gui, 5:Show, center h%yPos% w455, MVD Tools [Настройки]
  8021. }
  8022. else
  8023. {
  8024.     MsgBox, 16, Ошибка, Введите коректное количество строк!
  8025. }
  8026. return
  8027. BIN5:
  8028. Gui, Submit, NoHide
  8029. if (HK10=="")
  8030. {
  8031.     TrayTip, Ошибка!, Назначьте клавишу!, 5, 3
  8032.     return
  8033. }
  8034. if (BS5=="")
  8035. {
  8036.     TrayTip, Ошибка!, Введите количество строк!, 5, 3
  8037.     return
  8038. }
  8039. if RegExMatch(BS5, "(.*[0-9]+)", BBS)
  8040. {
  8041.     yPos := 30
  8042.     yDelay := 60
  8043.     NumMenu1 := 0
  8044.     Gui, 5:Destroy
  8045.     Gui, 5:Add, Text, x6 y10 w280 h20 +BackgroundTrans, Бинд
  8046.     Index := 0
  8047.     loop, %BS5%
  8048.     {
  8049.         NumMenu1++
  8050.         Index++
  8051.         Gui, 5:Add, Text, x6 y%yDelay% w80 h20 +BackgroundTrans, Задержка
  8052.         Gui, 5:Font, norm,
  8053.         Gui, 5:Add, Edit, x6 y%yPos% w440 h20 +BackgroundTrans vB5ind%NumMenu1%, % B5ind%Index%
  8054.         yPos := yPos + 30
  8055.         Gui, 5:Add, Edit, x76 y%yPos% w70 h20 +BackgroundTrans vD5elay%NumMenu1%, % D5elay%Index%
  8056.         yPos := yPos + 30
  8057.         yDelay+=60
  8058.     }
  8059.     Gui, 5:add, button, y%yPos% x6 gSave, Применить
  8060.     yPos+=30
  8061.     Gui, 5:Show, center h%yPos% w455, MVD Tools [Настройки]
  8062. }
  8063. else
  8064. {
  8065.     MsgBox, 16, Ошибка, Введите коректное количество строк!
  8066. }
  8067. return
  8068. Active6:
  8069. loop, %BS1%
  8070. {
  8071.     SendChat(B1ind%A_Index%)
  8072.     sleep % D2elay%A_Index%
  8073. }
  8074. return
  8075. Active7:
  8076. loop, %BS2%
  8077. {
  8078.     SendChat(B2ind%A_Index%)
  8079.     sleep % D2elay%A_Index%
  8080. }
  8081. return
  8082. Active8:
  8083. loop, %BS3%
  8084. {
  8085.     SendChat(B3ind%A_Index%)
  8086.     sleep % D3elay%A_Index%
  8087. }
  8088. return
  8089. Active9:
  8090. loop, %BS4%
  8091. {
  8092.     SendChat(B4ind%A_Index%)
  8093.     sleep % D4elay%A_Index%
  8094. }
  8095. return
  8096. Active10:
  8097. loop, %BS5%
  8098. {
  8099.     SendChat(B5ind%A_Index%)
  8100.     sleep % D5elay%A_Index%
  8101. }
  8102. return
  8103. class CommandProcessor {
  8104.     StatusProcessor := false
  8105. CommandArray := {}
  8106.     TempText := ""
  8107.     TempCmd := ""
  8108.     SetStatusProcessor(status) {
  8109.         this.StatusProcessor := status
  8110.     }
  8111.     RegisterCommand(cmd, metka) {
  8112.         ObjRawSet(this.CommandArray, cmd, metka)
  8113.     }
  8114.     DeleteCommand(cmd) {
  8115.         this.CommandArray.Delete(cmd)
  8116.     }
  8117. }
  8118. ~Enter::
  8119. if(CommandProcessor.StatusProcessor) {
  8120.     if(IsChatActive()) {
  8121.         if(isDialogOpen())
  8122.         return
  8123.         blockChatInput()
  8124.         while(IsChatActive())
  8125.         continue
  8126.         unBlockChatInput()
  8127.         TextChat := GetChatText()
  8128.         if(SubStr(TextChat, 1, 1) = "/") {
  8129.             InputCMD := StrSplit(TextChat, A_Space)
  8130.             InputCMD := InputCMD[1]
  8131.             CommandProcessor.TempCmd := InputCMD
  8132.             CommandProcessor.TempText := TextChat
  8133.             if(CommandProcessor.CommandArray.HasKey(InputCMD)) {
  8134.                 ClearTextDialog()
  8135.                 SetTimer, % CommandProcessor.CommandArray[InputCMD], -1
  8136.             } else {
  8137.                 SendChat(TextChat)
  8138.                 ClearTextDialog()
  8139.             }
  8140.         } else {
  8141.             if(TextChat != "") {
  8142.                 CommandProcessor.TempText := TextChat
  8143.                 SendChat(TextChat)
  8144.                 ClearTextDialog()
  8145.             }
  8146.         }
  8147.     }
  8148. }
  8149. return
RAW Paste Data