#826 06-03-2009 16:48

KOLLEGA
Registered: 10-01-2009
Posts: 52

Re: Один вопрос

Это скрипт для вайсы.
Сущность глюкка заключается в следующем:  при загрузке игры Томми появляется в аэропорте прицепленный к хвосту самолёта, и вместе с ним улетает к облакам=)
при этом слезть с него нельзя, зато работает радио:rolleyes:
через несколько минут полёта игра вылетает.
@Seemann -

В самом скрипте куча ошибок.

Если не секрет, где? Скрипт-то работает

З.Ы. сорри за оффтоп, но как можно выложить скрин?

Last edited by KOLLEGA (06-03-2009 16:49)


Поправьте меня если я ошибаюсь
только вежливо :)

Offline

#827 06-03-2009 19:11

Callback
Registered: 04-03-2009
Posts: 4

Re: Один вопрос

2 Seemann
Огромное спасибо за ответы.

Насчет экстры, скорее всего да, хендл можно сконвертировать в указатель, а по указателю прочитать нужное поле в структуре машины, где хранится значение экстры (под экстрой ты понимаешь то, что используется в опкоде 0506?).

Да, именно это (так это по-моделлерски именуется smile). А вот "сконвертировать хэндл в указатель..." Можно пример, если не трудно?

Offline

#828 06-03-2009 20:42

WinuX
Registered: 06-03-2009
Posts: 138

Re: Один вопрос

написал я скрипт, делать он должен небольшую работу - проверять, не меньше 100 ед. здоровья у игрока, и если меньше, то добавлять до тех пор, пока оно не достигнет ста.

{$CLEO .cs} 

0000: NOP
:Proverka_plus
wait 150
0226: $HEALTH = actor $PLAYER_ACTOR health
if $HEALTH < 100
then
wait 10 
jump @Health_plus
end    

:Health_plus
wait 10
$UP = 15
0A8E: $HEALTH_UP = $HEALTH + $UP
wait 10
0223: set_actor $PLAYER_ACTOR health_to $HEALTH_UP   
wait 100
jump @Proverka_plus

не работает конечно. Вернее работает, но как-то странно - добавляет здоровье не до сотни, а до максимума...

Offline

