[Урок] Фейк диалог - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Sanoxxx, Alowir, Phoenixxx_Czar  
[Урок] Фейк диалог
Joni228 Дата: Вторник, 12.12.2017, 21:02 | Сообщение # 1
Бывалый
Сообщений: 314
Статус: Offline
Всем привет, многие писали мне в личку, мол как ты делаешь фейк диалоги? Вот вам и ответ!


Что нам понадобится?

1. AutoHotKey
2. Samp UDF
3. SciTE4AutoHotKey ( Для удобства )


Приступим к написанию фейк Dialog:

1. Для начала мы подключим SAMP UDF к нашему скрипту:
Код
#include SAMPUDF.ahk ; Подключаем SAMPUDF
#IfWinActive GTA:SA:MP ; Все действия скрипта будут происходить в окне GTA:SA:MP

2. Что бы не мучать себя с переписыванием серверных диалогов и подборки их текста, можно просто взять и скопировать их. Вы спросите как? В SAMP UDF есть такая функция, как "getDialogText()", ей мы и воспользуемся!

Код
NumPad1:: ; Кнопка активации
DialogText := getDialogText() ; Функция присвоенная в переменную
FileAppend, %DialogText%, %A_ScriptDir%\Dialog.txt ; Сохранение текста с переменной в Dialog.txt
return ; Конец действия

После мы сможем увидить это:

3. Дальше мы создадим сам диалог:

Код

NumPad2:: ; Кнопка активации
text := ["{FFFFFF}Лицензия на авто:   {FF6347}Нет    "
, "{FFFFFF}Лицензия на мото:   {FF6347}Нет    "
, "{FFFFFF}Лицензия на полеты:   {FF6347}Нет    "
, "{FFFFFF}Лицензия на плавание:  {FF6347}Нет    "
, "{FFFFFF}Лицензия на ловлю рыбы:  {FF6347}Нет    "
, "{FFFFFF}Лицензия на оружие:   {FF6347}Нет"] ; Текст диалога
showDialog("0", "Лицензии", gettext(text)[1], "Ок", "", 9998) ; Сам диалог
return ; Конец действия

И мы уже увидим готовый вариант нашего диалога:

4. Вы думали мы закончили? А как же функционал, и постановка? Сейчас мы делаем копию нашего предыдущего диалога, и меняем ему STYLE с 0 на 2. У нас должно получиться это:

Ну на крайни случай оставлю код, вдруг кому то не понятно:

Код
NumPad3:: ; Кнопка активации
text := ["{FFFFFF}Лицензия на авто:   {FF6347}Нет    "
, "{FFFFFF}Лицензия на мото:   {FF6347}Нет    "
, "{FFFFFF}Лицензия на полеты:   {FF6347}Нет    "
, "{FFFFFF}Лицензия на плавание:  {FF6347}Нет    "
, "{FFFFFF}Лицензия на ловлю рыбы:  {FF6347}Нет    "
, "{FFFFFF}Лицензия на оружие:   {FF6347}Нет"] ; Текст диалога
showDialog("2", "Лицензии", gettext(text)[1], "Ок", "Отмена", 9998) ; Сам диалог
return ; Конец действия

5. Изменим в нашем случае "Нет" на переменные:

Код
text := ["{FFFFFF}Лицензия на авто:   {FF6347}" avto
, "{FFFFFF}Лицензия на мото:   {FF6347}" moto
, "{FFFFFF}Лицензия на полеты:   {FF6347}" flycar
, "{FFFFFF}Лицензия на плавание:  {FF6347}" lodka
, "{FFFFFF}Лицензия на ловлю рыбы:  {FF6347}" fish
, "{FFFFFF}Лицензия на оружие:   {FF6347}" guns] ; Текст диалога

Правда в моем случае это не подойдет, т.к. под слово "Нет" и "Да" разные цвета! Сейчас я покажу код под свой вариант...

