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

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

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

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

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

Тип контента


Форумы

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

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

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


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

  • Начало

    Конец


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

  • Начало

    Конец


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

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

  1. Всем привет. Выкладываю урок по созданию ворот, которые будут открываться по кнопке. Для этого используется функция CreateObject Я для примера возьму ворота в Доках: CreateObject(969, 2720.3772,-2409.7523,12.6,0, 0.0000, 90);//Закрытые ворота CreateObject(969, 2720.3772,-2508.3069,12.6,0, 0.0000, 90);//Открытые ворота После этого вам нужно создать переменную., которая будет хранить в себе порядковый ID ворот. Ко всем new new gate1; Теперь создадим объект ворот на сервере В public OnGameModeInit засуньте строчку с функцией CreateObject gate1 = CreateObject(ид_объекта, x,y,z, поворот_x, поворот_y, поворот_z);// Укажите ваши данные о ЗАКРЫТЫХ воротаx Для простого примера я создам ворота в доках (координаты открытых и закрытых ворот смотрите выше) public OnGameModeInit() { gate1 = CreateObject(969, 2720.3772,-2409.7523,12.6,0, 0.0000, 90);//Если у вас есть этот public то просто вставте эту строчку с созданием объекта return 1; } Ворота созданы, но теперь их надо заставить двигаться в public OnPlayerCommandText if(!strcmp(cmdtext, "/opengate", true)) { if(IsPlayerInRangeOfPoint(playerid, 10, 2720.3772,-2409.7523,12.6))// Укажите координаты закрытых ворот, 10 - это радиус, где будет действовать открытие ворот { MoveDynamicObject(gate1,2720.3772, -2401.2523, 12.6, 2.0);//Двигаем ворота на позицию открытых ворот SetTimer("CloseGate1", 7000, false);//Создадим таймер что ворота закрылись автоматически } } Теперь создадим public чтоб ворота закрылись самостоятельно Ко всем foward forward CloseGate1(); В конец мода public CloseGate1() { MoveDynamicObject(gate1, 2720.3772,-2409.7523,12.6, 2.0);//Двигаем ворота на позицию закрытых ворот return 1; } Ворота созданы и вы теперь можете их открыть командой /opengate Теперь делаем открытие ворот кнопкой. В public OnPlayerKeyStateChange if(newkeys & KEY_WALK) // На кнопку АЛЬТ (alt) { if(IsPlayerInRangeOfPoint(playerid, 10, 2720.3772,-2409.7523,12.6))// Укажите координаты закрытых ворот, 10 - это радиус, где будет действовать открытие ворот { MoveDynamicObject(gate1,2720.3772, -2401.2523, 12.6, 2.0);//Двигаем ворота на позицию открытых ворот SetTimer("CloseGate1", 7000, false);//Создадим таймер что ворота закрылись автоматически } } На этом урок окончен. Всем спасибо за внимание! Помогал мне (автор): valuch
  2. Здравствуйте хочу представить вам мою работу.Простенький урок,думаю он пригодиться новичку. И так добавим ко всем forward forward Reklama(); Добавим в public OnGameModeInit() SetTimer("Reklama",90000,1); // Это время,можете заменить на свое. И создаем паблик. public Reklama() { SendClientMessageToAll(0x66ff00AA, "Лучший форум GSGAMES.RU/forum"); SendClientMessageToAll(0x66ff00AA, "Наш сайт GSGAMES.RU"); SendClientMessageToAll(0x66ff00AA, "Ждем вас!"); }
  3. Для того , чтобы "РП" чат работал , нам потребуется: Руки и паблик "OnPlayerText" В OnPlayerText вставляем следующее: new string[256]; new sendername[MAX_PLAYER_NAME]; GetPlayerName(playerid, sendername, sizeof(sendername)); format(string,sizeof string,"%s говорит: %s",sendername,text); new Float:xpos,Float:ypos,Float:zpos; GetPlayerPos(playerid,xpos,ypos,zpos); for(new i=0;i<MAX_PLAYERS;i++){ if(IsPlayerInRangeOfPoint(i,35,xpos,ypos,zpos)) SendClientMessage(i,0xFFFFFFFF,string); //на расстоянии "35" ваш текст будет видно , а также отсылаемые сообщения белого цвета return false;
  4. Многие сталкивались с такой проблемой , что при создании модов с 0 у игроков в табе , в чате или на карте обозначаются ники разными цветами Решением этого , мне помогла одна унылая строчка :) В OnPlayerSpawn добавляем SetPlayerColor(playerid, 0xFFFFFFFF); //белый цвет , можно изменить на свой при желании :) Можно так-же это добавить в OnPlayerConnect , чтобы при коннекте не было цветных ников игроков в TAB'е Думаю многим это не помешает , многие это знали , но многие и нет :)
  5. Komaroff 71

    Пулемёт на танке

    Добрый вечер,господа. Как-то раз видел вопрос,связанный с аттачем рабочего минигана к танку(или БТР,но не суть) Вот пример такого готового решения: В начале мода добавим: #define MAX_MINIGUNS 10 //количество танков #undef MAX_PLAYERS #define MAX_PLAYERS 100 //кол-во слотов new mgun[MAX_MINIGUNS] ,minigunnum = 0 ,vehhasminigun[MAX_VEHICLES] ,laser[MAX_PLAYERS]; #define PUB:%1(%2) forward %1(%2); public %1(%2) После этого добавим функцию в любое место(удобней в конец мода): GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance) { new Float:a; GetPlayerPos(playerid, x, y, a); GetPlayerFacingAngle(playerid, a); if (GetPlayerVehicleID(playerid)) { GetVehicleZAngle(GetPlayerVehicleID(playerid), a); } x += (distance * floatsin(-a, degrees)); y += (distance * floatcos(-a, degrees)); } В public OnGameModeInit(): for(new i = 0; i < MAX_VEHICLES; ++i) vehhasminigun[i] = 0; SetTimer("check", 5000, 1); SetTimer("loop", 500, 1); Теперь в конце мода создадим ещё несколько функций: PUB:check( ) { for( new i = 0; i < MAX_VEHICLES; ++i ) { new model = GetVehicleModel( i ); if( model == 432 ) { if( vehhasminigun[ i ] == 0 ) { vehhasminigun[ i ] = 1; mgun[ minigunnum ] = CreateObject( 2985, 0, 0, 0, 0, 0, 0 ); AttachObjectToVehicle( mgun[ minigunnum ], i, 0.74, 3.37, -0.25, 0.00, 0.00, 89.47 ); minigunnum ++; } } } return 1; } PUB:loop( ) { for( new i = 0; i < MAX_PLAYERS; ++i ) { if( IsPlayerConnected( i ) ) { new vehicleid = GetPlayerVehicleID( i ); new model = GetVehicleModel( vehicleid ); if( model == 432 ) { new keys ,ud ,lr; GetPlayerKeys( i, keys, ud, lr ); if( keys & 128 ) { SetPlayerAttachedObject( i, 0, 18695, 1, 0.379999, 1.799999, -2.700000, 0.000000, 0.000000, 0.000000, 1.000000, 1.000000, 1.000000 ); laser[ i ] = CreateObject( 19084, 0.75, 3.84, 0.86, 0.00, 0.00, 92.61 ); AttachObjectToVehicle( laser[ i ], vehicleid, 0.73, 4.18, 0.86, 0.00, 0.00, 88.03 ); PlayerPlaySound( i, 1135, 0.0, 0.0, 0.0 ); SetTimerEx( "destroy", 250, 0, "i", i ); new Float:x ,Float:y ,Float:z ,Float:x2 ,Float:y2; GetPlayerPos( i, x2, y2, z ); #pragma unused x2 #pragma unused y2 GetXYInFrontOfPlayer(i, x, y, 5.0); for( new u = 0; u < MAX_PLAYERS; ++u) { if( IsPlayerInRangeOfPoint(u, 6.0, x, y, z ) && u != i) { new Float:hp; GetPlayerHealth( u, hp ); SetPlayerHealth( u, hp - 5 ); PlayerPlaySound( u, 1135, 0.0, 0.0, 0.0 ); if( hp < 1 ) CallLocalFunction( "OnPlayerDeath", "ddd", u, i, 38 ); } } } } } } return 1; } PUB:destroy(i) { RemovePlayerAttachedObject( i, 0 ); DestroyObject( laser[ i ] ); return 1; }
  6. Здравствуйте Уважаемые Пользователи GSG!Я хочу предложить одну команду(на мой взгляд полезную) Что же она делает?! -Вы вводите команду(/ваша кмд замените на свою кмд),вводите команду и рядом координаты! И вас автоматически тпхает на те координаты.Может кому пригодится. Вот сама кмд! if(strcmp(cmd, "/ваша кмд", true) == 0) { new PosX[255]; new PosY[255]; new PosZ[255]; PosX = strtok(cmdtext, idx); PosY = strtok(cmdtext, idx); PosZ = strtok(cmdtext, idx); if(!strlen(PosX)) { SendClientMessage(playerid,COLOR_WHITE," Не ввел X координату. Использование: /tpme X Y Z"); return 1; } if(!strlen(PosY)) { SendClientMessage(playerid,COLOR_WHITE," Не ввел Y координату. Использование: /tpme X Y Z"); return 1; } if(!strlen(PosZ)) { SendClientMessage(playerid,COLOR_WHITE," Не ввел Z координату. Использование: /tpme X Y Z"); return 1; } SetPlayerPos(playerid,strval(PosX),strval(PosY),strval(PosZ)); return 1; }
  7. Здравствуйте уважаемые пользователи форума. Хотел бы предоставить вам спидометр который я делал для мода Gamer. Вроде простенький, не знал что можно туда добавить и сделал такой. Кому нужно будет можете брать для себя.
  8. При вводе этой команды, на вашем плече появится попугай) Ко всем 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; } Вот и все, может кто-то возьмёт себе :)
  9. Здравствуйте, я часто сталкивался с тем, что люди спрашивают как заменить "Server Unknown Command" на свой текст, решение довольно простое: 1) Ищем у себя в моде public OnPlayerCommandText 2) И туда в самый низ паблика, ставим вместо return 0; вот это: return SendClientMessage(playerid,-1,"Такой команды нет!"); Может кому нибудь понадобится, взято с форумов.
  10. Показываю как сделать бан на время с использованием 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 Взято с павно портала
  11. Ко всем #define, если у кого небуть нету такого цвета #define COLOR_GREEN 0x33AA33AA Ко всем public В public OnPlayerCommandText(playerid, cmdtext[]){ new nxtlevel = PlayerInfo[playerid][pLevel]+1; new expamount = nxtlevel*levelexp; if (PlayerInfo[playerid][pExp] > expamount) { PlayerInfo[playerid][pLevel]++; PlayerInfo[playerid][pExp] = 1; SendClientMessage(playerid, COLOR_GREEN, "Ваш игровой лвл был автоматически повышен!"); return 1; } Друзья строго не судите! Может кому-то нужно) Автор-(Vlad_Andreev)
  12. 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
  13. Доброго времени суток. Опять от безделья чтото да наколякал :) Крч новый подгон. Управление коордами. И так ид сторон : 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
  14. Здравствуйте дорогие пользователи портала GSG. Я рад видеть вас в моей теме. В данном уроке я хочу вам продемонстрировать, как добавить свою музыку при входе на сервер. То есть что бы играла музыка не с радио, а играла своя музыка. Сразу говорю, делается всё это просто. Для начала на понадобиться любой хостинг сайтов, могу предложить Ucoz, если у вас нет денег на платных хостинг. После того как вы создали сайт на Ucoz, мы загружаем в "Файловый менеджер" сам трек. После того как вы загрузили трек, идём например по URL: http//:moy-sait.ucoz.ru/Vhod.mp3. !!!Внимание!!! Главное нужно что бы формат файла был .mp3. Если будет примерно вот так: http//:moy-sait.ucoz.ru/Vhod/, то трек не воспроизведётся. С этим разобрались. Перейдём к моду. В public OnPlayerConnect: switch(random(1)) { case 0: PlayAudioStreamForPlayer(playerid,"http//:moy-sait.ucoz.ru/Vhod.mp3"); case 1: PlayAudioStreamForPlayer(playerid,"http//:moy-sait.ucoz.ru/Vhod.mp3"); } Видим строчку switch(random(1)), видим цифру 1. Данное число должно равняться последней строчки. URL меняем на свои. В public OnPlayerSpawn: StopAudioStreamForPlayer(playerid); Ну вот и всё. Огромное спасибо за внимание!
  15. Выкладываю скрипт военного билета, знаю он уже есть, но не полный. (В этом добавлена кмд showbil и без вб в гос.службы принять человека невозможно). Начнем: В enum pInfo добавить: pArmBil, В public OnPlayerConnect добавить: PlayerInfo[playerid][pArmBil] = 0; Теперь добавим в public OnPlayerRegister format(var, 64, "ArmBil=%d\n",PlayerInfo[playerid][pArmBil]);fwrite(hFile, var); Еще добавим в public OnPlayerUpdate вот это: format(var, 64, "ArmBil=%d\n",PlayerInfo[playerid][pArmBil]);fwrite(hFile, var); В public OnPlayerLogin добавим if( strcmp( key , "ArmBil" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pArmBil] = strval( val ); } И добавляем 2 команды в public OnPlayerCommandText if(strcmp(cmd, "/givebil", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "/givebil [id игрока]"); return 1; } giveplayerid = ReturnUser(tmp); if(IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { GetPlayerName(playerid, sendername, sizeof(sendername)); GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); format(string, sizeof(string), "Вы выдали %s военный билет.",giveplayer); SendClientMessage(playerid, COLOR_LIGHTBLUE, string); format(string, sizeof(string), "Вам выдали военный билет."); SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string); PlayerInfo[giveplayerid][pArmBil] = 1; return 1; } } else { SendClientMessage(playerid, COLOR_GREY, "Игрок оффлайн."); return 1; } } return 1; } И туда же вторую команду в public OnPlayerCommandText добавляем вот это if(strcmp(cmd, "/showbil", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_ISPOLZUY,"* ИНФО: /showbil [ид игрока]"); new target = strval(tmp); new texts1[120]; if(!IsPlayerConnected(target)) return SendClientMessage(playerid, COLOR_GREY, "* Этот игрок оффлайн"); if(GetDistanceBetweenPlayers(playerid,target) > 2) return SendClientMessage(playerid, COLOR_GREY, "* Нет ни кого рядом"); if(PlayerInfo[playerid][pArmBil]) { texts1 = "Военная Служба Пройдена"; } else { texts1 = "Военная Служба Не Пройдена"; } GetPlayerName(playerid, sendername, sizeof(sendername)); GetPlayerName(target, giveplayer, sizeof(giveplayer)); format(string, sizeof(string), "Военный Билет %s: %s",sendername, texts1); ShowPlayerDialog(target,7588,DIALOG_STYLE_MSGBOX,"Военный Билет",string,"Ок","Ок"); format(string, sizeof(string), "* %s показывает свой военный билет %s", sendername,giveplayer); ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); } return 1; } Автор: Fedya На этом всё, надеюсь вам пригодится (особенно новичкам)!
  16. Доброго времени суток форумчане. Вот от скукоты решил сделать небольшую команду. В самое начало добавим форвард 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.
  17. Все когдато сталкивались с дм-щиками! Так вот ,я сделал так чтобы это было давольно проще! Описание : При стрельбе в админа ,стрелявшего кикает с сервера! Для включения и отключения ,довольно ввести команду /on Ко всем new: new AntiStrike[MAX_PLAYERS]; Вставим команду для тех у кого стоит переменная padmin if(strcmp(cmd, "/on", true) == 0) { if(PlayerInfo[playerid][pAdmin] > 0 && AntiStrike[playerid] == 0) { AntiStrike[playerid] = 1; GivePlayerWeapon(playerid, 5, 999); SendClientMessage(playerid, -1, "Вы актевировали анти стрельбу по админу"); } else if(PlayerInfo[playerid][pAdmin] > 0 && AntiStrike[playerid] == 1) { AntiStrike[playerid] = 0; ResetPlayerWeapons(playerid); SendClientMessage(playerid, -1, "Вы деактевировали анти стрельбу по админу"); } return 1; } Вставим команду для тех у кого не стоит переменная padmin, активация по RCON if(strcmp(cmd, "/on", true) == 0) { if(IsPlayerAdmin(playerid) && AntiStrike[playerid] == 0) { AntiStrike[playerid] = 1; GivePlayerWeapon(playerid, 5, 999); SendClientMessage(playerid, -1, "Вы актевировали анти стрельбу по админу"); } else if(IsPlayerAdmin(playerid) && AntiStrike[playerid] == 1) { AntiStrike[playerid] = 0; ResetPlayerWeapons(playerid); SendClientMessage(playerid, -1, "Вы деактевировали анти стрельбу по админу"); } return 1; } Теперь восприятие от пули Для тех у кого стоит переменная padmin public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid) { if(issuerid != INVALID_PLAYER_ID && AntiStrike[issuerid] == 1 && weaponid == 5 && PlayerInfo[issuerid][pAdmin]) { new allString[128], banName[MAX_PLAYER_NAME], adminName[MAX_PLAYER_NAME]; GetPlayerName(playerid, banName, sizeof (banName)); GetPlayerName(issuerid, adminName, sizeof (adminName)); format(allString, sizeof(allString), "%s забанил %s,причина стрельба по админу!", banName, adminName); SendClientMessageToAll(-1, allString); Kick(playerid); } return true; } Теперь восприятие от пули Для тех у кого не стоит переменная padmin public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid) { if(issuerid != INVALID_PLAYER_ID && AntiStrike[issuerid] == 1 && weaponid == 5 && IsPlayerAdmin(issuerid)) { new allString[128], banName[MAX_PLAYER_NAME], adminName[MAX_PLAYER_NAME]; GetPlayerName(playerid, banName, sizeof (banName)); GetPlayerName(issuerid, adminName, sizeof (adminName)); format(allString, sizeof(allString), "%s забанил %s,причина стрельба по админу!", banName, adminName); SendClientMessageToAll(-1, allString); Kick(playerid); } return true; } На этом все :)Автор скрипта : Frost (Я) Автор перевода : Kazaluka
  18. 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] На этом все :) Скриншоты скоро выкладу.
  19. Как мы с Вами знаем , при создание пабликов , надо строго создавать forward'ы Но с кусочком этого кода , нам этого не понадобится В начало мода к define добавим: #define pubfor:%0(%1) forward %0(%1); public %0(%1) И теперь при создании паблика не пишем public . а пишем pubfor Пример: pubfor: Vasek(playerid) Стандартные паблики не изменять!!
  20. Ничего мудреного - обычная команда с анимацией избушки на персонаже.
  21. В этом уроке вы узнаете как сделать динамическое название сервера(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++; } } Автор: Неизвестен
  22. Может нужен кому нибудь. Переделал из /offadminka Изначального автора незнаю Варны можно снять обычной /unwarn if(strcmp(cmd, "/offwarn", true) == 0) { if(PlayerInfo[playerid][pAdmin] >= 4) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /offwarn [Ник] [Причина]"); new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if (!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /offwarn [Ник] [Причина]"); format(string, sizeof(string), "%s.ini", tmp); if(fexist(string)) { format(string, sizeof(string), "%s.ini", tmp); new File = ini_openFile(string); ini_setInteger(File,"Warnings",1); ini_closeFile(File); GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "[OFFWARN]Администратор %s выдал варн игроку %s, причина: %s",sendername,giveplayer,(result)); ABroadCast(COLOR_LIGHTRED,string,1); } return true; } else { SendClientMessage(playerid, COLOR_ORANGE, "Вам недоступна эта функция!"); } return true; } Значения: if(PlayerInfo[playerid][pAdmin] >= 4) 4 - Уровень администрирования, с которого можно выдавать предупреждение
  23. Добры день дорогие форумчане вот решил выложить свою вырезку системы подъездов из CRMP|RP. И так приступим! ко всем forward: forward UpdatePodezd(); ко всем new: new lift1fordom1; new dom1vihod; ко всем enum: enum poInfo { Float:poiX, Float:poiY, Float:poiZ, poFirst, poSecond, poTherd, poFour, poFive, poSix, poSeven, poEight, poNine, poTen, poPic, poAllstate, poWwoarld, poInt, }; new Podezd[100][poInfo]; //подъезды после new allhouse: new Allpodezd = 0; Дальше ищем if(newkeys & KEY_SPRINT) И после этого вставляем for(new pod = 1; pod <= Allpodezd; pod++) { if(IsPlayerInRangeOfPoint(playerid,1.0,Podezd[pod][poiX],Podezd[pod][poiY],Podezd[pod][poiZ]) && GetPlayerVirtualWorld(playerid) == Podezd[pod][poWwoarld]) { SetPlayerVirtualWorld(playerid,Podezd[pod][poFirst]); SetPlayerPos(playerid,2337.6519,-1720.1720,24.7105); return 1; } } ко всем диалогам: if(dialogid==3910) { if(response) { if(listitem == 0) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poFirst]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 1) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poSecond]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 2) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poTherd]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 3) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poFour]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 4) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poFive]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 5) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poSix]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 6) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poSeven]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 7) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poEight]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 8) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poNine]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } if(listitem == 9) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerVirtualWorld(playerid,Podezd[wot][poTen]); SetPlayerPos(playerid,2333.5459,-1717.8135,24.7109); } } return 1; } в public OnGameModeInit() LoadPodezd(); в public OnPlayerPickUpPickup(playerid, pickupid): for(new pod = 1; pod <= Allpodezd; pod++) { if(IsPlayerInRangeOfPoint(playerid,2.0,Podezd[pod][poiX],Podezd[pod][poiY],Podezd[pod][poiZ])) { GameTextForPlayer(playerid,"~w~мA„–…ЏE ~r~~k~~PED_SPRINT~",5000,1); return 1; } } в public OnPlayerPickUpPickup(playerid, pickupid): if(pickupid == lift1fordom1) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; if(Podezd[wot][poAllstate] == 10) { ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж\n3 этаж\n4 этаж\n5 этаж\n6 этаж\n7 этаж\n8 этаж\n9 этаж\n10 этаж","выбрать","Отмена"); return 1; } if(Podezd[wot][poAllstate] == 9)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж\n3 этаж\n4 этаж\n5 этаж\n6 этаж\n7 этаж\n8 этаж\n9 этаж","выбрать","Отмена"); if(Podezd[wot][poAllstate] == 8)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж\n3 этаж\n4 этаж\n5 этаж\n6 этаж\n7 этаж\n8 этаж","выбрать","Отмена"); if(Podezd[wot][poAllstate] == 7)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж\n3 этаж\n4 этаж\n5 этаж\n6 этаж\n7 этаж","выбрать","Отмена"); if(Podezd[wot][poAllstate] == 6)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж\n3 этаж\n4 этаж\n5 этаж\n6 этаж","выбрать","Отмена"); if(Podezd[wot][poAllstate] == 5)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж\n3 этаж\n4 этаж\n5 этаж","выбрать","Отмена"); if(Podezd[wot][poAllstate] == 4)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж\n3 этаж\n4 этаж","выбрать","Отмена"); if(Podezd[wot][poAllstate] == 3)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж\n3 этаж","выбрать","Отмена"); if(Podezd[wot][poAllstate] == 2)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж\n2 этаж","выбрать","Отмена"); if(Podezd[wot][poAllstate] == 1)return ShowPlayerDialog(playerid,3910,DIALOG_STYLE_LIST,"Выберите этаж!","1 этаж","выбрать","Отмена"); } if(pickupid == dom1vihod) { new wot = GetPlayerVirtualWorld(playerid); wot = wot/10; SetPlayerPos(playerid,Podezd[wot][poiX],Podezd[wot][poiY],Podezd[wot][poiZ]); SetPlayerVirtualWorld(playerid,Podezd[wot][poWwoarld]); return 1; } ко всем командам: if(strcmp(cmd, "/addpod", true) == 0) { if(PlayerInfo[playerid][pAdmin] < 9) return SendClientMessage(playerid, -1, "У вас нет прав на использование этой команды!"); if(dostup[playerid] != 1) { ShowPlayerDialog(playerid,2934,DIALOG_STYLE_INPUT,"Доступ администратора","Введите пароль от административной панели","Ок","Отмена"); return 1; } { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /addpod [колличество этажей]"); new money = strval(tmp); if(money < 1||money > 10)return SendClientMessage(playerid, COLOR_GRAD2, "Не менее 1 и не более 10!"); Allpodezd++; GetPlayerPos(playerid, Podezd[Allpodezd][poiX],Podezd[Allpodezd][poiY],Podezd[Allpodezd][poiZ]); Podezd[Allpodezd][poFirst] = Allpodezd*10; Podezd[Allpodezd][poSecond] = Allpodezd*10+1; Podezd[Allpodezd][poTherd] = Allpodezd*10+2; Podezd[Allpodezd][poFour] = Allpodezd*10+3; Podezd[Allpodezd][poFive] = Allpodezd*10+4; Podezd[Allpodezd][poSix] = Allpodezd*10+5; Podezd[Allpodezd][poSeven] = Allpodezd*10+6; Podezd[Allpodezd][poEight] = Allpodezd*10+7; Podezd[Allpodezd][poNine] = Allpodezd*10+8; Podezd[Allpodezd][poTen] = Allpodezd*10+9; Podezd[Allpodezd][poWwoarld] = GetPlayerVirtualWorld(playerid); Podezd[Allpodezd][poInt] = GetPlayerInterior(playerid); Podezd[Allpodezd][poAllstate] = money; new iniOpen = ini_openFile("podezd.cfg"); ini_setInteger(iniOpen, "AllPodezd", Allpodezd); ini_closeFile(iniOpen); SavePodezd(Allpodezd); UpdatePodezd(); SendClientMessage(playerid, COLOR_GRAD2, "Подъезд успешно создан"); return 1; } } ко всем stock: stock LoadPodezd() { new ids[32]; new iniOpens = ini_openFile("podezd.cfg"); ini_getInteger(iniOpens, "AllPodezd", Allpodezd); ini_closeFile(iniOpens); if(Allpodezd != 0) { for(new pod = 1; pod <= Allpodezd; pod++) { format(ids,sizeof(ids),"podezde/%d.ini",pod); new iniOpen = ini_openFile(ids); ini_getFloat(iniOpen, "poiX", Podezd[pod][poiX]); ini_getFloat(iniOpen, "poiY", Podezd[pod][poiY]); ini_getFloat(iniOpen, "poiZ", Podezd[pod][poiZ]); ini_getInteger(iniOpen, "poFirst", Podezd[pod][poFirst]); ini_getInteger(iniOpen, "poSecond", Podezd[pod][poSecond]); ini_getInteger(iniOpen, "poTherd", Podezd[pod][poTherd]); ini_getInteger(iniOpen, "poFour", Podezd[pod][poFour]); ini_getInteger(iniOpen, "poFive", Podezd[pod][poFive]); ini_getInteger(iniOpen, "poSix", Podezd[pod][poSix]); ini_getInteger(iniOpen, "poSeven", Podezd[pod][poSeven]); ini_getInteger(iniOpen, "poEight", Podezd[pod][poEight]); ini_getInteger(iniOpen, "poNine", Podezd[pod][poNine]); ini_getInteger(iniOpen, "poTen", Podezd[pod][poTen]); ini_getInteger(iniOpen, "poAllstate", Podezd[pod][poAllstate]); ini_getInteger(iniOpen, "poWwoarld", Podezd[pod][poWwoarld]); ini_getInteger(iniOpen, "poInt", Podezd[pod][poInt]); ini_closeFile(iniOpen); new p[64]; format(p,64,"{d2d275}Подъезд номер: {7ba05b}%d",pod); Create3DTextLabel(p,COLOR_BLUE,Podezd[pod][poiX],Podezd[pod][poiY],Podezd[pod][poiZ],50.0,0,1); Podezd[pod][poPic] = CreateDynamicPickup(1318,23,Podezd[pod][poiX], Podezd[pod][poiY], Podezd[pod][poiZ],Podezd[pod][poWwoarld],Podezd[pod][poInt]); } } return 1; } stock UpdatePodezd() { for(new pod = 1; pod <= Allpodezd; pod++) { Delete3DTextLabel(Text3D:pod); DestroyDynamicPickup(Podezd[pod][poPic]); new p[64]; format(p,64,"{d2d275}Подъезд номер: {7ba05b}%d",pod); Create3DTextLabel(p,COLOR_BLUE,Podezd[pod][poiX],Podezd[pod][poiY],Podezd[pod][poiZ],50.0,Podezd[pod][poWwoarld],Podezd[pod][poInt]); Podezd[pod][poPic] = CreateDynamicPickup(1318,23,Podezd[pod][poiX], Podezd[pod][poiY], Podezd[pod][poiZ],Podezd[pod][poWwoarld],Podezd[pod][poInt]); } return 1; } Чуть дальше прошлого stock: stock SavePodezd(podezde) { new ids[32]; format(ids,sizeof(ids),"podezde/%d.ini",podezde); new iniOpen; iniOpen = ini_openFile(ids); if(iniOpen == -1 || iniOpen == -2) iniOpen = ini_createFile(ids); ini_setFloat(iniOpen, "poiX", Podezd[podezde][poiX]); ini_setFloat(iniOpen, "poiY", Podezd[podezde][poiY]); ini_setFloat(iniOpen, "poiZ", Podezd[podezde][poiZ]); ini_setInteger(iniOpen, "poFirst", Podezd[podezde][poFirst]); ini_setInteger(iniOpen, "poSecond", Podezd[podezde][poSecond]); ini_setInteger(iniOpen, "poTherd", Podezd[podezde][poTherd]); ini_setInteger(iniOpen, "poFour", Podezd[podezde][poFour]); ini_setInteger(iniOpen, "poFive", Podezd[podezde][poFive]); ini_setInteger(iniOpen, "poSix", Podezd[podezde][poSix]); ini_setInteger(iniOpen, "poSeven", Podezd[podezde][poSeven]); ini_setInteger(iniOpen, "poEight", Podezd[podezde][poEight]); ini_setInteger(iniOpen, "poNine", Podezd[podezde][poNine]); ini_setInteger(iniOpen, "poTen", Podezd[podezde][poTen]); ini_setInteger(iniOpen, "poAllstate", Podezd[podezde][poAllstate]); ini_setInteger(iniOpen, "poWwoarld", Podezd[podezde][poWwoarld]); ini_setInteger(iniOpen, "poInt", Podezd[podezde][poInt]); ini_closeFile(iniOpen); return 1; } К маппингу сервера: CreateObject(2142, 2335.3999, -1717.69995, 25.5, 0, 0, 0); Вот и всё. Автор: Неизвестен
  24. 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; }
  25. Всем привет. Наверное многих кто работал с модом 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
×

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

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