#2451 26-08-2010 06:31

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

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

Посмотрев то, что исследовал листенер в gta_dll, нашёл следующее:

CRwCamera * (*RwCameraStreamRead)(CRwStream *) = (CRwCamera *(__cdecl *)(CRwStream *))0x808DE0;
void (*RwCameraDestroy)(CRwCamera *) = (void (__cdecl *)(CRwCamera *))0x7EE4B0;

Значит ли это, что можно фактически создать ещё одну камеру и прицепить её, допустим, к педу/машине? Если да, то как такое можно реализовать?

Offline

#2452 26-08-2010 08:34

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

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

создать-то можно, но изображение с неё куда выводить будешь?? нужно будет ещё однин framebuffer на экране создавать о_О


GIMS developer

Offline

#2453 26-08-2010 09:26

listener
From: Vice City
Registered: 09-11-2006
Posts: 616
Website

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

Выводить изображения с камеры можно в текстуру (так сделаны зеркала и камеры наблюдения).

Стоит заметить, что данная функция используется при чтении clump - т.е. созданная камера может включаться в любую модель (правда, я с ходу не скажу, как это используется).

Offline

#2454 28-08-2010 12:12

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

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

Ну вот. Я посмотрел ещё немного исходников по этой тематике, это правда что у камеры ещё есть, некая, Entity target? Можно об этом по подробней?

UPDATE:
Каким образом можно узнать, что target entity у камеры - опр. машина?
Я нашёл старт блока CCamera, далее, нашёл оффсет к ней 958 байт, который, якобы, отвечает за target entity. Я правильно делаю, либо в корни не верно?

Offline

#2455 30-08-2010 17:46

comegetsome
Registered: 30-08-2010
Posts: 3

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

Всем доброго дня/ночи, прошу помощи, долго уже мучаюс=)
(лирическое отступление:сразу скажу,что я далеко не гений програмирования, да и мой вопрос уровня новичка)
никак не могу понять как запускать возможность взятия 2ой мисси после выполнения 1ой.Что у меня получается: 1ямиссия запускается, я её прохожу, появляется маркер и метка на радаре, где нужно брать миссию 2, но когда я становлюсь на него ничего не происходит(учился по хелпу санни билдера)
так же хотелось бы узнать, что означает
fading 
00BE: text_clear_all
03E6: remove_text_box
(в особенност fading), а так же, если можно, поподробнее узнать(в мануале я чёто недопонял=)), как собственно делать эти блоки миссий(т.е. сюжетную линию, можно сказать)
вот код(на основе stripped.txt):

// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 23.02.2007
DEFINE OBJECTS 1
DEFINE OBJECT SANNY BUILDER v. 2.99f  

DEFINE MISSIONS 2
DEFINE MISSION 0 AT @MISSION           // Initial 1
DEFINE MISSION 1 AT @MISSION2
DEFINE EXTERNAL_SCRIPTS 0 // Use -1 in order not to compile AAA script

DEFINE UNKNOWN_EMPTY_SEGMENT 0

DEFINE UNKNOWN_THREADS_MEMORY 0

{$VERSION 3.1.0020}

//-------------MAIN---------------
thread 'MAIN' 
fade 0 0 
01F0: set_max_wanted_level_to 6 
030D: set_total_mission_points_to 187
set_wb_check_to 0 
00C0: set_current_time_hours_to 8 minutes_to 0 
04E4: unknown_refresh_game_renderer_at 2488.56 -1666.84 
Camera.SetAtPos(2488.56, -1666.84, 13.38)
$PLAYER_CHAR = Player.Create(#NULL, 2473.376, -1669.84, 13.38)
$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)
07AF: $PLAYER_GROUP = player $PLAYER_CHAR group 
Camera.SetBehindPlayer
set_weather 0 
09BA: show_entered_zone_name 0 
wait 0 
Player.SetClothes($PLAYER_CHAR, "PLAYER_FACE", "HEAD", Head)
Player.SetClothes($PLAYER_CHAR, "JEANSDENIM", "JEANS", Legs)
Player.SetClothes($PLAYER_CHAR, "SNEAKERBINCBLK", "SNEAKER", Shoes)
Player.SetClothes($PLAYER_CHAR, "VEST", "VEST", Torso)
Player.Build($PLAYER_CHAR)
Player.CanMove($PLAYER_CHAR) = True
$NEW_TOTAL_PASSED_MISSIONS = 0 
fade 1 0 
select_interior 0 
0629: change_integer_stat 181 to 4 
016C: restart_if_wasted_at 2027.77 -1420.52 15.99 angle 137.0 town_number 0 
016D: restart_if_busted_at 1550.68 -1675.49 14.51 angle 90.0 town_number 0 
0180: set_on_mission_flag_to $ONMISSION // Note: your missions have to use the variable defined here 
03E6: remove_text_box 
//create_thread @START 
:MAIN_49 //297
 if 
   fading 
 jf @MAIN_50 
wait 0 ms 
00BE: text_clear_all 
03E6: remove_text_box 
jump @MAIN_49 

:MAIN_50        
wait 0 ms
start_mission MISSION //Старт миссии
///end_thread
end_thread 

 :STARTER
thread 'STARTER' 

//   :STARTER
//thread 'STARTER' 

:STARTER_11
wait 250 
if 
  $NEW_TOTAL_PASSED_MISSIONS == 2 
// Количество сюжетных миссий у нас равно 2
// если  $NEW_TOTAL_PASSED_MISSIONS == 2, то закрываем поток   
jf @STARTER_219POSLE1 
end_thread









 :STARTER_219POSLE1
if 
  $NEW_TOTAL_PASSED_MISSIONS == 1 
jf @STARTER_352na_nachalo 
if 
00FF:   actor $PLAYER_ACTOR sphere 0 in_sphere 2468.632 -1650.888 13.4716 radius 1.2 1.2 2.0 on_foot 
jf @STARTER_352na_nachalo 
Marker.Disable($Marker_Sweet_House)
$ONMISSION = 1 
00BA: show_text_styled GXT 'SWEET1B' time 1000 style 2  // Cleaning the Hood
fade 0 500 









// :STARTER_320DUNNO       ///?????????????????
//if 
//fading 
//jf @STARTERMIS2 
//wait 0 
//00BE: text_clear_all 
//03E6: remove_text_box 
//jump @STARTER_320DUNNO







 :STARTERMIS2             //NA 2U MISSIU
 start_mission MISSION2


 :STARTER_352na_nachalo
jump @STARTER_11


:START                ///T_START priprovale 1 missii
thread 'START' 
wait 0 
1@ = Marker.CreateIconAndSphere(36, 2462.1006, -1716.0439, 13.5187)

:START_1                          ///t_START
wait 250 
if and
   Player.Defined($PLAYER_CHAR)
0102:   actor $PLAYER_ACTOR in_sphere 2462.1006 -1716.0439 13.5187 radius 2.0 2.0 1.0 sphere 1 stopped_on_foot 
jf @START_1 
Marker.Disable(1@)
00BA: show_text_styled GXT 'STAD_04' time 1000 style 2  // 
//fade 0 500 
wait 500 
start_mission MISSION // Initial 1
end_thread 





:MISSION
thread "MISSION"
gosub @Misstart
if
 wasted_or_busted
jf @Misclean
gosub @Missfail

:Misclean
$ONMISSION = 0
mission_cleanup
end_thread