Код
text := ["{FFFFFF}Лицензия на авто:   " (avto ? "{10F441}Есть":"{FF6347}Нет")
    ,"{FFFFFF}Лицензия на мото:   " (moto ? "{10F441}Есть":"{FF6347}Нет")
    ,"{FFFFFF}Лицензия на полеты:   " (flycar ? "{10F441}Есть":"{FF6347}Нет")
    ,"{FFFFFF}Лицензия на плавание:  " (lodka ? "{10F441}Есть":"{FF6347}Нет")
    ,"{FFFFFF}Лицензия на ловлю рыбы:  " (fish ? "{10F441}Есть":"{FF6347}Нет")
    ,"{FFFFFF}Лицензия на оружие:   " (guns ? "{10F441}Есть":"{FF6347}Нет")] ; Текст диалога

6. Сделаем функционал под наш диалог настроек:

Код
$~LButton::
$~Enter::
if(isDialogOpen())
{
    if(GetKeyState("LButton", "P"))
    {
  Sleep, isDialogButtonSelected(1) ? 150 : 50
  if(isDialogOpen() || isDialogButtonSelected(2))
  return
    }
    title := getDialogCaption()
    index := getDialogLineNumber()
    dlg := getDialogID()
    if(dlg == 9998)
    {
  if (index = 1)
  {
            ; Здесь код нашего диалога под ID 9998, и пункт 1. В нашем случае это Лицензии на Авто
  }
    }
}
return

7. Теперь напишим саму функцию:
В моем случае:

Код
if (index = 1)
  {
            avto := !avto
  }

В случае если надо вводить свой текст, мы используем данный код:

Код
ShowDialog("1", "Настройка | by Revalto", "{FFFFFF}Описание", "ОКЕЙ", "Закрыть", 9999)
input, Name, V, {enter}
KeyWait, Enter, D
KeyWait, P, D

Вот и весь собственно диалог готов:
Скрины: ТыК | ТыК 2


Как сделать сохранение в INI Файл?

Код
IniWrite, %Name%, %A_ScriptDir%\Settings.ini, Info, Name


Как читать INI Файл?

Код
Path=%A_ScriptDir%\Settings.ini
IniRead, Sections, % Path, , , % A_Space
Loop, parse, Sections, `n
{
    IniRead, Data, % Path, % A_LoopField, , % A_Space
    Loop, parse, Data, `n
        RegExMatch(A_LoopField, "(.*?)=(.*)", OutputVar)
        , %OutputVar1% := OutputVar2
}


Как сделать фейк сообщение при открытии фейк диалога?

Код
addChatMessageEx("{FF6347}", "[Подсказка] {FFFFFF}Вы успешно показали свой паспорт игроку {FF6347}" Name)

Вставляем в код, где открывается диалог. В данном случае, Name указывается в настройках (Взято с моего скрипта FPass)


Как считать свой ник и ID?
Воспользуйтесь функциями с SAMP UDF:

Код
; #     - getUsername()                    - Выводит твой ник
; #     - getId()                    - Выводит твой ид


Исходник данного урока: DOWNLOAD


Спасибо всем кому была интересна это статья.
P.S. Я не считаю себя лучшим кодером в сфере AutoHotKey, но дать урок начинающим вполне себе могу. Если здесь присутствует "Говно-Код", уж простите)
Оформление темы в ближайшее время поправлю)

Думаю Царь меня простит, за не использование его функционала для диалога :D




Сообщение отредактировал Joni228 - Суббота, 16.12.2017, 22:39
Q-Q Дата: Вторник, 12.12.2017, 21:07 | Сообщение # 2
I want to be with you 24/7
Сообщений: 89
Статус: Offline
Очень и очень полезная тема. Сделай еще парочку уроков.

Эщкере, кусь)
[dev]Marvin Дата: Вторник, 12.12.2017, 22:43 | Сообщение # 3
Новичок
Сообщений: 28
Статус: Offline
Шел 2017, люди делают уроки на фейк-диалоги, да еще и неправильно :/
Joni228 Дата: Среда, 13.12.2017, 20:24 | Сообщение # 4
Бывалый
Сообщений: 314
Статус: Offline
Цитата [dev]Marvin ()
Шел 2017, люди делают уроки на фейк-диалоги, да еще и неправильно :/

Многие люди спрашивают как делать, что да как?
А вот с "Неправильные" я не соглашусь.. Вроде все скрины предоставлены, исходник тоже. Удивительно, почему же все работает? А как же мои Фейк скрипты которые я вылаживал? Странно, они тоже работают.

Добавлено (13.12.2017, 20:24)
---------------------------------------------

