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

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

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

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

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

Тип контента


Форумы

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

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

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


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

  • Начало

    Конец


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

  • Начало

    Конец


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

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

  1. 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. ничего подобного в паблике не лицезрел, однако, опять же таки - все просто.
  2. ShiGanKa

    Анти баннихоп

    Привет, выкладываю скрипт анти баннихопа. Скрипт очень лёгкий! Вот сам скрипт: if(newkeys & KEY_SPRINT && newkeys & KEY_JUMP && GetPlayerState(playerid) != 2) ClearAnimations(playerid), ApplyAnimation(playerid,"FAT","IDLE_tired",4.0,0,0,0,0,0); Всё это вставляем в public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) Автор: Lev_Popov(Забыл указать, ыы)
  3. Дорогие пользователи портала CR-MP Недавно я выкладывал [FS] скрипт,но многие просили меня сделать мануал,так как у многих не выходило перенести в мод! И так думаю начнем! ***В начало мода*** #define TABLE_ATM "atm" #define MAX_ATM 50 //количество разрешено new BigSTR[1024]; // Для больших запросов new TOTALATM; enum atm { aID, Float:aX, Float:aY, Float:aZ, Float:arX, Float:arY, Float:arZ, }; new ATMInfo[MAX_ATM][atm]; new ATM[MAX_ATM]; new ATMIcon[MAX_ATM]; new Text3D:ATMText[MAX_ATM] = {Text3D:-1, ...}; ***К любым stock'aм или в начало тоже можно*** stock LoadATM() { new time = GetTickCount(); format(BigSTR, sizeof BigSTR, "SELECT * FROM `"TABLE_ATM"` ORDER BY `aID` ASC", true); new Cache:result = mysql_query(connects, BigSTR, true); new rows = cache_get_row_count(); if(!rows) return print("stock LoadATM() - not loaded."); TOTALATM = rows; for(new idx = 1; idx <= rows; idx++) { ATMInfo[idx][aID] = cache_get_row_int(idx-1,0, connects); ATMInfo[idx][aX] = cache_get_row_float(idx-1,1, connects); ATMInfo[idx][aY] = cache_get_row_float(idx-1,2, connects); ATMInfo[idx][aZ] = cache_get_row_float(idx-1,3, connects); ATMInfo[idx][arX] = cache_get_row_float(idx-1,4, connects); ATMInfo[idx][arY] = cache_get_row_float(idx-1,5, connects); ATMInfo[idx][arZ] = cache_get_row_float(idx-1,6, connects); ATM[idx] = CreateObject(2754, ATMInfo[idx][aX], ATMInfo[idx][aY], ATMInfo[idx][aZ], ATMInfo[idx][arX], ATMInfo[idx][arY], ATMInfo[idx][arZ]); SetObjectMaterialText(ATM[idx], "\nБанкомат\n \n \n \n \n ",2,OBJECT_MATERIAL_SIZE_256x256,"Tahoma", 48, 1, 0xFF000000,0xFFFFFF00, OBJECT_MATERIAL_TEXT_ALIGN_CENTER); ATMIcon[idx] = CreateDynamicMapIcon(ATMInfo[idx][aX],ATMInfo[idx][aY],ATMInfo[idx][aZ]-20,56,0); ATMText[idx] = CreateDynamic3DTextLabel("{FFFFFF}*** Банкомат ***\n\n{AFAFAF}Чтобы воспользоваться\nуслугами\nнажмите ALT",COLOR_LIGHTBLUE, ATMInfo[idx][aX],ATMInfo[idx][aY],ATMInfo[idx][aZ]+2,15.0); } printf("[ Загрузка ... ] %d - банкомата успешно загружено (%d мс)", TOTALATM,GetTickCount()- time); cache_delete(result); return true; } *** в OnGameModeINit *** LoadATM(); *** Ко всем командам *** CMD:addatm(playerid) { if(PlayerInfo[playerid][pAdmin] < 6) return SendClientMessage(playerid,COLOR_GREY,"Ошибка: Вы не уполномочены использовать данную команду!"); ShowPlayerDialog(playerid, 100, 0, "Добавить ATM", "Вы хотите начать установку банкомата?", "Да", "Нет"); return true; } CMD:delatm(playerid, params[]) { if(PlayerInfo[playerid][pAdmin] < 6) return SendClientMessage(playerid,COLOR_GREY,"Ошибка: Вы не уполномочены использовать данную команду!"); for(new i = 1; i <= TOTALATM; i++) { if(IsPlayerInRangeOfPoint(playerid, 2.0, ATMInfo[i][aX],ATMInfo[i][aY],ATMInfo[i][aZ])) { ATMInfo[i][aX] = 0.0; ATMInfo[i][aY] = 0.0; ATMInfo[i][aZ] = 0.0+9999; format(BigSTR, sizeof BigSTR, "DELETE FROM `"TABLE_ATM"` WHERE aID = '%d'",i); mysql_function_query(connects, BigSTR, false, "", ""); DestroyObject(ATM[i]); DestroyDynamicMapIcon(ATMIcon[i]); DestroyDynamic3DTextLabel(ATMText[i]); SendClientMessage(playerid, -1, "Банкомат удален."); } } return true; } *** Ко всем своим диалогам *** case 100: { if(!response) return true; new Float:x, Float:y, Float:z, Float:angle; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, angle); x += floatsin(-angle, degrees); y += floatcos(-angle, degrees); new atm1; SendClientMessage(playerid, COLOR_LIGHTRED, "Чтобы выйти, нажмите: ESC и чтобы сохранить, нажмите курсором: СОХРАНИТЬ"); atm1 = CreateObject(2754, x, y, z-0.35, 0.0, 0.0, 0.0); SetPVarInt(playerid, "LoadATM", atm1+1); EditObject(playerid, atm1); } *** public OnPlayerEditObject *** if(GetPVarInt(playerid, "LoadATM") > 0) { if(!playerobject) { if(!IsValidObject(objectid)) return true; MoveObject(objectid, fX, fY, fZ, 10.0, fRotX, fRotY, fRotZ); } if(response == EDIT_RESPONSE_FINAL) { TOTALATM++; ATMInfo[TOTALATM][aX] = fX; ATMInfo[TOTALATM][aY] = fY; ATMInfo[TOTALATM][aZ] = fZ; ATMInfo[TOTALATM][arX] = fRotX; ATMInfo[TOTALATM][arY] = fRotY; ATMInfo[TOTALATM][arZ] = fRotZ; SendClientMessage(playerid,COLOR_YELLOW,"Вы установили банкомат"); DestroyObject(GetPVarInt(playerid, "LoadATM")-1); ATM[TOTALATM] = CreateObject(2754, fX, fY, fZ, fRotX, fRotY, fRotZ); SetObjectMaterialText(ATM[TOTALATM], "\nБанкомат\n \n \n \n \n ",2,OBJECT_MATERIAL_SIZE_256x256,"Tahoma", 48, 1, 0xFF000000,0xFFFFFF00, OBJECT_MATERIAL_TEXT_ALIGN_CENTER); ATMIcon[TOTALATM] = CreateDynamicMapIcon(fX, fY, fZ-20,52,0); ATMText[TOTALATM] = CreateDynamic3DTextLabel("{FFFFFF}*** Банкомат ***\n\n{AFAFAF}Чтобы воспользоваться\nуслугами\nнажмите ALT",COLOR_LIGHTBLUE, fX, fY, fZ+2,15.0); DeletePVar(playerid, "LoadATM"); CancelEdit(playerid); format(BigSTR, sizeof BigSTR,"INSERT INTO `"TABLE_ATM"` (aID, aX, aY, aZ, arX, arY, arZ)VALUES (%d,'%f','%f','%f','%f', '%f', '%f')", TOTALATM,ATMInfo[TOTALATM][aX],ATMInfo[TOTALATM][aY],ATMInfo[TOTALATM][aZ], ATMInfo[TOTALATM][arX], ATMInfo[TOTALATM][arY], ATMInfo[TOTALATM][arZ]); mysql_function_query(connects, BigSTR, false, "",""); } if(response == EDIT_RESPONSE_CANCEL) { DeletePVar(playerid, "LoadATM"); SendClientMessage(playerid, COLOR_LIGHTRED, "Установка банкомата отменена"); DestroyObject(objectid); CancelEdit(playerid); } return true; } И самое важное это сделать импорт базы данных! Смотрите что бы не было ошибок CREATE TABLE IF NOT EXISTS `atm` ( `aID` INT( 11 ) NOT NULL AUTO_INCREMENT , `aX` FLOAT NOT NULL , `aY` FLOAT NOT NULL , `aZ` FLOAT NOT NULL , `arX` FLOAT NOT NULL , `arY` FLOAT NOT NULL , `arZ` FLOAT NOT NULL , PRIMARY KEY ( `aID` ) ) Если будут какие то ошибки пишите,так как у меня они так же были,но после исправил и проверил! Только после выдал всю систему вам! Автор: Я Копировать на другие порталы строго запрещено!
  4. Здравствуйте гости и пользователи cr-mp.ru. В этой теме, я расскажу как сделать статистику администраторов за всё проведенное время. Знаю что уже есть множество похожих тем, но может кому-нибудь пригодится и мой вариант. Именно я пытался сделать по примерам, которые 'висят в всемирной паутине', но почему-то вечно были варнинги и ошибки (видимо руки были кривые, т.к давно пытался ). Так вот недавно вспомнил и решил сделать. Приступим. К enum pInfo в самый конец добавляем pPayDayAdmin, // сколько отыграл часов администратор pAreport, // сколько раз администратор ответил на репорт (/pm) pAban, // сколько раз администратор забанил (/ban) pAwarn, // сколько раз администратор заварнил (/warn) pAkick, // сколько раз администратор кикнул (/kick) pAmute, // сколько раз администратор заткнул (/mute) Теперь ищем public OnPlayerConnect(playerid), в нём находим что то вроде этого PlayerInfo[playerid][pSex] = 1; и после его вставляем эти строки: PlayerInfo[playerid][pPayDayAdmin] = 0; // при спавне, администратору присваивается 0 часов отыгровки. PlayerInfo[playerid][pAreport] = 0; // при спавне, администратору присваивается 0 ответов на репорт. PlayerInfo[playerid][pAban] = 0; // при спавне, администратору присваивается 0 банов. PlayerInfo[playerid][pAwarn] = 0; // при спавне, администратору присваивается 0 варнов. PlayerInfo[playerid][pAkick] = 0; // при спавне, администратору присваивается 0 киков. PlayerInfo[playerid][pAmute] = 0; // при спавне, администратору присваивается 0 мутов. Теперь нужно чтобы наше значение сохранялось, для этого нажимаем сочетание клавиш CTRL+F и ищем эти строки(проще говоря, сис-му сохранения аккаунтов): ini_setInteger(File," ini_getInteger(File," и дописываем в конец строк с ini_setInteger это: ini_setInteger(File,"pPayDayAdmin",PlayerInfo[playerid][pPayDayAdmin]); ini_setInteger(File,"pAreport",PlayerInfo[playerid][pAreport]); ini_setInteger(File,"pAban",PlayerInfo[playerid][pAban]); ini_setInteger(File,"pAwarn",PlayerInfo[playerid][pAwarn]); ini_setInteger(File,"pAkick",PlayerInfo[playerid][pAkick]); ini_setInteger(File,"pAmute",PlayerInfo[playerid][pAmute]); и в конец строк с ini_getInteger это: ini_getInteger(File,"pPayDayAdmin",PlayerInfo[playerid][pPayDayAdmin]); ini_getInteger(File,"pAreport",PlayerInfo[playerid][pAreport]); ini_getInteger(File,"pAban",PlayerInfo[playerid][pAban]); ini_getInteger(File,"pAwarn",PlayerInfo[playerid][pAwarn]); ini_getInteger(File,"pAkick",PlayerInfo[playerid][pAkick]); ini_getInteger(File,"pAmute",PlayerInfo[playerid][pAmute]); Так.. Теперь вам нужно найти 'систему' вашего payday. Т.к в модах разные сис-мы payday, советую тупо подождать payday на вашем сервере(моде), найти какую-нибудь строку, и найти её в моде через CTRL+F, к примеру "Чек банка SA" и где нибудь впихнуть это: PlayerInfo[playerid][pPayDayAdmin] += 1; // когда наступает payday, администратору начисляется 1 час отыгровки Теперь ищем команду /pm (ответа на репорт), и в нее добавляем это: PlayerInfo[playerid][pAreport] += 1; Теперь ищем команду /ban (бан игрока), и в нее добавляем это: PlayerInfo[playerid][pAban] += 1; Теперь ищем команду /warn (варн игрока), и в нее добавляем это: PlayerInfo[playerid][pAwarn] += 1; Теперь ищем команду /kick (кик игрока), и в нее добавляем это: PlayerInfo[playerid][pAkick] += 1; Теперь ищем команду /mute (мут игрока), и в нее добавляем это: (если у вас одной командой давать мут [/mute] и ей же снимать мут, не бойтесь, засчитываться будет только тогда, когда администратор дал мут) PlayerInfo[playerid][pAmute] += 1; Ну и последним действием будет сама команда. Добавляем ее ко всем командам: if(strcmp(cmd, "/as", true) == 0 || strcmp(cmd, "/adminstats", true) == 0) { if(PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid, COLOR_WHITE, "Вы не администратор"); { new str[1500],sctring[1500]; GetPlayerName(playerid, sendername, sizeof(sendername)); format(str,sizeof(str),"{73B461}<< {FFFFFF} Статистика администратора - {B22222}%s {73B461}>>\n\n",sendername); strcat(sctring,str); format(str,sizeof(str),"{FFFFFF}Проиграно: {B83434}[%d час(ов)]\n",PlayerInfo[playerid][pPayDayAdmin]); strcat(sctring,str); format(str,sizeof(str),"{FFFFFF}Ответил на репорт: {B83434}[%d раз]\n",PlayerInfo[playerid][pAreport]); strcat(sctring,str); format(str,sizeof(str),"{FFFFFF}Забанил: {B83434}[%d раз]\n",PlayerInfo[playerid][pAban]); strcat(sctring,str); format(str,sizeof(str),"{FFFFFF}Заварнил: {B83434}[%d раз]\n",PlayerInfo[playerid][pAwarn]); strcat(sctring,str); format(str,sizeof(str),"{FFFFFF}Кикнул: {B83434}[%d раз]\n",PlayerInfo[playerid][pAkick]); strcat(sctring,str); format(str,sizeof(str),"{FFFFFF}Заткнул: {B83434}[%d раз]\n",PlayerInfo[playerid][pAmute]); strcat(sctring,str); SPD(playerid,5052,0,"Статистика",sctring, "Ок", ""); } return true; } Вот и всё. Надеюсь кому-нибудь это пригодится.
  5. Нашел на просторах интернета динамическую систему бизнесов. Проверено на моде 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
  6. Может нужен кому нибудь. Переделал из /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 - Уровень администрирования, с которого можно выдавать предупреждение
  7. решил написать простой скрипт чтобы админ мог включить всем музыку приступим перейдём в 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; } Подобного на форуме не видел.
  8. Добрый день! Сливаю вам полностью рабочее Казино для CR:MP //=================================[Казино]===================================== if(strcmp(cmd, "/dice", true) == 0){ new YCMDstr[256]; if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[Недоступно]{ffffff} Для начала авторизируйтесь на сервере."); if(!PlayerToPoint(15.0,playerid,1687.6349,2061.8667,-7.8350)) return SendClientMessage(playerid, -1, "{CECECE}Вы должны находиться в частном казино"); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "{CECECE}Использование: /dice [id игрока] [ставка от 100 рублей до 5млн.]"); giveplayerid = ReturnUser(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "{CECECE}Использование: /dice [id игрока] [ставка от 100 рублей до 5млн.]"); new price = strval(tmp); if(price 5000000) return SendClientMessage(playerid, -1, "Минимальная ставка 100 рублей максимальная 5млн."); if(ZapretDice[giveplayerid] == 1) return SendClientMessage(playerid, -1, "В данный момент игрок не может играть!"); if(PlayerInfo[playerid][pMoney] if(PlayerInfo[giveplayerid][pMoney] if(dicetime > gettime()) return SendClientMessage(playerid, -1, "В данный момент вы не можете играть!"); if(!IsPlayerConnected(giveplayerid)) return true; //if(!ProetectorS(6.0, playerid, giveplayerid)) return true; if(giveplayerid == playerid) return true; format(YCMDstr, sizeof(YCMDstr), "{3399FF}Вы предложили %s бросить кости. Ставка: %i рублей",Names(giveplayerid),price); SendClientMessage(playerid, 0x6495EDFF, YCMDstr); format(YCMDstr, sizeof(YCMDstr), "{3399FF}%s предлагает бросить кости. Ставка: %i рублей",Names(playerid),price); SendClientMessage(giveplayerid, 0x6495EDFF, YCMDstr); SendClientMessage(giveplayerid, COLOR_WHITE, "{FFFFFF}Нажмите {00CC00}Enter {FFFFFF}чтобы согласиться или {FF6600}N {FFFFFF}для отказа"); ZapretDice[playerid] = 1; KostiName[giveplayerid] = playerid; KostiMoney[giveplayerid] = price; return true;} //============================================================================== Автор: Я Также не забываем о переменных! Если нужен маппинг казино пишите в комментарии!
  9. К глобальным массивам(те которые в самом верху ) добавляем: new Text:Textdraw[MAX_PLAYERS]; Добавляем в: public OnPlayerConnect(playerid) Вот это: Textdraw[playerid] = TextDrawCreate(36.000000, 144.000000, "_"); TextDrawBackgroundColor(Textdraw[playerid], 255); TextDrawFont(Textdraw[playerid], 2); TextDrawLetterSize(Textdraw[playerid], 0.250000, 1.099999); TextDrawColor(Textdraw[playerid], -1); TextDrawSetOutline(Textdraw[playerid], 0); TextDrawSetProportional(Textdraw[playerid], 1); TextDrawSetShadow(Textdraw[playerid], 1); TextDrawUseBox(Textdraw[playerid], 1); TextDrawBoxColor(Textdraw[playerid], 118); TextDrawTextSize(Textdraw[playerid], 220.000000, 5.000000); Дальше добавляем две функции: stock player_SendTD(playerid, text[], time) { TextDrawSetString(Textdraw[playerid], text); SetTimerEx("TimeHideForPlayer", time, 1, "i", playerid); return TextDrawShowForPlayer(playerid, Textdraw[playerid]); } forward TimeHideForPlayer(playerid); public TimeHideForPlayer(playerid) TextDrawHideForPlayer(playerid, Textdraw[playerid]); Автор: неизвестно Скриншот:
  10. Vladimir_Kulkov

    Основа банкомата

    Представляю вашему внимаю основу динамических банкоматов,это всего лишь основа,никаких действий на кнопки и диалогов нет.И так начнём
  11. Vladimir_Kulkov

    Гонка на роликах.

    Администратор запускает гонку /startrace и через 2 минуты начинается гонка. В конце гонки пишет, кто каким пришел. Игрок пришедший первым - получает 30.000р, второй - 20.000р, третий - 10.000р. Сумму можете изменить в дефайнах. Также, администратор может в любой момент остановить гонку - /stoprace
  12. Многие просили это и постили очень много тем но им не отвечали понятно как сделать музыку с сайтов в определённом месте: Для начала, вам нужно определиться, где будет играть музыка. Вам нужны координаты того места, откуда вы бы хотели, чтобы играла музыка, это x, y, z Потом в public OnPlayerUpdate(playerid) добавляем: if(IsPlayerInRangeOfPoint(playerid,радиус,x,y,z)) { if(!GetPVarInt(playerid,"music")) { SetPVarInt(playerid,"music",1); PlayAudioStreamForPlayer(playerid, "ссылка",x,y,z,радиус,true); } } else { if(GetPVarInt(playerid,"music")) { DeletePVar(playerid,"music"); StopAudioStreamForPlayer(playerid); } } x,y,z - заменяете координатами радиус - к примеру: 80 ссылка - заменяете ссылкой с музыкой/радио Автор:Rush
  13. Здравствуйте уважаемые пользователи cr-mp.ru. Сегодня я расскажу вам как создать пикап с бонусом. Начнем. Ко всем new new bonus; Далее вставляем в (OnGameModeInit) bonus = CreatePickup(ID пикапа,тип пикапа,X,Y,Z, ID виртуального мира пикапа);// Координаты X,Y,Z сменить на свои. Идем далее в (OnPlayerPickUpPickup) И добавим следующее if(pickupid == bonus) // Это наше название пикапа, то есть когда мы записывали в переменной FFF значит и название будет FFF. { if(PlayerInfo[playerid][pLevel] >= 3) // Это проверка на то что-бы игрок не получил бонус два раза. { SendClientMessage(playerid, COLOR_PURPLE, "Этот бонус только для новичков 1 лвл."); return 1; } SendClientMessage(playerid,0xFFFF00AA,"Вы получили свой бонус"); SendClientMessage(playerid, COLOR_WHITE, "2.000.000Р."); SendClientMessage(playerid, COLOR_WHITE, "3 LVL."); SendClientMessage(playerid, COLOR_WHITE, "Все лицензии."); PlayerInfo[playerid][pLevel] = 3; // Где 3 это уровень, если хотите уровень больше или меньше меняйте 3 на ваш уровень. GivePlayerMoney(playerid, 2000000); // 3000000 - это количество денег, которое выдаст вам. PlayerInfo[playerid][pCarLic] = 1; // Лицензия на вождение. PlayerInfo[playerid][pFlyLic] = 1; // Лицензия на воздушный транспорт. PlayerInfo[playerid][pMotoLic] = 1; // Лицензия на мотовождения. PlayerInfo[playerid][pBoatLic] = 1; // Лицензия на водное вождение. PlayerInfo[playerid][pGunLic] = 1; // Лицензия на оружие. } За место моих бонусов можете вставить ваши! На этом урок окончен!
  14. Na'Vi

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

    Добрый день Вот система доната на процессоре DC_CMD CMD:donate(playerid, params[])//1055 { ShowPlayerDialog(playerid, 1055, DIALOG_STYLE_LIST, "DONATE: MOY ROLE PLAY", "[1] > Активировать донат - код\n[2] > Информация о донат\n[3] > Игровые привилегии\n[4] > Конвертер виртуальных средств\n[5] > Сменить никнейм", "Выбрать", "Отмена"); return true; } case 1055: { if(response) { switch(listitem) { case 0: ShowPlayerDialog(playerid, 3242, DIALOG_STYLE_INPUT, "DONATE: Активация донат - кода","Введите донат код, который вы получили при оплате и нажмите 'Далее':\n","Далее","Отмена"); case 1: format(stringer, sizeof(stringer), "{FFFFFF}На данный момент у Вас: {00B464}%d {FFFFFF}донат очков\n\nВы можете потратить эти очки на конвертер виртуальных средств или же игровые привилегии", PlayerInfo[playerid][pDonatemoney2]), ShowPlayerDialog(playerid, 228228, DIALOG_STYLE_MSGBOX, "DONATE: Информация о донате", stringer, "Продолжить", "Назад"); case 2: GameDonate(playerid); case 3: format(stringer, sizeof(stringer), "{FFFFFF}Действующий тариф: {ffa500}Бонусный {FFFFFF}(5 к 15 тыс.)\n\nНа счету вашего аккаунта {ffa500}%d {FFFFFF}донат очка(о/ов)\n\nМаксимально доступная выручка с обмена составляет %d $", PlayerInfo[playerid][pDonatemoney2], PlayerInfo[playerid][pDonatemoney2]*5015), ShowPlayerDialog(playerid, 12953, DIALOG_STYLE_INPUT, "DONATE: Конвертер виртуальных средств", stringer, "Продолжить", "Назад"); case 4: ShowPlayerDialog(playerid, 9943, DIALOG_STYLE_INPUT, "DONATE: Сменить никнейм", "Данная услуга стоит 500 донат очков\n\nНапишите новый никнейм в окошко\n\nНапример: Grand_Persona, Vasya_Pupkin\n\nЧтобы не было лишних проблем, проверьте каждый знак своего будущего никнейма", "Отправить", "Назад"); } } else return true; } case 26363: { if(response) { switch(listitem) { case 0: { if(PlayerInfo[playerid][pDonatemoney2] PlayerInfo[playerid][pDonatemoney2] -=200; PlayerInfo[playerid][pSDPistol] = 100; PlayerInfo[playerid][pDesertEagle] = 100; PlayerInfo[playerid][pShotGun] = 100; PlayerInfo[playerid][pMP5] = 100; PlayerInfo[playerid][pM4] = 100; PlayerInfo[playerid][pAK47] = 100; SendClientMessage(playerid,COLOR_WHITE,"Вы прокачали все скиллы себе за {00B464}200 {FFFFFF}донат очков."); } case 1: { if(PlayerInfo[playerid][pDonatemoney2] PlayerInfo[playerid][pBoxSkill] = 999999; PlayerInfo[playerid][pKongfuSkill] = 999999; PlayerInfo[playerid][pKickboxSkill] = 9999999; SendClientMessage(playerid, COLOR_WHITE, "Вы прокачали боевые скиллы себе за {00B464}200 {FFFFFF}донат очков"); PlayerInfo[playerid][pDonatemoney2] -= 200; } case 2: { if(PlayerInfo[playerid][pDonatemoney2] PlayerInfo[playerid][pDrugs] += 2500; PlayerInfo[playerid][pMats] += 2500; SendClientMessage(playerid, COLOR_WHITE, "Вам выдано 2500 материалов и 2500 наркотиков за {00B464}50 {FFFFFF}донат очков"); PlayerInfo[playerid][pDonatemoney2] -= 50; } case 3: { if(PlayerInfo[playerid][pDonatemoney2] PlayerInfo[playerid][pVodPrava] = 1; SendClientMessage(playerid, COLOR_WHITE, "Вы получили водительские права за {00B464}35 {FFFFFF}донат очков"); PlayerInfo[playerid][pDonatemoney2] -= 35; } case 4: { if(PlayerInfo[playerid][pDonatemoney2] PlayerInfo[playerid][pWarns] = 0; PlayerInfo[playerid][punWarnstime] = 0; PlayerInfo[playerid][punWarns] = 0; SendClientMessage(playerid, COLOR_WHITE, "Вы аннулировали варны за {00B464}50 {FFFFFF}донат очков"); PlayerInfo[playerid][pDonatemoney2] -= 50; } case 5: { if(PlayerInfo[playerid][pDonatemoney2] PlayerInfo[playerid][pLevel] += 1; SendClientMessage(playerid, COLOR_WHITE, "Вы прибавили 1 к игровому уровню за {00B464}150 {FFFFFF}донат очков"); PlayerInfo[playerid][pDonatemoney2] -= 150; } case 6: { if(PlayerInfo[playerid][pDonatemoney2] PlayerInfo[playerid][pWanted] =0; PlayerInfo[playerid][pDonatemoney2] -=5; SendClientMessage(playerid,COLOR_WHITE,"Вы понизили свой уровень розыска за {00B464}5 {FFFFFF}донат очков."); } case 7: { if(PlayerInfo[playerid][pDonatemoney2] PlayerInfo[playerid][pNarcoLomka] += 1000; PlayerInfo[playerid][pDonatemoney2] -=30; SendClientMessage(playerid,COLOR_WHITE,"Вы прибавили себе наркозависимость на 1000 за {00B464}30 {FFFFFF}донат очков."); } case 8: { if(PlayerInfo[playerid][pDonatemoney2] if(PlayerInfo[playerid][pNarcoLomka] PlayerInfo[playerid][pNarcoLomka] -= 1000; PlayerInfo[playerid][pDonatemoney2] -=30; SendClientMessage(playerid,COLOR_WHITE,"Вы убавили себе наркозависимость на 1000 за {00B464}30 {FFFFFF}донат очков."); } case 9: { if(PlayerInfo[playerid][pDonatemoney2] GivePlayerWeapon(playerid, 24, 1000); GivePlayerWeapon(playerid, 29, 1000); GivePlayerWeapon(playerid, 31, 1000); GivePlayerWeapon(playerid, 25, 1000); PlayerInfo[playerid][pDonatemoney2] -=30; SendClientMessage(playerid,COLOR_WHITE,"Вам выдан комплект оружия за {00B464}30 {FFFFFF}донат очков."); } case 10: { if(PlayerInfo[playerid][pDonatemoney2] PlayerInfo[playerid][pDonatemoney2] -=70; PlayerInfo[playerid][pZakonp] += 50; SendClientMessage(playerid,COLOR_WHITE,"Вы прибавили себе законопослушность на 50 за {00B464}70 {FFFFFF}донат очков."); } case 11: { if(PlayerInfo[playerid][pDonatemoney2] PlayerInfo[playerid][pMuted] = 0; PlayerInfo[playerid][pMuteTime] = 0; SendClientMessage(playerid, COLOR_WHITE, "Вы сняли бан чата за {00B464}15 {FFFFFF}донат очков"); PlayerInfo[playerid][pDonatemoney2] -= 15; } case 12: { if(PlayerInfo[playerid][pDonateRank] >= 1) return SendClientMessage(playerid, COLOR_WHITE, "Ошибка: У вас уже имеется VIP статус (попробуйте повысить его)"); if(PlayerInfo[playerid][pDonatemoney2] PlayerInfo[playerid][pDonateRank] = 1; PlayerInfo[playerid][pDonatemoney2] -= 300; SendClientMessage(playerid, COLOR_WHITE, "Вы купили VIP статус за {00B464}300 {FFFFFF}донат очков"); } case 13: { if(PlayerInfo[playerid][pDonatemoney2] if(PlayerInfo[playerid][pDonateRank] == 0) return SendClientMessage(playerid, COLOR_WHITE, "Ошибка: У вас нету VIP статуса"); if(PlayerInfo[playerid][pDonateRank] { PlayerInfo[playerid][pDonateRank]++; SendClientMessage(playerid, COLOR_WHITE, "Вы повысили VIP статус за {00B464}200 {FFFFFF}донат очков"); } } } } else return cmd_donate(playerid, ""); return true; } case 12953: { if(response) { if(!strlen(inputtext)) return format(stringer, sizeof(stringer), "{FFFFFF}Действующий тариф: {ffa500}Бонусный {FFFFFF}(5 к 15 тыс.)\n\nНа счету вашего аккаунта {ffa500}%d {FFFFFF}донат очка(о/ов)\n\nМаксимально доступная выручка с обмена составляет %d $", PlayerInfo[playerid][pDonatemoney2], PlayerInfo[playerid][pDonatemoney2]*5015), ShowPlayerDialog(playerid, 12953, DIALOG_STYLE_INPUT, "DONATE: Конвертер виртуальных средств", stringer, "Продолжить", "Назад"); new moneys; moneys = strval(inputtext); if(PlayerInfo[playerid][pDonatemoney2] if(moneys > 10000 || moneys PlayerInfo[playerid][pBank] += moneys*15000; format(stringer, sizeof(stringer), "Ваш аккаунт успешно пополнен, деньги были переведены в банк"); SendClientMessage(playerid, COLOR_WHITE, stringer); PlayerInfo[playerid][pDonatemoney2] -= moneys; return true; } else return cmd_donate(playerid, ""); CMD:givedonate(playerid, params[]) { if (PlayerInfo[playerid][pAdmin] > 0) { new playa, DonateMoney1, stringer[MAX_STR]; if (sscanf(params, "ud", playa, DonateMoney1)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /givedonate [playerid] [кол-во]"); if (PlayerInfo[playerid][pAdmin] == 12) { SendClientMessageFormatted(playerid, COLOR_YELLOW, "Вы дали игроку %s %d DonatMoney", NamePlayer[playa], DonateMoney1); PlayerInfo[playa][pDonatemoney2] += DonateMoney1; SendClientMessageFormatted(playa, COLOR_REDD, "Администратор %s дал вам: %d DonatMoney", NamePlayer[playerid], DonateMoney1); SendClientMessageFormatted(playa, COLOR_REDD, "Ваш донатный счёт: %d DonatMoney {FFFFFF}(( Используйте /donate ))", PlayerInfo[playa][pDonatemoney2]); format(stringer, 64, "* Admin %s dal %s, %d donat", NamePlayer[playerid], NamePlayer[playa], DonateMoney1); Money(stringer); } } return true; } CMD:adddc(playerid, params[]) { new code1 = 10000 + random(99999); new status1 = 1; new str[MAX_STR]; if (PlayerInfo[playerid][pAdmin] == 12) { if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /adddc [донат-очков]"); format(str, sizeof(str), "INSERT INTO `donate` (`Code`, `Money`, `Status`) VALUES ('%d', '%d', '%d')",code1,strval(params[0]),status1); mysql_function_query(connects, str, false, "",""); format(str, sizeof(str), "Вы успешно создали код: %d (%d донат очков)",code1, strval(params[0])); SendClientMessage(playerid, COLOR_WHITE, str); format(str, sizeof(str), "INSERT INTO `donatelogs` (`Text`) VALUES ('%s ADD DONATE CODE: %d (%d)')",NamePlayer[playerid], code1, strval(params[0])); mysql_function_query(connects, str, false, "",""); } return true; } case 3242: { if(response) { if(!strlen(inputtext) || (!IsNumeric(inputtext))) { ShowPlayerDialog(playerid,197,DIALOG_STYLE_INPUT,"DONATE: Активация донат - кода","Введите донат код, который вы получите при оплате и нажмите 'Далее':\n","Далее","Отмена"); return true; } new code = strval(inputtext); new query_mysql[120]; mysql_format(connects, query_mysql,120, "SELECT Money FROM Donate WHERE Code = '%d' AND Status = '1'",code); mysql_function_query(connects, query_mysql, true, "GrandDonate", "dd", playerid,code); return true; } } case 9943: { if(response) { if(PlayerInfo[playerid][pDonatemoney2] if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 9943, DIALOG_STYLE_INPUT, "DONATE: Сменить никнейм", "Напишите новый никнейм в окошко\n\nНапример: Grand_Persona, Vasya_Pupkin\n\nПроверяйте каждый знак, чтобы не были проблемы", "Отправить", "Назад"); if(IsTextInvalid(inputtext)) return ShowPlayerDialog(playerid, 9943, DIALOG_STYLE_INPUT, "DONATE: Сменить никнейм", "Напишите новый никнейм в окошко\n\nНапример: Grand_Persona, Vasya_Pupkin\n\nПроверяйте каждый знак, чтобы не были проблемы", "Отправить", "Назад"); if(strlen(inputtext) 24) return ShowPlayerDialog(playerid, 9943, DIALOG_STYLE_INPUT, "DONATE: Сменить никнейм", "Напишите новый никнейм в окошко\n\nНапример: Grand_Persona, Vasya_Pupkin\n\nПроверяйте каждый знак, чтобы не были проблемы", "Отправить", "Назад"); format(WantNickChange[playerid],MAX_PLAYER_NAME, "%s",inputtext); new QUERY[128]; mysql_format(connects, QUERY,sizeof(QUERY), "SELECT * FROM `Accounts` WHERE `Name` = '%e'", WantNickChange[playerid]); mysql_function_query(connects, QUERY, true, "GrandChangeName", "d", playerid); return true; } else return cmd_donate(playerid, ""); Автор: Sweazy(Roy)
  15. Na'Vi

    Запрет /zap

    Добрый день! Команда для администраторов и она запрещает всем лидерам писать в гос.новости Сперва создаем переменную: new government_mute; Вот в основном код: if(strcmp(cmdtext, "/gov_mute", true) == 0) { government_mute = !government_mute; SendClientMessage(playerid, -1, (government_mute) ? (!"Вы запретили писать в гос.новости") : (!"Вы разрешили писать в гос.новости")); return 1; } Ну теперь в команду /gov или /gnews (или какая у вас гос.новости) добавляем такое: if(government_mute) return SendClientMessage(playerid, -1, !"Администратор запретил писать в гос.новости!"); Теперь DC_CMD: CMD:zap(playerid) { government_mute = !government_mute; SendClientMessage(playerid, -1, (government_mute) ? (!"Вы запретили писать в гос.новости") : (!"Вы разрешили писать в гос.новости")); return 1; } Автор: MrJunior
  16. Думаю тут всё понятно надеюсь все играли в GTA V или хотя бы слышали что там можно вызывать подмогу вот тоже самое для CR:MP и SA:MP Начнём! Ко всем #define добавляем #define COLOR_DARKNICERED 0x9D000096 Ко всем forward добавляем forward BackupClear(playerid, calledbytimer); Создаём саму команду //--------------------------------=Police Backup=---------------------------------------------------------------- //===Needs Radar Clear if(strcmp(cmd,"/backup",true)==0 || strcmp(cmd,"/bk",true)==0) { if(IsPlayerConnected(playerid)) { if(IsACop(playerid)) { if (PlayerInfo[playerid][pRequestingBackup] != 1) { GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), " Всем постам: %s нуждается в подмоге, он отмечен красным маркером на радаре.", sendername); PlayerInfo[playerid][pRequestingBackup] = 1; for(new i = 0; i { if(IsPlayerConnected(i)) { if(IsACop(i)) { SetPlayerMarkerForPlayer(i, playerid, 0xFF0000FF); SendClientMessage(i, TEAM_BLUE_COLOR, string); } } } SendClientMessage(playerid, TEAM_BLUE_COLOR, " Используй /bkc чтобы отменить вызов подмоги."); SetTimerEx("BackupClear", 180000, false, "ii", playerid, 1); } else { SendClientMessage(playerid, COLOR_GREY, " Ты уже вызываешь подмогу!"); } } else { SendClientMessage(playerid, COLOR_GREY, " Ты не коп!"); } } return 1; } //-----------------=Radar Clear=----------------- //======Goes with Police Backup if(strcmp(cmd,"/backupclear",true)==0 || strcmp(cmd,"/bkc",true)==0) { BackupClear(playerid, 0); return 1; } Также не забываем добавить enum enum pInfo И туда же добавляем pRequestingBackup Создаём public в самом конце мода public BackupClear(playerid, calledbytimer) { if(IsPlayerConnected(playerid)) { if(IsACop(playerid)) { if (PlayerInfo[playerid][pRequestingBackup] == 1) { for(new i = 0; i { if(IsPlayerConnected(i)) { if(PlayerInfo[i][pMember] == 1||PlayerInfo[i][pLeader] == 1) { SetPlayerMarkerForPlayer(i, playerid, TEAM_HIT_COLOR); } } } if (calledbytimer != 1) { SendClientMessage(playerid, TEAM_BLUE_COLOR, " Твой запрос о подмоге очищен."); } else { SendClientMessage(playerid, TEAM_BLUE_COLOR, " Твой запрос о подмоге очищен автоматически"); } PlayerInfo[playerid][pRequestingBackup] = 0; } else { if (calledbytimer != 1) { SendClientMessage(playerid, COLOR_DARKNICERED, " У тебя нет текущих запросов!"); } } } else { if (calledbytimer != 1) { SendClientMessage(playerid, COLOR_GREY, " Ты не коп!"); } } } return 1; } Готово! Автор:Miller Я немного переписал инструкцию чтобы было понятно новичкам
  17. Хелоу ребята! Держите работу шахтёра для начала ко всем new добавляем new SahtaJob; //пикап устройства new Rabota[MAX_PLAYERS]; //проверка на работу new ZolotoAll[MAX_PLAYERS]; //всего золота собрано new PlayerOldSkin[MAX_PLAYERS]; //запишет ваш скин старый в public OnGameModeInit() добавляем SahtaJob = CreatePickup(1275,23,2750.3560,-2209.7473,17.9163); в public OnPlayerConnect(playerid) добавим Rabota[playerid] = 0; ZolotoAll[playerid] = 0; в public OnPlayerEnterCheckpoint(playerid) действие на чекпойнт if(GetPVarInt(playerid,"Nesti") == 1) { DisablePlayerCheckpoint(playerid); RemovePlayerAttachedObject(playerid,4); ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 1); SendClientMessage(playerid,0xFFFFFFFF,"Вы донесли золото на склад"); SetPlayerAttachedObject(playerid, 3, 18634, 6, 0.078222, 0.000000, 0.110844, 298.897308, 264.126861, 193.350555, 1.000000, 1.000000, 1.000000); SetPVarInt(playerid,"Nesti",0); SetPVarInt(playerid,"Proverka",0); return true; } в public OnPlayerPickUpPickup(playerid, pickupid) создадим действие на пикап if(pickupid == SahtaJob) { if(Rabota[playerid] == 0) { ShowPlayerDialog(playerid,14,DIALOG_STYLE_MSGBOX,"Устройство Шахта","Шахта - вы хотите начать работать Шахтёра?\nОплата за 1 kg добытой руды составляет 10$ \n\nВы действительно хотите устроиться на работу шахтёра?","Далее", "Выход"); return true; } else if(Rabota[playerid] == 1) { format(string, sizeof(string),"Шахта - вы хотите уволиться с работы Шахтёра?\nШахта выплатить вам %d$ за добытое золото\n\nВы действительно хотите уволиться с работы шахтёра?",ZolotoAll[playerid]*10); ShowPlayerDialog(playerid,14,DIALOG_STYLE_MSGBOX,"Увольнение Шахта",string,"Далее", "Выход"); return true; } } в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) сделаем вывод диалога на экран if(dialogid== 14) // Шахта { if(response) { if(Rabota[playerid] == 0) { Rabota[playerid] = 1; ZolotoAll[playerid] = 0; PlayerOldSkin[playerid] = GetPlayerSkin(playerid); SetPlayerSkin(playerid, 260); SetPlayerAttachedObject(playerid, 3, 18634, 6, 0.078222, 0.000000, 0.110844, 298.897308, 264.126861, 193.350555, 1.000000, 1.000000, 1.000000); SendClientMessage(playerid,0xFFFFFFFF,"Вы успешно устроились на работу шахтёра!"); SendClientMessage(playerid,0xFFFFFFFF,"Пройдите в шахту для начала добычи золота [золото находится на камнях в шахте]!"); return true; } else { DisablePlayerCheckpoint(playerid); ApplyAnimation(playerid,"PED", "IDLE_tired", 4.1, 0, 1, 1, 0, 1); SetPlayerSkin(playerid,PlayerOldSkin[playerid]); TextDrawHideForPlayer(playerid,WoodDraw[playerid]); SendClientMessage(playerid,COLOR_WHITE,"{00FF00}Вы успешно уволились с работы шахтёра."); format(string, sizeof(string),"{00FF00}Вы добыли {408080}%d kg{00FF00} руды и заработали %d$",ZolotoAll[playerid],ZolotoAll[playerid]*10); SendClientMessage(playerid,COLOR_WHITE,string); GiveMoney(playerid,ZolotoAll[playerid]*10); ZolotoAll[playerid] = 0; Rabota[playerid] = 0; SetPVarInt(playerid,"Proverka",0); SetPVarInt(playerid,"Nesti",0); RemovePlayerAttachedObject(playerid,4); RemovePlayerAttachedObject(playerid,3); return true; } } } в public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) создадим действие на кнопку ALT чтобы начал добывать золото if(newkeys == 1024) { if(MestaSahta(playerid)) { if(Rabota[playerid] == 1) { if(GetPVarInt(playerid,"Proverka") > 0)return(playerid,0xACFF59FF,"Вы уже добыли руду"); SendClientMessage(playerid,0xACFF59FF,"- Вы начали добывать золото"); ApplyAnimation(playerid, "SWORD", "sword_4", 4.0, 1, 0, 0, 0, 0); SetPVarInt(playerid,"Proverka",1); SetTimerEx("GiveZoloto", 3000, false, "i", playerid); return true; } } } и в конец мода добавим таймер и места для добычи золота forward GiveZoloto(playerid); public GiveZoloto(playerid) { ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 1, 1); RemovePlayerAttachedObject(playerid, 3); SendClientMessage(playerid,0xFFFFFFFF,"Отнесите золото на склад!"); SetPlayerAttachedObject(playerid, 4, 2936, 1, 0.184699, 0.426247, 0.000000, 259.531341, 80.949592, 0.000000, 0.476124, 0.468181, 0.470769); SetPlayerCheckpoint(playerid,2756.5317,-2211.5769,17.9146,3.0); SetPlayerChatBubble(playerid,"{00FF00}+6",0x00FF00FF,30.0,8000); ZolotoAll[playerid] += 6; SetPVarInt(playerid,"Nesti",1); return true; } stock MestaSahta(playerid) { if(IsPlayerInRangeOfPoint(playerid,1.8,2758.6245,-2227.7559,17.9254) || IsPlayerInRangeOfPoint(playerid,1.8,2756.8035,-2230.5139,17.9284) || IsPlayerInRangeOfPoint(playerid,1.8,2759.0605,-2217.2356,17.9175)) {return true;} return false; } Вот и всё вроде 1. Можно добавлять больше мест для золота 2. Ид диалогов замените на свои и координаты тоже 3. Маппинга от работы у меня нету увы для теста создал возле спавна на складе Автор: Неизвестно Переделывал : всю работу переделывал Basis так как были замечены баги и оплошности
  18. Система мероприятий Начнём! Создаём переменные new Teleport = 0; new Float:TeleportFloat[3]; new TeleportInfo[2]; new stringmp[144]; В #define добавляем: #define SCM SendClientMessage #define SCMTA SendClientMessageToAll #define PINFO PlayerInfo #define COLOR_ORANGE 0xFFA500AA // Цвета можно заменить #define COLOR_WHITE 0xFFFFFFAA #define COLOR_GREY 0xAFAFAFFF #define COLOR_GOLD 0xFFD700FF Создаём команду /mp if(strcmp(cmd, "/mp", true) == 0) { if(PINFO[playerid][pAdminLVL] < 4) return SendClientMessage(playerid, COLOR_GREY, "У вас нет прав!"); ShowPlayerDialog(playerid, 5343, DIALOG_STYLE_LIST, "{FF6F00}Меню создания мероприятия", "{FFFFFF}1. Создать/удалить телепорт\n2. Раздать оружие (в радиусе 50)\n3. Раздать жизни (в радиусе 50)\n4. Обезаружить всех (в радиусе 50)", "Выбрать", "Закрыть"); return true; } Создаём команду /tpmp Созадём дело case 5343: { if(!response) return 1; switch(listitem) { case 0: { if(Teleport == 0) { GetPlayerPos(playerid, TeleportFloat[0], TeleportFloat[1], TeleportFloat[2]); TeleportInfo[0] = GetPlayerInterior(playerid); TeleportInfo[1] = GetPlayerVirtualWorld(playerid); Teleport = 1; format(stringmp, sizeof(stringmp), "Администратор %s[%d] открыл телепорт для игроков. Чтобы телепортироваться введите: {0abf12}/tpmp", GN(playerid), playerid); SCMTA(COLOR_GOLD, stringmp, 1); } else { Teleport = 0; format(stringmp, sizeof(stringmp), "Администратор %s[%d] закрыл телепорт для игроков. Телепортирование {CC0000}запрещено", GN(playerid), playerid); SCMTA(COLOR_GOLD, stringmp, 1); } } case 1: return ShowPlayerDialog(playerid, 5346, DIALOG_STYLE_INPUT, "{0CB4D6}Выдача оружия", "{FFFFFF}Введите ID оружия и патроны\nНапример: 31,500\nГде 31 - m4, а 500 патроны", "Выдать", "Назад"); case 2: { foreach (new i : Player) { if(GetDistanceBetweenPlayers(playerid, i) > 50) continue; SetPlayerHealthAC(i, 100.0); SCM(i, COLOR_WHITE, "{CC0000}[Информация] {FFFFFF}Администратор выдал Вам жизни для участия мероприятии!"); } } case 3: { foreach (new i : Player) { if(GetDistanceBetweenPlayers(playerid,i) > 50) continue; ResetPlayerWeapons(i); SCM(i, COLOR_WHITE, "{CC0000}[Информация] {FFFFFF}Администратор забрал у Вас оружие на время мероприятия!"); } } } ShowPlayerDialog(playerid, 5343, DIALOG_STYLE_LIST, "{0CB4D6}Меню создания мероприятия", "{FFFFFF}1. Создать/удалить телепорт\n2. Раздать оружие (в радиусе 50)\n3. Раздать жизни (в радиусе 50)\n4. Обезаружить всех (в радиусе 50)", "Выбрать", "Закрыть"); return 1; } Создаём дело 2 case 5346: { if(!response) return ShowPlayerDialog(playerid, 5343, DIALOG_STYLE_LIST, "{0CB4D6}Меню создания мероприятия", "{FFFFFF}1. Создать/удалить телепорт\n2. Раздать оружие (в радиусе 50)\n3. Раздать жизни (в радиусе 50)\n4. Обезаружить всех (в радиусе 50)", "Выбрать", "Закрыть"); if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 5346, DIALOG_STYLE_INPUT, "{0CB4D6}Выдача оружия", "{FFFFFF}Введите id оружия и патроны\nПример: 31,500\nГде 31 m4 а 500 патроны", "Выдать", "Назад"); else if(strfind(inputtext,",", true) != -1) { new razdel[2][24]; split(inputtext, razdel, ','); foreach (new i : Player) { if(GetDistanceBetweenPlayers(playerid, i) > 50) continue; GivePlayerWeaponAC(i, strval(razdel[0]), strval(razdel[1])); SCM(i, COLOR_WHITE, "{CC0000}[Информация] {FFFFFF}Администратор выдал Вам оружие для мероприятия. В случае DM - Варн!"); } } return 1; } Создаём дело 3 case 3333: { if(!response) return 1; SetPlayerPos(playerid, TeleportFloat[0], TeleportFloat[1]+2, TeleportFloat[2]); SetPlayerInterior(playerid, TeleportInfo[0]); SetPlayerVirtualWorld(playerid, TeleportInfo[1]); SCM(playerid, COLOR_ORANGE, "Вы были {0abf12}успешно {FFA500}телепортированы на мероприятие"); return 1; } case/GN(playerid)/playerid/pAdminLVL - заменять на свое значение Скриншёты Готово!
  19. Много я на форуме тут просил дабы мне перевели кмд,с простого командного процессора на zcmd или еще какие нибудь,но недавно наткнулся на урок,из которого я хоть чуть-чуть,но все же понял,как это делается,и хочу с вами им поделиться..дабы вы не задавали таких же глупых вопросов как я. ПРИСТУПИМ : (!)Команды построены на проверках. Обучимся на одной из готовых команд,выдачи жизней CMD:sethp(playerid, params[]) { new str[24]; if(sscanf(params,"ui",params[0],params[1])) return SendClientMessage(playerid, COLOR_WHITE,"Используйте: /sethp [id] [кол-во жизней]"); if(params[1] < 0 || params[1] > 100) return SendClientMessage(playerid, COLOR_GREY, "Нельзя дать менее 0 и более 100 жизней."); SetHealth(params[0],params[1]); format(str,sizeof(str), "%s установил вам жизней %d",PlayerInfo[params[0]][pName],params[1]); SendClientMessage(params[0],COLOR_WHITE, str); return true; Разберем код подробней... if(sscanf(params,"ui",params[0],params[1])) /* Это даем значения, если u - ид/имя игрока если i - число, и даем им значение params[0], params[1] все по порядку*/ SetHealth(params[0],params[1]); /*Опять же, params[0] - это ид игрока или имя которое мы ввели в команде, а params[1] это наше числовое значение i которое мы ввели когда прописывали команду.*/ if(params[1] < 0 || params[1] > 100) /*Это действие выводится когда вы ввели значение i - то есть params[1] меньше нуля либо больше 100*/ format(str,sizeof(str), "%s установил вам жизней %d",PlayerInfo[playerid][pName],params[1]); /* PlayerInfo[playerid][pName] где playerid - ид или имя игрока который прописал команду, params[1] - это опять же наше значение i SendClientMessage(params[0],COLOR_WHITE, str); /* Функция показывает сообщение в чат, а кому??? опять же params[0] ( то есть кому дали вы жизни - u ) Ну вот и все,благодаря данному мануалу я научился на половину переводить команды,и думаю вы тоже научитесь,удачи вам в ваших начинаниях Автор урока : DmX (Siman aka DmX) И еще если указывайте значение "S" то указывайте его вот так "S[24]"то есть добавляйте стринг,так как у многих новичков бывают проблемы,потом сервер выдает варнинги.. Всем спасибо,за то что прочитали данный мануал.. Вопросы задавайте попытаюсь ответить..
  20. Доброе утро друзья! Выкладываю для вас TextDraw магазина - иконки замените на свои new PlayerText:Shop[51][MAX_PLAYERS]; Shop[0][playerid] = CreatePlayerTextDraw(playerid,580.000000, 150.000000, "_"); PlayerTextDrawBackgroundColor(playerid,Shop[0][playerid], 255); PlayerTextDrawFont(playerid,Shop[0][playerid], 1); PlayerTextDrawLetterSize(playerid,Shop[0][playerid], 0.500000, 27.099996); PlayerTextDrawColor(playerid,Shop[0][playerid], -1); PlayerTextDrawSetOutline(playerid,Shop[0][playerid], 0); PlayerTextDrawSetProportional(playerid,Shop[0][playerid], 1); PlayerTextDrawSetShadow(playerid,Shop[0][playerid], 1); PlayerTextDrawUseBox(playerid,Shop[0][playerid], 1); PlayerTextDrawBoxColor(playerid,Shop[0][playerid], -424540161); PlayerTextDrawTextSize(playerid,Shop[0][playerid], 52.000000, 51.000000); PlayerTextDrawSetSelectable(playerid,Shop[0][playerid], 0); Shop[1][playerid] = CreatePlayerTextDraw(playerid,125.000000, 149.000000, "shop_background"); PlayerTextDrawBackgroundColor(playerid,Shop[1][playerid], 0); PlayerTextDrawFont(playerid,Shop[1][playerid], 5); PlayerTextDrawLetterSize(playerid,Shop[1][playerid], 0.500000, 1.000000); PlayerTextDrawColor(playerid,Shop[1][playerid], 983295); PlayerTextDrawSetOutline(playerid,Shop[1][playerid], 1); PlayerTextDrawSetProportional(playerid,Shop[1][playerid], 1); PlayerTextDrawUseBox(playerid,Shop[1][playerid], 1); PlayerTextDrawBoxColor(playerid,Shop[1][playerid], 0); PlayerTextDrawTextSize(playerid,Shop[1][playerid], 451.000000, 246.000000); PlayerTextDrawSetPreviewModel(playerid,Shop[1][playerid], 19376); PlayerTextDrawSetPreviewRot(playerid,Shop[1][playerid], 0.000000, 0.000000, 90.000000, 0.400000); PlayerTextDrawSetSelectable(playerid,Shop[1][playerid], 0); Shop[2][playerid] = CreatePlayerTextDraw(playerid,56.000000, 149.000000, "category_1_skins"),PlayerTextDrawSetPreviewRot(playerid, Shop[2][playerid], -10.000000, 0.000000, 0.000000, 1.000000); Shop[3][playerid] = CreatePlayerTextDraw(playerid,56.000000, 190.000000, "category_2_head"),PlayerTextDrawSetPreviewRot(playerid, Shop[3][playerid],-10.000000, 0.000000, 130.000000, 1.000000); Shop[4][playerid] = CreatePlayerTextDraw(playerid,56.000000, 231.000000, "category_3_glass"),PlayerTextDrawSetPreviewRot(playerid, Shop[4][playerid], -15.000000, 0.000000, 120.000000, 1.000000); Shop[5][playerid] = CreatePlayerTextDraw(playerid,56.000000, 272.000000, "category_4_car"),PlayerTextDrawSetPreviewRot(playerid, Shop[5][playerid], -15.000000, 0.000000, 40.000000, 1.000000); Shop[6][playerid] = CreatePlayerTextDraw(playerid,56.000000, 313.000000, "category_5_features(vip,double score etc)"),PlayerTextDrawSetPreviewRot(playerid, Shop[6][playerid], -90.000000, 180.000000, 0.000000, 1.000000); Shop[7][playerid] = CreatePlayerTextDraw(playerid,56.000000, 354.000000, "category_6_mask"),PlayerTextDrawSetPreviewRot(playerid, Shop[7][playerid], 0.000000, 0.000000, 50.000000, 1.000000); for(new i = 2,models[6] = {299,18963,19011,411,19792,19038}; i { PlayerTextDrawBackgroundColor(playerid,Shop[i][playerid], 68032255); PlayerTextDrawFont(playerid,Shop[i][playerid], 5); PlayerTextDrawLetterSize(playerid,Shop[i][playerid], 0.050000, 1.099900); PlayerTextDrawColor(playerid,Shop[i][playerid], -1); PlayerTextDrawSetOutline(playerid,Shop[i][playerid], 1); PlayerTextDrawSetProportional(playerid,Shop[i][playerid], 1); PlayerTextDrawUseBox(playerid,Shop[i][playerid], 1); PlayerTextDrawBoxColor(playerid,Shop[i][playerid], 0); PlayerTextDrawTextSize(playerid,Shop[i][playerid], 68.000000, 42.000000); PlayerTextDrawSetPreviewModel(playerid,Shop[i][playerid], models[i-2]); PlayerTextDrawSetSelectable(playerid,Shop[i][playerid], 1); } Shop[8][playerid] = CreatePlayerTextDraw(playerid,187.000000, 173.000000, "_"); Shop[9][playerid] = CreatePlayerTextDraw(playerid,296.000000, 173.000000, "_"); Shop[10][playerid] = CreatePlayerTextDraw(playerid,405.000000, 173.000000, "_"); Shop[11][playerid] = CreatePlayerTextDraw(playerid,514.000000, 173.000000, "_"); Shop[12][playerid] = CreatePlayerTextDraw(playerid,187.000000, 276.000000, "_"); Shop[13][playerid] = CreatePlayerTextDraw(playerid,296.000000, 276.000000, "_"); Shop[14][playerid] = CreatePlayerTextDraw(playerid,405.000000, 276.000000, "_"); Shop[15][playerid] = CreatePlayerTextDraw(playerid,514.000000, 276.000000, "_"); for(new i = 8; i { PlayerTextDrawAlignment(playerid,Shop[i][playerid], 2); PlayerTextDrawBackgroundColor(playerid,Shop[i][playerid], 255); PlayerTextDrawFont(playerid,Shop[i][playerid], 1); PlayerTextDrawLetterSize(playerid,Shop[i][playerid], 0.500000, 10.400005); PlayerTextDrawColor(playerid,Shop[i][playerid], -1); PlayerTextDrawSetOutline(playerid,Shop[i][playerid], 0); PlayerTextDrawSetProportional(playerid,Shop[i][playerid], 1); PlayerTextDrawSetShadow(playerid,Shop[i][playerid], 1); PlayerTextDrawUseBox(playerid,Shop[i][playerid], 1); PlayerTextDrawBoxColor(playerid,Shop[i][playerid], 623059967); PlayerTextDrawTextSize(playerid,Shop[i][playerid], 136.000000, 100.000000); PlayerTextDrawSetSelectable(playerid,Shop[i][playerid], 0); } Shop[16][playerid] = CreatePlayerTextDraw(playerid,137.000000, 173.000000, "item_1"); Shop[17][playerid] = CreatePlayerTextDraw(playerid,246.000000, 173.000000, "item_2"); Shop[18][playerid] = CreatePlayerTextDraw(playerid,355.000000, 173.000000, "item_3"); Shop[19][playerid] = CreatePlayerTextDraw(playerid,464.000000, 173.000000, "item_4"); Shop[20][playerid] = CreatePlayerTextDraw(playerid,137.000000, 276.000000, "item_5"); Shop[21][playerid] = CreatePlayerTextDraw(playerid,246.000000, 276.000000, "item_6"); Shop[22][playerid] = CreatePlayerTextDraw(playerid,355.000000, 276.000000, "item_7"); Shop[23][playerid] = CreatePlayerTextDraw(playerid,464.000000, 276.000000, "item_8"); for(new i = 16; i { PlayerTextDrawBackgroundColor(playerid,Shop[i][playerid], 235802623); PlayerTextDrawFont(playerid,Shop[i][playerid], 5); PlayerTextDrawLetterSize(playerid,Shop[i][playerid], 0.500000, 1.000000); PlayerTextDrawColor(playerid,Shop[i][playerid], -1); PlayerTextDrawSetOutline(playerid,Shop[i][playerid], 0); PlayerTextDrawSetProportional(playerid,Shop[i][playerid], 1); PlayerTextDrawSetShadow(playerid,Shop[i][playerid], 1); PlayerTextDrawUseBox(playerid,Shop[i][playerid], 1); PlayerTextDrawBoxColor(playerid,Shop[i][playerid], 255); PlayerTextDrawTextSize(playerid,Shop[i][playerid], 100.000000, 80.000000); PlayerTextDrawSetPreviewModel(playerid,Shop[i][playerid], 18631);//default: question mark PlayerTextDrawSetPreviewRot(playerid,Shop[i][playerid], -16.000000, 0.000000, -55.000000, 1.000000); PlayerTextDrawSetSelectable(playerid,Shop[i][playerid], 1); } Shop[24][playerid] = CreatePlayerTextDraw(playerid,185.000000, 176.000000, "item 1");//shark Shop[25][playerid] = CreatePlayerTextDraw(playerid,294.000000, 176.000000, "item 2");//dolphin Shop[26][playerid] = CreatePlayerTextDraw(playerid,403.000000, 176.000000, "item 3");//sword Shop[27][playerid] = CreatePlayerTextDraw(playerid,513.000000, 176.000000, "item 4");//fan Shop[28][playerid] = CreatePlayerTextDraw(playerid,185.000000, 278.000000, "item 5");//skate Shop[29][playerid] = CreatePlayerTextDraw(playerid,293.000000, 278.000000, "item 6");//parrot Shop[30][playerid] = CreatePlayerTextDraw(playerid,406.000000, 278.000000, "item 7");//police shield Shop[31][playerid] = CreatePlayerTextDraw(playerid,513.000000, 278.000000, "item 8");//vest for(new i = 24; i { PlayerTextDrawAlignment(playerid,Shop[i][playerid], 2); PlayerTextDrawBackgroundColor(playerid,Shop[i][playerid], 255); PlayerTextDrawFont(playerid,Shop[i][playerid], 2); PlayerTextDrawLetterSize(playerid,Shop[i][playerid], 0.300000, 1.899999); PlayerTextDrawColor(playerid,Shop[i][playerid], -1462501377); PlayerTextDrawSetOutline(playerid,Shop[i][playerid], 0); PlayerTextDrawSetProportional(playerid,Shop[i][playerid], 1); PlayerTextDrawSetShadow(playerid,Shop[i][playerid], 0); PlayerTextDrawSetSelectable(playerid,Shop[i][playerid], 0); } Shop[32][playerid] = CreatePlayerTextDraw(playerid,129.000000, 253.000000, "cost_1"); Shop[33][playerid] = CreatePlayerTextDraw(playerid,238.000000, 253.000000, "cost_2"); Shop[34][playerid] = CreatePlayerTextDraw(playerid,348.000000, 253.000000, "cost_3"); Shop[35][playerid] = CreatePlayerTextDraw(playerid,458.000000, 253.000000, "cost_4"); Shop[36][playerid] = CreatePlayerTextDraw(playerid,129.000000, 356.000000, "cost_5"); Shop[37][playerid] = CreatePlayerTextDraw(playerid,238.000000, 356.000000, "cost_6"); Shop[38][playerid] = CreatePlayerTextDraw(playerid,348.000000, 356.000000, "cost_7"); Shop[39][playerid] = CreatePlayerTextDraw(playerid,458.000000, 356.000000, "cost_8"); for(new i = 32; i { PlayerTextDrawBackgroundColor(playerid,Shop[i][playerid], 0); PlayerTextDrawFont(playerid,Shop[i][playerid], 5); PlayerTextDrawLetterSize(playerid,Shop[i][playerid], 0.500000, 1.000000); PlayerTextDrawColor(playerid,Shop[i][playerid], -1); PlayerTextDrawSetOutline(playerid,Shop[i][playerid], 0); PlayerTextDrawSetProportional(playerid,Shop[i][playerid], 1); PlayerTextDrawSetShadow(playerid,Shop[i][playerid], 1); PlayerTextDrawUseBox(playerid,Shop[i][playerid], 1); PlayerTextDrawBoxColor(playerid,Shop[i][playerid], 0); PlayerTextDrawTextSize(playerid,Shop[i][playerid], 33.000000, 15.000000); PlayerTextDrawSetPreviewModel(playerid, Shop[i][playerid], 1274); PlayerTextDrawSetPreviewRot(playerid, Shop[i][playerid], 0.000000, 0.000000, 0.000000, 1.000000); PlayerTextDrawSetSelectable(playerid,Shop[i][playerid], 0); } Shop[40][playerid] = CreatePlayerTextDraw(playerid,181.000000, 254.000000, "2,000");//item cost 1 Shop[41][playerid] = CreatePlayerTextDraw(playerid,289.000000, 254.000000, "4,650");//item cost 2 Shop[42][playerid] = CreatePlayerTextDraw(playerid,400.000000, 254.000000, "21,200");//item cost 3 Shop[43][playerid] = CreatePlayerTextDraw(playerid,510.000000, 254.000000, "14,390");//item cost 4 Shop[44][playerid] = CreatePlayerTextDraw(playerid,181.000000, 357.000000, "7,100");//item cost 5 Shop[45][playerid] = CreatePlayerTextDraw(playerid,291.000000, 357.000000, "8,400");//item cost 6 Shop[46][playerid] = CreatePlayerTextDraw(playerid,399.000000, 357.000000, "16,650");//item cost 7 Shop[47][playerid] = CreatePlayerTextDraw(playerid,510.000000, 357.000000, "19,090");//item cost 8 for(new i = 40; i { PlayerTextDrawAlignment(playerid,Shop[i][playerid], 2); PlayerTextDrawBackgroundColor(playerid,Shop[i][playerid], 102); PlayerTextDrawFont(playerid,Shop[i][playerid], 3); PlayerTextDrawLetterSize(playerid,Shop[i][playerid], 0.449999, 1.399999); PlayerTextDrawColor(playerid,Shop[i][playerid], -1); PlayerTextDrawSetOutline(playerid,Shop[i][playerid], 1); PlayerTextDrawSetProportional(playerid,Shop[i][playerid], 1); PlayerTextDrawSetSelectable(playerid,Shop[i][playerid], 0); } Shop[48][playerid] = CreatePlayerTextDraw(playerid,300.000000, 375.000000, "~ PlayerTextDrawBackgroundColor(playerid,Shop[48][playerid], 255); PlayerTextDrawFont(playerid,Shop[48][playerid], 1); PlayerTextDrawLetterSize(playerid,Shop[48][playerid], 0.559998, 1.700000); PlayerTextDrawColor(playerid,Shop[48][playerid], -1); PlayerTextDrawSetOutline(playerid,Shop[48][playerid], 0); PlayerTextDrawSetProportional(playerid,Shop[48][playerid], 1); PlayerTextDrawSetShadow(playerid,Shop[48][playerid], 1); PlayerTextDrawSetSelectable(playerid,Shop[48][playerid], 1); Shop[49][playerid] = CreatePlayerTextDraw(playerid,369.000000, 375.000000, "~>~"); PlayerTextDrawBackgroundColor(playerid,Shop[49][playerid], 255); PlayerTextDrawFont(playerid,Shop[49][playerid], 1); PlayerTextDrawLetterSize(playerid,Shop[49][playerid], 0.559998, 1.700000); PlayerTextDrawColor(playerid,Shop[49][playerid], -1); PlayerTextDrawSetOutline(playerid,Shop[49][playerid], 0); PlayerTextDrawSetProportional(playerid,Shop[49][playerid], 1); PlayerTextDrawSetShadow(playerid,Shop[49][playerid], 1); PlayerTextDrawSetSelectable(playerid,Shop[49][playerid], 1); Shop[50][playerid] = CreatePlayerTextDraw(playerid,342.000000, 377.000000, "1/7"); PlayerTextDrawAlignment(playerid,Shop[50][playerid], 2); PlayerTextDrawBackgroundColor(playerid,Shop[50][playerid], 255); PlayerTextDrawFont(playerid,Shop[50][playerid], 2); PlayerTextDrawLetterSize(playerid,Shop[50][playerid], 0.469999, 1.399999); PlayerTextDrawColor(playerid,Shop[50][playerid], -1); PlayerTextDrawSetOutline(playerid,Shop[50][playerid], 1); PlayerTextDrawSetProportional(playerid,Shop[50][playerid], 1); PlayerTextDrawSetSelectable(playerid,Shop[50][playerid], 0); Скриншёт Посмотреть изображение Автор: ziponz
  21. Всем привет. Сегодня я вам расскажу, как подключить TextDraw, а именно логотип сервера. Для начала нам нужен сам TextDraw и мод. 1. Открываем мод. 2. Открываем TextDraw 3. Видим в TextDraw'e "new TextDraw0;" и так далее. Меняете их имя(Можно не менять). Я буду менять на "new Logotip0;" и так далее. 4. Заходим в мод и нажимаем на Бинокль(Поиск), вводим new и ищем до тех пор, пока не увидим сплошные "new", а точнее "new" одна за одной. 5. Можно разделить //, но я не буду. Вставляем наши переменные, у меня их 6. 6. Идём снова в TextDraw видим там к примеру "NameServer" - меняем на название своего сервера. Обычно идут сразу "NameServer RP". Но могут и так, сначала "NameServer", а потом уже "RP". Если 1 вариант, меняем только название на ваш сервер, в принципе и во 2-м варианте так. Теперь копируем это. 7. Заходим в мод и ищем "OnGameModeInit", после "{" отступаем на новую строку, нажимаем 1 раз кнопку TAB и вставляем наш код, если код вставился не ровно, корректируем его. 8. Переходим в "OnPlayerConnect"(Когда игрок подключается к серверу), снова видим "{" отступаем 1 строку жмём 1 раз TAB и пишем так: TextDrawShowForPlayer(playerid, NameServer0);//Пишем имя вашей переменной, если у вас 1 так и оставляем, если у вас больше то ещё делаем, у меня их 6. Значит я делаю так: TextDrawShowForPlayer(playerid, NameServer1); TextDrawShowForPlayer(playerid, NameServer2); TextDrawShowForPlayer(playerid, NameServer3); TextDrawShowForPlayer(playerid, NameServer4); TextDrawShowForPlayer(playerid, NameServer5); Компилируем мод и всё. У нас всё готов! Если возникнут какие-то проблемы при компилировании пишите сюда! Ах, да Можно ещё в "OnPlayerDisconnect" Добавить это: TextDrawDestory(playerid, Logotip0);//Убираем наш TextDraw, когда игрок вышел с сервера. TextDrawDestory(playerid, Logotip1); TextDrawDestory(playerid, Logotip2); TextDrawDestory(playerid, Logotip3); TextDrawDestory(playerid, Logotip4); TextDrawDestory(playerid, Logotip5); Но это необязательно. Надеюсь урок вам помог. Хотя это не так трудно, как кажется. Автор урока: Дмитрий Кнороз(Т.е я)
  22. Защита от пустых сообщений в конец мода bool:emptyMessage(const string[]) { for(new i; string[i] != 0x0; i++) { switch(string[i]) { case 0x20: continue; default: return false; } } return true; } в OnPlayerText if(emptyMessage(text)) return SendClientMessage(playerid,-1,"[FAIL]: Пустое сообщение!") & 0; return true; Автор: MotoSport
  23. Привет! Предположим, что подключился игрок с ником (именем) "Player", тогда ему будет написано: "Добро пожаловать на сервер" В public OnPlayerConnect(playerid) new PlayerName[30], str[256]; GetPlayerName(playerid, PlayerName, 30); format(str, 256, "Добро пожаловать %s на сервер", PlayerName); SendClientMessage(playerid, 0xFF9900AA, str); Автор: Неизвестно
  24. Привет! Команда для того что бы администратор мог забрать паспорт у игрока Ко всем #define: #define COLOR_GRAD1 0xB4B5B7FF #define COLOR_WHITE 0xFFFFFFAA #define COLOR_GREY 0xAFAFAFAA Вставляем в public OnPlayerCommandText: if (strcmp(cmd, "/clearpass", true) == 0) { if(IsPlayerConnected(playerid)) { if(PlayerInfo[playerid][pAdmin] >= 6) //Делаем проверку на администратора { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD1, "Используйте: /clearpass [ID]"); return 1; } giveplayerid = ReturnUser(tmp); if(IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { PlayerInfo[giveplayerid][pPasport] = 0; SendClientMessage(playerid,COLOR_WHITE," Теперь у этого игрока нет паспорта"); SendClientMessage(giveplayerid,COLOR_WHITE," Администратор очистил твой паспорт"); } } else { SendClientMessage(playerid, COLOR_GREY, "Нет такого игрока"); } } else { SendClientMessage(playerid, COLOR_GREY, "Вы не администратор сервера!"); } } return 1; } Готово! Автор: Monolit
  25. Здравствуйте! Команда для парковки автомобиля Команда чтобы припарковать авто самим игроком: if(strcmp(cmd, "/park", true) == 0) { if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GRAD2, "Вы должны быть в авто"); new cars = GetPlayerVehicleID(playerid); if(GetRealID(cars) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Вы должны быть в своём авто"); if(!strcmp(CarInfo[GetRealID(cars)][cOwner],Name(playerid),false)||!strcmp(CarInfo[GetRealID(cars)][cOwnerm],Name(playerid),false)) { CarInfo[GetRealID(cars)][cFrontBullbars] = 0; GetVehiclePos(cars, CarInfo[GetRealID(cars)][cPx],CarInfo[GetRealID(cars)][cPy],CarInfo[GetRealID(cars)][cPz]); GetVehicleZAngle(cars, CarInfo[GetRealID(cars)][cPa]); SendClientMessage(playerid, -1, "Теперь ваш автомобиль будет припаркован в этом месте"); SaveCar(GetRealID(cars)); return 1; } else return SendClientMessage(playerid, COLOR_GRAD2, "Это не ваш транспорт"); } Команда чтобы припарковать авто Администратором: if(strcmp(cmd, "/apark", true) == 0) { if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GRAD2, "Вы должны быть в авто"); new cars = GetPlayerVehicleID(playerid); if(ServerClosed==1){SendClientMessage(playerid, COLOR_GRAD2, "Кмд временно не работает");return 1;} if(GetRealID(cars) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Вы должны быть в своём авто"); if(PlayerInfo[playerid][pAdmin] >= 3) { GetVehiclePos(cars, CarInfo[GetRealID(cars)][cPx],CarInfo[GetRealID(cars)][cPy],CarInfo[GetRealID(cars)][cPz]); GetVehicleZAngle(cars, CarInfo[GetRealID(cars)][cPa]); SaveCar(GetRealID(cars)); SendClientMessage(playerid, COLOR_GRAD2, "Теперь этот автомобиль будет припаркован в этом месте"); return 1; } Готово! Автор: Kostyaev
×

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

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