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

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

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

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

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

Тип контента


Форумы

  • Информационный раздел
    • Новости
    • Полезности для Игроков
    • Black List
    • Предложения по улучшению форума
    • Жалоба на модератора/администратора.
    • Наш гарант-сервис!
    • Помощь (F.A.Q)
    • Заявки
  • Pawn скриптинг
    • Готовые решения
    • Изучаем язык pawn
    • Вопросы по скриптингу
    • Ошибки при компилировании
    • Вопросы/проблемы по маппингу
    • Ошибки при запуске серверов
    • Модификации
  • CR:MP
    • Моды
    • Скрипты
    • Маппинг
    • Команды
    • IDs
    • Плагины/инклуды
    • Функции
    • Ваши сервера
  • SA:MP
    • Моды
    • Скрипты
    • Маппинг
    • Команды
    • IDs
    • Плагины/инклуды
    • Функции
    • Ваши сервера
  • Прочее
    • Разработки ПО
    • WEB-Разработки
    • Photoshop
    • Стол заказов
    • Флейм/Оффтоп/Общение
    • Проблемы с программным обеспечением
    • Другие темы по PAWN/GTA
    • Портфолио
    • Архив
    • Прочее файлы портала

Группы продуктов

  • Услуги портала
  • Исполнители от PAWNO-CRMP.RU
  • Школа

Категории

  • Для игроков
    • GRAND THEFT AUTO
    • CLEO
    • SAMPFUNCS
  • CR:MP
    • Мод
    • Скрипты
    • Плагины/инклуды
  • SA:MP
    • Моды
    • Скрипты
    • Плагины/инклуды
  • Модификации
    • Пакет модификаций (мод-пак)
    • Автомобили
    • Скины
    • Объекты
    • Разное
  • Прочее
    • Разработки ПО
    • WEB-Разработки
    • PSD
    • Прочее файлы

Блоги

  • Блог разработчика

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

Поиск контента, содержащего...


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

  • Начало

    Конец


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

  • Начало

    Конец


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

Регистрация

  • Начало

    Конец


Группа


Skype


Discord


ВК


Ник в игре


Род занятий


Балл

