#1 18-01-2007 10:57

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

Консоль. Вывод полезной информации

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

Скриншоты:
http://sannybuilder.com/images/forums/dbmu.jpg
http://sannybuilder.com/images/forums/dbmu2.jpg

Что в ней интересного:
ну кроме того, что я разбирался с возможностями text_draw, там есть:

- новые цвета интерфейса
- меняющиеся ключи american.gxt из скм (код я уже постил на форуме)
- возможность вызывать консоль при помощи нажатия любой клавишы (по умолчанию ~, можно переназначить если 3 секунды держать P (латинскую))
- возможность узнавать модели и здоровье актеров, на которых целишься.

http://sannybuilder.com/dev/dbmu.rar

Offline

#2 19-01-2007 08:54

kostia
Registered: 05-01-2007
Posts: 17

Re: Консоль. Вывод полезной информации

Seemann: ты можеш сказать как изменить цвет минтовских звёст, на крастый.

Offline

#3 19-01-2007 09:15

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

Re: Консоль. Вывод полезной информации

0@ = 362041
&0(0@,1i) = 0xFF0000FF

вставляешь в любое место после начала игры. Это число RGBA, наоборот, т.е. сначала значение альфы (прозрачность) (FF), потом Blue (00), потом Green (00), потом Red (FF). Эти значения можно узнать в фотошопе.

Offline

#4 20-01-2007 11:10

Sanchez
Registered: 18-08-2006
Posts: 280

Re: Консоль. Вывод полезной информации

При гибели игра виснит.

Offline

#5 20-01-2007 11:15

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

Re: Консоль. Вывод полезной информации

Да, есть такое. Она вообще нестабильная какая-то. В транспорте тоже вылетает, приходится отключать. Но для меня это некритично - это как тестовый полигон.

EDIT:
Эту ошибку исправил, забыл что нельзя объединять проверки игрока и Player.Defined

Offline

#6 20-01-2007 17:37

Capushon
Registered: 13-08-2006
Posts: 350
Website

Re: Консоль. Вывод полезной информации

2Seemann:

нельзя объединять проверки игрока и Player.Defined

А как же здесь?

:R3_171
00D6: if  21
8256:   NOT player $PLAYER_CHAR defined
80DD:   NOT actor $PLAYER_ACTOR driving_vehicle_type #AMBULAN
004D: jump_if_false ЈЈR3_176
:GFAGNT_25
0001: wait $1212 ms  ;; Задержка. Менее 250, без необходимости не рекомендуется
00D6: if  2
0256:   player $PLAYER_CHAR defined  ;; Игрок доступен
8118:   NOT   actor $PLAYER_ACTOR dead  ;; Актер погиб
0038:   $ON_MISSION ==  0  ;; integer values
004D: jump_if_false ЈЈGFAGNT_34  ;; Если условия не верны

Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ

Offline

#7 21-01-2007 08:38

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

Re: Консоль. Вывод полезной информации

R* может делать все что угодно, но проверку Defined не рекомендуется объединять с другими условиями. Структура проверке условий в движке игры такова, что она проверяет все условия, независимо от того, известен конечный результат или нет. Например, если у нас проверка and и первое условие ложно - это значит, что все условие целиком не выполняется, и можно было бы не проверять остальные (так делается в нормальных языках программирования), однако в майне эти проверки продолжают проверяться до самого jf
Лучше обезопасить себя от лишних вылетов.

Offline

#8 21-01-2007 09:17

kostia
Registered: 05-01-2007
Posts: 17

Re: Консоль. Вывод полезной информации

Можите подсказать у меня после сохранения не загружается. Скрипт написан правильно , нет  Ex. Script'ов, и всё вроде нормально но не работает. (может потому что я делал всё с нуля (не с чистого, не с оригинала)) тоесть маин весит 150кб.

Offline

#9 21-01-2007 11:12

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

Re: Консоль. Вывод полезной информации

2kostia:
а что в этом майне, этот мод или какой-то другой?

Offline

#10 21-01-2007 14:20

kostia
Registered: 05-01-2007
Posts: 17

Re: Консоль. Вывод полезной информации

Не в этом, вопше. Может попскажеш что делать не сохраняется.
И стати какой Скрипт для тюнинга?

код SAVE ALL

:SAVE_ALL
thread "SAVE_ALL"

