﻿
MISI API
build v0.4.2, 1 may 2018 by DenLover


Документация:

Перед началом рекомендую ознакомиться с документацией LUA 
на офицальном сайте его разработчиков http://lua.org.ru/contents_ru 

Далее тебе пригодятся эти знания 
чтобы начать писать игровые скрипты. 
Язык LUA несложный. Ты довольно быстро научишься писать свои первые 
сценарии, если еще не сталкивался со скриптингом, а если уже изучал то 
MISI ты освоишь сразу после установки библиотеки в игру.

Интерфейсы MISI созданы в виде набора отдельных методов (функций) 
через которые можно "общаться" с игрой и ее ресурсами. 
Сам LUA тоже прост в плане обращения к его интерфесам в 
нем реализованы классы объектов в LUA они называются таблицы. 
Чем особенно прост этот язык для скриптера это его упрощенным 
синтаксисом тебе не надо думать какие типы данных подставлять 
в данный момент програма все сделает за тебя. Достаточно просто 
создать переменную и присвоить ей значение. Это просто, легко и 
удобно особенно для быстрого написания игровой логики 


Рекомендации:

* MISI - это экспериментальный интрумент по управлению игровыми ресурсами. MISI не являются заменой 
  стандартных средств разработки (компиляторов, картовых редакторов) и не в коем случае не заявляет это.
  Приоритетом MISI являются добавление в игру новых возможностей и упрощение создания игровых режимов (написание скриптов).
* Не рекомендуется использовать в цикле методы GetPedStruct(index), но это возможно, 
  лучше 1 раз получить структуру игрока при старте игры, а потом работать с ней чем юзать метод в цикле.
  Старайтесь придерживатся этого правила с другими методами, получайте значение 1 раз, 
  где это возможно - это улучшит стабильность вашего скрипта, снизит риск вылета игры.
* Не рекомендуется постоянно писать значение в область памяти в цикле, да это возможно, 
  но может помешать игре записать свое значение в эту же область памяти в результате вылет игры. 
  Старайтесь реже перезаписывать значение в области памяти и учитывайте то что игра не пишет в него свое значение (чтобы избежать коллизий).
* Не спешите исправлять скрипт при вылете игры. Попробуйте запустить игру еще раз.
* Не надо строго следовать всем правилам моих скриптов. Иногда они тоже могут содержать ошибки - что-то пропустил или добавил лишнее.
  Старайтесь самостоятельно исправлять замеченные ошибки, учитесь на своих и чужих примерах.
  Примеры криптов созданы для того чтобы показать как возможно скриптовать, но не являются обязательным стилем для разработке.
* Вылеты могут происходить из-за неправильно написанного скрипта, а именно отсутствие проверок на запись 
  недопустимых значений в важные адресса памяти. Например вы пишите "стрроку" в переменную где должно хранится "целое число"
  в результате происходит вылет игры. Будьте внимательны при построении скрипта.
* Вылеты могут происходить из-за содержания неверного синтаксиса в скрипте. Например вы пропустили end или then или 
  используете недопустимые ключенвые слова/значения. Следите за правильностью написания синтаксиса LUA в скриптах.
* Вылеты могут происходить из-за недостатка ОЗУ памяти в вашем ПК.
* Вылеты могут происходить из-за неправильного парсинга LUA скрипта. 
  Иногда такое происходит без видемых причин при запуске игры, просто перезапустите игру еще раз.


Системные методы:

GetGameHandle()
GetMISIBuild()
wait(time)
ReadProcessMemory(address, size)
WriteProcessMemory(address, value, size)
WriteInLog(text);
GetLogSize()
SetLogSize(size)
IsReadPointer(address, size)
IsWritePointer(address, size)


Методы ввода:

IsGameKeyPress(keycode)
GetKeyState(keycode)
IsKeyPress(keycode)
IsKeyDown(keycode)
IsKeyUp(keycode)


Игровые методы:

GetNetwork()
GetGameFrame()
GetSCRName()
GetMMPName()
GetSTYName()
GetGMPName()
GetGXTName()
GetMaxPedDensity()
GetShowPedAndCarID()
GetShowObjID()
GetShowBlood()
GetSoundMessage()
GetPoliceSkip()
GetMedicSkip()
GetFiremanSkip()
GetRiotMode()
* GetPlayerName(playerid)
* GetPlayerFrags(playerid)
* GetPlayerKills(playerid)

SetSCRName(filename)
SetMMPName(filename)
SetSTYName(filename)
SetGMPName(filename)
SetMaxPedDensity(value)
SetShowPedAndCarID(state)
SetShowObjID(state)
SetShowBlood(state)
SetSoundMessage(soundid)
SetPoliceSkip(state)
SetMedicSkip(state)
SetFiremanSkip(state)
SetRiotMode(mode)

GetDistanceOfPoints(x1, y1, z1, x2, y2, z2)
IsArea(x, y, z, minx, miny, mixz, maxx, maxy, maxz)


