Как сделать рандомные чекпоинты pawno

Добавил пользователь Алексей Ф.
Обновлено: 05.10.2024

Pawn - простой язык программирования с открытым исходным кодом. Сегодня мы начинаем серию гайдов по программированию на языке Pawn. Я считаю, что в данный момент появилось очень много новичков мало чего понимающих в программировании и постоянно задающие глупые вопросы. Именно для таких людей, я и решил написать гайды .


Не будем рассказывать о "вступлении" в программировании, о работе процессора, процесса компиляции и интерпретации ( or трансляции ) программы, а сразу попытаемся практично подойти к понятию программировании в Pawn
P.S
Если вы желаете больше влиться в мир программ, советую изучить следующие темы:


Ну что же, давайте разбирать простейший плагин написанный на Pawn для CS 1.6 ( я решил взять броню, ибо считаю здесь есть всё для простого описания ) В любой программе есть 3 блока :

1. Блок подключения заголовочных файлов - в ней подключаются все библиотеки ( библиотека - набор готовых функций движка CS ), для разработки плагина

2. Блок описания функции int main() - так как в Pawn, описание данной функции отсутствует, будем считать этой функцией public plugin_int(). Эта функции является функцией с точкой входа. Когда вы запускаете свой сервер, именно данная функция вызовется первой.

