Функции клео. Словарь для програмистов [Урок 1] - Форум Cheat-Master.ru
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Admin_Bot, Admin_Bot2, Admin_Bot3, Admin_Bot4  
Функции клео. Словарь для програмистов [Урок 1]
LOPATA13 Дата: Пятница, 03.01.2014, 19:38 | Сообщение # 1
Новичок
Сообщений: 27
Статус: Offline
Описание: получает Ping игрока по ID.
Использование: 0AB1: call @get_player_ping 1 id 0@ to 1@

Код
:get_player_ping
{
Params:
               In: 0@ - playerID
               Out: 1@ - ping
}
0B24: samp 1@ = get_remote_player_ptr 0@
1@ += 40
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 1
0AB2: ret 1 1@


Автор неизвестно
Взято:google

Описание: получает Score игрока по ID.
Использование: 0AB1: call @get_player_scores 1 id 0@ to 1@

Код
:get_player_scores
{
Params:
In: 0@ - playerID
Out: 1@ - scores
}
0B24: samp 1@ = get_remote_player_ptr 0@
1@ += 32
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 1
0AB2: ret 1 1@

Описание: Переводит трехмерные координаты пространства в двумерные координаты экрана.
Использование: 0AB1: call_scm_func @getScreenXYFrom3DCoords 3 3D_coords_X 0@ Y 1@ Z 2@ store_screen_X_to 3@ Y_to 4@

Код
:getScreenXYFrom3DCoords
0AA7: call_function 0x70CE30 num_params 6 pop 6 clipNear 1 clipFar 1 yMult 7@s xMult 6@s outVector 2@s inVector 0@s result 29@
0073: 2@ /= 6@
0073: 2@ /= 4@
0073: 3@ /= 7@
0073: 3@ /= 4@
2@ *= 640.0
3@ *= 448.0
0AB2: ret 2 2@ 3@


Пример отправки ложной позиции на ногах:
Вызов функции: 0AB1: call_scm_func @SendOnfootFakePosition 3 Pos_x 1@ Pos_y 2@ Pos_z 3@

Код
:SendOnfootFakePosition
3@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR) // Получаем ид нашего игрока
3@ = SAMP.GetPlayerStruct(3@) // Получаем указатель на локальную структуру
3@ += 109 // Прибавляем смещение на структуру, в которой храниться текущая onfoot data.
0AC8: 4@ = allocate_memory_size 68 // Выделяем память, равную размеру пакета.
0C10: memcpy destination 4@ source 3@ size 68 // Копируем информацию onfoot, чтобы потом изменить только позиции.
0C0D: struct 4@ offset 6 size 4 = 0@ // Изменяем позиции игрока по оси X. Размер 4, так как тип float имеет 4 байта.
0C0D: struct 4@ offset 10 size 4 = 1@ // Offset будет 10, так как 6 + 4 = 10
0C0D: struct 4@ offset 14 size 4 = 2@ // 10 + 4 = 14
0B3D: raknet 5@ = new_bit_stream // Создаем битстрим.
0B40: raknet bit_stream 5@ write PACKET_PLAYER_SYNC type BS_TYPE_BYTE size 1 // Вписываем в битстрим название пакета.
0B40: raknet bit_stream 5@ write 4@ type BS_TYPE_ARRAY size 68 // Вписываем туда переменную, в которой onfoot data, с измененными позициями.
0B42: raknet send bit_stream 5@ priority PRIORITY_HIGH reliability UNRELIABLE_SEQUENCED ordering_channel 0 // Отправляем битстрим в котором содержится пакет.
0B3E: raknet delete_bit_stream 5@ // Удаляем битстрим.
0AC9: free_allocated_memory 4@ // Освобождаем память.
0ab2: 0 // Заканчиваем Call функцию.


Пример отправки ложной скорости на ногах:
Вызов функции: 0AB1: call @SendOnfootFakeSpeed 3 xyz 10@ 11@ 12@

Код
:SendOnfootFakeSpeed
3@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
3@ = SAMP.GetPlayerStruct(3@)
3@ += 109
0AC8: 4@ = allocate_memory_size 68
0C10: memcpy destination 4@ source 3@ size 68
0C0D: struct 4@ offset 38 size 4 = 0@
0C0D: struct 4@ offset 42 size 4 = 1@
0C0D: struct 4@ offset 46 size 4 = 2@
0B3D: raknet 5@ = new_bit_stream
0B40: raknet bit_stream 5@ write PACKET_PLAYER_SYNC type BS_TYPE_BYTE size 1
0B40: raknet bit_stream 5@ write 4@ type BS_TYPE_ARRAY size 68
0B42: raknet send bit_stream 5@ priority PRIORITY_HIGH reliability UNRELIABLE_SEQUENCED ordering_channel 0
0B3E: raknet delete_bit_stream 5@
0AC9: free_allocated_memory 4@
0AB2: ret 0


Пример отправки ложной позиции в машине:
Вызов функции: 0AB1: call_scm_func @SendInCarFakePosition 3 Pos_x 1@ Pos_y 2@ Pos_z 3@ carid 4@

Код
:SendInCarFakePosition
3@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
3@ = SAMP.GetPlayerStruct(3@)
3@ += 177
0AC8: 4@ = allocate_memory_size 63
0C10: memcpy destination 4@ source 3@ size 63
0C0D: struct 4@ offset 24 size 4 = 0@
0C0D: struct 4@ offset 28 size 4 = 1@
0C0D: struct 4@ offset 32 size 4 = 2@
0B3D: raknet 5@ = new_bit_stream
0B40: raknet bit_stream 5@ write PACKET_VEHICLE_SYNC type BS_TYPE_BYTE size 1
0B40: raknet bit_stream 5@ write 4@ type BS_TYPE_ARRAY size 63
0B42: raknet send bit_stream 5@ priority PRIORITY_HIGH reliability UNRELIABLE_SEQUENCED ordering_channel 0
0B3E: raknet delete_bit_stream 5@
0AC9: free_allocated_memory 4@
0AB2: ret 0


