Автор Тема: Помощь с CLEO  (Прочитано 23414 раз)

Оффлайн daniel_360

  • Прохожий
  • *
  • Сообщений: 83
  • Репутация: +4/-0
    • daniel360465
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #195 : Январь 08, 2020, 06:43:28 pm »
Здравствуйте, сделал небольшой код. Он делает в машинах бензин.
Нужно сделать так, чтоб если игрок вышел из машины, то сохранилось то кол-во, которое было изначально. Попытался сделать это, но работает как-то не очень. Не подскажете как исправить, и что следует добавить в код?
P.S. Код как всегда для main.scm


:Fuel
thread 'Fuel'

:Fuel_1
wait 0
if and
Player.Defined(0)
Actor.Driving($PLAYER_ACTOR)
not Actor.Dead($PLAYER_ACTOR)
jf @Fuel_3
$CF1 = Actor.CurrentCar($PLAYER_ACTOR)
0209: $CF2 = random_int_in_ranges 0 100

:Fuel_2
wait 0
if and
not Car.Wrecked($CF1)
Actor.InCar($PLAYER_ACTOR, $CF1)
jf @Fuel_3
//00BE: text_clear_all
04F7: status_text $CF2 0 line 1 'FUEL1'
wait 1000
000C: $CF2 -= 1 // integer values
if
not $CF2 >= 0
jf @Fuel_2
$CF2 = 0
02D4: car $CF1 turn_off_engine

:Fuel_3
wait 0
if or
not Actor.InCar($PLAYER_ACTOR, $CF1)
Actor.Dead($PLAYER_ACTOR)
Car.Wrecked($CF1)
jf @Fuel_2
//00BE: text_clear_all
0151: remove_status_text $CF2
Car.RemoveReferences($CF1)
jump @Fuel_1

Оффлайн Shagg_E

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 683
  • Репутация: +22/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #196 : Январь 08, 2020, 11:38:20 pm »
Нужно для каждого существующего авто выделять отдельную переменную, хранящую индивидуальное количество бензина.
Сделать это можно двумя способами:
1) Создать большой двумерный массив "хэндл-бензин", где будут перебираться и храниться бензин для всех существующих в данный момент авто.
2) Производить инжект в функции создания, обработки и удаления транспорта, и подключать уже туда дополнительные переменные, например - опять же из своего массива.

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

Остается разве что сохранять в памяти игры количество бензина последних трех-пяти авто, в которых сидел игрок. Тогда и игрок будет обманут тем, что в игре якобы сохраняется бензин для авто, в которых он "давно" не сидел - и ресурсов с трудозатратами уйдет меньше.
Иначе говоря - выделяешь 3 переменные под количество бензина, затем - 3 переменные, в которые будешь копировать хэндл авто, и когда игрок садится в транспорт - проверяешь, совпадает ли его хэндл с одним из трех записанных ранее. Если совпадает - устанавливаешь уровень бензина из соответствующей тому транспорту выделенной переменной. Если не совпадает - делаешь рандомный уровень бензина и записываешь хэндл транспорта и уровень бензина в те переменные, которые перезаписывались раньше всего(тут нужно соблюдать порядок). То же самое(перезапись значений) должно происходить при покидании игроком транспорта.
Короче - это тоже в меру трудозатратный способ и нужно хорошо понимать, что и зачем делаешь, чтобы скрипт не вызывал дальнейших конфликтов.

Оффлайн kenking

  • Новичок
  • **
  • Сообщений: 233
  • Репутация: +16/-0
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #197 : Январь 09, 2020, 08:01:30 am »
В структуре транспорта есть неиспользуемые байты. Можно записывать количество бензина в них.
Для SA делали подобные моды. Почитай здесь:

https://sannybuilder.com/forums/viewtopic.php?pid=11512#p11512
https://sannybuilder.com/forums/viewtopic.php?pid=4482#p4482

Оффлайн Shagg_E

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 683
  • Репутация: +22/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #198 : Январь 09, 2020, 12:57:37 pm »
Вот только вопрос, какие байты не используются...

Оффлайн kenking

  • Новичок
  • **
  • Сообщений: 233
  • Репутация: +16/-0
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #199 : Январь 09, 2020, 02:26:11 pm »
Судя по состоянию базы на данный момент, это:
0x1D1 (3b)
0x209 (3b)
0x235 (3b)

Оффлайн daniel_360

  • Прохожий
  • *
  • Сообщений: 83
  • Репутация: +4/-0
    • daniel360465
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #200 : Январь 17, 2020, 08:38:30 pm »
Снова проблема, игра начала тормозить и фризить, походу опять что-то с моделями

