Вопросы по CLEO-скриптингу

NookieONE

Участник
128
1
Может кто-то рассказать кратко про:
0B2D: write_samp_memory offset 0xB4F0 value 0xC390 size 2
0B2D: write_samp_memory offset 0@ value 1@ size 2@

От куда узнавать что вписывать в эти переменные?
Т.е. что означает каждый offset и где список их
 

itsOkke

Потрачен
86
38
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
то же самое что 0A8C только записывает по смещению к samp.dll, (то есть аналогичным решением будет прибавить к базовому адресу samp.dll нужное смещение и воспользоваться 0A8C)
 

01EG

Известный
Проверенный
631
345
Может кто-то рассказать кратко про:
0B2D: write_samp_memory offset 0xB4F0 value 0xC390 size 2
0B2D: write_samp_memory offset 0@ value 1@ size 2@

От куда узнавать что вписывать в эти переменные?
Т.е. что означает каждый offset и где список их
SendTime = 0xCFE0
SetPlayerCameraLookingAt = 0x161C0
InitGame = 0xD710
ShowGameText = 0x15F40
SetPlayerCameraPos = 0x160F0
SetPlayerInterior = 0x16050
SetPlayerPos = 0x15970
SetPlayerFacingAngle = 0x16BF0
RequestSpawn = 0xD150
ToggleClock = 0xC5C0
RequestClass = 0xD080
UpdateScorePingsandIPs = 0xD490
GangZoneCreate = 0x19650
TextDrawSetString = 0x19540
SetPlayerColor = 0x15E50
SetPlayerAttachedObject = 0x155E0
ShowTextDraw = 0x19360
ClickTextDraw = 0x19C20
SetPlayerSkin = 0x15860
SetPlayerTeam = 0x15D60
WorldVehicleAdd = 0xB850
PlaySound = 0x16980
TextDrawHideForPlayer = 0x19490
SendClientMessage = 0xC050
SetPlayerWorldBounds = 0x16A60
SetPlayerHealth = 0x15BA0
ResetPlayerWeapons = 0x14790
GivePlayerWeapon = 0x16C90
ShowPlayerDialog = 0xCBB0
GangZoneFlash = 0x19820
WorldVehicleRemove = 0xDF70
GangZoneStopFlash = 0x198E0
SetPlayerMapIcon = 0x16DE0
ResetPlayerMoney = 0x14780
GivePlayerMoney = 0x16B50
CreateObject = 0x17980
ServerJoin = 0xCDA0
SetPlayerAnimation = 0x16FA0
Create3DTextLabel = 0xC7D0
CreatePickup = 0xC140
SetCameraBehindPlayer = 0x14770
SetRaceCheckpoint = 0xD330
Update3DTextLabel = 0xC980
DestroyPickup = 0xC200
PutPlayerInVehicle = 0x15C50
WorldPlayerAdd = 0xDBB0
DisableRaceCheckpoint = 0xB790
WorldPlayerRemove = 0xDEA0
TogglePlayerControllable = 0x168E0
InitMenu = 0x18EA0
ShowMenu = 0x19160
RemoveBuildingForPlayer = 0x19B00
DeathMessage = 0x1A290
WorldPlayerDeath = 0xDDE0
Chat = 0xEEA0
DestroyObject = 0x18260
SetPlayerFightingStyle = 0x14E30
SetPlayerTime = 0xC4E0
SetSpawnInfo = 0x14640
SetObjectPos = 0x18050
SetObjectRot = 0x18160
MoveObject = 0x18540
StopObject = 0x186F0
SetObjectMaterial = 0x17CE0
SetVehicleParamsEx = 0x16C90
ServerQuit = 0xCF20
SetVehicleHealth = 0x173B0
DamageVehicle = 0xE240
ScmEvent = 0xC340
SetVehiclePos = 0x162C0
SetPlayerSpecialAction = 0x14D80
ClearAnimation = 0x14C70
EnterVehicle = 0xE650
SetNumberPlate = 0x18870
CreateExplosion = 0x18350
SetPlayerDrunkLevel = 0x15490
SetPlayerArmour = 0x171A0
SetPlayerName = 0x1A4F0
RemovePlayerMapIcon = 0x16F00
SetWeather = 0xC430
GangZoneDestroy = 0x19770
SetPlayerArmedWeapon = 0x15530
EnablePlayerCameraTarget = 0xBC00
PlayAudioStreamForPlayer = 0x19990
StopAudioStreamForPlayer = 0x147E0
SetPlayerShopName = 0x14540
SetPlayerSkillLevel = 0xC6A0
RemovePlayerFromVehicle = 0x146E0
PlayCrimeReportForPlayer = 0x15720
SetPlayerWantedLevel = 0x192C0
SetPlayerAmmo = 0x17250
SetVehicleZAngle = 0x163D0
SetVehicleParamsForPlayer = 0x164B0
SetWorldTime = 0xBFB0
SetGravity = 0x17310
EnableStuntBonusForPlayer = 0x14440
LinkVehicleToInterior = 0x16580
SetPlayerVelocity = 0x14F30
SetPlayerPosFindZ = 0x15A90
AttachObjectToPlayer = 0x18CE0
ShowPlayerNameTagForPlayer = 0x18460
TogglePlayerSpectating = 0x18990
PlayerSpectatePlayer = 0x18A40
PlayerSpectateVehicle = 0x18B20
InterpolateCameraPos = 0x16740
RemoveCarComponent = 0x18C00
SetVehicleVelocity = 0x15030
AttachTrailer = 0x17490
Onfoot data = 0x4D10
InCarData = 0x6E30
По большей части нужно для активации НОПов
После offset пишешь адресс из списка
В value вписываешь всегда 50064 (для активации)
size всегда 2

