#4701 07-03-2016 00:47

НикИТОС
Registered: 05-06-2013
Posts: 133
Website

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

Goldfish wrote:
mfisto wrote:

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

нет, скриптов таких точно нет, не подскажите ссылочку на такой скрипт?  smile
а то я уже 2 скрипта таких пересмотрел, нече пока не нашел

Имеется в виду скрипт из оригинала.

Offline

#4702 07-03-2016 01:04

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

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

НикИТОС wrote:

Имеется в виду скрипт из оригинала.

глянул, там юзается 02DD: 5@ = get_random_ped_in_zone 'SAN_AND' with_pedtype_civilian 1 gang 1 criminal/prostitute 1
по сути он как и многие другие опкоды поиска педов получает хендлы найденных актеров,  но опять же они шагают как боты по тротуару и  не сбивается эта задача с них, единственно если заставить подойти к ГГ, то пед уже как бе стоит на месте, но это костыльный вариант  референса =/
самый идеальный пока способ пересоздать педа

Last edited by Goldfish (07-03-2016 01:05)

Offline

#4703 07-03-2016 17:09

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

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

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

Last edited by Goldfish (07-03-2016 17:10)

Offline

#4704 10-03-2016 13:57

Shag
Registered: 29-03-2010
Posts: 147
Website

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

Goldfish wrote:

показывает, что точки расположены посередине дороги, когда машины едут по своим полосам, следовательно для каждой полосы должен быть свой путь? и точки в два ряда, я не один ряд посередине ?

Goldfish wrote:

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

Дело в том, что пути авто действительно проходят посередине дороги, а левая/правая полоса генерируется автоматически. Ширина полосы задается в самих путях. Кроме того, в тех же путях, задается кол-во полос движения(1-2), а также - флаг одностороннего/двустороннего движения. Т.е. минимум - 1 полоса одностороннего движения, максимум - 4 полосы двустороннего движения(по 2 полосы на сторону).

Goldfish wrote:

остановить рандомного педа

В вайсе были опкоды, которые прекрасно с этим справлялись

011C: actor $ololo clear_objective
0579: stop_actor $ololo

В СА их нет. Значит, разрабы сделали более продвинутые версии этих опкодов, так что остается только искать...

Можешь также попробовать "сбить" поведение педа, задав ему "пустое" действие: например - пусть пойдет на свои же координаты(либо - на пару сантиметров назад) - он просто остановится. Либо какую-нибудь пустую анимку примени. Не уверен за СА - в Вайсе работало.

Goldfish wrote:

Как вычислить край тротуара пешеходной дороги, примыкающий к автомобильной дороге, от случайной точки на тротуаре?

Goldfish wrote:

а как узнать "статус" действия педа, например: идет по тротуару или переходит дорогу?

Если тебе надо задетектить момент, когда пед сходит с тротуара на дорогу, то проверяй уровень земли

02CE: $GROUNDZ = ground_z $X $Y $Z

под педом, а также - под ближайшим автомобильным путем, и, если они совпадут - пед идет по дороге.

Last edited by Shag (10-03-2016 14:00)

Offline

#4705 12-04-2016 00:42

trashmas
Registered: 12-04-2016
Posts: 41

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

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


create_thread @N1 
create_thread @N2 
create_thread @N3 
create_thread @P1 
create_thread @P2 
end_thread 

:N1
thread 'N1' 
wait 200 
if 
00F8:   player $2 stopped 1 369.444 -484.255 12.836 radius 1.0 1.0 1.5 
jf @N1 
054C: use_GXT_table 'INTRO' 
00BC: text_highpriority 'INT1_B' 5000 ms 1  // Didn't think they'd ever let him out.
03BD: destroy_sphere $769 
end_thread 

:N2
thread 'N2' 
wait 200 
if 
00F8:   player $2 stopped 1 367.767 -471.821 12.836 radius 1.0 1.0 1.5 
jf @N2 
054C: use_GXT_table 'INTRO' 
00BC: text_highpriority 'INT1_B' 5000 ms 1  // Didn't think they'd ever let him out.
03BD: destroy_sphere $770 
end_thread 

:N3
thread 'N3' 
wait 200 
if 
00F8:   player $2 stopped 1 360.833 -487.561 12.836 radius 1.0 1.0 1.5 
jf @N3 
054C: use_GXT_table 'INTRO' 
00BC: text_highpriority 'INT1_B' 5000 ms 1  // Didn't think they'd ever let him out.
03BD: destroy_sphere $771 
$767 = 1 // integer values 
jump @K4_80 