Код
Пример отправки ложной скорости в машине:
Вызов функции: 0AB1: call @SendIncarFakeSpeed 4 xyz 10@ 11@ 12@ vehicleid 13@
Функция:
:SendIncarFakeSpeed
4@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
4@ = SAMP.GetPlayerStruct(5@)
4@ += 177 // local inCarData
0AC8: 5@ = allocate_memory_size 63
0C10: memcpy destination 5@ source 4@ size 63
0C0D: struct 5@ offset 0 size 2 = 3@
0C0D: struct 5@ offset 36 size 4 = 0@
0C0D: struct 5@ offset 40 size 4 = 1@
0C0D: struct 5@ offset 44 size 4 = 2@
0B3D: raknet 6@ = new_bit_stream
0B40: raknet bit_stream 6@ write PACKET_VEHICLE_SYNC type BS_TYPE_BYTE size 1
0B40: raknet bit_stream 6@ write 5@ type BS_TYPE_ARRAY size 63
0B42: raknet send bit_stream 6@ priority PRIORITY_HIGH reliability UNRELIABLE_SEQUENCED ordering_channel 0
0B3E: raknet delete_bit_stream 6@
0AC9: free_allocated_memory 5@
0AB2: ret 0


Получаем bytePlayerState игрока по иду.
Код
:getplayerstate
0B24: samp 1@ = get_player_ptr 0@
1@ += 44 //REMOTE
0A8D: 2@ = read_memory 1@ size 4 virtual_protect 0
2@ += 350 //
0A8D: 17@ = read_memory 2@ size 1 virtual_protect 0
0AB2: ret 1 17@


RPC_SPAWN = 11 // Отправляется, когда игрок спавнится.
RPC_DEATH = 12 // Отправляется, когда игрок умерает.
RPC_MENUSELECT = 0x19 // Отправляется, для навигации в стандартном диалоговом меню gta.
RPC_ENTERVEHICLE = 25 //Отправляется, когда игрок садиться в автомобиль.
RPC_SERVERJOIN = 152 // Отправляется, когда игрок заходит на сервер.
RPC_SERVERQUIT = 153 //Отправляется, когда игрок выходит с сервера.
RPC_INITGAME = 154 // Отправляется, когда игрок подключается к серверу.
RPC_CLIENTJOIN = 24 // Отправляется, когда клиент подключается к серверу.
RPC_NPCJOIN = 155 // Отправляется, в случае, если игрок бот.
RPC_REQUESTCLASS = 138 //Отправляется, когда игрок нажимает кнопки при выборе класса f4.
RPC_REQUESTSPAWN = 139 //Отправляется, когда игрок нажимает на кнопку spawn в f4.
RPC_SETINTERIORID = 117 // Отправляется, когда игрок заходит в интерьер.
RPC_CHAT = 102 //Отправляется, когда игрок пишет в чат.
RPC_EXITVEHICLE = 26 // Отправляется, когда игрок выходит из автомобиля.
RPC_DAMAGEVEHICLE = 39 // Отправляется, когда машине игрока наносится урон.
RPC_MENUQUIT = 155 //Отправляется, когда игрок выходит из меню.
RPC_SCMEVENT = 144 //Отправляется, когда игрок делает upgrade машине.
RPC_UPDATESCORESPINGSIPS = 27 // Отправляется, когда игрок нажимает TAB.
RPC_CONNECTIONREJECTED = 13 // Отправляется, когда игрок имеет валидный ник.
RPC_WORLDTIME = 106 // Отправляется, когда игрок изменяет время.
RPC_WEATHER = 19 // Отправляется, когда игрок изменяет погоду.
RPC_SERVERCOMMAND = 116 // Отправляется, когда игрок пишет в чат, начиная с "/"
RPC_PICKEDUPPICKUP = 146 // Отправляется, когда игрок подбирает пикап.
RPC_VEHICLEDESTROYED = 151 // Отправляется, когда игрок видит сломанную машину.
RPC_DIALOGRESPONSE = 21 //Отправляется, когда игрок нажимает куда-либо в диалоговом окне.
RPC_PLAYAUDIOSTREAM = 45 // Отправляется, если игроку проигрывается музыка.
RPC_CLICKPLAYER = 22 // Отправляется, когда игрок нажимает на ник игрока в ТАВ.
RPC_CLICKTEXTDRAW = 82 // Отправляется, когда игрок нажимает на тексдрав.
RPC_MAPMARKER = 118 // Отправляется, когда игрок ставит маркер на карте.
RPC_PLAYERGIVETAKEDAMAGE = 84 // Отправляется, когда игрок или игроку наноситься урон.
RPC_ENTEREDITOBJECT = 87 // Отправляется, когда игрок нажимает мышкой на предмет.
RPC_EDITOBJECT = 86 // Отправляется, когда игрок изменяет параметры объекты в визуальном едиторе.

RPC_PICKEDUPPICKUP
Код
0B3D: raknet 1@ = new_bit_stream
0B40: raknet bit_stream 1@ write 6@ type BS_TYPE_INT size 4
0B41: raknet send_rpc RPC_PICKEDUPPICKUP bit_stream 1@ priority PRIORITY_HIGH reliability RELIABLE_SEQUENCED ordering_channel 0 shift_timestamp false
0B3E: raknet delete_bit_stream 1@


RPC_VEHICLEDESTROYED
Код
0B3D: raknet 1@ = new_bit_stream
0B40: raknet bit_stream 1@ write 6@ type BS_TYPE_INT size 4
0B41: raknet send_rpc RPC_VEHICLEDESTROYED bit_stream 1@ priority PRIORITY_HIGH reliability RELIABLE_SEQUENCED ordering_channel 0 shift_timestamp false
0B3E: raknet delete_bit_stream 1@


RPC_SPAWN
Код
0B3D: raknet 1@ = new_bit_stream
0B41: raknet send_rpc RPC_REQUESTSPAWN bit_stream 1@ priority PRIORITY_HIGH reliability RELIABLE_SEQUENCED ordering_channel 0 shift_timestamp false
0B3E: raknet delete_bit_stream 1@
0B3D: raknet 1@ = new_bit_stream
0B41: raknet send_rpc RPC_SPAWN bit_stream 1@ priority PRIORITY_HIGH reliability RELIABLE_SEQUENCED ordering_channel 0 shift_timestamp false
0B3E: raknet delete_bit_stream 1@


