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

RedBoxWhite

Известный
337
27
какого члена там "0 = .."?????
там должна быть переменная
CLEO:
0C18: 0 = strstr string1 10@ string2 "[O]"
0B75: get_chat_string 99 text_to 10@ prefix_to 0 color_to 0 prefix_color_to 0
Я где-то взял подобный код и переделал под себя, там то и было так, я не обращал внимания на это, ранее подобный код работал.
 

RedBoxWhite

Известный
337
27
В 0B75: нули замени на переменные и во всех трёх 0C18 тоже
И ещё добавь в начале:

CLEO:
{$CLEO .cs}

0001: wait 0 ms
0000: NOP

//выделение памяти воткни тут

while not SAMP.Available()
    wait 400
end

while not Player.Defined($PLAYER_ACTOR)
    wait 100
end
Ещё (возможно ошибаюсь) надо добавить форматирование строки
Ничего не помогло.
 

RedBoxWhite

Известный
337
27
[0] что обозначает? Он всегда 0?
Это сообщение с чата, это буква "O". Я вот чёт вообще ничего не понимаю, у меня есть почти такой же скрипт, и он работает:pidrila:
CLEO:
{$CLEO}
0000:
wait 2000

repeat
wait 400
until samp.Available()
0B00: delete_file "cleo\text.txt"

0B34: "cmd" to_label @cmd
alloc 2@ 256
alloc 3@ 256

:1
while true
wait 0
if 6@ == true
then
0B75: samp get_chat_string 99 text_to 2@ prefix_to 0 color_to 0 prefix_color_to 0
if and
0C18: 0 = strstr string1 2@ string2 "[O]"
0C18: 0 = strstr string1 2@ string2 ":"
0C18: 0 = strstr string1 2@ string2 "11"
then
    0AA5: call 0x8220AD num_params 4 pop 4 params 1@v 3@ "[O] %s 11 %d" 2@
    if 5@ = File.Open("cleo\text.txt", "at+")
    then
        0AD9: write_formatted_text "%s%c" in_file 5@ 2@ 0xA
        0AF8: "%d" -1 1@
        File.Close(5@)
    end
end
end
wait 0
end

:cmd
0B35: 0@ = get_last_command_params
0C1A: 0@ = atoi 0@

if and
not 0@ == 1
not 0@ == 2
then
0AF8: "/cmd 1/2" 0xFFFFFF
end

if 0@ == 2
then
0006: 6@ = false
end

if 0@ == 1
then
0006: 6@ = true
end   
cmdret
 

RedBoxWhite

Известный
337
27
А зачем тебе дублировать то что уже написано? id определять что ли?
Один проверяет строку на ban + с командой, другой работает по строке "11" + без команды. Удалил рабочий скрипт (который выше скинул), и заработал другой. Почему это так работает?
 

Trashmas

Новичок
40
0
В клео обязательно юзать локальные переменные? 30 шт бывает недостаточно, плюс удобнее когда переменная названа тем, что она содержит.
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,989
В клео обязательно юзать локальные переменные? 30 шт бывает недостаточно, плюс удобнее когда переменная названа тем, что она содержит.
Во первых есть константы. Во вторых лимит не 30, а 31 и 2 таймера. В третьих их можно расширить.


CLEO:
0AC8: 0@ = allocate_memory_size 512
0C11: memset destination 0@ value 0x0 size 512

0AB1: call_scm_func @CallBuffer Params 4 {ID Ячейки}0 {Указатель на Buffer}0@ {Тип функции}1 {Число}420 || {Result}1@

:CallBuffer
// 0@ - ID Ячейки.
// 1@ - Указатель на Buffer .
// 2@ - Тип функции {1 - Write, Other - Read}.
// 3@ - Число для записи.
0012: 0@ *= 4 // Получаем смещение на указанную ячейку.
005A: 0@ += 1@ // Получаем указатель на ячейку.
IF 0039:   2@ == 1 // Проверяем тип вызова.
THEN 0A8C: write_memory 0@ size 4 value 3@ virtual_protect TRUE // Запись данных в ячейку.
ELSE 0A8D: 25@ = read_memory 0@ size 4 virtual_protect TRUE // Считывание данных.
END
0AB2: RET_ 1 {Result}25@
 

