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

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

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

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

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

Тип контента


Форумы

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

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

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


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

  • Начало

    Конец


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

  • Начало

    Конец


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

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

  1. Добрый день многие не знают как сделать на TextDraw действие. И так приступим. Делаем для начало сам TextDraw Далее вставляем в мод только в public OnGameModeInit() Далее создаем stock stock Show(playerid)//Открывает { TextDrawShowForPlayer(playerid, тут название переменной пишем);//Пишем все переменные созданного TextDraw return 1; } stock Close(playerid)//закрывает ТД { TextDrawHideForPlayer(playerid, тут название переменной пишем); return 1; } Далее добавляем public OnPlayerClickTextDraw(playerid,Text:clickedid) если нету public OnPlayerClickTextDraw(playerid,Text:clickedid) { if(clickedid == тут название переменной)// { ShowPlayerDialog(playerid, 7779, DIALOG_STYLE_INPUT, "Kick", "Введите причину", "Ок", "Назад");//пример CancelSelectTextDraw(playerid);//эта функция убирает возможность клика мышкой (тупо исчезает стрелка но ТД не закрывается) } if(clickedid == тут название переменной)// { //Теперь сделаем кнопку для того чтоб закрывался ТД Close(playerid);//после нажатия кнопки допустим Exit закрываются те Тд которые в этом стоке. CancelSelectTextDraw(playerid); } return 1; } Далее сделаем команду переходим public OnPlayerCommandText(playerid, cmdtext[]) if(strcmp(cmd, "/свое название кмд", true) == 0) if (PlayerInfo[playerid][pAdmin] >=4) { Show(playerid); SelectTextDraw(playerid, 0xFFFFFFFF); } Теперь сделаю пример как сделать на кнопку переходим public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if (newkeys == KEY_YES)//KEY_YES ид кнопки в нашем случае кнопка Y { Show(playerid); SelectTextDraw(playerid, 0xFFFFFFFF); } return 1; } Вроде бы все Автор Alexey_Zapekin(То есть я)
  2. CMD:roundcars(playerid,params[]) { if(sscanf(params,"dd",params[0],params[1])) return SendClientMessage(playerid,-1,"[Использование] /roundcars [ид] [радиус]"); if(params[1] < 1 || params[0] < 400 || params[0] > 611) return SendClientMessage(playerid,-1,"Неверные параметры"); new Float:Pos[3]; GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]); new Float:x,Float:y,Float:ugol; new Float:plusugol = 200.0 / params[1]; for(ugol = plusugol; ugol <= 360; ugol += plusugol) { y = params[1] * floatsin(ugol,degrees); x = y / floattan(ugol,degrees) + Pos[0]; y += Pos[1]; AddStaticVehicle(params[0],x,y,Pos[2],ugol+90,-1,-1); } return 1; } Автор: Prolific
  3. Здравствуйте. На многих серверах данная функция очень даже пригодится. Так же можно на моём примере сделать Анти-Рекламу. Автор: Я - Ко всем new: new nrpw[35][30] = { "lvl","лвл","спавн","скайп","skype", "админ","warn", "варн","администратор","читер", "читак","читы","собейт","скрипт","репорт","донат","яндекс","сайт","форум","скиллы","nonrp","нонрп","вконтакте","эрпэ","vk","скрин","офф","афк","afk","тп","samp","самп","rp","role play","payday"}; - Теперь в в public OnPlayerText for(new s; s<sizeof(nrpw); s++) { new pos; while((pos = strfind(text,nrpw[s],true)) != -1) for(new i = pos, j = pos + strlen(nrpw[s]); i < j; i++) { format(string, sizeof(string), "/b %s", text); OnPlayerCommandText(playerid,string); return false; } } - Скриншот: Не требуется сами поставите и посмотрите.
  4. Работа заключается в том, что нужно по точкам развести достаточно больше пицца, чтобы заработать большую зарплату. Ко всем define #define PizzaMoney 1000 // Цена за один чекпоинт #define PizzaTime 300 // Сколько игроку дается времени (в секундах) чтобы доставить пиццы Если нету, тоже добавить #define COLOR_LIGHTBLUE 0x33CCFFAA В глобалку new Float:PizzaCheckpoint[10][3] = { {2199.6738,-1766.1499,21.4903}, {2431.0461,-1706.7495,21.4876}, {2378.8538,-1862.7435,21.4903}, {2374.2595,-1887.1068,21.4903}, {2409.5942,-2143.4617,21.4864}, {2552.6003,-2195.3875,21.5006}, {2752.5759,-2447.5283,21.2174}, {2326.6321,-1804.7623,21.9824}, {2308.0000,-1912.1495,21.3555}, {2256.9080,-2102.9331,21.4971} }; new Pizza[2]; В public OnGameModeInit SetTimer("SecondTimes", 1000, true); Pizza[0] = AddStaticVehicleEx(448,2143.9517,-1811.9202,18.4989,0.9532,3,6,6000); AddStaticVehicleEx(448,2147.4592,-1811.8813,18.4981,1.9254,3,6,6000); AddStaticVehicleEx(448,2150.9919,-1811.8866,18.4972,359.9016,3,6,6000); AddStaticVehicleEx(448,2154.4307,-1811.8749,18.4980,1.2683,3,6,6000); AddStaticVehicleEx(448,2157.9902,-1811.8684,18.4989,1.4477,3,6,6000); AddStaticVehicleEx(448,2161.5176,-1811.8600,18.4980,1.0813,3,6,6000); Pizza[1] = AddStaticVehicleEx(448,2165.0857,-1811.8517,18.4972,359.9437,3,6,6000); В public OnPlayerCommandText if(strcmp("/job", cmdtext, true, 10) == 0) { new carid = GetPlayerVehicleID(playerid); if(GetVehicleModel(carid) == 448 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { SendClientMessage(playerid, COLOR_LIGHTBLUE, "Доставьте пиццу по указанным точкам!"); SetPlayerCheckpoint(playerid, PizzaCheckpoint[1][0], PizzaCheckpoint[1][1], PizzaCheckpoint[1][2], 2.0); SetPVarInt(playerid, "GetPlayerSkin", GetPlayerSkin(playerid)); SetPlayerSkin(playerid, 155); SetPVarInt(playerid, "PizzaTime", gettime() + PizzaTime); SetPVarInt(playerid, "PizzaCheck", 1); return 1; } return 1; } В public OnPlayerEnterCheckpoint new carid = GetPlayerVehicleID(playerid); if(GetPVarInt(playerid, "PizzaCheck") == 1 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[2][0], PizzaCheckpoint[2][1], PizzaCheckpoint[2][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 2); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } if(GetPVarInt(playerid, "PizzaCheck") == 2 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[3][0], PizzaCheckpoint[3][1], PizzaCheckpoint[3][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 3); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } if(GetPVarInt(playerid, "PizzaCheck") == 3 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[4][0], PizzaCheckpoint[4][1], PizzaCheckpoint[4][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 4); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } if(GetPVarInt(playerid, "PizzaCheck") == 4 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[5][0], PizzaCheckpoint[5][1], PizzaCheckpoint[5][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 5); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } if(GetPVarInt(playerid, "PizzaCheck") == 5 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[6][0], PizzaCheckpoint[6][1], PizzaCheckpoint[6][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 6); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } if(GetPVarInt(playerid, "PizzaCheck") == 6 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[7][0], PizzaCheckpoint[7][1], PizzaCheckpoint[7][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 7); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } if(GetPVarInt(playerid, "PizzaCheck") == 7 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[8][0], PizzaCheckpoint[8][1], PizzaCheckpoint[8][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 8); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } if(GetPVarInt(playerid, "PizzaCheck") == 8 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[9][0], PizzaCheckpoint[9][1], PizzaCheckpoint[9][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 9); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } if(GetPVarInt(playerid, "PizzaCheck") == 9 && GetPVarInt(playerid, "PizzaTime") >= 0 && carid >= Pizza[0] && carid <= Pizza[1]) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid, PizzaCheckpoint[1][0], PizzaCheckpoint[1][1], PizzaCheckpoint[1][2], 2.0); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы доставили пиццу!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); SetPVarInt(playerid, "PizzaCheck", 1); SetPVarInt(playerid, "PizzaMoney", GetPVarInt(playerid, "PizzaMoney") + PizzaMoney); return 1; } В public OnPlayerStateChange if(newstate == PLAYER_STATE_DRIVER) { new carid = GetPlayerVehicleID(playerid); if(carid >= Pizza[0] && carid <= Pizza[1]) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "Введите /job чтобы начать работу доставщика пиццы."); } И в конец мода forward SecondTimes(playerid); public SecondTimes(playerid) { if(GetPVarInt(playerid, "PizzaCheck") != 0 && GetPVarInt(playerid, "PizzaTime") <= gettime()) { new s[30]; format(s, sizeof(s), "Вы заработали %d рублей.", GetPVarInt(playerid, "PizzaMoney")); SendClientMessage(playerid, -1, s); GivePlayerMoney(playerid, GetPVarInt(playerid, "PizzaMoney")); SetPlayerSkin(playerid, GetPVarInt(playerid, "GetPlayerSkin")); DisablePlayerCheckpoint(playerid); DeletePVar(playerid, "PizzaTime"); DeletePVar(playerid, "PizzaCheck"); DeletePVar(playerid, "PizzaMoney"); DeletePVar(playerid, "GetPlayerSkin"); return 1; } return 1; } Автор: Amfy, скрипт найден в одном из GM
  5. Ко всем forward forward SaveEnters(); forward LoadEnters(); Ко всем define #define MAX_ENTERS 200 Если нету, то добавить #define COLOR_LIGHTBLUE 0x33CCFFAA #define COLOR_GREY 0xAFAFAFAA Ко всем enum или после глобальных переменных enum eInfo { eEnPickup, eExPickup, Float:eEnter_x, Float:eEnter_y, Float:eEnter_z, Float:eExit_x, Float:eExit_y, Float:eExit_z, eEnInterior, eExInterior, }; new EnterInfo[MAX_ENTERS][eInfo]; new editenter[MAX_PLAYERS]; new enterpickup[sizeof(EnterInfo)]; new exitpickup[sizeof(EnterInfo)]; В public OnGameModeInit LoadEnters(); for(new i = 0; i < sizeof(EnterInfo); i++) { if(EnterInfo[i][eEnter_x] != 0 && EnterInfo[i][eEnter_x] != 0 && EnterInfo[i][eExit_x] != 0 && EnterInfo[i][eExit_y] != 0) { enterpickup[i] = AddStaticPickup(EnterInfo[i][eEnPickup], 2, EnterInfo[i][eEnter_x], EnterInfo[i][eEnter_y], EnterInfo[i][eEnter_z], 0); exitpickup[i] = AddStaticPickup(EnterInfo[i][eExPickup], 2, EnterInfo[i][eExit_x], EnterInfo[i][eExit_y], EnterInfo[i][eExit_z], 0); } } В public OnGameModeExit for(new i = 0; i < sizeof(EnterInfo); i++) { if(EnterInfo[i][eEnter_x] != 0 && EnterInfo[i][eEnter_x] != 0 && EnterInfo[i][eExit_x] != 0 && EnterInfo[i][eExit_y] != 0) { DestroyPickup(enterpickup[i]); DestroyPickup(exitpickup[i]); } } SaveEnters(); В public OnPlayerCommandText if(strcmp(cmd,"/newenter",true)==0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Вы не администратор."); for(new i = 0; i < sizeof(EnterInfo); i++) { if(EnterInfo[i][eEnter_x] == 0 || EnterInfo[i][eEnter_y] == 0) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); EnterInfo[i][eEnter_x] = x; EnterInfo[i][eEnter_y] = y; EnterInfo[i][eEnter_z] = z; enterpickup[i] = CreatePickup(1318, 2, x, y, z); SendClientMessage(playerid, 0x33AA33FF, "* Новый вход создан. Для дальнейшего редактирования входа используйте: /editenter."); format(string, sizeof(string), "* Ид входа: %d", i); SendClientMessage(playerid, 0x33AA33FF, string); break; } } return 1; } if(strcmp(cmd,"/editenter",true)==0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFFFFFFF, "Вы не администратор."); ShowPlayerDialog(playerid, 800, 1, "Управление входом/выходом", "Введите ид входа:", "Дальше", "Отмена"); return 1; } В public OnDialogResponse if(dialogid == 800) { if(response) { new id = strval(inputtext); if(id > -1 && id < sizeof(EnterInfo)) { editenter[playerid] = id; ShowPlayerDialog(playerid, 801, 2, "Управление входом/выходом", "Установить вход дома\nУстановить выход дома\nУстановить пикап входа\nУстановить пикап выхода\nУстановить интерьер при входе\nУстновить интерьер при выходе\nУдалить вход и выход", "Выбор", "Отмена"); } else { ShowPlayerDialog(playerid, 799, 0, "Управление входом/выходом", "Неверный ид входа", "Ок", ""); } } return 1; } if(dialogid == 801) { if(response) { switch(listitem) { case 0: { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); EnterInfo[editenter[playerid]][eEnter_x] = x; EnterInfo[editenter[playerid]][eEnter_y] = y; EnterInfo[editenter[playerid]][eEnter_z] = z; EnterInfo[editenter[playerid]][eEnInterior] = GetPlayerInterior(playerid); if(EnterInfo[editenter[playerid]][eEnPickup] == 0) { EnterInfo[editenter[playerid]][eEnPickup] = 1318; } if(enterpickup[editenter[playerid]] != 0) { DestroyPickup(enterpickup[editenter[playerid]]); } enterpickup[editenter[playerid]] = CreatePickup(EnterInfo[editenter[playerid]][eEnPickup], 2, x, y, z); format(string, sizeof(string), "* Вход %d установлен.", editenter[playerid]); SendClientMessage(playerid, 0x33AA33FF, string); SaveEnters(); } case 1: { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); EnterInfo[editenter[playerid]][eExit_x] = x; EnterInfo[editenter[playerid]][eExit_y] = y; EnterInfo[editenter[playerid]][eExit_z] = z; EnterInfo[editenter[playerid]][eExInterior] = GetPlayerInterior(playerid); if(EnterInfo[editenter[playerid]][eExPickup] == 0) { EnterInfo[editenter[playerid]][eExPickup] = 1318; } if(exitpickup[editenter[playerid]] != 0) { DestroyPickup(exitpickup[editenter[playerid]]); } exitpickup[editenter[playerid]] = CreatePickup(EnterInfo[editenter[playerid]][eExPickup], 2, x, y, z); format(string, sizeof(string), "* Выход %d установлен.", editenter[playerid]); SendClientMessage(playerid, 0x33AA33FF, string); SaveEnters(); } case 2: { ShowPlayerDialog(playerid, 802, 1, "Управление входом/выходом", "Введите ид пикапа входа", "Ок", "Отмена"); } case 3: { ShowPlayerDialog(playerid, 803, 1, "Управление входом/выходом", "Введите ид пикапа выхода", "Ок", "Отмена"); } case 4: { ShowPlayerDialog(playerid, 805, 1, "Управление входом/выходом", "Введите интерьер при входе", "Ок", "Отмена"); } case 5: { ShowPlayerDialog(playerid, 806, 1, "Управление входом/выходом", "Введите интерьер при выходе", "Ок", "Отмена"); } case 6: { format(string, sizeof(string), "Вы действительно хотите удалить вход и выход под идом %d?", editenter[playerid]); ShowPlayerDialog(playerid, 804, 0, "Управление входом/выходом", string, "Да", "Нет"); } } } return 1; } if(dialogid == 802) { if(response) { new newid = strval(inputtext); if(newid > 0) { EnterInfo[editenter[playerid]][eEnPickup] = newid; if(enterpickup[editenter[playerid]] != 0) { DestroyPickup(enterpickup[editenter[playerid]]); } enterpickup[editenter[playerid]] = CreatePickup(newid, 2, EnterInfo[editenter[playerid]][eEnter_x], EnterInfo[editenter[playerid]][eEnter_y], EnterInfo[editenter[playerid]][eEnter_z]); format(string, sizeof(string), "* Пикап входа %d установлен: %d.", editenter[playerid], newid); SendClientMessage(playerid, 0x33AA33FF, string); SaveEnters(); } else { ShowPlayerDialog(playerid, 799, 0, "Управление входом/выходом", "Неверный ид пикапа", "Ок", ""); } } return 1; } if(dialogid == 803) { if(response) { new newid = strval(inputtext); if(newid > 0) { EnterInfo[editenter[playerid]][eExPickup] = newid; if(exitpickup[editenter[playerid]] != 0) { DestroyPickup(exitpickup[editenter[playerid]]); } exitpickup[editenter[playerid]] = CreatePickup(newid, 2, EnterInfo[editenter[playerid]][eExit_x], EnterInfo[editenter[playerid]][eExit_y], EnterInfo[editenter[playerid]][eExit_z]); format(string, sizeof(string), "* Пикап выхода %d установлен: %d.", editenter[playerid], newid); SendClientMessage(playerid, 0x33AA33FF, string); SaveEnters(); } else { ShowPlayerDialog(playerid, 799, 0, "Управление входом/выходом", "Неверный ид пикапа", "Ок", ""); } } return 1; } if(dialogid == 805) { if(response) { new inter = strval(inputtext); EnterInfo[editenter[playerid]][eEnInterior] = inter; format(string, sizeof(string), "* Интерьер входа %d установлен: %d.", editenter[playerid], inter); SendClientMessage(playerid, 0x33AA33FF, string); SaveEnters(); } return 1; } if(dialogid == 806) { if(response) { new inter = strval(inputtext); EnterInfo[editenter[playerid]][eExInterior] = inter; format(string, sizeof(string), "* Интерьер выхода %d установлен: %d.", editenter[playerid], inter); SendClientMessage(playerid, 0x33AA33FF, string); SaveEnters(); } return 1; } if(dialogid == 804) { if(response) { EnterInfo[editenter[playerid]][eEnter_x] = 0; EnterInfo[editenter[playerid]][eEnter_y] = 0; EnterInfo[editenter[playerid]][eEnter_z] = 0; EnterInfo[editenter[playerid]][eExit_x] = 0; EnterInfo[editenter[playerid]][eExit_y] = 0; EnterInfo[editenter[playerid]][eExit_z] = 0; EnterInfo[editenter[playerid]][eEnPickup] = 0; EnterInfo[editenter[playerid]][eEnPickup] = 0; if(enterpickup[editenter[playerid]] != 0) { DestroyPickup(enterpickup[editenter[playerid]]); } if(exitpickup[editenter[playerid]] != 0) { DestroyPickup(exitpickup[editenter[playerid]]); } format(string, sizeof(string), "Вход и выход под идом %d удален", editenter[playerid]); ShowPlayerDialog(playerid, 799, 0, "Управление входом/выходом", string, "Ок", ""); SaveEnters(); return 1; } } В public OnPlayerKeyStateChange if(newkeys == 1024) { for(new i = 0; i < sizeof(EnterInfo); i++) { if(IsPlayerInRangeOfPoint(playerid, 1.0, EnterInfo[i][eEnter_x], EnterInfo[i][eEnter_y], EnterInfo[i][eEnter_z])) { SetPlayerInterior(playerid, EnterInfo[i][eEnInterior]); SetPlayerPos(playerid, EnterInfo[i][eExit_x], EnterInfo[i][eExit_y], EnterInfo[i][eExit_z]); break; } else if(IsPlayerInRangeOfPoint(playerid, 1.0, EnterInfo[i][eExit_x], EnterInfo[i][eExit_y], EnterInfo[i][eExit_z])) { SetPlayerInterior(playerid, EnterInfo[i][eExInterior]); SetPlayerPos(playerid, EnterInfo[i][eEnter_x], EnterInfo[i][eEnter_y], EnterInfo[i][eEnter_z]); break; } } } В конец мода public LoadEnters() { new arrCoords[10][64]; new strFromFile2[256]; new File: file = fopen("enters.cfg", io_read); if (file) { new idx; while (idx < sizeof(EnterInfo)) { fread(file, strFromFile2); split(strFromFile2, arrCoords, '|'); EnterInfo[idx][eEnPickup] = strval(arrCoords[0]); EnterInfo[idx][eExPickup] = strval(arrCoords[1]); EnterInfo[idx][eEnter_x] = floatstr(arrCoords[2]); EnterInfo[idx][eEnter_y] = floatstr(arrCoords[3]); EnterInfo[idx][eEnter_z] = floatstr(arrCoords[4]); EnterInfo[idx][eExit_x] = floatstr(arrCoords[5]); EnterInfo[idx][eExit_y] = floatstr(arrCoords[6]); EnterInfo[idx][eExit_z] = floatstr(arrCoords[7]); EnterInfo[idx][eEnInterior] = strval(arrCoords[8]); EnterInfo[idx][eExInterior] = strval(arrCoords[9]); idx++; } fclose(file); } return 1; } public SaveEnters() { new idx; new File: file2; while (idx < sizeof(EnterInfo)) { new coordsstring[256]; format(coordsstring, sizeof(coordsstring), "%d|%d|%f|%f|%f|%f|%f|%f|%d|%d\n", EnterInfo[idx][eEnPickup], EnterInfo[idx][eExPickup], EnterInfo[idx][eEnter_x], EnterInfo[idx][eEnter_y], EnterInfo[idx][eEnter_z], EnterInfo[idx][eExit_x], EnterInfo[idx][eExit_y], EnterInfo[idx][eExit_z], EnterInfo[idx][eEnInterior], EnterInfo[idx][eExInterior]); if(idx == 0) { file2 = fopen("enters.cfg", io_write); } else { file2 = fopen("enters.cfg", io_append); } fwrite(file2, coordsstring); idx++; fclose(file2); } return 1; } P.S: ServerUnknown вывелось из-за неверной команды) Автор: Calipso
  6. Smolin

    Laser Pointer

    Лазерный целеуказатель на М4, SMG, АК-47, 9mm с глушителем, Combat Shotgun и Sniper Rifle Особенности лазерного целеуказателя: - вы можете изменить цвет лазера. - лазер видет себя так же, если вы присядите. - лазер точно крепится на оружие. - лазер автоматически исчезает, если вы не держите нужное оружие. - лазер автоматически исчезает, если вы садитесь в автомобиль. - лазер автоматически исчезает, если вы плаваете в воде. Команды: /laseron - включить лазерный целеуказатель /laseroff - отключить лазерный целеуказатель /lasercol - изменить цвет лазерного целеуказателя, цвета: red (красный, по умолчанию), green (зеленый), yellow (желтый), blue (синий), pink (розовый), orange (оранжевый). В public OnGameModeInit new p = GetMaxPlayers(); for (new i=0; i < p; i++) { SetPVarInt(i, "laser", 0); SetPVarInt(i, "color", 18643); } В public OnGameModeExit new p = GetMaxPlayers(); for (new i=0; i < p; i++) { SetPVarInt(i, "laser", 0); RemovePlayerAttachedObject(i, 0); } В public OnPlayerConnect SetPVarInt(playerid, "laser", 0); SetPVarInt(playerid, "color", 18643); В public OnPlayerDisconnect SetPVarInt(playerid, "laser", 0); RemovePlayerAttachedObject(playerid, 0); В public OnPlayerCommandText if (!strcmp("/laseron", cmdtext, true)) { SetPVarInt(playerid, "laser", 1), SetPVarInt(playerid, "color", GetPVarInt(playerid, "color")); return true; } if (!strcmp("/laseroff", cmdtext, true)) { SetPVarInt(playerid, "laser", 0), RemovePlayerAttachedObject(playerid, 0); return true; } if (!strcmp("/lasercol", cmd, true)) { new tmp[256]; tmp = strtok(cmdtext, idx); if (!strlen(tmp)) return SendClientMessage(playerid, -1, "Подсказка: /lasercol [color]"); if (!strcmp(tmp, "red", true)) SetPVarInt(playerid, "color", 18643); else if (!strcmp(tmp, "blue", true)) SetPVarInt(playerid, "color", 19080); else if (!strcmp(tmp, "pink", true)) SetPVarInt(playerid, "color", 19081); else if (!strcmp(tmp, "orange", true)) SetPVarInt(playerid, "color", 19082); else if (!strcmp(tmp, "green", true)) SetPVarInt(playerid, "color", 19083); else if (!strcmp(tmp, "yellow", true)) SetPVarInt(playerid, "color", 19084); else SendClientMessage(playerid, 0x00E800FF, "Colour not available!"); return 1; } В public OnPlayerUpdate if (GetPVarInt(playerid, "laser")) { RemovePlayerAttachedObject(playerid, 0); if ((IsPlayerInAnyVehicle(playerid)) || (IsPlayerInWater(playerid))) return 1; switch (GetPlayerWeapon(playerid)) { case 23: { if (IsPlayerAiming(playerid)) { if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.108249, 0.030232, 0.118051, 1.468254, 350.512573, 364.284240); } else { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.108249, 0.030232, 0.118051, 1.468254, 349.862579, 364.784240); } } else { if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.078248, 0.027239, 0.113051, -11.131746, 350.602722, 362.384216); } else { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.078248, 0.027239, 0.113051, -11.131746, 350.602722, 362.384216); } } } case 27: { if (IsPlayerAiming(playerid)) { if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.588246, -0.022766, 0.138052, -11.531745, 347.712585, 352.784271); } else { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.588246, -0.022766, 0.138052, 1.468254, 350.712585, 352.784271); } } else { if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.563249, -0.01976, 0.134051, -11.131746, 351.602722, 351.384216); } else { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.563249, -0.01976, 0.134051, -11.131746, 351.602722, 351.384216); } } } case 30: { if (IsPlayerAiming(playerid)) { if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.628249, -0.027766, 0.078052, -6.621746, 352.552642, 355.084289); } else { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.628249, -0.027766, 0.078052, -1.621746, 356.202667, 355.084289); } } else { if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.663249, -0.02976, 0.080051, -11.131746, 358.302734, 353.384216); } else { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.663249, -0.02976, 0.080051, -11.131746, 358.302734, 353.384216); } } } case 31: { if (IsPlayerAiming(playerid)) { if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.528249, -0.020266, 0.068052, -6.621746, 352.552642, 355.084289); } else { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.528249, -0.020266, 0.068052, -1.621746, 356.202667, 355.084289); } } else { if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.503249, -0.02376, 0.065051, -11.131746, 357.302734, 354.484222); } else { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.503249, -0.02376, 0.065051, -11.131746, 357.302734, 354.484222); } } } case 34: { if (IsPlayerAiming(playerid)) { return 1; } else { if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.658248, -0.03276, 0.133051, -11.631746, 355.302673, 353.584259); } else { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.658248, -0.03276, 0.133051, -11.631746, 355.302673, 353.584259); } } } case 29: { if (IsPlayerAiming(playerid)) { if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.298249, -0.02776, 0.158052, -11.631746, 359.302673, 357.584259); } else { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.298249, -0.02776, 0.158052, 8.368253, 358.302673, 352.584259); } } else { if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.293249, -0.027759, 0.195051, -12.131746, 354.302734, 352.484222); } else { SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, 0.293249, -0.027759, 0.195051, -12.131746, 354.302734, 352.484222); } } } } } В конец мода stock IsPlayerInWater(playerid) { new anim = GetPlayerAnimationIndex(playerid); if (((anim >= 1538) && (anim <= 1542)) || (anim == 1544) || (anim == 1250) || (anim == 1062)) return 1; return 0; } stock IsPlayerAiming(playerid) { new anim = GetPlayerAnimationIndex(playerid); if (((anim >= 1160) && (anim <= 1163)) || (anim == 1167) || (anim == 1365) || (anim == 1643) || (anim == 1453) || (anim == 220)) return 1; return 0; } Автор неизвестен.
  7. Ко всем new new Text:LineSpeed[MAX_PLAYERS] = {Text:INVALID_TEXT_DRAW, ...}; new Text:SpeedT[MAX_PLAYERS] = {Text:INVALID_TEXT_DRAW, ...}; new Speedo[MAX_PLAYERS]; В public OnPlayerUpdate new speedstring[32]; new strings[15]; if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { ShowSpeedTextDraw(playerid); Speedo[playerid] = GetPlayerSpeedEx(playerid); format(strings, sizeof strings, "SPEED: %d", Speedo[playerid]), TextDrawSetString(SpeedT[playerid], strings); switch(Speedo[playerid]) { case 0.. 9: format(speedstring, sizeof speedstring, " "); case 10.. 20: format(speedstring, sizeof speedstring, "~g~l"); case 21.. 30: format(speedstring, sizeof speedstring, "~g~ll"); case 31.. 40: format(speedstring, sizeof speedstring, "~g~lll"); case 41.. 50: format(speedstring, sizeof speedstring, "~g~llll"); case 51.. 60: format(speedstring, sizeof speedstring, "~g~lllll"); case 61.. 70: format(speedstring, sizeof speedstring, "~y~llllll"); case 71.. 80: format(speedstring, sizeof speedstring, "~y~lllllll"); case 81.. 90: format(speedstring, sizeof speedstring, "~y~llllllll"); case 91.. 100: format(speedstring, sizeof speedstring, "~y~lllllllll"); case 101.. 110: format(speedstring, sizeof speedstring, "~y~llllllllll"); case 111.. 120: format(speedstring, sizeof speedstring, "~r~lllllllllll"); case 121.. 130: format(speedstring, sizeof speedstring, "~r~llllllllllll"); case 131.. 140: format(speedstring, sizeof speedstring, "~r~lllllllllllll"); case 141.. 150: format(speedstring, sizeof speedstring, "~r~llllllllllllll"); case 151.. 160: format(speedstring, sizeof speedstring, "~r~lllllllllllllll"); case 161.. 170: format(speedstring, sizeof speedstring, "~r~llllllllllllllll"); default: format(speedstring, sizeof speedstring, "~r~lllllllllllllllll"); } TextDrawSetString(LineSpeed[playerid], speedstring); } else HideSpeedTextDraw(playerid); В конец мода stock ShowSpeedTextDraw(playerid) { if(SpeedT[playerid] == Text:INVALID_TEXT_DRAW) { SpeedT[playerid] = TextDrawCreate(501.000000,399.000000,"SPEED"); TextDrawUseBox(SpeedT[playerid],1); TextDrawBoxColor(SpeedT[playerid],0x00000033); TextDrawTextSize(SpeedT[playerid],606.000000,-22.000000); TextDrawAlignment(SpeedT[playerid],0); TextDrawBackgroundColor(SpeedT[playerid],0x000000ff); TextDrawFont(SpeedT[playerid],2); TextDrawLetterSize(SpeedT[playerid],0.200000,1.199999); TextDrawColor(SpeedT[playerid],0xffffffff); TextDrawSetProportional(SpeedT[playerid],1); TextDrawSetShadow(SpeedT[playerid],0); LineSpeed[playerid] = TextDrawCreate(559.000000,397.000000,"l"); TextDrawAlignment(LineSpeed[playerid],0); TextDrawBackgroundColor(LineSpeed[playerid],0x000000ff); TextDrawFont(LineSpeed[playerid],1); TextDrawLetterSize(LineSpeed[playerid],0.299999,1.600000); TextDrawColor(LineSpeed[playerid],0xffffffff); TextDrawSetProportional(LineSpeed[playerid],1); TextDrawSetShadow(LineSpeed[playerid],0); } TextDrawShowForPlayer(playerid, SpeedT[playerid]); TextDrawShowForPlayer(playerid, LineSpeed[playerid]); return true; } stock GetPlayerSpeedEx(playerid) { new Float:x, Float:y, Float:z; if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z); return floatround(floatsqroot(x*x+y*y+z*z)*100); } stock HideSpeedTextDraw(playerid) { if(SpeedT[playerid] != Text:INVALID_TEXT_DRAW) { TextDrawHideForPlayer(playerid,SpeedT[playerid]); TextDrawDestroy(SpeedT[playerid]); SpeedT[playerid] = Text:INVALID_TEXT_DRAW; TextDrawHideForPlayer(playerid,LineSpeed[playerid]); TextDrawDestroy(LineSpeed[playerid]); LineSpeed[playerid] = Text:INVALID_TEXT_DRAW; } return 1; }
  8. https://www.youtube.com/watch?v=lL3Bw-tNOqM&feature=youtu.be #define MAX_PROCESS 9000//процесс раскраски, меньше процесс - быстрее раскрашивается #define Radius 4//радиус в котором машины будут раскрашиваться #define YAHOOO 0.42 #define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) #define RELEASED(%0) (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0))) new TimerP; new Process[MAX_PLAYERS][MAX_VEHICLES]; new ColorBallon[MAX_PLAYERS] = 3; В public OnPlayerCommandText if (strcmp("/балончик", cmdtext, true, 10) == 0)return ShowPlayerDialog(playerid,9975,2,"Выберите цвет балончика. \nБалончик стоит 1000$","Красный\nСиний\nЗеленый\nЖёлтый\nЧёрный\nРозовый","Выбрать","Отменить"); В public OnDialogResponse if(dialogid == 9975) { if(!response)return 1; if(GetPlayerMoney(playerid) < 1000)return SendClientMessage(playerid,-1,"Нехватает денег!"); switch(listitem) { case 0:ColorBallon[playerid] = 3; case 1:ColorBallon[playerid] = 106; case 2:ColorBallon[playerid] = 86; case 3:ColorBallon[playerid] = 6; case 4:ColorBallon[playerid] = 0; case 5:ColorBallon[playerid] = 126; } for(new v; v < MAX_VEHICLES; v++)Process[playerid][v] = 0; GivePlayerMoney(playerid,-1000); GivePlayerWeapon(playerid,41,1000); SendClientMessage(playerid,-1,"Вы успешно купили балончик за 1000$"); } В public OnPlayerKeyStateChange if(PRESSED(KEY_FIRE) && GetPlayerWeapon(playerid) == 41) { TimerP = SetTimerEx("Raskraska",30,1,"d",playerid); } if(RELEASED(KEY_FIRE)) { KillTimer(TimerP); } В конец мода forward Raskraska(playerid); public Raskraska(playerid) { new Float: P[3]; GetPlayerPos(playerid,P[0],P[1],P[2]); for(new v; v < MAX_VEHICLES; v++) { if((GetVehicleDistanceFromPoint(v,P[0],P[1],P[2])<= Radius) && Process[playerid][v] < MAX_PROCESS) { if(IsPlayerAimingVehicle(playerid, v)) { Process[playerid][v] += 100; if(Process[playerid][v] >= MAX_PROCESS)ChangeVehicleColor(v,ColorBallon[playerid],ColorBallon[playerid]); } } } return 1; } Так же в конец мода stock IsPlayerAimingVehicle(playerid, vehicleid) { new Float:X1, Float:Y1, Float:Z1, Float:X2, Float:Y2, Float:Z2; GetPlayerPos(playerid, X1, Y1, Z1); GetVehiclePos(vehicleid, X2, Y2, Z2); new Float:Distance = floatsqroot(floatpower(floatabs(X1-X2), 2) + floatpower(floatabs(Y1-Y2), 2)); if(Distance < 350) { new Float:A; GetPlayerFacingAngle(playerid, A); X1 += (Distance * floatsin(-A, degrees)); Y1 += (Distance * floatcos(-A, degrees)); Distance = floatsqroot(floatpower(floatabs(X1-X2), 2) + floatpower(floatabs(Y1-Y2), 2)); if(Distance < YAHOOO )return true; } return false; } Автор: Netflashman
  9. Smolin

    Система AFK 1.0

    Описание: С помощью этой системы можно ограничить время бездействия игрока. Также просто просматривать время бездействия игрока. Введя команду /setafk - можно получить меню настроек, где можно настроить время определения AFK (время определения - время, через которое, над головой игрока появляется 3D Text о том, что игрок находится в AFK). Также можно включить/выключить кик за долгое AFK. Время кика Вы можете также настроить, введя команду/setafk. При первом запуске скрипта - в папке scriptfiles создастся файл "OP_AFK_Dostup.cfg". В этом файле, через переход на другую строку, можно прописывать ники игроков, кому разрешён доступ к изменению режимов AFK. Команды: /setafk - получить меню настроек AFK. /afkon или /afkoff - включить/выключить систему AFK. #define DAFK 1360 #define COLOR_WHITE 0xFFFFFFFF new afkoprtime = 120, bool:afkkick,afktime[MAX_PLAYERS],afkmaxtime = 1800, bool:afksystem = true; В public OnGameModeInit new File:_File_Open = fopen("OP_AFK_Dostup.cfg", io_read); if(_File_Open) fclose(_File_Open); else { new File:_File_Create = fopen("OP_AFK_Dostup.cfg", io_write); fclose(_File_Create); print("Файл \"OP_AFK_Dostup.cfg\" не был найден. Файл был создан системой."); } В public OnPlayerConnect SetTimerEx("@AFKUpdate", 10000, false, "i", playerid); afktime[playerid] = 0; В public OnPlayerText afktime[playerid] = 0 && 0; В public OnPlayerCommandText if(!strcmp(cmdtext, "/setafk", true)) { if(!DostupYes(playerid)) return 1; new string[300]; format(string, sizeof(string), "Функция\tЗначение\nВремя определения AFK\t{0000FF}%d секунд",afkoprtime); new _afkkick[90]; if(afkkick == true) format(_afkkick, sizeof(_afkkick), "\nКик за долгое AFK\t{00FF00}Включено\nКоличество секунд в AFK до кика\t{0000FF}%d секунд", afkmaxtime) ,strcat(string, _afkkick); else strcat(string, "\nКик за долгое AFK\t{FF0000}Выключено"); ShowPlayerDialog(playerid, DAFK, DIALOG_STYLE_LIST, "Система AFK",string,"Далее","Назад"); return 1; } if(!strcmp(cmdtext, "/afkon", true) || !strcmp(cmdtext, "/afkoff", true)) { if(!DostupYes(playerid)) return 1; if(afksystem == true) afksystem = false, ShowPlayerDialog(playerid, DAFK+3, DIALOG_STYLE_MSGBOX, "AFK-система", "Вы выключили AFK-систему.\nИгроки смогут стоять в AFK сколько захотят.\nНад никами игроков не будет показано время AFK.", "Понятно",""); else if(afksystem == false) { afksystem = true; new string[150]; format(string, sizeof(string), "Вы включили AFK-систему.\nНад никами игроков, при бездействии, появится\nтекст, показывающий время, находящееся игроком в AFK.\nТекст над никами появится в течении %d секунд.", afkoprtime); ShowPlayerDialog(playerid, DAFK+3, DIALOG_STYLE_MSGBOX, "AFK-система", string, "Понятно", ""); return 1; } return 1; } В public OnPlayerUpdate afktime[playerid] = 0; В public OnDialogResponse switch(dialogid) { case DAFK: { if(!response) return 1; switch(listitem) { case 0: return ShowPlayerDialog(playerid, DAFK+1, DIALOG_STYLE_INPUT, "Время определения AFK", "Введите новое время определения AFK.\n\nСтандартное время: 120 секунд.\nНельзя вводить число, менее 60 секунд.\nВремя вводится в секундах.","Далее","Отмена"); case 1: { if(afkkick == false) return ShowPlayerDialog(playerid, DAFK+2, DIALOG_STYLE_MSGBOX, "Кик за AFK", "Вы хотите включить кик за долгое AFK?\n\nВремя, за которое игрок будет кикнут - можно изменить.\nСтандартное время = 1800 секунд.", "Далее","Назад"); else return ShowPlayerDialog(playerid, DAFK+2, DIALOG_STYLE_MSGBOX, "Кик за AFK", "Вы хотите выключить кик за долгое AFK?\n\nИгрок сможет стоять в AFK сколько захочет.", "Далее","Назад"); } case 2: return ShowPlayerDialog(playerid, DAFK+4, DIALOG_STYLE_INPUT, "Время кика за AFK", "Введите новое время определения AFK.\n\nСтандартное время: 1800 секунд.\nНельзя вводить число, менее 120 секунд.\nНельзя вводить время, менее времени по определению AFK.\nВремя вводится в секундах.","Далее","Отмена"); } return 1; } case DAFK+1: { if(!response) return OnPlayerCommandText(playerid, "/setafk"); if(!strlen(inputtext) || strval(inputtext) < 60) return ShowPlayerDialog(playerid, DAFK+1, DIALOG_STYLE_INPUT, "Время определения AFK", "Введите новое время определения AFK.\n\nСтандартное время: 120 секунд.\nНельзя вводить число, менее 60 секунд.\nВремя вводится в секундах.","Далее","Отмена"); afkoprtime = strval(inputtext); return 1; } case DAFK+2: { if(!response) return OnPlayerCommandText(playerid, "/setafk"); afkkick = (afkkick == false) ? true : false; OnPlayerCommandText(playerid, "/setafk"); return 1; } case DAFK+3: return 1; case DAFK+4: { if(!response) return OnPlayerCommandText(playerid, "/setafk"); if(!strlen(inputtext) || strval(inputtext) < 120 || strval(inputtext) < afkoprtime) return ShowPlayerDialog(playerid, DAFK+4, DIALOG_STYLE_INPUT, "Время кика за AFK", "Введите новое время определения AFK.\n\nСтандартное время: 1800 секунд.\nНельзя вводить число, менее 120 секунд.\nНельзя вводить время, менее времени по определению AFK.\nВремя вводится в секундах.","Далее","Отмена"); afkmaxtime = strval(inputtext); return 1; } } В конец мода @AFKUpdate(playerid); @AFKUpdate(playerid) { if(afksystem == false) goto AFKTIMER; afktime[playerid]++; new string[20]; if(afktime[playerid] > afkoprtime) format(string,sizeof(string),"[AFK] %d секунд",afktime[playerid]), SetPlayerChatBubble(playerid,string,0xFFFFFFAA,10.0,1000); if(afkkick == true && afktime[playerid] >= afkmaxtime) SendClientMessage(playerid, COLOR_WHITE, "[{0000FF}AFK{FFFFFF}] Вы были кикнуты за долгое бездействие (AFK)."), KickEx(playerid); AFKTIMER: SetTimerEx("@AFKUpdate", 1000, false, "i", playerid); return 1; } stock KickEx(playerid) return SetTimerEx("@KicK", 100, false, "i", playerid); @KicK(playerid); @KicK(playerid) return Kick(playerid); stock DostupYes(playerid) { new nameplayerid[MAX_PLAYER_NAME]; GetPlayerName(playerid, nameplayerid, MAX_PLAYER_NAME); new File:_File_Open = fopen("OP_AFK_Dostup.cfg", io_read); if(_File_Open) { new and[128]; while(fread(_File_Open, and)) if(!strcmp(nameplayerid, and, true)) return 1; fclose(_File_Open); } else return print("Файл \"OP_AFK_Dostup.cfg\" не был создан. Вы можете создать файл вручную или перезапустить скрипт.") && 0; return 0; } Автор: Oleg_Petrow
  10. Суть заключается в том что игроку присылается сообщение,вы приглашены во фракцию,и игрок может отказаться или принять приглашение Ко всем new добавим: new pInvite[MAX_PLAYERS]; в public OnPlayerConnect(playerid) добавим: pInvite[playerid] = 999; Заменяем свою команду /invite на эту: if(strcmp(cmd, "/invite", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "ИСПОЛЬЗОВАНИЕ: /invite [id_игрока/ЧастьИмени]"); new para1; new ftext[20]; para1 = ReturnUser(tmp); if (PlayerInfo[playerid][pLeader] == 0) return SendClientMessage(playerid, COLOR_GRAD1, "Вы не лидер !"); if(IsPlayerConnected(para1)) { if(para1 != INVALID_PLAYER_ID) { if (PlayerInfo[para1][pMember] != 0) return SendClientMessage(playerid, COLOR_GREY, "Этот игрок состоит во фракции!"); if(PlayerInfo[playerid][pLeader] == 1) { ftext = "Ваше название фракции"; } else if(PlayerInfo[playerid][pLeader] == 2) { ftext = "Ваше название фракции и т.д."; } GetPlayerName(para1, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "[Администрация]: Вы были приглашены в %s, Лидером %s", ftext, sendername); SendClientMessage(para1, COLOR_WHITE, string); SendClientMessage(para1, COLOR_WHITE, "Введите /accept team чтобы принять приглашение"); SendClientMessage(para1, COLOR_WHITE, "Введите /cancel team чтобы отвергнуть приглашение"); format(string, sizeof(string), "Вы пригласили игрока %s в %s.", giveplayer,ftext); SendClientMessage(playerid, COLOR_WHITE, string); pInvite[para1] = playerid; } } } return 1; } Внимание если у вас не стандартная команда то добавьте pInvite[para1] = playerid; Код который отправляет на респавн убрать а также убрать смену скина,если у вас больше фракций чем в стандартном ГФ(да полюбому больше) то добавляем в команду /invite так else if(PlayerInfo[playerid][pLeader] == ID фраки) { ftext = "Название"; } в команду /accept добавить else if(strcmp(x_job,"team",true) == 0) { if(pInvite[playerid] < 999) { if(IsPlayerConnected(pInvite[playerid])) { if (gTeam[playerid]==TEAM_GREEN && PlayerInfo[playerid][pMember] == 0 && PlayerInfo[playerid][pFMember] == 255) { if(PlayerInfo[pInvite[playerid]][pLeader] == 1) { PlayerInfo[playerid][pTeam] = 2; gTeam[playerid] = 2; ChosenSkin[playerid] = 280; SetPlayerSkin(playerid, 280); } else if(PlayerInfo[pInvite[playerid]][pLeader] == 2) { PlayerInfo[playerid][pTeam] = 2; gTeam[playerid] = 2; ChosenSkin[playerid] = 286; SetPlayerSkin(playerid, 286); } PlayerInfo[playerid][pMember] = PlayerInfo[pInvite[playerid]][pLeader]; PlayerInfo[playerid][pRank] = 1; SetPlayerInterior(playerid,0); new rand = random(sizeof(gInviteSpawns)); SetPlayerPos(playerid, gInviteSpawns[rand][0], gInviteSpawns[rand][1], gInviteSpawns[rand][2]); // Warp the player SetPlayerFacingAngle(playerid, gInviteSpawns[rand][3]); SetPlayerCameraPos(playerid,gInviteSpawns[rand][0] + 3, gInviteSpawns[rand][1], gInviteSpawns[rand][2]); SetPlayerCameraLookAt(playerid,gInviteSpawns[rand][0], gInviteSpawns[rand][1], gInviteSpawns[rand][2]); TogglePlayerControllable(playerid, 0); SelectChar[playerid] = 255; SelectCharID[playerid] = PlayerInfo[playerid][pMember]; SelectCharPlace[playerid] = 1; PlayerInfo[playerid][pModel] = ChosenSkin[playerid]; PlayerInfo[playerid][pChar] = ChosenSkin[playerid]; new str[64]; GetPlayerName(pInvite[playerid], sendername, sizeof(sendername)); format(str,sizeof(str),"* %s принял ваше приглашение!",sendername); SendClientMessage(pInvite[playerid], COLOR_WHITE, str); SendClientMessage(playerid, COLOR_LIGHTRED, "Используйте next для выбора скина."); SendClientMessage(playerid, COLOR_LIGHTRED, "Если вы нашли скин, который хотите использовать введите done."); pInvite[playerid] = 999; return 1; } else { SendClientMessage(playerid, COLOR_GREY, "Вы состоите во фракции"); return 1; } } return 1; } else { SendClientMessage(playerid, COLOR_GREY, "Никто вас не приглашал вступить в Фракцию/Банду/Мафию"); return 1; } } в команду /cancel добавить: else if(strcmp(x_job,"team",true) == 0) { pInvite[playerid] = 999; new str[64]; GetPlayerName(pInvite[playerid], sendername, sizeof(sendername)); format(str,sizeof(str),"* %s не принял ваше приглашение!",sendername); SendClientMessage(pInvite[playerid], COLOR_WHITE, str); } Автор: Сергей68
  11. #Bazuka

    Спидометр

    К new. new Text:Textdraw0[MAX_PLAYERS]; new Text:Textdraw1[MAX_PLAYERS]; new Text:Textdraw2[MAX_PLAYERS]; new Text:Textdraw3[MAX_PLAYERS]; new Text:Textdraw4[MAX_PLAYERS]; new Text:Textdraw5[MAX_PLAYERS]; В public OnPlayerStateChange(playerid, newstate, oldstate) OnPlayerStateChange']if(oldstate == PLAYER_STATE_DRIVER) { TextDrawHideForPlayer(playerid, Textdraw0[playerid]); TextDrawHideForPlayer(playerid, Textdraw1[playerid]); TextDrawHideForPlayer(playerid, Textdraw2[playerid]); TextDrawHideForPlayer(playerid, Textdraw3[playerid]); TextDrawHideForPlayer(playerid, Textdraw4[playerid]); TextDrawHideForPlayer(playerid, Textdraw5[playerid]); } Ко всем forward forward LoadTextdraws(); В public OnGameModeInit() LoadTextdraws(); В конец мода.
×

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

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