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

Tarxyn

Новичок
11
0
При попытке посадить игрока (себя) в машину идёт кик, а другие способы мне неизвестны.Нужна помощь,может кто знает решение проблемы
Код:
0B30: samp send_enter_vehicle 2@ as_passenger false
wait 200
072A: task_warp_char_into_car_as_driver $PLAYER_ACTOR car 1@
1@ - handle
2@ - id кара
 

b396778

Новичок
2
0
CLEO:
0@ = 0 //где-то в начале кода

while true
    wait 0
    if 0039 0@ == 0
    then
        0@ = 1
        say "text"
    end
end

Вообщем, если выполняется условие в теле цикла, то происходит say "text", затем 0@ становится равна 1, и делает условие неверным, но суть в том, что даже после этого, say "text" успевает произойти неск раз. Думал сделать wait, но тогда скрипт может вообще перестать работать.

Это что-то вроде флудера, т.е. после ввода команды он начинает флуд текстом, если ввести команду опять - останавливает. Но даже после остановки он успевает профлудить пару раз. Как этого избежать? :(
 
Последнее редактирование:

Zoxan_Twist

Новичок
126
29
Как этого избежать?
То что сразу бросилось в глаза.
1) При запуске будет выведено в чат текст так как переменная 0@ == 0 по условию и то что тебе сервер не даст это сделать, ничего не знчит. Нельзя так делать.
2)Само условие. После опкода 0039 не стоит двоеточие. Может это ты не так скопировал но опять же это не правильно.
3) Зачем в теле цикла ты выключаешь флудер? Тебе же он флудить должен, а не стоять без толку.
4) Что по поводу переменной. Они какого-то черта нормально считываться не хотят. Уже и XOR использовал и все что только мог но в итоге так толком ничего и не вышло. Потом я зыбил и начал использовать глобальные переменные. Многие кудахтают что они зло и перезаписывать нельзя. Так вот, много раз использовал а именно как глобальные для скрипта(как у тебя 0@) и никаких проблем с игрой не наблюдалось.
Что по поводу решения твоей проблемы. Вот код который я немного переделал. Он полностью работает та как ты и описал.
CLEO:
{$CLEO .cs}
0000: NOP
0001: wait 5000

$Count = 0

0B34: samp register_client_command "e" to_label @Test 

while true
    wait 0
    if $Count == 1
    then say "text"
    end
end

:Test
    if $Count == 0
    then $Count = 1
    else $Count = 0
    end
0B43: samp cmd_ret
 
Последнее редактирование:

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
Бляяять, спецы подкатили.
Можешь юзать глобальные переменные. SB всё равно их потом переименовывает в те, которые не находятся в CustomVariables.ini.
Ты декомпиль свой скрипт и посмотри, что происходит с твоими названными переменными: их имена превращаются в те, которых нет в CustomVariables.ini. При использовании большого кол-ва таких переменных значение одной из них может записаться в какую-нибудь ячейку памяти, которая хранит указатель на что-то очень важное.
Ладно, это первое. Второе - если юзать глобальные переменные, и как я говорил выше, они переименовываются, то они будут перезаписываться, т.к. хранение в памяти у них одно. Какой нибудь супер тру скриптер юзает глобалки и ты вместе с ним, при этом юзер поставил эти два скрипта вместе, то перезапись этих переменных неизбежна. Эти два скрипта могут работать некорректно.
В третьих - сам разраб говорит, что нежелательно их юзать, но нет - мы это называем "кудахтать".

Его код полностью рабочий(который с локальными переменными). Что у него там творится - это его отдельная проблема. ЕГО. КОД. ПОЛНОСТЬЮ. РАБОЧИЙ.
 
  • Нравится
Реакции: SR_team и san0

Zoxan_Twist

Новичок
126
29
ЕГО. КОД. ПОЛНОСТЬЮ. РАБОЧИЙ.
Я говорил что он не рабочий?
Просто указал на те места на которые нужно обратить внимание.
Что по поводу переменных: о том что 2-а разных скрипта с разными названиями глобальных переменных в итоге при работе могут использовать одну и ту же ячейку памяти я не знал. Так как до этого работал в PAWNO и php и такого не наблюдалось. И думаю мало кто знает об этом. В многих языках программирования привязка идет именно к имени переменной и ячейки памяти используются разные.

Я наступил на эти грабли и меня они научили как правильно двигаться дальше. И пусть те кто прочитает это не совершает таких же ошибок.
 

SR_team

like pancake
BH Team
4,798
6,469
Я говорил что он не рабочий?
Просто указал на те места на которые нужно обратить внимание.
Что по поводу переменных: о том что 2-а разных скрипта с разными названиями глобальных переменных в итоге при работе могут использовать одну и ту же ячейку памяти я не знал. Так как до этого работал в PAWNO и php и такого не наблюдалось. И думаю мало кто знает об этом. В многих языках программирования привязка идет именно к имени переменной и ячейки памяти используются разные.

Я наступил на эти грабли и меня они научили как правильно двигаться дальше. И пусть те кто прочитает это не совершает таких же ошибок.
Ты мудак, просто смерись с этим фактом. Вся инфа есть в справке, и то что "кудахчат" более опытные скрипиеры ты должен воспринимать как слово божье!
 

Zoxan_Twist

Новичок
126
29
Ты мудак, просто смерись с этим фактом.
Многие совершают ошибки и могу поспорить что даже ты далеко не идеален и покуда будут в мире такие уёбки как ты, вместо того чтобы объяснить в чем дело, оскорбляют, люди будут дальше наступать на те же грабли.
Задумайся.
 

Dark_Knight

Me, me and me.
Друг
4,078
2,095
Многие совершают ошибки и могу поспорить что даже ты далеко не идеален и покуда будут в мире такие уёбки как ты, вместо того чтобы объяснить в чем дело, оскорбляют, люди будут дальше наступать на те же грабли.
Задумайся.
Нехуй юзать глобальные переменные. Это не гавнопавн и недоЯП. Это скриптовый язык
 

SR_team

like pancake
BH Team
4,798
6,469
и покуда будут в мире такие уёбки как ты, вместо того чтобы объяснить в чем дело, оскорбляют, люди будут дальше наступать на те же грабли
покуда вы дауны не будете читать справку, такие как я будут вести себя в отношение вас как уебки
 

Zoxan_Twist

Новичок
126
29
Ты читал справку когда комп купил? А от телефона инструкцию хотя бы открывал?
Для меня CLEO было то же самое. Я прочитал основы. Но как и в любом языке программировании есть подводные камни. И если я на этом камне споткнулся, а не ты, то это далеко не делает тебя выше меня.
 

SR_team

like pancake
BH Team
4,798
6,469
Ты читал справку когда комп купил?
справки к компу не идут, да и покупал я его комплектующими. Документацию к которым читал, что бы правильно подобрать сборку и собрать все это
А от телефона инструкцию хотя бы открывал?
Открывал и даже бегло просматривал в поисках дополнительной информации, которая может меня заинтересовать
Для меня CLEO было то же самое
Видимо не тоже самое
И если я на этом камне споткнулся, а не ты, то это далеко не делает тебя выше меня.
Я тоже юзал глобалки, но когда мне сказали, что этого не стоит делать - перестал, и при этом я не выставлял тех кто мне это сказал ниже себя, их высказывания я не называл кудахтаньем, а наоборот спросил почему именно нельзя, и как лучше сделать.
 

Zoxan_Twist

Новичок
126
29
я не называл кудахтаньем
На момент написания сообщения я только знал что этого делать не стоит(использовать глобальные переменные) точного объяснения я не нашел. Поскольку начал использовать и увидел что на игру это никак не влияет я и решил что запись в глобальные переменные не несет за собой никакой опасности. Ясное дело что это все производилось в пределах одного скрипта. Из-за чего и принял данные решение.
То что был не прав по поводу своих высказываний и пускай моя ошибка будет уроком для других кто считает так как считал я раньше.
Спасибо сем тем кто принимал участие в обсуждении.