3. Блок описания функций, стоков и событий - блок, в котором вы описываете собственные функции и функции событий которые вы описали в public plugin_init()

  • тип данных
  • значение
  • адрес
  • имя
  • for(идентификация счетчика; условие; инкремент ( прибавление значение счетчика ))
  • while(условие)
  • do< реализация кода >while(условие)
  1. Цикл For
    for(new i=0; i
  2. Цикл while(i
  3. Цикл do< Тело Цикла >while(условие)
    Этот цикл, отличается от других тем, что сначала мы выполняем операции в теле цикла, а только потом проверяем условия, и если оно верно, то снова выполняем операции до момента пока условие не сработает.
  • register_event - регистрирует некоторые из стандартных событий Half-Life. Полный список тут - События Half-Life
  • register_logevent - регистрирует события которые обычно пишутся в логах. Нам нужны чаще всего для начала и конца раунда
  • RegisterHam - не побоюсь для новичков сказать, что это нужно для того, чтобы отловить какое то событие. Но функционал намного выше. Нам чаще всего нужно для событий получение урона, смерти, спавна и других. Удобность - наличие id игрока
  • register_touch - если углубитесь в тему Pawn'а, то эта функция поможет вам отловить событие касание объектов друг об друга
  • Константа EngFunc_PrecacheModel - для кэширования модели или спрайта. Пример: engfunc(EngFunc_PrecacheModel, Model)
  • Константа EngFunc_PrecacheSound - для кэширования звука. Пример engfunc(EngFunc_PrecacheSound, Sound)
  • precache_model
  • precache_sound

&Я не понимаю как работает код&

Для начала, посмотрите на название переменных и событиях описанных в public plugin_init()
Поймите структуру программы, какие функции вызываются первыми, какие используются чаще, какие важные. По смыслу вы сможете понять, в каком месте кода вы должны искать.
Например: Вопрос: Мне нужно в определенном плагине, изменить радиус взрыва ракеты.
Для начала, мне нужно найти функцию, которая отвечает зазапуск самой ракеты. Потом найти, функцию которая отвечает за взрыв ракеты. После чего найти структуру message_begin, ведь скорее всего именно в ней указывается радиус взрыва

&С чего начать писать плагин&

Продумайте в голове все свои мысли. Изобразите структуру вашего плагина на листочке или в Paint ( если вы собрались браться за что то большое ). Потом обдумайте, какие библиотеки ваш лучше использовать. Если вы намереваетесь писать плагин связанный как либо внутри-игровыми объектами: задумайтесь что будет лучше, использовать модуль engine или fakemeta (изучите их для начала). Подумайте, как будут использоваться переменные, какие функции вы распишите, какие события затронете.

То есть, set_user_health(id, Health) -> мы отправляем в функции число которое постоянно хранится в id
А users[id] -> мы обращаемся к массиву users по номеру который записан в id
Ни в коем случае не путайте!

Ну что же, давайте рассмотрим возможные варианты их появления

Нашел хороший пример:
set_pev(iPlayer, pev_velocity, Float:)
В данной функции при её вызове, вы сами должны указать тип Float, чтобы не столкнуться с проблемой 213 предупреждения.

Прочитав различные Pawn уроки(иногда именуемые как Pawno уроки, что в корне неправильно) в Интернете, я понял, что большинство из них нельзя читать новичкам, ибо это может привести к деформации мировоззрения о программировании в целом… В связи с этим, я решил начать писать свою серию уроков по языку Pawn. Постараюсь излагать всё как можно более понятно и подробно.
Собственно, первый Pawn урок, дальше — больше, лучше. Следить за уроками можно по метке pawn уроки

Основы

Pawn — компилируемый язык программирования. Язык не приобрел широкой популярности, самые знаменитые проекты, использующие этот язык, это: AMXX и SA-MP.

Синтаксис языка имеет ‘Си-подобный’ вид. Форматы исходного файла: p, pwn, inc. Формат компилированного файла — amx.

Есть несколько редакторов Pawn скриптов, разработчики SA-MP по умолчанию предлагают использовать редактор Pawno.

В каталоге pawno/ есть файл new.pwn, с ним то мы и будем работать.

Для каждого public’а нужно прописывать forward. Но для стандартных колбэков это делать не нужно, потому что это прописано в стандартных библиотеках.

На сегодня существует несколько редакторов pawn-кода: Pawno, SA-MP Editor, PawnSciTE и другие. Но какой из них следует использовать для создания Вашего скрипта или редактирования других скриптов? На этой странице будут рассмотрены преимущества и недостатки существующих редакторов.

Pawno

Pawno, возможно, самый распространенный редактор среди остальных. Это очень простой редактор, который можно предложить большинству людей. Такие возможности, как подсветка синтаксиса, базовые опции запуска и панель, показывающая встроенные функции, делает pawno замечательным редактором для людей, которые создают небольшие режимы игры или дополнительные скрипты, и для тех, кто хочет отредактировать несколько мелких мест в существующем режиме игры. Pawno создал spookie

Pawno самый используемый редактор среди остальных

Преимущества

  • Он компактен в размере, потребляет мало памяти.
  • Превосходен для маленьких скриптов.
  • Список функций после вашего скрипта.
  • Поставляется вместе Windows-сервером SA-MP.

Недостатки

  • Он неудобен для работы с большими скриптами, трудно найти определенные вещи.
  • Редактор крайне базовый.

Заключение

Pawno прекрасно подходит для маленьких скриптов среди всех других, вам следует использовать другой редактор, когда число строк в вашем режиме игры или дополнительном скрипте превышает 2000. Это также редактор для людей с медленными компьютерами, в этом случае производительность - большой плюс.

Pawno может быть скачан по этой ссылке, это установщик, который создал Louis. Pawno также поставляется вместе с Windows-сервером SA-MP, который можно скачать здесь

SA-MP Editor

Второй редактор - SA-MP Editor, довольно новый редактор, который только что прошел закрытое бета-тестирование. SA-MP Editor - это самый богатый возможностями pawn-редактор среди остальных, с такими возможностями, как сворачивание кода, расширенные опции компиляции, поддержка проекта, вкладки и, конечно же, IntelliSense®. Объединив это с инфо-подсказками, подсветкой синтаксиса и опциями улучшения производительности, вы получаете очень хороший редактор для больших режимов игры, дополнительных скриптов и других. SA-MP Editor создал Peter.

SA-MP Editor - это самый богатый возможностями pawn-редактор среди остальных

Преимущества

  • Расширенная подсветка синтаксиса, включая сворачивание кода.
  • IntelliSense® и инструментальные подсказки.
  • Обзор как встроенных, так и других (ваших) функций.
  • Поддержка проекта.
  • Открытие нескольких файлов на вкладках.
  • Много расширенных опций компиляции.

Недостатки

Заключение

SA-MP Editor - замечательный редактор среди остальных, если вы создаете большие режимы игры или дополнительные скрипты, вам нравятся хороший UI, и вы заинтересованы в возможностях вроде сворачивания кода и IntelliSense®. Странное использование памяти, объясняемое тем, что он все еще является бета-версией, является его недостатком, потому могут возникать ошибки.

Вы можете скачать SA-MP Editor здесь (Работает с 0.3 версией)

PawnoX

PawnoX - это, как может вам подсказать название, усовершенствованная версия оригинального pawno с такими возможностями, как более расширенная подсветка синтаксиса, специальная панель компиляции вместо диалога и очень хорошие опции компиляции, включая в себя функцию перезапуска сервера SA-MP. Похоже, это замечательный редактор для людей, которые хотят иметь такие же хорошие возможности, как и хорошую производительность. PawnoX сделал Delfi.

PawnoX - это усовершенствованный Pawno

Преимущества

  • Прекрасный, компактный и малопотребляющий память редактор.
  • Лучшие по сравнению с pawno опции компиляции.
  • Усовершенствованная подсветка синтаксиса.
  • Больше кнопок на главной панели.

Недостатки

  • Разработка новых возможностей может показаться немного медленной.
  • Все еще недостаточно усовершенствований для хорошей конкуренции с pawno.

Заключение

PawnoX - это очень прекрасный редактор, но только не имеющий достаточно возможностей, чтобы быть настоящим конкурентом Pawno. Такие возможности, как автосписок скоро появятся, так что вещи могут измениться в будущем.

Вы можете скачать последнюю версию PawnoX здесь.

Проследить за разработкой можно на форуме здесь.

Официальный редактор Quincy

Возможно изменение редактора Quincy, для использования с компилятором pawn для SA:MP. Quincy стабильный и компактный, но в то же время содержит множество дополнительных возможностей, которых нет в Pawno (в частности, тот факт, что теоретически он может открыть файл бесконечного размера без сбоев и замедлений).

Преимущества

  • Компактный, эффективно использует память.
  • Улучшенная подсветка синтаксиса, по сравнению с Pawno.
  • Больше функций, включая улучшение вида кода и слежение за переменными.
  • Кросс-платформенный.

Недостатки

  • Вы должны изменить расширение редактируемых файлов на .p или .pawn.
  • Некоторый функции, кажется не работают.
  • Отсутствует надлежащая подсветкой синтаксиса для чисел и функций.

Инструкции по установке

  1. Установите.
  2. Перейдите в каталог, где у вас находится редактор Pawno.
  3. Создайте к каталоге Pawno и скопируйте всё в нее (включая каталог 'include').
  4. Создайте каталог с именем 'bin' в той папке, в которую вы только что скопировали всё.
  5. Переместите все в каталог 'bin', исключая каталог include.
  6. Теперь у вас должны быть: каталог 'include' и каталог 'bin'. Каталог 'bin' содержит компилятор Pawno и связанные с ним файлы, а каталог 'includes' содержит необходимые инклуд-файлы.
  7. Откройте редактор Quincy.
  8. Выберите Options в меню Tools.
  9. Выберите вкладку Build.
  10. Измените путь к компилятору на путь к тому каталогу, в котором у вас 'include' и 'bin'.
  11. Нажмите OK.
  12. Если возникнут какие-либо ошибки, убедитесь что вы точно следовали этой инструкции.
  13. Измените расширение ваших файлов кода в .p и наслаждайтесь!

PawnSciTE

PawnSciTE очень мощный, но простой в использовании редактор, сделанный на базе редактора SciTE, но полностью автономный. Он поставляется в виде программы установки и программы настройки, до сих пор активно разрабатывается Darkimmortal.

Подсказки к функции в PawnSciTE

Преимущества

  • Полная подсветка синтаксиса, включая все функции SA:MP.
  • Всплывающие подсказки к функциям
  • Перезапуск Локального сервера - Путем changemode/reloadfs (Рекомендуется), или через GMX или полный перезапуск.
  • Лог компилятора Pawno расположен в боковой панели справа, и имеет функцию перехода к ошибкам!
  • Функции JumpTo и JumpTo функции обратного вызова.
  • Автоматическая загрузка на FTP (Необходимо иметь Windows XP / Vista).
  • Удаленный перезапуск сервера на хостинге GTAHost.
  • Code Folding.
  • Удобная настройка интерфейса.
  • Вкладочный интерфейс - до 10 файлов может быть открыто в одном окне программы.
  • Неограниченный буфер для меньших лагов при открытии больших скриптов.
  • Поддержка проекта.
  • Автозавершение кода

Недостатки

Поддержка и скачивание

Плагины для других редакторов

Плагин для Notepad++

DracoBlue сделал специальный плагин для редактора notepad++, который можно скачать на этом сайте. С такими возможностями, как сворачивание кода, автозаполнение и подсветка синтаксиса, это хорошее расширение для людей, использующих Notepad++. Опции компиляции на данный момент не поддерживаются по умолчанию, и их установка может оказаться трудной для некоторых малоопытных людей.




SetPlayerCheckpoint(playerid,float(random(1280)
тут больше не сижу. открыл свой проект



Да там просто, ща разобрать попробую

SetPlayerCheckpoint(playerid,float(random(1280) [рандомное число из 1280 со арифметическим сдвигов влево] ,float(random(1280) [рандомное число из 1280] & [и] (0xE3 [227] ^ [или] 0x1D [27] )),float(random(20) [сам уже понял] ),2.0);

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