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

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

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

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

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

Тип контента


Форумы

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

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

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


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

  • Начало

    Конец


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

  • Начало

    Конец


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

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

  1. dima47rus110

    Пробег Gamer

    Решил вырезать пробег для мода с основой Gamer Добавим к enum CarsInfo Float:cProbeg, Ко всем new new Text:Rhymed35[MAX_PLAYERS]; Далее в public OtherTimer new estr[32]; if(IsPlayerInAnyVehicle(i)) { format(estr,32,"~w~ЈPOЂE‚: ~g~~h~%.1f~r~ KM",CarInfo[GetPlayerVehicleID(i)][cProbeg]); TextDrawSetString(Rhymed35[i],estr); } public OnPlayerConnect(playerid) Rhymed35[playerid] = TextDrawCreate(495.000000, 370.000000," ");//ПРОБЕГ++++ 390 TextDrawFont(Rhymed35[playerid],2); TextDrawSetOutline(Rhymed35[playerid], 1); TextDrawLetterSize(Rhymed35[playerid], 0.45, 1.5); TextDrawColor(Rhymed35[playerid],225); TextDrawShowForPlayer(playerid, Rhymed35[playerid]); TextDrawSetProportional(Rhymed35[playerid],1); TextDrawBoxColor(Rhymed35[playerid], 80);//70 public OnPlayerCommandText(playerid, cmdtext[]) if(strcmp(cmd,"/carpasport",true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /passcar [id]"); giveplayerid = ReturnUser(tmp); new veh = GetPlayerVehicleID(playerid); if(GetRealID(veh) == -1) return SendClientMessage(playerid, COLOR_GRAD2, "Вы должны быть в своём автомобиле"); if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GRAD2, "Вы не в машине!"); if(IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { GetPlayerName(playerid, sendername, sizeof(sendername)); format(string,sizeof(string),"\t{FFFFFF}Модель транспорта:%s\n\t{FFFFFF}Владелец:%s\n\t{FFFFFF}Пробег транспорта:%.1f",VehiclesName[GetVehicleModel(GetPlayerVehicleID(playerid))-400], sendername,CarInfo[veh][cProbeg]); ShowPlayerDialog(giveplayerid,499,DIALOG_STYLE_MSGBOX,"Технический талон транспорта.",string,"Посмотрел","Х");//Если диалог 499 присутствует,то замените на любой другой,которого нету(чтобы окно закрылось) return true; } } } К команде /savecar(по умолчанию) CarInfo[AllCars][cProbeg] = 0; public OnPlayerDisconnect(playerid, reason) TextDrawHideForPlayer(playerid,Rhymed35[playerid]); TextDrawDestroy(Rhymed35[playerid]); public OnPlayerStateChange(playerid, newstate, oldstate) if(oldstate-1 && newstate) TextDrawHideForPlayer(playerid,Rhymed35[playerid]); else if(newstate-1) TextDrawShowForPlayer(playerid,Rhymed35[playerid]); stock LoadCar() ini_getFloat(iniOpen, "cProbeg", CarInfo[car][cProbeg]); stock SaveCar(car) ini_setFloat(iniOpen, "cProbeg", CarInfo[car][cProbeg]); stock CreateCar(car) ini_setFloat(iniOpen, "cProbeg", CarInfo[car][cProbeg]); И в конец мода forward Speeeeed(); public Speeeeed() { foreach(Player, playerid) { new Float:sp = GetPlayerSpeed(playerid),Float:ms; ms = (sp/1.4)/700;//1000 CarInfo[GetPlayerVehicleID(playerid)][cProbeg] += ms; } return 1; } У некоторых не обновлялся пробег,добавьте к таймерам(забыл про него) SetTimer("Speeeeed",6000, 1); Обязательно подключите инклуд "foreach",если не подключен Ко всем инклудам,если нету,то скачайте и закиньте в папку сервер/pawno/include/сюда include <foreach> Не знаю надо ли кому это,но решил вырезать,т.к. очень многие искали пробег Пробег не сохраняется после рестарта,кто знает как исправить отпишитесь пожалуйста! Скрины: http://radikall.com/image/V52V http://radikall.com/image/V52H http://radikall.com/image/V52b
  2. Здравствуйте! Эта тема для тех, кто не знает как ставить анти чит в мод. Начнем. Ко всем include добавляем: #include <a_samp> Затем ко всем new: new Money[MAX_PLAYERS]; Теперь ищем форвары и ко всем forward: forward Loshadka(); И теперь в public вставим это: public Loshadka() { for(new i =0;i<MAX_PLAYERS;i++) { if(GetPlayerMoney(i) != Money[i]) { GivePlayerMoney(i,Money[i]-GetPlayerMoney(i)); //SendClientMessage(i,0xFEFEFEFF,"Не шали с читами тута"); } } } stock ResetPlMon(playerid) { Money[playerid] =0; GivePlayerMoney(playerid,0-GetPlayerMoney(playerid)); return 1; } stock GiveMoney(playerid,a) { Money[playerid] += a; GivePlayerMoney(playerid,a); return 1; } На этом все.
  3. Здравствуйте уважаемые пользователи gs-games. Не знаю есть эта тема или нет... У нас будет сохраняться админка, деньги и Email. Начнем. 1. В самом начале моде вставляем #include <mxINI> 2. Чуть ниже добавляем #define SCM SendClientMessage #define SPD ShowPlayerDialog #define DSI DIALOG_STYLE_INPUT #define DSM DIALOG_STYLE_MSGBOX 3. После этого ниже добавим new sendername[MAX_PLAYER_NAME]; 4. Теперь создадим enum pInfo А значит еще ниже добавляем enum pInfo { pMoney, pPassword[33], pAdmin, pSkin, pEmail[64], }; new Player[MAX_PLAYERS][pInfo]; 5. Дальше создадим простые правила.А значит ниже добавляем new Rules[][] = { {"1. Игровой процесс\n"}, {"Запрещено:\n"}, {"Использование любых программ скриптов читов и.т.п. дающие нечестное преймущество в игре.\n"}, {"Использование багов (Ошибок, Неисправностей мода).\n"}, {"Использовать ESC в целях ухода от погони/смерти.\n"}, {"Убивать игроков на спавне (Место возрождения, базы организаций).\n"}, {"Убивать игроков при помощи транспорта (Давить, Стрелять с водительского места).\n"}, {"Убийство/нанесение физического вреда игрокам без причины (ДМ - Death Match).\n"}, {"Злоупотребление игровыми возможностями для создания неудобств игрокам.\n\n"}, {"2. Ник в игре\n"}, {"(сменить ник можно через /mm » Сменить ник)\n"}, {"Ник должен состоять из Имени_Фамилии с заглавных букв.\n"}, {"Запрещено:\n"}, {"Запрещено использовать чужие (уже кем-то занятые) ники.\n"}, {"Запрещено использовать ники, содержащие нецензурные или оскорбительные слова.\n"}, {"Отправлять более одной заявки в час (Исключение: Просьба Администрации).\n"}, {"Если вам отказали в смене ника, Значит нельзя.\n"} }; И сразу после этого добавим new Rules_2[][] = { {"{FFFFFF}3. Чат\n"}, {"OOC (Out Of Charter) - это всё, что касается реального мира.\n"}, {"IC (In Charter) - это всё, что касается виртульного мира, то есть игры.\n"}, {"Запрещено:\n"}, {"Ругательство, оскорбления или нецензурная речь.\n"}, {"Угрозы игрокам (Не относящиеся к игровому процессу).\n"}, {"Писать сообщения в верхнем регистре (Caps Lock).\n"}, {"Писать в чат объявлений сообщения не относящихся к Role Play.\n"}, {"Писать одно и тоже сообщение слишком часто.\n"}, {"Обсуждать, критиковать действия администрации.\n"}, {"Реклама сторонних ресурсов.\n\n"}, {"{FFFFFF}4. Администрация сервера\n"}, {"Необходимо сообщать администрации о каких либо нарушениях из данных правил (/mm {FFFFFF}> Репорт).\n"}, {"Администрация самостоятельно выбирает штрафные санкции для каждого из случаев.\n"}, {"Запрещено препятствовать администрации в работе.\n"}, {"Решение администрации является окончательным и не подлежит обсуждению.\n\n"}, {"{FFFFFF}5. Торговля.\n"}, {"Запрещены любые денежные махинации.\n"}, {"Запрещена продажа / покупка чего либо, за реальные деньги.\n"}, {"Запрещен обмен внеигровых предметов в любой форме, на игровые.\n"}, {"Запрещен обмен чего либо между игровыми серверами.\n"}, {"Запрещена продажа / передача аккаунтов.\n"} }; 6. Далее переходим в public OnPlayerRequestClass(playerid, classid) Все что там есть стираем. И добавляем это { if(GetPVarInt(playerid, "Logged") == 1) return SpawnPlayer(playerid); SetPlayerInterior(playerid,0); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); GetPlayerName(playerid, sendername, sizeof(sendername)); new str[320], small[150]; switch(GetPVarInt(playerid, "Account")) { case 0: { format(small, sizeof(small), "{FFFFFF}Добро пожаловать на сервер new-server\nЭтот аккаунт не зарегистрирован\nЧтобы начать игру нужно пройти регистрацию\n\n"); strcat(str, small); format(small, sizeof(small), "\t\t• Пароль должен состоять из Латинских букв\n\t\t• Длина пароля от 6 до 15 символов\n\nВаш логин: %s\nПридумайте свой пароль:",sendername); strcat(str, small); SPD(playerid, 1, DSI, "{FFFFFF}• Регистрация •", str, "Готово", "Отмена"); } case 1: { format(str, sizeof(str), "{FFFFFF}Добро пожаловать на сервер new-server\nЭтот аккаунт зарегистрирован\nЧтобы начать игру нужно Авторизоваться\n\nВаш логин: %s\nВведите свой пароль:",sendername); SPD(playerid, 5, DSI, "{FFFFFF}• Авторизация •", str, "Войти", "Отмена"); } } return 1; } 7. Ищем public OnPlayerConnect(playerid) И вставляем туда { new string[42]; GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "players/%s.ini", sendername); if(fexist(string)) SetPVarInt(playerid, "Account",1); else SetPVarInt(playerid, "Account",0); return 1; } 8. Идем в public OnPlayerDisconnect(playerid, reason) И вставим туда { if(GetPVarInt(playerid, "Logged") == 1) SavePlayer(playerid); return 1; } 9. Теперь переходим в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) И вставляем туда это { new string[128]; switch(dialogid) { case 1: { if(!response) return Kick(playerid); RegisterPlayer(playerid, inputtext); } case 2: { if(!response) { GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "players/%s.ini",sendername); fremove(string); return true; } new Rules_2_str[1000]; format(Rules_2_str, sizeof(Rules_2_str), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",Rules_2[0],Rules_2[1],Rules_2[2],Rules_2[3],Rules_2[4],Rules_2[5],Rules_2[6],Rules_2[7],Rules_2[8],Rules_2[9],Rules_2[10],Rules_2[11],Rules_2[12],Rules_2[13],Rules_2[14],Rules_2[15],Rules_2[16],Rules_2[17],Rules_2[18],Rules_2[19],Rules_2[20],Rules_2[21]); SPD(playerid, 3, DSM, "{FFFFFF}• Правила сервера •", Rules_2_str, "Согласен", "Выйти"); } case 3: { if(!response) { GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "players/%s.ini",sendername); fremove(string); return true; } SPD(playerid, 4, DSI, "{FFFFFF}• Электронная почта •", "{FFFFFF}Пожалуйста введите действующий адрес электронной почты.\nЕсли вы забудите пароль на него будет выслан новый", "Готово", ""); } case 4: { if(!response) return Kick(playerid); strmid(Player[playerid][pEmail],inputtext,0,strlen(inputtext),255); GetPlayerName(playerid, sendername, sizeof(sendername)); new str[186]; format(str, sizeof(str), "{FFFFFF}Добро пожаловать на сервер new-server\nЭтот аккаунт зарегистрирован\nЧтобы начать игру нужно Авторизоваться\n\nВаш логин: %s\nВведите свой пароль:",sendername); SPD(playerid, 5, DSI, "{FFFFFF}• Авторизация •", str, "Войти", "Отмена"); } case 5: { if(!response) return Kick(playerid); LoginPlayer(playerid, inputtext); } } return 1; } stock RegisterPlayer(playerid, inputtext[]) { if(!IsPlayerConnected(playerid)) return true; new string[40]; GetPlayerName(playerid, sendername, sizeof(sendername)); Player[playerid][pMoney] = 500; Player[playerid][pAdmin] = 0; format(string,sizeof(string), "players/%s.ini", sendername); new accountFile = ini_createFile(string); if(accountFile < 0) { accountFile = ini_openFile(string); } if(accountFile >= 0) { strmid(Player[playerid][pPassword],inputtext,0,strlen(inputtext),255); ini_setString(accountFile,"Password",Player[playerid][pPassword]); ini_closeFile(accountFile); } new Rules_str[1000]; format(Rules_str, sizeof(Rules_str), "{FFFFFF}%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",Rules[0],Rules[1],Rules[2],Rules[3],Rules[4],Rules[5],Rules[6],Rules[7],Rules[8],Rules[9],Rules[10],Rules[11],Rules[12],Rules[13],Rules[14],Rules[15],Rules[16]); SPD(playerid, 2, DSM, "{FFFFFF}• Правила сервера •", Rules_str, "Согласен", "Выйти"); return 1; } stock LoginPlayer(playerid, inputtext[]) { new string[40],pass[32]; GetPlayerName(playerid, sendername, sizeof(sendername)); format(string,sizeof(string), "players/%s.ini", sendername); new File = ini_openFile(string); ini_getString(File,"Password",pass,32); if(strcmp(pass, inputtext, true) != 0) { Kick(playerid); } else { ini_getInteger(File,"Money",Player[playerid][pMoney]); ini_getInteger(File,"Admin",Player[playerid][pAdmin]); ini_getInteger(File,"Skin",Player[playerid][pSkin]); ini_getString(File,"Email",Player[playerid][pEmail],64); SCM(playerid, -1, "Вы успешно авторизовались!"); SpawnPlayer(playerid); SetPVarInt(playerid, "Logged", 1); } return 1; } stock SavePlayer(playerid) { if(!IsPlayerConnected(playerid) && GetPVarInt(playerid, "Logged") == 0) return true; new string[40]; GetPlayerName(playerid, sendername, sizeof(sendername)); format(string,sizeof(string), "players/%s.ini", sendername); new File = ini_openFile(string); ini_setInteger(File, "Money",Player[playerid][pMoney]); ini_setInteger(File,"Admin",Player[playerid][pAdmin]); ini_setInteger(File,"Skin",Player[playerid][pSkin]); ini_setString(File,"Email",Player[playerid][pEmail]); ini_closeFile(File); return 1; } И так на этом наш урок заканчивается. Спасибо за внимание. Скрин регистрации. http://rghost.ru/52319742
  4. EgorKa29

    Телепорт по TAB

    Здравствуйте уважаемые пользователи gs-games. Сегодня я хочу рассказать вам как создать телепорт по кнопке TAB. Начнем. 1. В public OnPlayerClickPlayer(playerid, clickedplayerid, source) Добавляем if(PlayerInfo[playerid][pAdmin] < 1) return true; new Float:x,Float:y,Float:z; GetPlayerPos(clickedplayerid,x,y,z);//текущие координаты игрока, на которого кликаем if (GetPlayerState(playerid) == 2)//находитесь ли вы сейчас в автомобиле { SetVehiclePos(GetPlayerVehicleID(playerid), x, y+4, z);//перемещаем автомобиль по координатам игрока LinkVehicleToInterior(GetPlayerVehicleID(playerid), GetPlayerInterior(clickedplayerid));// загружаем его интерьер SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(clickedplayerid));//загружаем его виртуальный мир } else//если вы пешком { SetPlayerPos(playerid,x,y+2,z);//телепортируем к игроку SetPlayerInterior(playerid,GetPlayerInterior(clickedplayerid));// загружаем его интерьер SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(clickedplayerid));//загружаем его виртуальный мир SendClientMessage(playerid, COLOR_GREY, "Вы телепортировались к игроку"); } Вот и все не чего сложного нет. Ну как же без скринов. Скрины. 1. http://imgdepo.ru/id/i6060290 2. http://imgdepo.ru/id/i6060295
  5. Вы все знаете эту команду.и да я уверен она есть у всех!Но я выкладываю для новичков которые только начинают в скриптинге или тем кто пишет свой мод с 0. ну ладно приступим вот команда: if(strcmp(cmd, "/slap", true) == 0) { if(Offlineonline(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /slap [playerid/PartOfName]"); return 1; } new playa; new Float:shealth; new Float:slx, Float:sly, Float:slz; playa = strval(tmp); if (PlayerInfo[playerid][pAdmin] >=3) { if(Offlineonline(playa)) { if(playa != INVALID_PLAYER_ID) { if(PlayerlogInfo[playa][lgolos] == 99||PlayerlogInfo[playa][lgolos] == 100){SendClientMessage(playerid, COLOR_ISPOLZUY,"Игрок имеет неприкосновенность!");return 1;} GetPlayerName(playa, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); GetPlayerHealth(playa, shealth); SetPlayerHealth(playa, shealth-5); GetPlayerPos(playa, slx, sly, slz); SetPlayerPos(playa, slx, sly, slz+5); PlayerPlaySound(playa, 1130, slx, sly, slz+5); printf("Админ: %s Подкинул %s",sendername, giveplayer); format(string, sizeof(string), "Администратор %s Дал ремешком по жопе игроку: %s ",sendername,giveplayer ); ABroadCast(0xD30505AA,string,1,playerid); } } } else { SendClientMessage(playerid, COLOR_GRAD1, "У вас нет прав на использование этой команды!"); } } return 1; }
  6. Здравствуйте уважаемые форумчане! Решил вырезать из своего мода команду на рестарт(но это не обычная команда на рестарт,она с причиной) Ну все хватит говорить попусту приступим к работе! 1)Добавляем в public OnDialogResponse следующее: if(dialogid == 564) { if(response) { new pname[MAX_PLAYER_NAME]; new string[256]; GetPlayerName(playerid, pname, MAX_PLAYER_NAME); SendClientMessage(playerid,-1,"---------------------------------------------------------"); format(string, sizeof(string), "Гл.администратор %s : произвел рестарт сервера.", pname); SendClientMessageToAll(COLOR_GREEN,string); format(string, sizeof(string), "Причина рестарта: %s ",inputtext); SendClientMessageToAll(COLOR_RED,string); SendClientMessage(playerid,COLOR_YELLOW,"Через 10 секунды произодет рестарт"); SetTimer("GameModeInitExitFunc", 10000, false); SendClientMessage(playerid,-1,"---------------------------------------------------------"); new message[256]; format(message,sizeof(message),"Администратор: %s рестарт причина: %s",pname,inputtext); SendClientMessageToAll(COLOR_LIGHTBLUE,string); } else { SendClientMessage(playerid, COLOR_GRAD2, "Вы отменили рестарт"); return 1; }} Ну и саму команду для рестарта: if(strcmp(cmd, "/restart", true) == 0) { if(IsPlayerConnected(playerid)) { if(PlayerInfo[playerid][pAdmin] >= 4) { ShowPlayerDialog(playerid,564,DIALOG_STYLE_INPUT,"Причина","Введите причину рестарта","ОК","Отмена"); } else { SendClientMessage(playerid, COLOR_GREEN, "Вы не уполномочены!"); } } return true; } Вот и все если есть недочеты я думаю вы исправите!Спасибо за внимание!Не судите строго
  7. Всем привет Вот вырезал из своего мода, может кому надо. Варны можно снять обычной /unwarn if(strcmp(cmd, "/awarn", true) == 0) { if (PlayerInfo[playerid][pAdmin] >= 7) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /awarn [id] [причина]"); if (dostup[playerid] != 1) return ShowPlayerDialog(playerid,2934,DIALOG_STYLE_INPUT,"Доступ администратора","Введите пароль от административной панели","Ок","Отмена"); giveplayerid = ReturnUser(tmp); if (PlayerInfo[playerid][pAdmin] >= 7) { if(IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /awarn [id] [причина]"); PlayerInfo[giveplayerid][pWarns] += 1; PlayerInfo[giveplayerid][pAdmin] -=1; if(PlayerInfo[giveplayerid][pWarns] >= 3) { new ip[256]; new year, month,day; getdate(year, month, day); format(string, sizeof(string), "{ff4f30}Администратор %s был снят с администрирования админом %s [%d/3] предупреждений.", giveplayer,sendername,PlayerInfo[giveplayerid][pWarns]); SendClientMessageToAll(COLOR_LIGHTRED, string); format(string, sizeof(string), "Вы были сняты с должности администратора!"); SendClientMessage(giveplayerid, COLOR_LIGHTRED, string); GetPlayerIp(giveplayerid,ip,sizeof(ip)); PlayerInfo[giveplayerid][pAdmin] = 0; PlayerInfo[giveplayerid][pHelper] = 0; format(string, sizeof(string), "- Ник: [%s] IP: [%s]",giveplayer,ip); ABroadCast(COLOR_LIGHTRED,string,1); return 1; } format(string, sizeof(string), "{ff4f30}Администратор %s получил предупреждение от %s [%d/3]. Причина: %s", giveplayer,sendername,PlayerInfo[giveplayerid][pWarns], (result)); SendClientMessageToAll(COLOR_LIGHTRED,string); format(string, sizeof(string), "Внимание! Вы получили предупреждение! После 3-х предупреждений вы будете сняты с должности!"); SendClientMessage(giveplayerid, COLOR_LIGHTRED, string); return 1; } } } else { SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Игрок не найден!"); } } return 1; } Значения: if (PlayerInfo[playerid][pAdmin] >= 7) 7 - Уровень администрирования, с которого можно выдавать предупреждение ------------------------------------------------------------------------------------------------------------ PlayerInfo[giveplayerid][pAdmin] -=1; -=1 - На сколько раз уровень администрирования понизится при предупреждении -------------------------------------------------------------------------------------------------------------- PlayerInfo[giveplayerid][pAdmin] = 0; 0 - Уровень администрирования после максимального количества предупреждений Думаю, разберетесь, т.к. я все подробно расписал. Если будут ошибки при компилировании или что то еще, пишите в тему, постараюсь ответить всем.
  8. Здравствуйте уважаемые пользователи Gs-Games. Сегодня я расскажу вам как создать пикап с бонусом. Начнем. 1. Сначала откроем наш мод. 2. Переходим в переменные new. И создадим там новою переменную. new FFF; 3. Далее перейдем в public OnGameModeInit И вставим туда. FFF = CreatePickup(ID пикапа,тип пикапа,X,Y,Z, ID виртуального мира пикапа);// Координаты X,Y,Z сменить на свои. Теперь когда мы создали пикап, наша задача сделать так, чтобы когда мы наступили на этот пикап нам выдавался бонус. 4. Идем далее в OnPlayerPickUpPickup Добавим следующее if(pickupid == FFF) // Это наше название пикапа, то есть когда мы записывали в переменной 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; // Лицензия на оружие. } Ну все не чего сложного. Наш урок на этом заканчивается. Спасибо за внимание.
  9. Доброго времени суток. Для собственных нужд необходима была отправка в чат сообщений длиной более 128 символов, без обрыва строки на середине и с корректным переносом. Имеющиеся реализации не устроили - перенос был оформлен не совсем корректно, да и выглядеть будет некошерно. Реализовал собственное решение, полностью совместимое с синтаксисом стандартных SendClientMessage/SendClientMessageToAll. forward SendClientMessageEx (playerid, color, const message[]); forward SendClientMessageToAllEx (color, const message[]); public SendClientMessageEx (playerid, color, const message[]) { new length = strlen(message); new outstr[128]; new trim; if (length > 127) { for (new i = 127; i>=0; i--) { trim = i; if (message[i] == ' ') break; } if (trim < 64) trim = 127; strmid (outstr, message, 0, trim, 128); SendClientMessage (playerid, color, outstr); strmid (outstr, message, trim, length, 128); SendClientMessage (playerid, color, outstr); } else SendClientMessage (playerid, color, message); return 1; } public SendClientMessageToAllEx (color, const message[]) { new length = strlen(message); new outstr[128]; new trim; if (length > 127) { for (new i = 127; i>=0; i--) { trim = i; if (message[i] == ' ') break; } if (trim < 64) trim = 127; strmid (outstr, message, 0, trim, 128); SendClientMessageToAll (color, outstr); strmid (outstr, message, trim, length, 128); SendClientMessageToAll (color, outstr); } else SendClientMessageToAll (color, message); return 1; }Для наглядности - скриншот. Не стоит обращать внимания на то, что он снят на адаптации мультиплеера - функции будут корректно работать, даже если использовать 0.3a-ветку SA:MP.
  10. Вы используйте команду /canal [1-10000] для выбора нужной вам частоты. После выбора частоты вы автоматический подключаетесь к выбранному вами каналу и можете активно вести общение с помощью команды /rс [текст]. Также другой или иной игрок может подключиться к вашей частоте. Ко всем forward: forward SendRcanalMessage(canal, color, string[]); Ко всем new: new Rcanal[MAX_PLAYERS]; В public OnPlayerConnect добавляем: Rcanal[playerid] = 0; В конец мода: public SendRcanalMessage(canal, color, string[]) { for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(Rcanal[i] == canal) { SendClientMessage(i, color, string); } } } }В public OnPlayerCommandText добавляем команды:if(strcmp(cmd, "/rс", true) == 0) { if(!IsPlayerConnected(playerid)) return 1; if(PlayerInfo[playerid][pMuted] == 1) return SendClientMessage(playerid, -1, "Вы не можете писать, у вас молчанка"); if(Rcanal[playerid] < 1) return SendClientMessage(playerid, -1, "Вы не на частоте. Подключитесь, используя /canal (номер канала от 0 по 10000)"); GetPlayerName(playerid, sendername, sizeof(sendername)); new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) return SendClientMessage(playerid, -1, "Используйте: /rc [текст]"); format(string, sizeof(string), "(%d) %s: %s", Rcanal[playerid], sendername, result); SendRcanalMessage(Rcanal[playerid], TEAM_CYAN_COLOR, string); return 1; } if(strcmp(cmd, "/canal", true) == 0) { if(!IsPlayerConnected(playerid)) return 1; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, -1, "Используйте: /canal [номер канала[(1-10000)]"); new canal; canal = strval(tmp); if(canal > 10000|| canal < 1) return SendClientMessage(playerid, -1, "Номер канала от 1 по 10000!"); Rcanal[playerid] = canal; format(string, sizeof(string), "Вы подключились к частоте номер %d", canal); SendClientMessage(playerid, COLOR_LIGHTBLUE,string); } Автор: NOD32
  11. Aleksey_Dolgov

    Падающий снег.

    Здраствуйте уважаемые пользователи Gs-Games. К вашему вниманию. Были скрипты Падающего снега. Но выглядело не очень. Я Сделал другой выход. Чтобы добавить снег в мод, нужно В public OnGameModeInit добавить: for(new x=-3000; x < 3000; x+=100) for(new y=-3000; y < 3000; y+=100) CreateDynamicObject(18864, x, y, 0.0, 0.0, 0.0, 0.0); Спасибо за внимание.
  12. Здравствуйте ув. пользователи сайта gs-games , сегодня я вам расскажу о оптимизации игровых модов. Посмотрим как будет выгледеть обычная команда: if(strcmp(cmd,"/tskill",true) == 0) { if(IsPlayerConnected(playerid)) { if(PlayerInfo[playerid][pTskill] > 1000){ PlayerInfo[playerid][pTskill] = 1000; } if(PlayerInfo[playerid][pTskill] < 0){ PlayerInfo[playerid][pTskill] = 0; } format(string,sizeof(string),"Ваш скилл : %d / 1000",PlayerInfo[playerid][pTskill]); SendClientMessage(playerid,COLOR_BLUE,string); return 1; } return 1; } Теперь посмотрите команду более оптимизированую: CMD:tskill(playerid, params[]) { if(!IsPlayerConnected(playerid)) return true; if(PlayerInfo[playerid][pTskill]>999) return PlayerInfo[playerid][pTskill]=1000; if(PlayerInfo[playerid][pTskill]<0) return PlayerInfo[playerid][pTskill]=0; format(string,sizeof(string),"Ваш скилл : %d / 1000",PlayerInfo[playerid][pTskill]); SendClientMessage(playerid,COLOR_BLUE,string); return true; } 1) Комманды станут короче и более оптимизированы. Диалоги: Диалог до оптимизации: if(dialogid == 99) { olololo=1; } if(dialogid == 88) { olololo=2; } После switch(dialogid) { case 99: olololo=1; case 88: olololo=2; return true; } Чем же это оптимизирует? А тем, что при сравнении сервер тоже использует память, и в итоге если этих диалогов будет не 2 как в примере, а 20000. То при поиске диалога сервер просто-напросто повиснет, а в случае со свичем он просто ищет диалог. То-есть он не проверяет каждую возможность, а просто берет число и ищет кейс с ним. На этом наш урок закончен Автор урока : [Ega29]
  13. 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. ничего подобного в паблике не лицезрел, однако, опять же таки - все просто.
  14. Этот скрипт позволит вам приглашать игрока на дуэль Выбрать оружие и ставку P.S.Координаты меняйте на свои! И так приступаем... Открываем new.pwn удаляем оттуда все и вставляем это: new StartingDuel[MAX_PLAYERS]; new CountDuelTimer[MAX_PLAYERS]; new WeaponDuel = 24; new MoneyDuel = 1000; new bool:DuelPlaceVisit = false; new Float:duelspawn[12][3] = { {-1129.8909,1057.5424,1346.4141}, {-1103.7913,1086.7838,1341.9036}, {-1082.0232,1043.7269,1343.7159}, {-1053.5138,1023.3488,1343.1503}, {-1048.3635,1058.6753,1343.9337}, {-1060.6057,1092.9423,1342.9473}, {-1036.6921,1088.7567,1343.1466}, {-1015.7525,1069.8811,1344.1016}, {-1020.4619,1034.2771,1342.4492}, {-992.12230,1036.9589,1341.8861}, {-973.94290,1061.5148,1345.6714}, {-992.10420,1090.4716,1342.8617} }; forward DuelStarting(playerid); //============================================================================== public OnPlayerConnect(playerid) { PlayerInDuel[playerid] = 0; GetDuelCreate[playerid] = INVALID_PLAYER_ID; return 1; } //============================================================================== public OnPlayerDisconnect(playerid, reason) { KillTimer(CountDuelTimer[playerid]); for(new i=0; i<MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(PlayerInDuel[i] == 1) { PlayerInDuel[i] = 0; DuelPlaceVisit = false; SendClientMessage(i, -1, "Твой противник покинул дуэль!"); OnPlayerSpawn(i); } } } return 1; } //============================================================================== public OnPlayerSpawn(playerid) { return 1; } //============================================================================== public OnPlayerCommandText(playerid, cmdtext[]) { new string[1024], cmd[256], tmp[256], giveplayerid, idx; cmd = strtok(cmdtext, idx); if(strcmp(cmd, "/duel", true) == 0) { if(PlayerInDuel[playerid] == 1) return SendClientMessage(playerid, -1, "Ты уже участвуешь в дуэли."); if(DuelPlaceVisit) return SendClientMessage(playerid, -1, "Подождите пока место для дуэли освободится."); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, -1, "Использование: /duel [ id игрока ] [ id оружия ] [ ставка ]"); giveplayerid = strval(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, -1, "Использование: /duel [ id игрока ] [ id оружия ] [ ставка ]"); WeaponDuel = strval(tmp); if(WeaponDuel < 0 || WeaponDuel > 42) return SendClientMessage(playerid, -1, "Ты ввёл не верный id оружия. Используй id от 0 до 42"); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, -1, "Использование: /duel [ id игрока ] [ id оружия ] [ ставка ]"); MoneyDuel = strval(tmp); if(MoneyDuel < 1 || MoneyDuel > 100000) return SendClientMessage(playerid, -1, "Ты ввёл не верную сумму ставки. Используй сумму от 1$ до 100000$"); if(MoneyDuel > GetPlayerMoney(playerid)) return SendClientMessage(playerid, -1, "Тебе не хватает на ставку. Укажи другую сумму!"); if(MoneyDuel > GetPlayerMoney(giveplayerid)) return SendClientMessage(playerid, -1, "Твоему противнику не хватает на ставку. Укажи другую сумму!"); if(IsPlayerConnected(giveplayerid)) { new Float:POS[3]; GetPlayerPos(giveplayerid, POS[0], POS[1], POS[2]); if(playerid == giveplayerid) return SendClientMessage(playerid, -1, "Ты не можешь применить это действие к самому себе."); if(!IsPlayerInRangeOfPoint(playerid, 5, POS[0], POS[1], POS[2])) return SendClientMessage(playerid, -1, "Ты находишься слишком далеко от этого игрока."); if(PlayerInDuel[giveplayerid] == 1) return SendClientMessage(playerid, -1, "Этот игрок уже участвует в дуэли."); GetDuelCreate[giveplayerid] = playerid; format(string, sizeof(string), "Ты успешно пригласил игрока {9DDAF2}%s{FFFFFF} на дуэль! Дождись ответа.", pNick(giveplayerid)); SendClientMessage(playerid, -1, string); format(string, sizeof(string), "Игрок %s приглашает тебя на дуэль.\n\nОружие: %d\nСтавка: %d$", pNick(playerid), WeaponDuel, MoneyDuel); ShowPlayerDialog(giveplayerid, DUEL_ID, DIALOG_STYLE_MSGBOX, "Приглашение на дуэль", string, "Да", "Нет"); } else { SendClientMessage(playerid, -1, "Игрок с указанным тобой id не найден!"); } return 1; } return 0; } //============================================================================== public DuelStarting(playerid) { new string[256]; StartingDuel[playerid] -= 1; format(string, sizeof(string), "~y~STARTING: ~w~%d", StartingDuel[playerid]); GameTextForPlayer(playerid, string, 999, 3); SetPlayerHealth(playerid, 100); if(StartingDuel[playerid] == 0) { GameTextForPlayer(playerid, "~g~DUEL START", 3000, 3); TogglePlayerControllable(playerid, true); KillTimer(CountDuelTimer[playerid]); } return 1; } //============================================================================== public OnPlayerDeath(playerid, killerid, reason) { if(PlayerInDuel[killerid] == 1 && PlayerInDuel[playerid] == 1) { new string[256]; DuelPlaceVisit = false; PlayerInDuel[killerid] = 0; PlayerInDuel[playerid] = 0; GetDuelCreate[killerid] = INVALID_PLAYER_ID; GetDuelCreate[playerid] = INVALID_PLAYER_ID; GivePlayerMoney(killerid, MoneyDuel); GivePlayerMoney(playerid, -MoneyDuel); format(string, sizeof(string), "~g~+%d$", MoneyDuel); GameTextForPlayer(killerid, string, 1000, 1); format(string, sizeof(string), "~r~-%d$", MoneyDuel); GameTextForPlayer(playerid, string, 1000, 1); format(string, sizeof(string), ">>> В дуэли между игроками {FFFFFF}%s{00FF00} и {FFFFFF}%s{00FF00} победил игрок {FFFFFF}%s", pNick(killerid), pNick(playerid), pNick(killerid)); SendClientMessageToAll(0x00FF00FF, string); SetTimerEx("OnPlayerSpawn", 1000, false, "i", killerid); return 1; } return 1; } //============================================================================== public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { new string[1024]; new dueledid = GetDuelCreate[playerid]; if(dialogid == DUEL_ID) { if(response) { if(PlayerInDuel[playerid] == 1) { SendClientMessage(playerid, -1, "Ты уже участвуешь в дуэли."); SendClientMessage(dueledid, -1, "При соглашении на участие в дуэли произошла ошибка!"); GetDuelCreate[playerid] = INVALID_PLAYER_ID; return 1; } if(PlayerInDuel[dueledid] == 1) { SendClientMessage(playerid, -1, "Игрок, отославший тебе приглашение, уже участвует в дуэли."); SendClientMessage(dueledid, -1, "При соглашении на участие в дуэли произошла ошибка!"); GetDuelCreate[playerid] = INVALID_PLAYER_ID; return 1; } if(DuelPlaceVisit) { SendClientMessage(playerid, -1, "Подожди пока место для дуэли освободится."); SendClientMessage(dueledid, -1, "Подожди пока место для дуэли освободится."); GetDuelCreate[playerid] = INVALID_PLAYER_ID; return 1; } if(IsPlayerConnected(dueledid)) { PlayerInDuel[playerid] = 1; PlayerInDuel[dueledid] = 1; DuelPlaceVisit = true; new rand1 = random(sizeof(duelspawn)); SetPlayerPos(playerid, duelspawn[rand1][0], duelspawn[rand1][1], duelspawn[rand1][2]); new rand2 = random(sizeof(duelspawn)); SetPlayerPos(dueledid, duelspawn[rand2][0], duelspawn[rand2][1], duelspawn[rand2][2]); SetCameraBehindPlayer(playerid); SetCameraBehindPlayer(dueledid); SetPlayerInterior(playerid, 10); SetPlayerInterior(dueledid, 10); SetPlayerHealth(dueledid, 100); SetPlayerHealth(playerid, 100); SetPlayerVirtualWorld(playerid, DUEL_MIR); SetPlayerVirtualWorld(dueledid, DUEL_MIR); TogglePlayerControllable(playerid, false); TogglePlayerControllable(dueledid, false); StartingDuel[playerid] = 6; StartingDuel[dueledid] = 6; CountDuelTimer[playerid] = SetTimerEx("DuelStarting", 1000, true, "i", playerid); CountDuelTimer[dueledid] = SetTimerEx("DuelStarting", 1000, true, "i", dueledid); ResetPlayerWeapons(playerid); ResetPlayerWeapons(dueledid); GivePlayerWeapon(playerid, WeaponDuel, 99999); GivePlayerWeapon(dueledid, WeaponDuel, 99999); GetDuelCreate[playerid] = INVALID_PLAYER_ID; } else { SendClientMessage(playerid, -1, "Игрок, отославший тебе приглашение, отсоеденился!"); GetDuelCreate[playerid] = INVALID_PLAYER_ID; } } else { format(string, sizeof(string), "Ты отказался на участие в дуэли с игроком {9DDAF2}%s", pNick(dueledid)); SendClientMessage(playerid, -1, string); format(string, sizeof(string), "Игрок {9DDAF2}%s{FFFFFF} отказался на участие в дуэли с тобой!", pNick(playerid)); SendClientMessage(GetDuelCreate[playerid], -1, string); GetDuelCreate[playerid] = INVALID_PLAYER_ID; } return 1; } return 1; } //============================================================================== stock pNick(playerid) { new nick[MAX_PLAYER_NAME]; GetPlayerName(playerid, nick, MAX_PLAYER_NAME); return nick; } //============================================================================== strtok(const string[], &index) { new length = strlen(string); while ((index < length) && (string[index] <= ' ')) { index++; } new offset = index; new result[20]; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; } Вот и всё! Если будут ошибки пишите
  15. Здраствуйте уважаемые пользователи форума. Хочу вам предоставить свой урок КПП на мосту. Я делал его для своего сервера что бы серверу придать больше РП. Пост Расположен на начале моста со стороны Южного. Этот пост могут открывать только 2 фракции. Когда сотрудников ПО нету на сервере пост открыт. Скрин как это выглядит:
  16. 1. Забыли скомпилировать мод Заходи в папку gamemodes и открывай .pwn файл и нажимай клавишу F5 2.Мод не до конца скомпилировался, или amx. файл поврежден Проверяем размер amx. файла, если 0 кб, значит ошибка компиляции. Проблема в исходном коде, или ошибка запуска компилятора. Запускайте pawncc.exe от имени администратора. 3.У вас нету в моде "точки входа" (функция main) Открываем мод и добавляем в любое место: ( не в stock и не public естественно ) main(){} 4.У вас не установлена программы на компьютере NET Framework или Microsoft Visual C++ Гуглим то и другое, качаем. 5.Не прописаны в server.cfg плагины (нужно проверить используются в моде они или нет для начала) Заходим в папку с сервером и находим файл server.cfg и если у вас нету строки plugins, то добавляем в конце plugins Имя плагина Если у вас стоит Linux то после имя плагина должно быть написано так Имя плагина.so И мой способ: 6).Качаем Streamer: https://code.google.com/p/samp-streamer-plugin/downloads/detail?name=streamer_plugin_v2_6_1_r84.zip&can=2&q= Заменяем всё в папке с модом. И компилируйте мод. И Запускаем мод. (Лично мне это помогло!)
  17. Находим И после скобок вставляем вот это : Строго не судите это моя первая работа :)
  18. Интересная функция. Тут будет всё понятно PHP код: public OnPlayerClickMap(playerid, Float: fX, Float: fY, Float: fZ) // Создаем новый паблик { // Открываем if(PlayerInfo[playerid][pAdmin] >= 4); // Уровень Админки указываем свой { SetPlayerPos(playerid, fX, fY, fZ); // Координаты XYZ SendClientMessage(playerid, 0xFFFFFFFF, "Вы телепортированы!"); return 1; } } // Закрываем
  19. Система кланов . Вырезал из мода. Базу для кланов сделаете сами. При входе нужно будет ввести пароль от клана. Добавим ко всем #define #define apasTaz "2580" // пароль от клана Ко всем new new clanTeamTaz[MAX_PLAYERS]; В public OnPlayerConnect(playerid) clanTeamTaz[playerid] = 0; if(ClanTaz(playerid) == 1){ShowPlayerDialog(playerid,999,DIALOG_STYLE_INPUT,"{F70808}Пароль от клана"," Введите пароль о клана","Войти","Отмена");} Создадим public public ClanTaz(playerid){ new sname[64];GetPlayerName(playerid, sname, sizeof(sname));if(strfind(sname, "[Taz_TeaM]", false) != -1) return 1;if(strfind(sname, "[Taz_TeaM]", false) != -1) return 1;if(strfind(sname, "[Taz_TeaM]", false) != -1) return 1;if(strfind(sname, "[Taz_TeaM]", false) != -1) return 1;if(strfind(sname, "[Taz_TeaM]", false) != -1) return 1;if(strfind(sname, "[Taz_TeaM]", false) != -1) return 1;else return 0;} Добавим forward ко всем форвардам или выше public forward ClanTaz(playerid); Добавим в public OnPlayerSpawn(playerid) new ClanName[128];ExtractClan(playerid, ClanName);if(strcmp(ClanName, "Taz_TeaM", true) == 0){SetPlayerPos(playerid,24555.8854,-1470.1174,50.7837); // тут координаты спавна кланаSetPlayerSkin(playerid,116);SetPlayerFacingAngle(playerid, 173.9849);SetPlayerInterior(playerid,0);SetPlayerColor(playerid,0xFF0000AA);} Добавим в public OnPlayerText(playerid, text[]) if(clanTeamTaz[playerid] == 1){new name[24], string[128];GetPlayerName(playerid, name, 24);format(string, sizeof(string), "(КланЧат) %s: %s", name, text[1]);printf("(???????)%s: %s", name, string);for(new i = 0; i < MAX_PLAYERS; i++){if(IsPlayerConnected(i)){if(clanTeamTaz[i] == 1){SendClientMessage(i, GetPlayerColor(playerid), string);}}}return 0;} Добавим в public OnDialogResponse: if(dialogid == 999)//mari{if(response){if (!strcmp(inputtext, apasTaz)){if (!strcmp(inputtext, " ")){ShowPlayerDialog(playerid, 2, DIALOG_STYLE_MSGBOX, "Ошибка","Вы ввели неправильный пароль!", "Ок","");// Kick(playerid);}else{ShowPlayerDialog(playerid, 2, DIALOG_STYLE_MSGBOX, "Подтверждение пароля","Вы успешно подтвердили пароль", "Ок", "");//Attach3DTextLabelToPlayer( new3Dtext, playerid, 0.0, 0.0, 2.0 );clanTeamMari[playerid] = 1;return 1;}}else{for(new i = 0; i < MAX_PLAYERS; i++){new string[256], pName[MAX_PLAYER_NAME];GetPlayerName(playerid,pName,sizeof(pName));if(IsPlayerConnected(i) && IsPlayerAdmin(i)){format(string, 256, " Внимание: игрок %s Ввёл не верный пароль к тегу клана", pName);SendClientMessage(i, 0xFF4040FF, string);}}ShowPlayerDialog(playerid, 2, DIALOG_STYLE_MSGBOX, "Ошибка","Вы ввели неправильный пароль!", "Ок","");// Kick(playerid);} Kick(playerid);} return 1;}
  20. Решил добавить сюда. Команды добовляющие и ибирающие заграждения. Для гос.фракций. в newnew UsedCom[MAX_PLAYERS];далее в define#define MAX_ROADBLOCKS 35далее в forwardforward SafeSetPlayerPos(playerid, Float:x, Float:y, Float:z);forward RemoveRoadblock(playerid);forward CommandLog(string[]);далее в stockstock CreateRoadblock(Object,Float:x,Float:y,Float:z,Float:Angle){ for(new i = 0; i < sizeof(Roadblocks); i++) { if(Roadblocks[i][sCreated] == 0) { Roadblocks[i][sCreated] = 1; Roadblocks[i][sX] = x; Roadblocks[i][sY] = y; Roadblocks[i][sZ] = z-0.7; Roadblocks[i][sObject] = CreateObject(Object, x, y, z-0.9, 0, 0, Angle); return 1; } } return 0;}//==============================================================================stock DeleteAllRoadblocks(playerid){ for(new i = 0; i < sizeof(Roadblocks); i++) { if(IsPlayerInRangeOfPoint(playerid, 100, Roadblocks[i][sX], Roadblocks[i][sY], Roadblocks[i][sZ])) { if(Roadblocks[i][sCreated] == 1) { Roadblocks[i][sCreated] = 0; Roadblocks[i][sX] = 0.0; Roadblocks[i][sY] = 0.0; Roadblocks[i][sZ] = 0.0; DestroyObject(Roadblocks[i][sObject]); } } } return 0;}//==============================================================================stock DeleteClosestRoadblock(playerid){ for(new i = 0; i < sizeof(Roadblocks); i++) { if(IsPlayerInRangeOfPoint(playerid, 5.0, Roadblocks[i][sX], Roadblocks[i][sY], Roadblocks[i][sZ])) { if(Roadblocks[i][sCreated] == 1) { Roadblocks[i][sCreated] = 0; Roadblocks[i][sX] = 0.0; Roadblocks[i][sY] = 0.0; Roadblocks[i][sZ] = 0.0; DestroyObject(Roadblocks[i][sObject]); return 1; } } } return 0;}далее в конце в publicpublic SafeSetPlayerPos(playerid, Float:x, Float:y, Float:z){ SetPlayerPos(playerid, x,y,z); Streamer_UpdateEx(playerid,x,y,z); return 1;}forward KillInstLoc6();далее в enumenum rInfo{ sCreated, Float:sX, Float:sY, Float:sZ, sObject,};new Roadblocks[MAX_ROADBLOCKS][rInfo];далее в где логи вашего сервера добовляетеpublic CommandLog(string[]){ new entry[256]; format(entry, sizeof(entry), "%srn",string); new File:hFile; hFile = fopen("logs/removeroadblock.log", io_append); fwrite(hFile, entry); fclose(hFile);}ну теперь в командыif(strcmp(cmd, "/crb", true) == 0 || strcmp(cmd, "/createroadblock", true) == 0) { if(UsedCom[playerid]>0) return SendClientMessage(playerid, COLOR_WHITE, "Ввод команды разрешен раз в 1 секунду"); if(IsPlayerConnected(playerid) && IsACop(playerid) || IsPlayerAdmin(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "Используйте: /crb [???????? ??????????-?????????? ????? ID]"); SendClientMessage(playerid, COLOR_LIGHTBLUE, "????????? ?????????:"); SendClientMessage(playerid, COLOR_GRAD1, "| 1: ????? ??????????-?????????? ???? | 2: ??????? ??????????-?????????? ???? |"); SendClientMessage(playerid, COLOR_GRAD1, "| 3: ??????? ??????????-?????????? ???? | 4: ????? | 5: ?????? ????? |"); SendClientMessage(playerid, COLOR_GRAD1, "| 6: ????? ????? | 7: ????? ???????? ????? |"); return 1; } new rb = strval(tmp); if (rb == 1) { PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0); new Float:plocx,Float:plocy,Float:plocz,Float:ploca; GetPlayerPos(playerid, plocx, plocy, plocz); GetPlayerFacingAngle(playerid,ploca); CreateRoadblock(1459,plocx,plocy,plocz,ploca); format(string,sizeof(string),"[????]: ?????? %s ???????? ??????????-?????????? ?????(1).",sendername); SendRadioMessage(1,COLOR_BLUE,string); GameTextForPlayer(playerid,"~w~?OPO„?OE ?A‚PA„?E?…E ~b~?OCAB‡E?!",3000,1); return 1; } else if (rb == 2) { PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0); new Float:plocx,Float:plocy,Float:plocz,Float:ploca; GetPlayerPos(playerid, plocx, plocy, plocz); GetPlayerFacingAngle(playerid,ploca); CreateRoadblock(978,plocx,plocy,plocz+0.6,ploca); format(string,sizeof(string),"[????]: ?????? %s ???????? ??????????-?????????? ?????(2)",sendername); SendRadioMessage(1,COLOR_BLUE,string); GameTextForPlayer(playerid,"~w~?OPO„?OE ?A‚PA„?E?…E ~b~?OCAB‡E?!",3000,1); return 1; } else if (rb == 3) { PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0); new Float:plocx,Float:plocy,Float:plocz,Float:ploca; GetPlayerPos(playerid, plocx, plocy, plocz); GetPlayerFacingAngle(playerid,ploca); CreateRoadblock(981,plocx,plocy,plocz+0.9,ploca+180); format(string,sizeof(string),"[????]: ?????? %s ???????? ??????????-?????????? ?????(3)",sendername); SendRadioMessage(1,COLOR_BLUE,string); GameTextForPlayer(playerid,"~w~?OPO„?OE ?A‚PA„?E?…E ~b~?OCAB‡E?!",3000,1); SafeSetPlayerPos(playerid, plocx, plocy+1.3, plocz); return 1; } else if (rb == 4) { PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0); new Float:plocx,Float:plocy,Float:plocz,Float:ploca; GetPlayerPos(playerid, plocx, plocy, plocz); GetPlayerFacingAngle(playerid,ploca); CreateRoadblock(1238,plocx,plocy,plocz+0.2,ploca); format(string,sizeof(string),"[????]: ?????? %s ???????? ??????????-?????????? ?????(4)",sendername); SendRadioMessage(1,COLOR_BLUE,string); GameTextForPlayer(playerid,"~w~?OPO„?OE ?A‚PA„?E?…E ~b~?OCAB‡E?!",3000,1); return 1; } else if (rb == 5) { PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0); new Float:plocx,Float:plocy,Float:plocz,Float:ploca; GetPlayerPos(playerid, plocx, plocy, plocz); GetPlayerFacingAngle(playerid,ploca); CreateRoadblock(1425,plocx,plocy,plocz+0.6,ploca); format(string,sizeof(string),"[????]: ?????? %s ???????? ??????????-?????????? ?????(5)",sendername); SendRadioMessage(1,COLOR_BLUE,string); GameTextForPlayer(playerid,"~w~?OPO„?OE ?A‚PA„?E?…E ~b~?OCAB‡E?!",3000,1); return 1; } else if (rb == 6) { PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0); new Float:plocx,Float:plocy,Float:plocz,Float:ploca; GetPlayerPos(playerid, plocx, plocy, plocz); GetPlayerFacingAngle(playerid,ploca); CreateRoadblock(3265,plocx,plocy,plocz-0.5,ploca); format(string,sizeof(string),"[????]: ?????? %s ???????? ??????????-?????????? ?????(6)",sendername); SendRadioMessage(1,COLOR_BLUE,string); GameTextForPlayer(playerid,"~w~?OPO„?OE ?A‚PA„?E?…E ~b~?OCAB‡E?!",3000,1); return 1; } else if (rb == 7) { PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0); new Float:plocx,Float:plocy,Float:plocz,Float:ploca; GetPlayerPos(playerid, plocx, plocy, plocz); GetPlayerFacingAngle(playerid,ploca); CreateRoadblock(3091,plocx,plocy,plocz+0.5,ploca+180); format(string,sizeof(string),"[????]: ?????? %s ???????? ??????????-?????????? ?????(7)",sendername); SendRadioMessage(1,COLOR_BLUE,string); GameTextForPlayer(playerid,"~w~?OPO„?OE ?A‚PA„?E?…E ~b~?OCAB‡E?!",3000,1); return 1; } new y, m, d; new h,mi,s; getdate(y,m,d); gettime(h,mi,s); format(string,sizeof(string), "(%d/%d/%d)[%d:%d:%d] %s [??????????? ???????] -> /createroadblock %d",d,m,y,h,mi,s,sendername, rb); CommandLog(string); } UsedCom[playerid]=0; return 1; }//============================================================================== if (strcmp(cmd,"/rub",true) == 0 || strcmp(cmd, "/removeroadblock", true) == 0) { if(UsedCom[playerid]>0) return SendClientMessage(playerid, COLOR_WHITE, "???? ??????? ???????? ??? ? 1 ???????"); if(IsPlayerConnected(playerid) && IsACop(playerid) || PlayerInfo[playerid][pAdmin] >= 2) { DeleteClosestRoadblock(playerid); format(string,sizeof(string),"[????]: ?????? %s ????? ??????????-?????????? ????.",sendername); SendRadioMessage(1,COLOR_BLUE,string); GameTextForPlayer(playerid,"~w~?OPO„?OE ?A‚PA„?E?…E ~r~Y€PA?!",3000,1); new y, m, d; new h,mi,s; getdate(y,m,d); gettime(h,mi,s); format(string,sizeof(string), "(%d/%d/%d)[%d:%d:%d] %s [??????????? ???????] -> /removeroadblock",d,m,y,h,mi,s,sendername); CommandLog(string); } UsedCom[playerid]=0; return 1; }//============================================================================== if (strcmp(cmd,"/rrball",true) == 0 || strcmp(cmd, "/removeroadblockall", true) == 0) { if(UsedCom[playerid]>0) return SendClientMessage(playerid, COLOR_WHITE, "???? ??????? ???????? ??? ? 1 ???????"); if(IsPlayerConnected(playerid) && IsACop(playerid) || PlayerInfo[playerid][pAdmin] >= 2) { if(PlayerInfo[playerid][pRank] >= 5 || PlayerInfo[playerid][pAdmin] >= 2) // This being the default Chief rank in LA-RP change if neccesary. { DeleteAllRoadblocks(playerid); format(string,sizeof(string),"[????]: ?????? %s ????? ??? ??????????-?????????? ??????.",sendername); SendRadioMessage(1,COLOR_BLUE,string); GameTextForPlayer(playerid,"~b~?OPO„?OE ?A‚PA„?E?…E ~r~Y€PA?!",3000,1); new y, m, d; new h,mi,s; getdate(y,m,d); gettime(h,mi,s); format(string,sizeof(string), "(%d/%d/%d)[%d:%d:%d] %s [??????????? ???????] -> /removeroadblockall",d,m,y,h,mi,s,sendername); CommandLog(string); } } UsedCom[playerid]=0; return 1; } Делал не по порядку. строго не судите. может кому то пригодится.
  21. Вот решил что то сделать может кому то пригодится. в newnew UsedCom[MAX_PLAYERS];далее в командыif(strcmp(cmd, "/spawn", true) == 0) { if(UsedCom[playerid]>0) return SendClientMessage(playerid, COLOR_WHITE, "Ввод команды разрешен раз в 1 секунду ); if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /spawn [ID]"); return 1; } giveplayerid = ReturnUser(tmp); if (PlayerInfo[playerid][pAdmin] >= 3) { if(IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); SpawnPlayer(giveplayerid); format(string, sizeof(string), "Вы заспавнили %s .",giveplayer); SendClientMessage(playerid,COLOR_LIGHTRED,string); SendClientMessage(giveplayerid, TEAM_GROVE_COLOR, "Вы были заспавнены администратором"); format(string, sizeof(string), "[Администратор]:%s заспавнил игрока %s ",sendername, giveplayer, giveplayerid); ABroadCast(COLOR_LIGHTRED,string, 5); MedicBill[giveplayerid] = 0; new y, m, d; new h,mi,s; getdate(y,m,d); gettime(h,mi,s); format(string,sizeof(string), "(%d/%d/%d)[%d:%d:%d] %s заспавнил игрока %s",d,m,y,h,mi,s,sendername,giveplayer); } } else { format(string, sizeof(string), "%d этот игрок не в игре.", giveplayerid); SendClientMessage(playerid, COLOR_GRAD1, string); } } } UsedCom[playerid]=0; return 1; }
  22. Alex_Rude

    Ларьки с едой

    Всем привет.Думаю сразу начнём так как в голову не идёт что писать. ) ко всем new: new pickuplarka[6]; в public OnGameModeInit: pickuplarka[0] = CreatePickup(1239,1,167.39999389648,616.20001220703,12,0); pickuplarka[1] = CreatePickup(1239,1,134.19999694824,642.40002441406,11.89999961853,0); pickuplarka[2] = CreatePickup(1239,1,194,793.29998779297,12.10000038147,0); pickuplarka[3] = CreatePickup(1239,1,219.89999389648,835.79998779297,12.10000038147,0); pickuplarka[4] = CreatePickup(1239,1,256.5,1012.700012207,12.10000038147,0); pickuplarka[5] = CreatePickup(1239,1,-187.39999389648,599.09997558594,12.10000038147,0); CreateObject(4443,218.5000000,836.2999900,13.0000000,0.0000000,0.0000000,249.4990000); CreateObject(4443,193.5996100,792.1992200,13.0000000,0.0000000,0.0000000,341.4990000); CreateObject(4443,-187.3000000,600.2999900,13.0000000,0.0000000,0.0000000,174.0000000); CreateObject(4443,255.2998000,1013.0996100,12.9000000,0.0000000,0.0000000,262.2440000); в public OnDialogResponse: if(dialogid == 1) { if(response) { if(listitem == 0) { if(GetPlayerMoney(playerid) < 80) return SendClientMessage(playerid,0xFF9900AA,"У вас не хватает денег"); { SetPlayerHealth(playerid, 100.0); SendClientMessage(playerid,0xFF9900AA,"Вы съели Хот-Дог"); GivePlayerMoney(playerid,-80); ApplyAnimation(playerid,"FOOD","EAT_Chicken",4.1,0,1,1,0,1); } } if(listitem == 1) { if(GetPlayerMoney(playerid) < 60) return SendClientMessage(playerid,0xFF9900AA,"У вас не хватает денег"); { SetPlayerHealth(playerid, 100.0); SendClientMessage(playerid,0xFF9900AA,"Вы съели Чебурек"); GivePlayerMoney(playerid,-60); ApplyAnimation(playerid,"FOOD","EAT_Chicken",4.1,0,1,1,0,1); } } if(listitem == 2) { if(GetPlayerMoney(playerid) < 120) return SendClientMessage(playerid,0xFF9900AA,"У вас не хватает денег"); { SetPlayerHealth(playerid, 100.0); SendClientMessage(playerid,0xFF9900AA,"Вы съели Крабовый салат"); GivePlayerMoney(playerid,-120); ApplyAnimation(playerid,"FOOD","EAT_Chicken",4.1,0,1,1,0,1); } } if(listitem == 3) { if(GetPlayerMoney(playerid) < 20) return SendClientMessage(playerid,0xFF9900AA,"У вас не хватает денег"); { SetPlayerHealth(playerid, 100.0); SendClientMessage(playerid,0xFF9900AA,"Вы съели Слоёный пирожок"); GivePlayerMoney(playerid,-20); ApplyAnimation(playerid,"FOOD","EAT_Chicken",4.1,0,1,1,0,1); } } if(listitem == 4) { if(GetPlayerMoney(playerid) < 20) return SendClientMessage(playerid,0xFF9900AA,"У вас не хватает денег"); { SetPlayerHealth(playerid, 100.0); SendClientMessage(playerid,0xFF9900AA,"Вы съели Пирожок с повидлом"); GivePlayerMoney(playerid,-20); ApplyAnimation(playerid,"FOOD","EAT_Chicken",4.1,0,1,1,0,1); } } else { return 1; } } } В public OnPlayerPickUpPickup: if(pickupid == pickuplarka[0]) { ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"{FF8102}Покупка еды", "Хот-дог - 80 рублейnЧебурк - 60 рублейnКрабовый салат - 120 рублейnСлоёный пирожок - 20 рублейnПирожок с повидлом - 20 рублей", "Выбрать", "Отмена"); } if(pickupid == pickuplarka[1]) { ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"{FF8102}Покупка еды", "Хот-дог - 80 рублейnЧебурк - 60 рублейnКрабовый салат - 120 рублейnСлоёный пирожок - 20 рублейnПирожок с повидлом - 20 рублей", "Выбрать", "Отмена"); } if(pickupid == pickuplarka[2]) { ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"{FF8102}Покупка еды", "Хот-дог - 80 рублейnЧебурк - 60 рублейnКрабовый салат - 120 рублейnСлоёный пирожок - 20 рублейnПирожок с повидлом - 20 рублей", "Выбрать", "Отмена"); } if(pickupid == pickuplarka[3]) { ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"{FF8102}Покупка еды", "Хот-дог - 80 рублейnЧебурк - 60 рублейnКрабовый салат - 120 рублейnСлоёный пирожок - 20 рублейnПирожок с повидлом - 20 рублей", "Выбрать", "Отмена"); } if(pickupid == pickuplarka[4]) { ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"{FF8102}Покупка еды", "Хот-дог - 80 рублейnЧебурк - 60 рублейnКрабовый салат - 120 рублейnСлоёный пирожок - 20 рублейnПирожок с повидлом - 20 рублей", "Выбрать", "Отмена"); } if(pickupid == pickuplarka[5]) { ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"{FF8102}Покупка еды", "Хот-дог - 80 рублейnЧебурк - 60 рублейnКрабовый салат - 120 рублейnСлоёный пирожок - 20 рублейnПирожок с повидлом - 20 рублей", "Выбрать", "Отмена"); } Вот и всё. Спасибо за внимание )
×

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

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