что бы выключать допустим, вписываешь исходное значение, которое предварительно считывал через read samp memory
 
  • Нравится
Реакции: DarkP1xel

n0teilla

Новичок
2
0
Весь скрипт работает нормально, но текст в нём в виде больших букв. Как исправить?
 

NookieONE

Участник
128
1
Когда через переменные
0AF5: write_string "new string value" to_ini_file "cleo\config.ini" section "SectionName" key "stringKey"
0AF4: 0@v = read_string_from_ini_file "cleo\config.ini" section "SectionName" key "stringKey"

вывожу большой текст в
say "%d" 0@v - крашит

Если маленький текст - нормально.


Есть какое-нибудь ограничение?
 

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Когда через переменные
0AF5: write_string "new string value" to_ini_file "cleo\config.ini" section "SectionName" key "stringKey"
0AF4: 0@v = read_string_from_ini_file "cleo\config.ini" section "SectionName" key "stringKey"

вывожу большой текст в
say "%d" 0@v - крашит

Если маленький текст - нормально.


Есть какое-нибудь ограничение?
CLEO:
alloc 0@ 256
0AF5: write_string "new string value" to_ini_file "cleo\config.ini" section "SectionName" key "stringKey"
0AF4: 0@ = read_string_from_ini_file "cleo\config.ini" section "SectionName" key "stringKey"
say "%d" 0@
free 0@
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,962
Есть какое-нибудь ограничение?
Не используй эти переменные. Они работают по принципу перезаписи массива переменных. Используй буфер или выделение участка памяти и отправляй указатель на начало во все функции с использованием строк.

CLEO:
alloc 0@ 256
0AF5: write_string "new string value" to_ini_file "cleo\config.ini" section "SectionName" key "stringKey"
0AF4: 0@ = read_string_from_ini_file "cleo\config.ini" section "SectionName" key "stringKey"
say "%d" 0@
free 0@
Опкод 0AF4 не работает корректно с указателем на буфер. Нужно использовать GetPrivateProfileString напрямую.
 

NookieONE

Участник
128
1
Не используй эти переменные. Они работают по принципу перезаписи массива переменных. Используй буфер или выделение участка памяти и отправляй указатель на начало во всем функции с использованием строк.
Можешь пример показать?
CLEO:
0AC6: 6@ = label @buff offset