:SAVE_ALL_1
wait 0
if and
Player.Defined($PLAYER_CHAR)
jf @SAVE_ALL_1
if
not Actor.Dead($PLAYER_ACTOR)
not wasted_or_busted
jf @SAVE_ALL_1
if and
00E1: key_pressed 0 4
00E1: key_pressed 0 15
jf @SAVE_ALL_1
if
Player.Controllable($PLAYER_CHAR)
jf @SAVE_ALL_1
if
$ONMISSION == 0 // integer values
jf @SAVE_ALL_1
if
not Actor.Driving($PLAYER_ACTOR)
jf @SAVE_ALL_3
00BE: text_clear_all
00BA: text_styled 'MYSAVE' 400 ms 4 // ’OЂ†OTOBKA K COXPAHEHЃ‘ Ѓ†Pѓ, ’OЂO„ЂЃTE ...
Player.CanMove($PLAYER_CHAR) = False
wait 400
04DD: $SAVEALL_ARMOUR = actor $PLAYER_ACTOR armour
$SAVEALL_HEALTH = Actor.Health($PLAYER_ACTOR)
00BF: $Time_house = current_time_hours, $Time_minutes = current_time_minutes
03D8: show_save_screen

:SAVE_ALL_2
wait 0
if
03D9: save_done
jf @SAVE_ALL_2
Actor.Health($PLAYER_ACTOR) = $SAVEALL_HEALTH
Actor.Armour($PLAYER_ACTOR) = $SAVEALL_ARMOUR
Actor.Angle($PLAYER_ACTOR) = 0.0
00C0: set_current_time $Time_house $Time_minutes
Player.CanMove($PLAYER_CHAR) = True
Camera.SetBehindPlayer
Camera.Restore_WithJumpCut
jump @SAVE_ALL_1

:SAVE_ALL_3
wait 0
03E6: remove_text_box
03E5: text_box 'STAT_03' // CE­4AC Bѓ HE MO„ETE COXPAHЃT€ Ѓ†P“.
wait 1200
jump @SAVE_ALL_1

Offline

#11 21-01-2007 21:47

Capushon
Registered: 13-08-2006
Posts: 350
Website

Re: Консоль. Вывод полезной информации

2kostia:

Можите подсказать у меня после сохранения не загружается. Скрипт написан правильно , нет  Ex. Script'ов, и всё вроде нормально но не работает. (может потому что я делал всё с нуля (не с чистого, не с оригинала)) тоесть маин весит 150кб.

Ты откуда сей скрипт отодрал-то?

2Seemann:
Ну вот ... драли с мультимода:

00BE: text_clear_all 
00BA: text_styled 'MYSAVE' 400 ms 4 // ’OЂ†OTOBKA K COXPAHEHЃ‘ Ѓ†Pѓ, ’OЂO„ЂЃTE ...

Оригинал:

00BE: text_clear_all
00BA: text_styled 'MYSAVE' 400 ms 4  ;; ПОДГОТОВКА К СОХРАНЕНИЮ ИГРЫ, ПОДОЖДИТЕ ...

Даже хоткей не поменялся ... :-)

if and
00E1: key_pressed 0 4 
00E1: key_pressed 0 15 
jf @SAVE_ALL_1

А ты говорил ...  ;D


Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ

Offline

#12 22-01-2007 12:06

kostia
Registered: 05-01-2007
Posts: 17

Re: Консоль. Вывод полезной информации

Нащёт пиревода я просто незнаю как периводить на русский.
А клавиши ты просто отлично подобрал.
и стати как зделать сохранение, нероботает.

Offline

#13 22-01-2007 12:50

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

Re: Консоль. Вывод полезной информации

2kostia:
Старайся проверять свою грамотность хотя бы при помощи Word. Пригодится в будущем.

И в данной теме твои вопросы - оффтоп. Задавай их на форуме "Общие вопросы".

Offline

#14 14-09-2007 06:19

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

Re: Консоль. Вывод полезной информации

CLEO-версия вывода различной информации на экран.

http://cleo.sannybuilder.com/scripts/dbmu.rar

Возможен показ координат игрока, угла поворота, текущего интерьера, информации о его машине или цели.

По нажатию Ctrl+R переключаются режимы вывода (всего три режима: отключено, только координаты, полный).

Для правильной работы требуется плагин GXTHook (брать на cleo.sannybuilder.com).

Установка: распакуйте архив в папку CLEO. dbmu_cleo.cs должен лежать в папке GTASA\CLEO\, файл dbmu.fxt в папке GTASA\CLEO\cleo_text\ (директория для FXT-файлов).

Скрины:

dbmu5yl3.th.jpg dbmu6dt4.th.jpg

Offline

#15 06-03-2009 14:39

WinuX
Registered: 06-03-2009
Posts: 138

Re: Консоль. Вывод полезной информации

этот мод идёт только с новыми играми! со старой ни в какую

Offline

#16 06-03-2009 15:38

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

Re: Консоль. Вывод полезной информации

