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

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

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

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

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

Тип контента


Форумы

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

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

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


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

  • Начало

    Конец


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

  • Начало

    Конец


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

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

  1. Tourer V

    Интерьер маленькой квартирки

    Cделал интерьер маленькой квартирки,в ней присутствует одна комната и кухня.Прошу строго не судить. CreateDynamicObject(19407, 2449.84, -2080.79, 22.66, 0.00, 0.00, 0.00); CreateDynamicObject(19453, 2447.22, -2086.45, 22.66, 0.00, 0.00, -33.00); CreateDynamicObject(19453, 2445.13, -2069.75, 22.66, 0.00, 0.00, 88.00); CreateDynamicObject(19453, 2436.75, -2069.45, 22.66, 0.00, 0.00, 88.00); CreateDynamicObject(19453, 2436.60, -2076.67, 22.66, 0.00, 0.00, 0.00); CreateDynamicObject(19453, 2440.95, -2088.45, 22.66, 0.00, 0.00, -92.00); CreateDynamicObject(19453, 2436.61, -2086.16, 22.66, 0.00, 0.00, 0.00); CreateDynamicObject(19407, 2449.86, -2074.41, 22.66, 0.00, 0.00, 0.00); CreateDynamicObject(19361, 2449.85, -2077.58, 22.66, 0.00, 0.00, 0.00); CreateDynamicObject(19361, 2449.86, -2071.34, 22.66, 0.00, 0.00, 0.00); CreateDynamicObject(19361, 2436.60, -2070.39, 22.66, 0.00, 0.00, 0.00); CreateDynamicObject(19376, 2444.73, -2074.44, 20.90, 0.00, 90.00, -2.00); CreateDynamicObject(19376, 2434.26, -2074.07, 20.90, 0.00, 90.00, -2.00); CreateDynamicObject(19376, 2444.42, -2084.05, 20.90, 0.00, 90.00, -2.00); CreateDynamicObject(19376, 2433.96, -2083.69, 20.90, 0.00, 90.00, -2.00); CreateDynamicObject(19377, 2434.33, -2073.89, 24.27, 0.00, -90.00, -3.00); CreateDynamicObject(19377, 2433.98, -2083.51, 24.27, 0.00, -90.00, -3.00); CreateDynamicObject(19377, 2444.45, -2083.94, 24.27, 0.00, -90.00, -3.00); CreateDynamicObject(19377, 2444.71, -2074.52, 24.27, 0.00, -90.00, -1.00); CreateDynamicObject(1535, 2437.16, -2088.26, 20.98, 0.00, 0.00, -2.00); CreateDynamicObject(19453, 2444.93, -2077.76, 22.66, 0.00, 0.00, -91.00); CreateDynamicObject(19390, 2440.20, -2076.03, 22.66, 0.00, 0.00, 0.00); CreateDynamicObject(19361, 2440.20, -2073.01, 22.66, 0.00, 0.00, 0.00); CreateDynamicObject(19361, 2440.19, -2069.96, 22.66, 0.00, 0.00, 0.00); CreateDynamicObject(19390, 2440.20, -2079.25, 22.66, 0.00, 0.00, 0.00); CreateDynamicObject(19453, 2440.21, -2085.56, 22.66, 0.00, 0.00, 0.00); CreateDynamicObject(10200, 2445.31, -2078.19, 20.89, 0.00, 0.00, 0.00); CreateDynamicObject(10200, 2447.19, -2078.19, 20.89, 0.00, 0.00, 0.00); CreateDynamicObject(10200, 2448.10, -2078.19, 20.89, 0.00, 0.00, 0.00); CreateDynamicObject(10200, 2444.40, -2078.19, 20.89, 0.00, 0.00, 0.00); CreateDynamicObject(10200, 2443.49, -2078.19, 20.89, 0.00, 0.00, 0.00); CreateDynamicObject(10210, 2447.90, -2077.94, 21.92, 0.00, 0.00, 0.00); CreateDynamicObject(10206, 2446.24, -2078.30, 20.95, 0.00, 0.00, 0.00); CreateDynamicObject(19453, 2445.03, -2083.71, 22.66, 0.00, 0.00, -92.00); CreateDynamicObject(10226, 2449.01, -2082.96, 23.68, 0.00, 0.00, -120.00); CreateDynamicObject(10193, 2443.26, -2082.50, 21.36, 0.00, 0.00, -90.00); CreateDynamicObject(1741, 2442.22, -2083.23, 21.50, 0.00, 0.00, -71.00); CreateDynamicObject(1741, 2442.12, -2082.46, 21.50, 0.00, 0.00, -90.00); CreateDynamicObject(1741, 2444.49, -2082.00, 21.50, 0.00, 0.00, 98.00); CreateDynamicObject(1741, 2444.53, -2082.86, 21.50, 0.00, 0.00, 98.00); CreateDynamicObject(10166, 2449.60, -2080.73, 21.48, 0.00, 0.00, 0.00); CreateDynamicObject(10203, 2444.97, -2077.61, 22.28, 0.00, 0.00, 0.00); CreateDynamicObject(10182, 2440.78, -2073.50, 21.26, 0.00, 0.00, 90.00); CreateDynamicObject(10178, 2440.71, -2070.60, 22.22, 0.00, 0.00, 0.00); CreateDynamicObject(1746, 2444.06, -2070.28, 21.40, 0.00, 0.00, 90.00); CreateDynamicObject(1742, 2441.96, -2073.53, 21.44, 0.00, 0.00, -185.00); CreateDynamicObject(1724, 2448.30, -2072.82, 21.67, 0.00, 0.00, 90.00); CreateDynamicObject(1739, 2447.03, -2069.95, 23.24, 0.00, 0.00, 90.00); CreateDynamicObject(19174, 2440.29, -2073.50, 23.22, 0.00, 0.00, 90.00); CreateDynamicObject(1724, 2448.32, -2071.48, 21.67, 0.00, 0.00, 90.00); CreateDynamicObject(10166, 2449.56, -2074.53, 21.48, 0.00, 0.00, 0.00); CreateDynamicObject(19172, 2436.69, -2081.01, 23.22, 0.00, 0.00, 90.00); CreateDynamicObject(19173, 2436.68, -2078.58, 23.22, 0.00, 0.00, 90.00); CreateDynamicObject(19159, 2443.61, -2075.40, 24.00, 0.00, 0.00, 90.00); CreateDynamicObject(1502, 2440.18, -2075.25, 20.93, 0.00, 0.00, -90.00); Скриншоты.
  2. Доброго времени суток. Данный материал прежде всего предназначен для RP/RPG-серверов, однако если будет использоваться где-то еще - спорить не буду. Итак, небольшое вступление. На некоторых серверах существуют правила для ника игрока. Самый яркий пример - РП-сервера, где ник обычно требуют в формате %name%_%surname%. Более того, кое-где существует запрет на регистрацию с ником, имя в котором указано в уменьшительно-ласкательной или иной, отличной от официальной, формы (Sasha вместо Alexander и так далее). При достаточно большом количестве игроков уследить за подобными случаями становится все сложнее. Но, как говорится, "кто ищет - тот всегда найдет!" Перед скриптом ставились следующие задачи: Хранить где-то базу некорректных ников. Это показалось проще, чем вести базу корректных. Иметь удобные инструменты для добавления, удаления и проверки наличия записи. Не допускать игрока к серверу в случае совпадения имени с базой и отключать от сервера в случае добавления новой записи в базу. Первую задачу решено было решить, используя SQLite. Создавать что-то на файлах показалось мне не слишком удобным в реализации, а на MySQL такую ерунду делать не хотелось. Хотя можно и ее использовать, но зачем, если, по сути, нам нужна только одна колонка в БД? Вторая решилась еще тривиальнее - три команды-три запроса к базе. Еще один запрос - в момент подключения. Но - обо всем по порядку. Итак, для начала необходимо подключить нужные библиотеки. В нашем случае - a_samp и a_sampdb. #include <a_samp> #include <a_sampdb> Для удобства забьем имя файла с базой как директиву препроцессора. #define db_name "WrongNicks.db" Далее - создаем переменную типа DB для хранения указателя на открытую базу и переменную типа DBResult для хранения возвращаемых из базы результатов. new DB:NicksDB; new DBResult:Result; Начнем с загрузки самой базы. Я использовал код в отдельном ФС, однако ничто не мешает зашить его в гейммод. Первоначально с помощью команды db_open открываем файл, имя которого забито в db_name. Или создаем, если он не был создан: NicksDB = db_open(db_name); Далее - делаем запрос в базу. Необходимо, если таблицы Nicks не существует - создать ее с одной колонкой NICK типа varchar - символьной строки. Делается это простым запросом: db_query(NicksDB,"CREATE TABLE IF NOT EXISTS Nicks (NICK varchar)"); Проверять отдельно, есть ли таблица в файле и есть ли файл вообще, нет необходимости, как нет необходимости и в дальнейших действиях при загрузке ГМ или ФС. Конечный код в случае ФС будет выглядеть так: public OnFilterScriptInit() { NicksDB = db_open(db_name); db_query(NicksDB,"CREATE TABLE IF NOT EXISTS Nicks (NICK varchar)"); return 1; } После выгрузки ГМ или ФС базу нужно корректно закрыть. Тут все еще проще - db_close(). public OnFilterScriptExit () { db_close(NicksDB); return 1; } Далее я решил начать с реализации проверки на наличие ника в базе и, соответственно, запрещению доступа к серверу, если ник в базе есть. Алгоритм действий таков: Получаем ник игрока. Это достаточно просто, есть стандартная функция GetPlayerName(), описывать ее я смысла не вижу. Выделение из ника имени и фамилии. Обычно разделителем выступает нижняя черта - ее проверять и будем. Берем с SA:MP Wiki функцию split: stock split(const strsrc[], strdest[][], delimiter) { new i, li; new aNum; new len; while(i <= strlen(strsrc)) { if(strsrc[i] == delimiter || i == strlen(strsrc)) { len = strmid(strdest[aNum], strsrc, li, i, 128); strdest[aNum][len] = 0; li = i+1; aNum++; } i++; } return 1; } Создаем двумерный массив для хранения имени и фамилии и записываем в его элементы отдельно имя и отдельно фамилию, полученные после работы split(). Запрос в базу на наличие ника. Проверка организована просто - в базу посылается запрос, в ответе проверяем, сколько строк вернула база. Если не ноль - значит, записи есть и ник запрещен, а значит - игрока нужно кикнуть. Если ноль - записи нет, ник разрешен, ничего с игроком делать не нужно. Берем OnPlayerConnect и производим все необходимые действия по алгоритму: public OnPlayerConnect (playerid) { new Nick[MAX_PLAYER_NAME];//Получение ника GetPlayerName (playerid, Nick, MAX_PLAYER_NAME); new Name[2][24];//Получение имени и "остатков" split (Nick, Name, '_'); new query [512];//Отсылка запроса к БД format (query, sizeof(query), "SELECT * FROM Nicks WHERE NICK LIKE '%s'", Name[0]); Result = db_query (NicksDB, query);//и прием результата запроса. if (db_num_rows(Result))//Если строк результата больше, чем ноль - запись есть! { new Response[144]; SendClientMessage (playerid, 0xdc143cFF, "Вы были кикнуты сервером. Причина: В нике указано неполное имя."); Kick(playerid); format (Response, sizeof(Response), "Игрок %s кикнут сервером. Причина: В нике указано неполное имя.", Nick); SendClientMessageToAll (0xdc143cFF, Response); } return 1; } Хочу обратить внимание на сам запрос в БД: SELECT * FROM Nicks WHERE NICK LIKE '%s'Оператор LIKE здесь используется как оператор нестрогого сравнения - то есть регистр символов может не совпадать. Однако с русскими символами в строке такой запрос не пройдет, что в MySQL, что в SQLite придется городить костыли. У меня не используются ники с русскими символами, поэтому меня такой запрос вполне устраивает в текущем виде. Ну и осталось, собственно, только организовать удобство работы с такой базой. Поскольку бросать идею не хотелось, а использовать для такого порыва покодить какие-то сторонние тулзы вроде командных процессоров было откровенно лень - все построено на стандартной функции OnPlayerCommandText и ненавистной многими strtok: strtok(const string[], &index) { new length = strlen(string); while ((index < length) && (string[index] <= ' ')) { index++; } new offset = index; new result[20]; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; } Однако, конечно, если захотите использовать другой командный процессор - пожалуйста, перетаскивайте. Начнем с команды добавления записи в базу и одновременной проверки игроков на свежедобавленное имя. Алгоритм прост - из строки cmdtext получаем необходимый параметр и делаем запрос к базе, после чего циклом проверяем все имена игроков, полученные split(). Далее код с комментариями, который, конечно, нужно пихнуть в OnPlayerCommandText, в котором уже объявлены нужные переменные для strtok: //Для strtok new cmd[256], tmp[256], idx; cmd = strtok(cmdtext, idx); if (!strcmp ("/addnick", cmd, true)) { if (!IsPlayerAdmin(playerid)) //Если игрок не RCon - доступ к функции не даем. { SendClientMessage (playerid, 0xdc143cFF, "Вы не обладаете необходимыми правами доступа."); return 1; } tmp = strtok(cmdtext, idx); if (!strlen(tmp)) //Если параметр пустой - выводим сообщение об ошибке. { SendClientMessage (playerid, 0xdc143cFF, "Синтаксис команды: /addnick [Имя]"); return 1; } new query[512]; //Делаем запрос в базу. format (query, sizeof(query), "INSERT INTO Nicks (NICK) VALUES ('%s')", tmp); db_query (NicksDB, query); SendClientMessage (playerid, 0xdc143cFF, "Ник добавлен в базу данных."); //..и оповещаем об этом пользователя. new TempNick[MAX_PLAYER_NAME]; //Готовим переменную под ник. for (new pid=0; pid<MAX_PLAYERS; pid++) //Для всех игроков { if (IsPlayerConnected(pid)) //Если проверяемый подключен - { GetPlayerName (pid, TempNick, MAX_PLAYER_NAME); //получаем его ник полностью if (!strcmp (TempNick, tmp, true, strlen(tmp))) //и проверяем на соответствие с новой записью - вне зависимости от регистра и только количество символов, которое было в новой записи! { //Если условия соблюдены - выбрасываем игрока с сервера. Войти обратно ему не даст код в OnPlayerConnect. new Response[144]; SendClientMessage (pid, 0xdc143cFF, "Вы были кикнуты сервером. Причина: В нике указано неполное имя."); Kick(pid); format (Response, sizeof(Response), "Игрок %s кикнут сервером. Причина: В нике указано неполное имя.", TempNick); SendClientMessageToAll (0xdc143cFF, Response); } } } return 1; } Похожая ситуация - с удалением записи. Даже если похожей записи нет - запрос ничего лишнего не удалит, поэтому на проверку наличия в базе можно не заморачиваться. if (!strcmp ("/removenick", cmd, true)) { if (!IsPlayerAdmin(playerid)) { SendClientMessage (playerid, 0xdc143cFF, "Вы не обладаете необходимыми правами доступа."); return 1; } tmp = strtok(cmdtext, idx); if (!strlen(tmp)) { SendClientMessage (playerid, 0xdc143cFF, "Синтаксис команды: /removenick [Имя]"); return 1; } new query[512]; format (query, sizeof(query), "DELETE FROM Nicks WHERE NICK LIKE '%s'", tmp); //Запрос на удаление строк с похожим значением. db_query (NicksDB, query); SendClientMessage (playerid, 0xdc143cFF, "Ник удален из базы данных."); return 1; } В конкретном случае вместо строгого сравнения в запросе опять используется оператор LIKE. Ну, и функция проверки на наличие записи. Тут все аналогично проверке в OnPlayerConnect - если запрос вернет более нуля строк как результат, значит, запись есть. В противном случае - нет. if (!strcmp ("/checknick", cmd, true)) { if (!IsPlayerAdmin(playerid)) { SendClientMessage (playerid, 0xdc143cFF, "Вы не обладаете необходимыми правами доступа."); return 1; } tmp = strtok(cmdtext, idx); if (!strlen(tmp)) { SendClientMessage (playerid, 0xdc143cFF, "Синтаксис команды: /checknick [Имя]"); return 1; } new query[512]; format (query, sizeof(query), "SELECT * FROM Nicks WHERE NICK LIKE '%s'", tmp); Result = db_query (NicksDB, query); if (db_num_rows(Result)) SendClientMessage (playerid, 0xdc143cFF, "Данное имя есть в базе данных запрещенных имен."); else SendClientMessage (playerid, 0xdc143cFF, "Данного имени в базе запрещенных имен нет."); return 1; } На этом все! Система работоспособна и готова к наполнению невалидными никами. #define FILTERSCRIPT #define db_name "WrongNicks.db" #include <a_samp> #include <a_sampdb> new DB:NicksDB; new DBResult:Result; public OnFilterScriptInit() { NicksDB = db_open(db_name); db_query(NicksDB,"CREATE TABLE IF NOT EXISTS Nicks (NICK varchar)"); return 1; } public OnFilterScriptExit () { db_close(NicksDB); return 1; } public OnPlayerConnect (playerid) { new Nick[MAX_PLAYER_NAME]; GetPlayerName (playerid, Nick, MAX_PLAYER_NAME); new Name[2][24]; split (Nick, Name, '_'); new query [512]; format (query, sizeof(query), "SELECT * FROM Nicks WHERE NICK LIKE '%s'", Name[0]); Result = db_query (NicksDB, query); if (db_num_rows(Result)) { new Response[144]; SendClientMessage (playerid, 0xdc143cFF, "Вы были кикнуты сервером. Причина: В нике указано неполное имя."); Kick(playerid); format (Response, sizeof(Response), "Игрок %s кикнут сервером. Причина: В нике указано неполное имя.", Nick); SendClientMessageToAll (0xdc143cFF, Response); } return 1; } public OnPlayerCommandText (playerid, cmdtext[]) { new cmd[256], tmp[256], idx; cmd = strtok(cmdtext, idx); if (!strcmp ("/addnick", cmd, true)) { if (!IsPlayerAdmin(playerid)) { SendClientMessage (playerid, 0xdc143cFF, "Вы не обладаете необходимыми правами доступа."); return 1; } tmp = strtok(cmdtext, idx); if (!strlen(tmp)) { SendClientMessage (playerid, 0xdc143cFF, "Синтаксис команды: /addnick [Имя]"); return 1; } new query[512]; format (query, sizeof(query), "INSERT INTO Nicks (NICK) VALUES ('%s')", tmp); db_query (NicksDB, query); SendClientMessage (playerid, 0xdc143cFF, "Ник добавлен в базу данных."); new TempNick[MAX_PLAYER_NAME]; for (new pid=0; pid<MAX_PLAYERS; pid++) { if (IsPlayerConnected(pid)) { GetPlayerName (pid, TempNick, MAX_PLAYER_NAME); if (!strcmp (TempNick, tmp, true, strlen(tmp))) { new Response[144]; SendClientMessage (pid, 0xdc143cFF, "Вы были кикнуты сервером. Причина: В нике указано неполное имя."); Kick(pid); format (Response, sizeof(Response), "Игрок %s кикнут сервером. Причина: В нике указано неполное имя.", TempNick); SendClientMessageToAll (0xdc143cFF, Response); } } } return 1; } if (!strcmp ("/removenick", cmd, true)) { if (!IsPlayerAdmin(playerid)) { SendClientMessage (playerid, 0xdc143cFF, "Вы не обладаете необходимыми правами доступа."); return 1; } tmp = strtok(cmdtext, idx); if (!strlen(tmp)) { SendClientMessage (playerid, 0xdc143cFF, "Синтаксис команды: /removenick [Имя]"); return 1; } new query[512]; format (query, sizeof(query), "DELETE FROM Nicks WHERE NICK LIKE '%s'", tmp); db_query (NicksDB, query); SendClientMessage (playerid, 0xdc143cFF, "Ник удален из базы данных."); return 1; } if (!strcmp ("/checknick", cmd, true)) { if (!IsPlayerAdmin(playerid)) { SendClientMessage (playerid, 0xdc143cFF, "Вы не обладаете необходимыми правами доступа."); return 1; } tmp = strtok(cmdtext, idx); if (!strlen(tmp)) { SendClientMessage (playerid, 0xdc143cFF, "Синтаксис команды: /checknick [Имя]"); return 1; } new query[512]; format (query, sizeof(query), "SELECT * FROM Nicks WHERE NICK LIKE '%s'", tmp); Result = db_query (NicksDB, query); if (db_num_rows(Result)) SendClientMessage (playerid, 0xdc143cFF, "Данное имя есть в базе данных запрещенных имен."); else SendClientMessage (playerid, 0xdc143cFF, "Данного имени в базе запрещенных имен нет."); return 1; } return 0; } //Разделение stock split(const strsrc[], strdest[][], delimiter) { new i, li; new aNum; new len; while(i <= strlen(strsrc)) { if(strsrc[i] == delimiter || i == strlen(strsrc)) { len = strmid(strdest[aNum], strsrc, li, i, 128); strdest[aNum][len] = 0; li = i+1; aNum++; } i++; } return 1; } strtok(const string[], &index) { new length = strlen(string); while ((index < length) && (string[index] <= ' ')) { index++; } new offset = index; new result[20]; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; } Исходник также доступен на пастбине. Данное решение, возможно, не является суперсовершенным и суперфункциональным, но то, чего я хотел - я добился. Все работает, и работает как надо. Вопросы и пожелания принимаются ниже.
  3. Tourer V

    Интерьер гаража.

    Этот интерьер я нашёл на компьютере.Кому нужен забирайте. CreateDynamicObject(2019, 2593.56, -2015.17, 16.12, 0.00, 0.00, 0.00); CreateDynamicObject(19456, 2602.48, -1892.79, 17.47, 0.00, 0.00, -90.00); CreateDynamicObject(19456, 2602.24, -1888.26, 17.47, 0.00, 0.00, -90.00); CreateDynamicObject(19456, 2597.99, -1888.29, 17.47, 0.00, 0.00, 0.00); CreateDynamicObject(19447, 2604.32, -1891.74, 16.03, 0.00, 90.00, 0.00); CreateDynamicObject(19447, 2600.85, -1890.53, 16.03, 0.00, 90.00, 0.00); CreateDynamicObject(19447, 2597.36, -1889.60, 16.03, 0.00, 90.00, 0.00); CreateDynamicObject(19380, 2602.44, -1891.98, 19.19, 0.00, 90.00, 0.00); Скриншоты:
  4. Думаю смысл системы понятен из названии темы. Но, я всё же объясню. Описание: Игрок устанавливает противотанковую мину и когда танк наезжает на эту мину, происходит взрыв.
  5. Здравствуйте, уважаемые пользователи портала! Решил выложить русскоязычный скрипт. Смысл его очень прост: сделать необходимый поворот камеры, при том не затратив особых усилий. В управлении он так же довольно прост: достаточно просто зайти в игру и ввести /cameditor. Автор не я, просто нашел данный скрипт на просторах интернета и решил поделиться с вами. Удачи. camers.pwn
  6. if(strcmp("/jlist", cmdtext, true, 10) == 0){new bool:players = false;for(new i = 0; i < MAX_PLAYERS; i++){if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;if(PlayerInfo[i][pJailTime] != 0){new name[MAX_PLAYER_NAME], str[150];GetPlayerName(i, name, sizeof(name));format(str, sizeof(str), "%sn{FFFFFF}ID: {FF9D00}%d {FFFFFF}Ник: {FF9D00}%s {FFFFFF}Осталось: {FF9D00}%d", str, i, name, PlayerInfo[i][pJailTime]);ShowPlayerDialog(playerid,487,DIALOG_STYLE_LIST,"{FFFF00}Список заключенных",str,"Принято","");players = true;}}if(players == false) return SendClientMessage(playerid, -1, "Список заключенных пуст!");} В команде нужно только изменить переменную отвечающую за время в тюрьме, это pJailTime и PlayerInfo если у вас конечно не так как в команде. Скриншот:
  7. Amfy

    Russian Text Fix

    Описание: Плагин исправляющий русский текст на сервере в функциях.Поддержка всех русских букв А-Я а-я. native GameTextForAll(const string[],time,style);native GameTextForPlayer(playerid,const string[],time,style);native Menu:CreateMenu(const title[], columns, Float:x, Float:y, Float:col1width, Float:col2width = 0.0);native AddMenuItem(Menu:menuid, column, const menutext[]);native SetMenuColumnHeader(Menu:menuid, column, const columnheader[]);native Text:TextDrawCreate(Float:x, Float:y, text[]);native TextDrawSetString(Text:text, string[]); Необходим этот руссификаторПочему в плагине эта функция, ведь ее можно и в Pawn реализовать?Да потому что в плагине работает все быстрее, чем стандартные средства реализации и вам не надо думать об оптимизации, за вас все сделали. Использование: #include <crp>...public OnPlayerConnect(playerid){GameTextForPlayer(playerid, "~g~????? ?????????? ?? ??????!", 5000, 3);}... Natives: // По умолчанию все стандартные функции заменены на использование с этим фиксомnative ConvertRusToPwn(const text[], dest[], size = sizeof dest); CRP.zipCRP2.zipАвтор: Fro1sha
  8. От того что все Античиты с каким то странным кодом, выкладываю свой код. Более понятный, и нету не чего лишнего. Защита самая простая, деньги отнимаются, оружие так же. stock GivePlayerMoneys(p,m) return SetPVarInt(p, "FHMoney", GetPVarInt(p, "FHMoney")+m), GivePlayerMoney(p, m); stock ResetPlayerMoneys(p) return SetPVarInt(p, "FHMoney", 0), ResetPlayerMoney(p, 0); stock GetPlayerMoneys(p) return GetPVarInt(p, "FHMoney"); stock GivePlayerWeapons(player, weapid, ammo) return Weapons[player][weapid] = 1, GivePlayerWeapon(player, weapid, ammo); Инструкция по установке: 1. Засунуть в любое место вне пабли(ка/ов) 2. Заменить стандартные функции, на данные: - GivePlayerMoney на GivePlayerMoneys - ResetPlayerMoney на ResetPlayerMoneys - GetPlayerMoney на GetPlayerMoneys - GivePlayerWeapon на GivePlayerWeapons, Ваш КЭП. Author: FanHamMer
  9. Доброго времени суток! Сегодня я вам покажу ,оптимизированный вид регистрации! И так просмотрим код : Добавим парочку переменных: new PlayerName[MAX_PLAYER_NAME]/*Имя игрока*/, dialogitem[MAX_PLAYERS]/*Переменная отвечающая за переход диалога*/, pass[64]/*Переменная сохраняющая в себя веденный пароль*/,use[256]/*Переменная отвечающая за форматирование диалогов*/,file[128]/*Переменная отвечающая за форматирования файла*/ Добавим #define: #define LOGIN_ID 10 Потом ставим в OnPlayerConnect или OnPlayerRequest ,куда пожелаете : GetPlayerName(playerid,PlayerName,26); format(file,128,"Дерриктория файла"); if(fexist(file)) format(use,sizeof(use),"{ffffff}Привет %snПройдите авторизацию",PlayerName),dialogitem[playerid] = 1; // Форматируем диалог ,даём направление! else format(use,sizeof(use),"{ffffff}Привет %snПройдите регистрацию",PlayerName),dialogitem[playerid] = 2; // Форматируем диалог ,даём направление! ShowPlayerDialog(playerid,LOGIN_ID,DIALOG_STYLE_INPUT,"Авторизация аккаунта",use,"Ввод","Отмена");// Показываем диалог Добавим диалоги*(OnPlayerDialogResponse) : if(dialogid == LOGIN_ID && dialogitem[playerid] == 1) { if(!response) SendClientMessage(playerid,-1,"Вы отменили авторизацию ,Досвидание!"),Kick(playerid); // При нажатии кнопки отмена ,кик! if(!strlen(inputtext)) ShowPlayerDialog(playerid, LOGIN_ID, DIALOG_STYLE_INPUT, "", "Вы оставили поле пустымnВведите пароль придуманный при регистрации", "Ввод", "Отмена"); // Сообщение при пустом поле strmid(pass,inputtext,0,strlen(inputtext),64);// Фрагментируем пароль Registration(dialogitem[playerid],playerid,pass); // Записываем в файлик } //----------------------------------- if(dialogid == LOGIN_ID && dialogitem[playerid] == 2) { if(!response) SendClientMessage(playerid,-1,"Вы отменили авторизацию ,Досвидание!"),Kick(playerid); // При нажатии кнопки отмена ,кик! if(!strlen(inputtext)) ShowPlayerDialog(playerid, LOGIN_ID, DIALOG_STYLE_INPUT, "", "Вы оставили поле пустымnВведите пароль придуманный при регистрации", "Ввод", "Отмена"); // Сообщение при пустом поле if(!strlen(inputtext) < 6 || !strlen(inputtext) > 15) rerurn ShowPlayerDialog(playerid,LOGIN_ID,DIALOG_STYLE_MSGBOX,"{C0C0C0}Ошибка!","{FF6347}Длина пароля должна быть от 6 до 15 символов!","Повтор",""); // strlen(inputtext) < 6 Минимальное значение ввода! strmid(pass,inputtext,0,strlen(inputtext),64); // Фрагментируем пароль Registration(dialogitem[playerid],playerid,pass); // Записываем в файл ShowPlayerDialog(playerid,LOGIN_ID,DIALOG_STYLE_INPUT,"{C0C0C0}Этап 1/2","Введите пароль для ,продолжения!","Ввод","Отмена"); // Переходим на диалог входа } Теперь в конец мода добавим : forward Registration(type,playerid,password[]); public Registration(type,playerid,password[]) { //----------------- if(type == 1) // Тип 1 : Авторизация / Login { // Сюда ставим файлы получения при авторизации } //----------------- if(type == 2) // Тип 2 : Регистрация { // Сюда ставим сохранение файлов при регистрации } return true; } Автор : Trateus
  10. Посидел пару минут на форуме, увидел уроки всякие, где один ужасный код и в комментариях темы написано что "ВАЩЕ КУРУТЯК". Ну что же, надо развивать Вас как то. Вот Вам самый обычный, и самый рабочий антифлуд. if(GetPVarInt(playerid, "ChatFlood") > gettime()) return SendClientMessage(playerid, -1, "Команды можно вводить раз в 2 секунды!") & 0; SetPVarInt(playerid, "ChatFlood", gettime() + 2); Думаю сам код описывать особо не нужно, что да как. Тут итак понятно, сам код Вы можете вставить к примеру в паблик отправки текста "OnPlayerText", или просто даже в любую команду, где нужен ограничитель по времени. Чтобы изменить время длительности, в конце кода вместо 2 поставьте своё значение. В чём плюсы данного кода? Код не занимает лишнии ячейки памяти из-за PVar's. Не используются таймеры, как любят это делать недо-скриптеры. Да и лишнего не чего нету. Если Вы хотите использовать код несколько раз в моде, то название пивоваров меняйте, чтобы значение не путалось. Author: FanHamMer
  11. #Pawno

    Деревня в южном

    Карта давольно сделано качетсвено , работа давности по времени точно не помню сколько занимала. Вообщем вот фотки:
  12. Всем привет, дело было вечером, дело было не чего. От такой скукоты сделал калькулятор, просто и со вкусом. Понятно что он не кому не нужен к чертям, хотя бы пусть новички посмотрят как выглядит работоспособный код. Я не пытался изобретать велосипед. Команда: /calc Видео: http-~~-//youtu.be/xkLe89NRzGs Pastebin: http://pastebin.com/rYRGz9AQ (Табуляция испортилась) Author: FanHamMer P.S. На самом деле история другая, но так как она не связана с данным форумом, не буду оглашать.
  13. Здравствуйте, уважаемые пользователи портала! Сейчас хотелось бы разобрать принцип работы часов на тексдравах. Для начала выложу скриншот того, что получится(нажмите для увеличения): Итак, приступим!С самого начала логично было бы создать сам тексдрав. Объявляем переменную: new Text:Clock;//часы Далее создадим тексдрав. Добавляем в public OnGameModeInit следующее: Clock = TextDrawCreate(549.000000, 25.000000, "00:00"); TextDrawAlignment(Clock,0); TextDrawBackgroundColor(Clock, 255); TextDrawFont(Clock, 3); TextDrawTextSize(Clock, 0.599999, 2.200000); TextDrawLetterSize(Clock,0.599999, 2.200000); TextDrawSetOutline(Clock, 1); TextDrawSetShadow(Clock, 0); TextDrawUseBox(Clock, 0); TextDrawColor(Clock, 0x33AA33AA); А теперь что? Ведь нужно сделать так, чтобы текстдрав был виден игрокам, верно? Верно. Добавляем в public OnPlayerConnect показ текстдрава: TextDrawShowForPlayer(playerid, Clock); Есть. Все отображается. Все как на картинке. НО - тексдрав будет постоянно показывать лишь 00:00 Как это исправить? Как сделать обновление? Ровно об этом принципе работы рассказать и хочется. Создадим паблик и таймер, ссылающийся на этот паблик. Повтор функции? Конечно. А иначе как будет обновляться тексдрав? Приступим. forward UpdateTime(); public UpdateTime() { new string[32]; new hour,minute,second; gettime(hour,minute,second); format(string, sizeof(string), "%02d:%02d", hour, minute); SetWorldTime( hour ); TextDrawSetString(Clock,string); } Все? Нет, не все. Ведь нету вызова функции. Сделаем его по стандарту, в public OnGameModeInit: SetTimer("UpdateTime", 1000, 1); И что у нас получится? Паблик UpdateTime будет вызываться каждую секунду и обновлять часы.Спасибо за внимание.
  14. Steven_Johnson

    Автосалон около АЗС

    CreateObject(1416, 2357.07, -1792.87, 22.02, 0.00, 0.00, -180.00);CreateObject(1416, 2356.69, -1793.93, 22.01, 0.00, 0.00, 91.00);CreateObject(1416, 2356.71, -1795.34, 21.99, 0.00, 0.00, 91.00);CreateObject(1416, 2356.74, -1796.78, 21.97, 0.00, 0.00, 91.00);CreateObject(1416, 2356.76, -1798.20, 21.97, 0.00, 0.00, 91.00);CreateObject(1079, 2359.13, -1798.38, 24.49, 0.00, 0.00, 176.00);CreateObject(1078, 2359.16, -1796.15, 25.92, 0.00, 0.00, 178.00);CreateObject(1073, 2359.16, -1793.28, 24.56, 0.00, 0.00, 178.00);CreateObject(1416, 2358.47, -1792.89, 22.00, 0.00, 0.00, -181.00);CreateObject(1416, 2357.07, -1799.25, 21.97, 0.00, 0.00, 1.00);CreateObject(1416, 2358.48, -1799.23, 21.95, 0.00, 0.00, 1.00);CreateObject(1744, 2356.52, -1794.27, 22.89, 0.00, 0.00, -180.00);CreateObject(1738, 2356.83, -1794.27, 22.63, 0.00, 0.00, -178.00);CreateObject(1744, 2356.57, -1796.04, 22.87, 0.00, 0.00, -178.00);CreateObject(1738, 2356.91, -1796.04, 22.59, 0.00, 0.00, -178.00);CreateObject(1744, 2356.63, -1797.71, 22.85, 0.00, 0.00, -178.00);CreateObject(1738, 2356.94, -1797.67, 22.59, 0.00, 0.00, -178.00);CreateObject(1663, 2357.62, -1797.51, 21.87, 0.00, 0.00, -91.00);CreateObject(1663, 2357.58, -1795.94, 21.87, 0.00, 0.00, -98.00);CreateObject(1663, 2357.61, -1794.16, 21.87, 0.00, 0.00, -98.00);CreateObject(1739, 2359.20, -1796.94, 23.65, 0.00, 0.00, 0.00);CreateObject(1739, 2359.20, -1795.26, 23.65, 0.00, 0.00, 0.00);CreateObject(1739, 2359.20, -1795.26, 24.64, 0.00, 0.00, 0.00);CreateObject(1739, 2359.20, -1796.94, 24.63, 0.00, 0.00, 0.00);CreateObject(8734, 2338.42, -1781.34, 18.50, 0.00, 0.00, 0.00);CreateObject(2904, 2331.79, -1793.93, 21.44, -65.00, 0.00, 0.00);CreateObject(2904, 2334.26, -1793.92, 21.44, -65.00, 0.00, 0.00);CreateObject(994, 2338.67, -1793.24, 22.69, 0.00, 0.00, 0.00);CreateObject(994, 2342.54, -1793.24, 22.66, 0.00, 0.00, 0.00);CreateObject(994, 2346.17, -1789.59, 22.67, 0.00, 0.00, 90.00);CreateObject(994, 2346.19, -1783.44, 22.68, 0.00, 0.00, 90.00);CreateObject(994, 2346.17, -1777.29, 22.68, 0.00, 0.00, 90.00);CreateObject(994, 2346.08, -1774.30, 22.72, 0.00, 0.00, 91.00);CreateObject(8734, 2352.53, -1838.86, 18.52, 0.00, 0.00, 0.00);CreateObject(2904, 2356.61, -1827.02, 21.47, 66.00, 0.00, 0.00);CreateObject(2904, 2354.26, -1827.06, 21.49, 67.00, 0.00, 0.00);CreateObject(994, 2349.87, -1828.84, 22.71, 0.00, 0.00, 0.00);CreateObject(994, 2346.24, -1828.87, 22.70, 0.00, 0.00, 0.00);CreateObject(994, 2343.75, -1831.37, 22.67, 0.00, 0.00, 90.00);CreateObject(994, 2343.77, -1837.54, 22.67, 0.00, 0.00, 90.00);CreateObject(994, 2342.70, -1843.71, 22.64, 0.00, 0.00, -89.00);CreateObject(2118, 2359.77, -1834.47, 28.25, 0.00, 0.00, 0.00);CreateObject(2118, 2359.76, -1839.64, 28.27, 0.00, 0.00, 0.00);CreateObject(2118, 2359.76, -1844.44, 28.29, 0.00, 0.00, 0.00);CreateObject(994, 2356.08, -1800.99, 27.28, 0.00, 0.00, 0.00);CreateObject(994, 2353.58, -1803.52, 27.28, 0.00, 0.00, 90.00);CreateObject(994, 2352.51, -1808.49, 27.27, 0.00, 0.00, -90.00);CreateObject(3095, 2334.17, -1781.17, 26.50, 0.00, 0.00, 0.00);CreateObject(3095, 2343.17, -1781.17, 26.49, 0.00, 0.00, 0.00);CreateObject(3095, 2351.77, -1781.19, 26.52, 0.00, 0.00, 0.00);CreateObject(3095, 2354.97, -1781.16, 26.51, 0.00, 0.00, 0.00);CreateObject(3095, 2334.36, -1775.36, 26.48, 0.00, 0.00, 0.00);CreateObject(3095, 2342.74, -1775.42, 26.50, 0.00, 0.00, 0.00);CreateObject(3095, 2350.50, -1775.48, 26.53, 0.00, 0.00, 0.00);CreateObject(3095, 2355.24, -1775.41, 26.55, 0.00, 0.00, 0.00);CreateObject(1656, 2345.12, -1785.95, 26.60, 0.00, 0.00, 0.00);CreateObject(1656, 2346.28, -1785.94, 26.60, 0.00, 0.00, 0.00);CreateObject(1656, 2345.11, -1785.77, 26.72, 0.00, 0.00, 0.00);CreateObject(1656, 2346.29, -1785.77, 26.72, 0.00, 0.00, 0.00);CreateObject(1656, 2345.10, -1785.74, 26.85, 0.00, 0.00, 0.00);CreateObject(1656, 2346.30, -1785.72, 26.85, 0.00, 0.00, 0.00);CreateObject(1930, 2333.86, -1781.60, 29.01, 0.00, 0.00, 89.00);CreateObject(1930, 2341.81, -1781.67, 28.98, 0.00, 0.00, -90.00);CreateObject(1932, 2345.78, -1781.66, 28.52, 0.00, 0.00, 0.00);CreateObject(1930, 2347.19, -1777.65, 29.00, 0.00, 0.00, 0.00);CreateObject(1930, 2347.18, -1775.00, 29.00, 0.00, 0.00, 0.00);CreateObject(1746, 2332.79, -1776.69, 27.39, 0.00, 0.00, -179.00);CreateObject(1433, 2333.88, -1776.66, 27.23, 0.00, 0.00, 0.00);CreateObject(1746, 2335.08, -1776.61, 27.53, 0.00, 0.00, 0.00);CreateObject(1416, 2344.78, -1772.84, 27.59, 0.00, 0.00, -89.00);CreateObject(1416, 2344.80, -1774.26, 27.61, 0.00, 0.00, -89.00);CreateObject(1416, 2344.83, -1775.68, 27.61, 0.00, 0.00, -88.00);CreateObject(1416, 2344.89, -1777.11, 27.59, 0.00, 0.00, -89.00);CreateObject(1416, 2344.91, -1778.53, 27.57, 0.00, 0.00, -89.00);CreateObject(1416, 2344.80, -1771.61, 27.57, 0.00, 0.00, -89.00);CreateObject(1416, 2345.86, -1773.55, 27.59, 0.00, 0.00, 0.00);CreateObject(1416, 2345.91, -1775.97, 27.57, 0.00, 0.00, 2.00);CreateObject(1744, 2344.84, -1777.82, 28.47, 0.00, 0.00, -178.00);CreateObject(1738, 2345.11, -1777.80, 28.21, 0.00, 0.00, -178.00);CreateObject(1663, 2345.85, -1778.48, 27.47, 0.00, 0.00, -91.00);CreateObject(1663, 2344.16, -1778.94, 27.47, 0.00, 0.00, 135.00);CreateObject(1663, 2346.19, -1774.77, 27.50, 0.00, 0.00, -84.00);CreateObject(1744, 2344.69, -1774.56, 28.49, 0.00, 0.00, -178.00);CreateObject(1738, 2345.00, -1774.49, 28.23, 0.00, 0.00, -178.00);CreateObject(1663, 2344.07, -1774.82, 27.47, 0.00, 0.00, -244.00);CreateObject(1663, 2345.85, -1772.23, 27.49, 0.00, 0.00, -91.00);CreateObject(1663, 2343.86, -1772.68, 27.47, 0.00, 0.00, 142.00);CreateObject(1738, 2345.00, -1772.23, 28.19, 0.00, 0.00, -178.00);CreateObject(1744, 2344.62, -1772.31, 28.47, 0.00, 0.00, -181.00);CreateObject(10009, 2352.57, -1771.90, 27.10, 0.00, 0.00, 0.00);CreateObject(3095, 2355.24, -1775.41, 26.55, 0.00, 0.00, 0.00);CreateObject(10012, 2355.04, -1771.74, 27.50, 0.00, 0.00, 0.00);
  15. Всем привет, сегодня мы научимся создавать ворота с открытием. Затем создадим объект к этой переменной, пусть это будет (OnGameModeInit): К OnPlayerCommandText: Теперь давайте разберём всё подробнее.
  16. Чех

    PawnBook v5

    Всем привет,решил поделиться книгой по изучению pawn Это пятое, последнее издание, первого и до сих пор единственного полноценного (250 ст.) учебника посвященного pawn скриптингу на русском языке. Изменения в пятом издании: - Переписаны многие уроки, часть оставлена как есть. - Все найденные ошибки и недочеты исправлены. - Учебник переоформлен. - Учебник разделен на IV раздела: введение, основы, функции, ресурсы. - Количество уроков: 50. Автор учебника: Cloud Рекомендую с данным учебником ознакомится как начинающим, так и опытным скриптерам! Ссылка: http://webfile.ru/6610224 Пароль: gs-g
  17. Amfy

    Раздевалка

    Собственно в названии темы всё понятно. Простая раздевалка для РП сервера. if(strcmp("/clothes", cmdtext, true, 10) == 0)//Команда{if(!IsPlayerInRangeOfPoint(playerid, 1.0, X, Y, Z)) return SendClientMessage(playerid, -1, "Вы должны быть в раздевалке!");//X, Y, Z замените на свои координатыif(GetPVarInt(playerid, "CLOTHES") != 1)//Если CLOTHES не равен одному - надевает форму{SendClientMessage(playerid, -1, "Вы надели служебную форму.");//ТекстSetPVarInt(playerid, "SKIN", GetPlayerSkin(playerid));//Записывает скин в переменную SKINSetPlayerSkin(playerid, 280);//Выдает новый скинSetPVarInt(playerid, "CLOTHES", 1);//CLOTHES становится равен одномуreturn 1;//Удачно}else//Если CLOTHES равен одному - снимает форму{SendClientMessage(playerid, -1, "Вы надели гражданскую одежду.");//ТекстSetPlayerSkin(playerid, GetPVarInt(playerid, "SKIN"));//Выдает скин из переменной SKINDeletePVar(playerid, "CLOTHES");//Удаляет переменную CLOTHESreturn 1;//Удачно}} P.S Табуляция не много попортилась..Автор: Amfy
  18. Доброго времени суток. В этом уроке я расскажу как отправлять сообщение прямо с сервера. Установка функций: В начало мода/скрипта после инклудов #include <a_http> // если есть не добовлять #define MAILER_URL "путь к .php файлу" #define MAILER_MAX_MAIL_SIZE (1024) в любое место мода / скрипта. forward OnMailScriptResponse(iIndex, iResponseCode, const szData[ ]); public OnMailScriptResponse(iIndex, iResponseCode, const szData[ ]) { if(szData[ 0 ]) printf( "Mailer script says: %s", szData ); } stock SendMail(const szReceiver[ ], const szSenderMail[ ], const szSenderName[ ], const szSubject[ ], const szMessage[ ]) { new szBuffer[ MAILER_MAX_MAIL_SIZE ] = "t=", iPos = strlen( szBuffer ), iLength = strlen( szReceiver ); memcpy( szBuffer, szReceiver, iPos * 4, ( iLength + 1 ) * 4 ); StringURLEncode( szBuffer[ iPos ], 1024 - iPos ); strcat( szBuffer, "&f=" ); iPos = strlen( szBuffer ); iLength = strlen( szSenderName ); memcpy( szBuffer, szSenderName, iPos * 4, ( iLength + 1 ) * 4 ); StringURLEncode( szBuffer[ iPos ], 1024 - iPos ); strcat( szBuffer, "&n=" ); iPos = strlen( szBuffer ); iLength = strlen( szSenderMail ); memcpy( szBuffer, szSenderMail, iPos * 4, ( iLength + 1 ) * 4 ); StringURLEncode( szBuffer[ iPos ], 1024 - iPos ); strcat( szBuffer, "&s=" ); iPos = strlen( szBuffer ); iLength = strlen( szSubject ); memcpy( szBuffer, szSubject, iPos * 4, ( iLength + 1 ) * 4 ); StringURLEncode( szBuffer[ iPos ], 1024 - iPos ); strcat( szBuffer, "&m=" ); iPos = strlen( szBuffer ); iLength = strlen( szMessage ); memcpy( szBuffer, szMessage, iPos * 4, ( iLength + 1 ) * 4 ); StringURLEncode( szBuffer[ iPos ], 1024 - iPos ); HTTP( 0xD00D, HTTP_POST, MAILER_URL, szBuffer, "OnMailScriptResponse" ); } stock StringURLEncode(szString[ ], iSize = sizeof( szString )) { for ( new i = 0, l = strlen( szString ); i < l; i++ ) { switch ( szString[ i ] ) { case '!', '(', ')', ''', '*', '0' .. '9', 'A' .. 'Z', 'a' .. 'z': { continue; } case ' ': { szString[ i ] = '+'; continue; } } new s_szHex[ 8 ] ; if ( i + 3 >= iSize ) { szString[ i ] = EOS; break; } if ( l + 3 >= iSize ) szString[ iSize - 3 ] = EOS; format( s_szHex, sizeof( s_szHex ), "%02h", szString[ i ] ); szString[ i ] = '%'; strins( szString, s_szHex, i + 1, iSize ); l += 2; i += 2; if ( l > iSize - 1 ) l = iSize - 1; } } дальше ,Открываем текстовый документ и записываем в него <?php ini_set( 'html_errors', false ); if ( empty( $_POST[ 't' ] ) || empty( $_POST[ 'f' ] ) || empty( $_POST[ 'n' ] ) || empty( $_POST[ 's' ] ) || empty( $_POST[ 'm' ] ) ) die( 'Error: Missing parameters.' ); mail( $_POST[ 't' ], utf8_encode( $_POST[ 's' ] ), $_POST[ 'm' ], implode( "rn", array ( 'From: "' . addslashes( $_POST[ 'f' ] ) . "" <{$_POST[ 'n' ]}>", "Reply-To: {$_POST['f']}", "X-Mailer: PHP/" . phpversion( ), ) ) ); ?> Затем сохраняем файл в формате .php под название mail. После чего нам нужно загрузить его на хостинг. рекомендую hostinger.ru для бесплатного хранения файлов. Не забудьте в #define MAILER_URL заменить адрес загруженного файла 'mail.php' (http//: и www. писать не нужно) Например: #define MAILER_URL "адрес-сайта.ru/mail.php" Использование: SendMail("mail получателя", "mail отправителя", "ник отправителя", "темя письма", "само сообщение"); Там где "mail отправителя"" можно написать любой mail или же просто поставить знак @
  19. Это таже работа что и предыдущая только с добавление кабинета директора CreateObject(3643, 2697.78, -2457.86, 19.68, 0.00, 0.00, 0.00);CreateObject(1930, 2702.91, -2448.99, 22.89, 0.00, 0.00, 91.00);CreateObject(1930, 2710.79, -2448.85, 22.88, 0.00, 0.00, 91.00);CreateObject(1948, 2714.81, -2448.76, 22.11, 0.00, 0.00, -86.00);CreateObject(1930, 2714.66, -2443.32, 22.87, 0.00, 0.00, 2.00);CreateObject(1930, 2714.51, -2435.41, 22.89, 0.00, 0.00, 0.00);CreateObject(1739, 2698.84, -2442.58, 23.31, 0.00, 0.00, -180.00);CreateObject(1364, 2713.77, -2440.43, 21.65, 0.00, 0.00, -89.00);CreateObject(1746, 2713.83, -2437.21, 21.21, 0.00, 0.00, 0.00);CreateObject(1746, 2713.79, -2434.69, 21.17, 0.00, 0.00, 0.00);CreateObject(1361, 2713.74, -2432.90, 21.61, 0.00, 0.00, 0.00);CreateObject(1361, 2713.75, -2431.23, 21.61, 0.00, 0.00, 0.00);CreateObject(2082, 2704.68, -2443.51, 20.89, 0.00, 0.00, 91.00);CreateObject(3055, 2697.85, -2446.47, 21.67, 0.00, 0.00, 91.00);CreateObject(2081, 2706.56, -2443.47, 20.89, 0.00, 0.00, -178.00);CreateObject(1744, 2706.13, -2443.50, 21.99, 0.00, 0.00, -91.00);CreateObject(1742, 2706.03, -2443.22, 21.35, 0.00, 0.00, -91.00);CreateObject(2081, 2708.48, -2443.46, 20.89, 0.00, 0.00, -178.00);CreateObject(1744, 2708.02, -2443.47, 21.97, 0.00, 0.00, -91.00);CreateObject(1742, 2708.00, -2442.93, 21.35, 0.00, 0.00, -91.00);CreateObject(2082, 2710.31, -2442.38, 20.89, 0.00, 0.00, -178.00);CreateObject(2081, 2710.37, -2440.43, 20.89, 0.00, 0.00, -89.00);CreateObject(1744, 2710.32, -2440.89, 21.97, 0.00, 0.00, 0.00);CreateObject(1930, 2714.45, -2433.32, 22.91, 0.00, 0.00, 1.00);CreateObject(3055, 2701.02, -2437.26, 22.61, 0.00, 0.00, -2.00);CreateObject(1948, 2706.45, -2437.44, 22.11, 0.00, 0.00, 0.00);CreateObject(3055, 2706.52, -2433.57, 22.29, 0.00, 0.00, 88.00);CreateObject(2963, 2703.44, -2429.42, 22.89, 0.00, 0.00, 91.00);CreateObject(1746, 2706.11, -2430.75, 21.39, 0.00, 0.00, 0.00);CreateObject(1746, 2706.07, -2433.27, 21.39, 0.00, 0.00, -2.00);CreateObject(1746, 2699.54, -2430.14, 21.39, 0.00, 0.00, 90.00);CreateObject(1749, 2701.45, -2433.73, 21.35, 0.00, 0.00, 2.00);CreateObject(2941, 2701.66, -2432.95, 22.18, 0.00, 0.00, 91.00);CreateObject(1743, 2701.71, -2434.76, 22.06, 0.00, 0.00, 0.00);CreateObject(1744, 2701.35, -2433.86, 22.12, 0.00, 0.00, 0.00);CreateObject(1742, 2700.64, -2433.80, 21.33, 0.00, 0.00, 0.00);
  20. Steven_Johnson

    Банк в Г.Южном

    Вот ещё моя работа за сегодня,теперь это банк который находится в г.Южном! CreateObject(967, 2381.04, -1890.88, 20.92, 0.00, 0.00, 91.00);CreateObject(966, 2379.35, -1890.64, 20.92, 0.00, 0.00, -2.00);CreateObject(967, 2370.71, -1890.73, 20.91, 0.00, 0.00, -271.00);CreateObject(968, 2379.28, -1890.56, 21.84, 0.00, 0.00, 0.00);CreateObject(1746, 2385.17, -1905.69, 22.14, 0.00, 0.00, 0.00);CreateObject(1746, 2385.16, -1908.22, 22.14, 0.00, 0.00, 0.00);CreateObject(1361, 2385.33, -1909.99, 22.40, 0.00, 0.00, 0.00);CreateObject(1739, 2378.37, -1904.39, 23.26, 0.00, 0.00, 90.00);CreateObject(1746, 2385.00, 2886.00, -1911.00, 0.00, 0.00, 0.00);CreateObject(1746, 2385.00, 2378.00, -1911.00, 0.00, 0.00, 0.00);CreateObject(2082, 2378.00, 164.00, -1913.00, 0.00, 0.00, 0.00);CreateObject(1746, 2385.25, -1911.84, 22.14, 0.00, 0.00, 0.00);CreateObject(1746, 2385.27, -1914.37, 22.14, 0.00, 0.00, 0.00);CreateObject(1361, 2385.53, -1916.37, 22.38, 0.00, 0.00, 0.00);CreateObject(2082, 2378.95, -1913.32, 21.66, 0.00, 0.00, -91.00);CreateObject(2081, 2377.04, -1913.32, 21.67, 0.00, 0.00, 0.00);CreateObject(1744, 2377.50, -1913.36, 22.75, 0.00, 0.00, 84.00);CreateObject(1742, 2377.53, -1913.76, 22.11, 0.00, 0.00, 91.00);CreateObject(2081, 2375.11, -1913.32, 21.67, 0.00, 0.00, 0.00);CreateObject(1744, 2375.54, -1913.30, 22.75, 0.00, 0.00, 84.00);CreateObject(1742, 2375.61, -1913.82, 22.11, 0.00, 0.00, 91.00);CreateObject(2081, 2373.19, -1913.31, 21.67, 0.00, 0.00, 0.00);CreateObject(1744, 2373.61, -1913.31, 22.75, 0.00, 0.00, 91.00);CreateObject(1742, 2373.66, -1913.90, 22.11, 0.00, 0.00, 91.00);CreateObject(2082, 2371.32, -1914.33, 21.67, 0.00, 0.00, 0.00);CreateObject(1749, 2366.34, -1913.05, 22.16, 0.00, 0.00, 0.00);CreateObject(1663, 2365.52, -1913.04, 22.07, 0.00, 0.00, 84.00);CreateObject(1663, 2367.31, -1913.03, 22.09, 0.00, 0.00, -113.00);CreateObject(1744, 2366.63, -1913.95, 22.94, 0.00, 0.00, -40.00);CreateObject(1743, 2366.57, -1912.03, 22.88, 0.00, 0.00, 0.00);CreateObject(2031, 2380.36, -1904.19, 22.86, 0.00, 0.00, -90.00);CreateObject(2031, 2383.10, -1904.17, 22.86, 0.00, 0.00, 91.00);CreateObject(1749, 2366.16, -1909.77, 22.14, 0.00, 0.00, 0.00);CreateObject(1663, 2365.30, -1909.87, 22.07, 0.00, 0.00, 91.00);CreateObject(1663, 2367.12, -1909.78, 22.09, 0.00, 0.00, -98.00);CreateObject(1743, 2366.30, -1908.74, 22.85, 0.00, 0.00, 0.00);CreateObject(1744, 2366.48, -1910.64, 22.91, 0.00, 0.00, -55.00);CreateObject(1749, 2366.10, -1906.19, 22.14, 0.00, 0.00, 0.00);CreateObject(1663, 2367.04, -1906.18, 22.07, 0.00, 0.00, -91.00);CreateObject(1663, 2365.24, -1906.13, 22.07, 0.00, 0.00, 91.00);CreateObject(1743, 2366.25, -1905.15, 22.86, 0.00, 0.00, 0.00);CreateObject(1744, 2366.43, -1907.14, 22.92, 0.00, 0.00, -55.00);
  21. Steven_Johnson

    Парковка в г.Южном

    Здравствуйте уважаемые пользователи GSG! Вот я выложил свой маппинг как Парковка она находится в Южном напротив АЗС! Думаю вам понравится RemoveBuildingForPlayer(playerid, 4443, 2267.0901, -1737.3300, 22.9640, 0.25);CreateObject(4861, 2245.41, -1707.82, 26.98, 0.00, 0.00, 90.00);CreateObject(4442, 2233.77, -1722.44, 19.27, 0.00, 0.00, 0.00);CreateObject(4442, 2239.38, -1722.52, 19.29, 0.00, 0.00, 0.00);CreateObject(4442, 2246.86, -1716.57, 19.27, 0.00, 0.00, 0.00);CreateObject(4442, 2233.92, -1715.99, 19.29, 0.00, 0.00, 0.00);CreateObject(3508, 2222.80, -1706.57, 20.40, 0.00, 0.00, 0.00);CreateObject(3508, 2229.29, -1698.55, 20.39, 0.00, 0.00, 0.00);CreateObject(4442, 2236.24, -1711.83, 19.32, 0.00, 0.00, 0.00);CreateObject(4442, 2220.53, -1706.05, 19.28, 0.00, 0.00, 91.00);CreateObject(4442, 2226.36, -1706.28, 19.30, 0.00, 0.00, 91.00);CreateObject(4442, 2241.08, -1693.27, 19.31, 0.00, 0.00, 0.00);CreateObject(4442, 2240.12, -1699.23, 19.31, 0.00, 0.00, 0.00);CreateObject(2013, 2250.22, -1729.56, 22.55, 0.00, 0.00, -90.00);CreateObject(1746, 2249.86, -1728.07, 22.18, 0.00, 0.00, 182.00);CreateObject(1746, 2253.96, -1727.21, 22.18, 0.00, 0.00, 88.00);CreateObject(1749, 2252.97, -1731.77, 22.26, 0.00, 0.00, -91.00);CreateObject(1663, 2252.98, -1730.74, 22.22, 0.00, 0.00, 0.00);CreateObject(1744, 2252.86, -1731.62, 23.04, 0.00, 0.00, -86.00);CreateObject(967, 2238.58, -1726.68, 20.96, 0.00, 0.00, -91.00);CreateObject(996, 2242.41, -1726.32, 21.44, 0.00, 0.00, 0.00);CreateObject(983, 2237.75, -1722.38, 21.67, 0.00, 0.00, 0.00);CreateObject(983, 2233.93, -1722.41, 21.72, 0.00, 0.00, 0.00);CreateObject(983, 2229.97, -1722.45, 21.72, 0.00, 0.00, 0.00);CreateObject(983, 2226.66, -1722.49, 21.79, 0.00, 0.00, 0.00);CreateObject(983, 2222.73, -1722.46, 21.75, 0.00, 0.00, 0.00);CreateObject(983, 2219.17, -1722.40, 21.79, 0.00, 0.00, 0.00);CreateObject(983, 2248.80, -1719.12, 21.69, 0.00, 0.00, 91.00);CreateObject(983, 2248.85, -1723.37, 21.72, 0.00, 0.00, 91.00);CreateObject(983, 2248.25, -1715.06, 21.73, 0.00, 0.00, 91.00);CreateObject(983, 2249.14, -1693.78, 21.73, 0.00, 0.00, -91.00);CreateObject(983, 2249.29, -1698.13, 21.73, 0.00, 0.00, -91.00);
  22. Steven_Johnson

    Автосалон около УВД

    Вот моя вторая работа,думаю вам понравится! CreateObject(3643, 2697.78, -2457.86, 19.68, 0.00, 0.00, 0.00);CreateObject(1930, 2702.85, -2444.34, 22.89, 0.00, 0.00, 91.00);CreateObject(1930, 2710.77, -2444.20, 22.88, 0.00, 0.00, 91.00);CreateObject(1948, 2714.68, -2444.13, 22.11, 0.00, 0.00, -86.00);CreateObject(1930, 2714.43, -2438.64, 22.87, 0.00, 0.00, 2.00);CreateObject(1930, 2714.32, -2433.37, 22.89, 0.00, 0.00, 0.00);CreateObject(1739, 2698.84, -2442.58, 23.31, 0.00, 0.00, -180.00);CreateObject(1364, 2713.77, -2440.43, 21.65, 0.00, 0.00, -89.00);CreateObject(1746, 2713.83, -2437.21, 21.21, 0.00, 0.00, 0.00);CreateObject(1746, 2713.79, -2434.69, 21.17, 0.00, 0.00, 0.00);CreateObject(1361, 2713.74, -2432.90, 21.61, 0.00, 0.00, 0.00);CreateObject(1361, 2713.75, -2431.23, 21.61, 0.00, 0.00, 0.00);CreateObject(2082, 2704.11, -2438.41, 20.89, 0.00, 0.00, 91.00);CreateObject(10250, 2698.56, -2432.03, 20.89, 0.00, 0.00, 90.00);CreateObject(10250, 2698.58, -2434.88, 20.89, 0.00, 0.00, 91.00);CreateObject(10250, 2698.60, -2437.71, 20.89, 0.00, 0.00, 91.00);CreateObject(3055, 2697.85, -2446.47, 21.67, 0.00, 0.00, 91.00);CreateObject(2081, 2706.07, -2438.46, 20.89, 0.00, 0.00, -178.00);CreateObject(1744, 2705.64, -2438.46, 21.99, 0.00, 0.00, -91.00);CreateObject(1742, 2705.56, -2437.98, 21.35, 0.00, 0.00, -91.00);CreateObject(2081, 2708.00, -2438.44, 20.89, 0.00, 0.00, -178.00);CreateObject(1744, 2707.56, -2438.58, 21.97, 0.00, 0.00, -91.00);CreateObject(1742, 2707.48, -2437.79, 21.35, 0.00, 0.00, -91.00);CreateObject(2082, 2709.87, -2437.33, 20.89, 0.00, 0.00, -178.00);CreateObject(2081, 2709.92, -2435.41, 20.89, 0.00, 0.00, -89.00);CreateObject(1744, 2709.93, -2435.86, 21.97, 0.00, 0.00, 0.00);CreateObject(10009, 2700.96, -2443.76, 20.89, 0.00, 0.00, 178.00);CreateObject(10009, 2705.78, -2429.99, 20.89, 0.00, 0.00, 0.00);
  23. Steven_Johnson

    Spawn г.Южный

    Здравствуйте уважаемые пользователи GSG!Вот решил выложить свой первый маппинг сюда,строго не судите!Это моя первая работа! RemoveBuildingForPlayer(playerid, 2028, 2505.1399, -2123.4299, 22.8600, 0.25);RemoveBuildingForPlayer(playerid, 2028, 2505.1299, -2119.9800, 22.8600, 0.25);RemoveBuildingForPlayer(playerid, 2028, 2509.5400, -2123.5500, 22.8600, 0.25);RemoveBuildingForPlayer(playerid, 2028, 2508.8401, -2123.5601, 22.8600, 0.25);RemoveBuildingForPlayer(playerid, 2028, 2507.3000, -2118.6799, 22.8600, 0.25);RemoveBuildingForPlayer(playerid, 2028, 2511.3101, -2118.7800, 22.8600, 0.25);RemoveBuildingForPlayer(playerid, 2028, 2513.5400, -2123.5100, 22.8600, 0.25);CreateObject(4442, 2512.76, -2136.73, 19.27, 0.00, 0.00, 0.00);CreateObject(4442, 2513.13, -2132.28, 19.27, 0.00, 0.00, 0.00);CreateObject(4442, 2512.93, -2127.52, 19.27, 0.00, 0.00, 0.00);CreateObject(4442, 2512.77, -2122.53, 19.27, 0.00, 0.00, 0.00);CreateObject(983, 2525.68, -2137.30, 21.70, 0.00, 0.00, 91.00);CreateObject(983, 2525.63, -2139.81, 21.68, 0.00, 0.00, 90.00);CreateObject(983, 2525.64, -2134.41, 21.68, 0.00, 0.00, -89.00);CreateObject(983, 2525.64, -2130.74, 21.68, 0.00, 0.00, 90.00);CreateObject(10120, 2509.41, -2122.92, 23.02, 0.00, 0.00, 91.00);CreateObject(10120, 2504.98, -2119.85, 22.82, 0.00, 0.00, 91.00);CreateObject(2886, 2514.35, -2136.47, 23.48, 0.00, 0.00, 0.00);CreateObject(2942, 2503.72, -2136.13, 23.05, 0.00, 0.00, 271.00);CreateObject(3039, 2507.43, -2138.18, 20.96, 0.00, 0.00, 0.00);CreateObject(3039, 2511.87, -2138.10, 20.98, 0.00, 0.00, 0.00);CreateObject(3041, 2516.25, -2135.06, 20.97, 0.00, 0.00, 91.00);CreateObject(3041, 2516.12, -2121.01, 20.97, 0.00, 0.00, 91.00);CreateObject(1760, 2528.02, -2118.06, 20.96, 0.00, 0.00, 0.00);CreateObject(1760, 2526.38, -2118.13, 20.96, 0.00, 0.00, 0.00);CreateObject(1760, 2524.44, -2118.09, 20.96, 0.00, 0.00, 0.00);CreateObject(1760, 2522.71, -2118.17, 21.25, 0.00, 0.00, 0.00);CreateObject(1760, 2520.80, -2118.52, 20.96, 0.00, 0.00, 0.00);CreateObject(1760, 2519.10, -2118.45, 20.96, 0.00, 0.00, 0.00);CreateObject(1760, 2517.11, -2118.57, 20.96, 0.00, 0.00, 0.00);CreateObject(1760, 2527.72, -2115.57, 20.96, 0.00, 0.00, 0.00);CreateObject(1760, 2525.76, -2115.61, 20.96, 0.00, 0.00, 0.00);CreateObject(1760, 2523.64, -2115.86, 20.96, 0.00, 0.00, 0.00);CreateObject(1760, 2521.16, -2115.95, 20.96, 0.00, 0.00, 0.00);CreateObject(1760, 2518.63, -2116.14, 20.96, 0.00, 0.00, 0.00);CreateObject(1760, 2516.20, -2115.97, 21.09, 0.00, 0.00, 0.00);
  24. Ко всем stock'ам: stock IsADiesel(carid) { new diesel = GetVehicleModel(carid); { if(diesel==403||diesel==406||diesel==407||diesel== 408||diesel==416//ниже ид машин которые заправляются дизелем ||diesel==423||diesel==427||diesel==428||diesel==431||diesel==432 ||diesel==433||diesel==437||diesel==443||diesel==444||diesel==455 ||diesel==456||diesel==486||diesel==498||diesel==499||diesel==508 ||diesel==514||diesel==515||diesel==524||diesel==532||diesel==544 ||diesel==552||diesel==556||diesel==557||diesel==573||diesel==578 ||diesel==588||diesel==609) { return 1; } } return 0; } //80 FUEL stock IsA80Fuel(carid) { new vofuell = GetVehicleModel(carid); { if(vofuell==404||vofuell==412||vofuell==422||vofuell==438||vofuell==440//ниже ид машин которые заправляются 80 ||vofuell==466||vofuell==467||vofuell==474||vofuell==478||vofuell==483 ||vofuell==485||vofuell==504||vofuell==518||vofuell==525||vofuell==529 ||vofuell==530||vofuell==531||vofuell==536||vofuell==542||vofuell==543 ||vofuell==545||vofuell==568||vofuell==572||vofuell==574||vofuell==575 ||vofuell==576||vofuell==583||vofuell==600||vofuell==604||vofuell==605) { return 1; } } return 0; } //92 FUEL stock IsA92Fuel(carid) { new dvfuell = GetVehicleModel(carid); { if(dvfuell==401||dvfuell==405||dvfuell==409||dvfuell==413||dvfuell==414//ниже ид машин которые заправляются 92 ||dvfuell==418||dvfuell==419||dvfuell==420||dvfuell==421||dvfuell==424 ||dvfuell==426||dvfuell==434||dvfuell==436||dvfuell==439||dvfuell==442 ||dvfuell==445||dvfuell==448||dvfuell==457||dvfuell==458||dvfuell==459 ||dvfuell==461||dvfuell==462||dvfuell==463||dvfuell==468||dvfuell==470 ||dvfuell==471||dvfuell==475||dvfuell==479||dvfuell==480||dvfuell==482 ||dvfuell==489||dvfuell==490||dvfuell==491||dvfuell==492||dvfuell==495 ||dvfuell==496||dvfuell==500||dvfuell==505||dvfuell==507||dvfuell==516 ||dvfuell==517||dvfuell==521||dvfuell==522||dvfuell==523||dvfuell==526 ||dvfuell==527||dvfuell==528||dvfuell==533||dvfuell==534||dvfuell==535 ||dvfuell==540||dvfuell==546||dvfuell==547||dvfuell==549||dvfuell==550 ||dvfuell==551||dvfuell==554||dvfuell==555||dvfuell==558||dvfuell==561 ||dvfuell==566||dvfuell==579||dvfuell==580||dvfuell==581||dvfuell==582 ||dvfuell==585||dvfuell==586||dvfuell==589||dvfuell==596||dvfuell==597 ||dvfuell==598||dvfuell==599||dvfuell==601||dvfuell==602||dvfuell==603) { return 1; } } return 0; } //95 FUEL stock IsA95Fuel(carid) { new dpfuell = GetVehicleModel(carid); { if(dpfuell==400||dpfuell==402||dpfuell==411||dpfuell==415||dpfuell==429||dpfuell==451//ниже ид машин которые естественно заправляются дизелем95 ||dpfuell==477||dpfuell==494||dpfuell==502||dpfuell==503||dpfuell==506 ||dpfuell==541||dpfuell==559||dpfuell==560||dpfuell==562||dpfuell==565||dpfuell==567 ||dpfuell==587) { return 1; } } return 0; } В OnPlayerDialogResponse: if(dialogid == 380) { if(response) { if(listitem == 0) { if(IsPlayerConnected(playerid)) { new vehicle = GetPlayerVehicleID(playerid); if(SBizzInfo[8][sbProducts] == 0)//8 бизнесс у меня заправка { GameTextForPlayer(playerid, "~r~Out Of Stock", 5000, 1); return 1; } if(IsADiesel(vehicle)) { if(SBizzInfo[8][sbLocked] == 0)//8 бизнесс у меня заправка { if(IsAtGasStation(playerid)) { GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~ n~~n~~n~A‹¦OMO—…‡’ €AЊPA‹‡•E¦C•,ЊOѓO„ѓ…¦E ЊO„A‡Y†C¦A...",2000,3); TogglePlayerControllable(playerid, 0); SetTimer("Fillup",RefuelWait,0); Refueling[playerid] = 1; } } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Заправочная станция закрыта"); return 1; } } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Ваш автомобиль не подходит под данную категорию"); SendClientMessage(playerid, COLOR_LIGHTRED, "Посмотреть категорию своего автомобиля (/ifuel)"); return 1; } } return 1; } /// else if(listitem == 1) { if(IsPlayerConnected(playerid)) { new vehicle = GetPlayerVehicleID(playerid); if(SBizzInfo[8][sbProducts] == 0)//8 бизнесс у меня заправка { GameTextForPlayer(playerid, "~r~Out Of Stock", 5000, 1); return 1; } if(IsA80Fuel(vehicle)) { if(SBizzInfo[8][sbLocked] == 0)//8 бизнесс у меня заправка { if(IsAtGasStation(playerid)) { GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~ n~~n~~n~A‹¦OMO—…‡’ €AЊPA‹‡•E¦C•,ЊOѓO„ѓ…¦E ЊO„A‡Y†C¦A...",2000,3); TogglePlayerControllable(playerid, 0); SetTimer("Fillup",RefuelWait,0); Refueling[playerid] = 1; } } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Заправочная станция закрыта"); return 1; } } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Ваш автомобиль не подходит под данную категорию"); SendClientMessage(playerid, COLOR_LIGHTRED, "Посмотреть категорию своего автомобиля (/ifuel)"); return 1; } } return 1; } /// else if(listitem == 2) { if(IsPlayerConnected(playerid)) { new vehicle = GetPlayerVehicleID(playerid); if(SBizzInfo[8][sbProducts] == 0)//8 бизнесс у меня заправка { GameTextForPlayer(playerid, "~r~Out Of Stock", 5000, 1); return 1; } if(IsA92Fuel(vehicle)) { if(SBizzInfo[8][sbLocked] == 0)//8 бизнесс у меня заправка { if(IsAtGasStation(playerid)) { GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~ n~~n~~n~A‹¦OMO—…‡’ €AЊPA‹‡•E¦C•,ЊOѓO„ѓ…¦E ЊO„A‡Y†C¦A...",2000,3); TogglePlayerControllable(playerid, 0); SetTimer("Fillup",RefuelWait,0); Refueling[playerid] = 1; } } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Заправочная станция закрыта"); return 1; } } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Ваш автомобиль не подходит под данную категорию"); SendClientMessage(playerid, COLOR_LIGHTRED, "Посмотреть категорию своего автомобиля (/ifuel)"); return 1; } } return 1; } /// else if(listitem == 3) { if(IsPlayerConnected(playerid)) { new vehicle = GetPlayerVehicleID(playerid); if(SBizzInfo[8][sbProducts] == 0)//8 бизнесс у меня заправка { GameTextForPlayer(playerid, "~r~Out Of Stock", 5000, 1); return 1; } if(IsA95Fuel(vehicle)) { if(SBizzInfo[8][sbLocked] == 0)//8 бизнесс у меня заправка { if(IsAtGasStation(playerid)) { GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~ n~~n~~n~A‹¦OMO—…‡’ €AЊPA‹‡•E¦C•,ЊOѓO„ѓ…¦E ЊO„A‡Y†C¦A...",2000,3); TogglePlayerControllable(playerid, 0); SetTimer("Fillup",RefuelWait,0); Refueling[playerid] = 1; } } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Заправочная станция закрыта"); return 1; } } else { SendClientMessage(playerid, COLOR_LIGHTRED, "Ваш автомобиль не подходит под данную категорию"); SendClientMessage(playerid, COLOR_LIGHTRED, "Посмотреть категорию своего автомобиля (/ifuel)"); return 1; } } return 1; } /// } } В OnPlayerCommandText: if(strcmp(cmd, "/ifuel", true) == 0) { if(IsPlayerConnected(playerid)) { if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { new carid; carid = gLastCar[playerid]; new toplivo[32]; if(IsADiesel(carid)) { toplivo = "Дизельный двигатель"; } else if(IsA80Fuel(carid)) { toplivo = "Топливо 80"; } else if(IsA92Fuel(carid)) { toplivo = "Топливо 92"; } else if(IsA95Fuel(carid)) { toplivo = "Топливо 95"; } format(string, sizeof(string), "** Вид топлива: %s", toplivo); SendClientMessage(playerid, COLOR_GREY, string); } else { SendClientMessage(playerid, COLOR_GREY, "Вы должны быть в автомобиле"); return 1; } } return 1; }[/size][/font][/color] [color=#000000][font=Verdana, Arial, Tahoma, Calibri, Geneva, sans-serif][size=3]if(strcmp(cmd, "/fill", true) == 0) { if(IsPlayerConnected(playerid)) { if(IsAtGasStation(playerid))//если игрок на бензоправке, то даем ему диалог { ShowPlayerDialog(playerid,380,DIALOG_STYLE_LIST,"Выбор бензина","Дизельное топливо\n80 Бензин\n92 Бензин\n95 Бензин","Ок","Отмена"); } } return 1; } Автор не я,взято с другого портала.
  25. Эта кмд создана чтобы писать xD else if(strcmp(cmdtext,"/piss",true) == 0) { if(GetPlayerState(playerid)!=PLAYER_STATE_ONFOOT) return true; giveplayerid= GetClosestPlayer(playerid); if(PlayerInfo[playerid][pSex] == 1) //чтобы девочки немогли этого делать xD { SetPlayerSpecialAction(playerid,68); //Вроде как анимация [img=http://gsgames.ru/forum/public/style_emoticons/<#EMO_DIR#>/wink.gif] SetPlayerDrunkLevel(playerid, 0); GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "%s справляет нужду", sendername); //пишем в чат на расстоянние 10 ProxDetector(10.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); //Цвет пурпурный //SetPlayerAttachedObject(playerid, 1, 322, 1, -0.403834, 0.239940, 0.038157, 279.414489, 0.000000, 0.000000, 1.000000, 1.000000, 1.000000 ); } return true;Вставить в OnGameModeText
×

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

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