:buff
hex
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0
end
 

ae1c2a

Известный
195
6
Есть ли опкод дающий ид оружия которое находится у актера в руках?
 

NookieONE

Участник
128
1
Не используй эти переменные. Они работают по принципу перезаписи массива переменных. Используй буфер или выделение участка памяти и отправляй указатель на начало во все функции с использованием строк.


Опкод 0AF4 не работает корректно с указателем на буфер. Нужно использовать GetPrivateProfileString напрямую.
Как это использовать?
В моем случае
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,962
Можешь пример показать?
CLEO:
{$CLEO}
0AC6: 0@ = label @Buffer offset
0AA7: call_function {HMODULE __stdcall GetModuleHandleA}0x0081E406 num_params 1 pop 0 | {LPCSTR lpModuleName}"Kernel32.DLL" | {HMODULE}1@ |
0AA7: call_function {FARPROC __stdcall GetProcAddressA}0x0081E40C num_params 2 pop 0 | {lpProcName}"WritePrivateProfileStringA" {hModule}1@ | {FARPROC}2@ |
0AA7: call_function {FARPROC __stdcall GetProcAddressA}0x0081E40C num_params 2 pop 0 | {lpProcName}"GetPrivateProfileStringA" {hModule}1@ | {FARPROC}3@ |

WHILE TRUE
    0001: 0
    IF 0ADC:   test_cheat "1"
    THEN
        0AA7: call_function {WritePrivateProfileStringA}2@ num_params 4 pop 0 | {lpFileName}"MyTestINIFile.INI" {lpString}"420 4Life" {lpKeyName}"Key" {lpAppName}"Project" | {Result}4@ |
        0AA7: call_function {GetPrivateProfileStringA}3@ num_params 6 pop 0 | {lpFileName}"MyTestINIFile.INI" {nSize}64 {lpReturnedString}0@ {lpDefault}"ERROR" {lpKeyName}"Key" {lpAppName}"Project" | {Result}5@ |
        0ACD: show_text_highpriority 0@ time 1000
    END
END

:Buffer // 64 + 1
HEX
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
END

Есть ли опкод дающий ид оружия которое находится у актера в руках?
0470: 76@ = actor $PLAYER_ACTOR current_weapon
 

NookieONE

Участник
128
1
CLEO:
{$CLEO}
0AC6: 0@ = label @Buffer offset
0AA7: call_function {HMODULE __stdcall GetModuleHandleA}0x0081E406 num_params 1 pop 0 | {LPCSTR lpModuleName}"Kernel32.DLL" | {HMODULE}1@ |
0AA7: call_function {FARPROC __stdcall GetProcAddressA}0x0081E40C num_params 2 pop 0 | {lpProcName}"WritePrivateProfileStringA" {hModule}1@ | {FARPROC}2@ |
0AA7: call_function {FARPROC __stdcall GetProcAddressA}0x0081E40C num_params 2 pop 0 | {lpProcName}"GetPrivateProfileStringA" {hModule}1@ | {FARPROC}3@ |

WHILE TRUE
    0001: 0
    IF 0ADC:   test_cheat "1"
    THEN
        0AA7: call_function {WritePrivateProfileStringA}2@ num_params 4 pop 0 | {lpFileName}"MyTestINIFile.INI" {lpString}"420 4Life" {lpKeyName}"Key" {lpAppName}"Project" | {Result}4@ |
        0AA7: call_function {GetPrivateProfileStringA}3@ num_params 6 pop 0 | {lpFileName}"MyTestINIFile.INI" {nSize}64 {lpReturnedString}0@ {lpDefault}"ERROR" {lpKeyName}"Key" {lpAppName}"Project" | {Result}5@ |
        0ACD: show_text_highpriority 0@ time 1000
    END
END

:Buffer // 64 + 1
HEX
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
END


0470: 76@ = actor $PLAYER_ACTOR current_weapon

Мне нужно чтобы "420 4Life" это можно было изменять в ini файле.
И можно сделать чтобы это все сохранялось не в windows, а в папке с игрой.