You are not logged in.
Pages: 1
Здравствуйте. Возник у меня следующий вопрос.
Вот есть в ГТАшном скрипте миссия ТАКСИ. Но она доступна только для двух машин (taxi, cabbie). Допустим я хочу сделать чтобы и другие машины в этом учавствовали. Как написать на клео такой скрипт, чтобы он не конфликтовал с основным? Например может быть по другой кнопке активировать миссию? и вообще, может где-то есть подобный скрипт?
Offline
Оно кажеться идёт с ехешника и для мисии береться только 2 ID такси-тачек, хотя...
Вот коечто: (в потоке R3)
if or
Actor.DrivingTaxiVehicle($PLAYER_ACTOR)
Actor.DrivingVehicleType($PLAYER_ACTOR, #AMBULAN)
Actor.DrivingVehicleType($PLAYER_ACTOR, #FIRETRUK)
Actor.DrivingVehicleType($PLAYER_ACTOR, #HUNTER)
Actor.DrivingVehicleType($PLAYER_ACTOR, #BOXBURG)
...
start_mission 121 // Taxi-Driver Sub-Mission
$ONMISSION_TAXI = 1
Возможно в файле VEHICLES.IDE написать нужной машине клас taxi и получиться
-=YariK=-
http://my-mods.org.ua/
Offline
Опкод 0602 совершенно четко проверяет ID модели машины игрока на равенство числам 420 и 438. Т.е. добавить новую такси не так-то просто. Нужно менять условие в R3, чтобы кроме такси подходили другие машины.
00D6: if 0602: actor $PLAYER_ACTOR driving_taxi 004D: jump_if_false @R3_673
на
00D6: if or 0602: actor $PLAYER_ACTOR driving_taxi 00DD: actor $PLAYER_ACTOR driving_car_with_model #PCJ600 004D: jump_if_false @R3_673
тогда можно будет возить пассажиров и на мотике.
Кроме этого условия по аналогии надо поменять еще одно, чуть пониже в скрипте, и 2 условия в самой миссии.
Offline
Значит 0602 берет ИД с ехе а не VEHICLES.IDE ?
-=YariK=-
http://my-mods.org.ua/
Offline
_opcode_0602: // читаем параметр опкода (актера) push 1 ; ParamsNumber mov ecx, esi call CollectNumberParams // получаем адрес актера mov eax, dword ptr ds:dwOpcodeParameter1 mov ecx, ds:CPedsPool push eax ; Handle call GetActorStruct ; Handle -> Struct // проверяем ведет ли машину mov ecx, [eax+CPed.isDriving] test ch, 1 mov [esp+234h+ConditionResult], 0 jz short loc_4912E1 // читаем адрес машины mov eax, [eax+CPed.VehicleStruct] test eax, eax jz short loc_4912E1 // читаем номер модели mov ax, [eax+CVehicleUnit.scriptableUnit.unit.modelID] // СРАВНИВАЕМ С 420 cmp ax, 420 jz short loc_4912DC // СРАВНИВАЕМ С 438 cmp ax, 438 jnz short loc_4912E1 // ЕСЛИ ОДНО ИЗ УСЛОВИЕ TRUE = > 0602 TRUE loc_4912DC: mov [esp+234h+ConditionResult], 1 // ИНАЧЕ УСЛОВИЕ = FALSE loc_4912E1: mov ecx, dword ptr [esp+234h+ConditionResult] push ecx ; ConditionResult mov ecx, esi // записываем результат условия call SetConditionResult ; skip 004d if true xor al, al // выходим jmp _case_opcode_end
как видишь, никакого vehicles.ide. Флаг такси оттуда возможно используется где-то еще, но не в 0602
Last edited by Seemann (03-06-2008 09:57)
Offline
Ну да, только 2 виды такси использует. Может тогда флаг нигде и не используется
-=YariK=-
http://my-mods.org.ua/
Offline
так это нужно править только оригинальный скрипт?
или может всё-таки можно это через cleo реализовать?
Не обязательно точь-в точь - то есть может написать на клео код, который уже другие машины будет брать и выполнять «свои» миссии? (задать кооринаты и названия) и время там.......
подскажите плиз
Offline
Без правки кода миссии ты все равно не сможешь работать таксистом не на такси, даже если ты эту миссию запустишь, скажем, из cleo-скрипта. То же касается остальных миссий.
Offline
Seemann, тогда помогите плиз с первичным кодом чтобы на клео написать новый скрипт для других машин.
Чтобы я смог дальше всё развить (а в дальнейшем поделиться со всеме) мне требуется небольшая помощь. Исходный скрипт в виде:
проверка на вход в машины ХХХ и ХХХ если в них сидит игрок и нажимает на ХХХ кнопку, то запускается миссия задаётся массив из 5 точек (мест) и выбирается одна из них в радиусе ХХХ метров появляется случайный прохожий с маркером (его нужно взять, тогда появится маркер на радаре с одной из тех точек выше) миссия заканчивается если: вышел из машины или взорвался или доехал до точки чтобы дальше возить - снова нужно нажать на кнопку ХХХ
если есть какие-нибудь заготовки похожие (можно по частям) - былб бы рад
Offline
AlphaOmega читай пост №3 там ВСЁ написано!!!
Seemann но ведь можна код такси мишн с мейна перенести в клео, только с заменой
0602: actor $PLAYER_ACTOR driving_taxi
на нужные модели
Как вариант вообще там заменить 0602: actor $PLAYER_ACTOR driving_taxi на Актор_Драйвинг и можна будет возить на любом транспорте
Last edited by Yarik (04-06-2008 15:53)
-=YariK=-
http://my-mods.org.ua/
Offline
AlphaOmega читай пост №3 там ВСЁ написано!!!
<...>
Как вариант вообще там заменить 0602: actor $PLAYER_ACTOR driving_taxi на Актор_Драйвинг и можна будет возить на любом транспорте
Это понятно, но для этого нужно кодить в главном скрипте, а мне необходимо оставить его нетронутым и всё написать на cleo...
Offline
2Yarik, просто перенесити миссию в клео - нельзя.
Offline
просто перенесити миссию в клео - нельзя.
почему же? я в свое время легко перенес миссию CPRACE (основа всех гонок в игре) в клео. И создал на ее базе свою гонку для Alien City, yelmi видел, не даст соврать.
Offline
легко перенес миссию CPRACE
копипастом?
[large]Добавленно.[/large]
аа. Ну тогда ясно.
Last edited by flashTrash (04-06-2008 20:35)
Offline
flashTrash конечно не простым "копипастом" - а с соответствующими правками
-=YariK=-
http://my-mods.org.ua/
Offline
Нет, на самом деле почти копипастом. Я только заменил там один набор координат на свой и сохранил как .cm файл. После этого осталось только написать .cs-триггер, который запускал бы миссию в нужный момент (start_custom_mission).
Offline
Ну я о том что надо еще взять кусок потока R3 а не только скопировать TAXIODD
-=YariK=-
http://my-mods.org.ua/
Offline
ну значит будем писать с нуля...
прошу привести фрагменты кодов на следующие события (будем по-шагово делать):
* создать в радиусе ХХ человека (случайного) с маркером
** если подъехать к ниму - он садится в машину
** если отменить миссию - исчезает маркер, а не сам человек (то есть без kill/release/unload/remove)
Offline
Offline
AlphaOmega: лучше копипастом с оригинала
Не выходит. Копилятор брыкается на строку
0006: 49@ = 0 ;; integer values
говорит что локальная переменная 49 вне допустимых границ и макс. значение -33@
может поможешь?
копипастом сделай и откомпиль скрипт таксимода на кнопку, например 0х33 (цифра 3) и на тачку STRETCH... пилз... я пока тоже попробую помудрить...
Offline
Pages: 1