Trashmas

Новичок
40
0
Во первых есть константы. Во вторых лимит не 30, а 31 и 2 таймера. В третьих их можно расширить.

Константы - мусор, использовал их только что бы придать коду эстетику.
а на счет расширения - не совсем понятно, по подробнее пожалуйста.
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,989

Goldfish

Известный
106
22
Почему игра зависает при столкновении об чего-либо на максимальной скорости, если изменить максимальную скорость авто через структуру хендлинга 0xC2B9DC по смещению 0x84 ?
вот примерно так подменяю значение:

Код:
{$CLEO .cs}
0000:
        
while true
    wait 0                                 
    if and
    00DF:  actor $PLAYER_ACTOR driving
    0AB0: key_pressed 48  // 0
    then 
    03C0: 0@ = actor $PLAYER_ACTOR car
    0AB1: @getVehHandlingOffset 1 from_car 0@ store_to 2@ 
    2@ += 0x84
    0A8C: write_memory 2@ size 4 value 1.155 virtual_protect 0 //  TransmissionData.fMaxVelocity
    end
end
// source http://gtaforums.com/topic/429194-changing-car-handling/#entry1059632226
:getVehicleNum
{
Parameters:
   Passed:
     0@ - vehicle handle
   Result:
     1@ - vehicle number
Example:
   0AB1: @getVehicleNum 1 from_car 0@ store_to 1@
}
0441: 1@ = car 0@ model
1@ -= 400
0AB2: ret 1 1@
:getVehHandlingOffset
{
Parameters:
   Passed:
     0@ - vehicle handle
   Result:
     3@ - vehicle handling offset
Example:
   0AB1: @getVehHandlingOffset 1 from_car 0@ store_to 1@
}
0AB1: @getVehicleNum 1 from_car 0@ store_to 1@
0085: 2@ = 1@
2@ *= 0x308
2@ += 0xB1F650
2@ += 0x4E
0A8D: 3@ = read_memory 2@ size 2 virtual_protect 0 // get handling ID
3@ *= 0xE0
3@ += 0xC2B9DC
0AB2: ret 1 3@
:getVehHandlingOffset_onID
0@ -= 400
0085: 2@ = 0@
2@ *= 0x308
2@ += 0xB1F650
2@ += 0x4E
0A8D: 3@ = read_memory 2@ size 2 virtual_protect 0 // get handling ID
3@ *= 0xE0
3@ += 0xC2B9DC
0AB2: ret 1 3@
 

Dark_Knight

Me, me and me.
Друг
4,085
2,114
Константы - мусор, использовал их только что бы придать коду эстетику.
а на счет расширения - не совсем понятно, по подробнее пожалуйста.
Константы не мусор. Позволяют удобнее читать код. На счет разширения можно юзать структуры и массивы(Спасибо СФ за это, но можно и без них как вариант выше). Щас скину один скрипт и поймешь.
CLEO:
{$CLEO}
{$NOSOURCE}
const
Information = 0@
Array_Info = 1@ 
ID = 1 
Ping = 2 
Health = 3
Armor = 4
Level = 5
Money = 6
Weapon = 7
Ammo = 8
Font = 2@
LenghtText = 3@
HeightText = 4@
ScreenLenghtX = 5@
ScreenLenghtY = 6@
PosX = 7@
PosY = 8@
SymvolSeparation = 9@
Event_Dialog = 11@
Control_Dialog = 12@ 
//Dialog
Dialog = 10@
Pos_X_Dialog = 0@
Pos_Y_Dialog = 1@
Dialog_Width_Var = 2@
Dialog_Height_Var = 3@
Dialog_Width = 320
Dialog_Height = 250
Dialog_BackGround_Color = 0x88AA0000
VK_ALT = 0x10
end
var
LenghtText : int
HeightText : int
ScreenLenghtX : int
ScreenLenghtY : int
Pos_X_Dialog : int
Pos_Y_Dialog : int
Dialog_Width_Var : int
Dialog_Height_Var : int
Dialog_Width : int
Dialog_Height : int
PosX : int
PosY : int
30@ : int
31@ : int
29@ : int
end

if
not 29@ = samp.Base()
then end_thread
else
    while not samp.Available()
    wait 0
    end
end
gosub @create_dialog
0B6D: render Font  = create_font "Comic Sans MS" height 12 flags 12
0ac8: Information = 10240
0c11: Information 0 10240
0ac8: Array_Info = 1024
0c11: Array_Info 0 1024
0ac8: SymvolSeparation = 4
0c11: SymvolSeparation 0 4  
//0ad3: SymvolSeparation "|"
0ad3: SymvolSeparation "%c%c%c" 32 124 32
0b78: "{FFFF00}Player Informer load"
while 8B61:  samp is_local_player_spawned
wait 0
end


PosY = 5
samp.GetScreenResolution(ScreenLenghtX, ScreenLenghtY)
PosX = ScreenLenghtX
PosX /= 2
gosub @GetInfo
gosub @sprintf
0B6B: render LenghtText = font Font draw_text Information length
LenghtText /= 2
PosX -= LenghtText

while true
wait 0 
gosub @reload
gosub @dialog
gosub @OnMouseOver
gosub @GetInfo
gosub @sprintf
gosub @render
end

:render
{
if call @find 1 Information  
then 
    if 29@ == 10
    then
        call @strnumsym 2 Information SymvolSeparation to 29@
        29@ ++
        HeightText *= 29@
        0ac8: 24@ = 4
        0ac8: 25@ = 4
        0ad3: 24@ = "%c" 0xA
        0ad3: 25@ = "/"
        call @str_replace 3 Information 24@ 25@ Information
        call @SizeX_Draw_Box 2 Information Font to LenghtText
        call @str_replace 3 Information 25@ 24@ Information
        0ac9: 24@
        0ac9: 25@ 
    else 
        0B6B: render LenghtText = font Font draw_text Information length
    end
end}      
//HeightText += 10
PosY -= 5
PosX -= 3
//LenghtText += 6 
0B69: render draw_box_pos PosX PosY size LenghtText HeightText color 0xAA000000
PosY += 5
PosX += 3
//==========================================================================
0B6F: render Font draw_text Information pos PosX PosY color 0xFFFF8C00
return

:OnMouseOver
dialog.PopEvent(Dialog, Event_Dialog, Control_Dialog)
if and
not Event_Dialog == 0
not Control_Dialog == 0
then 
    if and
    Event_Dialog == 1025
    Control_Dialog == 10 
    then
    dialog.SetCheckBoxChecked(Dialog, 11, false)
    0ad3: SymvolSeparation "%c%c%c" 32 124 32
    end
    if and
    Event_Dialog == 1025
    Control_Dialog == 11 
    then      
    dialog.SetCheckBoxChecked(Dialog, 10, false)
    0ad3: SymvolSeparation "%c" 0xA    
    end
end
0B6B: render LenghtText = font Font draw_text Information length
0B6C: render HeightText = font Font draw_height 
if call @find 1 Information 
then 
    call @strnumsym 2 Information SymvolSeparation to 29@  
    29@ ++
    HeightText *= 29@
    0ac8: 24@ = 4
    0ac8: 25@ = 4
    0ad3: 24@ = "%c" 0xA
    0ad3: 25@ = "/"
    call @str_replace 3 Information 24@ 25@ Information
    call @SizeX_Draw_Box 2 Information Font to LenghtText
    call @str_replace 3 Information 25@ 24@ Information
    0ac9: 24@
    0ac9: 25@ 