Методы для ped:

GetPedID(ped)
GetPedStruct(id)
GetPedPlayer(ped)
GetPedCar(ped)
GetPedPos(ped)
* GetPedAnyPos(ped)
GetPedHealth(ped)
GetPedAngle(ped)
* GetPedAnyAngle(ped)
GetPedMaxSpeed(ped)
GetPedSpeed(ped)
GetPedSkin(ped)
GetPedModel(ped)
GetPedWanted(ped)
GetPedOccupation(ped)
GetPedThreatSearch(ped)
GetPedThreatReaction(ped)
GetPedInvisible(ped)
GetPedTask(ped)
GetPedCurrentWeaponID(ped)
GetPedCurrentAmmo(ped)
GetPedCurrentCarDoorID(ped)
GetPedFromPoint(x, y, z, range)

SetPedID(ped, id)
SetPedPos(ped, x, y, z)
SetPedHealth(ped, value)
SetPedAngle(ped, angle)
SetPedMaxSpeed(ped, value)
SetPedSpeed(ped, value)
SetPedSkin(ped, skinid)
SetPedModel(ped, model)
SetPedWanted(ped, value)
SetPedOccupation(ped, value)
SetPedThreatSearch(ped, value)
SetPedThreatReaction(ped, value)
SetPedInvisible(ped, value)
SetPedTask(ped, value)
SetPedCurrentWeaponID(ped, id)
SetPedCurrentAmmo(ped, ammo)
SetPedCurrentCarDoorID(ped, doorid)

* IsPedDefined(ped)
* IsPedRangeOfPoint(ped, x, y, z, range)
* IsPedAnyRangeOfPoint(ped, x, y, z, range)
* IsPedInAnyCar(ped)
* IsPedInCar(ped, car)

DeletePedSprite(ped)


Методы для игрока:

GetPlayerArmour(player)
GetPlayerGameCam(player)
GetPlayerViewCam(player)
GetPlayerAuxCam(player)
GetPlayerWeaponSlot(player)
GetPlayerMoney(player)

SetPlayerArmour(player)
SetPlayerGameCam(player, x, y, z)
SetPlayerViewCam(player, x, y, z)
SetPlayerAuxCam(player, x, y, z)
SetPlayerWeaponSlot(player, slot)
SetPlayerMoney(player, value)


Методы для транспорта:

GetCarID(car)
GetCarPos(car)
GetCarAngle(car)
GetCarDamage(car, value)
GetCarModel(car)
GetCarColor(car)
GetCarEngine(car) 
GetCarDoorLock(car) 
GetCarEmergySiren(car) 
GetCarHorn(car)
GetCarDirection(car)
GetCarSpeed(car)
GetCarFromPoint(x, y, z, range)

SetCarPos(car, x, y, z)
SetCarAngle(car, angle)
SetCarDamage(car, value)
SetCarModel(car, model)
SetCarColor(car, color)
SetCarEngine(car, state)
SetCarDoorLock(car, state) 
SetCarEmergySiren(car, state) 
SetCarHorn(car, state)
SetCarDirection(car, x, y)

* IsCarRangeOfPoint(car, x, y, z, range)


* Методы для объекта:

GetObjID(obj)
GetObjModel(obj)
GetObjPos(obj)
GetObjAngle(obj)

SetObjPos(obj, x, y, z)


* Методы для света:

GetLightPos(light)
GetLightRange(light)
GetLightIntensity(light)
GetLightColor(light)
GetLightTime(light)

SetLightPos(light, x, y, z)
SetLightRange(light, range)
SetLightIntensity(light, intensity)
SetLightColor(light, red, green, blue)
SetLightTime(light, time_on, time_off, time_random)


* Методы для звука:

GetSoundPos(sound)
GetSoundID(sound)

SetSoundPos(sound, x, y, z)
SetSoundID(sound, soundid)


* Методы для стрелки:

GetArrowPos(arrow)
GetArrowAngle(arrow)
GetArrowZoom(arrow)
GetArrowCurrentZoom(arrow)
GetArrowColor(arrow)
GetArrowIcon(arrow)

SetArrowPos(arrow, x, y, z)
SetArrowAngle(arrow, angle)
SetArrowZoom(arrow, zoom)
SetArrowCurrentZoom(arrow, zoom)
SetArrowColor(arrow, color)
SetArrowIcon(arrow, iconid)


** Методы для STAGEC (Конcктруктор уровня):

CreatePed(x, y, z, rotation, skin, occupation)
CreatePedInCar(car, skin, occupation)
CreateCar(x, y, z, rotation, model, trailermodel, color, mode)
CreateObj(x, y, z, rotation, model, value, mode)
CreateLight(x, y, z, range, intensity, red, green, blue, time_on, time_off, time_random)
CreateSound(x, y, z, soundid, playmode)
CreateBlock(x, y, z)
CreateArrow(x, y, z, model, color)
CreateExplode(x, y, z, mode, face_type)
CreatePedGroup(ped_leader, maxmembers)
CreateTimer(timesec)