Найдено: 100 результатов

  1. При розыске, можно активировать функцию мигающего радара Ко всем переменным (new): new PlayerText:Textdraw0[MAX_PLAYERS]; new PtimerB[MAX_PLAYERS]; new PtimerR[MAX_PLAYERS]; В паблик "OnPlayerConnect": Textdraw0[playerid] = CreatePlayerTextDraw(playerid, 43.666683, 346.370300, "LD_DUAL:light"); PlayerTextDrawLetterSize(playerid, Textdraw0[playerid], -0.068999, -0.385777); PlayerTextDrawTextSize(playerid, Textdraw0[playerid], 86.000053, 72.592643); PlayerTextDrawAlignment(playerid, Textdraw0[playerid], 1); PlayerTextDrawColor(playerid, Textdraw0[playerid], -16777176); PlayerTextDrawSetShadow(playerid, Textdraw0[playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw0[playerid], 0); PlayerTextDrawFont(playerid, Textdraw0[playerid], 4); В конец мода: stock TurnOffWantRadar(playerid) { PlayerTextDrawHide(playerid,Textdraw0[playerid]); KillTimer(PtimerB[playerid]); KillTimer(PtimerR[playerid]); } stock TurnOnWantRadar(playerid) { PlayerTextDrawShow(playerid,Textdraw0[playerid]); PtimerB[playerid] = SetTimerEx("RadarWantB", 500, false, "i", playerid); } forward RadarWantB(playerid); public RadarWantB(playerid) { PlayerTextDrawColor(playerid, Textdraw0[playerid], 16777000); PlayerTextDrawShow(playerid,Textdraw0[playerid]); PtimerR[playerid] = SetTimerEx("RadarWantR", 500, false, "i", playerid); } forward RadarWantR(playerid); public RadarWantR(playerid) { PlayerTextDrawColor(playerid, Textdraw0[playerid], -16777176); PlayerTextDrawShow(playerid,Textdraw0[playerid]); SetTimerEx("RadarWantB", 500, false, "i", playerid); } Для включения радара используйте: TurnOnWantRadar(playerid); Для выключения: TurnOffWantRadar(playerid); Screens : Автор: я
  2. Здравствуй, уважаемый читатель. Я вот тут подумал, а что если вам написать маленькую системку рангов? В глобальные переменные: new Text3D: newbie3Dtext; 1) OnGameModeInit 2) OnPlayerConnect public OnPlayerConnect(playerid) { Attach3DTextLabelToPlayer(newbie3Dtext, playerid, 0.0, 0.0, 2.0); return 1; } Автор: VoiceDeveloper
  3. Добрый день, уважаемые форумчане. У меня вот тут завалялась старая система ежедневных бонусов. И решил её выложить сюда. 1) В глобальные переменные new bonus_day; 2) В OnPlayerConnect PI[playerid][pCash] += 1000; вы можете менять на свое. 3) В загрузку аккаунта (load_account) cache_get_value_name_int(0, "pBonus",bonus_day); 4) В сохранение аккаунта (save_Account) new query[3100]; mysql_format(ВАШЕ ПОДКЛЮЧЕНИЕ, query,sizeof(query),"UPDATE `accounts` SET `pBonus`= '%i WHERE `pID`='%d'",bonus_day, PI[playerid][pID]); mysql_tquery(ВАШЕ ПОДКЛЮЧЕНИЕ, query, "", ""); return true; 5) Что бы все корректно работало нам нужно добавить в phpmyadmin (т.е в нашу БД (accounts) ) таблицу с названием pBonus и с int 10 Автор: VoiceDeveloper
  4. Приветствую всех уважаемые пользователи форума! Сегодня я расскажу вам, как решить проблему с мерцанием текстур. Начинаем! 1: Зажимаем сочетание клавиш WIN + R, открывается "Выполнить", туда пишем "regedit", у нас открывается менюшка, де куча папок, несвязанных с крмп в принципе, ну ладно. 2: Короче, тыкаем на папку "HKEY_CURRENT_USER" открываются еще больше папок , тыкаем на "Software", еще больше папок , но, не пугайтесь , просто не смотрите на них , здесь нам нужно найти кое-как и открыть "www.gtasrv.ru", нашли? Ай молодцы , ну короче, снова надо открыть папку, уже нашу "CR-MP", в ней тыкаем по "GenerationC"(клик), если у вас там 2 файла, то, мы делаем следующий пункт: 3. Тыкаем там по пустому месту ПКМ > Создать > Параметр DWORD(32 бита) > сразу нужно будет задать имя, пишите: "streaming_memory" > потом кликаем по нему и жмем "Изменить" > там выбираем "Система исчисления": десятичная, Значение: 820(клик) > жмем "Ок". Все, ваша проблема решена) Если что, общий путь должен получиться таков: "HKEY_CURRENT_USER\Software\www.gtasrv.ru\CR-MP\GenerationC". Автор: SCRIPTMAN
  5. extair

    ищу Помощь с сервером

    Всем привет, у меня проблема, я вчера создал сервер все хорошо но я хочу добавить контейнеры, подскажите как это сделать, и как все установить, если что у меня сервер на хостинге gtahost
  6. Ко всем переменным new Text:RussianDrift[4]; В public OnGameModeInit В public OnPlayerConnect for(new logo; logo != 4; logo++) TextDrawShowForPlayer(playerid, RussianDrift[logo]);
  7. Текстдрав находится под худом оружия. Ко всем переменным В public OnPlayerConnect
  8. переписал команду с +RP для Green Tech Автор команды:незвестен Автор перевода команды:Я в OnPlayerCommandText if(strcmp(cmd, "/afly", true) == 0) { if(PlayerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid,COLOR_GREY,"Вам не доступна данная команда!"); if(GetPVarType(playerid, "FlyMode")) { new inter, world, Float:X, Float:Y, Float:Z, Float:FA; SetPlayerHealth(playerid,0x7F800000); GetPlayerPos(playerid, X, Y, Z); GetPlayerFacingAngle(playerid, FA); inter = GetPlayerInterior(playerid); world = GetPlayerVirtualWorld(playerid); SetPVarFloat(playerid, "SpecX", X); SetPVarFloat(playerid, "SpecY", Y); SetPVarFloat(playerid, "SpecZ", Z); SetPVarFloat(playerid, "SpecFA", FA); SetPVarInt(playerid, "SpecInt", inter); SetPVarInt(playerid, "SpecWorld", world); CancelFlyMode(playerid); } else { SetPVarInt(playerid, "SpecBool", 1); FlyMode(playerid); } return true; } ко всем stock или в конец мода stock GetMoveDirectionFromKeys(ud, lr) { new direction = 0; if(lr < 0) { if(ud < 0) direction = MOVE_FORWARD_LEFT; else if(ud > 0) direction = MOVE_BACK_LEFT; else direction = MOVE_LEFT; } else if(lr > 0) { if(ud < 0) direction = MOVE_FORWARD_RIGHT; else if(ud > 0) direction = MOVE_BACK_RIGHT; else direction = MOVE_RIGHT; } else if(ud < 0) direction = MOVE_FORWARD; else if(ud > 0) direction = MOVE_BACK; return direction; } //-------------------------------------------------- stock MoveCamera(playerid) { new Float:FV[3], Float:CPR[3]; GetPlayerCameraPos(playerid, CPR[0], CPR[1], CPR[2]); GetPlayerCameraFrontVector(playerid, FV[0], FV[1], FV[2]); if(noclipdata[playerid][accelmul] <= 1) noclipdata[playerid][accelmul] += ACCEL_RATE; new Float:speed = MOVE_SPEED * noclipdata[playerid][accelmul]; new Float:X, Float:Y, Float:Z; GetNextCameraPosition(noclipdata[playerid][mode], CPR, FV, X, Y, Z); MovePlayerObject(playerid, noclipdata[playerid][flyobject], X, Y, Z, speed); noclipdata[playerid][lastmove] = GetTickCount(); return 1; } //-------------------------------------------------- stock GetNextCameraPosition(move_mode, Float:CPR[3], Float:FV[3], &Float:X, &Float:Y, &Float:Z) { #define OFFSET_X (FV[0]*6000.0) #define OFFSET_Y (FV[1]*6000.0) #define OFFSET_Z (FV[2]*6000.0) switch(move_mode) { case MOVE_FORWARD: { X = CPR[0]+OFFSET_X; Y = CPR[1]+OFFSET_Y; Z = CPR[2]+OFFSET_Z; } case MOVE_BACK: { X = CPR[0]-OFFSET_X; Y = CPR[1]-OFFSET_Y; Z = CPR[2]-OFFSET_Z; } case MOVE_LEFT: { X = CPR[0]-OFFSET_Y; Y = CPR[1]+OFFSET_X; Z = CPR[2]; } case MOVE_RIGHT: { X = CPR[0]+OFFSET_Y; Y = CPR[1]-OFFSET_X; Z = CPR[2]; } case MOVE_BACK_LEFT: { X = CPR[0]+(-OFFSET_X - OFFSET_Y); Y = CPR[1]+(-OFFSET_Y + OFFSET_X); Z = CPR[2]-OFFSET_Z; } case MOVE_BACK_RIGHT: { X = CPR[0]+(-OFFSET_X + OFFSET_Y); Y = CPR[1]+(-OFFSET_Y - OFFSET_X); Z = CPR[2]-OFFSET_Z; } case MOVE_FORWARD_LEFT: { X = CPR[0]+(OFFSET_X - OFFSET_Y); Y = CPR[1]+(OFFSET_Y + OFFSET_X); Z = CPR[2]+OFFSET_Z; } case MOVE_FORWARD_RIGHT: { X = CPR[0]+(OFFSET_X + OFFSET_Y); Y = CPR[1]+(OFFSET_Y - OFFSET_X); Z = CPR[2]+OFFSET_Z; } } } //-------------------------------------------------- stock CancelFlyMode(playerid) { DeletePVar(playerid, "FlyMode"); CancelEdit(playerid); TogglePlayerSpectating(playerid, false); DestroyPlayerObject(playerid, noclipdata[playerid][flyobject]); noclipdata[playerid][cameramode] = CAMERA_MODE_NONE; return 1; } //-------------------------------------------------- stock FlyMode(playerid) { new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); noclipdata[playerid][flyobject] = CreatePlayerObject(playerid, 19300, X, Y, Z, 0.0, 0.0, 0.0); TogglePlayerSpectating(playerid, true); AttachCameraToPlayerObject(playerid, noclipdata[playerid][flyobject]); SetPVarInt(playerid, "FlyMode", 1); noclipdata[playerid][cameramode] = CAMERA_MODE_FLY; return 1; } В OnPlayerSpawn if(GetPVarInt(playerid, "SpecBool") == 1) { DeletePVar(playerid, "SpecBool"); new Float:X = GetPVarFloat(playerid, "SpecX"), Float:Y = GetPVarFloat(playerid, "SpecY"), Float:Z = GetPVarFloat(playerid, "SpecZ"), Float:FA = GetPVarFloat(playerid, "SpecFA"), inter = GetPVarInt(playerid, "SpecInt"), world = GetPVarInt(playerid, "SpecWorld"); DeletePVar(playerid, "SpecX"); DeletePVar(playerid, "SpecY"); DeletePVar(playerid, "SpecZ"); DeletePVar(playerid, "SpecFA"); DeletePVar(playerid, "SpecInt"); DeletePVar(playerid, "SpecWorld"); SetPlayerPos(playerid, X, Y, Z); SetPlayerFacingAngle(playerid, FA); SetPlayerVirtualWorld(playerid, world); SetPlayerInterior(playerid, inter); SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]); if(PlayerInfo[playerid][pWanted] > 0) SetPlayerWantedLevel(playerid, PlayerInfo[playerid][pWanted]); if(PlayerInfo[playerid][pSkin] > 0) SetPlayerSkin(playerid,PlayerInfo[playerid][pSkin]); else SetPlayerSkin(playerid, PlayerInfo[playerid][pModel]); return true; } ко всем new enum noclipenum { cameramode,flyobject,mode,lrold,udold,lastmove,Float:accelmul } new noclipdata[MAX_PLAYERS][noclipenum]; В OnPlayerConnect noclipdata[playerid][cameramode] = CAMERA_MODE_NONE; noclipdata[playerid][lrold] = 0; noclipdata[playerid][udold] = 0; noclipdata[playerid][mode] = 0; noclipdata[playerid][lastmove] = 0; noclipdata[playerid][accelmul] = 0.0; В OnPlayerUpdate if(noclipdata[playerid][cameramode] == CAMERA_MODE_FLY) { new keys,ud,lr; GetPlayerKeys(playerid,keys,ud,lr); if(noclipdata[playerid][mode] && (GetTickCount() - noclipdata[playerid][lastmove] > 100)) { MoveCamera(playerid); } if(noclipdata[playerid][udold] != ud || noclipdata[playerid][lrold] != lr) { if((noclipdata[playerid][udold] != 0 || noclipdata[playerid][lrold] != 0) && ud == 0 && lr == 0) { StopPlayerObject(playerid, noclipdata[playerid][flyobject]); noclipdata[playerid][mode] = 0; noclipdata[playerid][accelmul] = 0.0; } else { noclipdata[playerid][mode] = GetMoveDirectionFromKeys(ud, lr); MoveCamera(playerid); } } noclipdata[playerid][udold] = ud; noclipdata[playerid][lrold] = lr; return 0; } Если будет error 017: undefined symbol "pSkin" поменяйте pSkin на pChar
  9. В начало мода. stock IPAntiPorts[][] = { "5555", "6666", "7777", "8888", "9999" //Антиреклама }; В public OnPlayerText if(CheckOnIP(text)) { SendClientMessage(playerid, COLOR_ANSWER, "Реклама запрещена!" ); return 0; } В конец мода. stock CheckOnIP(string[]) //Антиреклама { new i; for(i = sizeof(IPAntiPorts) - 1; i >= 0; i--) if(strfind(string, IPAntiPorts[i], false, 0) >= 0) return 1; if((i = strfind(string, ".", false, 0)) >= 0) { new digits; for (++i; ; i++) { switch(string[i]) { case ' ': if(digits > 0) break; else continue; case '0'..'9': digits++; default: break; } } if(digits >= 2) return 1; } return 0; } Если нужно ставить проверку в какие-то новости и т.д. if(CheckOnIP(text)) { SendClientMessage(playerid, COLOR_ANSWER, "Реклама запрещена!" ); return 0; }
  10. new Float:CoefGrav; в public OnGameModeInit CoefGrav = floatmul(floatdiv(1.00, floatlog(floatdiv(1.00, kgrav22))), 1300.00); в секундный таймер. for(new i=0;i<MAX_PLAYERS;i++)//цикл для всех игроков { if(IsPlayerConnected(i))//дальнейшее выполняем если игрок в коннекте { if(GetPlayerSpeed(i) > CoefGrav && PlayerInfo[pAdmin] == 0 && PlayerInfo[pVIP] == 0) { kick(i); } } } В конец мода. stock GetPlayerSpeed(playerid) { new Float:ST[4]; if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]); else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]); ST[3] = floatsqroot(floatmul(ST[0], ST[0]) + floatmul(ST[1], ST[1]) + floatmul(ST[2], ST[2])) * 200; return floatround(ST[3]); }
  11. Автор: Dest Всем привет уважаемые пользователи! Сейчас хочу вам выложить такой мануал, как убрать "_" в нике игрока Все мы знаем, что в игре между Имя и Фамилия есть такой символ "_" Теперь давайте его уберем и сделаем как в реальной жизни Подойдет как раз для RP проектов Весь код вставляем в конец мода: Это вернет ваше имя Ivan stock pName(playerid) { new nick[MAX_PLAYER_NAME]; GetPlayerName(playerid, nick, MAX_PLAYER_NAME); new getspace = strfind(nick, "_", true); if(getspace != -1) strdel(nick, getspace, sizeof(nick)); return nick; } Далее: Это вернет вашу фамилию Ivanov stock pLastName(playerid) { new nick[MAX_PLAYER_NAME]; GetPlayerName(playerid, nick, MAX_PLAYER_NAME); new getspace = strfind(nick, "_", true); if(getspace != -1) strdel(nick, 0, getspace+1); return nick; } Ну и последнее: Это вернет уже разделено Ivan Ivanov stock pNameEx(playerid) { new nick[MAX_PLAYER_NAME]; GetPlayerName(playerid, nick, MAX_PLAYER_NAME); new getspace = strfind(nick, "_", true); if(getspace != -1) nick[getspace] = ' '; return nick; }
  12. Всем привет, на этом способе основываются почти все проекты, которые перешли на версию сампа 0.3.7. Многие просили, поэтому скидываю готовое решение и исходный код. Считайте, что по этому способу можно адаптировать любую карту в самп 0.3.7. Тут уже вас ничего не должно ограничивать, все зависит от вашей фантазии. Enjoy Краткий гайд: 1. Установить SAMP 0.3.7, затем dsound.dll в папку с игрой GTA Criminal Russia 2. Переместить папку CRMP в папку SAMP 3. Запускаете SAMP. В исходниках можете изменить путь до папки CRMP. Скачать адаптацию (Яндекс.Диск) Source code (Яндекс.Диск) (на другом ресурсе тему мою не одобрили, поэтому пишу сюда, чтобы развязать людям руки, которые хотят развивать свои проекты)
  13. Сливаю Вам текстдрав ( Взаимодействие с L.Alt (GTA SA/GTA CRMP) ) Автор работы: s1nezfu Комментарий автора: при слива на сторонних порталах, указывать автора. Кидайте +, и солью система взаимодействия и систему драг-рейсинга. TDE_alt.txt
  14. В public OnGameModeInit() SetTimer("Dem1x",3000,1); // 3000 это время, заданное для смены названий Создаем public: Автор: Erick
  15. Автор: SNaPy81 Вы наверняка видели такие посты с такой же системой, я хочу тоже выложить свой способ написания такой системы. Этот код мне показался маленьким и как можно оптимизированным и так вот сам код:
  16. Всем привет. Хочу поделиться с вами командой для проведения рестарта (перезагрузки сервера). Это мой первый урок, так что не ругайте сильно :). Ко всем командам сервера (DС_CMD): CMD:gmx(playerid, params[]) { if(PI[playerid][pAdmin] < ADM_TOP) return SendClientMessage(playerid, COLOR_REDD, "Запрещено!"); //проверка на администратора, если отличается, - то меняете. for(new x; x < 25; x++) SendClientMessageToAll(COLOR_RED, " "); SendClientMessageToAll(0xFFCC00FF,"[ВНИМАНИЕ!] Руководитель проекта сделал RESTART сервера"); //выводит всем игрокам текст в чат. GameTextForAll( "~b~РЕСТАРТ СЕРВЕРА", 10000, 3); //выводит всем игрокам текст посередине экрана. SaveAcc(); //функция сохранения данных аккаунта во время рестарта (если сохранение другое, то тоже меняете). SaveWarehouse(); foreach(new i: Player) { if(!PlayerLogged[i]) continue; SendRconCommand("gmx"); //выполняет команду RCON-администратора. } return 1; } Если у вас "стандартный" командный процессор, то в public OnPlayerCommandText(playerid, cmdtext[]): if (strcmp(cmdtext, "/gmx", true)==0) { if(PI[playerid][pAdmin] < ADM_TOP) return SendClientMessage(playerid, COLOR_REDD, "Запрещено!"); //проверка на администратора, если отличается, - то меняете. for(new x; x < 25; x++) SendClientMessageToAll(COLOR_RED, " "); SendClientMessageToAll(0xFFCC00FF,"[ВНИМАНИЕ!] Руководитель проекта сделал RESTART сервера"); //выводит всем игрокам текст в чат. GameTextForAll( "~b~РЕСТАРТ СЕРВЕРА", 10000, 3); //выводит всем игрокам текст посередине экрана. SaveAcc(); //функция сохранения данных аккаунта во время рестарта (если сохранение другое, то тоже меняете). SaveWarehouse(); foreach(new i: Player) { if(!PlayerLogged[i]) continue; SendRconCommand("gmx"); //выполняет команду RCON-администратора. } return 1; } Спасибо за внимание, с вами был заслуженный PAWN- скриптер СССР и РФ - Maks_Wayne.
  17. Здорова. Сегодня мы напишем небольшую систему селфи. Система подойдет как для RolePlay, так и для Non RolePlay проектов. Скажу сразу: систему взял в одной из групп ВКонтакте, доработал и вшил в свой мод (Vermont). Добавляем ко всем переменным (new, начало мода): new Float: positionCam[MAX_PLAYERS][3]; //позиция камеры по время фотосессии new Float: Reedeg[MAX_PLAYERS]; new const Float: Radiuses = 1.7; //Радиус new const Float: Height = 1.15; //Высота Добавили? Теперь идем ко всем командам в нашем моде (для пользователей с DС_CMD/PawnCMD) и добавляем: Теперь код для использующих стандартный КП. Вам же нужно перейти в public OnPlayerCommandText(playerid, cmdtext[]): Теперь, когда весь код написан, идём проверять сие чудо PAWN-программирования на нашем сервере. Скриншоты моей проверки: https://imgur.com/a/UGcpNMV Из скиншотов видно, что в моем моде все работает как часы. Если же у вас возникли какие-то проблемы или ошибки во время написания/тестирования данной системы, не стесняйтесь и пишите в комментарии этой темы, мы вместе исправим все ошибки или проблемы. На этом наш урок завершается, спасибо за внимание, ну а с вами был заслуженный PAWN-скриптер СССР и РФ - Maxim_Capone.
  18. Не многие знают про инклуд "acuf" ( Compatible Upgrades Function ). Он позволяет в минимальное количество строк кода организовать на своем сервере тюнинг транспорта. Пример использования: В начало мода: #define MAX_VEHICLE_COMPONENT 172 new AwtomasMassiveID[MAX_PLAYERS][MAX_VEHICLE_COMPONENT]; enum AllComponents { idcomp, Type[20], idtype, Name[20], t_cena }; new AllTuningComponentsInfo[MAX_VEHICLE_COMPONENT][AllComponents]= { {1008, "Нитро",1, "Nos 5x",10000 }, {1009, "Нитро",1, "Nos 2x" ,10000 }, {1010, "Нитро",1, "Nos 10x" ,10000 }, {1073, "Колеса",2, "Shadow" ,15000 }, {1074, "Колеса",2, "Mega" ,15000 }, {1075, "Колеса",2, "Rimshine" ,15000 }, {1076, "Колеса",2, "Wires" ,15000 }, {1077, "Колеса",2, "Classic" ,15000 }, {1078, "Колеса",2, "Twist" ,15000 }, {1079, "Колеса",2, "Cutter" ,15000 }, {1080, "Колеса",2, "Switch" ,15000 }, {1081, "Колеса",2, "Grove" ,15000 }, {1082, "Колеса",2, "Import" ,15000 }, {1083, "Колеса",2, "Dollar" ,15000 }, {1084, "Колеса",2, "Trance" ,15000 }, {1085, "Колеса",2, "Atomic" ,15000 }, {1025, "Колеса",2, "Offroad" ,15000 }, {1096, "Колеса",2, "Ahab" ,15000 }, {1097, "Колеса",2, "Virtual" ,15000 }, {1098, "Колеса",2, "Access" ,15000 }, {1086, "Стерео",3, "Sony" ,2000 }, {1087, "Гидравлика",4, "Лоуайдер" ,2000 }, {1000, "Спойлер",5, "Pro" ,40000 }, {1001, "Спойлер",5, "Win" ,40000 }, {1002, "Спойлер",5, "Drag" ,40000 }, {1003, "Спойлер",5, "Alpha" ,40000 }, {1014, "Спойлер",5, "Champ" ,40000 }, {1015, "Спойлер",5, "Race" ,40000 }, {1016, "Спойлер",5, "Worx" ,40000 }, {1049, "Спойлер",5, "Alien" ,40000 }, {1050, "Спойлер",5, "X-Flow" ,40000 }, {1058, "Спойлер",5, "Alien" ,40000 }, {1023, "Спойлер",5, "Fury" ,40000 }, {1158, "Спойлер",5, "X-Flow" ,40000 }, {1146, "Спойлер",5, "X-Flow" ,40000 }, {1147, "Спойлер",5, "Alien" ,40000 }, {1138, "Спойлер",5, "Alien" ,40000 }, {1139, "Спойлер",5, "X-Flow" ,40000 }, {1060, "Спойлер",5, "X-Flow" ,40000 }, {1162, "Спойлер",5, "Alien" ,40000 }, {1163, "Спойлер",5, "X-Flow" ,40000 }, {1164, "Спойлер",5, "Alien" ,40000 }, {1004, "Капот",6, "Champ Scoop" ,20000 }, {1005, "Капот",6, "Fury Scoop" ,20000 }, {1011, "Капот",6, "Race Scoop" ,20000 }, {1012, "Капот",6, "Worx Scoop" ,20000 }, {1100, "Бульбары",7, "Chrome Grill" ,10000 }, {1123, "Бульбары",7, "Chrome Bars" ,10000 }, {1125, "Бульбары",7, "Chrome Lights" ,10000 }, {1117, "Передний бампер",8,"Chrome" ,40000 }, {1152, "Передний бампер",8,"X-Flow" ,40000 }, {1153, "Передний бампер",8,"Alien" ,40000 }, {1155, "Передний бампер",8,"Alien" ,40000 }, {1157, "Передний бампер",8,"X-Flow" ,40000 }, {1160, "Передний бампер",8,"Alien" ,40000 }, {1160, "Передний бампер",8,"Alien" ,40000 }, {1165, "Передний бампер",8,"X-Flow" ,40000 }, {1166, "Передний бампер",8,"Alien" ,40000 }, {1169, "Передний бампер",8,"Alien" ,40000 }, {1170, "Передний бампер",8,"X-Flow" ,40000 }, {1171, "Передний бампер",8,"Alien" ,40000 }, {1172, "Передний бампер",8,"X-Flow" ,40000 }, {1173, "Передний бампер",8,"X-Flow" ,40000 }, {1174, "Передний бампер",8,"Chrome" ,40000 }, {1176, "Передний бампер",8,"Chrome" ,40000 }, {1179, "Передний бампер",8,"Chrome" ,40000 }, {1181, "Передний бампер",8,"Slamin" ,40000 }, {1182, "Передний бампер",8,"Chrome" ,40000 }, {1185, "Передний бампер",8,"Slamin" ,40000 }, {1188, "Передний бампер",8,"Slamin" ,40000 }, {1189, "Передний бампер",8,"Chrome" ,40000 }, {1190, "Передний бампер",8,"Slamin" ,40000 }, {1191, "Передний бампер",8,"Chrome" ,40000 }, {1140, "Задний бампер",9,"X-Flow" ,40000 }, {1141, "Задний бампер",9,"Alien" ,40000 }, {1148, "Задний бампер",9,"X-Flow" ,40000 }, {1149, "Задний бампер",9,"Alien" ,40000 }, {1150, "Задний бампер",9,"Alien" ,40000 }, {1151, "Задний бампер",9,"X-Flow" ,40000 }, {1154, "Задний бампер",9,"Alien" ,40000 }, {1156, "Задний бампер",9,"X-Flow" ,40000 }, {1159, "Задний бампер",9,"Alien" ,40000 }, {1161, "Задний бампер",9,"X-Flow" ,40000 }, {1167, "Задний бампер",9,"X-Flow" ,40000 }, {1168, "Задний бампер",9,"Alien" ,40000 }, {1175, "Задний бампер",9,"Slamin" ,40000 }, {1177, "Задний бампер",9,"Slamin" ,40000 }, {1178, "Задний бампер",9,"Slamin" ,40000 }, {1180, "Задний бампер",9,"Chrome" ,40000 }, {1183, "Задний бампер",9,"Slamin" ,40000 }, {1184, "Задний бампер",9,"Chrome" ,40000 }, {1186, "Задний бампер",9,"Slamin" ,40000 }, {1187, "Задний бампер",9,"Chrome" ,40000 }, {1192, "Задний бампер",9,"Chrome" ,40000 }, {1193, "Задний бампер",9,"Slamin" ,40000 }, {1143, "Вентиляция",10, "Oval" ,15000 }, {1145, "Вентиляция",10, "Square" ,15000 }, {1032, "Крыша",11, "Alien" ,15000 }, {1006, "Крыша",11, "Scoop" ,15000 }, {1038, "Крыша",11, "Alien" ,15000 }, {1035, "Крыша",11, "X-Flow" ,15000 }, {1033, "Крыша",11, "X-Flow" ,15000 }, {1053, "Крыша",11, "X-Flow" ,15000 }, {1054, "Крыша",11, "Alien" ,15000 }, {1055, "Крыша",11, "Alien" ,15000 }, {1061, "Крыша",11, "X-Flow" ,15000 }, {1067, "Крыша",11, "Alien" ,15000 }, {1068, "Крыша",11, "X-Flow" ,15000 }, {1088, "Крыша",11, "Alien" ,15000 }, {1091, "Крыша",11, "X-Flow" ,15000 }, {1103, "Крыша",11, "Covertible" ,15000 }, {1128, "Крыша",11, "Vinyl Hardtop",15000 }, {1130, "Крыша",11, "Hardtop" ,15000 }, {1131, "Крыша",11, "Softtop" ,15000 }, {1013, "Фары",12, "Round Fog" ,15000 }, {1024, "Фары",12, "Square Fog" ,15000 }, {1109, "Задний бульбарс",13,"Chrome" ,10000 }, {1110, "Задний бульбарс",13,"Slamin" ,10000 }, {1115, "Передний бульбарс",14,"Chrome",10000 }, {1116, "Передни бульбарс",15,"Slamin" ,10000 }, {1018, "Выхлоп",16, "Upswept" ,30000 }, {1019, "Выхлоп",16, "Twin" ,30000 }, {1020, "Выхлоп",16, "Large" ,30000 }, {1021, "Выхлоп",16, "Medium" ,30000 }, {1022, "Выхлоп",16, "Small" ,30000 }, {1028, "Выхлоп",16, "Alien" ,30000 }, {1029, "Выхлоп",16, "X-Flow" ,30000 }, {1034, "Выхлоп",16, "Alien" ,30000 }, {1037, "Выхлоп",16, "X-Flow" ,30000 }, {1043, "Выхлоп",16, "Slamin" ,30000 }, {1044, "Выхлоп",16, "Chrome" ,30000 }, {1045, "Выхлоп",16, "X-Flow" ,30000 }, {1046, "Выхлоп",16, "Alien" ,30000 }, {1059, "Выхлоп",16, "X-Flow" ,30000 }, {1064, "Выхлоп",16, "Alien" ,30000 }, {1065, "Выхлоп",16, "Alien" ,30000 }, {1066, "Выхлоп",16, "X-Flow" ,30000 }, {1092, "Выхлоп",16, "Alien" ,30000 }, {1089, "Выхлоп",16, "X-Flow" ,30000 }, {1126, "Выхлоп",16, "Chrome" ,30000 }, {1127, "Выхлоп",16, "Slamin" ,30000 }, {1129, "Выхлоп",16, "Chrome" ,30000 }, {1113, "Выхлоп",16, "Chrome" ,30000 }, {1114, "Выхлоп",16, "Slamin" ,30000 }, {1104, "Выхлоп",16, "Chrome" ,30000 }, {1105, "Выхлоп",16, "Slamin" ,30000 }, {1132, "Выхлоп",16, "Slamin" ,30000 }, {1135, "Выхлоп",16, "Slamin" ,30000 }, {1136, "Выхлоп",16, "Chrome" ,30000 }, {1007, "Подвесы",17, "Sideskirt", 50000 }, {1026, "Подвесы",17, "Alien" ,50000 }, {1031, "Подвесы",17, "X-Flow" ,50000 }, {1036, "Подвесы",17, "Alien" ,50000 }, {1039, "Подвесы",17, "X-Flow" ,50000 }, {1041, "Подвесы",17, "X-Flow" ,50000 }, {1042, "Подвесы",17, "Chrome" ,50000 }, {1047, "Подвесы",17, "Alien" ,50000 }, {1048, "Подвесы",17, "X-Flow" ,50000 }, {1056, "Подвесы",17, "Alien" ,50000 }, {1057, "Подвесы",17, "X-Flow" ,50000 }, {1069, "Подвесы",17, "Alien" ,50000 }, {1070, "Подвесы",17, "X-Flow" ,50000 }, {1090, "Подвесы",17, "Alien" ,50000 }, {1093, "Подвесы",17, "X-Flow" ,50000 }, {1095, "Подвесы",17, "X-Flow" ,50000 }, {1106, "Подвесы",17, "Chrome Arches" ,50000 }, {1108, "Подвесы",17, "Chrome Strip" ,50000 }, {1118, "Подвесы",17, "Chrome Trim" ,50000 }, {1119, "Подвесы",17, "Wheelcovers" ,50000 }, {1122, "Подвесы",17, "Chrome Flames" ,50000 }, {1133, "Подвесы",17, "Chrome Strip" ,50000 }, {1134, "Подвесы",17, "Chrome Strip" ,50000 }}; Команда CMD:tun(playerid,params[]) { if(!PlayerToPoint(10.0, playerid, 641.7616,-117.7067,1003.1119)) return 1;// проверка на нахождение у тюнинг салона (можно убрать) if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SCM(playerid, -1, "Вы не в машине"); new string[1024],dstirng[60],count; strcat(string,dstirng); for(new i;i<MAX_VEHICLE_COMPONENT;i++) { if(!IsVehicleUpgradeCompatible(GetVehicleModel(GetPlayerVehicleID(playerid)), AllTuningComponentsInfo[i][idcomp]))continue; format(dstirng, sizeof(dstirng), "%d\t%s\t%s\t%dруб.\n",count,AllTuningComponentsInfo[i][Type], AllTuningComponentsInfo[i][Name],AllTuningComponentsInfo[i][t_cena]); strcat(string,dstirng); AwtomasMassiveID[playerid][count] = i; count++; } if(strlen(string) > 1)SPD(playerid,1000,DIALOG_STYLE_LIST,"Установка деталей",string, "Установить","Закрыть"); else SCM(playerid,0xFFA600,"Для данного транспорта нет ни одной детали тюннинга!"); return 1; } Диалог. В OnPlayerDialogResponse case 1000: { if(response) { if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid, -1, "Вы не в машине"); new ID1 = AwtomasMassiveID[playerid][listitem],string2[128]; new type = AllTuningComponentsInfo[ID1][idtype]; if(PInfo[playerid][pCash] < AllTuningComponentsInfo[ID1][t_cena]) return cmd_tun(playerid,"2"), SCM(playerid,-1,"У Вас не хватает денет для установки данной детали"); // PInfo[playerid][pCash] -= AllTuningComponentsInfo[ID1][t_cena]; /*Мое сохранение тюнинга*/ if(type == 1)CarsInfo[GetPlayerVehicleID(playerid)][v_tun1] = AllTuningComponentsInfo[ID1][idcomp]; else if(type == 2)CarsInfo[GetPlayerVehicleID(playerid)][v_tun2] = AllTuningComponentsInfo[ID1][idcomp]; else if(type == 3)CarsInfo[GetPlayerVehicleID(playerid)][v_tun3] = AllTuningComponentsInfo[ID1][idcomp]; else if(type == 4)CarsInfo[GetPlayerVehicleID(playerid)][v_tun4] = AllTuningComponentsInfo[ID1][idcomp]; else if(type == 5)CarsInfo[GetPlayerVehicleID(playerid)][v_tun5] = AllTuningComponentsInfo[ID1][idcomp]; else if(type == 6)CarsInfo[GetPlayerVehicleID(playerid)][v_tun6] = AllTuningComponentsInfo[ID1][idcomp]; else if(type == 7)CarsInfo[GetPlayerVehicleID(playerid)][v_tun7] = AllTuningComponentsInfo[ID1][idcomp]; else if(type == 8)CarsInfo[GetPlayerVehicleID(playerid)][v_tun8] = AllTuningComponentsInfo[ID1][idcomp]; else if(type == 9)CarsInfo[GetPlayerVehicleID(playerid)][v_tun9] = AllTuningComponentsInfo[ID1][idcomp]; else if(type == 10)CarsInfo[GetPlayerVehicleID(playerid)][v_tun10] = AllTuningComponentsInfo[ID1][idcomp]; else if(type == 11)CarsInfo[GetPlayerVehicleID(playerid)][v_tun11] = AllTuningComponentsInfo[ID1][idcomp]; else if(type == 12)CarsInfo[GetPlayerVehicleID(playerid)][v_tun12] = AllTuningComponentsInfo[ID1][idcomp]; else if(type == 13)CarsInfo[GetPlayerVehicleID(playerid)][v_tun13] = AllTuningComponentsInfo[ID1][idcomp]; else if(type == 14)CarsInfo[GetPlayerVehicleID(playerid)][v_tun14] = AllTuningComponentsInfo[ID1][idcomp]; else if(type == 15)CarsInfo[GetPlayerVehicleID(playerid)][v_tun15] = AllTuningComponentsInfo[ID1][idcomp]; else if(type == 16)CarsInfo[GetPlayerVehicleID(playerid)][v_tun16] = AllTuningComponentsInfo[ID1][idcomp]; else if(type == 17)CarsInfo[GetPlayerVehicleID(playerid)][v_tun17] = AllTuningComponentsInfo[ID1][idcomp]; /*Мое сохранение тюнинга*/ format(string2, sizeof(string2), "Компонент установлен {00ff00}%d {ffffff}Тип: {00ff00}%s {ffffff}Название:{00ff00}%s. {ffffff}- %dруб.",AllTuningComponentsInfo[ID1][idcomp],AllTuningComponentsInfo[ID1][Type],AllTuningComponentsInfo[ID1][Name],AllTuningComponentsInfo[ID1][t_cena]); SCM(playerid, -1, string2); AddVehicleComponentEx(GetPlayerVehicleID(playerid),AllTuningComponentsInfo[ID1][idcomp]); cmd_tun(playerid," "); } return 1; } [spoiler=Скриншот] Самой главной особенностью данного инклуда является установка только тех деталей - которые поддерживаются текущей моделью транспорта. Он был разработан для SA:MP, но за пару дней я его сумел адаптировать под CR:MP проверяя все детали для своего сервера, но так как он закрылся, я решил выложить инклуд в открытый доступ. Теперь абсолютно никаких крашей из-за тюнинга! acuf - Адаптация под CR:MP Скачать include Автор данного мануала и адаптации инклюда: im_dimas (я) 2016 год.
  19. Автор: Неизвестен Здравствуйте уважаемые пользователи,хочу вам представить рандомную погоду.Нашел в просторах интернета. И так начнем. К forward: forward ChangeWeather(); Затем в public OnGameModeInit() SetTimer("ChangeWeather",1000*60*30, true);//1 раз в 30 минут, будет меняться погода. ChangeWeather(); Ну и создаем паблик, в свободном месте. Можно в самом конце мода:
  20. Раздел "Готовые решения" предназначен для публикации систем, команд и прочих полезностей для серверов на ЯП Pawn. Если Вы создали тему в данном разделе, то вы автоматически соглашаетесь со следующими правилами: 1. ЕПФ 2. Заголовок темы 1. Заголовок должен быть коротким, понятным, но содержательным Пример плохого: "система"; "новая команда" и т. д. Хороший пример: "Система подарков"; "/spawn - заспавнить игрока" 2. Заголовок не должен быть написан большими буквами (CAPS LOCK) 3. Содержание темы 1. В теме должен быть указан автор, даже, если это не Вы Если вы действительно не знаете автора, то напишите: "Авто: неизвестно" 2. Содержание должно быть понятным, выглядеть удобно и красиво, не "резать" глаза, стоит отказаться от использования ярких цветов 3. Максимальный шрифт: 18 4. Используйте "Код", "Спойлер" для компактного вида темы Правила ЕПФ не стал отдельно выносить для каждого пункта, но их никто не отменял.
  21. Доброго вечера. Сегодня мы напишем небольшую систему рекламы на Вашем сервере. Добавим ко всем define: #define SERVER_NAME "PAWNO-CRMP ROLEPLAY" // название сервера #define SERVER_NAME_RP "PC RP" // название сервера с префиксом RP (укороченная версия) #define ACCOUNT_REPLENISHMENT "pawno-crmp.ru" // страница пополнения счета аккаунта #define PROJECT_SITE "pawno-crmp.ru" // сайт проекта #define PROJECT_FORUM "pawno-crmp.ru" // форум проекта #define VKONTAKTE_COMMUNITY "vk.com/pawno.crmp" // группа ВКонтакте проекта Ко всем new: new AdvertiseTimerIndex; new AdvertTime; //переменная рекламы. В public OnGameModeInit: AdvertiseTimerIndex = SetTimer("AdvertiseTimer", 100000, true); //устанавливаем частоту вызова паблика с рекламой (проще говоря, как часто будет выводиться реклама). AdvertiseTimerIndex = SetTimer("AdvertiseTimer1", 150000, true); //устанавливаем частоту вызова паблика с рекламой (проще говоря, как часто будет выводиться реклама). AdvertiseTimerIndex = SetTimer("AdvertiseTimer2", 200000, true); //устанавливаем частоту вызова паблика с рекламой (проще говоря, как часто будет выводиться реклама). AdvertiseTimerIndex = SetTimer("AdvertiseTimer3", 250000, true); //устанавливаем частоту вызова паблика с рекламой (проще говоря, как часто будет выводиться реклама). AdvertiseTimerIndex = SetTimer("AdvertiseTimer4", 300000, true); //устанавливаем частоту вызова паблика с рекламой (проще говоря, как часто будет выводиться реклама). Создаем 3 новые forward-а и public-а: Код написан, переходим к тесту. Скриншоты: https://imgur.com/a/EQS8AJk На этом наш урок завершен, всем спасибо за внимание. Автор: Maxim_Capone.
  22. Еще раз приветствую. Давайте напишем систему голода и жажды, а, говоря проще, систему нужд. Для начала добавим в enum pInfo: pHunger, pZhazhda, Перейдем к public OnPlayerSpawn(playerid). Туда вставим: SetHunger(playerid, PI[playerid][pHunger]); SetZhazhda(playerid, PI[playerid][pZhazhda]); Идём в public OnPlayerEnterDynamicArea(playerid, areaid). Если его нет - создайте forward и public. Теперь создаём команду для проверки своих нужд и адм-команду: Переходим к stock CreateAccount(playerid, password[]): SetHunger(playerid, PI[playerid][pHunger]); Hunger(playerid, 0); SetZhazha(playerid, PI[playerid][pZhazha]); Переходим к паблику сохранения. У меня это - OnPlayerLogin, и вставляем: PI[playerid][pHunger] = cache_get_row_int(0, n, dbHandle); // hunger PI[playerid][pZhazhda] = cache_get_row_int(0, 2n, dbHandle); // zazda ВНАМАНИЕ: n, 2n заменить на любой свободный номер!!! В public SaveAccount: format(src,sizeof(src),"hunger='%i',",PI[playerid][pHunger]); strcat(query,src,sizeof(query)); Сюда - stock SetPlayerDataToDefault(playerid): PI[playerid][pHunger] = 50; PI[playerid][pZhazhda] = 50; Итак. Создадим stock-и: И последний рывок - создадим массив, хранящий наши хот-доги: enum AreaInformation { arHotdogHP } new AreaInfo[AreaInformation]; Итак. Мы наконец-то закончили.. Слава Богу.. Теперь тест. Скриншоты: https://imgur.com/a/bqFvkkg У меня, как видите, все работает. Если у Вас возникли ошибки или проблемы - отпишите в эту тему, я с радостью помогу Вам. Урок завершен, я пошёл отдыхать после столь долгой работы с кодом.. Автор: Maxim_Capone (часть кода взята с Amazing RP, автор которого Mark_Richards).
  23. Автор: SCRIPTMAN Всем привет. Сегодня я вам расскажу, как подключить TextDraw, а именно логотип сервера. Для начала нам нужен сам TextDraw и мод. 1. Открываем мод. 2. Открываем TextDraw 3. Видим в TextDraw'e "new TextDraw0;" и так далее. Меняете их имя(Можно не менять). Я буду менять на "new Logotip0;" и так далее. 4. Заходим в мод и нажимаем на Бинокль(Поиск), вводим new и ищем до тех пор, пока не увидим сплошные "new", а точнее "new" одна за одной. 5. Можно разделить //, но я не буду. Вставляем наши переменные, у меня их 6. 6. Идём снова в TextDraw видим там к примеру "NameServer" - меняем на название своего сервера. Обычно идут сразу "NameServer RP". Но могут и так, сначала "NameServer", а потом уже "RP". Если 1 вариант, меняем только название на ваш сервер, в принципе и во 2-м варианте так. Теперь копируем это. 7. Заходим в мод и ищем "OnGameModeInit", после "{" отступаем на новую строку, нажимаем 1 раз кнопку TAB и вставляем наш код, если код вставился не ровно, корректируем его. 8. Переходим в "OnPlayerConnect"(Когда игрок подключается к серверу), снова видим "{" отступаем 1 строку жмём 1 раз TAB и пишем так: TextDrawShowForPlayer(playerid, NameServer0);//Пишем имя вашей переменной, если у вас 1 так и оставляем, если у вас больше то ещё делаем, у меня их 6. Значит я делаю так: TextDrawShowForPlayer(playerid, NameServer1); TextDrawShowForPlayer(playerid, NameServer2); TextDrawShowForPlayer(playerid, NameServer3); TextDrawShowForPlayer(playerid, NameServer4); TextDrawShowForPlayer(playerid, NameServer5); Компилируем мод и всё. У нас всё готов! Если возникнут какие-то проблемы при компилировании пишите сюда! Ах, да Можно ещё в "OnPlayerDisconnect" Добавить это: TextDrawDestory(playerid, Logotip0);//Убираем наш TextDraw, когда игрок вышел с сервера. TextDrawDestory(playerid, Logotip1); TextDrawDestory(playerid, Logotip2); TextDrawDestory(playerid, Logotip3); TextDrawDestory(playerid, Logotip4); TextDrawDestory(playerid, Logotip5); Но это необязательно. Надеюсь урок вам помог. Хотя это не так трудно, как кажется.
  24. Здравствуйте, друзья. Сегодня я решил составить для вас сборник интересных систем для вашего мода. • Система наручных часов через /watch. Автор: Maxim_Capone. Ссылка: система_1. • Система подарков. Автор: Илья Гантимуров (MaJor) Ссылка: система_2. • Система гонок на роликах. Автор: неизвестен. Автор доработки: Гость Roman. Ссылка: система_3. • Система работы хлеборобом. Автор: sobakin123. Ссылка: система_4. • Система охраны ТБ "Останкино". Автор: danilasar. Ссылка: система_5. • Система селфи через /selfie. Автор: Maxim_Capone. Ссылка: система_6. • Система рулетки в донат-меню. /donate. Автор: неизвестен. Ссылка: система_7. • Система ник-неймов без "_". Автор: DEST. Ссылка: система_8. • Система плавности открытия шлагбаума. Автор: Гость Amfy. Ссылка: система_9. На этом наш сборник завершен. Надеюсь, хотя бы одна из предложенных мной систем будет полезна.
  25. Приветствую. Это мой второй урок. Сегодня мы с вами напишем небольшую систему наручных часов. Система взята из мода Vermont RolePlay, автором коего является ваш покорный слуга, то есть - я. Добавляем ко всем командам сервера (DС_CMD/PawnCMD): CMD:watch(playerid, params[]) { new hour, minuite, second, year, month, day, string[256], saturday = 1310155200, w = gettime(), day_week; //объявлем переменную, хранящую часы, минуты, секунды, год, месяц и день. gettime(hour, minuite, second); //узнаем время у пользователя. getdate(year, month, day); //узнаем сегодняшную дату. while(w - saturday > 60 * 60 * 24) { w -= 60 * 60 * 24; day_week ++; } while(day_week >= 7) day_week -= 7; format(string, sizeof(string), "%02d:%02d~n~~b~%02d-%02d-%04d~n~~b~in game %d~n~~b~VERMONT RP", hour, minuite, day, month, year, PI[playerid][pTime]/60); //VERMONT замените на название своего сервера. GameTextForPlayer(playerid, string, 5000, 1); //выводим игроку всплывающий текст с информацией о дате, времени и сервере. if(PI[playerid][pMuted] >= 1) //проверка на то, если ли у игрока mute. Если есть, то в чате появится соответствующее сообщение. { format(query, sizeof(query), "{FFCC00}До окончания бана чата: {FFCC00}%d:%02d", floatround(PI[playerid][pMuted] / 60) % 60, (PI[playerid][pMuted] % 60)); SendClientMessage(playerid,-1, query); } if(PI[playerid][pJail] >= 1) //проверка на то, в тюрьме игрок или нет. Если в тюрьме, то в чате появится соответствующее сообщение. { format(query, sizeof(query), "{FFCC00}До выхода из КПЗ: {FFCC00}%d минут", PI[playerid][pJailTime] / 60); SendClientMessage(playerid,-1, query); } if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) ApplyAnimation(playerid,"COP_AMBIENT","Coplook_watch",4.1,0,0,0,0,0,1); //если игрок не в машине, то включаем анимацию взгляда на кисть с часами. return 1; } Если у вас "стандартный" командный процессор, то в public OnPlayerCommandText(playerid, cmdtext[]): if (strcmp(cmdtext, "/watch", true) == 0) { new hour, minuite, second, year, month, day, string[256], saturday = 1310155200, w = gettime(), day_week; //объявлем переменную, хранящую часы, минуты, секунды, год, месяц и день. gettime(hour, minuite, second); //узнаем время у пользователя. getdate(year, month, day); //узнаем сегодняшную дату. while(w - saturday > 60 * 60 * 24) { w -= 60 * 60 * 24; day_week ++; } while(day_week >= 7) day_week -= 7; format(string, sizeof(string), "%02d:%02d~n~~b~%02d-%02d-%04d~n~~b~in game %d~n~~b~VERMONT RP", hour, minuite, day, month, year, PI[playerid][pTime]/60); GameTextForPlayer(playerid, string, 5000, 1); //выводим игроку всплывающий текст с информацией о дате, времени и сервере. if(PI[playerid][pMuted] >= 1) //проверка на то, если ли у игрока mute. Если есть, то в чате появится соответствующее сообщение. { format(query, sizeof(query), "{FFCC00}До окончания бана чата: {FFCC00}%d:%02d", floatround(PI[playerid][pMuted] / 60) % 60, (PI[playerid][pMuted] % 60)); SendClientMessage(playerid,-1, query); } if(PI[playerid][pJail] >= 1) //проверка на то, в тюрьме игрок или нет. Если в тюрьме, то в чате появится соответствующее сообщение. { format(query, sizeof(query), "{FFCC00}До выхода из КПЗ: {FFCC00}%d минут", PI[playerid][pJailTime] / 60); SendClientMessage(playerid,-1, query); } if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) ApplyAnimation(playerid,"COP_AMBIENT","Coplook_watch",4.1,0,0,0,0,0,1); //если игрок не в машине, то включаем анимацию взгляда на кисть с часами. return 1; } ВАЖНОЕ ДОПОЛНЕНИЕ: Если в Вашем моде проверки или переменные, отвечающие за тюрьму, мут, анимации и т.д, отличаются от моих, то при копировании кода обязательно поменяйте их на те, что используются именно в Вашем моде. Ну что же, код мы с вами написали, теперь можно приступать к проверке на работоспособность. Скриншоты проверки: https://imgur.com/a/VdDpttz Как видите, у меня все отлично работает. Если у Вас возникают какие-либо ошибки - отпишите в эту тему, мы вместе их исправим! На этом наш урок завершен. Спасибо за внимание, с вами был заслуженный PAWN-скриптер СССР и РФ - Maks_Wayne.
×
×
  • Создать...