Цитата Q-Q ()
Очень и очень полезная тема. Сделай еще парочку уроков.

Спасибо)


[dev]Marvin Дата: Четверг, 14.12.2017, 07:27 | Сообщение # 5
Новичок
Сообщений: 28
Статус: Offline
Joni228, не вылаживал, а выкладывал ._.
1) Зачем объявлять текст в переменную, если можно сразу запихнуть в функцию?
Код

text := ["{FFFFFF}Лицензия на авто:   {FF6347}Нет    ", "{FFFFFF}Лицензия на мото:   {FF6347}Нет    ", "{FFFFFF}Лицензия на полеты:   {FF6347}Нет    ", "{FFFFFF}Лицензия на плавание:  {FF6347}Нет    ", "{FFFFFF}Лицензия на ловлю рыбы:  {FF6347}Нет    ", "{FFFFFF}Лицензия на оружие:   {FF6347}Нет"] ; Текст диалога
showDialog("2", "Лицензии", gettext(text)[1], "Ок", "Отмена", 9998) ; Сам диалог
return ; Конец действия

2) Зачем после переменных идут запятые? Это не Паскаль, тут можно ничего и не писать
Код

text := ["{FFFFFF}Лицензия на авто:   {FF6347}" avto,

3) Зажатие клавиши - это очень глупое решение, идет запоминание всех символов, даже, если ты удалить какие-либо символы, в твоей переменные они все равно останутся. Есть специальный адрес, который считывает инфу с диалогов с ID1 и 4 (вроде)
Код

ShowDialog("1", "Настройка | by Revalto", "{FFFFFF}Описание", "ОКЕЙ", "Закрыть", 9999)
            input, Name, V, {enter}
            KeyWait, Enter, D
            KeyWait, P, D

Оно может и будет работать, но с костылями.
Joni228 Дата: Суббота, 16.12.2017, 22:29 | Сообщение # 6
Бывалый
Сообщений: 314
Статус: Offline
Цитата [dev ()
Marvin;4415738]Joni228, не вылаживал, а выкладывал ._.
1) Зачем объявлять текст в переменную, если можно сразу запихнуть в функцию?
Код

text := ["{FFFFFF}Лицензия на авто:   {FF6347}Нет    ", "{FFFFFF}Лицензия на мото:   {FF6347}Нет    ", "{FFFFFF}Лицензия на полеты:   {FF6347}Нет    ", "{FFFFFF}Лицензия на плавание:  {FF6347}Нет    ", "{FFFFFF}Лицензия на ловлю рыбы:  {FF6347}Нет    ", "{FFFFFF}Лицензия на оружие:   {FF6347}Нет"] ; Текст диалога
showDialog("2", "Лицензии", gettext(text)[1], "Ок", "Отмена", 9998) ; Сам диалог
return ; Конец действия

2) Зачем после переменных идут запятые? Это не Паскаль, тут можно ничего и не писать
Код

text := ["{FFFFFF}Лицензия на авто:   {FF6347}" avto,

3) Зажатие клавиши - это очень глупое решение, идет запоминание всех символов, даже, если ты удалить какие-либо символы, в твоей переменные они все равно останутся. Есть специальный адрес, который считывает инфу с диалогов с ID1 и 4 (вроде)
Код

ShowDialog("1", "Настройка | by Revalto", "{FFFFFF}Описание", "ОКЕЙ", "Закрыть", 9999)
input, Name, V, {enter}
KeyWait, Enter, D
KeyWait, P, D

Оно может и будет работать, но с костылями.


1. Удобство
2. Удобство

3.
Цитата Joni228 ()
P.S. Я не считаю себя лучшим кодером в сфере AutoHotKey, но дать урок начинающим вполне себе могу. Если здесь присутствует "Говно-Код", уж простите)




Сообщение отредактировал Joni228 - Суббота, 16.12.2017, 22:29
CZAR Дата: Суббота, 16.12.2017, 22:33 | Сообщение # 7
Czar Of Scripts
Сообщений: 1373
Статус: Offline
[dev]Marvin.
1, 2. В теме приведен не правильный код. (уже поправили, теперь более понятней, почему так)
3. Тут ты прав, но 1 и 3 диалоги с вводом текста, и адрес памяти такой же как и у чата.





Я в ВК
Ушел в веб.