RPC_DEATH
Код
0B3D: raknet 1@ = new_bit_stream
0B40: raknet bit_stream 1@ write 6@ type BS_TYPE_INT size 4
0B40: raknet bit_stream 1@ write 29 type BS_TYPE_INT size 4
0B41: raknet send_rpc RPC_DEATH bit_stream 1@ priority PRIORITY_HIGH reliability RELIABLE_SEQUENCED ordering_channel 0 shift_timestamp false
0B3E: raknet delete_bit_stream 1@


RPC_PLAYERGIVETAKEDAMAGE
Код
0B3D: raknet 1@ = new_bit_stream
0B40: raknet bit_stream 1@ write 1 type BS_TYPE_BOOL size 1
0B40: raknet bit_stream 1@ write 6@ type BS_TYPE_INT size 4
0B40: raknet bit_stream 1@ write 7@ type BS_TYPE_FLOAT size 4
0B40: raknet bit_stream 1@ write 0 type BS_TYPE_INT size 4
0B41: raknet send_rpc RPC_PLAYERGIVETAKEDAMAGE bit_stream 1@ priority PRIORITY_HIGH reliability RELIABLE_SEQUENCED ordering_channel 0 shift_timestamp false
0B3E: raknet delete_bit_stream 1@


RPC_SCMEVENT
Код
0B3D: raknet 1@ = new_bit_stream
0B40: raknet bit_stream 1@ write 6@ type BS_TYPE_INT size 4
0B40: raknet bit_stream 1@ write 7@ type BS_TYPE_INT size 4
0B40: raknet bit_stream 1@ write 8@ type BS_TYPE_INT size 4
0B40: raknet bit_stream 1@ write 9@ type BS_TYPE_INT size 4
0B41: raknet send_rpc RPC_SCMEVENT bit_stream 1@ priority PRIORITY_HIGH reliability RELIABLE_SEQUENCED ordering_channel 0 shift_timestamp false
0B3E: raknet delete_bit_stream 1@


RPC_ENTERVEHICLE
0B3D: raknet 1@ = new_bit_stream
0B40: raknet bit_stream 1@ write 6@ type BS_TYPE_INT size 4
0B40: raknet bit_stream 1@ write 7@ type BS_TYPE_BOOL size 2
0B41: raknet send_rpc RPC_ENTERVEHICLE bit_stream 1@ priority PRIORITY_HIGH reliability RELIABLE_SEQUENCED ordering_channel 0 shift_timestamp false
0B3E: raknet delete_bit_stream 1@

RPC_EXITVEHICLE
Код
0B3D: raknet 1@ = new_bit_stream              
0B40: raknet bit_stream 1@ write 6@ type BS_TYPE_INT size 4              
0B41: raknet send_rpc RPC_EXITVEHICLE bit_stream 1@ priority PRIORITY_HIGH reliability RELIABLE_SEQUENCED ordering_channel 0 shift_timestamp false              
0B3E: raknet delete_bit_stream 1@


Активно буду добавлять, Активно добавляйте примеры которых нету

:1
Actor.StorePos($PLAYER_ACTOR, 1@ 2@ 3@) - Записываем свои координаты в переменные
Actor.Actor.Putat($PLAYER_ACTOR, 1@ 2@ 3@ ) - Телепортирует на ранее записанные координаты

тоесть Actor.StorePos - Записывает координаты
Actor.Putat - Телепортирует на координаты X,Y,Z ( Чтобы узнать XYZ, на указанном месте пропишите /save и в моих документах найдёте файлик с координатами )
Actor.LockInCurrentPosition($PLAYER_ACTOR, True) // freeze - замораживает игрока
Actor.LockInCurrentPosition($PLAYER_ACTOR, False) // unfreeze - размораживает игрока
(использовать при кордмастере)

До сегодняшнего дня, я сам не знал про существование такого опкода в SF. Спасибо legend2360 и alfazlo.
0C18: 2@ = strstr string1 0@ string2 1@
0@ - это текст, в которым мы ищем слово.
1@ - это слово.
2@ - это указатель на начало слова.
Например:
Допустим у нас есть текст: "Объявление: Набор в Русскую семью[2года,ВЗ][62]. Автор: Nazar_Gonzales, телефон: 864576."
Мы ищем слово "Набор".
В переменной 2 будет указатель на начало, то есть там будет: "Набор в Русскую семью[2года,ВЗ][62]. Автор: Nazar_Gonzales, телефон: 864576."

Можно использовать как условие. Если слово будет найдено, то опкод вернет true.

Вот нехитрый пример:
Код
{$CLEO}
if not 0@ = SAMP.Base()
then 0A93: end_custom_thread
end while not SAMP.Available()
wait 100
end
while true
wait 0
0AB1: call @getChatEntryText 1 id 99 to 1@
if 0C18: 2@ = strstr string1 1@ string2 "Привет"
then
say "Здарова"
wait 1000
end
end
:getChatEntryText
1@ = samp.Base()
1@ += 0x212A24
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 0x136
0@ *= 252 005A:
1@ += 0@
1@ += 28
0AB2: ret 1 1@

Если кто-то напишет "Привет", вы скажете "Здарова"