end    
HeightText += 10
LenghtText += 6                          
if call @is_cursor_here 4 start PosX PosY end_offset LenghtText HeightText to 30@ 31@
then
    if key_down 2
    then
        while key_down 2
        wait 0
        gosub @render        
        end
        gosub @dialog_active
       
    end
    if key_down 1
    then
        while key_down 1
        wait 0
        0B5E: get_cursor_pos PosX PosY
        PosX -= 30@ 
        PosY -= 31@
        gosub @render
        end
    end
end

   
return

:GetInfo

$player_actor = actor.EmulateFromPlayer($player_char)
13@ = samp.GetSAMPPlayerIDByActorHandle($player_actor)
0C0F: array Array_Info element ID = 13@
14@ = samp.GetPlayerPing(13@)
0C0F: array Array_Info element Ping = 14@
14@ = samp.GetPlayerScore(13@)
0C0F: array Array_Info element Level = 14@
14@ = actor.Health($player_actor)
0C0F: array Array_Info element Health = 14@

04DD: 14@ = actor $player_actor armour
0C0F: array Array_Info element Armor = 14@
14@ = player.Money($player_char)
0C0F: array Array_Info element Money = 14@
0470: 14@ = actor $player_actor current_weapon
0C0F: array Array_Info element Weapon = 14@
041A: 14@ = actor $PLAYER_ACTOR weapon_id 14@ ammo
0C0F: array Array_Info element Ammo = 14@ 
return

:sprintf
0c11: Information 0 10240
if dialog.CheckBoxIsChecked(Dialog, 1)  
then 
0C0E: 14@ = array Array_Info element ID
14@ = samp.GetPlayerNickname(14@)
0ad3: Information = "{FFFF8C00}Nick: {FFFFFFFF}%s" 14@
end 
if dialog.CheckBoxIsChecked(Dialog, 2)
then 
0C0E: 14@ = array Array_Info element ID
0ad3: Information = "%s{FFFF8C00}%sID: {FFFFFFFF}%d" Information SymvolSeparation 14@  
end
if dialog.CheckBoxIsChecked(Dialog, 3)
then
0C0E: 14@ = array Array_Info element Ping 
0ad3: Information = "%s{FFFF8C00}%sPing: {FFFFFFFF}%d" Information SymvolSeparation 14@ 
end
if dialog.CheckBoxIsChecked(Dialog, 4)
then 
0C0E: 14@ = array Array_Info element Level 
0ad3: Information = "%s{FFFF8C00}%sLevel: {FFFFFFFF}%d" Information SymvolSeparation 14@ 
end
if dialog.CheckBoxIsChecked(Dialog, 5)
then 
0C0E: 14@ = array Array_Info element Health 
0ad3: Information = "%s{FFFF8C00}%sHealth: {FFFFFFFF}%d" Information SymvolSeparation 14@ 
end
if dialog.CheckBoxIsChecked(Dialog, 6)
then 
0C0E: 14@ = array Array_Info element Armor
    if 14@ > 0
    then
    0ad3: Information = "%s{FFFF8C00}%sArmor: {FFFFFFFF}%d" Information SymvolSeparation 14@
    end 
end    
if dialog.CheckBoxIsChecked(Dialog, 7)                                                  
then 
0C0E: 14@ = array Array_Info element Money
    if 14@ > 0
    then 
    0ad3: Information = "%s{FFFF8C00}%sMoney: {FFFFFFFF}%d" Information SymvolSeparation 14@
    end 
end
if dialog.CheckBoxIsChecked(Dialog, 8)
then
0C0E: 14@ = array Array_Info element Weapon  
call @get_weapon_name_by_id 1 14@ to 14@ 
0ad3: Information = "%s{FFFF8C00}%sWeapon: {FFFFFFFF}%s" Information SymvolSeparation 14@ 
end
if 
dialog.CheckBoxIsChecked(Dialog, 9)
then 
0C0E: 14@ = array Array_Info element Ammo
    if 14@ > 1 
    then
    0ad3: Information = "%s{FFFF8C00}%sAmmo: {FFFFFFFF}%d" Information SymvolSeparation 14@
    end 
end

return

:create_dialog
dialog.Create(Dialog, "PI setting")
samp.GetScreenResolution(Pos_X_Dialog, Pos_Y_Dialog)
Dialog_Width_Var = Dialog_Width
Dialog_Height_Var = Dialog_Height
Dialog_Width_Var /= 2
Dialog_Height_Var /= 2
Pos_X_Dialog /= 2
Pos_Y_Dialog /= 2
Pos_X_Dialog -= Dialog_Height_Var
Pos_Y_Dialog -= Dialog_Width_Var
dialog.SetRECT(Dialog, Pos_X_Dialog, Pos_Y_Dialog, Dialog_Width, Dialog_Height)
dialog.SetBackgroundColor(Dialog, Dialog_BackGround_Color)
dialog.SetVisible(Dialog, false)
dialog.AddCheckBox(Dialog, 1, "Nickname", 0, 0, 110, 24)
dialog.addcheckbox(Dialog, 2, "ID", 110, 0, 50, 24)
dialog.addcheckbox(Dialog, 3, "Ping", 160, 0, 70, 24)
dialog.addcheckbox(Dialog, 4, "LvL", 230, 0, 60, 24)
dialog.addcheckbox(Dialog, 5, "Health", 0, 24, 90, 24)
dialog.addcheckbox(Dialog, 6, "Armor", 85, 24, 80, 24)
dialog.addcheckbox(Dialog, 7, "Money", 170, 24, 85, 24)
dialog.addcheckbox(Dialog, 8, "Weapon", 0, 48, 100, 24)
dialog.addcheckbox(Dialog, 9, "Ammo", 100 , 48, 80, 24)
dialog.addcheckbox(Dialog, 10, " | ", 0 , 72, 80, 24)
dialog.addcheckbox(Dialog, 11, "\n", 100 , 72, 80, 24)
//dialog.addcheckbox(Dialog, 2, "ID", 110, 0, 50, 24)
dialog.SetCheckBoxChecked(Dialog, 1, true)
dialog.SetCheckBoxChecked(Dialog, 2, true)
dialog.SetCheckBoxChecked(Dialog, 3, true)
dialog.SetCheckBoxChecked(Dialog, 4, true)
dialog.SetCheckBoxChecked(Dialog, 5, true)
dialog.SetCheckBoxChecked(Dialog, 6, true)
dialog.SetCheckBoxChecked(Dialog, 7, true)
dialog.SetCheckBoxChecked(Dialog, 8, true)
dialog.SetCheckBoxChecked(Dialog, 9, true)
dialog.SetCheckBoxChecked(Dialog, 10, true)
return

:dialog
    if 0adc: "dialog"
    then 
       
    end
return

:dialog_active
if dialog.IsVisible(Dialog)
then 
    dialog.SetVisible(Dialog, false)
    samp.ToggleCursor(false)
else 
    dialog.SetVisible(Dialog, true)
    samp.ToggleCursor(true)
end
return

:reload
if 0adc: "player"
then
    0b78: "{FFFF00}Player Informer reload"
    run "Player Informer.cs"
    0B6E: render release_font Font
    0ac9: Information
    0ac9: Array_Info
    0BA4: Dialog free
    end_thread
end
return

:SizeX_Draw_Box
var
4@ : int
5@ : int
end
0C17: 6@ = strlen 0@
0ac8: 3@ = 6@
0C13: strcpy destination 3@ source 0@
0C16: 2@ = strtok 3@ "/"
0B6B: render 4@ = font 1@ draw_text 3@ length
5@ = 4@
while not 3@ == 0
0C16: 3@ = strtok 0 "/"
    if 3@ == 0
    then break
    end
0B6B: render 4@ = font 1@ draw_text 3@ length
    if 4@ > 5@
    then 5@ = 4@
    end
end
0ac9: 3@
ret 1 5@


:str_replace
var
9@ : int
7@ : int
end
//0ab1: @str_replace 3 {String} 0@ {search_symvol} 1@ {replace_symvol} 2@ to {New_string} 0@
0C17: 5@ = strlen 0@
0A8D: 7@ = read_memory 1@ size 1 virtual_protect 0{search_symvol}
0A8D: 8@ = read_memory 2@ size 1 virtual_protect 0{replace_symvol} 
for 6@ = 1 to 5@
0C0C: 9@ = struct 0@ offset 6@ size 1
if 9@ == 7@
then 0C0D: struct 0@ offset 6@ size 1 = 8@
end    
end
ret 1 0@

:find
var
0@ : int
1@ : int
5@ : int
4@ : int
end
6@ = 0
0c17: 2@ = strlen 0@
for 3@ = 1 to 2@
    0A8D: 4@ = read_memory 0@ size 1 virtual_protect 0
    0@ ++
    if 4@ == 10
    then break
    end  
end
if 4@ == 10 
then return_true
else return_false
end
ret 0


:strnumsym
var
0@ : int
1@ : int
5@ : int
4@ : int
end
6@ = 0
0A8D: 5@ = read_memory 1@ size 1 virtual_protect 0
0c17: 2@ = strlen 0@
for 3@ = 1 to 2@
    0A8D: 4@ = read_memory 0@ size 1 virtual_protect 0
    0@ ++
    if 5@ == 4@
    then 6@++
//    message "%d" -1 4@
    end  
end
ret 1 6@

:is_cursor_here
0B5E: get_cursor_pos 4@ 5@
if and
    001D: 4@ > 0@
    001D: 5@ > 1@
then
    005A: 0@ += 2@
    005A: 1@ += 3@
    if and
        001D: 0@ > 4@
        001D: 1@ > 5@
    then
        0485:  return_true
    else
        059A:  return_false
    end
    0062: 0@ -= 2@
    0062: 1@ -= 3@
else
    059A:  return_false
end
0062: 4@ -= 0@
0062: 5@ -= 1@
0AB2: ret 2 4@ 5@

 :get_weapon_name_by_id
{
Params:
In: 0@ - WeaponID
Out: 1@ - weaponName

Example: call @get_weapon_name_by_id 1 id 0@ to 1@
}
0AC6: 1@ = label @weapons offset
0@ *= 19
005A: 1@ += 0@ // (int)
ret 1 1@

:weapons
hex
"Duke" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 0 }
"Brass" 20 "Knuckles" 00 00 00 00 00 { 1 }
"Golf" 20 "Club" 00 00 00 00 00 00 00 00 00 00 { 2 }
"Nite" 20 "Stick" 00 00 00 00 00 00 00 00 00 { 3 }
"Knife" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 4 }
"Baseball" 00 00 00 00 00 00 00 00 00 00 00 { 5 }
"Shovel" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 6 }
"Pool" 20 "Cue" 00 00 00 00 00 00 00 00 00 00 00 { 7 }
"Katana" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 8 }
"Chainsaw" 00 00 00 00 00 00 00 00 00 00 00 { 9 }
"Dildo" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 10 }
"Dildo" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 11 }
"Dildo" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 12 }
"Dildo" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 13 }
"Flowers" 00 00 00 00 00 00 00 00 00 00 00 00 { 14 }
"Cane" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 15 }
"Grenade" 00 00 00 00 00 00 00 00 00 00 00 00 { 16 }
"Tear" 20 "Gas" 00 00 00 00 00 00 00 00 00 00 00 { 17 }
"Molotov" 00 00 00 00 00 00 00 00 00 00 00 00 { 18 }
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 19 }
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 20 }
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 21 }
"Pistol" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 22 }
"Silencer" 00 00 00 00 00 00 00 00 00 00 00 { 23 }
"Deagle" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 24 }
"Shotgun" 00 00 00 00 00 00 00 00 00 00 00 00 { 25 }
"SawnOff" 00 00 00 00 00 00 00 00 00 00 00 00 { 26 }
"Spas12" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 27 }
"Tec9" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 28 }
"MP5" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 29 }
"AK47" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 30 }
"M4" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 31 }
"Mac10" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 32 }
"Rifle" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 33 }
"Sniper" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 34 }
"Rocket" 20 "Launcher" 00 00 00 00 { 35 }
"HS" 20 "Rocket" 20 "Launcher" 00 { 36 }
"Flamethrower" 00 00 00 00 00 00 00 { 37 }
"Minigun" 00 00 00 00 00 00 00 00 00 00 00 00{ 38 }
"C4" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 39 }
"Detonator" 00 00 00 00 00 00 00 00 00 00 { 40 }
"Spray" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 41 }
"Fire" 20 "Extinguisher" 00 00 { 42 }
"Camera" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 43 }
"Nightvision" 00 00 00 00 00 00 00 00 { 44 }
"Infrared" 20 "Vision" 00 00 00 00 { 45 }
"Parachute" 00 00 00 00 00 00 00 00 00 00 { 46 }
end
 

iTz_WEEZY

Известный
298
88
В первые работаю с INI.. вообщем помогите добрым советом.
я что то хочу записать в ини и вывести в чат.
CLEO:
{$CLEO}

0000:
///////////////////////
var
0@ : int = 0
end
///////////////////////
repeat
wait 500
until 0afa:
//////////////////////////////////////////////////////////
0B34: samp register_client_command "doklad" to_label @act
//////////////////////////////////////////////////////////////////////////////////////////////////
while true
wait 0
  if 0@ == 1
  then
  wait 10000
  0AC8: 4@ = allocate_memory_size 512
  0AF4: 4@ = read_string_from_ini_file "CLEO\test.INI" section "TEST" keys "228"
  0AC9: free_allocated_memory 4@
  0AF5: write_string 5@ to_ini_file "cleo\test.INI" section "TEST" key "1337"
  0AD3: 5@ = format "Test"
  say "%s" 4@
  end
end
//////////////////////////////////////////////////////////////////////////////////////////////////
:act
0B35: samp 1@ = get_last_command_params
2@s = 'on'
3@s = 'off'
  if 0C14: strcmp string1 1@ string2 2@s
  then
  0@ = 1
  chatmsg "{00FF00}ON" -1
  end
  if 0C14: strcmp string1 1@ string2 3@s
  then
  chatmsg "{FF00FF}OFF" -1
  0@ = 0
  end
0b43:
.....
((каждый раз когда сюда заглядываю чувствую себя полным уебаном и без понимания смотрю на скрипты:sad_frog:))
 

Trashmas

Новичок
40
0

Я это знал, но от этого они полезнее лично для меня не стали)

Еще один непонятный момент, столкнулся с ним давно и позабыл...

Код:
:1
wait 0
if 0ab0: key_pressed 16
    then
    repeat
    wait 0

if 0AA2: 2@ = load_library "User32.dll" 
then 
     if 0AA4: 2@ = get_proc_address "keybd_event" library 2@ 
     then 
         0AA5: call 2@ num_params 4 pop 0 0 0 0 0x26
         0AA5: call 2@ num_params 4 pop 0 0 0x02 0x26
     end 
end 
    until 8ab0: key_pressed 16
end
jump @1

По идее скрипт должен спамить стрелкой вверх (0x26) пока нажат Шифт (16) но на деле естесстно ничего не работает.
Хотя заметил такой момент: в сампе если открыть чат и зажать Шифт, то скрипт работать будет, т.к. будет прокручивать предыдущие отправленные сообщения в чат.