:Misstart
increment_mission_attempts 
$ONMISSION = 1
model.load(#SAWNOFF)
model.load(#MP5LNG)
model.load(#BALLAS3)                            ///2462.1006 -1716.0439 13.5187           2455.2815 -1708.8257 13.6096     2328.4453 -1680.6447 14.8334
038B: load_reqested_models
:Misstart1
wait 0
if and 
model.Available(#SAWNOFF)
model.Available(#MP5LNG)
model.Available(#BALLAS3)
jf @Misstart1
02A3: toggle_widescreen 1 
Player.CanMove($PLAYER_CHAR) = False

:MissionStart_37

054C: use_GXT_table 'GARAGE1' 
00BC: show_text_highpriority GXT 'GAR1_22' time 3000 flag 1  // ~s~Get inside the ~b~car~s~.
wait 5000 
03D5: remove_text 'GAR1_22' 
Player.CanMove($PLAYER_CHAR) = True
02A3: toggle_widescreen 0 

032B: 3@ = create_weapon_pickup #SAWNOFF type 3 ammo 10 at  2455.2815 -1708.8257 13.6096

actor.create(2@,20,#BALLAS3,2328.4453, -1680.6447, 14.8334)
01B2: give_actor 2@ weapon 29 ammo 999999
wait 100
05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR
:LabelMis1_3
wait 0
if 
wasted_or_busted
jf @LabelMis1_4
jump @Missfail
:LabelMis1_4
wait 0
if and
//actor.Dead(1@)
actor.Dead(2@)
//actor.Dead(3@)
jf @LabelMis1_3

:Misspass
wait 200
0318: set_latest_mission_passed 'MISSION' 
01E3: show_text_1number_styled GXT 'M_PASSS' number 200 time 5000 style 1  // MISSION PASSED!~n~~w~$~1~~n~~w~RESPECT +
//0998: add_respect 3 
Player.Money($PLAYER_CHAR) += 200
Player.ClearWantedLevel($PLAYER_CHAR)
0394: play_music 1 
$NEW_TOTAL_PASSED_MISSIONS += 1 
$Marker_Sweet_Hous = Marker.CreateIconAndSphere(16, 2498.228, -1647.457, 13.5479)
// создаем маркер миссии FIRST
return 

:Missfail
00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1
create_thread @START 
return

///  2477.2854 -1668.6162 13.3271

:MISSION2
thread "MISSION2"
gosub @Misstart2
if
 wasted_or_busted
jf @Misclean2
gosub @Missfail2
:Misclean2
$ONMISSION = 0
mission_cleanup
end_thread
:Misstart2
increment_mission_attempts 
$ONMISSION = 1
//model.load(#SAWNOFF)
model.load(#GUN_VIBE1)       //323
model.load(#BALLAS2)                            ///2462.1006 -1716.0439 13.5187           2455.2815 -1708.8257 13.6096     2328.4453 -1680.6447 14.8334
038B: load_reqested_models
:Misstart12
wait 0
if and 
///model.Available(#SAWNOFF)
model.Available(#GUN_VIBE1)
model.Available(#BALLAS2)
jf @Misstart12
//02A3: toggle_widescreen 1 
//Player.CanMove($PLAYER_CHAR) = False

  actor.create(2@,20,#BALLAS2,2469.7808, -1650.4218, 13.4718)
01B2: give_actor 2@ weapon 323 ammo 999999
wait 100
05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR
:LabelMis1_32
wait 0
if 
wasted_or_busted
jf @LabelMis1_42
jump @Missfail2
:LabelMis1_42
wait 0
if and
//actor.Dead(1@)
actor.Dead(2@)
//actor.Dead(3@)
jf @LabelMis1_32
:Misspass2
wait 200
0318: set_latest_mission_passed 'MISSION2' 
01E3: show_text_1number_styled GXT 'M_PASSS' number 200 time 5000 style 1  // MISSION PASSED!~n~~w~$~1~~n~~w~RESPECT +
//0998: add_respect 3 
Player.Money($PLAYER_CHAR) += 200
Player.ClearWantedLevel($PLAYER_CHAR)
0394: play_music 1 
$NEW_TOTAL_PASSED_MISSIONS += 1 
return 

:Missfail2
00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1
//create_thread @START 
return

Offline

#2456 30-08-2010 22:26

Sergey81
Registered: 19-12-2008
Posts: 654

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

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

Offline

#2457 31-08-2010 07:41

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

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

fading 
00BE: text_clear_all
03E6: remove_text_box

fading - это проверка на затухание экрана (опкодом fade)
text_clear_all - ну а тут что не понятно? убрать весь текст этим опкодом можно
remove_text_box - убрать текст-бокс (чёрная полоска с текстом в левом верхнем углу экрана

Offline

#2458 31-08-2010 18:08

comegetsome
Registered: 30-08-2010
Posts: 3

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

Cпасибо, что ответили, но больше хотелось бы учлышать про создание линейки миссий.
Так же возникло ещё 2 вопроса(это пока=)):
1) как актёру запретить вылазить из машины, даже если она загорелась?(и как при необходимости снова дать ему эту возможность)
2)непонятно с камерой: команда Camera.SetAtPos, независимо от того, куда бы я камеру не ставил, показывает игрока.
при использовании команд Camera.pointat или camera.onvehicle (возможно и при исп других тоже, не пробовал)  независимо от того, какие я ставлю координаты, показывается одно и то же место, даже ставил через некторое время set.behindplayer,- камера на игрока не переходит, так и продолжает висеть непонятно где,при этом игрок контролируем(судя по радару). что я делаю не так?

камера:
_jpg1.ru_123483437.jpg

Offline

#2459 31-08-2010 19:45

~AquaZ~
Registered: 01-03-2010
Posts: 726

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

1) Поиск опкодов, stay_in_car 1 или 0.
2) Да, второй аргумент подводит. Попробуй поставить 0 или -1, как-то я выгребал из ситуации...

Offline

#2460 01-09-2010 10:20

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

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

comegetsome wrote:

2)непонятно с камерой: команда Camera.SetAtPos, независимо от того, куда бы я камеру не ставил, показывает игрока.
при использовании команд Camera.pointat или camera.onvehicle (возможно и при исп других тоже, не пробовал)  независимо от того, какие я ставлю координаты, показывается одно и то же место, даже ставил через некторое время set.behindplayer,- камера на игрока не переходит, так и продолжает висеть непонятно где,при этом игрок контролируем(судя по радару). что я делаю не так?

Есть такая фигня с камерой. Ставить её куда-либо можно только в том случае, если игрок заморожен (Player.CanMove($PLAYER_CHAR) = False). Можно так же, ставить её в цикле.

Offline

#2461 01-09-2010 11:19

comegetsome
Registered: 30-08-2010
Posts: 3

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

Sw[ee]t,~AquaZ~,спасибо за помощь.Я много чего пробовал, и расскажу,как я всё таки решил проблему:
вместо  camera.setatpos(1,2,3)     
использовал  Camera.SetPosition(2467.4216 -1684.4646 13.5184, 0.0, 0.0,0.0) ,
затем- camera.pointat, который заработал нормально,а после анимации поставил  Camera.Restore_WithJumpCut - кстати, если последнюю команду не ставить, камера остаётся на месте, при этом игрок может быть контролируем.

Offline

#2462 02-09-2010 20:23

Sergey81
Registered: 19-12-2008
Posts: 654

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

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

Offline

#2463 04-09-2010 16:08

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

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

Sw[ee wrote:

t]Ну вот. Я посмотрел ещё немного исходников по этой тематике, это правда что у камеры ещё есть, некая, Entity target? Можно об этом по подробней?

UPDATE:
Каким образом можно узнать, что target entity у камеры - опр. машина?
Я нашёл старт блока CCamera, далее, нашёл оффсет к ней 958 байт, который, якобы, отвечает за target entity. Я правильно делаю, либо в корни не верно?

Люди, ответьте на вопрос ёпте. Уже неделя прошла, никто ни слухом ни духом.

Offline

#2464 12-09-2010 08:53

BoPoH
From: Каушаны
Registered: 21-02-2009
Posts: 77

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

можно ли сделать переменную типа Integer переменной типа String при этом сохраняя её значение?
и ещё если кому не сложно (предполагаю что это сложно), нужно написать один опкод, который будет цеплять камеру на объект наподобе 067С


userbar.png

Offline

#2465 12-09-2010 09:59

DOG-GHOST
From: Honduras
Registered: 28-02-2010
Posts: 14
Website

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

Какой опкод в Вайс Сити отвечает за буйства (вспышки ярости) ?

Offline

#2466 12-09-2010 14:01

Kostyan
Registered: 27-09-2009
Posts: 94

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

DOG-GHOST wrote:

Какой опкод в Вайс Сити отвечает за буйства (вспышки ярости) ?

Не понял вопроса, что за буйство?

Offline

#2467 12-09-2010 15:27

DOG-GHOST
From: Honduras
Registered: 28-02-2010
Posts: 14
Website

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

Kostyan wrote:
DOG-GHOST wrote:

Какой опкод в Вайс Сити отвечает за буйства (вспышки ярости) ?

Не понял вопроса, что за буйство?

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

Offline

#2468 13-09-2010 08:52

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

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

Это вроде "Rage" (Ярость) называется. Перекочевала из трёхи.
За это отвечает не опкод, а pickup.create, и в обработчике действий пикапа, уже, задаётся то что будет делать игрок после того как его поднимет.

Offline

#2469 13-09-2010 09:58

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

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

Это называется Rampage и задается опкодом 01F9
http://gtag.gtagaming.com/opcode-databa … pcode=01F9

Offline

#2470 13-09-2010 17:00

mr.Andrei
Registered: 03-07-2010
Posts: 38
Website

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

Такой вопрос: опкод для определения координат ближайшего педа к актёру?


SNKillers.net - всё о взломе и защите социальных сетей

Offline

#2471 13-09-2010 17:06

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

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

А зачем одно и тоже, писать в двух темах?

Offline

#2472 14-09-2010 12:55

BoPoH
From: Каушаны
Registered: 21-02-2009
Posts: 77

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

mr.Andrei wrote:

Такой вопрос: опкод для определения координат ближайшего педа к актёру?

0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@

а на мой вопрос никто не ответит? хотя бы на первый, оч надо, плз!!

BoPoH wrote:

можно ли сделать переменную типа Integer переменной типа String при этом сохраняя её значение?
и ещё если кому не сложно (предполагаю что это сложно), нужно написать один опкод, который будет цеплять камеру на объект наподобе 067С


userbar.png

Offline

#2473 14-09-2010 13:17

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

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

можно ли сделать переменную типа Integer переменной типа String при этом сохраняя её значение?

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

Offline

#2474 14-09-2010 18:30

mr.Andrei
Registered: 03-07-2010
Posts: 38
Website

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

Спасибо!


SNKillers.net - всё о взломе и защите социальных сетей

Offline

#2475 14-09-2010 20:15

BoPoH
From: Каушаны
Registered: 21-02-2009
Posts: 77

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

Seemann wrote:

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

мне нужно использовать его как имя записи GXT...
короче говоря я использую вот это -

0@ = -229908
008B: 1@ = &0(0@,1i)      // get last keypresses
0085: 2@ = 1@         
div(1@, 0x100)
mul(1@, 0x100)
0062: 2@ -= 1@

чтобы узнать последнюю нажатую клавишу, насколько я понял это Integer, т.к. пробовал вывести значение переменной 2@ и оно соответственно равно значению Decimal из справки к опкоду 0AB0...
вот мне и нужно вывести на экран ту букву которая соответствует номеру этой клавиши. Я думал сделать GXT записи с именами равными значению Decimal каждой клавиши. Поэтому мне и надо преобразовать Integer переменную в String...

Last edited by BoPoH (14-09-2010 20:17)


userbar.png

Offline

Board footer

Powered by FluxBB