Код
0AF6: samp spawn_player // Отправляет игрока на спавн // Параметров не имеет       
0AF7: get_samp_base_to 0@ // IF and SET // Получает базовый адрес "samp.dll", использование этого опкода необходимо в каждом скрипте, использующем плагин. // Выходные данные: 0@ - базовый адрес "samp.dll"       
0AF8: samp add_message_to_chat "%d + %d = %d" color 0xFF61BB 4 6 10 // Добавляет сообщение с текстом "Text" и цветом 0xFF61BB в SAMP-чат (опкод поддерживает форматирование) // Входные данные: "Text" - текст сообщения, 0xFF61BB - цвет сообщения, параметры для форматирования       
0AF9: samp say_msg "I AM NOOB! LOL" // Отправляет сообщение с текстом "I AM NOOB! LOL" на сервер (опкод поддерживает форматирование) // Входные данные: "I AM NOOB! LOL" - текст сообщения, параметры для форматирования       
0AFA: is_samp_structures_available // Данный опкод используется для проверки полной загруженности SAMP, его использование необходимо в каждом скрипте, использующем плагин. // Параметров не имеет       
0AFB: samp request_class_id 1@ // Изменяет класс игрока на выбранный, для полной смены нужно заспавниться. // Входные данные: 1@ - новый класс       
0AFC: samp send_scm_event 0@ event_id 3 params 126 126 // Отправляет на сервер пакет о смене параметров транспорта (цвет, апгрейды, покрасочные работы) // Входные данные: 0@ - SAMP-Ид транспортного средства, 3 - тип (1 - покрасочная работа, 2 - компонент, 3 - цвет), 126 126 - параметры       
0AFD: samp set_special_action 5 // Устанавливает игроку специальное действие (курить, пить, ссать и т.п.) // Входные данные: 5 - ид специального действия       
0AFE: samp send_death_by_player 0@ with_reason 10 // Отправляет на сервер пакет о смерти от определённого игрока и с заданной причиной // Входные данные: 0@ - ид игрока, 10 - причина смерти       
0AFF: samp 3@ = car_handle_from_samp_carid 87 // Получает хендл машины по её SAMP-Иду // Входные данные: 87 - SAMP-ID машины. Выходные данные: 3@ - хендл машины       
0B20: samp 4@ = actor_handle_from_samp_playerid 5 // Получает хендл актёра по SAMP-Иду игрока // Входные данные: 5 - SAMP-ID игрока. Выходные данные: 3@ - хендл актёра       
0B21: samp is_chat_opened // Проверяет статус открытости чата, используется только в качестве проверки. // Параметров не имеет       
0B22: samp set_sendrate 2 to 0 // Устанавливает задержку отправки клиентом, выбранного типа, пакетов // Входные данные: 2 - тип (пешком = 1, в машине = 2, камера = 3), 0 - задержка в мс       
0B27: samp set_gamestate 26 // Устанавливает статус подключения к серверу // Входные данные: 26 - статус (GAMESTATE_AWAIT_JOIN = 30, GAMESTATE_RESTARTING = 33, GAMESTATE_WAIT_CONNECT = 26, GAMESTATE_CONNECTING = 28, GAMESTATE_CONNECTED = 29)       
0B28: samp disconnect_with_reason 0 // Отключает от сервера с заданной причиной // 0 - обычное отключение, 1 - таймаут       
0B29: samp set_local_name "blasthack.net" // Устанавливает ник игроку на "blasthack.net" (опкод поддерживает форматирование) // Входные данные: "blasthack.net" - новый ник       
- Новые (v1.01)       
0B23: samp is_player_connected 0@ // Проверяет, подключен ли игрок с идом 0@ к серверу, используется только в качестве проверки // Входные данные: 0@ - ид игрока       
0B24: samp 1@ = get_remote_player_ptr 0@ // Получает адрес на структуру игрока, в ней SAMP хранит все локальные данные о игроке // Входные данные: 0@ - ид игрока. Выходные данные: 1@ - указатель на структуру игрока       
0B2A: samp 1@ = get_player_ping 0@ // Возвращает пинг игрока // Входные данные: 0@ - ид игрока. Выходные данные: 1@ - пинг игрока       
0B2B: samp 1@ = get_player_id_by_actor_handle 0@ // Возвращает SAMP-ид игрока по хендлу актёра // Входные данные: 0@ - хендл актёра. Выходные данные: 1@ - ид игрока       
0B2C: samp 1@ = get_vehicle_id_by_car_handle 0@ // Возвращает SAMP-ид машины по её хендлу // Входные данные: 0@ - хендл машины. Выходные данные: 1@ - ид машины       
0B2D: write_module_memory "samp.dll" offset 0x63700 value 0xC390 size 2 // Записывает в память указанного модуля заданное значение с нужным количеством байт // Входные данные: "samp.dll" - имя модуля, 0x63700 - оффсет, 0xC390 - новое значение, 2 - размер (максимум 4, минимум 1)       
0B2E: 4@ = read_module_memory "samp.dll" offset 0x63700 size 2 // Читает участок памяти из указанного модуля // Входные данные: "samp.dll" - имя модуля, 0x63700 - оффсет, 2 - размер (максимум 4, минимум 1). Выходные данные: 4@ - прочитанное значение       
0B2F: samp get_streamed_out_player_pos 0@ to 1@ 2@ 3@ // Получает позицию удалённого игрока // Входные данные: 0@ - ид игрока. Выходные данные: 1@ 2@ 3@ - позиция       
0B30: samp send_enter_vehicle 0@ as_passenger false // Отправляет пакет о посадке в машину, этот опкод не синхронизирует машину, но может быть полезен при написании обходов античита на всякие "КарХако-подобные" вещи // Входные данные: 0@ - SAMP-ид машины, false - тип посадки (false - водительское место, true - пассажирское)       
0B31: samp send_exit_vehicle 0@ // Отправляет пакет о выходе из машины // Входные данные: 0@ - SAMP-ид машины       
- Новые (v1.1)       
0B32: samp send_spawn // Отправляет пакет о спавне // Параметров не имеет       
0B33: samp send_damage_vehicle 0@ panel 123456 doors 654321 lights 255 tires 0 // Отправляет пакет о повреждении компонентов ТС // Входные данные: 0@ - SAMP-ID машины, 123456 - статус повреждения передней и задней части, 654321 - статус повреждения дверей, 255 - огней, 0 - покрышек       
- Новые (v1.2)       
0B34: samp 0@ = register_client_command "text" // Регистрирует команду "text", возвращая её уникальный идентификатор // Входные данные: "text" - команда. Выходные данные 0@ - ИД команды, должен быть сохранён (используется в проверке 0B35: samp is_command_typed ...)       
0B35: samp is_command_typed 0@ params 1@ // Проверяет введённость команды, используется только в качестве проверки. Возвращает указатель на строку параметров. // Входные данные: 0@ - уникальный ИД команды. Выходные данные 1@ - указатель на строку параметров, (то, что было введено после команды, пример: "/command 10" - "10" - это параметры команды). Могут быть отфильтрованы опкодом 0AD4:       
- Новые (v1.3)       
0B36: samp 1@ = get_player_nickname 0@ // Возвращает указатель на ник игрока с ИД 0@ // Входные данные: 0@ - ИД игрока. Выходные данные: 1@ - указатель на строку, содержащую ник игрока.       
0B37: samp 1@ = get_player_color 0@ // Возвращает цвет ника игрока с ИД 0@ // Входные данные: 0@ - ИД игрока. Выходные данные: 1@ - цвет ника игрока.       
- Новые (v1.5)       
0B38: samp connect_to_server 0@ port 1@ // Устанавливает соединение с заданным SA:MP-сервером // Входные данные: 0@ - IP сервера (строка/указатель на строку), 1@ - порт сервера.       
0B39: samp get_current_server_address 0@ port 1@ // Получает адрес текущего сервера // Выходные данные: 0@ - IP сервера, 1@ - порт сервера.       
0B3A: samp 0@ = get_current_server_name // Возвращает название текущего сервера // Выходные данные: 0@ - название сервера       
- Новые (v2.0)       
0B3B: samp show_dialog id 1 caption "Example" text "Message box example." button_1 "Ok" button_2 "" style 0 // Показывает локальный SA:MP-диалог с установленными параметрами // Входные данные: "Example" - заголовок, "Message box example." - текст, "Ok" - текст первой кнопки "" - текст второй кнопки (если текстовое значение пустое, диалог будет содержать лишь одну кнопку), 0 - стиль диалога       
0B3C: samp dialog_respond 5 button 0@ list_item 1@ input_text 2@ // Проверяет, был ли закрыт диалог и возвращает все входные параметры // Выходные данные: 0@ - ид нажатой кнопки (1 - левая, 2 - правая), 1@ - выбранный элемент из списка (вернёт -1, если диалог не имеет элементов), 2@ - текст, который был введён в окно ввода.       
0B3D: raknet 0@ = new_bit_stream // Выделяет память под новую переменную BitStream, это необходимо для отправки пакетов серверу // Выходные данные: 0@ - указатель на созданный объект BitStream.       
0B3E: raknet delete_bit_stream 0@ // Освобождает выделенную память под BitStream, необходимо делать каждый раз, когда BitStream перестаёт быть нужным, во избежание утечек памяти // Входные данные: 0@ - указатель на объект BitStream.       
0B3F: raknet reset_bit_stream 0@ // Сбрасывает все данные уже созданного объекта BitStream, оставляя возможность использовать его снова // Входные данные: 0@ - указатель на объект BitStream.       
0B40: raknet bit_stream 0@ write 1@ type BS_TYPE_INT size 4 // Пишет данные в существующий объект BitStream // Входные данные: 0@ - указатель на объект BitStream, 1@ - значение, BS_TYPE_INT - тип, 4 - размер (можно указать любой, если тип не является строкой или массивом).       
0B41: raknet send_rpc RPC_DEATH bit_stream 1@ priority PRIORITY_MEDIUM reliability RELIABLE_SEQUENCED ordering_channel 0 shift_timestamp false // Отправляет RPC на сервер // Входные данные: RPC_DEATH - ид RPC, 1@ - указатель на объект BitStream, PRIORITY_MEDIUM - приоритет пакета, RELIABLE_SEQUENCED - надёжность пакета, 0, false - точного назначения этих двух параметров не знаю, не вдавался в подробности, потому-что они нам не нужны.       
0B42: raknet send bit_stream 0@ priority PRIORITY_MEDIUM reliability RELIABLE_SEQUENCED ordering_channel 0 // Отправляет пакет на сервер // Входные данные: 0@ - указатель на объект BitStream, PRIORITY_MEDIUM - приоритет пакета, RELIABLE_SEQUENCED - надёжность пакета.       
- Измененные (v2.3)       
0B34: samp register_client_command "mycommand" to_label @MyCommand // Регистрирует команду "mycommand" на метку @MyCommand (при вводе этой команды выполнится код по метке @MyCommand, выход из тела кода осуществляется опкодом 0B43) // Входные данные: "mycommand" - команда, @MyCommand - метка, на которую будет зарегистрирована команда.       
0B35: samp 0@ = get_last_command_params // Возвращает указатель на строку параметров. // Выходные данные 1@ - указатель на строку параметров, (то, что было введено после команды, пример: "/command 10" - "10" - это параметры команды). Параметры могут быть отфильтрованы опкодом 0AD4       
- Новые (v2.3)       
0B43: samp cmd_ret // Указывает на конец кода команды, возвращает из тела команды обратно в код скрипта. // Параметров не имеет       
0B44: samp 0@ = create_3d_text "dafuq" color 0xFFFF00FF position 1@ 2@ 3@ view_distance 50.0 show_behind_walls true attached_to_player -1 attached_to_vehicle -1 // Создаёт 3D-текст SA:MP'a со всеми возможными свойствами. Может быть присоединен к игроку или транспорту. // Входные данные: "dafuq" - текст, 0xFFFF00FF - цвет, 1@ 2@ 3@ - позиция (если текст не присоединен к объекту, или смещение относительно центра, если присоединен), 50.0 - дистанция, на которой 3D-текст будет виден, true - будет ли 3D-текст виден через стены, -1 - ид игрока/транспорта, к которому будет прикреплён 3D-текст. Выходные данные: 0@ - хендл(ид) 3D-текста.       
0B45: samp destroy_3d_text 0@ // Уничтожает 3D-текст. // Входные данные: 0@ - хендл(ид) 3D-текста.       
0B46: samp 3d_text 0@ defined // Проверяет, существует ли 3D-текст. // Входные данные: 0@ - хендл(ид) 3D-текста.       
- Новые (v2.4)       
0B47: samp close_current_dialog_with_button 1 // Закрывает текущий диалог с возможностью выбора кнопки, которой он был закрыт. Информация о закрытии отправляется на сервер, если диалог был создан сервером. // Входные данные: 1 - ИД кнопки (1 - левая, 0 - правая).       
0B48: samp 0@ = get_current_dialog_list_item // Возвращает ИД выбранного пункта в диалоге-списке. // Выходные данные: 0@ - ИД выбранного пункта.       
0B49: samp set_current_dialog_list_item 0@ // Устанавливает текущий пункт в диалоге-списке. // Входные данные: 0@ - ИД выбираемого пункта.       
0B4A: samp 0@ = get_current_dialog_editbox_text // Копирует в буффер содержимое окна ввода текста диалога. // Входные данные: 0@ - указатель на выделенный участок памяти.       
0B4B: samp set_current_dialog_editbox_text "Text" // Устанавливает текст для окна ввода диалога. // Входные данные: "Text" - новый текст.       
0B4C: samp is_dialog_active 0@ // Проверяет, является ли открытым диалог с ИД'ом 0@, если в качестве ИД'а передать параметр -1, то опкод вернёт истинное значение проверки для любого открытого диалога. // Входные данные: 0@ - ИД диалога.       
0B4D: samp 0@ = get_current_dialog_type // Возвращает тип текущего диалога // Выходные данные: 0@ - ИД типа диалога.       
0B4E: samp 0@ = get_current_dialog_id // Возвращает ИД текущего диалога // Выходные данные: 0@ - ИД диалога.       
0B4F: samp 0@ = get_gamestate // Возвращает статус присоединения к серверу // Выходные данные: 0@ - ИД статуса.       
0B50: samp 1@ = object_handle_by_id 0@ // Получает хендл объекта по его SAMP-ИД'у. // Входные данные: 0@ - SAMP-ID объекта. Выходные данные: 1@ - хендл объекта.       
0B51: samp 1@ = pickup_handle_by_id 0@ // Получает хендл пикапа по его SAMP-ИД'у. // Входные данные: 0@ - SAMP-ID пикапа. Выходные данные: 1@ - хендл пикапа.       
0B52: samp 1@ = object_id_by_handle 0@ // Получает SAMP-ИД объекта по его хендлу. // Входные данные: 0@ - хендл объекта. Выходные данные: 1@ - SAMP-ID объекта.       
0B53: samp 1@ = pickup_id_by_handle 0@ // Получает SAMP-ИД пикапа по его хендлу. // Входные данные: 0@ - хендл пикапа. Выходные данные: 1@ - SAMP-ID пикапа.       
0C0C: 0@ = struct 1@ offset 0x10 size 4 // Читает значение элемента структуры, размером 4 байта и смещением на 0x10 байт, по адресу 1@. // Входные данные: 1@ - адрес начала структуры, 0x10 - смещение в байтах, 4 - размер в байтах (от 1 до 4). Выходные данные: 0@ - значение элемента.       
0C0D: struct 1@ offset 0x10 size 4 = 0@ // Записывает значение элемента структуры, размером 4 байта и смещением на 0x10 байт, по адресу 1@. // Входные данные: 1@ - адрес начала структуры, 0x10 - смещение в байтах, 4 - размер в байтах (от 1 до 4), 0@ - записываемое значение.       
0C0E: 0@ = array 1@ element 2@ // Читает элемент массива под номером 2@ по адресу 1@, учитывая что каждый элемент в массиве равен четырём байтам. // Входные данные: 1@ - адрес начала массива, 2@ - номер элемента массива. Выходные данные: 0@ - значение элемента массива.       
0C0F: array 1@ element 2@ = 0@ // Записывает значение в элемент массива под номером 2@ по адресу 1@, учитывая что каждый элемент в массиве равен четырём байтам. // Входные данные: 1@ - адрес начала массива, 2@ - номер элемента массива, 0@ - записываемое значение элемента массива.       
- Новые (v2.5)       
0B54: samp 0@ = listbox_items_count // Возвращает количество пунктов диалога со списком. // Выходные данные: 0@ - количество пунктов.       
0B55: convert_3D_coords 1024.0 768.0 32.0 to_screen 0@ 1@ // Конвертирует мировые 3D-координаты в экранные координаты. // Входные данные: 1024.0 768.0 32.0 - 3D координаты мира. Выходные данные: 0@ 1@ - экранные координаты.       
0B56: set_game_key 1 state 0xFF // Устанавливает игровой клавише заданный статус. // Входные данные: 1 - ид клавиши, 0xFF - статус (0 - отжата, 0xFF - нажата).       
0B57: samp 1@ = player 0@ animation_id // Возвращает ид анимации игрока по его иду. // Входные данные: 0@ - ид игрока. Выходные данные: 1@ - ид анимации игрока.       
0B58: samp get_animation_name_to 0@ file_to 1@ by_id 2@ // Записывает в буфер имя анимации и её файл по иду. // Входные данные: 0@ - указатель на выделенный участок памяти под название, 1@ - указатель на буфер для названия файла, 2@ - ид анимации.       
0B59: samp 0@ = animation_id_by_name "IDLE_STANCE" file "PED" // Возвращает ид анимации её по имени. // Входные данные: "IDLE_STANCE" "PED" - имя и файл анимации. Выходные данные: 0@ - ид анимации.       
0B5A: get_screen_resolution 0@ 1@ // Возвращает размеры окна игры. // Выходные данные: 0@, 1@ - размеры окна.       
0B5B: samp get_listbox_item 0 text_to 1@ // Записывает в буфер по указателю 1@ текст пункта листбокса. // Входные данные: 0 - ид элемента, 1@ - указатель на буфер.       
0B80: samp 1@ = create_dialog "Caption" // Создаёт диалог с названием "Caption" и возвращает указатель на его объект. //       
0B81: samp dialog 1@ pop_event_to 1@ control_id_to 2@ // Записывает последнее событие диалога 1@ в переменную 2@ и ид участника в переменную 3@, возвращает FALSE, если события нет. // Входные данные: 1@ - указатель на объект диалога. Выходные данные: 2@ - ид события, 2@ - ид компонента.       
0B82: samp dialog 1@ add_button id 0x12 text "ButtonText" pos_XY 0 0 size 256 24 // Создаёт кнопку с текстом "ButtonText" на диалоге с указанными размерами и позицией. // Входные данные: 1@ - диалог, 0x12 - ид компонента, "ButtonText" - текст компонента, 0 0 - позиция, 256 24 - размеры.       
0B83: samp dialog 1@ add_checkbox id 0x13 text "CheckBoxText" pos_XY 0 24 size 256 24 // Создаёт чекбокс с текстом "ButtonText" на диалоге с указанными размерами и позицией. // Входные данные: 1@ - диалог, 0x13 - ид компонента, "CheckBoxText" - текст компонента, 0 24 - позиция, 256 24 - размеры.       
0B84: samp dialog 1@ set_pos_XY 64 160 size 256 88 // Устанавливает позицию и размеры диалога. // Входные данные: 1@ - диалог, 64 160 - новая позиция, 256 88 - новый размер.       
0B85: samp dialog 1@ get_position_to 2@ 3@ size_to 4@ 5@ // Получает позицию и размер диалога. // Входные данные: 1@ - диалог. Выходные данные: 2@ 3@ - позиция, 4@ 5@ - размер.       
0B86: samp dialog 1@ set_visible true // Устанавливает видимость диалога. // Входные данные: 1@ - диалог, true - логическое да/нет (видим/не видим).       
0B87: samp dialog 1@ is_visible // Проверяет, видим ли диалог. // Входные данные: 1@ - диалог.       
0B90: samp dialog 1@ control 0x12 set_visible true // Устанавливает видимость компонента диалога. // Входные данные: 1@ - диалог, 0x12 - ид компонента, true - логическое да/нет (видим/не видим).       
0B91: samp dialog 1@ add_static id 0x01 text "StaticText" pos_XY 0 0 size 160 24 // Создаёт статичный текст "StaticText" на диалоге с указанными размерами и позицией. // Входные данные: 1@ - диалог, 0x01 - ид компонента, "StaticText" - текст, 0 0 - позиция, 160 24 - размеры.       
- Измененные (v2.5):       
0B2D: write_samp_memory offset 0x63700 value 0xC390 size 2 // Записывает в память модуля samp.dll значение с нужным количеством байт // Входные данные: 0x63700 - оффсет, 0xC390 - новое значение, 2 - размер (максимум 4, минимум 1)       
0B2E: 4@ = read_samp_memory offset 0x63700 size 2 // Читает участок памяти из модуля samp.dll // Входные данные: 0x63700 - оффсет, 2 - размер (максимум 4, минимум 1). Выходные данные: 4@ - прочитанное значение       
- Новые (v2.6)       
0B5D: samp toggle_cursor true // Переключает состояние курсора // Входные данные: true/(false) - включен/выключен.       
0B88: samp dialog 1@ add_editbox id 0x14 text "ThisIsEditBox" pos_XY 0 48 size 256 40 // Добавляет на диалог окно ввода текста // Входные данные: 1@ - диалог, 0x14 - ид компонента, "ThisIsEditBox" - текст по умолчанию, 0 48 - координаты, 256 40 - размеры.       
0B89: samp dialog 1@ get_control 0x14 text_to 3@ // Записывает в буфер текст контрола // Входные данные: 1@ - диалог, 0x14 - ид компонента, 3@ - указатель на буфер.       
0B92: samp dialog 1@ checkbox 0x13 is_checked // Проверяет, активирован ли чекбокс // Входные данные: 1@ - диалог, 0x13 - ид компонента.       
0B93: samp dialog 1@ set_background_color 0xFF004422 // Устанавливает цвет фона диалога. // Входные данные: 1@ - диалог, 0xFF004422 - новый цвет.       
0B94: samp dialog 1@ set_control 0x14 text_to "This is SPARTA" // Изменяет текст компонента // Входные данные: 1@ - диалог, 0x14 - ид компонента, "This is SPARTA" - новый текст.       
0B95: samp dialog 1@ control 0x10 is_visible // Проверяет, видим ли компонент // Входные данные: 1@ - диалог, 0x10 - ид компонента.       
0B96: samp dialog 1@ add_slider id 0x15 pos_XY 64 24 size 128 32 max 100 // Создаёт горизонтальный слайдер в окне диалога // Входные данные: 1@ - диалог, 0x15 - ид компонента, 64 24 - позиция, 128 32 - размеры, 100 - максимальное значение.       
0B97: samp dialog 1@ slider 0x15 get_value_to 2@ // Получает позицию бегунка слайдера // Входные данные: 1@ - диалог, 0x15 - ид компонента. Выходные данные: 2@ - значение.       
0B98: samp dialog 1@ slider 0x15 set_value_to 120 // Устанавливает позицию бегунка слайдера // Входные данные: 1@ - диалог, 0x15 - ид компонента, 120 - новая позиция.



