Перейти к содержанию

Поиск сообщества

Показаны результаты для тегов 'pawn'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Информационный раздел
    • Новости портала
    • Техническая поддержка
    • Приватный форум
  • CRMP 0.3е
    • Помощь по Скриптингу
    • Ошибки
    • Готовые сервера
    • Дополнительные скрипты
    • Мануалы/Уроки
    • Модификации
    • Поиск
    • Архив Вопросов/Проблем/Ошибок
    • Файловый архив
    • Другое
  • SAMP/CRMP 0.3.7
    • Помощь по Скриптингу
    • Ошибки
    • Готовые сервера
    • Плагины
    • Поиск
    • Документация
  • Другое
    • Флейм

Поиск результатов в...

Поиск результатов, которые содержат...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Найдено: 1,434 результата

  1. Данные операторы используются в циклах: for, while, do-while. Оператор break завершает работу цикла, а оператор continue, пропускает оставшееся действие цикла и повторяется снова. Рассмотрим два оператора в действии. У нас есть цикл for из прошлого урока: new point; while(point<=5) { point++; SendClientMessage(playerid,0x33AA33AA,"Привет"); }Начнем с оператора break, он завершает работу цикла. Давайте внутри цикла поставимтакое условие: если point = 3, цикл завершает работу. new point; while(point<=5) { if(point==3) { break; } point++; SendClientMessage(playerid,0x33AA33AA,"Привет");} В этом примере в чат выведется сообщение с текстом «Привет» вместо 6 раз, всего 3, потому что цикл повторится только 3 раза. Теперь об операторе continue. Для начала в том же примере мы переместим инкрементированную переменную point внутрь условной конструкции, перед самим оператором continue. new point; while(point<=5) { point++; if(point==3) { continue; } SendClientMessage(playerid,0x33AA33AA,"Привет"); }В данном примере сообщение с текстом «Привет» выведется в чат игроку не 6 а 5 раз. Всепотому что, когда переменная point становится равной 3, переменная инкрементируется и становится равной 4, но текст с сообщением не выводится, потому что оператор continue пропускает оставшееся действие цикла и повторяет его снова, т.е. все что под оператором уже не выполняется. Автор Cloud
  2. Devin Coleman

    Урок №8 – Цикл For

    new point; while(point<=5) { point++; SendClientMessage(playerid,0x33AA33AA,"Привет"); }Сейчас я покажу как превратить цикл while в цикл for.Итак, конструкция цикла For следующая: for(переменная; условие; операция с переменной-счетчиком) { }Итак, для того чтобы цикл while превратить в цикл for, нужно:1. Переменную point с которой будет проводится операция вписать первой в скобки. 2. Далее через точку с запятой написать условие из цикла while. 3. Последним пишем инкрементированную переменную. 4. А функцию SendClientMessage оставляем на месте в теле цикла. Вот результат: for(new point; point<=5; point++) { SendClientMessage(playerid,0x33AA33AA,"Привет"); }Автор Cloud
  3. Devin Coleman

    Урок №7 – Цикл while и do-while

    Цикл While– повторяет свою функцию бесконечно до тех пор пока его условие выполняется. Если его условие не будет выполняться, цикл прекращает работу. Цикл выглядит следующим образом: new point; while(point<=5) { point++; SendClientMessage(playerid,0x33AA33AA,"Привет"); }В данном примере, цикл будет выполняться до тех пор пока значение переменной pointменьше или равно 5. Принцип работы вышеуказанного цикла: 1. Проверяем условие: 0 < 5, условие выполняется, а за ним цикл. 2. Инкрементируем переменную point (добавляем к ее значению единицу). 3. Выводим в чат сообщение с текстом «Привет». 4. Повторяем цикл. 5. Проверяем условие: 1 < 5, условие выполняется, а за ним цикл, и так далее по кругу. В данном примере, сообщение с текстом «Привет» выведется в чат игроку 6 раз. Цикл do while выполняет свои функции с точностью да наооборот. Вот пример того же цикла: new point; do { point++; SendClientMessage(playerid,0x33AA33AA,"Привет"); } while(point<=5)Данный цикл выполняет свою функцию и только потом проверяет условие. Если условиевыполняется, цикл повторяется. Принцип работы вышеуказанного цикла: 1. Инкрементируем переменную point (добавляем к ее значению единицу). 2. Выводим в чат сообщение с текстом «Привет». 3. Проверяем условие: 1 < 5, условие выполняется. 4. Повторяем цикл и так по кругу. В данном примере, сообщение с текстом «Привет» выведется в чат игроку 5 раз. Вот в принципе все о данном цикле, все не так уж и сложно. Автор Cloud
  4. Условные конструкции позволяют Вам посмотреть, удовлетворяют ли данные условиям, а затем в зависимости от результата выполнить код. Для того, чтобы работать с условными конструкциями, сначала нужно выучить операторы сравнения, с помощью которых ставится условие для определенной конструкции. В приведенной ниже таблице приведены все условные операторы и их применение. If – это условный оператор, в скобках перед оператором пишется условие. После скобок точка с запятой не ставится. В фигурных скобках пишется код, если условие выполнится, если условие не выполнится, код также не выполнится. Else – это также условный оператор, но он выполняет свои функции только в том случае если условие в if не выполнилось. Тоесть, оператор if можно назвать как оператор «если», а еlse как оператор «иначе». Давайте поставим простейшее условие: Например, у нас есть две переменные с разными значениями. new samp = 12; new pawn = 8;Теперь поставим такое условие: Если переменная samp равна переменной pawn, то даемигроку денег, если не равна, то отнимаем у игрока деньги. if (samp == pawn) //если samp равно pawno { GivePlayerMoney(playerid,1000); //даем игроку 1000$ }else{ GivePlayerMoney(playerid,-1000); //отбираем у игрока 1000$ }Условия могут быть как одноуровневыми, так и многоуровневыми. Одноуровневое условие,это обычное условие (которое приведено выше), а многоуровневое, это то условие (которое приведено ниже), внутри которого есть еще одно или несколько вложенных условий. При построении многоуровневых условий, пишите код лесенкой, чтобы потом не запутаться в большом количестве условий, пишется это так: if(IsPlayerConnected(playerid)) //если игрок подключен к серверу { if (samp == pawn) //если samp равно pawno { GivePlayerMoney(playerid,1000); //даем игроку 1000$ }else{ GivePlayerMoney(playerid,-1000); //отбираем у игрока 1000$ } }else{ //если игрок не подключен к серверу //выполнить другой код } Автор Cloud
  5. Devin Coleman

    Урок №5 – Массивы

    Массив – это виртуальная таблица, т.е большое место для хранения большого количества данных. Массивы бывают одномерный, двумертными и трехмерными. Запомните, что в массиве вы не можете использовать последнюю строку или столбец. Одномерный массив – это один столбец, разбитый на указанное в квадратных скобках количество ячеек. Одномерный массив объявляется следующим образом: new pawn[5] = {347,782,632,437,721}; //одномерный массив целочисленного типаПоскольку массив эта виртуальная таблица, сейчас я научу вас обращаться к определеннойячейке данной таблицы и получать из нее данные или наоборот записывать в нее данные. Массив, как и любая переменная тоже может быть: целочисленным, вещественным, логическим и строковым. Последние два мне встречать не доводилось. new Float:pawn[5] = {347.24,782.35,632.67,437.32,721.73}; //одномерный массив вещественного типаИтак, чтобы обратиться к ячейке со значением 782, вы пишете ссылку на нее. Ссылка будетвыглядеть следующим образом: //в квадратных скобках пишем номер ячейки к которой обращаемся pawn[1]Не забываем, что отсчет ячеек начинается с 0, поэтому в квадратных скобках стоит единица.Теперь мы можем делать все что угодно с данным значением, например прибавим к ему любую цифру или прибавим значение из любой другой ячейки: pawn[1] += 2.4; //значение в ячейке pawn1 станет 784.9 pawn[1] += pawn[0]; //значение в ячейке pawn1 станет 1129.59Двумерный массив – это виртуальная таблица, состоящая из множества строк и столбцов.Первая цифра указывает количество строк, вторая цифра количество столбцов. Столбец и строка 0 тоже учитывается. Объявляется двумерный массив следующим образом: new pawn[3] = { //двумерный массив целочисленного типа {347,782,632}, {437,721,572}, {168,472,828} }Чтобы обратиться к определенной ячейке, например к ячейке со значением 828, нам нужнонаписать такую ссылку: //в квадратных скобках пишем номер ячейки к которой обращаемся pawn[2][2]Тоесть в скобках мы указываем 2 строка, 2 столбец где находится эта ячейка. Если мы хотимобратиться к ячейке с цифрой 437, мы указывает в скобках 1 строка, 0 столбец. А дальше мы можем делать со значением ячейки все что угодно. С Трехмерными массивами я не разу не встречался, но думаю в новом издании учебника я смогу объяснить вам как с ним работать, хотя вам я думаю врятли он будет нужен. Кроме обычных массивов есть массив enum. Эта хранилище переменных, т.е. данный массив хранит не какие-либо значения, а сами переменные. По другому его можно назвать массив переменных. Массив объявляется таким образом: enum pawn { pMoney, pAdmin }Чтобы обратится к переменной, нужно создать еще одну переменную, которая поможет намс этой задачей: new samp[MAX_PLAYERS][pawn];С MAX_PLAYERS в названии переменной мы уже знакомы, а во вторых скобках указываетсяназвание массива. Итак, чтобы обратиться к переменной из массива, мы пишем такую строчку: samp[playerid][pMoney];Теперь вы можете изменять значение переменной в массиве, как вам вздумается, напримерприбавим к значению переменой pMoney 100. samp[playerid][pMoney] += 100; Автор Cloud
  6. Devin Coleman

    Урок №4 Математика в Pawn

    Переменные целочисленного и вещественного типа, могут принимать различные числовые значения. Со значениями переменных можно проводить различные математические операции. Для этого есть операторы: сложения, вычитания, деления и умножения, которые приведены ниже: В привиденных выше примерах, указаны имена 3 переменных. При сложениизначений переменных, переменная pawn – это первое слагаемое, переменная samp – это второе слагаемое. Переменная result – это сумма слагаемых. Допустим у нас уже есть эти переменные, для переменных pawn и samp мы уже присвоили значения, а в переменной result будет сумма слагаемых. new pawn = 25; new samp = 5; new result;Вот примеры математических операций по приведенной выше таблице, тут все просто: result = pawn += samp; //переменная result = 30 result = pawn -= samp; //переменная result = 20 result = pawn *= samp; //переменная result = 110 result = pawn /= samp; //переменная result = 5Прошу обратить внимание. Если вы пытаетесь сложить, вычесть, делить или умножитьцелое число и десятичное число, переменная с результатом должна быть вещественного типа. new Float:pawn = 25.9; new samp = 5; new Float:result;Также прошу обратить внимание, на то что, переменная с результам должна быть всегдавпереди, т.е. мы не можем сначала сложить, а потом только поставить знак равно и переменную result. pawn += samp = result; //это неправильно, result должен быть впередиТут все очень просто, поэтому переходим к следующему уроку. Автор Cloud
  7. Инкремент прибивляет к значению переменной единицу. Декремент отнимает единицу от значения переменной. Допустим у нас есть одна переменная c значением по умолчанию = 25. new pawn = 25;Чтобы отнять от значения переменной единицу, мы пишем следующее: pawn--; //pawn равен 24Чтобы прибавить единицу к значению переменной, мы пишем следующее: pawn++; //pawn равен 26Когда мы прибавляем к значению переменной единицу при помощи инкремента, такимобразом мы инкрементируем переменную. Когда мы отнимает от значения переменной единицу при помощи декремента, таким образом мы декрементируем переменную. Запомните это! К переменной можно прибавить и отнять единицу не только с помощью инкремента и декремента. Но об этом в следующем уроке. Автор Cloud
  8. Devin Coleman

    Урок №2 Константы

    Урок №2 - Константы Константы – это неизменяемые переменные. Константа объявляется следующим образом: #define PAWN 25Таким образом, мы создали простую константу. Константы очень удобно использовать длязамены сложных параметров, таких как color, в котором указывается HEX-код цвета в виде «0xAFAFAFAA», гораздо удобнее написать COLOR_GREY, вместо этого сложного кода. #define COLOR_GREY 0xAFAFAFAA //серый #define COLOR_GREEN 0x33AA33AA //зеленый #define COLOR_RED 0xAA3333AA //красный #define COLOR_YELLOW 0xFFFF00AA //желтый #define COLOR_WHITE 0xFFFFFFAA //белый #define COLOR_BLUE 0x0000BBAA //синий #define COLOR_ORANGE 0xFF9900AA //оранжевыйВ стандартном инклуде a_samp уже есть много стандартных констант, которые можноиспользовать в скрипте. Ниже приведены константы лимитов сервера. Данные константы обычно используются в циклах for. #define MAX_PLAYER_NAME 24 //лимит символов игрока #define MAX_PLAYERS 500 //лимит игроков на сервере #define MAX_VEHICLES 2000 //лимит транспорта на сервере #define MAX_OBJECTS 400 //лимит объектов на сервере #define MAX_MENUS 128 //лимит меню на сервере #define MAX_3DTEXT_GLOBAL 1024 //лимит глобальных 3D текстов на сервере #define MAX_3DTEXT_PLAYER 1024 //лимит 3D текстов для игрока на сервере #define MAX_PICKUPS 2048 //лимит пикаповНиже я привел пример использования одной из констант. Этот скрипт будет простовыполняться для всех игроков. Пример использования: for(new i=0; i<MAX_PLAYERS; i++) { //выполнить код }А следующие ниже приведенные константы используются в функции OnPlayerState. Этоконстанты состояний игрока. Они используются в условиях, если параметр newstate равен одному из эти значений (0-9). #define PLAYER_STATE_NONE 0 // #define PLAYER_STATE_ONFOOT 1 //игрок ест #define PLAYER_STATE_DRIVER 2 //игрок управляет машиной #define PLAYER_STATE_PASSENGER 3 //игрок сидит в машине как пассажир #define PLAYER_STATE_EXIT_VEHICLE 4 //игрок выходит из машины #define PLAYER_STATE_ENTER_VEHICLE_DRIVER 5 //игрок входит в машину как водитель #define PLAYER_STATE_ENTER_VEHICLE_PASSENGER 6 //игрок входит в машину как пассажир #define PLAYER_STATE_WASTED 7 //игрок в розыске #define PLAYER_STATE_SPAWNED 8 //игрок появился в точке возрождения #define PLAYER_STATE_SPECTATING 9 //игрок спектаторНиже я привел простой пример использования одной из констант. Этот скрипт должен бытьвнутри функции OnPlayerState. Я поставил условие, если игрок не управляет машиной, выполнить код. Пример использования: if(newstate != PLAYER_STATE_DRIVER) //если игрок не управляет машиной { //выполнить код }Чтобы не запоминать id каждого оружия в инклуде есть константы оружия. Вместо цифр выможете использовать имена оружия, которые показаны в константах. Если вы хотите дать игроку какое-либо оружие, функцией GivePlayerWeapon мы пишем обычно такую строчку: GivePlayerWeapon(playerid,22,100);Если вы не помните id оружия, вы можете написать так: GivePlayerWeapon(playerid,WEAPON_COLT45,100);Ниже приведены константы всего оружия: #define WEAPON_BRASSKNUCKLE 1 #define WEAPON_GOLFCLUB 2 #define WEAPON_NITESTICK 3 #define WEAPON_KNIFE 4 #define WEAPON_BAT 5 #define WEAPON_SHOVEL 6 #define WEAPON_POOLSTICK 7 #define WEAPON_KATANA 8 #define WEAPON_CHAINSAW 9 #define WEAPON_DILDO 10 #define WEAPON_DILDO2 11 #define WEAPON_VIBRATOR 12 #define WEAPON_VIBRATOR2 13 #define WEAPON_FLOWER 14 #define WEAPON_CANE 15 #define WEAPON_GRENADE 16 #define WEAPON_TEARGAS 17 #define WEAPON_MOLTOV 18 #define WEAPON_COLT45 22 #define WEAPON_SILENCED 23 #define WEAPON_DEAGLE 24 #define WEAPON_SHOTGUN 25 #define WEAPON_SAWEDOFF 26 #define WEAPON_SHOTGSPA 27 #define WEAPON_UZI 28 #define WEAPON_MP5 29 #define WEAPON_AK47 30 #define WEAPON_M4 31 #define WEAPON_TEC9 32 #define WEAPON_RIFLE 33 #define WEAPON_SNIPER 34 #define WEAPON_ROCKETLAUNCHER 35 #define WEAPON_HEATSEEKER 36 #define WEAPON_FLAMETHROWER 37 #define WEAPON_MINIGUN 38 #define WEAPON_SATCHEL 39 #define WEAPON_BOMB 40 #define WEAPON_SPRAYCAN 41 #define WEAPON_FIREEXTINGUISHER 42 #define WEAPON_CAMERA 43 #define WEAPON_PARACHUTE 46 #define WEAPON_VEHICLE 49 #define WEAPON_DROWN 53 #define WEAPON_COLLISION 54Константы очень удобно использоваться, чтобы вынести в начало скрипта, все частоиспользуемые значения переменных или параметров функций. Например, во многих скриптах часто используется такая константа. #define MAX_POINTS 25 new massive[MAX_POINTS][3] = {Она обычна, используется для массивов и указывает количество строк в массиве, какпоказано на примере выше. Также можно встретить в некоторых скриптах такие константы: #define ACCOUNT “%s.ini”Они предназначены для систем регистрации, т.е. показывают путь до файла, в которыйпроизводится запись. Так что у констант широкое применение. Теперь переходим к следующему уроку. Автор Cloud
  9. Devin Coleman

    Урок №1 - переменные

    Урок №1 - Переменные Переменные – это места где вы можете хранить данные. Имена переменных чувствительны к регистру, поэтому переменные Pawn и PAWN, разные переменные. Переменные могут быть разных типов. Целочисленный тип переменной может хранить в себе только целые числа. Вы не можете использовать десятичные числа с нулем на конце (1.0, 2.0 и т.д.) так как это все равно считается технически не целым числом. Чтобы объявить (создать) целочисленную переменную, нужно написать: new pawn;Таким образом мы создали целочисленную переменную с именем Pawn. При созданииновой переменной ей можно присвоить значение по умолчанию. Чтобы присвоить значение переменной pawn, нужно написать следующее: new pawn = 25;Переменная вещественного типа может хранить в себе только десятичные числа.Объявляется она следующим образом: new Float:pawn = 25.3;Таким образом мы создали вещественную переменную и присвоили ей значение.Переменная логического типа может принимать только два значения: истина (true) – эквивалентна 1 и ложь (false) – эквивалентна 0. По умолчанию данный тип переменной принимает значение false. Объявляется переменная следующим образом: new bool:pawn = true;Таким образом мы создали логическую переменную и присвоили ее значение true.Также переменные могут быть глобальными и локальными. Глобальные переменные объявляются в начале скрипта и они доступны всему скрипту, т. е. обратиться к переменной можно из любой автовызываемой функции. Локальные переменные объявляются в теле автовызываемой функции и они доступны только в внутри этой функции, из другой функции скрипта, ее вызвать нельзя. new pawn; // это глобальная переменная public OnGameModeInit() { new samp; // это локальная переменная return 1; }Строка – это место для хранения букв или символов. Строки должны быть помещены вмассив, так как каждая ячейка может содержать букву. Чтобы объявить строковую переменную, нужно написать следущее: new pawn[5] = “samp”;Таким образом мы создали строковую переменную и присвоили ей значение «samp». Числов квадратных скобках означает количество ячеек выделенное для строки. Почему 5 ячеек, когда слово состоит из 4 букв, потому что вы должны указать экстра-ячейку для идентификатора строки – 0. Тоесть цифра в квадратных скобках всегда больше значения переменной на единицу. Переменные могут быть предназначены как для всех игроков, так и для конкретного игрока. Если мы хотим сделать переменную индивидуальной для каждого игрока, то мы пишем так, пишу для всех типов переменных: new pawn[MAX_PLAYERS] = 25; //переменная целочисленного типа для каждого игрока new Float:pawn[MAX_PLAYERS] = 25.4; //переменная вещественного типа для каждого игрока new bool:pawn[MAX_PLAYERS] = true; //переменная логического типа для каждого игрокаMAX_PLAYERS означает, что переменная будет использоваться для всех игроков, т.е. длякаждого игрока у переменной свое значение. Если точнее, то у разных игроков разные значения этой переменной. new pawn[MAX_VEHICLES] = 25; //переменная целочисленного типа для каждого транспорта new Float:pawn[MAX_VEHICLES] = 25.4; //переменная вещественного типа для каждого транспорта new bool:pawn[MAX_VEHICLES] = true; //переменная логического типа для каждого транспортаMAX_VEHICLES означает, что переменная будет использоваться для всего транспорта, т.е.для каждого транспорта у переменной свое значение. Чтобы обратиться к такой переменной нужно написать следующее, пишу пример для обоих вариантов: pawn[playerid] = 5; // устанавливаем значение переменной для игрока на 5 pawn[vehicleid] = 5; // устанавливаем значение переменной для транспорта на 5Автор Cloud
  10. ByMeR_OK

    RussianNicks v0.2

    Плагин позволяет использовать русские никнеймы. Поддерживаемые версии: SA:MP Server 0.3c SA:MP Server 0.3c R2 RussianNicks.zip
  11. ByMeR_OK

    Античит на оружие

    Сейчас я расскажу как создать эффективный анти-чит на оружие. Начнем. Для начало добавим массивчики. new Weapons[MAX_PLAYERS][47];Теперь в OnPlayerConnect for(new i=0;i<47;i++) Weapons[playerid][i]=0;//обнулениеДальше в OnPlayerStateChange добавляем следующие чтоб анти-чит не сработал при посадке например в самолет. if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) { new model = GetVehicleModel(GetPlayerVehicleID(playerid)); switch(model) { case 592,577,511,512,520,593,553,476,519,460,513,548,425,417,487,488,497,563,447,469: Weapons[playerid][46]= 1; case 457: Weapons[playerid][2]= 1; case 596,597,598,599: Weapons[playerid][25]= 1; } }Теперь проверка можете поставить ее под таймер ну или как вам удобно. new weap = GetPlayerWeapon(playerid); if(weap != 0 && !Weapons[playerid][weap] && weap != 40) { //Действие например кик Kick(playerid); }Теперь макрос выдачи оружия. stock GiveWeapon(player,weapid,ammo); { Weapons[player][weapid]= 1; GivePlayerWeapon(player,weapid,ammo); return ; }Теперь нужно заменить все GivePlayerWeapon на GiveWeapon можете делать вручную а можете поставить макрос. #define GivePlayerWeapon GiveWeaponВсе урок окончен.
  12. ByMeR_OK

    Анти побег из тюрьмы

    Всем привет! Вот простая как бы проверка , для того чтобы игрок не сбежал из тюрьмы Что она делает: Если игрок сидит в КПЗ , и будет читерить , то есть сбежит из клетки то через некоторое время его вернет в клетку. Чтобы поставить ее ко всем forward добавьте : forward UpdateJailZone();Затем в public OnGameModeInit добавьте таймер: SetTimer("UpdateJailZone",5000,1);//Он сработает через 5 секундИ затем куда-нибудь в конец мода добавьте следующий паблик: public UpdateJailZone() { for(new i; i < GetMaxPlayers(); i++) { if(IsPlayerConnected(i)) { if(PlayerInfo[i][pJailed] == 1)//Вот тут идет проверка на то если игрок сидит в КПЗ { if(!IsPlayerInRangeOfPoint(6.0, i, 264.6288,77.5742,1001.0391))//Тут идет проверка если игрок не находится в заданных координатах { new string[128]; new name[MAX_PLAYER_NAME]; GetPlayerName(i, name, sizeof(name)); SetPlayerInterior(i, 6);//И если его там нет , то его телепортирует в 6 интерьер , то есть клетка кпз SetPlayerPos(i,264.6288,77.5742,1001.0391);//И в телепортирует в эти координаты , измените если у вас другие SendClientMessage(i,COLOR_RED,"* Я че то не понял , у тебя срок , куда пошёл , а ну назад!"); format(string, 256, "*Сервер: %s попытался сбежать из КПЗ , проверьте его!",name);//Ну понятно , сообщение для администраторов ABroadCast(COLOR_YELLOW,string,1); } } } } return 1; }Вот и все! Удачи
  13. ByMeR_OK

    Античит на Fly Hack

    Автор: Hawkins В public OnPlayerUpdate(playerid) Вставляем этот код if(!IsPlayerInAnyVehicle(playerid)) { new animlib[30], animname[30];//переменные GetAnimationName(GetPlayerAnimationIndex(playerid), animlib, sizeof(animlib), animname, sizeof(animname));//проверка на анимацию new Float:posx, Float:posy, Float:posz;//переменные GetPlayerPos(playerid, posx, posy, posz);//проверка на координаты if(posz >= 2)//Если posz равен либо больше 2 метров, то.... { if(strcmp(animlib, "SWIM", true) == 0 && strcmp(animname, "SWIM_crawl", true) == 0)//проверяем на анимацию, если все верно то.... { new plname[MAX_PLAYER_NAME];//переменная new string[256];//string GetPlayerName(playerid, plname, sizeof(plname));//узнаем имя игрока format(string,sizeof(string),"%s был кикнут. Причина: Fly Hack",plname);//имя мы бьем через format SendClientMessageToAll(0xFFFFFFFF, string);//показываем всем игрокам Kick(playerid);//кикаем игрока } } } Внимание: античит не срабатывает, если Fly включить в машине
  14. ByMeR_OK

    Античит на healcar

    Приветствую всех блаблабла... решил написать готовое решение про античит на починку автомобиля где нибудь выше я лично всегда в инклуд их пишу... new VehicleHealth[i] = 1000.0;в public OnGameModeInit() for(new i=1;i<MAX_VEHICLES;i++) VehicleHealth[i] = 1000.0;если у вас не имеется посекундного келбака добавляем туда же ( OnGameModeInit ) SetTimer("Checkhpcar", 1000, true);далее #define PNSCS 9 new Float:PnSC[ PNSCS ][ 3 ] = { {720.2800,-457.2757,16.3359}, {-1421.1030,2584.5122,55.8433}, {-99.8468,1118.1559,19.7417}, {2063.5869,-1831.5231,13.5469}, {-2425.7590,1021.3259,50.3977}, {1974.2336,2162.3240,11.0703}, {487.1933,-1738.4077,11.1189}, {1025.2147,-1024.2096,32.1016}, {-1904.1440,283.5843,41.0469} }; stock IsPlayerAtPnSpray( playerid ) { if( !GetPlayerInterior( playerid ) ) return false; for(new i = 0; i < PNSCS; i++) { if(IsPlayerInRangeOfPoint( playerid , 15.0, PnSC[i][0], PnSC[i][1], PnSC[i][2] )) { return true; } } return false; } forward Checkhpcar(); public Checkhpcar() { new vehhl, vehid, str[MAX_PLAYER_NAME]; for(new i;i<MAX_GetMaxPlayers();i++) { vehid = GetPlayerVehicleID(i); if( !vehid ) { continue; } GetVehicleHealth(vehid, vehhl); if( VehicleHealth[vehid] >= vehhl ) { VehicleHealth[vehid] = vehhl; continue; } if( !IsPlayerAtPnSpray(i) ) { GetPlayerName(i, str,sizeof str); format(str, sizeof(str), "[Античит]%s повысил машине здоровье(Было %f, Стало %f)", str,VehicleHealth[vehid],vehhl); SendClientMessageToAll( COLOR_GREY, str );//ну тут ставим что хотим SetVehicleHealth(vehid, VehicleHealth[vehid] ); //я решил ставить машине столько хп сколько и было } VehicleHealth[vehid] = vehhl; }далее в public OnVehicleSpawn(vehicleid) VehicleHealth[vehicleid] = 1000.0;если в механиком пополняете хп или так далее у вас в моде где то используется VehicleHealth[ТУТ ид авто типо] = 1000.0;функция для определения координат пейнспрейАвтор урока TAP04eGG
  15. ByMeR_OK

    Anti NOP RemovePlayerFromVehicle

    В конец мода. public AntiRemovePlayerFromVehicle(playerid) { new playeridname[MAX_PLAYER_NAME]; new strings[64]; GetPlayerName(playerid,playeridname, sizeof(playeridname)); if (GetPlayerState(playerid) == 2)//В авто { format(strings, sizeof(strings), "%s кикнут. Причина: NOP RemovePlayerFromVehicle (Sobeit)",playeridname); SendClientMessageToAll(COLOR_LIGHTRED, strings); Kick(playerid);// Так как может быть и баг(10% случаев) то просто кикаем, а не баним } }Сразу после каждой функции в вашем моде RemovePlayerFromVehicle SetTimerEx("AntiRemovePlayerFromVehicle" , 2800, false, "i", playerid);//Это таймер на проверку на позицию читера в авто 2800 примерно дается на вылет чела из авто, если он всё еще там, то выполняем действие В функции собейта есть NOP RemovePlayerFromVehicle это дает человеку то что его не выкидывает из авто. Урок сам по себе легкий, и не состовляет труда вставить его в мод, Автор: Misha. Если вы сам читер то. public AntiRemovePlayerFromVehicle(playerid) { new playeridname[MAX_PLAYER_NAME]; new strings[64]; GetPlayerName(playerid,playeridname, sizeof(playeridname)); if (GetPlayerState(playerid) == 2)//IN CAR { if (PlayerInfo[playerid][pAdmin] >= 1) { SendClientMessageToAll(COLOR_YELLOW,"На этом сервере админы читеры"); } else { format(strings, sizeof(strings), "%s кикнут. Причина: NOP RemovePlayerFromVehicle (Sobeit)",playeridname); SendClientMessageToAll(COLOR_LIGHTRED, strings); Kick(playerid); } } }
  16. ByMeR_OK

    Анти NOP PutPlayerInVehicle

    Это поможет избавится от читеров которые включили NOP NopPutPlayerInVehicle то есть не посадишь их в авто Для начала в любое место мы засунем callback forward AntiNopPutPlayerInVehicle(playerid); public AntiNopPutPlayerInVehicle(playerid) { new name[MAX_PLAYER_NAME],string[128]; GetPlayerName(playerid,name,MAX_PLAYER_NAME); if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) { format(string,sizeof string,"%s кикнут. Причина: NOP PutPlayerInVehicle",name); SendClientMessageToAll(0xAFAFAFAA, string); Kick(playerid); } }Для удобства вот функция меняете PutPlayerInVehicle на PutPlayerInVehicleEx stock PutPlayerInVehicleEx(playerid,vehicleid,mesto) { PutPlayerInVehicle(playerid,vehicleid,mesto); SetTimerEx("AntiNopPutPlayerInVehicle" , 350, false, "i", playerid); } Автор: TAP04eGG
  17. ByMeR_OK

    Анти NOP SetPlayerPos

    Это решение поможет ещё чуть сильнее усложнить жизнь читерам, а именно палить NOP SetPlayerPos. Куда нибудь в конец мода копируем: forward AntiNOPSetPlayerPos(playerid, Float:x, Float:y, Float:z); public AntiNOPSetPlayerPos(playerid, Float:x, Float:y, Float:z) { new string[128]; if(!IsPlayerInRangeOfPoint(playerid, 3.0, x, y, z)) { format(string, sizeof(string), "%s[%d] кикнут. Причина: NOP SetPlayerPos", PlayerName(playerid), playerid); return SendClientMessageToAll(0xFF0000AA, string); } return 1; }Ну и сама функция (Заменить все SetPlayerPos у себя в моде, на SetPlayerPosAC): stock SetPlayerPosAC(playerid, Float:x, Float:y, Float:z) { SetPlayerPos(playerid, x, y, z); SetTimerEx("AntiNOPSetPlayerPos", 500, false, "ifff", playerid, x, y, z); // Где 500, это время в миллисекундах когда будет производиться проверка на нахождение игрока. // Если у вас кикает всех подряд, увеличивайте это время return 1; }Если у кого нету функции PlayerName: stock PlayerName(playerid) { new Name[MAX_PLAYER_NAME]; GetPlayerName(playerid, Name, sizeof(Name)); return Name; } Автор: eFFect
  18. Здравствуйте сегодня я вам покажу как зделать вот такой TextDraw LvL, Respect Начнем: В начало мода, где все "new" добавляем это: new Text:InfoTextDraw; После чего ищем "public OnPlayerDisconnect" и добавляем это: TextDrawHideForPlayer(playerid, InfoTextDraw);(Добавлять его нужно в самом начале) Далее ищем "public OtherTimer()" и после "if(IsPlayerConnected(i))" добавляем if(gPlayerLogged[i] == 1) { TextDrawHideForPlayer(i, InfoTextDraw); format(string,sizeof(string),"LVL: %d~n~Respect: %d/%d",PlayerInfo[i][pLevel],PlayerInfo[i][pExp],levelexp); InfoTextDraw = TextDrawCreate(502.000000,3.000000,string); TextDrawAlignment(InfoTextDraw,0); TextDrawBackgroundColor(InfoTextDraw,0x000000ff); TextDrawFont(InfoTextDraw,1); TextDrawLetterSize(InfoTextDraw,0.399999,1.000000); TextDrawColor(InfoTextDraw,0xffffffff); TextDrawSetOutline(InfoTextDraw,1); TextDrawSetProportional(InfoTextDraw,1); TextDrawSetShadow(InfoTextDraw,1); TextDrawShowForPlayer(i, InfoTextDraw); } Автор урока: аkion
  19. Lexa

    Заснуть дома

    Ко все new new spit[MAX_PLAYERS]; new Ustalost[MAX_PLAYERS];ко всем forward forward IsAtSleepPlace(playerid);Ко всем командам: if(!strcmp(cmdtext, "/sleep", true)) // { if(IsPlayerConnected(playerid)) { if(gPlayerLogged[playerid] == 0) { SendClientMessage(playerid, COLOR_GREY, " Сначала нужно залогиниться !"); return 1; } for(new i = 0; i < sizeof(HouseInfo); i++) { if(!PlayerToPoint(50, playerid,HouseInfo[i][hExitx], HouseInfo[i][hExity], HouseInfo[i][hExitz]) && HouseInfo[i][hWorld] == GetPlayerVirtualWorld(playerid) && !IsAtSleepPlace(playerid) && !IsPlayerInAnyVehicle(playerid)) { SendClientMessage(playerid,COLOR_GREY,"Здесь нельзя поспать (Можно в домах,некоторых помойках,под некоторыми мостами,в мотелях,переходах,подворотнях)"); return 1; } } if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { SendClientMessage(playerid,COLOR_GREY,"За рулём спать собрался чтоли? А ну иди на пассажирское место!"); return 1; } if(spit[playerid] != 1) { SendClientMessage(playerid,COLOR_GREY,"Вы легли поспать,ваш сон будет примерно 3 минуты"); SendActionMessage(playerid,30.0,"лёг спать"); SetPlayerCameraPos(playerid, 2000,-2000,2000); SetPlayerCameraLookAt(playerid, 2000,-2000,2000); SetTimerEx("prosnutsa", 180000, false, "i", playerid); ApplyAnimation(playerid,"CRACK","crckidle2",4.1,0,1,1,1,1); spit[playerid] = 1; Ustalost[playerid] = 0; } else { SendClientMessage(playerid, COLOR_GREY, " Вы уже спите !"); return 1; } } return 1; }Далее,где enum hInfoдобавляем: hWorld,Далее добавим паблик,лучше в самый конец мода public IsAtSleepPlace(playerid) { if(IsPlayerConnected(playerid)) { if(PlayerToPoint(6.0,playerid,861.8582,-1380.4661,15.7779) || PlayerToPoint(6.0,playerid,1075.9895,-1826.3264,14.0319)) { return 1; } else if(PlayerToPoint(6.0,playerid,1191.6880,-1736.3153,13.6672) || PlayerToPoint(6.0,playerid,2111.8286,-1994.2130,13.3239)) { return 1; } else if(PlayerToPoint(6.0,playerid,2139.1306,-2036.4802,8.3623) || PlayerToPoint(8.0,playerid,1938.4232,-1985.6976,13.1402)) { return 1; } else if(PlayerToPoint(5.0,playerid,1937.2020,-1968.5782,13.0773) || PlayerToPoint(8.0,playerid,1884.7308,-1945.0990,13.1423)) { return 1; } else if(PlayerToPoint(6.0,playerid,1864.4152,-1967.8810,13.1388) || PlayerToPoint(10.0,playerid,1689.5800,-1975.1376,8.8253)) { return 1; } else if(PlayerToPoint(8.0,playerid,1764.8883,-1931.1603,13.1615) || PlayerToPoint(6.0,playerid,1721.4628,-1473.6381,13.1436)) { return 1; } else if(PlayerToPoint(8.0,playerid,2113.7390,920.1079,10.5255) || PlayerToPoint(6.0,playerid,-1327.7218,2678.8723,50.0625)) { return 1; } else if(PlayerToPoint(8.0,playerid,656.4265,-559.8610,16.5015) || PlayerToPoint(6.0,playerid,656.3797,-570.4138,16.5015)) { return 1; } else if(PlayerToPoint(8.0,playerid,1605.4766,-1515.3605,13.1733) || PlayerToPoint(6.0,playerid,1315.5934,-864.4917,39.1719) || PlayerToPoint(6,playerid,1521.2664,-1016.6686,23.9486)) { return 1; } else if(PlayerToPoint(8.0,playerid,860.2096,-970.2845,35.5127) || PlayerToPoint(6.0,playerid,-39.5028,-2493.9001,36.2409)) { return 1; } else if(PlayerToPoint(8.0,playerid,-33.4615,-2490.5251,36.2427) || PlayerToPoint(6.0,playerid,-27.3743,-2487.0615,36.2436)) { return 1; } else if(PlayerToPoint(8.0,playerid,-18.1828,-2493.8157,36.2308) || PlayerToPoint(6.0,playerid,-16.8900,-2496.3503,36.2479)) { return 1; } else if(PlayerToPoint(8.0,playerid,-14.7589,-2500.5281,36.2456) || PlayerToPoint(6.0,playerid,-4.5188,-2520.3516,36.2498)) { return 1; } else if(PlayerToPoint(8.0,playerid,-9.7642,-2523.4021,36.2500) || PlayerToPoint(6.0,playerid,-13.3824,-2525.3677,36.2537)) { return 1; } else if(PlayerToPoint(8.0,playerid,-17.9037,-2527.8225,36.2526) || PlayerToPoint(6.0,playerid,24.3956,-2646.8835,40.0578)) { return 1; } else if(PlayerToPoint(8.0,playerid,-267.7636,-1632.8037,4.7641) || PlayerToPoint(6.0,playerid,-607.5358,-1075.1150,23.1155) || PlayerToPoint(20.0,playerid,274.9913,1956.8008,17.6406)) { return 1; } else if(PlayerToPoint(8.0,playerid,-601.1035,-1066.0096,22.9978) || PlayerToPoint(6.0,playerid,-594.9907,-1057.6005,22.9655)) { return 1; } else if(PlayerToPoint(8.0,playerid,-588.9382,-1049.1849,22.9331) || PlayerToPoint(6.0,playerid,-582.3942,-1041.1062,23.1991)) { return 1; } else if(PlayerToPoint(8.0,playerid,-576.9140,-1033.4305,23.3980) || PlayerToPoint(6.0,playerid,-89.4542,1229.1079,19.3180) || PlayerToPoint(6.0,playerid,-47.8544,1309.4165,11.6390)) { return 1; } } return 0; }
  20. if(strcmp(cmd, "/home", true) == 0) { if(IsPlayerConnected(playerid)) { if(PlayerInfo[playerid][pPhousekey] != 255) { SetPlayerCheckpoint(playerid,HouseInfo[PlayerInfo[playerid][pPhousekey]][hEntrancex], HouseInfo[PlayerInfo[playerid][pPhousekey]][hEntrancey], HouseInfo[PlayerInfo[playerid][pPhousekey]][hEntrancez], 4.0); GameTextForPlayer(playerid, "~w~Waypoint set ~r~Home", 5000, 1); gPlayerCheckpointStatus[playerid] = CHECKPOINT_HOME; } else { GameTextForPlayer(playerid, "~w~You are homeless", 5000, 1); } } return 1; }
  21. ByMeR_OK

    Создание Кафе в диалогах

    Сначало добавляим ко всем new: new kafe;Потом добавляем в public OnGameModeInit() вот это: kafe = CreatePickup(1239,1274,1949.8828,-1984.9989,13.5469);// место нахождение пикапа кафе.Потом идём в public OnDialogResponse и добавим туда: if(dialogid == 534)// заместо 1 можно поставить любую другую цифру { if(response) { if(listitem == 0) { SetPlayerHealth(playerid,100); GivePlayerMoney(playerid,-500); PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0); } if(listitem == 1) { SetPlayerHealth(playerid,100); GivePlayerMoney(playerid,-600); PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0); } if(listitem == 2) { SetPlayerHealth(playerid,100); GivePlayerMoney(playerid,-450); PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0); } if(listitem == 3) { SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DRINK_BEER); PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0); GivePlayerMoney(playerid,-320); } if(listitem == 4) { SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DRINK_WINE); PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0); GivePlayerMoney(playerid,-1000); } if(listitem == 5) { SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DRINK_SPRUNK); PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0); GivePlayerMoney(playerid,-200); } if(listitem == 6) { SetPlayerSpecialAction(playerid,SPECIAL_ACTION_SMOKE_CIGGY); PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0); GivePlayerMoney(playerid,-750); } } return 1; }Потом идём в public OnPlayerPickUpPickup добавляем туда вот это: if(pickupid == kafe)// можно использовать любую другую цифру. { ShowPlayerDialog(playerid,534, DIALOG_STYLE_LIST, "Кафе", "Пелемени ($500)\nCалатик ($600)\nШашлык ($450)\nПиво ($320)\nВино ($1000)\nСпранк ($200)\nСигареты ($750)", "Купить", "Отмена"); } return 1; }
  22. XuPypg

    Ограничитель скорости

    Всем привет! Вот выкладываю урок по созданию ограничителя скорости И так мы начинаем В начало мода добавляем #define MAX_SPEEDO 0.6 // Максимально допустимая скорость. #define SLOW_FACTOR 0.9 // На сколько будет сбавляться скорость при превышении порога. forward Timer(); new Limiter[MAX_PLAYERS]; new limtimer;В public OnPlayerConnect добавляем Limiter[playerid] = 0;В public OnPlayerCommandText добавляем if (strcmp("/limiter", cmdtext, true) == 0) { for(new i=0;i<MAX_PLAYERS;i++) { if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { if(Limiter[playerid] == 0) { SendClientMessage(playerid,0xAA3333AA,"Ограничитель скорости включен."); SendClientMessage(playerid,0xAA3333AA,"Что бы выключить используйте /offlimiter."); limtimer = SetTimer("Timer",1000,1); Limiter[playerid] = 1; } else { SendClientMessage(playerid ,COL OR_G REY, "Огр анич ител ь скорости уже включен."); } return 1; } SendClientMessage(playerid, COLOR_GRAD2, " Вы не в машине!"); return 1; } } if (strcmp("/offlimiter", cmdtext, true) == 0) { if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { if(Limiter[playerid] == 1) { KillTimer(limtimer); SendClientMessage(playerid,0xAA3333AA,"Ограничитель скорости выключен."); Limiter[playerid] = 0; return 1; } else { SendClientMessage(playerid,COL OR_G REY, "Огр анич ител ь скорости не включен."); return 1; } } SendClientMessage(playerid, COLOR_GRAD2, "Вы не в машине!"); return 1; }В public OnPlayerStateChange добавляем if(newstate == PLAYER_STATE_ONFOOT) {Ниже добавляем KillTimer(limtimer); Limiter[playerid] = 0;Создаем новый паблик в конец мода public Timer() { new Float:x,Float:y,Float:z,veh; for(new i; i<MAX_PLAYERS; i++) { veh=GetPlayerVehicleID(i); GetVehicleVelocity(veh,x,y,z); if((x > MAX_SPEEDO || x < -MAX_SPEEDO) || (y > MAX_SPEEDO || y < -MAX_SPEEDO)) { SetVehicleVelocity(veh,x*SLOW_FACTOR,y*SLOW_FACTOR,z); } } } На этом наш урок законченВсем спасибо за внимание Автор урока: KaspeR Ставим плюсиГ
  23. ByMeR_OK

    Создание ворот

    В создании ворот участвует инклуд moveobject который и придает движение объекту с помощью координат,в этом уроке мы рассмотрим один пример... Вот сам пример скрипта ворот: #include <a_samp> new gate; public OnGameModeInit() { gate = CreateObject(modelid,x,y,z); } public OnPlayerCommandText(playerid,cmdtext[]) { if(strcmp(cmdtext,"/open",true) == 0) { MoveObject(gate,x,y,z-1000,10.0); } if(strcmp(cmdtext,"/close",true) == 0) { MoveObject(gate,x,y,z,10.0); } return 1; } Этот скрипт предназначен для FS(FilterScripta) Ну и конечно для того чтобы скрипт работал нужно поменять x y z на свои координаты Координаты можно найти с samp_debug , для этого надо встать вам на нужное место и написать /save , затем найти в папке с игрой текстовый документ saveposition Для того чтобы ворота находились в моде нужно 1.Поставить в начало : #include 2.Затем с помощью переменной new создать новые ворота : new gate 3.Поместить этот код со своими координатами в public OnGameModeInit: gate = CreateObject(modelid,x,y,z); И добавить в public OnPlayerCommandText(playerid,cmdtext[]) вот это: if(strcmp(cmdtext,"/open",true) == 0) { MoveObject(gate,x,y,z-1000,10.0); } if(strcmp(cmdtext,"/close",true) == 0) { MoveObject(gate,x,y,z,10.0); } Ну вот и всё,всё что не понятно пишите сюда....
  24. Gross95

    Команда /whels

    Сейчас я раскаду вам как зделать свой тюн я зделал эту команду из того что на крмп нету тюнов дажэ неона не видел но в этой команде есть 1 - не сохраняются колёса Сначало вставляем это enum gGarageGInfo { gModel, Float:gHP, gMod0, gMod1, gMod2, gMod3, gMod4, gMod5, gMod6, gMod7, gMod8, gMod9 }; new GarageGInfo[2222][gGarageGInfo]; enum cInfo { cModel, Float:cLocationx, Float:cLocationy, Float:cLocationz, Float:cAngle, cColorOne, cColorTwo, cOwner[MAX_PLAYER_NAME], cDescription[MAX_PLAYER_NAME], cValue, cLicense, cOwned, cLock, cNumbercar, cTeh, cWheel, cSpoiler, cPaintJob, cHood, cRoof, cSideskirt, cLamps, cNitro, cExhaust, cStereo, cHydraulics, cFrontbumper, cRearbumper, cVentright, cVentleft, cDate, }; не обращайте внимания на второй ENUM вырезал из мода где сохранялся тюнинг дальше в public OnPlayerCommandText(playerid, cmdtext[]) вставляем } if (strcmp(cmd, "/whels", true) == 0) { if(IsPlayerConnected(playerid)) { if(PlayerToPoint(4.0, playerid, 2157.818,-1838.433,20.469)) { //меняйте на свои tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD1, "Вводите: /whels [1-13]! "); return 1; } new wh = strval(tmp); if(wh==0 || wh>13) { SendClientMessage(playerid, COLOR_GRAD1, "Вводите: /whels [1-13]! "); return 1; } if(!IsPlayerInAnyVehicle(playerid)) { SendClientMessage(playerid, COLOR_GRAD1, " Приедте на машине, чтобы было куда ставить колёса!"); return 1; } new v = GetPlayerVehicleID(playerid); if( IsAPlane(v) || IsABoat(v)) { return 1; } AddVehicleComponent(v, wh+1072); new componentid = wh+1072; new vehicleid = v; if(GarageGInfo[vehicleid][gMod0]==0) { GarageGInfo[vehicleid][gMod0]=componentid; } else if(GarageGInfo[vehicleid][gMod1]==0) { GarageGInfo[vehicleid][gMod1]=componentid; } else if(GarageGInfo[vehicleid][gMod2]==0) { GarageGInfo[vehicleid][gMod2]=componentid; } else if(GarageGInfo[vehicleid][gMod3]==0) { GarageGInfo[vehicleid][gMod3]=componentid; } else if(GarageGInfo[vehicleid][gMod4]==0) { GarageGInfo[vehicleid][gMod4]=componentid; } else if(GarageGInfo[vehicleid][gMod5]==0) { GarageGInfo[vehicleid][gMod5]=componentid; } else if(GarageGInfo[vehicleid][gMod6]==0) { GarageGInfo[vehicleid][gMod6]=componentid; } else if(GarageGInfo[vehicleid][gMod7]==0) { GarageGInfo[vehicleid][gMod7]=componentid; } else if(GarageGInfo[vehicleid][gMod8]==0) { GarageGInfo[vehicleid][gMod8]=componentid; } else if(GarageGInfo[vehicleid][gMod9]==0) { GarageGInfo[vehicleid][gMod9]=componentid; } } else { SendClientMessage(playerid, COLOR_GRAD1, " Вы не в Авто мастерской! "); return 1; } } return 1; }команда готова комплитируем мод
  25. Здравствуйте дорогие пользователи сайта! Итак, начнём. 1)Для начала мы скачаем МТА, пройдя по ссылке. 2)Установим, думаю, с установкой не у кого проблем не будет 3)Запустим МТА и выберем режим Map Editor 4)Жмём Skip Tutorial (когда загрузится карта) 5)Летим в нужное место, с помощбю кнопок "W, A, S, D" 6)Когда долетели, жмите "F" и в нижнем левом углу у вас должен быть значок коробки. 7)Жмём на коробку 8)Перед вами появится весь перечень объектов GTA, проще знать ID объектов или их названия на Английском языке 9)Итак, мы нашли объект, щёлкаем по нему два раза. 10)Теперь ставим его в нужное место и снова кликаем (для того, чтобы поставить) 11)Если вам нужно сделать копию объекта, то на карте два раза щёлкнем по объекту и нажмём на кнопку "С" 12)Перетаскивать объект можно, удерживая "левую кнопку мыши" 13)Теперь, когда мы добавили всё, что нужно, ищем кнопку "Save as" (она должна быть в левом верхнем углу, в виде дискетки) 14)Теперь идём в папку с МТА: MTA San Andreas -> server -> mods -> deathmatch -> resources Дальше там будут паки и архивы, но чтобы найти все наши объекты, мы должны увидеть папку с названием, под которым вы сохранили добавленные объекты.15)Ищем в папке файл с расширением .map 16)Открываем его с помощью блокнота и копируем всё, что там есть 17)Идём на сайти вставляем наш текст, скопированный ранее, жмём Convert и получаем код для PAWNO 18)Открываем PAWNO и ищем public OnGameModeInit() , после вставляем в конец всех CreateObject наш полученный код! 19)Компилим и проверяем!
×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.