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

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

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

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

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

Тип контента


Форумы

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

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

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


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

  • Начало

    Конец


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

  • Начало

    Конец


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

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

  1. Здравствуйте дорогие пользователи портала GSG. Я рад видеть вас в моей теме. В данном уроке я хочу вам продемонстрировать, как добавить свою музыку при входе на сервер. То есть что бы играла музыка не с радио, а играла своя музыка. Сразу говорю, делается всё это просто. Для начала на понадобиться любой хостинг сайтов, могу предложить Ucoz, если у вас нет денег на платных хостинг. После того как вы создали сайт на Ucoz, мы загружаем в "Файловый менеджер" сам трек. После того как вы загрузили трек, идём например по URL: http//:moy-sait.ucoz.ru/Vhod.mp3. !!!Внимание!!! Главное нужно что бы формат файла был .mp3. Если будет примерно вот так: http//:moy-sait.ucoz.ru/Vhod/, то трек не воспроизведётся. С этим разобрались. Перейдём к моду. В public OnPlayerConnect: switch(random(1)) { case 0: PlayAudioStreamForPlayer(playerid,"http//:moy-sait.ucoz.ru/Vhod.mp3"); case 1: PlayAudioStreamForPlayer(playerid,"http//:moy-sait.ucoz.ru/Vhod.mp3"); } Видим строчку switch(random(1)), видим цифру 1. Данное число должно равняться последней строчки. URL меняем на свои. В public OnPlayerSpawn: StopAudioStreamForPlayer(playerid); Ну вот и всё. Огромное спасибо за внимание!
  2. #Bazuka

    [Метро]

    Это моя личная первая работа не знал с чего начать сам делал с нуля,ну с чего-то все начинают. К всем New new Arzamas; new Arzamas1; new YouCity1; new YouCity; new Beyatov; new Beyatov1; В public OnGameModeInit() YouCity1 = CreatePickup(1318,23,604.7800,711.0667,12.0859,-1); YouCity = CreatePickup(1318,23,1823.5417,-2242.3850,11.2394,0); Beyatov = CreatePickup(1318,23,602.8683,706.5071,12.0859,-1); Beyatov1 = CreatePickup(1318,23,1856.2887,2251.1890,15.6172,0); Arzamas = CreatePickup(1318,23,602.5826,702.4211,12.0859,-1); Arzamas1 = CreatePickup(1318,23,203.7445,828.6365,13.3831,0); В public OnGameModeInit() AddStaticPickup(1239, 2, 1824.7411,-2244.7537,11.0209); В public OnGameModeInit() Create3DTextLabel("{11E9F4}Метро\n {FF0000}Главный Центр",0x00FFFFAA,1823.7743,-2245.0413,14.0500,40.0,0,1); Create3DTextLabel("{11E9F4}Южный",COLOR_GOLD,604.7800,711.0667,12.0859,40.0,0,1); Create3DTextLabel("{11E9F4}Арзамас",COLOR_GOLD,602.5875,702.4209,12.0859,40.0,0,1); Create3DTextLabel("{11E9F4}Батырево",COLOR_GOLD,602.8472,706.4666,12.0859,40.0,0,1); Create3DTextLabel("{11E9F4}Купить билет\n {FF0000}/buybil",COLOR_GOLD,1824.7411,-2244.7537,11.0209,40.0,0,1); В public OnGameModeInit() CreateDynamicObject(19447, 605.34, 709.34, 11.00, 0.00, 90.00, -21.00); CreateDynamicObject(19447, 601.92, 700.38, 11.00, 0.00, 90.00, -21.00); CreateDynamicObject(19463, 606.93, 708.71, 12.72, 0.00, 0.00, -21.00); CreateDynamicObject(19463, 606.34, 716.52, 12.72, 0.00, 0.00, -21.00); CreateDynamicObject(19463, 603.49, 699.72, 12.72, 0.00, 0.00, -21.00); CreateDynamicObject(19463, 607.45, 713.56, 12.72, 0.00, 0.00, 69.00); CreateDynamicObject(19463, 600.47, 701.38, 12.72, 0.00, 0.00, -21.00); CreateDynamicObject(19463, 603.82, 701.44, 12.72, 0.00, 0.00, 69.00); CreateDynamicObject(1533, 604.87, 712.64, 11.06, 0.00, 0.00, 249.00); CreateDynamicObject(10121, 605.55, 713.05, 11.56, 0.00, 0.00, -111.00); CreateDynamicObject(10121, 607.75, 712.23, 11.56, 0.00, 0.00, 68.00); CreateDynamicObject(10121, 606.55, 713.37, 11.56, 0.00, 0.00, 159.00); CreateDynamicObject(10121, 608.51, 712.61, 11.56, 0.00, 0.00, 159.00); CreateDynamicObject(1533, 604.34, 711.26, 11.06, 0.00, 0.00, 249.00); CreateDynamicObject(1533, 602.51, 706.70, 11.06, 0.00, 0.00, 249.00); CreateDynamicObject(1533, 603.04, 708.08, 11.06, 0.00, 0.00, 249.00); CreateDynamicObject(10121, 603.62, 708.28, 11.56, 0.00, 0.00, -111.00); CreateDynamicObject(10121, 604.00, 709.26, 11.56, 0.00, 0.00, -111.00); CreateDynamicObject(19417, 603.41, 708.91, 12.90, 0.00, 0.00, -21.00); CreateDynamicObject(19466, 603.49, 708.97, 12.84, 0.00, 0.00, -21.00); CreateDynamicObject(10121, 602.15, 704.73, 11.56, 0.00, 0.00, -111.00); CreateDynamicObject(10121, 601.41, 702.80, 11.56, 0.00, 0.00, -111.00); CreateDynamicObject(10121, 603.90, 701.78, 11.56, 0.00, 0.00, 68.00); CreateDynamicObject(10121, 604.66, 703.69, 11.56, 0.00, 0.00, 69.00); CreateDynamicObject(19371, 604.30, 711.25, 15.29, 0.00, 0.00, -21.00); CreateDynamicObject(19371, 602.44, 706.53, 15.29, 0.00, 0.00, -22.00); CreateDynamicObject(19463, 604.04, 709.80, 15.29, 0.00, 16.00, -21.00); CreateDynamicObject(19463, 600.62, 700.87, 15.29, 0.00, 16.00, -21.00); CreateDynamicObject(19463, 602.79, 702.17, 15.29, 0.00, 16.00, 69.00); CreateDynamicObject(19463, 606.42, 713.68, 15.29, 0.00, 16.00, -111.00); CreateDynamicObject(19463, 606.67, 708.74, 15.29, 0.00, -16.00, -21.00); CreateDynamicObject(19463, 603.23, 699.76, 15.29, 0.00, -16.00, -21.00); CreateDynamicObject(19463, 605.61, 709.18, 14.94, 0.00, 90.00, -21.00); CreateDynamicObject(19463, 602.06, 700.29, 14.94, 0.00, 90.00, -21.00); CreateDynamicObject(1533, 601.87, 702.29, 11.06, 0.00, 0.00, -21.00); CreateDynamicObject(4597, 1823.57, -2233.22, 9.96, 0.00, 0.00, 180.00); CreateDynamicObject(19466, 1822.54, -2242.84, 13.05, 0.00, 90.00, 90.00); CreateDynamicObject(19466, 1824.62, -2242.84, 13.05, 0.00, 90.00, 90.00); CreateDynamicObject(19466, 1824.61, -2244.28, 13.05, 0.00, 90.00, 90.00); CreateDynamicObject(19466, 1822.52, -2244.29, 13.05, 0.00, 90.00, 90.00); CreateDynamicObject(1986, 1824.63, -2232.73, 9.63, 0.00, 0.00, 0.00); В public OnPlayerPickUpPickup(playerid, pickupid) if(pickupid == YouCity1) { SetPlayerInterior(playerid, 0); SetPlayerPos(playerid, 1823.1112,-2245.1965,11.0209); } if(pickupid == YouCity) { if(PlayerInfo[playerid][pMetro] != 1)//Проверка на билет return SendClientMessage(playerid, -1, "У вас нет билета");//-1 значит,что билета нет SetPlayerInterior(playerid, 0); SetPlayerPos(playerid, 606.5397,710.6315,12.0859); } if(pickupid == Beyatov) { SetPlayerInterior(playerid, 0); SetPlayerPos(playerid, 1858.3896,2251.1362,15.6172); } if(pickupid == Beyatov1) { SetPlayerInterior(playerid, 0); SetPlayerPos(playerid, 604.9130,706.0921,12.0859); } if(pickupid == Arzamas) { SetPlayerInterior(playerid, 0); SetPlayerPos(playerid, 203.9170,826.8352,12.8115); } if(pickupid == Arzamas1) { SetPlayerInterior(playerid, 0); SetPlayerPos(playerid, 603.6325,704.3224,12.0859); } В enum pInfo pMetro, В public OnPlayerRegister(playerid, password[]) format(var, 32, "Metro=%d\n",PlayerInfo[playerid][pMetro]);fwrite(hFile, var); Каждый код будет быть у всех другой MYSQL,mxINI Автор: Artem_Bandit Идея лично моя не где не брал,сам всё с нуля делал Забыл команда сама: В public OnPlayerCommandText(playerid, cmdtext[]) if(strcmp(cmd, "/buybil", true) == 0) { if(IsPlayerConnected(playerid)) { if(playerid != INVALID_PLAYER_ID) { if(PlayerToPoint(10.0, playerid,1824.7411,-2244.7537,11.0209)) format(string, sizeof(string), "Вы купили билет", sendername); PlayerInfo[playerid][pMetro] = 1; GiveMoney(playerid, -400); SendClientMessage(playerid, COLOR_WHITE, string); } } return true; }
  3. Здравствуйте уважаемые пользователи CR-MP.RU Сегодня я вам покажу , как добавить ботов на сервер (Автор: Neat) Для начало, скачаем необходимые файлы ---------------------------------------------------------------------------------------------------------------------------------------- Файлы npc_record.pwn и npc_record.amx копируем в filterscripts, а a_npc.inc в /pawno/include. Далее открываем server.cfg и в строке filterscripts прописываем npc_record, также изменяем maxnpc на количество ботов на сервере. Далее открываем мод через pawno.exe и после #include <a_samp> добавляем #include <a_npc> и компилируем мод. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- В этом уроке мы будем делать бота который ездит на машине по заданному маршруту. Заходим на сервер, входим как RCON администратор, садимся в машину и как только вы готовы начать записывать бота - вводим команду /vrecord [имя бота] (не используйте кириллицу в названии бота). Запись началась, ездим по нужному нам маршруту и когда нужно остановить запись бота - вводим команду /srecord и запись останавливается. Выходим из игры и заходим в scriptfiles, там вы увидите названия бота.rec копируем этот файл в /npcmodes/recordings. Создаем чистый .pwn файл и вносим в него следующий код: #define RECORDING "NameNPC" //Имя вашего записанного файла из scriptfiles без расширения #define RECORDING_TYPE 1 //1 - если путь записан на машине, 2 - пешком #include main(){} public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING); #if RECORDING_TYPE == 1 public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING); public OnNPCExitVehicle() StopRecordingPlayback(); #else public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING); . #endif Компилируем и закрываем. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Открываем свой мод и ко всем глобальным переменным добавляем (название может быть любое, я взял ProverkaNPC): new ProverkaNPC Далее идем в public OnGameModeInit() и добавляем: ConnectNPC("любое имя бота","название файла из scriptfiles без расширения"); ProverkaNPC = CreateVehicle(400,0.0,0.0,5.0,0.0,3,3,5000);//Координаты изменять не надо, можете изменить только модель ТС и цвет Далее идем в public OnPlayerSpawn(playerid) и добавляем: if(IsPlayerNPC(playerid)) { new npcname[MAX_PLAYER_NAME]; GetPlayerName(playerid,npcname,sizeof(npcname)); if(!strcmp(npcname,"имя указанное в ConnectNPC",true)) { PutPlayerInVehicle(playerid,ProverkaNPC,0); } return 1; } Если при подключении бота, его выкидывает с сервера из-за того, что у вас система регистрации, то при регистрации нужно вставить этот код: if(IsPlayerNPC(playerid)) return 1; Всё! Если вы всё сделали правильно, то у вас всё должно работать. Файлы для ботов!.rar
  4. Здравствуйте уважаемые пользователи! Я решил представить вам часть кода,который позволяет личному авто сохранять свои позиции(даже после рестарта) Взято с другого портала В OnPlayerExitVehicle(playerid, vehicleid): new playername[MAX_PLAYER_NAME]; new Float:x,Float:y,Float:z,Float:a; new cars; GetPlayerName(playerid, playername, sizeof(playername)); if(!strcmp(playername, CarInfo[GetRealID(cars)][cOwner], true) || !strcmp(playername, CarInfo[GetRealID(cars)][cNick1], true)) { if(IsPlayerInAnyVehicle(playerid)) { cars = GetPlayerVehicleID(playerid) ; GetVehiclePos(cars,x, y, z); GetVehicleZAngle(cars, a); } new world = GetPlayerVirtualWorld(playerid); new inter = GetPlayerInterior(playerid); CarInfo[GetRealID(cars)][cWorld] = world; CarInfo[GetRealID(cars)][cInter] = inter; CarInfo[GetRealID(cars)][cPx] = x; CarInfo[GetRealID(cars)][cPy] = y; CarInfo[GetRealID(cars)][cPz] = z; CarInfo[GetRealID(cars)][cPa] = a; SaveCar(GetRealID(cars)); }
  5. Добры день дорогие форумчане вот решил выложить свою вырезку системы подъездов из CRMP|RP. И так приступим! ко всем forward: forward UpdatePodezd(); ко всем new: new lift1fordom1; new dom1vihod; ко всем enum: enum poInfo { Float:poiX, Float:poiY, Float:poiZ, poFirst, poSecond, poTherd, poFour, poFive, poSix, poSeven, poEight, poNine, poTen, poPic, poAllstate, poWwoarld, poInt, }; new Podezd[100][poInfo]; //подъезды после new allhouse: new Allpodezd = 0; Дальше ищем if(newkeys & KEY_SPRINT) И после этого вставляем for(new pod = 1; pod <= Allpodezd; pod++) { if(IsPlayerInRangeOfPoint(playerid,1.0,Podezd[pod][poiX],Podezd[pod][poiY],Podezd[pod][poiZ]) && GetPlayerVirtualWorld(playerid) == Podezd[pod][poWwoarld]) { SetPlayerVirtualWorld(playerid,Podezd[pod][poFirst]); SetPlayerPos(playerid,2337.6519,-1720.1720,24.7105); return 1; } } ко всем диалогам: if(dialogid==3910) { if(response) { if(listitem == 0) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poFirst]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 1) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poSecond]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 2) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poTherd]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 3) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poFour]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 4) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poFive]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 5) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poSix]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 6) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poSeven]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 7) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poEight]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 8) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poNine]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 9) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poTen]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } } return 1; } в public OnGameModeInit() LoadPodezd(); в public OnPlayerPickUpPickup(playerid, pickupid): for(new pod = 1; pod <= Allpodezd; pod++) { if(IsPlayerInRangeOfPoint(playerid,2.0,Podezd[pod][poiX],Podezd[pod][poiY],Podezd[pod][poiZ])) { GameTextForPlayer(playerid,"~w~мA„–…ЏE ~r~~k~~PED_SPRINT~",5000,1); return 1; } } в public OnPlayerPickUpPickup(playerid, pickupid): if(pickupid == lift1fordom1) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; if(Podezd[wot][poAllstate] == 10) { ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж\n3 этаж\n4 этаж\n5 этаж\n6 этаж\n7 этаж\n8 этаж\n9 этаж\n10 этаж","выбрать","Отмена"); return 1; } if(Podezd[wot][poAllstate] == 9)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж\n3 этаж\n4 этаж\n5 этаж\n6 этаж\n7 этаж\n8 этаж\n9 этаж","выбрать","Отмена"); if(Podezd[wot][poAllstate] == 8)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж\n3 этаж\n4 этаж\n5 этаж\n6 этаж\n7 этаж\n8 этаж","выбрать","Отмена"); if(Podezd[wot][poAllstate] == 7)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж\n3 этаж\n4 этаж\n5 этаж\n6 этаж\n7 этаж","выбрать","Отмена"); if(Podezd[wot][poAllstate] == 6)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж\n3 этаж\n4 этаж\n5 этаж\n6 этаж","выбрать","Отмена"); if(Podezd[wot][poAllstate] == 5)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж\n3 этаж\n4 этаж\n5 этаж","выбрать","Отмена"); if(Podezd[wot][poAllstate] == 4)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж\n3 этаж\n4 этаж","выбрать","Отмена"); if(Podezd[wot][poAllstate] == 3)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж\n3 этаж","выбрать","Отмена"); if(Podezd[wot][poAllstate] == 2)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж","выбрать","Отмена"); if(Podezd[wot][poAllstate] == 1)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж","выбрать","Отмена"); } if(pickupid == dom1vihod) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerPos(playerid,Podezd[wot][poiX],Podezd[wot][poiY],Podezd[wot][poiZ]); SetPlayerVirtualWorld(playerid,Podezd[wot][poWwoarld]); return 1; } ко всем командам: if(strcmp(cmd, "/addpod", true) == 0) { if(PlayerInfo[playerid][pAdmin] < 9) return SendClientMessage(playerid, -1, "У вас нет прав на использование этой команды!"); if(dostup[playerid] != 1) { ShowPlayerDialog(playerid,2934,DIALOG_STYLE_INPUT,"Доступ администратора","Введите пароль от административной панели","Ок","Отмена"); return 1; } { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /addpod [колличество этажей]"); new money = strval(tmp); if(money < 1||money > 10)return SendClientMessage(playerid, COLOR_GRAD2, "Не менее 1 и не более 10!"); Allpodezd++; GetPlayerPos(playerid, Podezd[Allpodezd][poiX],Podezd[Allpodezd][poiY],Podezd[Allpodezd][poiZ]); Podezd[Allpodezd][poFirst] = Allpodezd*10; Podezd[Allpodezd][poSecond] = Allpodezd*10+1; Podezd[Allpodezd][poTherd] = Allpodezd*10+2; Podezd[Allpodezd][poFour] = Allpodezd*10+3; Podezd[Allpodezd][poFive] = Allpodezd*10+4; Podezd[Allpodezd][poSix] = Allpodezd*10+5; Podezd[Allpodezd][poSeven] = Allpodezd*10+6; Podezd[Allpodezd][poEight] = Allpodezd*10+7; Podezd[Allpodezd][poNine] = Allpodezd*10+8; Podezd[Allpodezd][poTen] = Allpodezd*10+9; Podezd[Allpodezd][poWwoarld] = GetPlayerVirtualWorld(playerid); Podezd[Allpodezd][poInt] = GetPlayerInterior(playerid); Podezd[Allpodezd][poAllstate] = money; new iniOpen = ini_openFile("podezd.cfg"); ini_setInteger(iniOpen, "AllPodezd", Allpodezd); ini_closeFile(iniOpen); SavePodezd(Allpodezd); UpdatePodezd(); SendClientMessage(playerid, COLOR_GRAD2, "Подъезд успешно создан"); return 1; } } ко всем stock: stock LoadPodezd() { new ids[32]; new iniOpens = ini_openFile("podezd.cfg"); ini_getInteger(iniOpens, "AllPodezd", Allpodezd); ini_closeFile(iniOpens); if(Allpodezd != 0) { for(new pod = 1; pod <= Allpodezd; pod++) { format(ids,sizeof(ids),"podezde/%d.ini",pod); new iniOpen = ini_openFile(ids); ini_getFloat(iniOpen, "poiX", Podezd[pod][poiX]); ini_getFloat(iniOpen, "poiY", Podezd[pod][poiY]); ini_getFloat(iniOpen, "poiZ", Podezd[pod][poiZ]); ini_getInteger(iniOpen, "poFirst", Podezd[pod][poFirst]); ini_getInteger(iniOpen, "poSecond", Podezd[pod][poSecond]); ini_getInteger(iniOpen, "poTherd", Podezd[pod][poTherd]); ini_getInteger(iniOpen, "poFour", Podezd[pod][poFour]); ini_getInteger(iniOpen, "poFive", Podezd[pod][poFive]); ini_getInteger(iniOpen, "poSix", Podezd[pod][poSix]); ini_getInteger(iniOpen, "poSeven", Podezd[pod][poSeven]); ini_getInteger(iniOpen, "poEight", Podezd[pod][poEight]); ini_getInteger(iniOpen, "poNine", Podezd[pod][poNine]); ini_getInteger(iniOpen, "poTen", Podezd[pod][poTen]); ini_getInteger(iniOpen, "poAllstate", Podezd[pod][poAllstate]); ini_getInteger(iniOpen, "poWwoarld", Podezd[pod][poWwoarld]); ini_getInteger(iniOpen, "poInt", Podezd[pod][poInt]); ini_closeFile(iniOpen); new p[64]; format(p,64,"{d2d275}Подъезд номер: {7ba05b}%d",pod); Create3DTextLabel(p,COLOR_BLUE,Podezd[pod][poiX],Podezd[pod][poiY],Podezd[pod][poiZ],50.0,0,1); Podezd[pod][poPic] = CreateDynamicPickup(1318,23,Podezd[pod][poiX], Podezd[pod][poiY], Podezd[pod][poiZ],Podezd[pod][poWwoarld],Podezd[pod][poInt]); } } return 1; } stock UpdatePodezd() { for(new pod = 1; pod <= Allpodezd; pod++) { Delete3DTextLabel(Text3D:pod); DestroyDynamicPickup(Podezd[pod][poPic]); new p[64]; format(p,64,"{d2d275}Подъезд номер: {7ba05b}%d",pod); Create3DTextLabel(p,COLOR_BLUE,Podezd[pod][poiX],Podezd[pod][poiY],Podezd[pod][poiZ],50.0,Podezd[pod][poWwoarld],Podezd[pod][poInt]); Podezd[pod][poPic] = CreateDynamicPickup(1318,23,Podezd[pod][poiX], Podezd[pod][poiY], Podezd[pod][poiZ],Podezd[pod][poWwoarld],Podezd[pod][poInt]); } return 1; } Чуть дальше прошлого stock: stock SavePodezd(podezde) { new ids[32]; format(ids,sizeof(ids),"podezde/%d.ini",podezde); new iniOpen; iniOpen = ini_openFile(ids); if(iniOpen == -1 || iniOpen == -2) iniOpen = ini_createFile(ids); ini_setFloat(iniOpen, "poiX", Podezd[podezde][poiX]); ini_setFloat(iniOpen, "poiY", Podezd[podezde][poiY]); ini_setFloat(iniOpen, "poiZ", Podezd[podezde][poiZ]); ini_setInteger(iniOpen, "poFirst", Podezd[podezde][poFirst]); ini_setInteger(iniOpen, "poSecond", Podezd[podezde][poSecond]); ini_setInteger(iniOpen, "poTherd", Podezd[podezde][poTherd]); ini_setInteger(iniOpen, "poFour", Podezd[podezde][poFour]); ini_setInteger(iniOpen, "poFive", Podezd[podezde][poFive]); ini_setInteger(iniOpen, "poSix", Podezd[podezde][poSix]); ini_setInteger(iniOpen, "poSeven", Podezd[podezde][poSeven]); ini_setInteger(iniOpen, "poEight", Podezd[podezde][poEight]); ini_setInteger(iniOpen, "poNine", Podezd[podezde][poNine]); ini_setInteger(iniOpen, "poTen", Podezd[podezde][poTen]); ini_setInteger(iniOpen, "poAllstate", Podezd[podezde][poAllstate]); ini_setInteger(iniOpen, "poWwoarld", Podezd[podezde][poWwoarld]); ini_setInteger(iniOpen, "poInt", Podezd[podezde][poInt]); ini_closeFile(iniOpen); return 1; } К маппингу сервера: CreateObject(2142, 2335.3999, -1717.69995, 25.5, 0, 0, 0); Вот и всё. Автор: Неизвестен
  6. Здравствуйте уважаемые пользователи,хочу вам представить рандомную погоду.Нашел в просторах интернета. И так начнем. К forward: forward ChangeWeather(); Затем в public OnGameModeInit() SetTimer("ChangeWeather",1000*60*30, true);//1 раз в 30 минут, будет меняться погода. ChangeWeather(); Ну и создаем паблик, в свободном месте. Можно в самом конце мода: public ChangeWeather() { new weather ; weather = random(20) ; SetWeather(weather); switch(weather) { case 1:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]:{FFC800}изменилась на солнечную!"); case 2:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {646CFF}изменилась на штормовую!"); case 3:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {FFC800}изменилась на солнечную!"); case 4:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {D2EBFF}изменилась на туманну."); case 5:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {D2EBFF}изменилась на дождевую!"); case 6:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {D2EBFF}изменилась на дождевую!"); case 7:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {D2EBFF}изменилась на облачную!"); case 8:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {D2EBFF}изменилась на пасмурную!"); case 9:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {D2EBFF}изменилась на туманную!"); case 10:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {ACFF46}изменилась на солнечную!"); case 11:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {ACFF46}изменилась на солнечную!"); case 12:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {D2EBFF}изменилась на облачную!"); case 13:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {FFDE37}изменилась на солнечную!"); case 14:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {FFDE37}изменилась на солнечную!"); case 15:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {D2EBFF}изменилась на облачную!"); case 16:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {D2EBFF}изменилась на дождевую!"); case 17:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {FF5441}изменилась на жаркую!"); case 18:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {FF5441}изменилась на жаркую!"); case 19:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {0A1EFF}изменилась на штормовую!"); case 20:SendClientMessageToAll(COLOR_RED,"{73F6FF}[Новости погоды]: {FAFFF5}погода сменилась на облачную, не забудьте зонтик."); } return 1; } Автор:Неизвестен
  7. Здравствуйте уважаемые пользователи cr-mp.ru! Решил выложить сюда систему подъездов с мода GTRP! Взято с другого портала Начнем! Ко всем enum добавим
  8. dima47rus110

    Пробег Gamer

    Решил вырезать пробег для мода с основой Gamer Добавим к enum CarsInfo Float:cProbeg, Ко всем new new Text:Rhymed35[MAX_PLAYERS]; Далее в public OtherTimer new estr[32]; if(IsPlayerInAnyVehicle(i)) { format(estr,32,"~w~ЈPOЂE‚: ~g~~h~%.1f~r~ KM",CarInfo[GetPlayerVehicleID(i)][cProbeg]); TextDrawSetString(Rhymed35[i],estr); } public OnPlayerConnect(playerid) Rhymed35[playerid] = TextDrawCreate(495.000000, 370.000000," ");//ПРОБЕГ++++ 390 TextDrawFont(Rhymed35[playerid],2); TextDrawSetOutline(Rhymed35[playerid], 1); TextDrawLetterSize(Rhymed35[playerid], 0.45, 1.5); TextDrawColor(Rhymed35[playerid],225); TextDrawShowForPlayer(playerid, Rhymed35[playerid]); TextDrawSetProportional(Rhymed35[playerid],1); TextDrawBoxColor(Rhymed35[playerid], 80);//70 public OnPlayerCommandText(playerid, cmdtext[]) if(strcmp(cmd,"/carpasport",true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /passcar [id]"); giveplayerid = ReturnUser(tmp); new veh = GetPlayerVehicleID(playerid); if(GetRealID(veh) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Вы должны быть в своём автомобиле"); if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GRAD2, "Вы не в машине!"); if(IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { GetPlayerName(playerid, sendername, sizeof(sendername)); format(string,sizeof(string),"\t{FFFFFF}Модель транспорта:%s\n\t{FFFFFF}Владелец:%s\n\t{FFFFFF}Пробег транспорта:%.1f",VehiclesName[GetVehicleModel(GetPlayerVehicleID(playerid))-400], sendername,CarInfo[veh][cProbeg]); ShowPlayerDialog(giveplayerid,499,DIALOG_STYLE_MSGBOX,"Технический талон транспорта.",string,"Посмотрел","Х");//Если диалог 499 присутствует,то замените на любой другой,которого нету(чтобы окно закрылось) return true; } } } К команде /savecar(по умолчанию) CarInfo[AllCars][cProbeg] = 0; public OnPlayerDisconnect(playerid, reason) TextDrawHideForPlayer(playerid,Rhymed35[playerid]); TextDrawDestroy(Rhymed35[playerid]); public OnPlayerStateChange(playerid, newstate, oldstate) if(oldstate-1 && newstate) TextDrawHideForPlayer(playerid,Rhymed35[playerid]); else if(newstate-1) TextDrawShowForPlayer(playerid,Rhymed35[playerid]); stock LoadCar() ini_getFloat(iniOpen, "cProbeg", CarInfo[car][cProbeg]); stock SaveCar(car) ini_setFloat(iniOpen, "cProbeg", CarInfo[car][cProbeg]); stock CreateCar(car) ini_setFloat(iniOpen, "cProbeg", CarInfo[car][cProbeg]); И в конец мода forward Speeeeed(); public Speeeeed() { foreach(Player, playerid) { new Float:sp = GetPlayerSpeed(playerid),Float:ms; ms = (sp/1.4)/700;//1000 CarInfo[GetPlayerVehicleID(playerid)][cProbeg] += ms; } return 1; } У некоторых не обновлялся пробег,добавьте к таймерам(забыл про него) SetTimer("Speeeeed",6000, 1); Обязательно подключите инклуд "foreach",если не подключен Ко всем инклудам,если нету,то скачайте и закиньте в папку сервер/pawno/include/сюда include <foreach> Не знаю надо ли кому это,но решил вырезать,т.к. очень многие искали пробег Пробег не сохраняется после рестарта,кто знает как исправить отпишитесь пожалуйста! Скрины: http://radikall.com/image/V52V http://radikall.com/image/V52H http://radikall.com/image/V52b
  9. Здравствуйте уважаемые пользователи gs-games. Не знаю есть эта тема или нет... У нас будет сохраняться админка, деньги и Email. Начнем. 1. В самом начале моде вставляем #include <mxINI> 2. Чуть ниже добавляем #define SCM SendClientMessage #define SPD ShowPlayerDialog #define DSI DIALOG_STYLE_INPUT #define DSM DIALOG_STYLE_MSGBOX 3. После этого ниже добавим new sendername[MAX_PLAYER_NAME]; 4. Теперь создадим enum pInfo А значит еще ниже добавляем enum pInfo { pMoney, pPassword[33], pAdmin, pSkin, pEmail[64], }; new Player[MAX_PLAYERS][pInfo]; 5. Дальше создадим простые правила.А значит ниже добавляем new Rules[][] = { {"1. Игровой процесс\n"}, {"Запрещено:\n"}, {"Использование любых программ скриптов читов и.т.п. дающие нечестное преймущество в игре.\n"}, {"Использование багов (Ошибок, Неисправностей мода).\n"}, {"Использовать ESC в целях ухода от погони/смерти.\n"}, {"Убивать игроков на спавне (Место возрождения, базы организаций).\n"}, {"Убивать игроков при помощи транспорта (Давить, Стрелять с водительского места).\n"}, {"Убийство/нанесение физического вреда игрокам без причины (ДМ - Death Match).\n"}, {"Злоупотребление игровыми возможностями для создания неудобств игрокам.\n\n"}, {"2. Ник в игре\n"}, {"(сменить ник можно через /mm » Сменить ник)\n"}, {"Ник должен состоять из Имени_Фамилии с заглавных букв.\n"}, {"Запрещено:\n"}, {"Запрещено использовать чужие (уже кем-то занятые) ники.\n"}, {"Запрещено использовать ники, содержащие нецензурные или оскорбительные слова.\n"}, {"Отправлять более одной заявки в час (Исключение: Просьба Администрации).\n"}, {"Если вам отказали в смене ника, Значит нельзя.\n"} }; И сразу после этого добавим new Rules_2[][] = { {"{FFFFFF}3. Чат\n"}, {"OOC (Out Of Charter) - это всё, что касается реального мира.\n"}, {"IC (In Charter) - это всё, что касается виртульного мира, то есть игры.\n"}, {"Запрещено:\n"}, {"Ругательство, оскорбления или нецензурная речь.\n"}, {"Угрозы игрокам (Не относящиеся к игровому процессу).\n"}, {"Писать сообщения в верхнем регистре (Caps Lock).\n"}, {"Писать в чат объявлений сообщения не относящихся к Role Play.\n"}, {"Писать одно и тоже сообщение слишком часто.\n"}, {"Обсуждать, критиковать действия администрации.\n"}, {"Реклама сторонних ресурсов.\n\n"}, {"{FFFFFF}4. Администрация сервера\n"}, {"Необходимо сообщать администрации о каких либо нарушениях из данных правил (/mm {FFFFFF}> Репорт).\n"}, {"Администрация самостоятельно выбирает штрафные санкции для каждого из случаев.\n"}, {"Запрещено препятствовать администрации в работе.\n"}, {"Решение администрации является окончательным и не подлежит обсуждению.\n\n"}, {"{FFFFFF}5. Торговля.\n"}, {"Запрещены любые денежные махинации.\n"}, {"Запрещена продажа / покупка чего либо, за реальные деньги.\n"}, {"Запрещен обмен внеигровых предметов в любой форме, на игровые.\n"}, {"Запрещен обмен чего либо между игровыми серверами.\n"}, {"Запрещена продажа / передача аккаунтов.\n"} }; 6. Далее переходим в public OnPlayerRequestClass(playerid, classid) Все что там есть стираем. И добавляем это { if(GetPVarInt(playerid, "Logged") == 1) return SpawnPlayer(playerid); SetPlayerInterior(playerid,0); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); GetPlayerName(playerid, sendername, sizeof(sendername)); new str[320], small[150]; switch(GetPVarInt(playerid, "Account")) { case 0: { format(small, sizeof(small), "{FFFFFF}Добро пожаловать на сервер new-server\nЭтот аккаунт не зарегистрирован\nЧтобы начать игру нужно пройти регистрацию\n\n"); strcat(str, small); format(small, sizeof(small), "\t\t• Пароль должен состоять из Латинских букв\n\t\t• Длина пароля от 6 до 15 символов\n\nВаш логин: %s\nПридумайте свой пароль:",sendername); strcat(str, small); SPD(playerid, 1, DSI, "{FFFFFF}• Регистрация •", str, "Готово", "Отмена"); } case 1: { format(str, sizeof(str), "{FFFFFF}Добро пожаловать на сервер new-server\nЭтот аккаунт зарегистрирован\nЧтобы начать игру нужно Авторизоваться\n\nВаш логин: %s\nВведите свой пароль:",sendername); SPD(playerid, 5, DSI, "{FFFFFF}• Авторизация •", str, "Войти", "Отмена"); } } return 1; } 7. Ищем public OnPlayerConnect(playerid) И вставляем туда { new string[42]; GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "players/%s.ini", sendername); if(fexist(string)) SetPVarInt(playerid, "Account",1); else SetPVarInt(playerid, "Account",0); return 1; } 8. Идем в public OnPlayerDisconnect(playerid, reason) И вставим туда { if(GetPVarInt(playerid, "Logged") == 1) SavePlayer(playerid); return 1; } 9. Теперь переходим в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) И вставляем туда это { new string[128]; switch(dialogid) { case 1: { if(!response) return Kick(playerid); RegisterPlayer(playerid, inputtext); } case 2: { if(!response) { GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "players/%s.ini",sendername); fremove(string); return true; } new Rules_2_str[1000]; format(Rules_2_str, sizeof(Rules_2_str), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",Rules_2[0],Rules_2[1],Rules_2[2],Rules_2[3],Rules_2[4],Rules_2[5],Rules_2[6],Rules_2[7],Rules_2[8],Rules_2[9],Rules_2[10],Rules_2[11],Rules_2[12],Rules_2[13],Rules_2[14],Rules_2[15],Rules_2[16],Rules_2[17],Rules_2[18],Rules_2[19],Rules_2[20],Rules_2[21]); SPD(playerid, 3, DSM, "{FFFFFF}• Правила сервера •", Rules_2_str, "Согласен", "Выйти"); } case 3: { if(!response) { GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "players/%s.ini",sendername); fremove(string); return true; } SPD(playerid, 4, DSI, "{FFFFFF}• Электронная почта •", "{FFFFFF}Пожалуйста введите действующий адрес электронной почты.\nЕсли вы забудите пароль на него будет выслан новый", "Готово", ""); } case 4: { if(!response) return Kick(playerid); strmid(Player[playerid][pEmail],inputtext,0,strlen(inputtext),255); GetPlayerName(playerid, sendername, sizeof(sendername)); new str[186]; format(str, sizeof(str), "{FFFFFF}Добро пожаловать на сервер new-server\nЭтот аккаунт зарегистрирован\nЧтобы начать игру нужно Авторизоваться\n\nВаш логин: %s\nВведите свой пароль:",sendername); SPD(playerid, 5, DSI, "{FFFFFF}• Авторизация •", str, "Войти", "Отмена"); } case 5: { if(!response) return Kick(playerid); LoginPlayer(playerid, inputtext); } } return 1; } stock RegisterPlayer(playerid, inputtext[]) { if(!IsPlayerConnected(playerid)) return true; new string[40]; GetPlayerName(playerid, sendername, sizeof(sendername)); Player[playerid][pMoney] = 500; Player[playerid][pAdmin] = 0; format(string,sizeof(string), "players/%s.ini", sendername); new accountFile = ini_createFile(string); if(accountFile < 0) { accountFile = ini_openFile(string); } if(accountFile >= 0) { strmid(Player[playerid][pPassword],inputtext,0,strlen(inputtext),255); ini_setString(accountFile,"Password",Player[playerid][pPassword]); ini_closeFile(accountFile); } new Rules_str[1000]; format(Rules_str, sizeof(Rules_str), "{FFFFFF}%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",Rules[0],Rules[1],Rules[2],Rules[3],Rules[4],Rules[5],Rules[6],Rules[7],Rules[8],Rules[9],Rules[10],Rules[11],Rules[12],Rules[13],Rules[14],Rules[15],Rules[16]); SPD(playerid, 2, DSM, "{FFFFFF}• Правила сервера •", Rules_str, "Согласен", "Выйти"); return 1; } stock LoginPlayer(playerid, inputtext[]) { new string[40],pass[32]; GetPlayerName(playerid, sendername, sizeof(sendername)); format(string,sizeof(string), "players/%s.ini", sendername); new File = ini_openFile(string); ini_getString(File,"Password",pass,32); if(strcmp(pass, inputtext, true) != 0) { Kick(playerid); } else { ini_getInteger(File,"Money",Player[playerid][pMoney]); ini_getInteger(File,"Admin",Player[playerid][pAdmin]); ini_getInteger(File,"Skin",Player[playerid][pSkin]); ini_getString(File,"Email",Player[playerid][pEmail],64); SCM(playerid, -1, "Вы успешно авторизовались!"); SpawnPlayer(playerid); SetPVarInt(playerid, "Logged", 1); } return 1; } stock SavePlayer(playerid) { if(!IsPlayerConnected(playerid) && GetPVarInt(playerid, "Logged") == 0) return true; new string[40]; GetPlayerName(playerid, sendername, sizeof(sendername)); format(string,sizeof(string), "players/%s.ini", sendername); new File = ini_openFile(string); ini_setInteger(File, "Money",Player[playerid][pMoney]); ini_setInteger(File,"Admin",Player[playerid][pAdmin]); ini_setInteger(File,"Skin",Player[playerid][pSkin]); ini_setString(File,"Email",Player[playerid][pEmail]); ini_closeFile(File); return 1; } И так на этом наш урок заканчивается. Спасибо за внимание. Скрин регистрации. http://rghost.ru/52319742
  10. Сегодня я объясню как сделать разводной мост по таймеру . мост будет открывается раз в 25 минут! Подойдет для любого мода даже самп но там придется менять объект и координаты! И так начинаем , ко всем new new mostik[2]; дальше мы в public OnGameModeInit добавим таймер который будет открывать мост каждые 25 минут SetTimer("OpenMostik", 1000*60*25, true ) ;// если хотите через 30 или больше минут то меняйте 25 заменим объекты моста id 2168 заменяем на это mostik[0] = CreateObject(2168,2747.3437500,-1142.8994141,21.6000004,0.0000000,0.0000000,179.9945068); mostik[1] = CreateObject(2168,2747.2998047,-1262.0000000,21.6000004,0.0000000,0.0000000,0.0000000); дальше добавляем в конец мода forward OpenMostik(); public OpenMostik() { MoveObject(mostik[0],2747.3999023,-1142.8000488,22.1000004,0.015,45.7489014,0.0000000,179.9945068);// объекты закрытого моста MoveObject(mostik[1],2747.3999023,-1262.0000000,22.1000004,0.015,45.7441406,0.0000000,0.0000000);// объекты закрытого моста SetTimerEx("CloseGate",80*1000,0,"i",mostik[0]);// где 80*100 то 8 секунд открывается мост!можете увеличить SetTimerEx("CloseGate",80*1000,0,"i",mostik[1]);// где 80*100 то 8 секунд открывается мост!можете увеличить return 1; } и еще один паблик в конец мода! forward CloseGate(gate); public CloseGate(gate) { if(gate == mostik[0]) return MoveObject(mostik[0], 2747.3437500,-1142.8994141,21.6000003,0.015,0.0000000,0.0000000,179.994506); //object(barrierturn)(8)// открытые кординаты моста if(gate == mostik[1]) return MoveObject(mostik[1], 2747.2998047,-1262.0000000,21.6000003,0.015,0.0000000,0.0000000,0.0000000); //object(barrierturn)(8)//открытые кординаты моста return 1; } Вот собственно и все!если кому надо проверить работу способность вот команда! if (strcmp("/mostik", cmdtext, true, 10) == 0) { OpenMostik(); return true; } Автор: Банан
  11. Хай пипл. Тут один (давно) интересовался, как сделать что бы было две модели авто, но с разными текстурами одновременно. И приводил пример эвакуатора с ОРМа. Ну собственно сам секрет. Используется покрасочная работа- файл с текстурой, которая заменяет только сам "корпус." Крч. Расскажу на примере того же самого эвакуатора (с ОРМ (думаю они не обидятся) ). Имеем 2 файла текстуры - towtruck1.txd & towtruck.txd . В одном все текстуры, а во втором только "корпус". Добавим в мод: new evrik; evrik = AddStaticVehicle(525,-374.4628,662.8626,12.0010,270.4307,3,3); ChangeVehiclePaintjob( evrik, 0 ); new evrik1; evrik1 = AddStaticVehicle(525,-374.3501,648.3397,12.1706,17.6243,3,3); ChangeVehiclePaintjob( evrik1, 1 ); Где ChangeVehiclePaintjob( evrik1, 1 ); ChangeVehiclePaintjob функция смены покраски. evrik1 - объявленная переменная (или хз как её). "1" - id покрасочной работы.
  12. Однако здравствуйте:) Хочу представить вам спидометр, который я делал для одного сервера, который потом меня кинул. Для работы используется инклуд foreach. Только для мода с основой GAMER. Огромное спасибо Red_Devils. Брал за основу его урок. Ко всем переменным: new PlayerText:Textdraw[8][MAX_PLAYERS]; Далее в OnPlayerConnect: PlayerTextDrawHide(playerid,Textdraw[0][playerid]); PlayerTextDrawHide(playerid,Textdraw[1][playerid]); PlayerTextDrawHide(playerid,Textdraw[2][playerid]); PlayerTextDrawHide(playerid,Textdraw[3][playerid]); PlayerTextDrawHide(playerid,Textdraw[4][playerid]);PlayerTextDrawHide(playerid,Textdraw[5][playerid]);PlayerTextDrawHide(playerid,Textdraw[6][playerid]);PlayerTextDrawHide(playerid,Textdraw[7][playerid]); Textdraw[0][playerid] = CreatePlayerTextDraw(playerid, 633.200073, 372.593444, "usebox"); PlayerTextDrawLetterSize(playerid, Textdraw[0][playerid], 0.000000, 6.818146); PlayerTextDrawTextSize(playerid, Textdraw[0][playerid], 452.400115, 0.000000); PlayerTextDrawAlignment(playerid, Textdraw[0][playerid], 1); PlayerTextDrawColor(playerid, Textdraw[0][playerid], 0); PlayerTextDrawUseBox(playerid, Textdraw[0][playerid], true); PlayerTextDrawBoxColor(playerid, Textdraw[0][playerid], 102); PlayerTextDrawSetShadow(playerid, Textdraw[0][playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw[0][playerid], 0); PlayerTextDrawFont(playerid, Textdraw[0][playerid], 0); Textdraw[1][playerid] = CreatePlayerTextDraw(playerid, 472.799926, 386.773437, "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII"); PlayerTextDrawLetterSize(playerid, Textdraw[1][playerid], 0.449999, 1.600000); PlayerTextDrawAlignment(playerid, Textdraw[1][playerid], 1); PlayerTextDrawColor(playerid, Textdraw[1][playerid], -2139062017); PlayerTextDrawSetShadow(playerid, Textdraw[1][playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw[1][playerid], 1); PlayerTextDrawBackgroundColor(playerid, Textdraw[1][playerid], 51); PlayerTextDrawFont(playerid, Textdraw[1][playerid], 1); PlayerTextDrawSetProportional(playerid, Textdraw[1][playerid], 1); Textdraw[2][playerid] = CreatePlayerTextDraw(playerid, 508.799987, 371.840179, "167KM/H"); PlayerTextDrawLetterSize(playerid, Textdraw[2][playerid], 0.356398, 1.420799); PlayerTextDrawAlignment(playerid, Textdraw[2][playerid], 1); PlayerTextDrawColor(playerid, Textdraw[2][playerid], -1); PlayerTextDrawSetShadow(playerid, Textdraw[2][playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw[2][playerid], 1); PlayerTextDrawBackgroundColor(playerid, Textdraw[2][playerid], 51); PlayerTextDrawFont(playerid, Textdraw[2][playerid], 2); PlayerTextDrawSetProportional(playerid, Textdraw[2][playerid], 1); Textdraw[3][playerid] = CreatePlayerTextDraw(playerid, 473.599792, 386.773498, "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII"); PlayerTextDrawLetterSize(playerid, Textdraw[3][playerid], 0.449999, 1.600000); PlayerTextDrawAlignment(playerid, Textdraw[3][playerid], 1); PlayerTextDrawColor(playerid, Textdraw[3][playerid], -1); PlayerTextDrawSetShadow(playerid, Textdraw[3][playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw[3][playerid], 1); PlayerTextDrawBackgroundColor(playerid, Textdraw[3][playerid], 51); PlayerTextDrawFont(playerid, Textdraw[3][playerid], 1); PlayerTextDrawSetProportional(playerid, Textdraw[3][playerid], 1); Textdraw[4][playerid] = CreatePlayerTextDraw(playerid, 463.199920, 403.946655, "BENZIN:"); PlayerTextDrawLetterSize(playerid, Textdraw[4][playerid], 0.449999, 1.600000); PlayerTextDrawAlignment(playerid, Textdraw[4][playerid], 1); PlayerTextDrawColor(playerid, Textdraw[4][playerid], -1); PlayerTextDrawSetShadow(playerid, Textdraw[4][playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw[4][playerid], 1); PlayerTextDrawBackgroundColor(playerid, Textdraw[4][playerid], 51); PlayerTextDrawFont(playerid, Textdraw[4][playerid], 1); PlayerTextDrawSetProportional(playerid, Textdraw[4][playerid], 1); Textdraw[5][playerid] = CreatePlayerTextDraw(playerid, 463.200103, 420.373352, "DVERI:"); PlayerTextDrawLetterSize(playerid, Textdraw[5][playerid], 0.449999, 1.600000); PlayerTextDrawAlignment(playerid, Textdraw[5][playerid], 1); PlayerTextDrawColor(playerid, Textdraw[5][playerid], -1); PlayerTextDrawSetShadow(playerid, Textdraw[5][playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw[5][playerid], 1); PlayerTextDrawBackgroundColor(playerid, Textdraw[5][playerid], 51); PlayerTextDrawFont(playerid, Textdraw[5][playerid], 1); PlayerTextDrawSetProportional(playerid, Textdraw[5][playerid], 1); Textdraw[6][playerid] = CreatePlayerTextDraw(playerid, 611.199707, 404.693328, "E"); PlayerTextDrawLetterSize(playerid, Textdraw[6][playerid], 0.449999, 1.600000); PlayerTextDrawAlignment(playerid, Textdraw[6][playerid], 1); PlayerTextDrawColor(playerid, Textdraw[6][playerid], -1); PlayerTextDrawSetShadow(playerid, Textdraw[6][playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw[6][playerid], 1); PlayerTextDrawBackgroundColor(playerid, Textdraw[6][playerid], 51); PlayerTextDrawFont(playerid, Textdraw[6][playerid], 1); PlayerTextDrawSetProportional(playerid, Textdraw[6][playerid], 1); Textdraw[7][playerid] = CreatePlayerTextDraw(playerid, 611.999938, 421.866821, "L"); PlayerTextDrawLetterSize(playerid, Textdraw[7][playerid], 0.449999, 1.600000); PlayerTextDrawAlignment(playerid, Textdraw[7][playerid], 1); PlayerTextDrawColor(playerid, Textdraw[7][playerid], -1); PlayerTextDrawSetShadow(playerid, Textdraw[7][playerid], 0); PlayerTextDrawSetOutline(playerid, Textdraw[7][playerid], 1); PlayerTextDrawBackgroundColor(playerid, Textdraw[7][playerid], 51); PlayerTextDrawFont(playerid, Textdraw[7][playerid], 1); PlayerTextDrawSetProportional(playerid, Textdraw[7][playerid], 1); Далее в OnPlayerDisconnect: PlayerTextDrawDestroy(playerid,Textdraw[0][playerid]); PlayerTextDrawDestroy(playerid,Textdraw[1][playerid]); PlayerTextDrawDestroy(playerid,Textdraw[2][playerid]); PlayerTextDrawDestroy(playerid,Textdraw[3][playerid]); PlayerTextDrawDestroy(playerid,Textdraw[4][playerid]);PlayerTextDrawDestroy(playerid,Textdraw[5][playerid]);PlayerTextDrawDestroy(playerid,Textdraw[6][playerid]);PlayerTextDrawDestroy(playerid,Textdraw[7][playerid]); В конец мода: forward SpeedoUpdate(); public SpeedoUpdate() { foreach(Player,i) { if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i)) { new string[50],status[32],statusL[32],statusD[32],vehicleid = GetPlayerVehicleID(i); if(VehicleInfo[vehicleid][pEngineStatus] == 1) status = "~b~E";//Двигатель else status = "~r~E"; if(VehicleInfo[vehicleid][pLightsStatus] == 1) statusL = "~b~L";//Фары else statusL = "~r~L"; if(CarInfo[vehicleid][cLock] == 1) statusD = "~r~€AKP‘T‘"; else statusD = "~g~OTKP‘T‘"; PlayerTextDrawShow(i,Textdraw[0][i]); PlayerTextDrawShow(i,Textdraw[1][i]); PlayerTextDrawShow(i,Textdraw[2][i]); PlayerTextDrawShow(i,Textdraw[3][i]); PlayerTextDrawShow(i,Textdraw[4][i]);PlayerTextDrawShow(i,Textdraw[5][i]);PlayerTextDrawShow(i,Textdraw[6][i]);PlayerTextDrawShow(i,Textdraw[7][i]); format(string,sizeof(string),"~r~%d ~g~KM/H",GetPlayerSpeed(i));//Скорость PlayerTextDrawSetString(i,Textdraw[2][i],string); format(string,sizeof(string),"~w~ЂEH€…H: ~r~%d~g~‡.",Gas[vehicleid]);//Бензин PlayerTextDrawSetString(i,Textdraw[4][i],string); format(string,sizeof(string),"%s",status); PlayerTextDrawSetString(i,Textdraw[6][i],string); format(string,sizeof(string),"%s",statusL); PlayerTextDrawSetString(i,Textdraw[7][i],string); format(string,sizeof(string),"ѓBEP…:%s",statusD); PlayerTextDrawSetString(i,Textdraw[5][i],string); switch(SpeedVehicle(i)){ case 0..1: PlayerTextDrawSetString(i,Textdraw[3][i], "~w~"); case 2..10: PlayerTextDrawSetString(i,Textdraw[3][i], "~g~II"); case 11..20: PlayerTextDrawSetString(i,Textdraw[3][i], "~g~III"); case 21..30: PlayerTextDrawSetString(i,Textdraw[3][i], "~g~IIIII"); case 31..40: PlayerTextDrawSetString(i,Textdraw[3][i], "~y~IIIIIIII"); case 41..50: PlayerTextDrawSetString(i,Textdraw[3][i], "~y~IIIIIIIII"); case 51..60: PlayerTextDrawSetString(i,Textdraw[3][i], "~y~IIIIIIIIIIII"); case 61..70: PlayerTextDrawSetString(i,Textdraw[3][i], "~y~IIIIIIIIIIIIII"); case 71..80: PlayerTextDrawSetString(i,Textdraw[3][i], "~y~IIIIIIIIIIIIIIII"); case 81..90: PlayerTextDrawSetString(i,Textdraw[3][i], "~r~IIIIIIIIIIIIIIIIIII"); case 91..120: PlayerTextDrawSetString(i,Textdraw[3][i],"~r~IIIIIIIIIIIIIIIIIIIIII"); default: PlayerTextDrawSetString(i,Textdraw[3][i], "~r~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII");} } if(!IsPlayerInAnyVehicle(i)) { PlayerTextDrawHide(i,Textdraw[0][i]); PlayerTextDrawHide(i,Textdraw[1][i]); PlayerTextDrawHide(i,Textdraw[2][i]); PlayerTextDrawHide(i,Textdraw[3][i]); PlayerTextDrawHide(i,Textdraw[4][i]);PlayerTextDrawHide(i,Textdraw[5][i]); PlayerTextDrawHide(i,Textdraw[6][i]);PlayerTextDrawHide(i,Textdraw[7][i]); } } return true; } Таймер в OnGameModeInit: SetTimer("SpeedoUpdate",100,1);//обновляется раз в секунду Если компилятор будет ругаться на "SpeedVehicle", то в конец мода добавьте: stock SpeedVehicle(playerid, bool:return_km=true) { new Float:x, Float:y, Float:z; if(IsPlayerInAnyVehicle(playerid)) { new veh = GetPlayerVehicleID(playerid); GetVehicleVelocity(veh, x, y, z); }else GetPlayerVelocity(playerid, x, y, z); return return_km?floatround(floatsqroot(x*x+y*y+z*z)*195):floatround(floatsqroot(x*x+y*y+z*z)*121); } Автор : Predator. P.S. В подборе цветов я не очень, так что сами измените:)
  13. Predator

    Анти-мат

    Добрый вечер всем пользователям cr-mp.ru! Хочу представить вам анти-мат. Начнем! Ко всем new добавим: new BadWords[2][] = { "ваши запрещенные слова","ваши запрещенные слова" }; И в OnPlayerText: for(new w; w < sizeof(BadWords); w++) if(strfind(text,BadWords[w],true) != -1) return SendClientMessage(playerid,-1,"Не ругайтесь матом!") & 0; Автор: Amfy(во всяком случае он выложил данный урок и автора не указал)
  14. SkRiTeX

    cmd /setradar

    Здравствуйте дорогие пользователи GSG. Вот решил выложить cmd /setradar. Может кому понадобиться. В прошлый раз я выложил команду не полностью, исправляюсь. Поставить радар: if(!strcmp("/setradar", cmd, true)){new radarid = -1;for(new r; r<MAX_RADARS; r++){if(!RadarInfo[r][rActive]){radarid = r;break;}}if(radarid >= MAX_RADARS) return SendClientMessage(playerid, 0x27C400FF, ">>> Уже создано максимальное количество радаров.");if(PlayerRadars[playerid] >= MAX_PLAYER_RADARS) return SendClientMessage(playerid, 0x27C400FF, ">>> Ты создал уже создано максимальное количество радаров.");tmp = strtok(cmdtext, idx);if(!strlen(tmp)){SendClientMessage(playerid, 0x27C400FF, ">>> Использование >>> /setradar [ тип радара ]");SendClientMessage(playerid, 0xDEDEDEFF, "| 1: городской");SendClientMessage(playerid, 0xDEDEDEFF, "| 2: пригородный");SendClientMessage(playerid, 0xDEDEDEFF, "| 3: шоссейный");return 1;}new type[64];switch(strval(tmp)){case 1: RadarInfo[radarid][rSpeed] = 60, type = "Городской";case 2: RadarInfo[radarid][rSpeed] = 90, type = "Пригородный";case 3: RadarInfo[radarid][rSpeed] = 120, type = "Шоссейный";default: return SendClientMessage(playerid, 0x27C400FF, ">>> Неверный тип радара");}new Float:POS[4];GetPlayerPos(playerid, POS[0], POS[1], POS[2]);SetPlayerPos(playerid, POS[0]-0.5, POS[1]-0.5, POS[2]);GetPlayerFacingAngle(playerid, POS[3]);RadarInfo[radarid][rObject] = CreateDynamicObject(18880, POS[0], POS[1], POS[2]-2.5, 0.0, 0.0, POS[3]);RadarInfo[radarid][rActive] = true;RadarInfo[radarid][rPlayer] = playerid;RadarInfo[radarid][rPos][0] = POS[0];RadarInfo[radarid][rPos][1] = POS[1];RadarInfo[radarid][rPos][2] = POS[2];format(string, 128, ">>> Радар успешно создан | тип радара: {DEDEDE}%s", type);SendClientMessage(playerid, -1, string);PlayerRadars[playerid]++;return 1;} Удалить радар: if(!strcmp("/delradar", cmd, true)){new bool:radarid;for(new r; r<MAX_RADARS; r++){if(RadarInfo[r][rActive] && IsPlayerInRangeOfPoint(playerid, 3.0, RadarInfo[r][rPos][0], RadarInfo[r][rPos][1], RadarInfo[r][rPos][2])){if(RadarInfo[r][rPlayer] != playerid){SendClientMessage(playerid, 0x27C400FF, ">>> Данный радар был установлен не Вами.");}else{PlayerRadars[playerid]--;radarid = true;DestroyObject(RadarInfo[r][rObject]);RadarInfo[r][rPlayer] = INVALID_PLAYER_ID;RadarInfo[r][rActive] = false;}break;}}if(!radarid) SendClientMessage(playerid, 0x27C400FF, ">>> Поблизости нет радаров.");return 1;}
  15. TrollFace

    "Дернуть ручник"

    Идея моя понятна из самого названия темы. Все мы знаем, что по стандарту ручник - пробел. Так почему бы не сделать более высокий уровень РП при помощи обычного ProxDetectors ??? В коде - абсолютный минимум. На деле - довольно хорошая вещь. Приступим. Все знают, что за нажатие клавиш отвечает автовызываемая OnPlayerKeyStateChange Хорошо... А что с клавишей? Довольно просто. Ид пробела - 128. Что из этого следует? А следующий кусок кода: public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { new string[35], name[24]; GetPlayerName(playerid, name, MAX_PLAYER_NAME); if (newkeys == 128 && IsPlayerInVehicle(GetPlayerVehicleID(playerid))) { format(string, sizeof(string), "**%s дернул ручник.",name); ProxDetector(25.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); } return 1; } Довольно просто, верно? Однако в то же время как-то повышает уровень РП. Я думаю, многие оценят. У кого нет ProxDetectors - отройте в паблике. P.S. ничего подобного в паблике не лицезрел, однако, опять же таки - все просто.
  16. Нашел на просторах интернета динамическую систему бизнесов. Проверено на моде GTRP и new.pwn. Для начала ко всем enum добавим: enum bInfo { bBusName[64], bOwner[MAX_PLAYER_NAME], bPrice, bLock, bInterior, bVirtWorld, bPick, Text3D:bText, Float:bX, Float:bY, Float:bZ }; new BusinessInfo[250][bInfo];//250 макс. кол-во бизнесов new AllBiz;//всего бизнесов new LString[128]; enum biInfo//информация берётся из bInts { biInt, Float:biX, Float:biY, Float:biZ, biName[15], } new bInts[][biInfo]= { {4,457.304748,-88.428497,999.554687,"Название бизнеса"},//4 это инт,дальше координаты появления в интерьере и название бизнеса {5,454.973937,-110.104995,1000.077209,"Своё название"}, {15,207.737991,-109.019996,1005.132812,"Своё название"}, {5,226.293991,-7.431529,1002.210937,"Своё название"}, {4,286.800994,-82.547599,1001.515625,"Своё название"}, {5,772.111999,-3.898649,1000.728820,"Своё название"}, {15,2215.454833,-1147.475585,1025.796875,"Своё название"}, {2,1204.809936,-11.586799,1000.921875,"Своё название"}, {17,493.390991,-22.722799,1000.679687,"Своё название"}}; Далее в конец мода: stock LoadBiz() { new ids[32],str[64]; new iniOpens = ini_openFile("biz.cfg"); ini_getInteger(iniOpens, "AllBiz", AllBiz); ini_closeFile(iniOpens); if(AllBiz != 0) { for(new biz = 1; biz <= AllBiz; biz++) { format(ids,sizeof(ids),"biz/%d.ini",biz); new inihOpen = ini_openFile(ids); ini_getString(inihOpen, "bBusName", str); format(BusinessInfo[biz][bBusName],24,"%s",str); ini_getString(inihOpen, "bOwner", str); format(BusinessInfo[biz][bOwner],24,"%s",str); ini_getInteger(inihOpen, "bPrice", BusinessInfo[biz][bPrice]); ini_getInteger(inihOpen, "bLock", BusinessInfo[biz][bLock]); ini_getInteger(inihOpen, "bInterior", BusinessInfo[biz][bInterior]); ini_getInteger(inihOpen, "bVirtWorld", BusinessInfo[biz][bVirtWorld]); ini_getFloat(inihOpen, "bX", BusinessInfo[biz][bX]); ini_getFloat(inihOpen, "bY", BusinessInfo[biz][bY]); ini_getFloat(inihOpen, "bZ", BusinessInfo[biz][bZ]); ini_closeFile(inihOpen); if(!strcmp(BusinessInfo[biz][bOwner],"Nones",true))//Если нет владельца { BusinessInfo[biz][bPick] = CreatePickup(1274, 23, BusinessInfo[biz][bX], BusinessInfo[biz][bY], BusinessInfo[biz][bZ], 0);//Создаём Пикап format(LString,128,"Бизнес\n%s\nЦена: $%d", BusinessInfo[biz][bBusName], BusinessInfo[biz][bPrice]);//Форматируем BusinessInfo[biz][bText] = Create3DTextLabel(LString, 0xFFFFFFFF, BusinessInfo[biz][bX], BusinessInfo[biz][bY], BusinessInfo[biz][bZ] + 0.5, 10.0, 0, 0);//Создаём 3DText } else//Иначе { BusinessInfo[biz][bPick] = CreatePickup(1274, 23, BusinessInfo[biz][bX], BusinessInfo[biz][bY], BusinessInfo[biz][bZ],0);//Создаём Пикап format(LString, 128, "Бизнес\n%s\nВладелец: %s", BusinessInfo[biz][bBusName],BusinessInfo[biz][bOwner]);//Форматируем BusinessInfo[biz][bText] = Create3DTextLabel(LString, 0xFFFFFFFF, BusinessInfo[biz][bX], BusinessInfo[biz][bY], BusinessInfo[biz][bZ] +0.5, 10.0, 0, 0);//Создаём 3DText } } printf("Бизнесов загружено: %d",AllBiz); } return 1; } stock UpdateBusiness(b) { DestroyPickup(BusinessInfo[b][bPick]);//Удаляем Пикап if(!strcmp(BusinessInfo[b][bOwner],"Nones",true))//Если нет владельца { BusinessInfo[b][bPick] = CreatePickup(1274, 23, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ],0);//Создаём Пикап format(LString, 128, "Бизнес\n%s\nЦена: $%d", BusinessInfo[b][bBusName], BusinessInfo[b][bPrice]);//Форматируем Update3DTextLabelText(BusinessInfo[b][bText],0xFFFFFFFF,LString);//Обновляем 3DText } else//Иначе { BusinessInfo[b][bPick] = CreatePickup(1274, 23, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ], 0);//Создаём Пикап format(LString,128,"Бизнес\n%s\nВладелец: %s",BusinessInfo[b][bBusName],BusinessInfo[b][bOwner]);//Форматируем Update3DTextLabelText(BusinessInfo[b][bText],0xFFFFFFFF,LString);//Обновляем 3DText } } stock SaveBusiness(biz) { new ids[32]; format(ids,sizeof(ids),"biz/%d.ini",biz); new inihOpen; inihOpen = ini_openFile(ids); if(inihOpen == -1 || inihOpen == -2) inihOpen = ini_createFile(ids); ini_setString(inihOpen, "bBusName", BusinessInfo[biz][bBusName]); ini_setString(inihOpen, "bOwner", BusinessInfo[biz][bOwner]); ini_setInteger(inihOpen, "bPrice", BusinessInfo[biz][bPrice]); ini_setInteger(inihOpen, "bLock", BusinessInfo[biz][bLock]); ini_setInteger(inihOpen, "bInterior", BusinessInfo[biz][bInterior]); ini_setInteger(inihOpen, "bVirtWorld", BusinessInfo[biz][bVirtWorld]); ini_setFloat(inihOpen, "bZ", BusinessInfo[biz][bZ]); ini_setFloat(inihOpen, "bX", BusinessInfo[biz][bX]); ini_setFloat(inihOpen, "bY", BusinessInfo[biz][bY]); ini_closeFile(inihOpen); return 1; } В OnGameModeInit: LoadBiz(); Далее добавим несколько команд, для этого в OnPlayerCommandText добавим: if(strcmp("/benter", cmdtext, true, 6) == 0) { for(new b = 1; b <= AllBiz; b++)//Для всех Бизнесов { if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue; if(strcmp(BusinessInfo[b][bOwner],GN(playerid), true) !=0 && BusinessInfo[b][bLock] == 1) return SendClientMessage(playerid,-1,"Бизнес закрыт.");//Если закрыт SetPlayerPos(playerid, bInts[BusinessInfo[b][bInterior]][biX], bInts[BusinessInfo[b][bInterior]][biY], bInts[BusinessInfo[b][bInterior]][biZ]);//Устанавливаем позицию игроку SetPlayerInterior(playerid, bInts[BusinessInfo[b][bInterior]][biInt]);//Устанавливаем интерьер игроку SetPlayerVirtualWorld(playerid, BusinessInfo[b][bVirtWorld]);//Устанавливаем виртуальный мир игроку } return true; } if(strcmp("/bexit", cmdtext, true, 5) == 0) { for(new b = 1; b <= AllBiz; b++)//Для всех Бизнесов { if(IsPlayerInRangeOfPoint(playerid, 5.0, bInts[BusinessInfo[b][bInterior]][biX], bInts[BusinessInfo[b][bInterior]][biY], bInts[BusinessInfo[b][bInterior]][biZ]) && GetPlayerVirtualWorld(playerid) == BusinessInfo[b][bVirtWorld])//Если в радиусе 5 метров от выхода((Координат входа)) { SetPlayerPos(playerid, BusinessInfo[b][bX],BusinessInfo[b][bY],BusinessInfo[b][bZ]);//Устанавливаем позицию игроку SetPlayerVirtualWorld(playerid,0);//Устанавливаем виртуальный мир игроку SetPlayerInterior(playerid,0);//Устанавливаем интерьер игроку } } return true; } if(strcmp("/buybus", cmdtext, true, 9) == 0) { for(new b = 1; b <= AllBiz; b++)//Для всех Бизнесов { if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue; if(PlayerInfo[playerid][pMoney] < BusinessInfo[b][bPrice]) return SendClientMessage(playerid,-1,"У вас не достаточно наличных средств, для покупки."); //Если не достаточно денег if(strcmp(BusinessInfo[b][bOwner], "Nones",true) != 0) return SendClientMessage(playerid,-1,"Бизнес не продаётся."); //Если есть Владелец strmid(BusinessInfo[b][bOwner], GN(playerid), 0, 24, 24);//Устанавливаем Владельца UpdateBusiness(b);//Обновляем SaveBusiness(b); //Сохраняем GivePlayerMoney(playerid,-BusinessInfo[b][bPrice]); //Отнимаем сумму SendClientMessage(playerid,-1,"Поздравляем с покупкой"); return true; } SendClientMessage(playerid,-1,"Подойдите к Бизнесу который желаете купить."); return true; } if(strcmp("/sellbus", cmdtext, true, 10) == 0) { for(new b = 1; b <= AllBiz; b++)//Для всех Бизнесов { if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue; if(!strcmp(BusinessInfo[b][bOwner], GN(playerid), true)) { strmid(BusinessInfo[b][bOwner], "Nones", 0, 5, 5);//Убираем владельца с Бизнеса UpdateBusiness(b);//Обновляем SaveBusiness(b);//Сохраняем GivePlayerMoney(playerid,BusinessInfo[b][bPrice]/2);//Даём игроку 1/2 стоимости Бизнеса SendClientMessage(playerid,-1,"Вы продали свой Бизнес государству. За 1/2 его стоимости."); return true; } } return true; } if(strcmp("/addbus", cmdtext, true, 13) == 0) { if(PlayerInfo[playerid][pAdministrator] == 10) { return ShowPlayerDialog(playerid,2000,DIALOG_STYLE_INPUT,"Название","Введите название:","Далее","Отмена");//Выводим Диалог } } Далее добавим диалоги, для этого в OnDialogResponse вставим: if(dialogid == 2000) { if(response)//Если продолжаем { if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 2000, DIALOG_STYLE_INPUT, "Название", "Введите название:", "Далее","Отмена");//Если не введено - повторяем SetPVarString(playerid, "b_name", inputtext);//Записываем ShowPlayerDialog(playerid, 2001, DIALOG_STYLE_INPUT, "Стоимость", "Введите стоимость Бизнеса:", "Далее", "Отмена");//Показываем Диалог с Ценой } } if(dialogid == 2001) { if(response)//Если продолжаем { if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 2001, DIALOG_STYLE_INPUT, "Стоимость", "Введите стоимость бизнеса:","Далее","Назад");//Если не введено - повторяем SetPVarInt(playerid, "b_price", strval(inputtext)); LString = ""; for(new i; i < sizeof(bInts); i++) { strcat(LString, bInts[i][biName]); strcat(LString, "\n"); } ShowPlayerDialog(playerid, 2002, DIALOG_STYLE_LIST, "Интерьер", LString, "Далее", "Назад");//Показываем Диалог с выбором Интерьера } else DeletePVar(playerid, "b_name"), ShowPlayerDialog(playerid, 2000, DIALOG_STYLE_INPUT, "Название","Введите название:", "Далее", "Отмена");//Иначе } if(dialogid == 2002) { if(response)//Если продолжаем { SetPVarInt(playerid, "b_int", listitem); ShowPlayerDialog(playerid, 2003, DIALOG_STYLE_MSGBOX, "Подтверждение", "Вы действительно желаете создать Бизнес?", "V", "X");//Подтверждаем } else DeletePVar(playerid, "b_price"), ShowPlayerDialog(playerid, 2001, DIALOG_STYLE_INPUT, "Стоимость", "Введите стоимость Бизнеса:", "Далее", "Назад");//Иначе } if(dialogid == 2003) { if(response)//Если продолжаем { AllBiz++;//КОл-во Бизнесов плюсуем new inihOpen = ini_openFile("biz.cfg"); ini_setInteger(inihOpen, "AllBiz", AllBiz); ini_closeFile(inihOpen); new Float:x[3], str[64]; GetPlayerPos(playerid, x[0], x[1], x[2]);//Получаем позицию GetPVarString(playerid, "b_name", str, 64); BusinessInfo[AllBiz][bX] = x[0];//Присваиваем Координату X BusinessInfo[AllBiz][bY] = x[1];//Присваиваем Координату Y BusinessInfo[AllBiz][bZ] = x[2];//Присваиваем Координату Z BusinessInfo[AllBiz][bPrice] = GetPVarInt(playerid, "b_price");//Присваиваем Цену BusinessInfo[AllBiz][bInterior] = GetPVarInt(playerid, "b_int");//Присваиваем Интерьер BusinessInfo[AllBiz][bVirtWorld] = AllBiz;//Присваиваем Виртуальный Мир strmid(BusinessInfo[AllBiz][bBusName], str, 0, 32, 32);//Присваиваем Имя strmid(BusinessInfo[AllBiz][bOwner], "Nones", 0, 24, 24);//Присваиваем Владельца "Nones" SaveBusiness(AllBiz);//Сохраняем BusinessInfo[AllBiz][bPick] = CreatePickup(1274,23,x[0],x[1],x[2],0);//Создаём Пикап format(LString, 128, "Бизнес\n%s\nЦена: $%d", BusinessInfo[AllBiz][bBusName], BusinessInfo[AllBiz][bPrice]);//Форматируем BusinessInfo[AllBiz][bText] = Create3DTextLabel(LString, 0xFFFFFFFF, x[0], x[1], x[2] + 0.5, 10.0, 0, 0);//Создаём 3DText GameTextForPlayer(playerid, "~w~Бизнес ~g~Создан",100,1); DeletePVar(playerid, "b_price"); DeletePVar(playerid, "b_name"); DeletePVar(playerid, "b_int"); } else DeletePVar(playerid,"b_price"), DeletePVar(playerid, "b_name"), DeletePVar(playerid, "b_int");//Иначе } В папке scriptfiles создайте файл biz.cfg и впишите туда allbiz = 0. И создайте папку biz, туда они будут сохранятся. Автор: Лев Попов Автор переделки: Basis
  17. Может нужен кому нибудь. Переделал из /offadminka Изначального автора незнаю Варны можно снять обычной /unwarn if(strcmp(cmd, "/offwarn", true) == 0) { if(PlayerInfo[playerid][pAdmin] >= 4) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /offwarn [Ник] [Причина]"); new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if (!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /offwarn [Ник] [Причина]"); format(string, sizeof(string), "%s.ini", tmp); if(fexist(string)) { format(string, sizeof(string), "%s.ini", tmp); new File = ini_openFile(string); ini_setInteger(File,"Warnings",1); ini_closeFile(File); GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "[OFFWARN]Администратор %s выдал варн игроку %s, причина: %s",sendername,giveplayer,(result)); ABroadCast(COLOR_LIGHTRED,string,1); } return true; } else { SendClientMessage(playerid, COLOR_ORANGE, "Вам недоступна эта функция!"); } return true; } Значения: if(PlayerInfo[playerid][pAdmin] >= 4) 4 - Уровень администрирования, с которого можно выдавать предупреждение
  18. решил написать простой скрипт чтобы админ мог включить всем музыку приступим перейдём в OnPlayerCommandText и там вставляем команду if(strcmp(cmd,"/music", true) == 0) { if(PlayerInfo[playerid][pAdmin] >= 3) { ShowPlayerDialog(playerid,345,DIALOG_STYLE_INPUT,"Музыку всем","Введите ссылку на песенку","Вкл","отмена"); return true; } return 1; } C командой покончено теперь идём в OnDialogResponse и вставляем данный кейс case 345: { if(response) { new giveplayerid; if(!strval(inputtext)) return ShowPlayerDialog(playerid,345,DIALOG_STYLE_INPUT,"Музыку всем","Введите ссылку на песенку","Вкл","отмена"); SendClientMessageToAll(0xFF0000FF,"Администратор включил музыку всем"); PlayAudioStreamForPlayer(giveplayerid,inputtext); } return 1; } Подобного на форуме не видел.
  19. FVCKFISH

    Работа дровосека

    Ко всем new new francjobodej,francdrevlog;new francdrev1,francdrev2,francdrev3;new franclesorub[MAX_PLAYERS];new francderevo[MAX_PLAYERS];new francbrevnozp[MAX_PLAYERS]; public OnPlayerPickUpPickup(playerid, pickupid) добавляем : if(pickupid == francjobodej){if(PlayerInfo[playerid][pMember] != 0 || PlayerInfo[playerid][pLeader] != 0) return true;if(franclesorub[playerid] == 0) ShowPlayerDialog(playerid,125,DIALOG_STYLE_MSGBOX,"Раздевалка лесорубов","Хотите начать?","Да","Нет");else ShowPlayerDialog(playerid,126,DIALOG_STYLE_MSGBOX,"Раздевалка лесорубов","Хотите завершить работу?","Да","Нет");}if(pickupid == francdrev1){if(franclesorub[playerid] == 1){if(francderevo[playerid] == 0){francderevo[playerid] = 1;ApplyAnimation(playerid, "CARRY", "liftup", 4.0, 0, 0, 0, 1, 1);SetTimerEx("ClearAnimText2", 1000, false, "d", playerid);SetPlayerAttachedObject(playerid, 4, 1463, 1, 0.184699, 0.426247, 0.000000, 259.531341, 80.949592, 0.000000, 0.476124, 0.468181, 0.470769);return true;}else{SendClientMessage(playerid,COLOR_GREY,"У вас уже есть брёвна!");}}else{SendClientMessage(playerid,COLOR_GREY,"Вы не можете взять брёвна, для начала работы переоденьтесь в одежду {00FFFF}лесоруба.");}}if(pickupid == francdrev2){if(franclesorub[playerid] == 1){if(francderevo[playerid] == 0){francderevo[playerid] = 1;ApplyAnimation(playerid, "CARRY", "liftup", 4.0, 0, 0, 0, 1, 1);SetTimerEx("ClearAnimText2", 1000, false, "d", playerid);SetPlayerAttachedObject(playerid, 4, 1463, 1, 0.184699, 0.426247, 0.000000, 259.531341, 80.949592, 0.000000, 0.476124, 0.468181, 0.470769);return true;}else{SendClientMessage(playerid,COLOR_GREY,"У вас уже есть брёвна!");}}else{SendClientMessage(playerid,COLOR_GREY,"Вы не можете взять брёвна, для начала работы переоденьтесь в одежду {00FFFF}лесоруба.");}}if(pickupid == francdrev3){if(franclesorub[playerid] == 1){if(francderevo[playerid] == 0){francderevo[playerid] = 1;ApplyAnimation(playerid, "CARRY", "liftup", 4.0, 0, 0, 0, 1, 1);SetTimerEx("ClearAnimText2", 1000, false, "d", playerid);SetPlayerAttachedObject(playerid, 4, 1463, 1, 0.184699, 0.426247, 0.000000, 259.531341, 80.949592, 0.000000, 0.876124, 0.868181, 0.870769);return true;}else{SendClientMessage(playerid,COLOR_GREY,"У вас уже есть бревна!");}}else{SendClientMessage(playerid,COLOR_GREY,"Вы не можете взять бревна, для начала работы переоденьтесь в одежду {00FFFF}лесоруба.");}}if(pickupid == francdrevlog){if(francderevo[playerid] == 0){SendClientMessage(playerid,COLOR_GREY,"У вас нет брёвен!");return true;}else{if(francderevo[playerid] == 1){francderevo[playerid] = 0;RemovePlayerAttachedObject(playerid, 4);ApplyAnimation(playerid,"CARRY","putdwn",4.1,0,1,1,1,1);SendClientMessage(playerid,COLOR_WHITE,"Вы принесли брёвна");SetTimerEx("ClearAnimText", 1400, false, "d", playerid);francbrevnozp[playerid]++;}}} Дальше в public OnGameModeInit добавляем: francdrevlog = CreatePickup(3798,23,2736,-1621.80005,22.6);francjobodej = CreatePickup(1275,23,2750.69995,-1585.30005,22.3);francdrev1 = CreatePickup(19197,23,2751.8999,-1572.90002,20.9);francdrev2 = CreatePickup(19197,23,2741.8999,-1563.30005,20.6);francdrev3 = CreatePickup(19197,23,2725.30005,-1569.90002,22.4); Теперь для начала и завершения работы добавляем в OnDialogResponse if(dialogid == 125){if(response){SetPlayerSkin(playerid,16);franclesorub[playerid] = 1;SendClientMessage(playerid,COLOR_WHITE,"Вы начали рабочий день лесоруба. {A41C1C}Отправляйтесь за брёвнами!");return true;}else{return true;}}if(dialogid == 126){if(response){new strings[256];new string[256];new stri[256];francderevo[playerid] = 0;franclesorub[playerid] = 0;RemovePlayerAttachedObject(playerid, 4);ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 1);if(PlayerInfo[playerid][pMember] >= 1 || PlayerInfo[playerid][pLeader] >= 1){SetPlayerSkin(playerid,PlayerInfo[playerid][pChar]);}if(PlayerInfo[playerid][pMember] == 0 || PlayerInfo[playerid][pLeader] == 0){SetPlayerSkin(playerid,PlayerInfo[playerid][pChar]);}format(string, sizeof(string), "Вы закончили работу. Ваш заработок: {00FF00}$%d", francbrevnozp[playerid]*50);SendClientMessage(playerid, COLOR_WHITE, string);format(stri, sizeof(stri), "Вы принесли {A41C1C}%d{FFFFFF}свзок брёвен ",francbrevnozp[playerid]);PlayerInfo[playerid][pCash] +=francbrevnozp[playerid]*50;SendClientMessage(playerid, COLOR_WHITE, stri);francbrevnozp[playerid] = 0;GivePlayerMoney(playerid, 100);format(strings, sizeof(strings), "~r~Pay", francbrevnozp[playerid]*50);GameTextForPlayer(playerid,strings,3000,1);return true;}else{}} маппинг для лесоруба(склад и раздевалка) CreateObject(4214,2749.6001000,-1586.3000500,22.3000000,0.0000000,0.0000000,355.0000000); //object(lanitewin3_lan) (1)CreateObject(9160,2743.8999000,-1622.0000000,22.5000000,0.0000000,0.0000000,184.9990000); //object(lodaseroad143) (1) Делал на моде Тюмень Скрины: Сдачи опилок теперь нету , только бревна... (скрины новые решил не делать , если будут проблемы по данной теме , писать в вопросы и проблемы)
  20. Доброго времени суток, сейчас я вам покажу как можно сделать "крякалку" на кнопку для автомобилей гос.служб, а так же на другие авто. Для того чтобы все работало нам понадобится: мод, стример и прямые руки. По теории это будет выглядеть так: Все начинается с проверки нажатой игроком кнопкой, далее привязываем к этой проверке еще одну проверку на нахождение игрока за рулем авто. Если проверка проходит успешной, то создаем цикл, где будем искать всех активных игроков. После того как прошелся цикл, делаем проверку на нахождение найденного игрока, с игроком который включил "крякалку", а далее уже будет проигрывать звук, создавать таймер и делать дополнительные проверки во избежания флуда звуком. По практике это будет выглядеть так: Для начала создадим глобальную беременную(ко всем new добавим) new zvonok[MAX_PLAYERS]; Далее идем уже к нажатию кнопки. Проверка на нажатую кнопку осуществляется в паблике OnPlayerKeyStateChange if(newkeys == ид кнопки && IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) //проверяем нажатую кнопку и если игрок находится за рулем { if(GetPlayerVehicleID(playerid) == ид авто) //ид авто - т.е. ид авто на котором будет работать крякалка { for(new i=0; i<MAX_PLAYERS; i++) //цикл для поиска игроков { if(ProxDetectorS(15.0, playerid, i))//если игрок находится рядом с найденным по циклу, то.. { if(zvonok[i] == 1) return 0; //проверка "Запущен ли звук или нет?" PlayAudioStreamForPlayer(i,"ссылка на звук");//запускаем звук SetTimer("zvon", 5000, false); //создадим таймер по которому будет отключатся звук (я задал отключение через 5 сек. настраивайте время сами) zvonok[i] = 1; //ставим переменную zvonok на 1 от флуда звуком } } } } Далее перейдем к таймеру: В конец мода вставим forward zvon(playerid); //сообщим о паблике public zvon(playerid) { zvonok[playerid] = 0; //ставим переменную zvonok на 0, от флуда StopAudioStreamForPlayer(playerid); //останавливаем звук return true; } На данный момент это пока лишь первая версия, со времен буду улучшать ее с вашей помощью. Есть небольшой косяк в том что, звук не будет изменять свою громкость в зависимости от дальности нахождения автомобиля в котором он проигрывается, но и это можно исправить. К сожалению при копировании слетела табуляция, я думаю вам не составит труда настроить ее. По коду все отлично, у меня error\warning не было! По поводу работоспособности не знаю, нет возможности проверить. Обо всех ошибках прошу сообщать в эту тему, чтобы не разводить срач на форуме и совместно решать все баги! Буду рад выслушать все подсказки по поводу доработки кода. Автор: Ryslik42 (на некоторых форумах SMETAHA) - т.е. Я При копировании на другие форумы, прошу сохранить авторство!!!
  21. Всем привет пользователи GSG хочу вам показать систему Система поднятие/выкидывание оружие давайте начнем. Ко всем define #define MAX_GUNS 500 Ко всем enum enum DGUN_INFO { dID, // ID Float:dPos[3], // Позиция dWeapon, // Оружие dAmmo, // Патроны dVirtualWorld, // Виртуальный мир dInterior, // Интерьер Text3D:dLabel // 3D текст }; new Dgun[MAX_GUNS][DGUN_INFO]; Ко всем глобальным переменным: new GunObjects[47] = { 0, 331, 333, 334, 335, 336, 337, 338, 339, 341, 321, 322, 323, 324, 325, 326, 342, 343, 344, 0, 0, 0, 346, 347, 348, 349, 350, 351, 352, 353, 355, 356, 372, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 368, 371 }; В конец мода: stock B_RemovePlayerWeapon(playerid, b_weapon) { new b_weaponammo[13][2]; for(new s; s != 13; s++) GetPlayerWeaponData(playerid, s, b_weaponammo[s][0], b_weaponammo[s][1]); ResetPlayerWeapons(playerid); for(new g; g != 13; g++) { if(b_weaponammo[g][0] == b_weapon || b_weaponammo[g][1] <= 0) continue; GivePlayerWeapon(playerid, b_weaponammo[g][0], b_weaponammo[g][1]); break; } return true; } Команды: CMD:drop(playerid, params[]) { if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xAFAFAFAA, "[!] Вы находитесь в транспорте."); if(GetPlayerWeapon(playerid) <= 0 && GetPlayerAmmo(playerid) <= 0) return SendClientMessage(playerid, 0xAFAFAFAA, "[!] Вы не имеете при себе оружие."); for(new g; g != MAX_GUNS; g++) { if(g > MAX_GUNS) return SendClientMessage(playerid, 0xAFAFAFAA, "[!] Вы не можете выбросить оружие. Превышен максимальный лимит."); B_RemovePlayerWeapon(playerid, GetPlayerWeapon(playerid)); ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0); GetPlayerPos(playerid, Dgun[g][dPos][0], Dgun[g][dPos][1], Dgun[g][dPos][2]); Dgun[g][dWeapon] = GetPlayerWeapon(playerid); Dgun[g][dAmmo] = GetPlayerAmmo(playerid); Dgun[g][dVirtualWorld] = GetPlayerVirtualWorld(playerid); Dgun[g][dInterior] = GetPlayerInterior(playerid); Dgun[g][dID] = CreateDynamicObject(GunObjects[Dgun[g][dWeapon]], Dgun[g][dPos][0], Dgun[g][dPos][1], Dgun[g][dPos][2]-1, 93.7, 120.0, 120.0, Dgun[g][dVirtualWorld], Dgun[g][dInterior], -1, 300.0); GetWeaponName(Dgun[g][dWeapon], m_string, sizeof(m_string)); format(f_string, sizeof(f_string), "Оружие %s и %d патронов.\n{00A86B}Введите: /take", m_string, Dgun[g][dAmmo]); Dgun[g][dLabel] = CreateDynamic3DTextLabel(f_string, 0xFFFF00AA, Dgun[g][dPos][0], Dgun[g][dPos][1], Dgun[g][dPos][2], 5.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Dgun[g][dVirtualWorld], Dgun[g][dInterior], -1, 100.0); format(f_string, sizeof(f_string), "Вы выбросили оружие %s и %d патронов.", m_string, Dgun[g][dAmmo]); SendClientMessage(playerid, 0xFFA500AA, f_string); format(f_string, sizeof(f_string), "Выбросил оружие %s и %d патронов", m_string, Dgun[g][dAmmo]); SetPlayerChatBubble(playerid, f_string, 0xFF9900AA, 5.0, 3000); break; } return true; } CMD:take(playerid, params[]) { if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xAFAFAFAA, "[!] Вы находитесь в транспорте."); for(new g; g != MAX_GUNS; g++) { if(!IsPlayerInRangeOfPoint(playerid, 1.0, Dgun[g][dPos][0], Dgun[g][dPos][1], Dgun[g][dPos][2])) continue; if(g > MAX_GUNS) return SendClientMessage(playerid, 0xAFAFAFAA, "[!] Вы не можете подобрать оружие. Превышен максимальный лимит."); ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0); DestroyDynamicObject(Dgun[g][dID]); DestroyDynamic3DTextLabel(Dgun[g][dLabel]); GivePlayerWeapon(playerid, Dgun[g][dWeapon], Dgun[g][dAmmo]); GetWeaponName(Dgun[g][dWeapon], m_string, sizeof(m_string)); format(f_string, sizeof(f_string), "Вы подобрали оружие %s и %d патронов.", m_string, Dgun[g][dAmmo]); SendClientMessage(playerid, 0xFFA500AA, f_string); format(f_string, sizeof(f_string), "Подобрал оружие %s и %d патронов", m_string, Dgun[g][dAmmo]); SetPlayerChatBubble(playerid, f_string, 0xFF9900AA, 5.0, 3000); Dgun[g][dID] = -1; Dgun[g][dPos][0] = 0.0; Dgun[g][dPos][1] = 0.0; Dgun[g][dPos][2] = 0.0; Dgun[g][dWeapon] = -1; Dgun[g][dAmmo] = -1; Dgun[g][dVirtualWorld] = -1; Dgun[g][dInterior] = -1; break; } return true; } [textred]Командный процесс - ZCMD. Так что, при необходимости подгоняйте под свой мод.[/textred] Автор-Неизвестен
  22. Ко всем #define, если у кого небуть нету такого цвета #define COLOR_GREEN 0x33AA33AA Ко всем public В public OnPlayerCommandText(playerid, cmdtext[]){ new nxtlevel = PlayerInfo[playerid][pLevel]+1; new expamount = nxtlevel*levelexp; if (PlayerInfo[playerid][pExp] > expamount) { PlayerInfo[playerid][pLevel]++; PlayerInfo[playerid][pExp] = 1; SendClientMessage(playerid, COLOR_GREEN, "Ваш игровой лвл был автоматически повышен!"); return 1; } Друзья строго не судите! Может кому-то нужно) Автор-(Vlad_Andreev)
  23. Donald_Record

    Система урона машины

    Всем привет, сегодня я вам покажу как сделать систему: Урона машины. Автор системы: Y.Jeen В начало мода, ко всем new добавляем: new zavodis[MAX_VEHICLES]; new engine,lights,alarm,doors,bonnet,boot,objective; Создаем public OnVehicleDamageStatusUpdate(vehicleid, playerid) и вставляем функцию: public OnVehicleDamageStatusUpdate(vehicleid, playerid) { { GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(vehicleid,false,lights,alarm,doors,bonnet,boot,objective); zavodis[GetPlayerVehicleID(playerid)] = 0; GameTextForPlayer(playerid, "~r~ENGINE OFF", 5000, 6); } return 1; } При столкновении машина вырубается
  24. Вообщем давно писал функцию мигалок с сохранением , продажей , покупкой , смещением позиций , подобную как на urm , но до конца не доделал возможно позже сделаю. А пока версия что я сделал. Напоминаю только для системы авто game или же сами переделаетеenu В enum carinfo добавим переменную cMiglo, дальше в stock loadcar ini_getInteger(iniOpen, "cMiglo", CarInfo[car][cMiglo]); // отвечает за загрузку . Дальше идем stock savecar и вставляем ini_setInteger(iniOpen, "cMiglo", CarInfo[car][cMiglo]); // отвечает за сохранение при покупке и продаже . Теперь нам надо чтоб мигалка обновлялась значить в stock CreateCar(car) впишем ini_setInteger(iniOpen, "cMiglo", CarInfo[car][cMiglo]); // обновляем мигалку если она . И так половина сделана теперь нам надо сделать проверку на авто , в самый конец добавляем сток stock ProverkaMigla(carid){new model = GetVehicleModel(carid);////////////////////////Все херня////////////////////////////if( model==592||model==577||model==511||model==512||model==593||model==520||model==553||model==476||model==519||model==460||model==513||model==548||model==425||model==417||model==487||model==488||model==497||model==563||model==447||model==509||model==481||model==510||model==462||model==448||model==581||model==522||model==461||model==521||model==523||model==463||model==586||model==468||model==471||model==523||model==416||model==433||model==431||model==438||model==437||model==416||model==433||model==431||model==438||model==437||model==427||model==490||model==528||model==407||model==544||model==596||model==598||model==597||model==599||model==432||model==601||model==420||model==472||model==473||model==493||model==595||model==484||model==430||model==453||model==452||model==446||model==454||model==406||model==409||model==423||model==428||model==434||model==435||model==441||model==442||model==449||model==450||model==457||model==464||model==465||model==483||model==485||model==486||model==501||model==508||model==525||model==530||model==532||model==537||model==538||model==539||model==545||model==564||model==569||model==570||model==571||model==572||model==574||model==583||model==584||model==588||model==590||model==591||model==594||model==606||model==607||model==608||model==610||model==611||model==604||model==462||model==568||model==573||model==578||model==582||model==605||model==609||model==403||model==406||model==408||model==413||model==414||model==418||model==418||model==440||model==444||model==455||model==456||model==459||model==470||model==478||model==482||model==498||model==499||model==514||model==515||model==515||model==531||model==552){return true;}return false;} и так остались команды приступим. в Public OnplayerCommand добавляем if(strcmp("/migla", cmdtext, true, 10) == 0){new v = GetPlayerVehicleID(playerid);new cars = GetPlayerVehicleID(playerid);if(GetRealID(v) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Вы должны быть в своём автомобиле");if(CarInfo[v][cMiglo] == 0) return SendClientMessage(playerid, COLOR_RED, "У вас нету мигалки");SendClientMessage(playerid, COLOR_RED, "Вы поставили мигалку на крышу");migalka[cars] = CreateObject(18646, 0, 0, 0, 0, 0, 0);AttachObjectToVehicle(migalka[cars],v, 0.009999, -0.019999, 0.944999, 0.000000, 0.000000, 0.000000);return 1;}if (strcmp("/miglaoff", cmdtext, true, 10) == 0){new cars = GetPlayerVehicleID(playerid);DestroyObject(migalka[cars]);return 1;}//------------------------------------------------------------------------------if(strcmp(cmdtext, "/buymiglo", true)==0){new cars = GetPlayerVehicleID(playerid);if(GetRealID(cars) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Вы не в своем авто");if(ProverkaMigla(cars)) return SendClientMessage(playerid, 0xF6CB00AA, "На этот транспорт мигалка не предусмотрена");if(CarInfo[cars][cMiglo] == 1) return SendClientMessage(playerid, COLOR_RED, "У вас уже есть мигалка");GiveMoney(playerid,-1500);CarInfo[cars][cMiglo] = 1;SendClientMessage(playerid, COLOR_RED, "Вы купили себе мигалку");return 1;}if(strcmp(cmdtext, "/sellmiglo", true)==0){new cars = GetPlayerVehicleID(playerid);if(GetRealID(cars) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Вы не в своем авто");if(NenadoLustru(cars)) return SendClientMessage(playerid, 0xF6CB00AA, "На этот транспорт мигалка не предусмотрен");if(CarInfo[cars][cMiglo] == 0) return SendClientMessage(playerid, COLOR_RED, "У вас нет мигалки");GiveMoney(playerid,1500);CarInfo[cars][cMiglo] = 0;SendClientMessage(playerid, COLOR_RED, "Вы успешно продали мигалку");return 1;}if(strcmp(cmd, "/setmigla", true) == 0){if(IsPlayerInAnyVehicle(playerid)){tmp = strtok(cmdtext, idx);if(!strlen(tmp)){SendClientMessage(playerid, COLOR_WHITE, "Введите: /setmigla [X] [Y] [Z]");return 1;}tmp = strtok(cmdtext, idx);new koordx;koordx = strval(tmp);tmp = strtok(cmdtext, idx);new koordy;koordy = strval(tmp);tmp = strtok(cmdtext, idx);new koordz;koordz = strval(tmp);new cars = GetPlayerVehicleID(playerid);DestroyObject(migalka[cars]);new carid = GetPlayerVehicleID(playerid);migalka[cars] = CreateObject(18646,0,0,0,0,0,0,0.0);AttachObjectToVehicle(migalka[cars],carid,koordx,koordy,koordz, 0.0, 0.0, 0.0);return 1;}} вот собственно и все , в следующее версий если буду делать то сделаю , сохранение статуса мигалки , то есть если вы включили и произошел рестарт то она будет создана после рестарта и включена как и было и также аналагично выключена. И еще сохранение места позиций , ну а пока вот держите.Автор: Я( Komendant) P.s в следующее версий оптимизирую некоторые стоки и коды.
  25. TrollFace

    Система больницы.

    Здравствуйте, дорогие пользователи портала! Видел очень много уроков по системе "больничных коек", но ни один из них толковым не был. Итак, начнем! Писаться будет на MxINI, так же в помощь будет взят inc и pl CRP поэтому, у кого нет, пишем: #include <MxINI>//в начало мода, подключит инклуд для записи в файл#include <CRP>//русификатор текстдравов и еще много чегоТак же через server.cfg необходимо подключить плагин CRP. Далее. Нам ведь нужно куда-то записывать значение оставшегося времени? Верно. Поэтому в enum pInfo добавим pBolTime,pBolТам, где у вас в моде расположено сохранение аккаунтов, добавляем строчку: ini_setInteger(iniFile,"BolTime", PlayerInfo[i][pBolTime]);//вместо i может быть playerid и т.п.Это запись в файл новой переменной. Идем далее - разберемся с выгрузкой. Там, где у Вас в моде расположена загрузка аккаунта из файла, добавляем следующее: ini_getInteger(iniFile,"BolTime", PlayerInfo[playerid][pBolTime]);Это загрузка переменной при входе игрока. Смысл очень прост: если переменная больше нуля, то "сажаем" игрока в больницу на время, равное этой переменной. Теперь, пожалуй, создадим текстдрав оставшегося времени: 1. Объявим переменную: new Text:Bol[MAX_PLAYERS];2. Создадим сам текстдрав в OnPlayerConnect: Bol[playerid] = TextDrawCreate(273.000000, 423.000000, "Ostalos: %d");//текстдрав с координатамиTextDrawAlignment(Bol[playerid], 2);TextDrawBackgroundColor(Bol[playerid], 255);TextDrawFont(Bol[playerid], 3);//обводкаTextDrawLetterSize(Bol[playerid], 0.639999, 2.000000);//размерTextDrawColor(Bol[playerid], -65281);//цветTextDrawSetOutline(Bol[playerid], 1);TextDrawSetProportional(Bol[playerid], 1);Идем далее. Сделаем так, что игрок будет "посажен" при смерти. В этом нам поможет public OnPlayerDeath. Вставляем код следующего вида: PlayerInfo[playerid][pBol] = 1;PlayerInfo[playerid][pBolTime] = 180;//время, в секундах, сколько игроку лежать в больниеSetPlayerPos(playerid, x, y, z);//изменение позиции, координаты ставим своиSendClientMessage(playerid, COLOR_RED, "Вы попали в больницу.");//выводим сообщениеTextDrawShowForPlayer(playerid, Bol[playerid]);//показываем текстдравИтак. Теперь переходим к самой главной части - секундный каллбэк. Вo многих модах он называется SetPlayerUnjail. Вставляем туда следующее(после цикла на всех игроков): new string4[64];if(PlayerInfo[i][pBol] >= 1){if(PlayerInfo[i][pBolTime] >= 1)//если время еще осталось, то:{PlayerInfo[i][pBolTime] = PlayerInfo[i][pBolTime] - 1;//отнимем 1 секундуformat(string4, sizeof(string4), "Осталось: %d", PlayerInfo[i][pBolTime]);//отформатируем текстдравTextDrawSetString(Bol[i], string4);//обновим текстдрав}else if(PlayerInfo[i][pBolTime] <= 0)//если время прошло{SendClientMessage(i,COLOR_DARK,"Вас выписали из больницы");//отправим сообщениеSetPlayerPos(i, -1705.599609375, -2806.69921875, 13.89);//изменим координаты, делайте своиSetPlayerInterior(i,0);TextDrawHideForPlayer(i, Bol[i]);//скроем текстдрав}}А как быть с тем, если игрок перезайдет? В public OnPlayerSpawn( или же SetPlayerSpawn ): if(PlayerInfo[playerid][pBolTime] >= 1){SendClientMessage(playerid,COLOR_LIGHTBLUE,"Вы находитесь в больнице");TextDrawShowForPlayer(playerid, Bol[playerid]);//покажем текстдравSetPlayerPos(playerid,-1817.8000488281,-2858.3999023438,13.89);// свои координатыPlayerInfo[playerid][pBol] = 1;return 1;}И еще - скрины: Удачи.
×

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

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