Сообщение отредактировал LOPATA13 - Пятница, 03.01.2014, 20:35
SmurfikTV Дата: Пятница, 03.01.2014, 19:58 | Сообщение # 2
Новичок
Сообщений: 11
Статус: Offline
Неплохо, возможно пригодиться + дал
LOPATA13 Дата: Пятница, 03.01.2014, 19:59 | Сообщение # 3
Новичок
Сообщений: 27
Статус: Offline
SmurfikTV, спасибо. Щас еще доделаю урок
Кoт Дата: Пятница, 03.01.2014, 20:11 | Сообщение # 4

Сообщений: 1074
Статус: Offline
Авторов скриптов укажи и откуда взял

Добавлено (03.01.2014, 20:11)
---------------------------------------------
да еще и копипаст


LOPATA13 Дата: Пятница, 03.01.2014, 20:35 | Сообщение # 5
Новичок
Сообщений: 27
Статус: Offline
Кoт, Взято с блокнота с компа, там появилось с гугла. Автор неизвестно. За - пишу жалобу.Глаза открой. Там написанно все
Кoт Дата: Пятница, 03.01.2014, 20:42 | Сообщение # 6

Сообщений: 1074
Статус: Offline
Цитата LOPATA13 ()
Кoт, Взято с блокнота с компа, там появилось с гугла. Автор неизвестно. За - пишу жалобу.Глаза открой. Там написанно все

Ооо,друг,перед тем как дать тебе минус,я заскринил время твоего редактирования,а теперь я скриню еще раз,что ты редактировал снова.За клевету - сам знаешь,что делают.


Egor_Groove Дата: Пятница, 03.01.2014, 23:02 | Сообщение # 7
Боец
Сообщений: 64
Статус: Offline
Код

0B3D: raknet 1@ = new_bit_stream  
0B41: raknet send_rpc RPC_REQUESTSPAWN bit_stream 1@ priority PRIORITY_HIGH reliability RELIABLE_SEQUENCED ordering_channel 0 shift_timestamp false  
0B3E: raknet delete_bit_stream 1@  
0B3D: raknet 1@ = new_bit_stream  
0B41: raknet send_rpc RPC_SPAWN bit_stream 1@ priority PRIORITY_HIGH reliability RELIABLE_SEQUENCED ordering_channel 0 shift_timestamp false  
0B3E: raknet delete_bit_stream 1@

Пишу это мне выдаёт ошибку мол "Недостаточно параметров. Ожидалось 6 параметров."


WMRR189516293905
410011959957279 Яд
RAKSHA1337 Дата: Пятница, 03.01.2014, 23:52 | Сообщение # 8
Советник
Сообщений: 784
Статус: Offline
Egor_Groove, ты наверно в начале скрипта забыл указать на инклуд
{$include includes\RakNetDefines.txt}
Или
замени RELIABLE_SEQUENCED на 4
замени RPC_SPAWN на 11
замени RPC_REQUESTSPAWN на 139
И вконце этих строк
Код
0B41: raknet send_rpc RPC_REQUESTSPAWN bit_stream 1@ priority PRIORITY_HIGH reliability RELIABLE_SEQUENCED ordering_channel 0
0B41: raknet send_rpc RPC_SPAWN bit_stream 1@ priority PRIORITY_HIGH reliability RELIABLE_SEQUENCED ordering_channel 0

Поставь ещё один ноль в конце через пробел.


В казино рандом. Но рандом в программах - это генератор псевдослучайных чисел, который написан ручками человека. А значит есть формула! Есть алгоритм! Есть тактика!
Кто не согласен - ставьте минус, после того как докажете обратное. https://habrahabr.ru/post/196442/


Сообщение отредактировал RAKSHA1337 - Суббота, 04.01.2014, 06:16
LOPATA13 Дата: Суббота, 04.01.2014, 03:30 | Сообщение # 9
Новичок
Сообщений: 27
Статус: Offline
Egor_Groove, начала скрипта кинь
Додик_На_СМ Дата: Суббота, 04.01.2014, 19:51 | Сообщение # 10
Новичок
Сообщений: 29
Статус: Offline
хорошая вещь, хочу учитья на програмировании C++, сделать свой скрипт, будет свободное время ночь буду пытаться ;D

Okay, the gang's all here
And everything feels alright
Ladies, the drinks on me
Yeah, we can do shots all night
That's right, I'm on that shit
And it's about to go go down
(I'm on it)
All night, we ain't gon' quit
And all I need is a few more chicks
kodak123 Дата: Четверг, 09.01.2014, 16:53 | Сообщение # 11
Новичок
Сообщений: 23
Статус: Offline
как с этим кодом сделать бот грузчика
[code]:SendOnfootFakePosition
3@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR) // Получаем ид нашего игрока
3@ = SAMP.GetPlayerStruct(3@) // Получаем указатель на локальную структуру
3@ += 109 // Прибавляем смещение на структуру, в которой храниться текущая onfoot data.
0AC8: 4@ = allocate_memory_size 68 // Выделяем память, равную размеру пакета.
0C10: memcpy destination 4@ source 3@ size 68 // Копируем информацию onfoot, чтобы потом изменить только позиции.
0C0D: struct 4@ offset 6 size 4 = 0@ // Изменяем позиции игрока по оси X. Размер 4, так как тип float имеет 4 байта.
0C0D: struct 4@ offset 10 size 4 = 1@ // Offset будет 10, так как 6 + 4 = 10
0C0D: struct 4@ offset 14 size 4 = 2@ // 10 + 4 = 14
0B3D: raknet 5@ = new_bit_stream // Создаем битстрим.
0B40: raknet bit_stream 5@ write PACKET_PLAYER_SYNC type BS_TYPE_BYTE size 1 // Вписываем в битстрим название пакета.
0B40: raknet bit_stream 5@ write 4@ type BS_TYPE_ARRAY size 68 // Вписываем туда переменную, в которой onfoot data, с измененными позициями.
0B42: raknet send bit_stream 5@ priority PRIORITY_HIGH reliability UNRELIABLE_SEQUENCED ordering_channel 0 // Отправляем битстрим в котором содержится пакет.
0B3E: raknet delete_bit_stream 5@ // Удаляем битстрим.
0AC9: free_allocated_memory 4@ // Освобождаем память.
0ab2: 0 // Заканчиваем Call функцию.[code]