AddPedInGroup(ped, ped_leader)
AddTimerTime(timer, timesec)
GivePedWeapon(ped, weaponid, ammo)
KillPed(ped)
KillCarPassengers(car)

SetPedObjective(ped, obj, x, y, z, objective_type, mode)
SedPedGroupLeader(ped, ped_oldleader)
SetPedNoting(ped)
SetPedStayInCar(ped, state)
SetPedUseCarWeapon(ped, state)
SetPedStopDriving(ped)
SetPedExitBus(ped, state)
SetPedDriveCar(ped, car)
SetPedExitCar(ped)
SetPedRemoteControl(ped, car)
SetPedPatrolPoint(ped, x, y, z)
SetPedSkill(ped, skill_type, value)
SetPedGroupMinMembers(ped_leader, minmembers)
SetPedGroupType(ped_leader, group_type)
SetCarPutTrailer(car, trailer)
SetBlockType(block, field_type, slope_type)
SetBlockLID(block, flat_type, flip_type, light, rotation, tileid)
SetBlockSide(block, face_type, wall_type, bullet_type, flat_type, flip_type, rotation, tileid)
SetLowerArea(minx, miny, maxx, maxy)
SetPedPhoneState(ped, phone, cyclesring, mode)
SetZoneDensity(zone, car_density, car_good, car_bad, car_police, ped_density, ped_murgger, ped_thefter, ped_elvis, ped_gang, ped_police)
ShowDialog(dialogid, mode)
SetShadingLevel(value)
SetAmbientLevel(value, timeupdate)
SetTVDir(x, y)

RemovePedAllWeapons(ped)
RemovePedFromGroup(ped, ped_leader)
RemovePedFromCar(ped, x, y, z, rotation)
RemoveCar(car)
RemoveAllDialogs()

DeleteTimer(timer)
DeletePed(ped)
DeleteCar(car)
DeleteObj(obj)
DeleteForceObj(obj)
DeleteLight(light)
DeleteSound(sound)
DeleteBlock(block, mode)
DeleteArrow(arrow)

* Методы не документированы. Ищите подсказки в папке modules: obj.lua, light.lua, sound.lua, и тд.
** Экспериментальные методы не документированы. 
Используйте данные методы аккуратно и только в 1 скрипте.
Если у вас несколько скриптов с методами STAGEC.LUA.
перенесите все функции в основной скрипт - это снизит риск ассинхронного использования методов.
Ассинхронное (непоследовательное) использование методов из STAGEC.LUA (это правило только для STAGEC!): 
Create_, Set_, Delete_ может привести к крашу игры!
При создании новой группы методом CreatePedGroup участники банды могут терять защиту от выстрелов.
Возможно это происходит потому что структура CHAR_DATA перезаписывается, теряя ссылку на лидера банды.
Так же рекомендую делать задержку после создания нового объекта.
Ищите подсказки внутри STAGEC.LUA.


Описание методов:

GetGameHandle()

Аргументы: Нет аргументов перегрузок.

Возврат: Возвращает адрес смещения памяти текущего приложения.

* Если необходимо узнать версию gta2.exe используйте этот метод. 
Для версии игры 11.44 будет 0x3F0000 а для версии 9.6 0x400000 
патч версия 10.3 так же имеет оффсет 0x400000.


GetMISIBuild()

Аргументы: Нет аргументов перегрузок.

Возврат значений: Возвращает строку с полным описанием текущего 
билда библиотеки: название, версия, дата, автор.


wait(time)

Аргументы: *1 перегрузка. 
Принимает значение задержки потока в миллисекундах. 
Это обернутая функция Sleep.

Возврат: Возвращает управление потока после 
указанного времени. 

* Это метод схож с игровым 
методом delay который создает задержку потока. 
Также есть альтернатива в LUA метод coroutine.yield.


ReadProcessMemory(address, size)

Аргументы: *2 перегрузки. Принимает адресс памяти, 
размер читаемого значения в байтах.

Возврат: Возвращает 1 при успешной прочтении памяти и 
0 если значение не удалось прочитать.

* Метод полезен для поиска адрессов памяти для управления игровыми 
ресурсами.


WriteProcessMemory(address, value, size)

Аргументы: *3 перегрузки. Принимает 3 значения: адресс памяти, 
значение, размер данных в байтах.

Возврат: Возвращает 1 при успешной записи памяти и nil если не удалось записать значение.


WriteInLog(text)

Аргументы: *1 перегрузка. Принимает строку для записи в MISI.log файл.

Возврат: Возвращает 1 при успешной записи памяти и nil если не удалось записать значение.

* Добавляет текст в конец лог фйла. Иногда возникает перезапись предыдущей строки 
это возникает из-за того что несколько потоков одновременно обращаются к одному лог файлу
(как это улучшить можете предложить мне в ЛС).