#829 06-03-2009 21:34

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Ошибка твоя вот в чем: если условие после IF истинно, то далее выполняются команды, написанные после THEN. Если же условие ложно, то все, что находится между THEN и END пропускается. В итоге, независимо от того, сколько у игрока здоровья, оно все время продолжает пополняться до максимума (в любом случае выполнение алгоритма продолжается и осуществляется переход на метку :Health_plus. Так что в твоем варианте надо заменить
[c]then
wait 10
jump @Health_plus
end [/c]
на [c] jf @Proverka_plus[/c]
Еще: ты прибавляешь к здоровью по 15 единиц. А если уровень здоровья больше 85? Если делать так, то прибавлять надо по 1.
Но проверять здоровье игрока необязательно, можно и так все время присваивать ему значение 100. Так что легче сделать так:
[c]{$CLEO .cs}
wait 0
while true
wait 0
0223: set_actor $PLAYER_ACTOR health_to 100
end
[/c]
И напоследок, не используй в КЛЕО глобальные переменные. Есть исключения, но их немного.

Last edited by Den_spb (06-03-2009 21:44)

Offline

#830 06-03-2009 21:54

WinuX
Registered: 06-03-2009
Posts: 138

Re: Один вопрос

@#$, сложно sad это тут не какой-то jscript...
блин фтопку автоприбавление здоровья, я за деньги попробую сделать smile
кстати, как прочесть значение статичтики? в справке только изменение...

Last edited by WinuX (06-03-2009 21:56)

Offline

#831 06-03-2009 22:12

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Так я тебе написал рабочий скрипт. Да и свой вариант можешь подправить, хотя он более громоздкий.

Offline

#832 06-03-2009 22:47

Alien
Registered: 12-10-2008
Posts: 564

Re: Один вопрос

WinuX wrote:

кстати, как прочесть значение статистики? в справке только изменение...

Можно попробовать через память
Некоторые адреса можно найти тут: gtamodding.ru
Вот выдержка.

Статус
    *  0xB793D4 - [float] Фигура
    * 0xB793D8 - [float] Выносливость
    * 0xB793DC - [float] Мышцы
    * 0xB793E0 - [float] Здоровье
    * 0xB793E4 - [float] Сексуальность
    * 0xB79496 - [float] Pistol
    * 0xB79498 - [float] Silenced pistol
    * 0xB7949C - [float] Desert eagle
    * 0xB794A0 - [float] Shotgun
    * 0xB794A4 - [float] Sawn-off Shotgun
    * 0xB794A8 - [float] Combat Shotgun
    * 0xB794AC - [float] Machine Pistol
    * 0xB794B0 - [float] SMG
    * 0xB794B4 - [float] AK47
    * 0xB794B8 - [float] M4

Так, чтобы считать стат навыка М4, пишем

0A8D: 0@ = read_memory 0xB794B8 size 4 virtual_protect 0

В переменной 0@ оказывается то, что тебе надо.
Но там не все адреса статистики есть.

Offline

#833 07-03-2009 03:45

GTASA
Registered: 13-09-2008
Posts: 476

Re: Один вопрос

Скажите как можно убрать:
Войну между бандами (когда убиваем врагов, война не провоцируется);
Территории банд на радаре и карте (Только территории! А сами пусть остаются там, где были);

Хотелось бы, чтобы в мультиплеере также ходили педы, ездили тачки, как можно это реализовать?

Last edited by GTASA (07-03-2009 04:30)

Offline

#834 07-03-2009 08:57

GTASA
Registered: 13-09-2008
Posts: 476

Re: Один вопрос

Вот еще, помогите понять в чем соль: Я хочу сделать черного пьяницей, но ходить он как пьяница почему-то не хочет (!!!!!!!!!)

// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007

{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
wait 10 

:NONAME_4
wait 10 
if 
0AB0:   key_pressed 50 
else_jump @NONAME_4
0245: set_actor $PLAYER_ACTOR walk_style_to "DRUNKMAN"
Player.SetDrunkVisuals($PLAYER_CHAR, 700)
wait 10 
jump @NONAME_4

Offline

#835 07-03-2009 10:53

Gyr
From: Серпухов
Registered: 03-02-2009
Posts: 246
Website

Re: Один вопрос

Проблема в то, что применять всякие анимации к PLAYER'y нельзя, т.к. при управлении используются другие анимации. Опкод 0245: можно использовать только к актерам, не управляемым игроком в данный момент. он будет работать с CJ только так

0245: set_actor $PLAYER_ACTOR walk_style_to "DRUNKMAN"
Actor.go_to($PLAYER_ACTOR, $x, $y, $z)

P.S.: Сорри за Actor.go_to($PLAYER_ACTOR, $x, $y, $z), т.к писал с другого компа ( там не билдера), но думаю суть ты понял.


Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!

Offline

#836 07-03-2009 10:53

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Один вопрос

@WinuX - вот все опкоды, которые работают со статистикой

042E: downdate_integer_stat 212 to 448@ // same as 0582
0582: downdate_integer_stat 175@($RACE_INDEX,30i) to 450@ // same as 042E

0623: add 1 to_integer_stat 214
0624: add 40.0 to_float_stat 160

0625: decrease_integer_stat 184 by 1
0626: decrease_float_stat 21 by 8.0

0627: update_integer_stat 215 to $1922
0628: add 17@ to_float_stat 2

0629: change_integer_stat 181 to 0
062A: change_float_stat 165 to 800.0

0652: $STAT_UNLOCKED_CITIES_NUMBER = integer_stat 181
0653: $STAT_FAT = float_stat 21

0A10: increase_integer_stat 161 by 1
0A1F: increase_float_stat 24 by 196@

058C: $STAT_PERCENTAGE_COMPLETED = percentage_completed
08E1: $STAT_TAGS_SPRAYED = total_tags_sprayed

нетрудно найти среди них те, которые отвечают за чтение значения того или иного стата.

@GTASA -

Хотелось бы, чтобы в мультиплеере также ходили педы, ездили тачки, как можно это реализовать?

нужно спрашивать у разработчиков мультиплеера

Скажите как можно убрать:
Войну между бандами

попробуй поискать в Opcode Search Tool по слову gang_war

@KOLLEGA -

Если не секрет, где? Скрипт-то работает

ну например, ты создаешь парковку для машины (car_generator) и пытаешься посадить в нее игрока. Фишка в том, что парковка - это необязательно уже созданная машина. Чаще всего ее там и нет. Более того, переменная, которая используется в опкодах 014B/014C, - это не машина (хендл машины), а ID парковки, а это, как говорят в Одессе, две большие разницы.

сорри за оффтоп, но как можно выложить скрин?

В окне New Reply в поле "Image Upload" выбери "Show 1 Upload Slots", через кнопку Обзор выбери картинку и пиши ответ.

@Callback -

А вот "сконвертировать хэндл в указатель..." Можно пример, если не трудно?

Как-то так:

0A8D: 1@ = read_memory 0x00B74494 size 4 virtual_protect 0 // читаем указатель на массив машин
0AA8: call_function_method 0x004048E0 struct 1@ num_params 1 pop 0 0@ 1@ // вызываем функцию, которая конвертирует хендл в указатель

0@ - хендл машины
1@ - результат (указатель на структуру машины)

Last edited by Seemann (07-03-2009 11:09)

Offline

#837 07-03-2009 10:55

GTASA
Registered: 13-09-2008
Posts: 476

Re: Один вопрос

Ну не, это не подходит. Ладно, а что насчет других моих вопросов (пост #833)?

Offline

#838 07-03-2009 11:02

Gyr
From: Серпухов
Registered: 03-02-2009
Posts: 246
Website

Re: Один вопрос

Скажите как можно убрать:

Войну между бандами (когда убиваем врагов, война не провоцируется)

Через SCM не знаю, редактируй PED.dat

Территории банд на радаре и карте (Только территории! А сами пусть остаются там, где были)

Помниш миссию в Глен Парке? Открой её и там посмотри.

Хотелось бы, чтобы в мультиплеере также ходили педы, ездили тачки, как можно это реализовать?

Нельзя. Весь транспорт контролируется сервером, а про педов вообще молчу.


Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!

Offline

#839 07-03-2009 11:09

GTASA
Registered: 13-09-2008
Posts: 476

Re: Один вопрос

Нет, в мультиплеере то контролируется, но тут другое дело. Есть же скрипт чтобы отключать, значит должен быть и тот, что включает.
Так, у меня еще два вопросика: Как сделать, чтобы на расстоянии от Карла появлялись случайные люди (вобще случайные, даже не по своей зоне).
Как сделать скольжение тачки как при дожде?

Offline

#840 07-03-2009 11:17

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Один вопрос

@GTASA -

Есть же скрипт чтобы отключать, значит должен быть и тот, что включает.

я уверен на 100%, что прохожие и траффик в мультиплеере отключены не просто так. Вместо них используются другие игроки и их машины. Т.е. если игра начнет сама спаунить прохожих и машины, вероятно сервер воспримет их как игроков и может заглючить. Плюс, массив актеров и машин в игре ограничен, так что если начать спаунить лишних, не останется места для собственно игроков. Примерно так.

Offline

#841 07-03-2009 11:17

Gyr
From: Серпухов
Registered: 03-02-2009
Posts: 246
Website

Re: Один вопрос

Создаёшь рядом с актером координаты 04C4:

store_coords_to $x $y $z from_actor $PLAYER_ACTOR with_offset 1.0 3.0 1.0

Потом создаёшь актера используя -1 вместо модели.

009A: 2@ = create_actor_pedtype 4 model -1 at $x $y $z

или

0376: 18@ = create_random_actor_at  $x $y $z

Last edited by Gyr (07-03-2009 11:27)


Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!

Offline

#842 07-03-2009 12:01

GTASA
Registered: 13-09-2008
Posts: 476

Re: Один вопрос

А насчет скольжения?
Seemann, в сампе и в сингле тачи чуть-чуть разные. Если, например, создать тачку клео скриптом в мудьтиплеере, то в нее сесть не получится, там как бы другой формат.
А можно заставить этих случайных актеров, которые создаются у меня рядом, ходить по стандартным путям?

Offline

#843 07-03-2009 12:53

Gyr
From: Серпухов
Registered: 03-02-2009
Posts: 246
Website

Re: Один вопрос

А можно заставить этих случайных актеров, которые создаются у меня рядом, ходить по стандартным путям?

Попробуй это:

0817: assign_actor 38@ to_animation_path_with_walk_mode 4 route_mode 3

или просто удали хэнд актера

009B: destroy_actor 18@

P.S.:  Насчет скольжения ничего сказать не могу.

Last edited by Gyr (07-03-2009 12:54)


Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!

Offline

#844 07-03-2009 16:39

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Простой вопрос: если требуется определить число случайным образом, в интервале скажем от 1 до 5 включительно, то надо писать так:

0209: 0@ = random_int_in_ranges 0 6

или так:

0209: 0@ = random_int_in_ranges 1 5

Видел несколько исходников, везде по-разному.

Offline

#845 07-03-2009 17:02

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Один вопрос

@Den_spb -

0209: 0@ = random_int_in_ranges 1 6

smile

в 0209 выбор числа происходит в диапазоне на единицу меньше второго параметра

Offline

#846 07-03-2009 18:16

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Благодарю.

Offline

#847 08-03-2009 03:01

GTASA
Registered: 13-09-2008
Posts: 476

Re: Один вопрос

Спасибо, народ, но как скольжение делать?
И где можно скачать Opcode Search Tool?

Offline

#848 08-03-2009 10:02

KOLLEGA
Registered: 10-01-2009
Posts: 52

Re: Один вопрос

где можно скачать Opcode Search Tool

здесь
Дык оно уже есть в SB?


Поправьте меня если я ошибаюсь
только вежливо :)

Offline

#849 08-03-2009 12:00

WinuX
Registered: 06-03-2009
Posts: 138

Re: Один вопрос

что заюзать, чтобы получить рандомное число от -100 до 0? p.s. моск не юзается wow

Offline

#850 08-03-2009 12:06

GTASA
Registered: 13-09-2008
Posts: 476

Re: Один вопрос

Как дать проверку на имение какого либо оружия?
Можно ли увеличить радар (не карту в радаре, а именно обводку вокруг него, чтобы обзор увеличить)?

Offline

Board footer

Powered by FluxBB