Сохранение позиции диалога самп

Обновлено: 07.07.2024

В общем внимательно читаем.

И так первое что вам нужно добавить 3 переменных которые будут записываться в аккаунт пользователя.
(!) Если у вас нет регистрации,ничего не выйдет.
(!) Данный мануал можно оптимизировать под что угодно, главное чтобы была регистрация.

И так находим конструкцию в enum pInfo в своем моде,и в конец добавляем:

Далее в OnPlayerRegister добавляем строку:

Поясняю: Тут мы делаем чтобы при создании аккаунта в него добавились нужные нам переменные.

Далее в OnPlayerUpdate добавляем аналогичный код:

Поясняю: Тут мы делаем чтобы переменные записывались в аккаунт

И в OnPlayerLogin добавляем:

Поясняю: Тут мы извлекаем значение переменных из файла

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

Далее создадим сам паблик

И не забудьте добавить форвард,в начало кода

Ну и наконец при спавне игрока,устанавливаем ему эти координаты.
Это ставим в OnPlayerSpawn

Возвращаемые значения:
Данная функция не возвращает какого-либо конкретного значения.

Стили диалога:

0DIALOG_STYLE_MSGBOXОбычный диалог с 2-мя кнопками
1DIALOG_STYLE_INPUTДиалог с полем для ввода
2DIALOG_STYLE_LISTСписок из нескольких элементов
3DIALOG_STYLE_PASSWORDПозволяет игрокам вводить пароль не раскрывая его

Функция:
Вызывается диалоговое окно функцией ShowPlayerDialog, структура функции такая:

Упрощение:
Обычно, чтобы не запоминать цифры и не писать длинное название стилей диалогов, я заменяю их такими макросами:

Или можно использовать <ID> стиля диалогового окна

Для написания основного текста диалогового окна вы можете использовать нижеприведенную таблицу:

\bbackspaсe
\fForm feed
\nПереход на новую строку
\rВозврат каретки
\tТабуляция
\vВертикальная табуляция
\'Одиночная кавычка
\"Двойные кавычки
\?Вопросительный знак
Ответ на диалог:
Мы сделали диалоговое меню, состоящее из 9 пунктов. А нам надо сделать так, чтобы при нажатии на первый пункт, у нас появлялся другой диалог с другой информацией. Для этот мы будем использовать вот такой код:
Условные конструкции:
Вот примет одной конструкции

Пример диалога с использование условной конструкцией

Создадим команду с использование ZCMD (командный процессор)

Спойлер: Пример команды на стандартном командном процессере И в public OnDialogResponse мы добавим ответ на наш диалог
Креативизация:
Вы решили создать диалог, а он серы и скучный?
Мы можем раскрасить наш диалог в любые цвета формата RGB.
Пример:

Цвет мы заключаем в фигурную скобку "<" и ">"
FFFFFF - это белый цвет
3DB6F2 - светло-голубой
Думаю цвета вам не доставит большого труда отыскать. Для этого есть множество поисковых система.

Что же такое этот оператор switch?
Оператор switch – это оператор выбора. Он удобен в первую очередь тем, что может заменить много условий if, которые проверяют значение одной переменной.
Пример построения с этим оператором:
! Стоить отметить, что в официальной документации к языку написано: ‘In pawn, switch is a structured “if”‘, а это значит, что конструкция switch — это набор структурированных if’ов, отсюда следует, что switch не может работать быстрее if. Но это не всегда так.
Как видим — switch/case медленнее(значительно) if только на больших промежутках значений.

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

Данный метод подходит, когда есть некоторые переменные, которые нужно внедрить в текст.

Есть еще один метод, который более менее мне известный - это константная переменная. Этот пример часто встречается в RLS/SRL модах. Мне же не очень нравится этот метод.Причины: не очень читабельный для человека, в отличии от первого примера.

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

Совет: для объявления макроса/директивы, лучше использовать имена в ВЕРХНЕМ регистре. Почему? А вот почему: если мы будем исползовать имена в нижнем регистре, то есть вероятность того, что мы сможем перепутать их с переменными.