:P1
thread 'P1' 
wait 200 
if 
00F8:   player $2 stopped 1 369.002 -476.872 12.836 radius 1.0 1.0 1.5 
jf @P1 
054C: use_GXT_table 'INTRO' 
00BC: text_highpriority 'INT1_A' 5000 ms 1  // Tommy Vercetti...Huh! shit.
01B1: give_player $2 weapon 18 ammo 6 // Load the weapon model before using this 
03BD: destroy_sphere $772 
end_thread 

:P2
thread 'P2' 
wait 200 
if 
00F8:   player $2 stopped 1 377.34 -473.071 12.836 radius 1.0 1.0 1.5 
jf @P2 
054C: use_GXT_table 'INTRO' 
00BC: text_highpriority 'INT1_A1' 5000 ms 1  // pay him a little visit, right?
if 
0490:   player $2 has_weapon 18 
jf @P2_122 
01B1: give_player $2 weapon 18 ammo 26 // Load the weapon model before using this 
03BD: destroy_sphere $773 
end_thread 

:P2_122
wait 7000 
jump @P2 

все это находится прямо в блоке миссии.

Last edited by trashmas (12-04-2016 00:45)

Offline

#4706 13-04-2016 15:55

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

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

Поток не может находиться внутри миссии. Они могут в ней запускаться, но код должен находиться в секции майн.

Offline

#4707 13-04-2016 17:40

trashmas
Registered: 12-04-2016
Posts: 41

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

Seemann wrote:

Поток не может находиться внутри миссии. Они могут в ней запускаться, но код должен находиться в секции майн.

но такое есть даже в оригинальных main'ах, почему там работает?
и еще кое-что, подскажите пожалуйста опкод что бы тело мертвого педа исчезало .
и еще кое-что, за что отвечает опкод:

0243: set_actor $ST1pedCL1 ped_stats_to 16 

в оригинальной мейне встречался со значениями 11, 30, 39



и еще кое-что

в ходе создании простенькой миссии столкнулся с пичалькой:
если много раз спавнить педов (create actor) то приблизительно через 30 спаунов они начинают глючить и новые спавнятся какими то колобками из текстур. это можно как то исправить? как то досадно забрасывать из-за неприятного бага sad

8OpbHwS.jpg

Last edited by trashmas (13-04-2016 21:50)

Offline

#4708 13-04-2016 22:06

wmysterio
Registered: 04-03-2011
Posts: 215
Website

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

trashmas wrote:

но такое есть даже в оригинальных main'ах, почему там работает?

В оригинальном main.scm нет такого и в помине, чтобы потоки писались внутри блоков миссий. В миссиях можно только запускать потоки, как было сказано выше. Наверное, вы называете обычные потоки "миссиями". В оригинале наблюдается такое построение кода, но точно не в коде миссий. Во всяком случаи я такого не нашел.

Offline

#4709 13-04-2016 23:21

trashmas
Registered: 12-04-2016
Posts: 41

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

wmysterio wrote:
trashmas wrote:

но такое есть даже в оригинальных main'ах, почему там работает?

В оригинальном main.scm нет такого и в помине, чтобы потоки писались внутри блоков миссий. В миссиях можно только запускать потоки, как было сказано выше. Наверное, вы называете обычные потоки "миссиями". В оригинале наблюдается такое построение кода, но точно не в коде миссий. Во всяком случаи я такого не нашел.

перепутал оригинал с другим мейном. вот main.scm из мода Long Night. см. строку 07333 - это все в блоке миссии.
https://cloud.mail.ru/public/XzQv/QLSxVvhmU

Last edited by trashmas (13-04-2016 23:22)

Offline

#4710 14-04-2016 15:52

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

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

Технически потоки можно располагать только в пределах секции MAIN. Ее максимальный размер для VC составляет 225512 байтов, для SA - 200000. Если весь код потока находится по коду файла не дальше этого предела, то все будет работать, даже если он находится внутри миссии. Посмотреть адреса, по которым располагается поток, можно если декомпилировать файл с включенной опцией CODE_OFFSETS. Для мейна лонг найт имеем следующее:

{70027} 004F: create_thread @N1  
{70035} 004F: create_thread @N2  
{70043} 004F: create_thread @N3  
{70051} 004F: create_thread @P1  
{70059} 004F: create_thread @P2  
{70067} 004F: create_thread @C  
{70075} 004F: create_thread @C_196  
{70083} 004F: create_thread @C_258  
{70091} 004F: create_thread @K4  
{70099} 004E: end_thread 

:N1
{70101} 03A4: name_thread 'N1' 

Но это на самом деле хак, и так лучше не делать.

Offline

#4711 01-05-2016 14:31

trashmas
Registered: 12-04-2016
Posts: 41

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