• Ничего не покупаю.
• Способы не проверяю.


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

Гарант Cheat-Master:
*тема*

AHK
[S-RP] House Finder / House Teleporter
[SAMP] Online Counter
[S-RP] [For Event] Show Star
[S-RP] AntiCasino
[S-RP] [BOT] Auto Fisher + Auto Find Worm + Auto Cook
[S-RP] [BOT] /dance
Winner | Делаем розыгрыши среди участников темы.
SAMP-UDF
[AHK Урок] Выбор в диалогах мышкой и enter`ом
[SAMP] Быстрый ответ на СМС
[ERP] Помощник для адвоката
[DRP] FakeTime

Достижения:
- 26.02.2017
- 03.01.2018
- 26.05.2018
- 22.09.2018
- 04.04.2019


Сообщение отредактировал Phoenixxx_Czar - Суббота, 16.12.2017, 22:37
[dev]Marvin Дата: Понедельник, 18.12.2017, 00:18 | Сообщение # 8
Новичок
Сообщений: 28
Статус: Offline
Joni228, так зачем давать другим уроки, когда ты сам делаешь ошибки?...
CZAR Дата: Вторник, 19.12.2017, 19:09 | Сообщение # 9
Czar Of Scripts
Сообщений: 1373
Статус: Offline
[dev]Marvin, любому человеку свойственно делать ошибки.




Я в ВК
Ушел в веб.

• Ничего не покупаю.
• Способы не проверяю.


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

Гарант Cheat-Master:
*тема*

AHK
[S-RP] House Finder / House Teleporter
[SAMP] Online Counter
[S-RP] [For Event] Show Star
[S-RP] AntiCasino
[S-RP] [BOT] Auto Fisher + Auto Find Worm + Auto Cook
[S-RP] [BOT] /dance
Winner | Делаем розыгрыши среди участников темы.
SAMP-UDF
[AHK Урок] Выбор в диалогах мышкой и enter`ом
[SAMP] Быстрый ответ на СМС
[ERP] Помощник для адвоката
[DRP] FakeTime

Достижения:
- 26.02.2017
- 03.01.2018
- 26.05.2018
- 22.09.2018
- 04.04.2019
[dev]Marvin Дата: Вторник, 19.12.2017, 22:35 | Сообщение # 10
Новичок
Сообщений: 28
Статус: Offline
Phoenixxx_Czar, мое субъективное мнение:
Я считаю, если человек взялся делать уроки для других - он должен быть профессионалом, а не новичком, делая ошибки в глупых местах.
Возьму в пример Тумаша, он хоть и положил лопату на уроки, однако, он начал их делать только тогда, когда стал действительно профессионалом. Я, например, даже не знал про операции, которые он говорил вроде во 2-м уроке (возведение в квадрат/корень/модуль и т.д.)
Тут-же все иначе, человек только познал бытие UDF, и уже лезет учить других. Но смысл от этого?
Да, ошибки могут совершать все, но на этих ошибках надо учиться, и не допускать их больше.
А тут что? Input...Такое в каком году делали? Напомнишь?
CZAR Дата: Среда, 20.12.2017, 22:24 | Сообщение # 11
Czar Of Scripts
Сообщений: 1373
Статус: Offline
[dev]Marvin, считаю что тему засорять не стоит ибо может словить по 20% за набив постов, input это год 2013 где-то. С этим я соглашусь. Если хочешь поговорить на эту тему, пиши ему в вк или мне.




Я в ВК
Ушел в веб.

• Ничего не покупаю.
• Способы не проверяю.


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

Гарант Cheat-Master:
*тема*

AHK
[S-RP] House Finder / House Teleporter
[SAMP] Online Counter
[S-RP] [For Event] Show Star
[S-RP] AntiCasino
[S-RP] [BOT] Auto Fisher + Auto Find Worm + Auto Cook
[S-RP] [BOT] /dance
Winner | Делаем розыгрыши среди участников темы.
SAMP-UDF
[AHK Урок] Выбор в диалогах мышкой и enter`ом
[SAMP] Быстрый ответ на СМС
[ERP] Помощник для адвоката
[DRP] FakeTime

Достижения:
- 26.02.2017
- 03.01.2018
- 26.05.2018
- 22.09.2018
- 04.04.2019
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума