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

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

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

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

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

Тип контента


Форумы

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

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

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


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

  • Начало

    Конец


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

  • Начало

    Конец


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

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

  1. При вводе этой команды, на вашем плече появится попугай) Ко всем new добавим: new popugay[MAX_PLAYERS]; В OnPlayerCommandText: if(strcmp(cmd, "/попугай", true) == 0) { tmp = strtok(cmdtext,idx); giveplayerid = ReturnUser(tmp); if(!strlen(tmp) && PlayerInfo[playerid][pAdmin] > 1) return SendClientMessage(playerid,COLOR_WHITE,"Информация: /попугай [ид]"); giveplayerid = ReturnUser(tmp); if(popugay[giveplayerid] == 0) { SetPlayerAttachedObject(giveplayerid, 7, 19078, 1, 0.329150, -0.072101, 0.156082, 0.000000, 0.000000, 0.000000, 1.000000, 1.000000, 1.000000 ); SendClientMessage(giveplayerid,COLOR_LIGHTBLUE,"[Сервер]: Держи попугайчика!"); popugay[giveplayerid] = 1; } else { RemovePlayerAttachedObject(giveplayerid, 7); DestroyPlayerObject(giveplayerid, 19078); SendClientMessage(giveplayerid,COLOR_LIGHTBLUE,"[Сервер]: Отдай мне!"); popugay[giveplayerid] = 0; } return 1; } Вот и все, может кто-то возьмёт себе :)
  2. Здравствуйте уважаемые пользователи форума. Хотел бы предоставить вам спидометр который я делал для мода Gamer. Вроде простенький, не знал что можно туда добавить и сделал такой. Кому нужно будет можете брать для себя.
  3. Здравствуйте, я часто сталкивался с тем, что люди спрашивают как заменить "Server Unknown Command" на свой текст, решение довольно простое: 1) Ищем у себя в моде public OnPlayerCommandText 2) И туда в самый низ паблика, ставим вместо return 0; вот это: return SendClientMessage(playerid,-1,"Такой команды нет!"); Может кому нибудь понадобится, взято с форумов.
  4. 1. Для начала создадим диалоги. В Public OnDialogResponse: if(dialogid==5100) { if(response==1) { if(listitem == 0)// { SetPlayerSkin(playerid,280);// 280 ид рабочего скина SendClientMessage(playerid,COLOR_GREY,"Вы переоделись в рабочую одежду"); skrit[playerid] = 1; } else if(listitem == 1)//Гражданский { new rando = random(2); if(PlayerInfo[playerid][pSex] == 1)//Если пэд. мужчина то скины 185 170 46 { if(rando == 0) { SetPlayerSkin(playerid,185); } else if(rando == 1) { SetPlayerSkin(playerid,170); } else if(rando == 2) { SetPlayerSkin(playerid,46); } } else if(PlayerInfo[playerid][pSex] == 2)//Если пэд. женщина то скины 12 233 211 { if(rando == 0) { SetPlayerSkin(playerid,12); } else if(rando == 1) { SetPlayerSkin(playerid,233); } else if(rando == 2) { SetPlayerSkin(playerid,211); } } SendClientMessage(playerid,COLOR_GREY,"Вы оделись в Гражданку"); skrit[playerid] = 4; } else if(listitem == 4)//Номер строчки в файле с аккаунтом в которой указывается ид скина пэда { SetPlayerSkin(playerid,PlayerInfo[playerid][pChar]); SendClientMessage(playerid,COLOR_GREY,"Вы вернули себе свою одежду"); skrit[playerid] = 0; } } } 2. Далее нужно создать комманду которая будет вызывать наш диалог. В Public OnPlayerCommandText: if(strcmp(cmd, "/razdevpolic", true) == 0)// Комманду можете поменять на свою. Фантазии не хватило сократить) { if(PlayerToPoint(7.0,playerid,1554.4327,-1679.6113,6.2188,276.4227))//Координаты на которых будет работать комманда (если отойти от неё комманда не заработает) { if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1)//Здесь указывается какая фракция может использовать комманду { ShowPlayerDialog(playerid,5100,DIALOG_STYLE_LIST,"Одежда","Полиция\nГражданский\nВернуть свой","Ок","Отмена"); } } else { SendClientMessage(playerid,COLOR_GREY, "Вы не в раздевалке"); } return 1; } 3. Ну и создадим 3dText (если хотите можете сделать через пикап). Ко всем 3DText-ам: Create3DTextLabel(" Раздевалка: /razdevpolic ",0xFFFFFFFF,1554.4327,-1679.6113,6.2188,276.4227); AddStaticPickup(1242, 24, 1554.4327,-1679.6113,6.2188,276.4227); //пикапчик в виде броника Автор : HuKuTJKeEe
  5. Показываю как сделать бан на время с использованием Unix Времени + MxINI Бан работает так банишь игрока /ban [1-сек,2-мин,3-часы,4-дни] [ид] [число времени] [причина] пример /ban 2 1 10 проверка Если человек забанен и он заходит на сервер то ему вылазиет диалог когда он был забанен,когда разбанят,причина и потом кикает. Если бан закончится то аккаунт который забанен будет лежать в папке banlist пока игрок которого забанили зайдет снова на сервер. Важно: создать папку в scriptfiles с названием banlist Скачать инклуды можно тут ИНКЛУД (http://rghost.ru/35622578) Инклуды кидать в папку pawno->include, если есть то заменить. Время перевода с Unix на нормальное настроенно на московское В начало мода вставляем если нету #include <MxINI> #include <mxdate> // Для диалогов id меняйте на ваши свободные #define DIALOGUNBAN 1 // id дилога для высвечивания даты Это в свободное место stock GetBan(playerid) { new PlayerNick[MAX_PLAYER_NAME],string[255]; GetPlayerName(playerid, PlayerNick, MAX_PLAYER_NAME); format(string, sizeof(string), "banlist/%s.ini", PlayerNick); if(fexist(string)) { new OpenBan = ini_openFile(string); new bantime, unbantime, PlayerBan[MAX_PLAYER_NAME], reason[128]; ini_getInteger(OpenBan, "BanTime", bantime); ini_getInteger(OpenBan, "UnBanTime", unbantime); ini_getString(OpenBan, "PlayerBan", PlayerBan); ini_getString(OpenBan, "Reason", reason); ini_closeFile(OpenBan); if(gettime() >= unbantime) return UnBan(PlayerNick); else { format(string, sizeof(string), "\ Дата бана: %s\n\ Дата Разбана: %s\n\ Забанил: %s\n\ Причина бана: %s\n\ ", date("%dd.%mm.%yyyy в %hh:%ii:%ss",bantime), date("%dd.%mm.%yyyy в %hh:%ii:%ss",unbantime), PlayerBan,reason); ShowPlayerDialog(playerid,DIALOGUNBAN,0,"Вы забанены",string,"Выйти",""); return Kick(playerid); } } else return true; } stock UnBan(playerid[]) { new string[64]; format(string, sizeof(string), "banlist/%s.ini", playerid); return fremove(string); } stock AddBan(player, playerid[], giveplayerid[], type = 1, chislo = 0, reason[]) { new totalban = 0; switch(type) { case 1: totalban = 60*chislo; // минуты case 2: totalban = 3600*chislo; // часы case 3: totalban = 86400*chislo; // сутки default: totalban = chislo; // секунды } new string[64]; format(string, sizeof(string), "banlist/%s.ini", playerid); new OpenBan = ini_createFile(string); if(OpenBan < 0) ini_openFile(string); ini_setInteger(OpenBan, "BanTime", gettime()); ini_setInteger(OpenBan, "UnBanTime", gettime()+totalban); ini_setString(OpenBan, "PlayerBan", giveplayerid); ini_setString(OpenBan, "Reason", reason); ini_closeFile(OpenBan); // Закрываем файл. ShowPlayerDialog(player,DIALOGUNBAN,0,"Вы забанены","{FF0000}Вы забанены","Выйти",""); return Kick(player); } Далее вставляем в начало паблика OnPlayerConnect GetBan(playerid); Далее создадим саму команду бана (оптимизируйте под себя её) сделал под GF if(strcmp(cmd, "/ban", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /ban [playerid] [type:(1-минуты)(2-часы)(3-дни)(другое секунды)] [число] [причина]"); giveplayerid = strval(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /ban [playerid] [type:(1-минуты)(2-часы)(3-дни)(другое секунды)] [число] [причина]"); new type = strval(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /ban [playerid] [type:(1-минуты)(2-часы)(3-дни)(другое секунды)] [число] [причина]"); new chislo = strval(tmp); if(PlayerInfo[playerid][pAdmin] >= 4) { if(giveplayerid != INVALID_PLAYER_ID) { new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) idx++; new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /ban [playerid] [type:(1-минуты)(2-часы)(3-дни)(другое секунды)] [число] [причина]"); new PlayerNick[MAX_PLAYER_NAME], PlayerBan[MAX_PLAYER_NAME]; GetPlayerName(playerid, PlayerNick, MAX_PLAYER_NAME); GetPlayerName(giveplayerid, PlayerBan, MAX_PLAYER_NAME); AddBan(giveplayerid, PlayerBan, PlayerNick, type, chislo, result); return true; }//not connected } return true; } Теперь создадим команду разбана ниже if(strcmp(cmd,"/unban",true)==0) { if(PlayerInfo[playerid][pAdmin] >= 8) { tmp = strtok(cmdtext,idx); if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_GRAD1,"/unban [players nick]"); UnBan(tmp); } return true; } Автор:Lik Взято с павно портала
  6. Доброго времени суток. Опять от безделья чтото да наколякал :) Крч новый подгон. Управление коордами. И так ид сторон : 0 : Вверх 1 : Вниз 2 : Влево 3 : Вправо. И так суть команды : Вы можете перемещать любого игрока на своё расстояние. Начнём команду вписывать в мод : Создаём #forward : #forward SetPlayerConsumPosition(playerid, using, typeid); Далее вставляем саму команду в public OnPlayerCommandTex() Для sscanf'щиков :) : if(strcmp(cmd, "/setpos", true) == 0) { if(!IsPlayerConnected(playerid)) return true; //if(Player[playerid][pAdmin] < 3) return true; // Проверка на админку if(sscanf(params, "iii", params[0],params[1],params[2])) return SendClientMessage(playerid,-1,"Ошибка команды : Введите [ID][Сторона][Радиус]"); return SetPlayerConsumPosition(params[0],params[1],params[2]); } Для простых процессеров : if(strcmp(cmd, "/setpos", true) == 0) { new TYPE[3]; cmd = strtok(cmdtext, idx); if(!IsPlayerConnected(playerid)) return true; if(!strlen(cmd)) return SendClientMessage(playerid,-1,"Ошибка команды : Введите [ID][Сторона][Радиус]"); TYPE[0] = strval(cmd); cmd = strtok(cmdtext, idx); if(!strlen(cmd)) return SendClientMessage(playerid,-1,"Ошибка команды : Введите [ID][Сторона][Радиус]"); TYPE[1] = strval(cmd); cmd = strtok(cmdtext, idx); if(!strlen(cmd)) return SendClientMessage(playerid,-1,"Ошибка команды : Введите [ID][Сторона][Радиус]"); TYPE[2] = strval(cmd); return SetPlayerConsumPosition(TYPE[0],TYPE[1],TYPE[2]); } И в конец мода создай сток и кэллбек : public SetPlayerConsumPosition(playerid,using,typeid) { new Float:POS[3] ,str[50], string[128]; GetPlayerPos(playerid,POS[0],POS[1],POS[2]); // Узнаём координаты. switch(using) { case 0: SetPlayerPos(playerid, POS[0], POS[1], POS[2]+typeid), str = ("вверх"); // Суммируем полученные координаты case 1: SetPlayerPos(playerid, POS[0], POS[1], POS[2]-typeid), str = ("ввниз"); // Суммируем полученные координаты case 2: SetPlayerPos(playerid, POS[0], POS[1]-typeid, POS[2]), str = ("влево"); // Суммируем полученные координаты case 3: SetPlayerPos(playerid, POS[0], POS[1]+typeid, POS[2]), str = ("вправо"); // Суммируем полученные координаты } format(string,128,"- %s был перемешенны на %i %s",GetPlayerNameEx(playerid),typeid,str); return SendClientMessage(playerid,-1,string); } И сток для определения имён : stock GetPlayerNameEx(playerid) { new pname[MAX_PLAYER_NAME]; new i; GetPlayerName(playerid,pname,sizeof(pname)); GPNXLABEL: i = strfind(pname,"_",true); if(i != (-1)) pname[i] = ' '; if(strfind(pname,"_",true)>-1)goto GPNXLABEL; return pname; } Вот и всё. Автор : Trateus
  7. Доброго времени суток форумчане. Вот от скукоты решил сделать небольшую команду. В самое начало добавим форвард forward SetPlayerSlap(playerid,typeid); Для тех у кого стоит sscanf : В public OnPlayerCommandText if(strcmp(cmd, "/slap", true) == 0) { if(!IsPlayerConnected(playerid)) return true; if(sscanf(params, "ii", params[0],params[1])) return SendClientMessage(playerid,-1,"Ошибка команды : Введите [ID][Высота]"); if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid,-1,"Данный игрок не подключен."); return SetPlayerSlap(params[0],params[1]); } Для тех у кого utils : В public OnPlayerCommandText if(strcmp(cmd, "/slap", true) == 0) { new type[2]; if(!strlen(tmp)) return SendClientMessage(playerid, -1, "Ошибка команды : Введите [ID][Высота]"); type[0] = strval(strtok(cmdtext, idx)); type[1] = strval(strtok(cmdtext, idx)); if(!IsPlayerConnected(playerid)) return true; if(!IsPlayerConnected(player)) return true; return SetPlayerSlap(type[0],type[1]); } В конец мода ставим этот паблик: public SetPlayerSlap(playerid,typeid) { new Float:sPOS[3]; new str[128]; GetPlayerPos(playerid, sPOS[0], sPOS[1], sPOS[2]); SetPlayerPos(playerid, sPOS[0], sPOS[1], sPOS[2]+typeid); format(str,128,"Игрок %s был слэпнут на расстояние %i метров вверх",GetPlayerNameEx(playerid),typeid); SendClientMessageToAll(-1,str); return true; } Добавим ещё определение имён : stock GetPlayerNameEx(playerid) { new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid,pname,sizeof(pname)); new i; GPNXLABEL: i = strfind(pname,"_",true); if(i != (-1)) pname[i] = ' '; if(strfind(pname,"_",true)>-1)goto GPNXLABEL; return pname; } На этом всё. Автор : Trateus.
  8. Frost1217

    Записка на авто

    Здравствуйте дорогие пользователи gsgames,сегодня мы создадим с вами мануал,который поможет создать записку на автомобиль. К примеру! "Продам авто.Тел:******" Очень полезный мануал чтобы не писать в /ad продам машину,вместо этого у вас на заднем окне машины будет написано объявление. Начнем! Скрипт пойдет только на CR:MP Автор: Frost. Добавим ко всем new: new Text3D:Numbertext[MAX_VEHICLES]; Далее Ко всем цветам: #define COLOR_ZAO 0x4592DEAA За тем в enum aInfo добавим,если нету создадите сами: aTextCar, Ну а теперь добавим сами команды добавляем в public OnPlayerCommandText: if (strcmp(cmd, "/zapiska", true) == 0) { new v = GetPlayerVehicleID(playerid); new text_car[256]; if(IsPlayerConnected(playerid)) { if(PlayerInfo[playerid][pCarKey2] == 0 && PlayerInfo[playerid][pCarKey] == 0) { SendClientMessage(playerid,COLOR_ZAO,"У вас нет авто"); return 1; } if(AutoInfo[v][aTextCar]==1) { SendClientMessage(playerid, COLOR_LIGHTRED, "На транспорте уже есть записка"); return 1; } new cari = GetPlayerVehicleID(playerid); if(cari == PlayerInfo[playerid][pCarKey] || cari == PlayerInfo[playerid][pCarKey2]) { new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] На этом все :) Скриншоты скоро выкладу.
  9. Как мы с Вами знаем , при создание пабликов , надо строго создавать forward'ы Но с кусочком этого кода , нам этого не понадобится В начало мода к define добавим: #define pubfor:%0(%1) forward %0(%1); public %0(%1) И теперь при создании паблика не пишем public . а пишем pubfor Пример: pubfor: Vasek(playerid) Стандартные паблики не изменять!!
  10. 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
  11. Ничего мудреного - обычная команда с анимацией избушки на персонаже.
  12. В этом уроке вы узнаете как сделать динамическое название сервера(hostname). Ко всем new, добавляем: new gChangeHN; В OnGameModeInit(), добавим таймер: SetTimer("ChangeHostname", 10000, 1); // Промежуток времени, через которое будет меняться название сервера(Сейчас стоит 10 сек.) В конец мода(ну или куда удобнее), добавим: forward ChangeHostname(); public ChangeHostname() { switch (gChangeHN) { case 0: SendRconCommand("hostname Название RP [CR-MP 0.3e]"); //Название 1 case 1: SendRconCommand("hostname Название RP [Присоединяйся!]"); //Название 2 } if(gChangeHN == 2) { gChangeHN = 0; } else { gChangeHN++; } } Автор: Неизвестен
  13. Всем привет. Наверное многих кто работал с модом Gamer достал один баг, вроде в исправлении легкий но сложный в поиске. Я долго искал в чем проблема, пока не начал по этапно изучать все. Как извесно баг заключается в том что авто после рес кара ставало не так как его парковали. Но после "Рестарта" все было норм. Кароче говоря проблема в одном паблике OnVehicleSpawn(vehicleid). Для того что бы вам исправить баг нужно заменить всего пару строчек. В геймере этот паблик выглядит так: public OnVehicleSpawn(vehicleid) { DestroyObject(Blink[vehicleid][0]); DestroyObject(Blink[vehicleid][1]); VehInfo[vehicleid][vRightBlink] = 0; DestroyObject(Blink[vehicleid][2]); DestroyObject(Blink[vehicleid][3]); VehInfo[vehicleid][vLeftBlink] = 0; if(GetRealID(vehicleid) != -1) { if(!strcmp(CarInfo[GetRealID(vehicleid)][cOwner],"Nones",false)) { SetVehiclePos(vehicleid,CarInfo[GetRealID(vehicleid)][cAx],CarInfo[GetRealID(vehicleid)][cAy],CarInfo[GetRealID(vehicleid)][cAz]); SetVehicleZAngle(vehicleid,CarInfo[GetRealID(vehicleid)][cAa]); } else { SetVehiclePos(vehicleid,CarInfo[GetRealID(vehicleid)][cPx],CarInfo[GetRealID(vehicleid)][cPy],CarInfo[GetRealID(vehicleid)][cPz]); SetVehicleZAngle(vehicleid,CarInfo[GetRealID(vehicleid)][cPa]); } ChangeVehicleColor(vehicleid,CarInfo[GetRealID(vehicleid)][cCol1],CarInfo[GetRealID(vehicleid)][cCol2]); SetTuneCar(vehicleid); } return 1; } Но функция здесь не верна, так как SetVehicleZAngle не загружает угол поворота если персонаж не находится в авто. По этому что бы загружать угол поворота вам нужно сделать уничтожение авто и создание нового. Выглядит это примерно вот так: public OnVehicleSpawn(vehicleid) { DestroyObject(Blink[vehicleid][0]); DestroyObject(Blink[vehicleid][1]); VehInfo[vehicleid][vRightBlink] = 0; DestroyObject(Blink[vehicleid][2]); DestroyObject(Blink[vehicleid][3]); VehInfo[vehicleid][vLeftBlink] = 0; DestroyVehicle(CarInfo[GetRealID(vehicleid)][cID]);//Удаляем авто if(!strcmp(CarInfo[GetRealID(vehicleid)][cOwner],"Nones",false)) { CarInfo[GetRealID(vehicleid)][cID] = CreateVehicle(CarInfo[GetRealID(vehicleid)][cMod],CarInfo[GetRealID(vehicleid)][cAx],CarInfo[GetRealID(vehicleid)][cAy],CarInfo[GetRealID(vehicleid)][cAz],CarInfo[GetRealID(vehicleid)][cAa],CarInfo[GetRealID(vehicleid)][cCol1],CarInfo[GetRealID(vehicleid)][cCol2],60000*4); } else { CarInfo[GetRealID(vehicleid)][cID] = CreateVehicle(CarInfo[GetRealID(vehicleid)][cMod],CarInfo[GetRealID(vehicleid)][cPx],CarInfo[GetRealID(vehicleid)][cPy],CarInfo[GetRealID(vehicleid)][cPz],CarInfo[GetRealID(vehicleid)][cPa],CarInfo[GetRealID(vehicleid)][cCol1],CarInfo[GetRealID(vehicleid)][cCol2],60000*4); } ChangeVehicleColor(vehicleid,CarInfo[GetRealID(vehicleid)][cCol1],CarInfo[GetRealID(vehicleid)][cCol2]); SetTuneCar(vehicleid); ChangeVehiclePaintjob(vehicleid,CarInfo[GetRealID(vehicleid)][cPaintJob]); SetTuneCar(vehicleid); return 1; } Взято с другого ресурса!!! Автор : Red_Devils
  14. Maximka

    Вип чат

    Здравствуйте Уважаемые пользователи сайта Gs-Games! Вот выкладываю вип чат(Для игроков с випом 1,2,и 3 лвл) Делал сам! Вот собственно команда Автор:Maximka if(strcmp(cmd, "/vc", true) == 0 || strcmp(cmd, "/v", true) == 0 || strcmp(cmd, "//", true) == 0) { if(IsPlayerConnected(playerid)) { GetPlayerName(playerid, sendername, sizeof(sendername)); new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[72]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) { SendClientMessage(playerid, COLOR_GRAD2, "*Используйте: (/vc)[Вип чат]"); return 1; } if (PlayerInfo[playerid][pDonateRank] == 1) { format(string, sizeof(string), "Bronse VIP`S %s: %s", sendername, result); SendClientMessageToAll(COLOR_ORANGE,string); } else if (PlayerInfo[playerid][pDonateRank] == 2) { format(string, sizeof(string), "Silver VIP`S %s: %s", sendername, result); SendClientMessageToAll(COLOR_WHITE,string); } else if (PlayerInfo[playerid][pDonateRank] == 3) { format(string, sizeof(string), "Gold VIP`S %s: %s", sendername, result); SendClientMessageToAll(COLOR_YELLOW,string); } else { SendClientMessage(playerid, COLOR_GRAD1, " У вас нет прав!"); return 1; } printf("Vip %s: %s", sendername, result); } return 1; }
  15. Здравствуйте! Эта тема для тех, кто не знает как ставить анти чит в мод. Начнем. Ко всем 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; } На этом все.
  16. Вы используйте команду /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
  17. Здравствуйте уважаемые пользователи 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; // Лицензия на оружие. } Ну все не чего сложного. Наш урок на этом заканчивается. Спасибо за внимание.
  18. Доброго времени суток. Для собственных нужд необходима была отправка в чат сообщений длиной более 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.
  19. Многие просят вырезать систему авто с мода gamer. Сегодня решил попробовать вырезать. Вырезал не так что попадется, а компилировал как скрипт. Так что думаю ничего не упустил. В коде есть закомментированные строки, их нужно включить когда вошьете авторынок в свой мод. Если не включите, не пойми что у вас там случиться. Если возникнут проблемы при компиляции пишите в данную тему. Автор вырезки: Amfy auto.pwn
  20. Здравствуйте уважаемые форумчане! Решил вырезать из своего мода команду на рестарт(но это не обычная команда на рестарт,она с причиной) Ну все хватит говорить попусту приступим к работе! 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; } Вот и все если есть недочеты я думаю вы исправите!Спасибо за внимание!Не судите строго
  21. Вы все знаете эту команду.и да я уверен она есть у всех!Но я выкладываю для новичков которые только начинают в скриптинге или тем кто пишет свой мод с 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; }
  22. Всем привет Вот вырезал из своего мода, может кому надо. Варны можно снять обычной /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 - Уровень администрирования после максимального количества предупреждений Думаю, разберетесь, т.к. я все подробно расписал. Если будут ошибки при компилировании или что то еще, пишите в тему, постараюсь ответить всем.
  23. Здравствуйте ув. пользователи сайта 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]
  24. 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); Спасибо за внимание.
×

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

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