Подскажите пожалуйста, как запретить педам дропать оружие после смерти в VC.

Offline

#4712 01-05-2016 17:22

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

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

В Вайсе нет такой возможности по крайней мере стандартной, в Сашке это реализовано за счет структур педов, там есть такой флаг, и когда обрабатывается событие - создавать пикап или нет на усмотрение, попадает этот флаг. В Вайсе такого флага нет, тут надо вручную за счет плагина внедрять эту фишку, по сути надо написать asi плагин, который изменит функцию создания пикапа после смерти педа, а также добавит для структуры дополнительный флаг. Но кто будет это делать, вот в чем вопрос.


I know everything and nothing...

Offline

#4713 01-05-2016 18:24

Shag
Registered: 29-03-2010
Posts: 147
Website

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

Если дать педу изначально 0 патронов - пед не будет дропать при смерти оружие(на его стрельбу это никак не повлияет). Хотя, потом у трупа в руке оружие тоже исчезнет, а не будет оставаться, как у педов в гта3, когда им руки отстреливаешь.
Короче, если проблема была в запрете на создание пикапа оружия - это тебе поможет. Если - просто в эстетике - нет.

Last edited by Shag (01-05-2016 18:25)

Offline

#4714 08-07-2016 20:26

wmysterio
Registered: 04-03-2011
Posts: 215
Website

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

Есть ли возможность через скрипт вырезать часть строки, например такое:

0@v = "demo.txt"
xxxx: 0@v = from_string 0@v search ".txt" and_replace_to ""

Что-бы со строки "demo.txt" получить "demo".

В принципе какими методами это сделать мне не важно, только чтобы работало. Можно даже функцию в С++ написать и ткнуть её в DLL. Я могу только передать и получить строку с DLL:

extern "C" __declspec(dllexport) char *NormalizeName( char *string ) {
	//string[0] = 'a';
	return( string );
}

Но вот любая попытка внести изменения в этот код заканчивалось вылетом игры sad

Last edited by wmysterio (10-07-2016 13:07)

Offline

#4715 09-07-2016 01:54

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

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

в SA есть стандартные функи для строк и файлов типо fileopen и strlen, адреса ток подзабыл какие

Offline

#4716 09-07-2016 20:46

wmysterio
Registered: 04-03-2011
Posts: 215
Website

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

Goldfish wrote:

в SA есть стандартные функи для строк и файлов типо fileopen и strlen, адреса ток подзабыл какие

Со строками из стандартной  библиотеки я не нашел методов для замены части строки на другую строку. Пока в голове только костыльные методы, к которым я хотел бы вернуться в последнюю очередь )

Offline

#4717 10-07-2016 13:39

wmysterio
Registered: 04-03-2011
Posts: 215
Website

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

Если нужно только убрать расширение (".txt"), то можно так

Спасибо! Спасибо! Спасибо! Не знаю, что это за колдовство, но поставленная задача решена!

Last edited by wmysterio (10-07-2016 13:40)

Offline

#4718 11-07-2016 21:16

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

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

магия на уровне битов  cool

Offline

#4719 11-07-2016 21:17

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

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

Не знает ктонить почему magic TXD не работает на вин XP ?   sad

Offline

#4720 14-07-2016 19:25

DromeoStalker
Registered: 05-02-2016
Posts: 18

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

Как называется язык программирования, на котором мы пишем в SB?

Offline

#4721 14-07-2016 21:20

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

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

Я думаю, что ближайшей аналогией будет BASIC.
https://ru.wikipedia.org/wiki/%D0%91%D0 … 0%B8%D0%BA

Offline

#4722 14-07-2016 22:33

wmysterio
Registered: 04-03-2011
Posts: 215
Website

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

DromeoStalker wrote:

Как называется язык программирования, на котором мы пишем в SB?

Никак. Мы же не пишем на SCM отдельные приложения ) Это скриптовый язык, сделанный специально для GTA. По-синтаксису разве что ассемблер немного напоминает и не более того.

Seemann, посмотри мой пост, касающийся СБ.

Offline

#4723 15-07-2016 18:28

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

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

недавна с бэйсиком по ближе познакомился  crazy

Offline

#4724 23-07-2016 14:53

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

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

Подскажите пожалуйста смещение в структуре авто для перехода на handling-структуру в GTA3?

05E7: 1@ = car 0@ struct
1@ += ?????
05E0: 1@ = read_memory 1@ size 4 virtual_protect 0 // получили указатель на handling-структуру

Offline

#4725 23-07-2016 15:13

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

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

Попробуй 0x128


I know everything and nothing...

Offline

Board footer

Powered by FluxBB