Угу, это уже отмечалось. Попробуй после 0085: 0@ = &0(0@,1i) добавить проверку 0@ > 0:

        else            
            0@ = 300694
            0085: 0@ = &0(0@,1i)
            if
                0@ > 0
            then
                inc(0@, 0x79C)
                0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0        
                if
                    0@ > 0
                then
                    // draw target
                    gosub @TextDrawTextSettings
                    033E: text_draw 10.0  Y_OFFSET 'DBMU6'  // "Targeted ped: "
                    0A8E: 1@ = 0@ + 0x22
                    0A8D: 1@ = read_memory 1@ size 2 virtual_protect 0
                    gosub @TextDrawText2Settings
                    045A: text_draw_1number 90.0 Y_OFFSET 'DBMU9' 1@ // Target Model
                    0A8E: 1@ = 0@ + 1344
                    0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
                    008C: 1@ = float_to_integer 1@                        
                    gosub @TextDrawText2Settings
                    045A: text_draw_1number 160.0 Y_OFFSET 'DBMU8' 1@ // Target Health
                end
            end                                                                              
        end

Offline

#17 06-03-2009 17:23

WinuX
Registered: 06-03-2009
Posts: 138

Re: Консоль. Вывод полезной информации

да, заработало, спасибо smile

Offline

#18 18-04-2009 17:25

ZEvS
Registered: 18-04-2009
Posts: 9

Re: Консоль. Вывод полезной информации

Seemann wrote:

CLEO-версия вывода различной информации на экран.

http://cleo.sannybuilder.com/scripts/dbmu.rar

Возможен показ координат игрока, угла поворота, текущего интерьера, информации о его машине или цели.
.....

в SAMP буде работать?

Offline

#19 26-04-2009 17:48

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

Re: Консоль. Вывод полезной информации

По-идее должна работать и там smile

Offline

#20 28-04-2009 08:17

ZEvS
Registered: 18-04-2009
Posts: 9

Re: Консоль. Вывод полезной информации

Sw[ee]t wrote:

По-идее должна работать и там smile

scm полюбому работать не будет , cleo версия выкидывает с ошибкой... попробую разобраться

Offline

#21 17-08-2009 18:01

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

Re: Консоль. Вывод полезной информации

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

Offline

#22 18-08-2009 16:42

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

Re: Консоль. Вывод полезной информации

Кстати, вот нюанс один: на скриншоте видна надпись Ground Z и там показываются координаты относительно нулевой точки модели игрока (то есть торс, там где-то как-раз ноль). Правильней будет если от нулевой точки модели игрока будет высчитываться число n (то есть размер ног + ~0.5).
Вам так не кажется? smile

Offline

#23 22-08-2009 16:22

reute70
From: Средняя Волга
Registered: 22-08-2009
Posts: 182

Re: Консоль. Вывод полезной информации

Как при наличии id вывести имя модели (400 -> landstal) ?

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

А сейчас захотел посмотреть какие машины в этом моде стоят(может чё заменить там) с помощью клео-скрипта для спауна машин (алгоритм у демареста позаимствовал, щас во всех гта использую(в четверке так и не понял, как там сделать, пытался через массив, но..- зтож не чистый lua) - три режима, увеличение/уменьшение ID и на месте) и подумал - хорошо бы имя dff(txd - как в vehicles.ide) выводить заодно, а то во многих модах машины переименовывают(да я сам так делаю).

У Seemann`а смотрел dbmu (там правда название модели выходит, когда в машину садишься и это строка из gxt), но так ничего не получилось - либо какое-то длинное число, либо виснет...

Last edited by reute70 (22-08-2009 16:23)

Offline

#24 27-08-2009 16:37

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

Re: Консоль. Вывод полезной информации

Не туда обратились.
Вам в "Один вопрос" wink

Offline

#25 27-08-2009 17:10

Alien
Registered: 12-10-2008
Posts: 564

Re: Консоль. Вывод полезной информации

reute70 wrote:

Как при наличии id вывести имя модели (400 -> landstal) ?

А ты смотрел, как в моем CarSpawner'е сделано?
Не проверял в клео, но должно работать:

:CarNameByID
0@ *= 4
0@ += 0xA9B0C8
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
0@ += 0x32
0AA8: call_function_method 0x6A0050 struct 0xC1B340 num_params 1 pop 0 0@ 0@
0AB2: ret 1 0@

Использование:

0AB1: call_scm_func @CarNameByID 1 #landstal 0@

В 0@ окажется указатель на нуль-терминированную строку с именем машины. Со строкой в ее первозданном виде работать не получится. Используй функции вывода или заменяй через память GXT.

Last edited by Alien (03-09-2009 12:34)

Offline

Board footer

Powered by FluxBB