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

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

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

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

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

Тип контента


Форумы

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

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

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


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

  • Начало

    Конец


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

  • Начало

    Конец


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

Найдено: 2,041 результат

  1. Всем привет вообщем. Я решил написать еще один способ защитить сервер паролем (в этом случае не используется /rcon password и т.д. ). Вот сам код: 1. Это в OnPlayerConnect ShowPlayerDialog(playerid,777,DIALOG_STYLE_INPUT,"Введите пароль сервера","Введите пароль для доступа к серверу","ОК","Отмена"); 2. Это в OnDialogResponse if(dialogid == 777){if(response){if(!strlen(inputtext)){SendClientMessage(playerid,-1,"Вы не ввели пароль сервера и будете кикнуты!");Kick(playerid);return 1;}else{new serverpass[15];serverpass = "1111";if(strcmp(inputtext, serverpass) == 0) {SendClientMessage(playerid, -1, "Вы ввели верный пароль сервера!"); }else {SendClientMessage(playerid, -1, "Вы забанены за попытку взлома сервера (подбор пароля)");BanEx(playerid, "Подбор пароля сервера"); }}}else {SendClientMessage(playerid, -1, "Вы нажали кнопку Отмена и будете кикнуты!");Kick(playerid); }} Что изменить под себя: 1. Самое главное: пароль. Он меняется в строке serverpass = "1111"; 2. При необходимости: ID диалога. В данном случае 777 3. При попытке подбора пароля в моем случае банит. Действие можно изменить, изменив (или удалив) строку BanEx(playerid, "Подбор пароля сервера"); 4. Ну и цветовую гамму и текст, это на Ваш выбор :) Такой способ можно использовать для троллинга (к примеру). Пример: Игрок видит сервер с супер модом, который открыт. Заходит, и тут вылазиет окно ввода пароля. Он наберет что нибудь, и если пароль неправильный, его банит. В любом случае - дело ваше! Автор: Max_Mister
  2. Скрипт смены погоды в диалоговом окне Чтобы вызвать диалоговое окно нужно просто ввести команду и вам вылезет диалоговый список.
  3. Команда: else if(strcmp(cmd, "/uninvite", true) == 0) { new para1; new Leader; new Member; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "{DDA0DD} >> Введите{FFFFFF}: /uninvite [id] [причина]"); para1 = ReturnUser(tmp); Leader = PlayerInfo[playerid][pLeader]; Member = PlayerInfo[para1][pMember]; if(PlayerInfo[playerid][pLeader] >= 1) { if(IsPlayerConnected(para1)) { if(Leader == Member) { if(para1 != INVALID_PLAYER_ID) { 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(result)) return SendClientMessage(playerid, COLOR_WHITE, "{DDA0DD} >> Введите{FFFFFF}: /uninvite [id] [причина]"); if(para1 == playerid)return SendClientMessage(playerid, COLOR_GREY, "{DB7093} [ошибка]: {D3D3D3} Это ваш ID"); if(PlayerInfo[para1][pLeader] >= 1)return SendClientMessage(playerid, COLOR_GREY, "{DB7093} [ошибка]: {D3D3D3} Это ID лидера"); GetPlayerName(para1, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "Вы выгнали %s Причина: {63B8FF}%s", giveplayer, (result)); SendClientMessage(playerid, 0x6495EDFF, string); format(string, sizeof(string), "%s Выгнал вас. Причина: {63B8FF}%s", sendername, (result)); SendClientMessage(para1, 0x6495EDFF, string); SendClientMessage(para1, COLOR_WHITE, "Теперь ты снова безработный..."); PlayerInfo[para1][pMember] = 0; PlayerInfo[para1][pLeader] = 0; PlayerInfo[para1][pRank] = 0; SetPlayerInterior(para1, 0); PlayerInfo[para1][pInt] = 0; SetPlayerArmorAC(para1,0); Delgun(para1); ResetPlayerWeapons(para1); SpawnPlayer(para1); OnPlayerUpdateRL(para1); } return true; } return true; } return true; } return true; } Для новичков которые не умеют делать пойдет.
  4. SNEEX

    Донат Система

    Хочу представить вашему вниманию систему доната,многие ищут. Приступим! добавляем команду: else if(strcmp(cmd, "/givedonate", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /givedonate [ид] [сумма]"); new playa; new money; playa = ReturnUser(tmp); tmp = strtok(cmdtext, idx); money = strval(tmp); if (PlayerInfo[playerid][pAdmin] >= 7) { if(IsPlayerConnected(playa)) { if(playa != INVALID_PLAYER_ID) { GetPlayerName(playa, sendername, sizeof(sendername)); format(string, sizeof(string), " %d доната игроку %s", money,sendername); SendClientMessage(playerid, COLOR_BLUE, string); PlayerInfo[playa][pDonatemoney] += money; format(string, sizeof(string), "Администратор выдал вам: %d доната", money); SendClientMessage(playa, COLOR_YELLOW, string); } } } else { SendClientMessage(playerid, COLOR_RED, "Вы не уполномочены использовать эту команду!"); } return 1; } else if(strcmp(cmd, "/donate", true) == 0) { new donate[70]; format(donate,70, "{ffffff}У вас {ff0000}%d{ffffff} Donate",PlayerInfo[playerid][pDonatemoney]); ShowPlayerDialog(playerid, 2984, DIALOG_STYLE_LIST, donate, "1.Уволиться[50]n2.Снять мут[50]n3.Снять варн[150]n{ff0000}Получить админку/Пополнить донатn{ff0000}Можно в скайпе {ffffff}dontexxx", "Ok", "Cancel"); } В public OnDialogResponse: case 2984: { if(response == 1) { switch(listitem) { case 0: { if(PlayerInfo[playerid][pDonatemoney]>=50) { if(PlayerInfo[playerid][pMember] > 0 || PlayerInfo[playerid][pLeader] > 0) { PlayerInfo[playerid][pMember] = 0; PlayerInfo[playerid][pRank] = 0; PlayerInfo[playerid][pLeader] = 0; PlayerInfo[playerid][pJob] = 0; SetPlayerArmourAC(playerid,0); SpawnPlayer(playerid); PlayerInfo[playerid][pDonatemoney]-=50; SendClientMessage(playerid,COLOR_BLUE,"Вы успешно уволились из организации"); } else {SendClientMessage(playerid,COLOR_BLUE,"Вы нигде не состоите");} } else {SendClientMessage(playerid,COLOR_BLUE,"У вас нет столько доната!");} } case 1: { if(PlayerInfo[playerid][pDonatemoney]>=50) { if(PlayerInfo[playerid][pMuted] > 0) { PlayerInfo[playerid][pMuted] = 0; PlayerInfo[playerid][pMuteTime] = 0; SendClientMessage(playerid,COLOR_BLUE,"Вы сняли с себя мут"); PlayerInfo[playerid][pDonatemoney]-=50; } else {SendClientMessage(playerid,COLOR_BLUE,"У вас нет бана чата!");} } else {SendClientMessage(playerid,COLOR_BLUE,"У вас нет столько доната!");} } case 2: { if(PlayerInfo[playerid][pDonatemoney]>=150) { if(PlayerInfo[playerid][pWarns] > 0) { PlayerInfo[playerid][pWarns] --; PlayerInfo[playerid][punWarnstime] = 0; PlayerInfo[playerid][punWarns] = 0; SendClientMessage(playerid,COLOR_BLUE,"Вы сняли с себя варн"); PlayerInfo[playerid][pDonatemoney]-=50; } else {SendClientMessage(playerid,COLOR_BLUE,"У вас нет варнов!");} } else {SendClientMessage(playerid,COLOR_BLUE,"У вас нет столько доната!");} } } } } else if(strcmp(cmd, "/moneytodonate", true) == 0) { SendClientMessage(playerid,COLOR_BLUE,"Команда /moneytodonate обменивает 1кк => 100Donate"); if(PlayerInfo[playerid][pCash] >= 1000000) { PlayerInfo[playerid][pCash] -= 1000000; PlayerInfo[playerid][pDonatemoney] += 100; SendClientMessage(playerid,COLOR_BLUE,"Вы обменяли 1кк на 100 очков доната"); } else { SendClientMessage(playerid,COLOR_BLUE,"У вас нету 1кк для обмена на 100 доната"); } } else if(strcmp(cmd, "/donate", true) == 0) { SendClientMessage(playerid,COLOR_BLUE,"Команда /moneytodonate обменивает 1кк => 100Donate"); new donate[70]; format(donate,70, "{ffffff}У вас {ff0000}%d{ffffff} Donate",PlayerInfo[playerid][pDonatemoney]); ShowPlayerDialog(playerid, 2984, DIALOG_STYLE_LIST, donate, "1.Уволиться[50]n2.", "Ok", "Cancel"); } Вот собственно и все.Будут ошибки кидайте помогу исправить.Кому помог + Автор: неизвестный. Автор переделки: Я.
  5. Mikhail_Krug

    Honda CR-X 1991

    Особенности: - Собственная тень, коллизия; - Настроенная посадка игрока; - 4 покрасочных работы; - Развертка под собственные покрасочные работы; - Качественная подсветка приборов, номерного знака; - Поддержка тюнинга в Трансфендере; - Поддержка СА-цветов и СА-номеров; - Качественные настройки автомобиля; - Полные повреждения; - 3D-двигатель, багажник, пространство под бампером и под крыльями; - Хорошие настройки блика и хрома; - Качественный ре-текстур интерьера; - Мип-Маппинг текстур; - 2 Экстры. Заменяет: Blista Compact. Рекомендую заменить: Elegy
  6. Стоит у меня уже давно, вот делюсь с вами. Заменяет: Huntley
  7. Всем кому надоел стандартный автомобиль BMW X5, предлагаю этот субарик :) Все сделано очень качественно и красиво. Присутствуют и повреждения для данной модели.
  8. Этот фильтрскрипт предоставит возможность перевозить транспортные средства с помощью вертолета Cargobob (Армейский не боевой вертолет). За один раз, можно перевести только одно транспортное средство. Как работает фильтрскрипт: Вам нужно сесть в Cargobob, ввести команду /carcarrier (Включить режим перевозки), далее вы выходите из вертолета и садитесь в ТС, которое хотите перевести. Затем необходимо подъехать к вертолету и ввести команду /carload (Загрузить ТС в вертолет. ТС пропадает), после этого садитесь в вертолет и летите куда вам нужно. Чтобы разгрузить транспортное средство, нажмите ЛКМ или левый CTRL. В скрипте задействован TextDraw, который показывает состояние грузового отсека. Если на TextDraw изображен мусор - то отсек пуст, а если там изображено ТС, которое вы загрузили - то отсек полон. >> Видео << НЕ ЗАБЫВАЙТЕ СТАВИТЬ + Sho Carrier by Dinar.rar
  9. Здравствуйте дорогие пользователи GSG. Вот решил выложить cmd /restart (Рестарт сервера). Может кому понадобится. Ко всем "public" добавляем: public GameModeInitExitFunc(){ new string[128]; format(string, sizeof(string), "Рестарт Сервера."); for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { DisablePlayerCheckpoint(i); gPlayerCheckpointStatus[i] = CHECKPOINT_NONE; GameTextForPlayer(i, string, 4000, 5); SetPlayerCameraPos(i,1460.0, -1324.0, 287.2); SetPlayerCameraLookAt(i,1374.5, -1291.1, 239.0); OnPlayerUpdate(i); gPlayerLogged[i] = 0; } } SetTimer("GameModeExitFunc", 4000, 0); return 1;} Сама команда: if(strcmp(cmd, "/restart", true) == 0) { if(IsPlayerConnected(playerid)) { if (PlayerInfo[playerid][pAdmin] >= 8)//Лвл Админа который может делать рестарт { GameModeInitExitFunc(); } else { SendClientMessage(playerid, COLOR_GRAD1, "У вас нет прав для использование данной команды!"); } } return 1; } Вот и всё. Если что то забыл, пишите в тему.
  10. Очень полезный скрипт! - Простое создание работ - Множество команд - Легкое создание чекпоинтов - Легко настраиваемый скрипт - Работа сохраняется автоматически - Вы также можете сделать работу на машине - Вы сэкономите много времени - Встроеный учебник - 3Д тексты, чекпоинты, иконки Команды: /start /recent /here /check /ready /out http://rghost.ru/49284885 команды на DCMD Сохранение на MxINI Автор: Неизвестно
  11. SkRiTeX

    cmd /kill

    Здравствуйте дорогие пользователи GSG. Вот решил выложить cmd /kill. Может кому понадобится. Сама команда: if(!strcmp(cmd, "/kill", true)){if(PlayerTied[giveplayerid] == 0){SetPlayerHealth(playerid, 9);format(string, sizeof(string), " %s взял(а) нож, перерезал(а) себе вены", sendername);ApplyAnimation(playerid,"CRACK","crckdeth3",4.1,0,1,1,1,1);ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);format(string, sizeof(string), " %s потерял сознание", sendername);SetPlayerHealth(playerid,50);format(string, sizeof(string), " %s падает на землю", sendername);SetPlayerHealth(playerid,20);format(string, sizeof(string), " кровотечение ((%s))", sendername);SetPlayerHealth(playerid,0);return 1;}} Если помог ставил +. Если будут какие нибудь ошибки или подобно этому, пишите в эту тему.
  12. Радар вырезан из скрипта у нас из паблика Плюсов не прошу! Добавляем ко всем define: #define MAX_RADARS 100 #define MAX_PLAYER_RADARS 3 .................................................... Далее добавляем: enum rInfo { Float:rPos[3], rSpeed, bool:rActive, rPlayer, rObject } .................................................... Ко всем new: new RadarInfo[MAX_RADARS][rInfo]; new PlayerType[MAX_PLAYERS]; new PlayerRadars[MAX_PLAYERS]; .................................................... Добавляем forward: forward UpdatePlayersRadars(); Добавляем PublicИ public OnFilterScriptInit() { SetTimer("UpdatePlayersRadars", 1000, true); return 1; } ...................................................... public UpdatePlayersRadars() { new string[128],name[24]; for(new i; i{ if(!IsPlayerConnected(i) || GetPlayerState(i) != PLAYER_STATE_DRIVER) continue; if(PlayerType > 0) PlayerType--; for(new r; r { if(RadarInfo[r][rActive] && IsPlayerInRangeOfPoint(i, 10.0, RadarInfo[r][rPos][0], RadarInfo[r][rPos][1], RadarInfo[r][rPos][2]) && GetPlayerSpeed(i) > RadarInfo[r][rSpeed]) { GetPlayerName(i, name, 24); format(string, 128, ">>> Игрок {DEDEDE}%s{FFFFFF} привисел скорость | допустимая: {DEDEDE}%d | {FFFFFF}замечанная: {DEDEDE}%d", name, RadarInfo[r][rSpeed], GetPlayerSpeed(i)); SendClientMessage(RadarInfo[r][rPlayer], -1, string); PlayerType = 10; } } } return 1; } ...................................................... public OnFilterScriptExit() { for(new r; r{ if(RadarInfo[r][rActive]) { DestroyObject(RadarInfo[r][rObject]); PlayerRadars[RadarInfo[r][rPlayer]] = 0; } } return 1; } ...................................................... Добавляем в OnPlayerConnect: PlayerType[playerid] = 0; PlayerRadars[playerid] = 0; .................................................... Добавляем в OnPlayerCommand new string[128],cmd[256],tmp[256],idx; cmd = strtok(cmdtext, idx); if(!strcmp("/delradar", cmd, true)) { new bool:radarid; for(new r; 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; } if(!strcmp("/setradar", cmd, true)) { new radarid = -1; for(new r; 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] = CreateObject(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); PlayerRadars[playerid]++; return 1; } return 0; } ..................................................... Добавляем стоки: stock GetPlayerSpeed(playerid) { new speed,Float:POS[4]; if(!IsPlayerInAnyVehicle(playerid)) GetPlayerVelocity(playerid, POS[0], POS[1], POS[2]); else GetVehicleVelocity(GetPlayerVehicleID(playerid), POS[0], POS[1], POS[2]); POS[3] = floatsqroot(floatpower(floatabs(POS[0]), 2.0)+floatpower(floatabs(POS[1]), 2.0)+floatpower(floatabs(POS[2]), 2.0)) * 253.3; speed = floatround(POS[3])/2; return speed; } stock strtok(const string[], &index) { new length = strlen(string); while((index new offset = index,result[20]; while((index ' ') && ((index-offset) result[index-offset] = EOS; return result; }
  13. Дада это легко и т.д Выкладываю для тех кто этого не умеет, глядишь кому пригодиться :) Скрин:
  14. Начнем без вступления. Вставляем все в мод: 1. Массивы для хранения информации: new bool:aduty[MAX_PLAYERS];//Проверка, true-админ на дежурстве, false-нетnew playercolor[MAX_PLAYERS];//Массив с цветом игрока до выхода на дежурство 2. Команда. Вставлять в public OnPlayerCommandText if (strcmp("/aduty", cmdtext, true) == 0) {if(aduty[playerid] == true) {aduty[playerid] = false;SendClientMessage(playerid, 0xFFFF00AA, "Вы ушли с дежурства!"); SetPlayerColor(playerid, playercolor[playerid]);} else {if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFFF00AA, "Вы не администратор!");//Проверку ставить свою, тут проверка на RCON!!!ShowPlayerDialog(playerid, 9988, DIALOG_STYLE_INPUT, "Введите пароль","Введите пароль для выхода на дежурство","ОК","Отмена");}return true;} 3. Диалог для ввода пароля if(dialogid == 9988){if(response) //Если была нажата 1 кнопка{if(!strlen(inputtext)) //Если в поле не был введен текст при отправке{SendClientMessage(playerid,0xFFFF00AA,"Пароль не был написан!");return 1;}else{new adminpass[64] = "1111";if(strcmp(inputtext, adminpass, false) == 0) {new name[MAX_PLAYER_NAME];GetPlayerName(playerid, name, sizeof(name));new message[55];format(message, sizeof(message), "Администратор %s вышел на дежурство!", name);SendClientMessageToAll(0xFF6347AA, message);playercolor[playerid] = GetPlayerColor(playerid);SetPlayerColor(playerid, 0xFF6347AA);GivePlayerWeapon(playerid, 30, 1000);//ak47aduty[playerid] = true;}else {SendClientMessage(playerid, 0xFFFF00AA, "Пароль не верный!");Kick(playerid);}}}} Ну, вроде все :) Теперь о том, что нужно поменять! Так как я тестил это дело на симпле, менять под свой мод нужно следующее: 1. Проверка на администратора: в данном случае проверка на RCON администратора. Вы ставьте свою 2. Можете поменять выдачу оружия, или вообще ее удалить. 3. Самое главное: пароль. Меняется тут: new adminpass[64] = "1111";. 1111 меняйте на свой! 4. Ну и, если хотите, другие цвета и цветовые модификаторы Чтобы проверить администратора на дежурстве, достаточно приписать проверку: if(aduty[playerid] == false) return SendClientMessage(playerid, -1, "Вы не на дежурстве!"); Автор: Max_Mister
  15. Tourer V

    Интерьер комнаты

    Делать было нечего вот и решил сделать интерьер комнаты для народа. CreateDynamicObject(19446, 2191.89, -2288.51, 34.28, 0.00, 0.00, 0.00);CreateDynamicObject(19446, 2191.88, -2293.99, 34.28, 0.00, 0.00, 0.00);CreateDynamicObject(19446, 2196.60, -2293.58, 34.28, 0.00, 0.00, 90.00);CreateDynamicObject(19446, 2200.34, -2288.73, 34.30, 0.00, 0.00, 0.00);CreateDynamicObject(19400, 2193.35, -2283.90, 34.28, 0.00, 0.00, 90.00);CreateDynamicObject(19400, 2199.04, -2283.91, 34.28, 0.00, 0.00, 90.00);CreateDynamicObject(19354, 2195.88, -2283.90, 34.28, 0.00, 0.00, 90.00);CreateDynamicObject(19375, 2195.86, -2288.71, 32.58, 0.00, -90.00, 0.00);CreateDynamicObject(19377, 2196.63, -2288.73, 35.83, 0.00, -90.00, 0.00);CreateDynamicObject(1506, 2194.61, -2293.53, 32.61, 0.00, 0.00, 0.00);CreateDynamicObject(10174, 2196.60, -2293.12, 33.16, 0.00, 0.00, 0.00);CreateDynamicObject(10166, 2193.19, -2284.13, 33.13, 0.00, 0.00, 90.00);CreateDynamicObject(10166, 2198.94, -2284.12, 33.13, 0.00, 0.00, 90.00);CreateDynamicObject(10153, 2193.34, -2290.97, 33.89, 0.00, 0.00, -90.00);CreateDynamicObject(10152, 2194.45, -2293.39, 33.01, 0.00, 0.00, 0.00);CreateDynamicObject(10161, 2195.93, -2289.21, 35.54, 0.00, 0.00, -90.00);CreateDynamicObject(10163, 2192.18, -2286.48, 33.43, 0.00, 0.00, -90.00);CreateDynamicObject(10182, 2196.26, -2284.47, 33.10, 0.00, 0.00, 0.00);CreateDynamicObject(1725, 2198.99, -2291.41, 33.43, 0.00, 0.00, 0.00);CreateDynamicObject(10165, 2199.08, -2291.65, 33.46, 0.00, 0.00, 0.00);CreateDynamicObject(1703, 2200.02, -2288.87, 33.23, 0.00, 0.00, -90.00);CreateDynamicObject(1679, 2198.64, -2286.51, 33.23, 0.00, 0.00, -90.00);CreateDynamicObject(1751, 2196.26, -2285.47, 33.11, 0.00, 0.00, -90.00);
  16. Доброго дня. Итак, сегодня речь пойдет о контроле нанесенного игроку урона. SA:MP (а значит - и адаптации) при получении игроком урона незамедлительно запускает коллбэк OnPlayerTakeDamage, у которого есть несколько входных параметров: [*]playerid - ID игрока, которому был нанесен урон. [*]issuerid - ID игрока, который нанес урон. Если игрок пострадал от падения, взрыва и т.п. - в данный параметр будет передано значение INVALID_PLAYER_ID. [*]amount - количество нанесенного урона в виде числа с плавающей точкой. [*]weaponid - ID оружия, которым был нанесен урон, либо ID причины нанесения урона. Более подробно об этом можно прочитать в статье на SA:MP Wiki. Разбирать, как же все это работает, я предлагаю на конкретном примере. И примером таким станет написание системы нанесения ранений. Собственно, в обобщенном виде алгоритм действий будет таков: [*]Если игрок получает урон - с шансом 1 к 2 он упадет в обморок. [*]Если игрок падает в обморок - заморозить его любым доступным способом на определенное время. В примере время обморока будет выбрано случайно. [*]Если время обморока закончилось - разморозить игрока. Итак, приступим. Подключаем библиотеку a_samp. Работы в других коллбэках нам практически не нужны. Для собственной страховки в OnPlayerSpawn можно вызвать функцию ClearAnimations. Итак, первоначально - определяем время и шанс обморока. Минимальное время в моем примере - 15 секунд, максимальное - 1 минута. public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid) { new ObmorokTime = random(45)+15; new Obmorok = random (3); И в этом месте на момент написания скрипта я задумался. Есть шанс, что нанесенного урона хватит, чтобы убить игрока, однако для него уже будет вызвана анимация, что может привести к отсутствию вызова OnPlayerDeath. Проблема решилась просто и изящно - если у игрока будет менее 10 HP, скрипт просто не будет вызван. Точно также анимация будет вызвана и для водителя, что нам не нужно - такую проверку мы тоже поставим. new Float:HP; GetPlayerHealth(playerid, HP); if (HP >=10 && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) { Далее через switch проверяем, упал все-таки в обморок игрок или нет. Если упал - очищаем ему текущую анимацию, на время ObmorokTime применяем к нему анимацию и таймер для сброса этой анимации в указанное время. switch (Obmorok) { case 2: { ClearAnimations(playerid); ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.1, 0, 1, 1, 1, ObmorokTime*1000, 1); SetTimerEx ("ClearAnimation", ObmorokTime*1000, false, "d", playerid); Ну, и для большей информативности - добавим информацию ранившему и раненному. Если же раненный сам виноват - следует ввести проверку и на это. Резервируем три переменные, проверяем ID атаковавшего и в зависимости от этого выводим сообщения о ранении. new string[128], victim[MAX_PLAYER_NAME], attacker[MAX_PLAYER_NAME]; GetPlayerName(playerid, victim, sizeof (victim)); if (issuerid != INVALID_PLAYER_ID) { GetPlayerName(issuerid, attacker, sizeof (attacker)); format(string, sizeof(string), "%s ранил Вас!", attacker); SendClientMessage(playerid, 0xFF110000, string); format(string, sizeof(string), "Вы ранили %s!", victim); SendClientMessage(issuerid, 0xFF110000, string); } else { SendClientMessage(playerid, 0xFF110000, "Вы ранены!"); } } } } return 1; } За этим все! Больше от программиста не требуется ничего, скрипт будет успешно работать, что уже доказано использованием его на нашем проекте уже больше года.
  17. Oleg Caron

    [SAMP] Less Global-Rp v1.4 0.3x R2

    Описание мода от лица Автора: Всем привет. Решился вернуться к разработке моего мода, дабы улучшить его и избавить от надоедливых и назойливых багов. И так встречаем 14 версию. Что было проделано 1. Изменил некоторый текст. 2. Оптимизировал код с ЗП у фракций и изменил ЗП у фракций. 3. Удалил старые античиты RLS. 4. Полностью переписал систему домов. Теперь они работают хорошо и стабильно, и можно заплатить за дом. 5. Исправил баг со слетом аккаунтов и паролей. 6. Теперь при заходе на сервер играет музыка. 7. Сделал Ферму 0. Команды: /sellferm, /buyferm, /finfo, /ffixcar, /fpanel, /ffpanel, /funload. 8. Подкорректировал автомастерскую и исправил баг с тюнингом. 9. Сделал RMenu (/re), как на Samp-Rp. 10. Увеличил количество домов, теперь их 500. 11. Исправил баг с /members. 12. Исправил баг с PayDay. 13. Исправил баг с /giverank. 14. Исправил баг с /invite. 15. Исправил баг с /uninvite. 16. Исправил баг с ломкой. 17. Исправил баг с /gbankput. 18. Исправил баг с /unloading. 19. Исправил баг с арендой такси. 20. Исправил баг с личными авто. Раньше (Редко) писал, что транспорт принадлежит какой нибудь фракции. 21. Сервер перевел на SA:MP 0.3x R2 22. Теперь аккаунты сохраняются в папку "Users". 23. Подкорректировал /ahelp и /mm. 24. В /carm убрал разгрузку материалов бандитам и байкерам. 25. Сделал табуляцию (Код лесенкой). 26. Вернул старый /animlist. 27. Еще немного снял нагрузку с мода, были лишние функции и таймеры. 28. Сделал маскировку для ФБР /spy. 29. Добавил новые проверки к команде /capture. 30. Изменил меню /tp. 1. LSPD2. FBI3. SFa4. Medics SF5. LCN6. Yacuza7. Мэрия8. Street Racers9. SF News10. SFPD11. Инструкторы12. Ballas13. Vagos14. RM15. Grove16. LS News17. Aztecs18. Rifa19. LVa20. LV News21. LVPD22. Medics LS23. Байкеры24. Medics LV25. Хитманы26. LSa27. Машинисты Авторы данного мода:Vano_Glad и Taran212 Скачать с Яндекс.Дисk
  18. Идея - из паблика, координаты приаттаченных объектов - из паблика, реализация в коде - полностью моя. Вкратце - на форуме уже проскальзывал недоФС фонаря. Когда было желание реализовать что-то необычное - начал пилить код. Но идея себя исчерпала, код (по крайней мере, пока) уже не особо нужен - не пропадать же добру. Две основных управляющих команды: - /flon - включает фонарь, если он выключен, и меняет режим дальности освещения, если уже включен. - /floff - выключает фонарь.
  19. if(strcmp(cmd, "/nomerrus", true) == 0) { new str[128]; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Используйте: /nomer [ид игрока]"); new tmpp=ReturnUser(tmp); if(IsPlayerConnected(tmpp)) { if(!IsPlayerInAnyVehicle(tmpp)) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Игрок Не в Автомобиле"); new carid = GetPlayerVehicleID(tmpp); if(GetRealID(carid) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Игрок Должен быть в Своём Автомобиле"); if(strcmp(Name(tmpp),CarInfo[GetRealID(carid)][cOwner],true) != 0) return SendClientMessage(playerid, COLOR_ISPOLZUY, "Автомобиль не принадлежит игроку"); if(gTeam[playerid] == 1 || IsACop(playerid)) { if(!CarLabel[carid]) { } else Delete3DTextLabel(CarLabel[carid]); format(CarInfo[GetRealID(carid)][cNumber],64,"{FFFFFF}%s{FFFFFF}%d%d%d{FFFFFF}%s%s |{FFFFFF}R{1500FF}U{FF0000}S",randomchar(), random(9), random(9), random(9), randomchar(), randomchar(), random(9), random(9));// CarLabel[carid] = Create3DTextLabel(CarInfo[GetRealID(carid)][cNumber],0xFFFF00FF,0.0,0.0,0.0,40.0,0,1); Attach3DTextLabelToVehicle(CarLabel[carid] , carid , 0.0, 0.0, 1.1); format(str,sizeof(str),"Вам Выдали Номер %s Полицейский %s",CarInfo[GetRealID(carid)][cNumber],Name(playerid)); SendClientMessage(tmpp,-1,str); format(str,sizeof(str),"Полицейский %s Выдал Номера %s",Name(playerid),CarInfo[GetRealID(carid)][cNumber]); SendAdminMessage(0xFF0000AA,str); SaveCar(GetRealID(carid)); return true; } else return SendClientMessage(playerid, COLOR_GRAD1, "У вас нет прав на это!"); } else return SendClientMessage(playerid, COLOR_GRAD1, "Этого Игрока нет в сети"); } На ваш сервер добавит русские номера, номера выдают Полицейские
  20. Этот FS добавит на ваш сервер TextDraw, который показывает пройденный пробег автомобиля. Пробег Сохраняется Автор :Rayan_Krimmer http://rghost.ru/49161365
  21. Вообщем давно писал функцию мигалок с сохранением , продажей , покупкой , смещением позиций , подобную как на 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 в следующее версий оптимизирую некоторые стоки и коды.
  22. Sanek666

    Ксенон

    Добрый день Уважаемые Пользователи. Выкладываю вам сюда скрипт ксенон , т.к попал он ко мне еще месяцев 5 назад =) Сам скрипт был на испанском языке . Описание я думаю не буду делать все знают что такое ксенон.
  23. Rustyk

    MP3 by Miku-97

    Добавит на ваш сервер мп3шник :D Который может проигрывать несколько треков: -Don Omar-Dance Koduro -Lucenzo-Baila morena -Move-like jagger -Sum-41-Well (and something) -Paradise City -David Guetta-bag Little Girl -13 Bongiovi -Rain Over Me-Pitbull -Pitbull-I Everiday http://rghost.ru/49107571
  24. Приветствую Пользователей портала. Решил выложить переделанный братом скрипт. Собственно смысл его понятен из названия темы. Примерно дело было так:
×

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

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