Во втором случае мы добавим перечисление enum <>.

Само слово перечисление говорит нам о том, что мы будет перечислять по порядку от нуля до N-ного числа.

Пользователь офлайн

T.Wockeez

Всем доброго времени суток, подскажите пожалуйста, взял под основу мод Diamonda , как сделать, чтобы когда я писал /ahelp команды показывали не в чате, а открывался диалог.
Например Админ 3 уровня пишет /ahelp и у него показывает Администратор 1, Администратор 2, Администратор 3, он выбирает и сомтрит их команды, а если его повысить до 4 уровнял, то еще будет и Администратор 4

Вот как выглядит мой /ahelp

Пользователь офлайн

SCRIPTMAN


Всем доброго времени суток, подскажите пожалуйста, взял под основу мод Diamonda , как сделать, чтобы когда я писал /ahelp команды показывали не в чате, а открывался диалог.
Например Админ 3 уровня пишет /ahelp и у него показывает Администратор 1, Администратор 2, Администратор 3, он выбирает и сомтрит их команды, а если его повысить до 4 уровнял, то еще будет и Администратор 4

Вот как выглядит мой /ahelp

Свою команду замени на эту:


Могут быть ошибки, потому что писал на скорую руку

Не забудь ИД ДИАЛОГА заменить

Пользователь офлайн

T.Wockeez

Так, ну вроде сделал как ты сказал:


.srp.pwn(20420) : error 017: undefined symbol "DSM"
.srp.pwn(20423) : error 017: undefined symbol "DSM"
.srp.pwn(20428) : error 017: undefined symbol "DSM"
.srp.pwn(20434) : error 017: undefined symbol "DSM"
.srp.pwn(20439) : error 017: undefined symbol "DSM"
.srp.pwn(20444) : error 017: undefined symbol "DSM"
.srp.pwn(20449) : error 017: undefined symbol "DSM"
.srp.pwn(20459) : warning 217: loose indentation
.srp.pwn(20459) : error 014: invalid statement; not in switch
.srp.pwn(20536) : error 014: invalid statement; not in switch
.srp.pwn(20610) : error 014: invalid statement; not in switch
.srp.pwn(20676) : error 014: invalid statement; not in switch
.srp.pwn(20740) : error 014: invalid statement; not in switch
.srp.pwn(20831) : error 014: invalid statement; not in switch
.srp.pwn(21023) : error 014: invalid statement; not in switch
.srp.pwn(21033) : error 014: invalid statement; not in switch
.srp.pwn(21043) : error 014: invalid statement; not in switch
.srp.pwn(21053) : error 014: invalid statement; not in switch
.srp.pwn(21063) : error 014: invalid statement; not in switch
.srp.pwn(21098) : error 014: invalid statement; not in switch
.srp.pwn(21133) : error 014: invalid statement; not in switch
.srp.pwn(21160) : error 014: invalid statement; not in switch
.srp.pwn(21188) : error 014: invalid statement; not in switch
.srp.pwn(21215) : error 014: invalid statement; not in switch
.srp.pwn(21242) : error 014: invalid statement; not in switch
.srp.pwn(21269) : error 014: invalid statement; not in switch

Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

Пользователь офлайн

SCRIPTMAN


Так, ну вроде сделал как ты сказал:


.srp.pwn(20420) : error 017: undefined symbol "DSM"
.srp.pwn(20423) : error 017: undefined symbol "DSM"
.srp.pwn(20428) : error 017: undefined symbol "DSM"
.srp.pwn(20434) : error 017: undefined symbol "DSM"
.srp.pwn(20439) : error 017: undefined symbol "DSM"
.srp.pwn(20444) : error 017: undefined symbol "DSM"
.srp.pwn(20449) : error 017: undefined symbol "DSM"
.srp.pwn(20459) : warning 217: loose indentation
.srp.pwn(20459) : error 014: invalid statement; not in switch
.srp.pwn(20536) : error 014: invalid statement; not in switch
.srp.pwn(20610) : error 014: invalid statement; not in switch
.srp.pwn(20676) : error 014: invalid statement; not in switch
.srp.pwn(20740) : error 014: invalid statement; not in switch
.srp.pwn(20831) : error 014: invalid statement; not in switch
.srp.pwn(21023) : error 014: invalid statement; not in switch
.srp.pwn(21033) : error 014: invalid statement; not in switch
.srp.pwn(21043) : error 014: invalid statement; not in switch
.srp.pwn(21053) : error 014: invalid statement; not in switch
.srp.pwn(21063) : error 014: invalid statement; not in switch
.srp.pwn(21098) : error 014: invalid statement; not in switch
.srp.pwn(21133) : error 014: invalid statement; not in switch
.srp.pwn(21160) : error 014: invalid statement; not in switch
.srp.pwn(21188) : error 014: invalid statement; not in switch
.srp.pwn(21215) : error 014: invalid statement; not in switch
.srp.pwn(21242) : error 014: invalid statement; not in switch
.srp.pwn(21269) : error 014: invalid statement; not in switch

Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

DSM везде замени на DIALOG_STYLE_MSGBOX

Так, ну вроде сделал как ты сказал:


.srp.pwn(20420) : error 017: undefined symbol "DSM"
.srp.pwn(20423) : error 017: undefined symbol "DSM"
.srp.pwn(20428) : error 017: undefined symbol "DSM"
.srp.pwn(20434) : error 017: undefined symbol "DSM"
.srp.pwn(20439) : error 017: undefined symbol "DSM"
.srp.pwn(20444) : error 017: undefined symbol "DSM"
.srp.pwn(20449) : error 017: undefined symbol "DSM"
.srp.pwn(20459) : warning 217: loose indentation
.srp.pwn(20459) : error 014: invalid statement; not in switch
.srp.pwn(20536) : error 014: invalid statement; not in switch
.srp.pwn(20610) : error 014: invalid statement; not in switch
.srp.pwn(20676) : error 014: invalid statement; not in switch
.srp.pwn(20740) : error 014: invalid statement; not in switch
.srp.pwn(20831) : error 014: invalid statement; not in switch
.srp.pwn(21023) : error 014: invalid statement; not in switch
.srp.pwn(21033) : error 014: invalid statement; not in switch
.srp.pwn(21043) : error 014: invalid statement; not in switch
.srp.pwn(21053) : error 014: invalid statement; not in switch
.srp.pwn(21063) : error 014: invalid statement; not in switch
.srp.pwn(21098) : error 014: invalid statement; not in switch
.srp.pwn(21133) : error 014: invalid statement; not in switch
.srp.pwn(21160) : error 014: invalid statement; not in switch
.srp.pwn(21188) : error 014: invalid statement; not in switch
.srp.pwn(21215) : error 014: invalid statement; not in switch
.srp.pwn(21242) : error 014: invalid statement; not in switch
.srp.pwn(21269) : error 014: invalid statement; not in switch

Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

Пользователь офлайн

T.Wockeez

DSM везде замени на DIALOG_STYLE_MSGBOX


Покажи пример любого диалога в моде

Теперь новые ошибки, начиная с тех сторк, что я кинул как пример