:Car
thread 'Car'

:Car_0
if
Player.Defined(0)
jf @Car_0
0209: $ZC1 = random_int_in_ranges 130 236
if and
8038:  not $ZC1 == 136
8038:  not $ZC1 == 155
8038:  not $ZC1 == 160
8038:  not $ZC1 == 162
8038:  not $ZC1 == 176
8038:  not $ZC1 == 177
8038:  not $ZC1 == 182
8038:  not $ZC1 == 183
jf @Car_0
if and
8038:  not $ZC1 == 184
8038:  not $ZC1 == 187
8038:  not $ZC1 == 188
8038:  not $ZC1 == 189
8038:  not $ZC1 == 190
8038:  not $ZC1 == 199
8038:  not $ZC1 == 201
8038:  not $ZC1 == 202
jf @Car_0
if and
8038:  not $ZC1 == 203
8038:  not $ZC1 == 214
8038:  not $ZC1 == 215
8038:  not $ZC1 == 217
8038:  not $ZC1 == 218
8038:  not $ZC1 == 223
8038:  not $ZC1 == 224
8038:  not $ZC1 == 225
jf @Car_0
if and
8038:  not $ZC1 == 227
8038:  not $ZC1 == 232
8038:  not $ZC1 == 233
8038:  not $ZC1 == 234
8038:  not $ZC1 == 235
8038:  not $ZC1 == 171
8038:  not $ZC1 == 194
8038:  not $ZC1 == 195
jf @Car_0
if and
8038:  not $ZC1 == 231
8038:  not $ZC1 == 165
8038:  not $ZC1 == 180
8038:  not $ZC1 == 181
jf @Car_0

:Car_0b
Model.Load($ZC1)
038B: load_requested_models
 
:Car_1
wait 0
if
Player.Defined(0)
jf @Car_3
if
Model.Available($ZC1)
jf @Car_0b
04C4: create_coordinate $cX $cY $cZ from_actor $PLAYER_ACTOR offset 0.0 100.0 0.0
02C1: set $cX $cY $cZ to_car_path_coords_closest_to $cX $cY $cZ
if and
8AE1: not $ZC = random_actor_near_point $cX $cY $cZ in_radius 2.0 find_next 0 pass_deads 0
8AE2: not $ZC = random_vehicle_near_point $cX $cY $cZ in_radius 80.0 find_next 0 pass_wrecked 0
8AE3: not $ZC = random_object_near_point $cX $cY $cZ in_radius 2.0 find_next 0
jf @Car_1
0209: $CARH = random_int 250 1000
0209: $CARD = random_int 0 7
/*not $CARD == 154
not $CARD == 166
not $CARD == 178
not $CARD == 191
not $CARD == 192
not $CARD == 193
not $CARD == 198*/

:Car_2
0208: $ANGLE = random_float 0.0 360.0
00A5: $CARZ = create_car $ZC1 at $cX $cY $cZ
020A: set_car $CARZ door_status_to $CARD
Car.Angle($CARZ) = $ANGLE
Car.Health($CARZ) = $CARH
Car.RemoveReferences($CARZ)
 
:Car_3
Model.Destroy($ZC1)
jump @Car_0

Оффлайн Shagg_E

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 683
  • Репутация: +22/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #201 : Январь 17, 2020, 09:11:48 pm »
Снова проблема, игра начала тормозить и фризить, походу опять что-то с моделями
Куда-то пропал начальный
wait 0сразу после
:Car_0перед
if
В идеале туда лучше пихнуть не wait 0, а wait 5000 или даже wait 10000 - ведь все равно же не нужно, чтобы тачки спамились тоннами.

Оффлайн daniel_360

  • Прохожий
  • *
  • Сообщений: 83
  • Репутация: +4/-0
    • daniel360465
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #202 : Январь 17, 2020, 09:49:38 pm »
Спасибо большое, сделал небольшую задержку

Оффлайн daniel_360

  • Прохожий
  • *
  • Сообщений: 83
  • Репутация: +4/-0
    • daniel360465
    • Просмотр профиля
Re: Помощь с CLEO
« Ответ #203 : Февраль 02, 2020, 02:38:01 pm »
Здравствуйте, как убрать переходы между островами и мостами (SPLASH'ы)?

Оффлайн Shagg_E

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 683
  • Репутация: +22/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Помощь с CLEO
« Ответ #204 : Февраль 02, 2020, 03:08:21 pm »