Сообщение отредактировал kodak123 - Четверг, 09.01.2014, 16:54
kodak123 Дата: Пятница, 10.01.2014, 20:15 | Сообщение # 12
Новичок
Сообщений: 23
Статус: Offline
дай пожалуйста полный код, а то не я пойму куда вставлять эту строчку
(CM)Krollik Дата: Понедельник, 20.01.2014, 17:21 | Сообщение # 13
Новичок
Сообщений: 7
Статус: Offline
Скопизженно с другого сайта

Учусь Cleo програмированию
[CM]Skand1k Дата: Воскресенье, 26.01.2014, 12:43 | Сообщение # 14
Боец
Сообщений: 81
Статус: Offline
kodak123, не все так просто, а так нужно вызвать функцией отправку на эти ложные координаты 0AB1: call_scm_func @SendOnfootFakePosition 3 Pos_x 1@ Pos_y 2@ Pos_z 3@
Kostro[CM] Дата: Воскресенье, 26.01.2014, 20:02 | Сообщение # 15
Боец
Сообщений: 61
Статус: Offline
Sps , помог surprised smile biggrin

Кинь денюжек по братски :D
Кошелек Яндекс Деньги: 410012093645983
И админку тебе на самп рп Если кинишь Денюжек:D
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:
Статистика Форума