GetLogSize()

Аргументы: Нет перегрузок.

Возврат: Возвращает установленный размер лога в байтах. 
Диапазон от 10 Мб до 1 Гб. По умолчанию стоит 10 Мб.


SetLogSize(size)

Аргументы: *1 перегрузка. Принимает значение максимального 
размера лога в байтах. Диапазон лога от 10 Мб до 1 Гб.

Возврат: Возвращает 1 при успешной записи значения. 

* Устанавливает максимальный размер лога в байтах перед 
его новой перезаписью. Размера не должен превышать 1 Гб. 
Важно помнить если в папке scripts установлено несколько 
скриптов с разным размером будет использовано значение 
последнего загруженного скрипта по этому рекомендуеться 
иметь 1 скрипт с данным методом.


IsGameKeyPress(keycode)

Аргументы: *1 перегрузка. Метод принимает виртуальний ключ 
нажатой (игровой) клавиши. Диапазон рабочих номеров от 112 до 141.

Возврат: Возвращает 1 если клавиша нажата и nil если не нажата.

* Номер клавиши можно узнать из файла gk_codes.inc 
данный файл находится в папке MISI если был установлен 
компонент "Game key codes Text" (в установщике misi_setup.exe).


GetKeyState(keycode)

Аргументы: *1 перегрузка. Метод принимает виртуальний ключ (VK) 
нажатой клавиши. Диапазон рабочик номеров от 0 до 256.

Возврат: Возвращает значение состояния нажатой клавиши. 
Каждая клавиша от 0 до 255 хранит свое состояние в 
диапазоне: 0 - клавиша выключена, 1 - клавиша включена, 
при этом ей присваивается дополнительное отрицательное значение 
при нажатии на клавишу. Если клавиша нажата метод возвращает -128 
(каждом новом включении) либо -127 (при каждом выключении) и 
0 если клавиша отпущена.

* Номер клавиши можно узнать из файла vk_codes.inc 
данный файл находится в папке MISI если был установлен 
компонент "Virtual key codes Text" (в установщике misi_setup.exe). 
Данный метод постоянно срабатывает при зажатии клавиши. 
Для обработки разового нажатия рекомендуется использовать 
следующий метод IsKeyDown.


IsKeyPress(keycode)

Аргументы: *1 перегрузка. Метод принимает виртуальний ключ (VK) 
нажатой клавиши. Диапазон рабочих номеров от 0 до 256.

Возврат: Возвращает 1 если клавиша нажата и nil если не нажата.

* Номер клавиши можно узнать из файла vk_codes.inc 
данный файл находится в папке MISI если был установлен 
компонент "Virtual key codes Text" (в установщике misi_setup.exe).
Данный метод постоянно срабатывает при зажатии клавиши. 
Для обработки разового нажатия рекомендуется использовать 
следующмй метод IsKeyDown.


IsKeyDown(keycode)

Аргументы: *1 перегрузка. Метод принимает виртуальний ключ (VK) 
отпущенной клавиши. Диапазон рабочик номеров от 0 до 256.

Возврат: Возвращает 1 если клавиша была разово нажата и nil 
если еще не отпущена.

* Номер клавиши можно узнать из файла vk_codes.inc 
данный файл находится в папке MISI если был установлен 
компонент "Virtual key codes Text" (в установщике misi_setup.exe). 
Данное метод срабатывает при разовом нажати на клавишу. Для обработки 
постоянного нажатия рекомендуется использовать метод IsKeyPressed 
или GetKeyState.


IsKeyUp(keycode)

Аргументы: *1 перегрузка. Метод принимает виртуальний ключ (VK) 
отпущенной клавиши. Диапазон рабочик номеров от 0 до 256.

Возврат: Возвращает 1 если клавиша была отпущена и nil если 
все еще зажата.

* Номер клавиши можно узнать из файла vk_codes.inc 
данный файл находится в папке MISI если был установлен 
компонент "Virtual key codes Text" (в установщике misi_setup.exe). 
Данный метод срабатывает разово когда клавиша отпущена. 
Для обработки разового нажатия рекомендуется использовать метод IsKeyDown.


GetDistanceOfPoins(x1, y1, z1, x2, x2, z2)

Аргументы: *6 перегрузок. Метод принимает координаты осей 
двух точек А и Б и вычисляет их расстояние.

Возврат: Возвращает расстояние между двумя точками.

* Полезно чтобы узнать далеко ли находится объект от указанной 
точки.


IsArea(x, y, z, minx1, miny1, minz1, maxx2, maxx2, maxz2)

Аргументы: *9 перегрузок. Метод принимает координаты 
точки А и арии (области) и вычисляет находится ли точка А 
внутри этой арии.

Возврат: Возвращает 1 если точками 
находится внутри этой области и 0 если снаружи.

* Полезно чтобы узнать находится ли точка (объект) в указанной 
арии (области). Например у нас есть раен города и надо узнать 
заехал ли игрок в него или нет.


GetNetwork()

Аргументы: Нет аргументов перегрузок.

Возврат: Возвращает положительное значение если запущен 
сетевой режим игры (мультиплеер) и 0 если это сингл.


GetGameFrame()

Аргументы: Нет аргументов перегрузок.

Возврат: Возвращает положительное значение при каждом 
обновлении игрового экрана и 0 при ожидании обновления.

* Постоянно выполняется. Можно использовать в теле циклов 
while для создания события OnUpdateFrame
Этот метод полезен 
для снижения нагрузки на систему так как вызывается реже 
чем пустой while что повышает общую производительность 
к тому же он синхронен с выполнением всех циклов игры. 
Альтернатива этого метода использование метода задержки wait.


GetSCRName() 

Аргументы: Нет перегрузок.

Возврат: Возвращает строку загруженного (запущенного) 
SCR файла.

* Данный файл - это базовый игровой скрипт, в нем 
содержатся скомпилированные данные игровой локации. 
Это игровая логика: массивы кординатами спавна, объявленные 
объекты, счетчики, циклы, условия.


GetSTYName() 

Аргументы: Нет перегрузок.

Возврат: Возвращает строку загруженного (запущенного) 
STY файла.

* Данный файл - это графика: спрайты, текстуры, 
шрифты.


GetGMPName() 

Аргументы: Нет перегрузок.

Возврат: Возвращает строку загруженного (запущенного) 
GMP файла.

* Данный файл - это модели локации ее статические 
объекты.


GetMMPName() 

Аргументы: Нет перегрузок.

Возврат: Возвращает строку загруженного (запущенного) 
MMP файла.

* Данный файл - это заголовочный файл с описанием 
ресурсов которые входят в мультиплеерную локацию.


SetSCRName(filename) 

Аргументы: *1 перегрузка.

Возврат: Устанавливает значание в предстоящую загрузку 
SCR файла.

* Данный файл - это базовый игровой скрипт, в нем 
содержатся скомпилированные данные игровой локации. 
Это игровая логика: массивы кординатами спавна, объявленные 
объекты, счетчики, циклы, условия.


SetSTYName(filename) 

Аргументы: *1 перегрузка.

Возврат: Устанавливает значание в предстоящую загрузку 
STY файла.

* Данный файл - это графика: спрайты, текстуры, 
шрифты.


SetGMPName(filename) 

Аргументы: *1 перегрузка.

Возврат: Устанавливает значание в предстоящую загрузку 
GMP файла.

* Данный файл - это модели локации ее статические 
объекты.


SetMMPName(filename) 

Аргументы: *1 перегрузка.

Возврат: Устанавливает значание в предстоящую загрузку 
MMP файла.

* Данный файл - это заголовочный файл с описанием 
ресурсов которые входят в мультиплеерную локацию.


GetPedStruct(id) 
Аргументы: *1 перегрузка. Принимает ID от 1 до 65535.

Возврат: Возвращает ссылку на структуру ped. 
Через эту ссылку можно читать/записывать параметры игрока. 
Далее эта структура пригодится для изменения: здоровья, 
брони, денег.

* Для получения структуры игрока (всего их может быть 6) используй диапазон от 1 до 6.