srp.pwn(20417) : error 017: undefined symbol "ahelpir"
srp.pwn(20460) : warning 217: loose indentation
srp.pwn(20460) : error 014: invalid statement; not in switch
srp.pwn(20537) : error 014: invalid statement; not in switch
srp.pwn(20611) : error 014: invalid statement; not in switch
srp.pwn(20677) : error 014: invalid statement; not in switch
srp.pwn(20741) : error 014: invalid statement; not in switch
srp.pwn(20832) : error 014: invalid statement; not in switch
srp.pwn(21024) : error 014: invalid statement; not in switch
srp.pwn(21034) : error 014: invalid statement; not in switch
srp.pwn(21044) : error 014: invalid statement; not in switch
srp.pwn(21054) : error 014: invalid statement; not in switch
srp.pwn(21064) : error 014: invalid statement; not in switch
srp.pwn(21099) : error 014: invalid statement; not in switch
srp.pwn(21134) : error 014: invalid statement; not in switch
srp.pwn(21161) : error 014: invalid statement; not in switch
srp.pwn(21189) : error 014: invalid statement; not in switch
srp.pwn(21216) : error 014: invalid statement; not in switch
srp.pwn(21243) : error 014: invalid statement; not in switch
srp.pwn(21270) : error 014: invalid statement; not in switch
srp.pwn(21298) : error 014: invalid statement; not in switch
srp.pwn(21327) : error 014: invalid statement; not in switch
srp.pwn(21348) : error 014: invalid statement; not in switch
srp.pwn(21372) : error 014: invalid statement; not in switch
srp.pwn(21384) : error 014: invalid statement; not in switch
srp.pwn(21396) : error 014: invalid statement; not in switch
srp.pwn(21408) : error 014: invalid statement; not in switch

Пользователь офлайн

SCRIPTMAN


Теперь новые ошибки, начиная с тех сторк, что я кинул как пример

srp.pwn(20417) : error 017: undefined symbol "ahelpir"
srp.pwn(20460) : warning 217: loose indentation
srp.pwn(20460) : error 014: invalid statement; not in switch
srp.pwn(20537) : error 014: invalid statement; not in switch
srp.pwn(20611) : error 014: invalid statement; not in switch
srp.pwn(20677) : error 014: invalid statement; not in switch
srp.pwn(20741) : error 014: invalid statement; not in switch
srp.pwn(20832) : error 014: invalid statement; not in switch
srp.pwn(21024) : error 014: invalid statement; not in switch
srp.pwn(21034) : error 014: invalid statement; not in switch
srp.pwn(21044) : error 014: invalid statement; not in switch
srp.pwn(21054) : error 014: invalid statement; not in switch
srp.pwn(21064) : error 014: invalid statement; not in switch
srp.pwn(21099) : error 014: invalid statement; not in switch
srp.pwn(21134) : error 014: invalid statement; not in switch
srp.pwn(21161) : error 014: invalid statement; not in switch
srp.pwn(21189) : error 014: invalid statement; not in switch
srp.pwn(21216) : error 014: invalid statement; not in switch
srp.pwn(21243) : error 014: invalid statement; not in switch
srp.pwn(21270) : error 014: invalid statement; not in switch
srp.pwn(21298) : error 014: invalid statement; not in switch
srp.pwn(21327) : error 014: invalid statement; not in switch
srp.pwn(21348) : error 014: invalid statement; not in switch
srp.pwn(21372) : error 014: invalid statement; not in switch
srp.pwn(21384) : error 014: invalid statement; not in switch
srp.pwn(21396) : error 014: invalid statement; not in switch
srp.pwn(21408) : error 014: invalid statement; not in switch

Найди dObshak, который в начале, будет где-то тут:
enum dialogs .
.
.
dObshak,
.
.

и в конец этого enum добавь ahelpir, не забудь поставить запятую после название диалога перед ahelpir, а после этого слова запятая не нужна.
217 варнинг - поработай с табуляцией
Насчёт свитчей, покажи, где ошибка, в тех ли строках, я просто сомневаюсь

Упрощенная версия моего скрипта "Сохранение позиций".
Теперь вместо меню выбора, используются сочетания клавиш, что даёт возможность использование скрипта в SAMP, а так же более быстрое использование.
===========================
Управление:

Z+ (1-2-3-4-5) - Сохранения позиций
X+ (1-2-3-4-5) - Загрузка позиций

===========================
После сохранения или загрузки позиции вы услышите звук, а так же увидите надпись (см. скриншот)
===========================
PS. Для сохранения позиций советую подержать сочетание клавиш несколько секунд до появления надписи или звука

Читайте также: