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

gcode

нестандартное звание звание звание звание звани...
Друг
789
357
Всем вечер добрый. У меня вопрос. Можно ли как-то сделать, чтобы cleo выводил на экран кол-во смертей и кол-во убийств в samp (обнуление при каждом запуске игре)?
Допустим, чтобы подсчитать кол-во смертей, использовать адресс: 00A91424, в котором содержится кол-во ХП персонажа.
А может у кого уже есть иное решение?

Сделал и убийства и смерти с выводом в чат по команде /kide, по примеру сможешь переделать с выводом на экран.
update: Слегка доработал скриптец, теперь должен считать очень точно.
Код:
{$VERSION 3.1.0027}
{$CLEO .cs}
 
0662: NOP "CLEO Kills Death"
thread "kd"
 
if
    8AF7: get_samp_base_to 33@
then
    0A93: end_custom_thread
end
repeat
    wait 400
until 0AFA: is_samp_structures_available
 
wait 0
1@ = 0
2@ = 0
0AF8: samp add_message_to_chat "[KIDE]: Введите '/kide', чтобы увидеть статистику убийств/смертей." 16750899
0B34: samp register_client_command "kide" to_label @kpd
 
:dead
wait 0
if
Actor.Dead($PLAYER_ACTOR)
else_jump @dead3
1@ += 1
:dead2
wait 0
if
not Actor.Dead($PLAYER_ACTOR)
else_jump @dead2
jump @dead
:dead3
wait 0
if
0AD2: 0@ = player $PLAYER_CHAR targeted_actor //IF and SET
else_jump @dead
if
  Actor.Dead(0@)
else_jump @dead
2@ += 1
:dead4
wait 0
if
not  Actor.Dead(0@)
else_jump @dead5
jump @dead
:dead5
wait 0
if
Actor.Dead($PLAYER_ACTOR)
else_jump @dead4
1@ += 1
jump @dead2
 
:kpd
wait 0
0AF8: samp add_message_to_chat "[KIDE]: Вы убили %d человек и умерли %d раз за сессию." 16750899 2@ 1@
0B43: samp cmd_ret
 

gcode

нестандартное звание звание звание звание звани...
Друг
789
357
sumpfuncs 2.4 Всё то же самое. При запуске игра грузится, но в чате штук 15 "warning (s007)..." после чего игра в краш. Может компилю что не так?
Скинь готовый cs

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

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как правильно работать с функцией strtok?
Например мне надо разделить строку на лексемы по разделителю "/"
B35: samp 1@ = get_last_command_params
0C16: 2@ = strtok string1 1@ string2 "/"
После этого в 2@ записывается первая лексема, но мне нужно продолжить поиск лексем в строке @1.
По описанию функции я должен вызывать ее с параметром NULL в string1. Ну короче она больше одной лексемы не ищет у меня.
Возможно нужно сделать что бы после первого вызова в строку 1@ не записывалась первая лексема, а вырезалась.
тогда несколько вызовов и все good, а так FYP помогай.
 

Charlatan

Новичок
Друг
290
18
Ребята какие опкоды нужны для поиска ида игрока по хендлу, и в результате что бы ему предложить что то, стоя на месте и не в машине
 

Thomas_Johnson

Известный
Проверенный
183
21
Ребята какие опкоды нужны для поиска ида игрока по хендлу, и в результате что бы ему предложить что то, стоя на месте и не в машине
Возможно я что-то забыл, не проверялось, поправь, если что
Код:
{$CLEO .cs}
0000:
if not 29@ = SAMP.Base()
then 0A93: end_custom_thread
end
while not SAMP.Available()
wait 100
end
 
while true
wait 0
if
0ab0: 104
then
    repeat
    wait 0
    until 8ab0: 104
    if
    not actor.Driving($PLAYER_ACTOR)
    then
        0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 33@ closest_ped_to 0@
        0B2B: samp 0@ = get_player_id_by_actor_handle 0@
        0AF9: samp say_msg "/hi %d" 0@
    end
end
end
 
  • Нравится
Реакции: hnnssy

Charlatan

Новичок
Друг
290
18
Как сделать локальный диалог с списком, что бы при выборе определоного пункта создавался новый диалог с выводом текста?
 

Charlatan

Новичок
Друг
290
18
Ребята, пожалуйста помогите, а то уже столько времени всрал в это, а оно чето как доходит до дела, либо крашит, либоне работае вообше
 

Charlatan

Новичок
Друг
290
18
С выводом текста откуда?

Выходит у нас далог DIALOG_STYLE_LIST и с одного его пункта мне нужно что вышел вот такой диалог DIALOG_STYLE_PASSWORD . Пример как бы открывается наш основной диалог по команде /dialog и там я выбираю пункт *ПРИМЕР* потом, как пункт *ПРИМЕР* был выбран у меня открывается новый диалог в котором нужно ввести данные.
 

Dark_Knight

Me, me and me.
Друг
4,067
2,081
Выходит у нас далог DIALOG_STYLE_LIST и с одного его пункта мне нужно что вышел вот такой диалог DIALOG_STYLE_PASSWORD . Пример как бы открывается наш основной диалог по команде /dialog и там я выбираю пункт *ПРИМЕР* потом, как пункт *ПРИМЕР* был выбран у меня открывается новый диалог в котором нужно ввести данные.
Код:
{$CLEO}
const
DIALOG_STYLE_MSGBOX = 0
DIALOG_STYLE_INPUT = 1
DIALOG_STYLE_LIST = 2
DIALOG_STYLE_PASSWORD = 3
end

if
not 29@ = samp.Base()
then
end_thread
else
while not samp.Available()
wait 100
end
end

0B34: samp register_client_command "dialog" to_label @dialog

while true
wait 0
end

:dialog
:DialogMenu
0AC6: 2@ = label @DialogText offset
0B3B: samp show_dialog id 10000 caption "Пример" text 2@ button_1 "Ок" button_2 "Закрыть" style DIALOG_STYLE_LIST
repeat
wait 0
until samp.DialogRespond(10000, 0@, 1@, 0)
if 0@ == 1
then
if 1@ == 0
then
0B3B: samp show_dialog id 10001 caption "Введите пароль" text "" button_1 "Ок" button_2 "Назад" style DIALOG_STYLE_PASSWORD
repeat
wait 0
until samp.DialogRespond(10001, 0@, 0, 28@v)
if 0@ == 2
then goto @DialogMenu
end
if 0@ == 1
then 0AF8: message "%s" 0xFF00FF 28@v 
end
end
if 1@ == 1
then
0B3B: samp show_dialog id 10002 caption "Введите пароль" text "" button_1 "Ок" button_2 "Назад" style DIALOG_STYLE_INPUT
repeat
wait 0
until samp.DialogRespond(10002, 0@, 0, 28@v)
if 0@ == 2
then goto @DialogMenu
end
if 0@ == 1
then 0AF8: message "%s" 0xFF00FF 28@v 
end
end
end
samp.CmdRet()

:DialogText
hex
"Ввод" 20 "текста" 20 "со" 20 "звездами" A
"Ввод" 20 "текста" 20 "без" 20 "звезд" 00
end