GetPedCar(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает структуру авто в которой 
сидит ped. Если ped не находится в авто вместо структуры возвращает 0.


GetPedPos(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает 3 значения текущие координаты 
игрока x, y, z.

* Полезно чтобы создавать тригеры событий рядом с игроком.


GetPedHealth(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает значение здоровья ped'a.

* При установке значения 0 снимаются почти все сердечки кроме одного а 
смерть наступает от малейшего падения.


GetPedAngle(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает угол поворота спрайта игрока в градусах.

* Диапазон угла от 0 до 360 градусов.


GetPedMaxSpeed(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает максимальную скорость бега игрока. 
Скорость движения: 0.8 шаг (пешеход), 1.0 бег (игрок), 
12.0 очень быстро (флешмен).

* При установке большего значения камера не будет успевать 
за игроком.


GetPedSpeed(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает скорость бега игрока. 
Скорость движения: 0.8 шаг (пешеход), 1.0 бег (игрок), 
12.0 очень быстро (флешмен).

* При большом значении камера не будет успевать 
за игроком.


GetPedSkin(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает номер текущего скина от 0 до 30.


GetPedModel(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает номер текущей модели ped'a.
Тип модели: 0 пешеход, водители (плоская), 
2 игровые персонажи (объемная).


GetPedWanted(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает уровень розыска игрока. Диапазон значений 
от 0 до 6.

* Получает текущее количество звезд игрока.


GetPedOccupation(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает значение окупации игроком локации. 
Диапазон от 0 до 51.

* Значение отвечает за поведение ped'а. 
Подробнее об этом параметре можно узнать на форуме 
http://gtamp.com/forum/viewtopic.php?t=700&p=9464#p9464


GetPedThreatSearch(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает значение реакции ped'а.

* Значение отвечает за поведение ped'а. 
Подробнее об этом параметре можно узнать на форуме 
http://gtamp.com/forum


GetPedThreatReaction(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает значание типа реакции ped'а.

* Устанавливает поведение ped'у. 
Подробнее об этом параметре можно узнать на форуме 
http://gtamp.com/forum


GetPedInvisible(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает значение видимости игрока для полиции. 
Диапазон от 0 до 9999.


GetPedTask(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает значение текущей "задачи". 
Диапазон от 0 до 10. 7 стоит на земле, 9 умер.


GetPedCurrentWeaponID(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает ID выбранного оружия ped'a. 
Диапазон номеров от 0 до 15. Если вернуло 0 оружия нет в руках.


GetPedCurrentAmmo(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает количество патронов в выбранном оружии 
ped'a.


GetPedCurrentCarDoorID(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает текущий номер двери в которую должет сесть ped. 
По умолчанию 0 дверь водителя, от 1 двери пассажира.


GetPedFromPoint(x, y, z, range)

Аргументы: *4 перегрузки. Принимает координаты x, y, z и радиус в котором ищет случайного ped'а.

Возврат: *1 значения. Возвращает массив со структурой найденых ped'ов. 
Если не найдено ни одного ped'да то возвращает массив с значением 0


SetPedPos(ped, x, y, z)

Аргументы: *4 перегрузки. Принимает структуру ped'а и координаты позиции x, y, z.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.

* Полезно чтобы создавать тригеры событий рядом с игроком.


SetPedHealth(ped, value)

Аргументы: *2 перегрузки. Принимает структуру ped'а и количество здоровья.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.

* При установке значения 0 снимаются почти все сердечки кроме одного а 
смерть наступает от малейшего падения.


SetPedAngle(ped, value)

Аргументы: *2 перегрузки. Принимает структуру ped'а и угол поворота спрайта.
Диапазон угла от 0 до 360 градусов.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.


SetPedMaxSpeed(ped, value)

Аргументы: *2 перегрузки. Принимает структуру ped'а и скорость движения.
Скорость движения: 0.8 шаг (пешеход), 1.0 бег (игрок), 
12.0 очень быстро (флешмен). 

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.

* Устанавливает постоянную скорость движения. 
При установке большего значения камера не будет успевать 
за игроком.


SetPedSpeed(ped, value)

Аргументы: *2 перегрузки. Принимает структуру ped'а и скорость движения.
Скорость движения: 0.8 шаг (пешеход), 1.0 бег (игрок), 
12.0 очень быстро (флешмен).

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.

* Устанавливает временную скорость движения. 
При установке большого значения камера не будет успевать 
за игроком.


SetPedSkin(ped, skin)

Аргументы: *2 перегрузки. Принимает структуру ped'а и номер скина.
Диапазон номеров от 0 до 30.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.


SetPedModel(ped, model)

Аргументы: *2 перегрузки. Принимает структуру ped'а.
Тип модели: 0 пешеход, водители (плоская), 
2 игровые персонажи (объемная).

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.


SetPedWanted(ped, value)

Аргументы: *2 перегрузки. Принимает структуру ped'а и уровень розыска.
полицией игрока. Диапазон розыска от 0 до 6.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.

* Устанавливает количество звезд игроку. При 0 игрока 
не будет искать полиция, а при 6 звездах за ним будет 
охотиться армия на танках.


SetPedOccupation(ped, value)

Аргументы: *2 перегрузки. Принимает структуру ped'а и номер окупации.
Диапазон от 0 до 51.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.

* Значение отвечает за поведение ped'а. 
Подробнее об этом параметре можно узнать на форуме 
http://gtamp.com/forum/viewtopic.php?t=700&p=9464#p9464


SetPedThreatSearch(ped, value)

Аргументы: *2 перегрузки. Принимает структуру ped'а и значение реакции.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.

* Значение отвечает за поведение ped'а. 
Подробнее об этом параметре можно узнать на форуме 
http://gtamp.com/forum


SetPedThreatReaction(ped, value)

Аргументы: *2 перегрузки. Принимает структуру ped'а и тип реакции.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.

* Устанавливает поведение ped'у. 
Подробнее об этом параметре можно узнать на форуме 
http://gtamp.com/forum


SetPedInvisible(ped, value)

Аргументы: *2 перегрузки. Принимает структуру ped'а и значение видимости.
Дапазон от 0 до 9999.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.


SetPedTask(ped, value)

Аргументы: *2 перегрузки. Принимает структуру ped'а и номер задачи.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.
Диапазон от 0 до 10.


SetPedCurrentWeaponID(ped, value)

Аргументы: *2 перегрузки. Принимает структуру ped'а и ID оружия.
Диапазон номеров от 0 до 15. 

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.


SetPedCurrentAmmo(ped, ammo)

Аргументы: *2 перегрузки. Принимает структуру ped'а и количество патронов.
Доступный диапазон значения от 0 до 65535.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.


SetPedCurrentCarDoorID(ped, doorid)

Аргументы: *2 перегрузки. Принимает структуру ped'а и номер двери.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.

* 0 дверь водителя, начиная от 1 дверь пассажира.


DeletePedSprite(ped)

Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.

* Удаляет спрайта ped'а (и запускает сборщик мусора?)


GetPlayerStruct(ped) 
Аргументы: *1 перегрузка. Принимает структуру ped'а.

Возврат: Возвращает структуру player. 
Далее эта структура пригодится для изменения: 
брони, позиции камеры и тд.


GetPlayerArmour(player)

Аргументы: *1 перегрузка. Принимает структуру player'а.

Возврат: Возвращает количество брони игрока. 
Диапазон значений от 0 до 65535.


GetPlayerGameCam(player)

Аргументы: *1 перегрузка. Принимает структуру player'а.

Возврат: Возвращает 3 значения x, y, z позиции игровой камеры игрока.
Диапазон координат от 0 до 255.


GetPlayerViewCam(player)

Аргументы: *1 перегрузка. Принимает структуру player'а.

Возврат: Возвращает 3 значения x, y, z позиции вида камеры.
Диапазон координат от 0 до 255.


GetPlayerAuxCam(player)

Аргументы: *1 перегрузка. Принимает структуру player'а.

Возврат: Возвращает 3 значения x, y, z позиции старта игрока. 
Диапазон координат от 0 до 255.

* Координаты стартовой точки игрока?


GetPlayerWeaponSlot(player)

Аргументы: *1 перегрузка. Принимает структуру player'а.

Возврат: Возвращает текущий слот оружия игрока. 
Возвращает 0 если оружия в руках нет.


GetPlayerMoney(player)

Аргументы: *1 перегрузки. Принимает структуру player'а.

Возврат: Возвращает текущее количество денег player'а.


SetPlayerArmour(player, value)

Аргументы: *2 перегрузки. Принимает структуру player'а и количество брони.

Возврат: Возвращает 1 если броня успешно установлена и nil если нет. 
Доступный диапазон значения от 0 до 65535.


SetPlayerGameCam(player, x, y, z)

Аргументы: *4 перегрузки. Принимает структуру player'а и
координаты x, y, z позиции для игровой камеры.
Диапазон координат от 0 до 255.

Возврат: Возвращает 1 если координаты установлены и nil если нет.


SetPlayerViewCam(player, x, y, z)

Аргументы: *4 перегрузки. Принимает структуру player'а и
координаты x, y, z позиции вида камеры.
Диапазон координат от 0 до 255.

Возврат: Возвращает 1 если координаты установлены и nil если нет.


SetPlayerAuxCam(player, x, y, z)

Аргументы: *4 перегрузки. Принимает структуру player'а и
координаты позиции x, y, z старта игрока.
Диапазон координат от 0 до 255.

Возврат: Возвращает 1 если координаты установлены и nil если нет.


SetPlayerWeaponSlot(player, slot)

Аргументы: *2 перегрузки. Принимает структуру player'а и номер слота.

Возврат: 1 если слот успешно установлен и nil если нет.


SetPlayerMoney(player, value)

Аргументы: *2 перегрузки. Принимает структуру player'а и количество денег.

Возврат: 1 если слот успешно установлен и nil если нет.


GetCarID(car)

Аргументы: *1 перегрузка. Принимает структуру car.

Возврат: Возвращает 1 значание ID car. 
Диапазон от 1 до 65535.


GetCarPos(car)

Аргументы: *1 перегрузка. Принимает структуру car.

Возврат: *3 значения. Возвращает текущие координаты x, y, z позиции транспорта. 
Диапазон координат от 0 до 255.


GetCarAngle(car)

Аргументы: *1 перегрузка. Принимает структуру car.

Возврат: Возвращает угол поворота спрайта транспорта в градусах.

* Диапазон угла от 0 до 360 градусов.


GetCarDamage(car)

Аргументы: *1 перегрузка. Принимает структуру car.

Возврат: Возвращает степень повреждения транспорта. 
Диапазон значений от 0 до 127.

* Данный параметр отвечает за состояние машины. 
При 0 транспорт целый, а при 127 взрывается от малейшего 
столкновения при этом визуальных повреждений (горения, мятин) 
нет.


GetCarModel(car)

Аргументы: *1 перегрузка. Принимает структуру car.

Возврат: Возвращает модель транспорта. 
Диапазон значений от 0 до 255 (всего объявлено в nyc.gci: 86).

* Соответствует номеру модели из файла настроек nyc.gci


GetCarColor(car)

Аргументы: *1 перегрузка. Принимает структуру car.

Возврат: Возвращает номер цвета транспорта. 
Диапазон значений от 0 до 36.


GetCarEngine(car) 

Аргументы: *1 перегрузка. Принимает структуру car.

Возврат: Возвращает статус двигателя транспорта. 
Диапазон значений от 0 до 255 (0 не работает, 1 выключен, 3 включен).


GetCarDoorLock(car) 

Аргументы: *1 перегрузка. Принимает структуру car.

Возврат: Возвращает статус дверей транспорта. 
Диапазон значений от 0 до 255 (1 закрыты, 3 открыты).

* Даже с закрытым замком ped'а могут выкинуть из машины.


GetCarEmergySiren(car) 

Аргументы: *1 перегрузка. Принимает структуру car.

Возврат: Возвращает статус сирены транспорта. 
Диапазон значений от 0 до 255 (2 выключена, 4 включена).

* Работает только со служебными машинами (пожарка, скорая, полиция, военная полиция).


GetCarHorn(car)

Аргументы: *1 перегрузка. Принимает структуру car.

Возврат: Возвращает статус гудка транспорта. 
Диапазон значений от 0 до 255 (0 гудок выключен, 248 гудок включен).

* Включает в транспорте "гудок".


GetCarDirection(car)

Аргументы: *1 перегрузки. Принимает структуру car.

Возврат: *2 значения. Возвращает координаты x, y движения транспорта. 
Диапазон координат от 0.0 до 255.0.


GetCarSpeed(car)

Аргументы: *1 перегрузки. Принимает структуру car.

Возврат: *1 значения. Возвращает скорость движения транспорта. 


GetCarFromPoint(x, y, z, range)

Аргументы: *4 перегрузки. Принимает координаты x, y, z и радиус в котором ищет случайное авто.

Возврат: *1 значения. Возвращает массив со структурой найденых автомобилей. 
Если не найдено ни одного авто то возвращает массив с значением 0


SetCarPos(car, x, y, z)

Аргументы: *4 перегрузки. Принимает структуру car и координаты позиции x, y, z позиции транспорта.
Диапазон координат от 0 до 255.

Возврат: Возвращает 1 если координаты успешно изменены и nil если нет.
car.


SetCarAngle(car, value)

Аргументы: *2 перегрузки. Принимает структуру car и значение угла поворота 
спрайта car. Диапазон значений от 0 до 360.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.

* Принимает значение угла в градусах.


SetCarDamage(car, value)

Аргументы: *2 перегрузки. Принимает структуру car и степень повреждения.
Диапазон значений от 0 до 127.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.

* Данный параметр отвечает за состояние машины. 
При 0 транспорт целый, а при 127 взрывается от малейшего 
столкновения при этом визуальных повреждений (горения, мятин) 
не видно.


SetCarModel(car, model)

Аргументы: *2 перегрузки. Принимает структуру car и номер модели.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.
Диапазон значений от 0 до 255 (всего объявлено в nyc.gci: 86).

* Устанавливает настройки соответствующие модели из nyc.gci.
Если при смене модели на машине отсутсвуют нужные детали/флаги 
игра может вылететь. Спец транспорт такой как: скорая, пожарка, полиция, военная полиция, 
можно превращать в простой без поворота турели, при этом из турели можно будет стрелять.


SetCarColor(car, color)

Аргументы: *2 перегрузки. Принимает структуру car и номер цвета.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.
Диапазон значений от 0 до 36.


SetCarEngine(car, state) 

Аргументы: *2 перегрузки. Принимает структуру car и статус двигателя.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.
Диапазон значений от 0 до 255 (0 не работает, 1 выключен, 3 включен).

* При значении 0 двигатель выключается и машина не может ехать,
так же выключается звук двигателя и сирены (если он был включен).


SetCarDoorLock(car, state) 

Аргументы: *2 перегрузки. Принимает структуру car и статус дверей.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.
Диапазон значений от 0 до 255 (1 закрыты, 3 открыты).

* Даже с закрытым замком ped'а могут выкинуть из машины.


SetCarEmergySiren(car, state) 

Аргументы: *2 перегрузки. Принимает структуру car и статус сирены.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.
Диапазон значений от 0 до 255 (2 выключена, 4 включена).

* Работает только со служебными машинами (пожарка, скорая, полиция, военная полиция).
Включает в транспорте сирену.


SetCarHorn(car, state)

Аргументы: *2 перегрузки. Принимает структуру car и статус гудка.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.
Диапазон значений от 0 до 255 (0 выключен, 248 включен).

* Включает в транспорте звук гудока.


SetCarDirection(car, x, y)

Аргументы: *3 перегрузки. Принимает структуру car и координаты x, y.

Возврат: Возвращает 1 значение присвоено успешно и nil если нет.
Диапазон значения от 0 до 255.

* Задает скорость авто.
