Поиск сообщества
Показаны результаты для тегов 'pawn'.
Найдено: 1,434 результата
-
1) Ко всем new new CarEngine[MAX_VEHICLES]; new engine,lights,alarm,doors,bonnet,boot,objective; 2) в OnPlayerConnect CarEngine[playerid] = 0; 3) В моде находим if(newstate == PLAYER_STATE_DRIVER) в него добавляем if(CarEngine[newcar] == 0) { if(!IsABMX(newcar)) { SendClientMessage(playerid,COLOR_PURPLE,"Чтобы завести/заглушить двигатель введите /engine"); } } new carid = GetPlayerVehicleID(playerid); if(IsABMX(carid)) { if(CarEngine[playerid]==0) { GetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(carid,true,lights,alarm,doors,bonnet,boot,objective); CarEngine[playerid] = 1; } } 4) В паблик public OnPlayerExitVehicle(playerid, vehicleid) добавляем if(!IsABMX(carid)) { if(CarEngine[playerid] == 1) { GetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(carid,false,lights,alarm,doors,bonnet,boot,objective); format(string, sizeof(string), "* %s заглушил двигатель и вышел из авто.", GetPlayerNameEx(playerid)); ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); CarEngine[playerid] = 0; } } 5) Теперь добавим комманду if(strcmp(cmd, "/engine", true) == 0) { if(IsPlayerInAnyVehicle(playerid)) { new carid = GetPlayerVehicleID(playerid); if(!IsABMX(carid)) { if(CarEngine[playerid]==0) { GetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(carid,true,lights,alarm,doors,bonnet,boot,objective); format(string, sizeof(string), "* %s завёл двигатель.", GetPlayerNameEx(playerid)); ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); CarEngine[playerid] = 1; } else if(CarEngine[playerid]==1) { GetVehicleParamsEx(carid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(carid,false,lights,alarm,doors,bonnet,boot,objective); format(string, sizeof(string), "* %s заглушил двигатель.", GetPlayerNameEx(playerid)); ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); CarEngine[playerid] = 0; } } } } 6) У кого нету добавляем в конец мода forward IsABMX(carid); public IsABMX(carid) { new model = GetVehicleModel(carid); if(model == 481 || model == 510 || model == 509) { return 1; } return 0; } Автор: fr0st
-
Tutorial YANS (Yet Another Neon System), или Написание системы установки неона с нуля.
SHOROOP опубликовал теме в Мануалы/Уроки
Доброго времени суток, уважаемые пользователи. Я знаю, что было уже очень много решений по установке неоновых огней на автомобиль, но толкового туториала с подробным объяснением, как и почему все работает, я не видел. Что же, нужно исправить эту досадную оплошность. Итак, вначале разберем принцип работы. Как многие знают, в SAMP разрешено прикреплять объекты к автомобилям. А поскольку в наличии есть объекты галогеновых ламп, задача становится простейшей - при установке неона создаем объект-лампу и крепим его к автомобилю, при демонтаже - удаляем. Объекты ламп имеют ID с 18647 по 18651 (в данном примере - красный, синий, зеленый, желтый и розовый соответственно). Как ни странно, но - с теорией все, пора переходить к практике. Создаем new.pwn, подключаем библиотеку a_samp. Для желающих - можно подключить и стример, в туториале будут использоваться стандартные функции для работы с объектами. #include Объявляем массив для хранения информации об автомобилях и неоновых огнях. В нулевом элементе будет храниться информация о наличии и цвете лампы (-1 - не установлен, от 0 до 4 - соответственно красный, синий, зеленый, желтый и розовый), первый и второй будут использоваться для хранения в них указателей на объекты, последний - для сохранения текущего состояния лампы (включена или выключена). new neon[MAX_VEHICLES][4]; Теперь приступим к основным функциям. Первой из них будет установка неона на автомобиль. Параметрами функции будут ID автомобиля в игре и цвет от 0 до 4 - при создании объекта 18647 будет сдвигаться на значение цвета (18647 - объект красной лампы). Алгоритм таков: нулевому элементу присваиваем значение цвета, третьему - единицу (лампа после установки включена), создаются два объекта (первый и второй элементы) и прикрепляются к автомобилю. forward PlaceNeon (vehicle, color); public PlaceNeon (vehicle, color) { neon[vehicle][0] = color; neon[vehicle][3] = 1; DestroyObject(neon[vehicle][1]); DestroyObject(neon[vehicle][2]); neon[vehicle][1] = CreateObject(18647+color,0,0,0,0,0,0,100.0); neon[vehicle][2] = CreateObject(18647+color,0,0,0,0,0,0,100.0); AttachObjectToVehicle(neon[vehicle][1], vehicle, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0); AttachObjectToVehicle(neon[vehicle][2], vehicle, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0); return 1; } Далее идет удаление неона. Функция принимает как параметр только ID авто. Ставим в нулевой элемент -1 (отсутствие неона), лампу выключаем (третий элемент в ноль), объекты удаляем. forward RemoveNeon (vehicle); public RemoveNeon (vehicle) { neon[vehicle][0] = -1; neon[vehicle][3] = 0; DestroyObject(neon[vehicle][1]); DestroyObject(neon[vehicle][2]); return 1; } Последняя функция - включение-выключение установленной лампы. Тут алгоритм посложнее. Если лампа установлена (первый элемент массива - не -1), начинает свою работу триггер. Если лампа была выключена - создаем два объекта нужного цвета. Если включена - удаляем их. Естественно, не забывая ставить нужные метки в состояние лампы. forward TurnNeon (vehicle); public TurnNeon (vehicle) { if (neon[vehicle][0] != -1) { switch (neon[vehicle][3]) { case 0: { neon[vehicle][3] = 1; neon[vehicle][1] = CreateObject(18647+neon[vehicle][0],0,0,0,0,0,0,100.0); neon[vehicle][2] = CreateObject(18647+neon[vehicle][0],0,0,0,0,0,0,100.0); AttachObjectToVehicle(neon[vehicle][1], vehicle, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0); AttachObjectToVehicle(neon[vehicle][2], vehicle, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0); } case 1: { neon[vehicle][3] = 0; DestroyObject(neon[vehicle][1]); DestroyObject(neon[vehicle][2]); } } } return 1; } Собственно, основные функции у нас есть. Как с ними работать - уже как подскажет фантазия, но я разберу конкретные примеры. Итак, установка будет проходить по команде /neon. Создаем диалоговое окно со списком. Прошу не пинать за то, что в первом меню всего один пункт - писалось с запасом, так как будет дополняться мишурой типа установки мигалок и так далее. public OnPlayerCommandText(playerid, cmdtext[]) { if(!strcmp("/neon", cmdtext, true)) { if(IsPlayerInAnyVehicle(playerid)) { if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER) SendClientMessage(playerid,0xAFAFAFAA,"Вы должны сидеть за рулем автомобиля"); else ShowPlayerDialog(playerid,6000,DIALOG_STYLE_LIST,"Меню","Неон","Выбрать","Отмена"); } return 1; } return 0; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == 6000) { if(response) { if(listitem==0) ShowPlayerDialog(playerid,6001,DIALOG_STYLE_LIST,"Неон", "Красный\nСиний\nЗеленый\nЖелтый\nРозовый\nУбрать неон","Дальше","Отмена"); } return 1; } if(dialogid == 6001) { if(response) { if(listitem==5) { RemoveNeon (GetPlayerVehicleID(playerid)); SendClientMessage (playerid, 0xff440000, "Неон удален"); } else if (listitem >=0 && listitem { PlaceNeon (GetPlayerVehicleID(playerid), listitem); SendClientMessage (playerid, 0xff440000, "Неон установлен"); } } return 1; } return 0; } Включение-выключение забьем на кнопку подмиссии (стандартно - 2 на алфавитной части клавиатуры). Используем старый-добрый дефайн PRESSED: #define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) И, собственно, описываем действия по кнопке: public OnPlayerKeyStateChange(playerid, newkeys,oldkeys) { if (PRESSED(512) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) TurnNeon (GetPlayerVehicleID(playerid)); return 1; } А что делать, если машина уничтожится? Объекты надо удалить. Используем OnVehicleDeath: public OnVehicleDeath (vehicleid, killerid) { DestroyObject(neon[vehicleid][1]); DestroyObject(neon[vehicleid][2]); return 1; } И для грамотной загрузки и выгрузки объектов - вычищаем массивы при старте и при остановке скрипта. public OnFilterScriptInit() { for (new i=0; i return 1; } public OnFilterScriptExit() { for (new i=0; i return 1; } Собственно, все! Я не рассматривал в данном примере сохранение параметров неона после выгрузки сервера в файле или БД, проверку на то, в авто ли игрок или в мотоцикле/вертолете/etc. и тому подобные вещи. Как видно из кода, за установку даже деньги не снимаются. В этом и заключается универсальность - можно заточить исходник под собственные нужды.- 6 ответов
-
- 9
-
- crmp
- criminal russia
-
(и ещё 4 )
C тегом:
-
FS Убираем [Если игрок стоит на машине,его скидывает]
Vadim_Galitskiy опубликовал теме в Дополнительные скрипты
Все наверное знают что если в машине сидит водитель,то любого кто попытается залезть на крышу тут же скинет. Вот решение: Ищем в моде вот это и удаляем: stock GetXYInBackOfPlayer(const playerid, &Float:x, &Float:y, const Float:distance){ new Float:a; GetPlayerPos(playerid, x, y, a); GetPlayerFacingAngle(playerid, a); if (IsPlayerInAnyVehicle(playerid)) { new vid=GetPlayerVehicleID(playerid); if (vid>0 && vid<=MAX_VEHICLES)GetVehicleZAngle(vid, a);} x -= (distance * floatsin(-a, degrees)); y -= (distance * floatcos(-a, degrees));} Потом это и тоже удаляем: public UnSurfCar(carid) { for(new i = 0; i<GetMaxPlayers(); i++) { if(GetPlayerSurfingVehicleID(i) == carid) { new Float:p[3]; GetPlayerPos(i,p[0],p[1],p[2]); GetXYInBackOfPlayer(i,p[0],p[1],5.0); SetPlayerPos(i,p[0],p[1],p[2]); } } return; } Дальше удаляем это: forward UnSurfCar(carid); Автор: UnKnowN -
Здравствуйте, у меня проблема при компиляции в pawno, выдает error 036, помогите пожалуйста, вот, если нужно скрин
- 2 ответа
-
- crmp
- criminal russia
-
(и ещё 4 )
C тегом:
-
После растарта сервера исчезают иконки,но при этом дома есть
- 6 ответов
-
- crmp
- criminal russia
-
(и ещё 4 )
C тегом:
-
Подскажите как удалить объект оканчательно вот скрин Как сделать чтоб этого не было ??? Вроде делаю все правельно
- 1 ответ
-
- crmp
- criminal russia
-
(и ещё 4 )
C тегом:
-
Найдем паблик: OnPlayerKeyStateChange и в него суем: -------------------------------------------------------------------------------------------------------------------------- if( newkeys == 1 || newkeys == 9 || newkeys == 33 && oldkeys != 1 || oldkeys != 9 || oldkeys != 33) { switch(GetVehicleModel(GetPlayerVehicleID(playerid))) { case 446,432,448,452,424,453,454,461,462,463,468,471,430,472,449,473,481,484,493,495,509,510,521,538,522,523,532,537,570,581,586,590,569,595,604,611: return 0; } AddVehicleComponent(GetPlayerVehicleID(playerid), 1010); } -------------------------------------------------------------------------------------------------------------------------- Теперь при нажатии ЛКМ у авто идет нитро, если отпустить ЛКМ никтро перестанет идти Вот и все. Автор: Ramzes
- 7 ответов
-
- 2
-
- crmp
- всё для crmp
- (и ещё 5 )
-
Ребят срочно,пожалуйста нужен streamer для crmp 0.3e
sanek112 опубликовал теме в Архив Вопросов/Проблем/Ошибок
кинь кто нить пожалуйста streamer для crmp 0.3e- 3 ответа
-
- crmp
- criminal russia
-
(и ещё 4 )
C тегом:
-
всем привет! когда запускаю север выдает такую хрень надо стример обновить?
- 2 ответа
-
- crmp
- criminal russia
-
(и ещё 4 )
C тегом:
-
Как из мапы мода зделать в mta мапу через конвертер
- 2 ответа
-
- crmp
- criminal russia
-
(и ещё 4 )
C тегом:
-
Помогите устранить ошибку пжл!)
- 1 ответ
-
- crmp
- criminal russia
-
(и ещё 4 )
C тегом:
-
Вот я удалил пару стандартных объектов с карты CR-MP но столкнулся с такой проблемой что http://convertffs.com/ не конвектирует в те объекты чтоб удалить их Подскажите может кто знает как правильно надо их конвектировать?
- 3 ответа
-
- crmp
- criminal russia
-
(и ещё 4 )
C тегом:
-
Вообщем проблема такова,а точнее их две,первая связана с маппингов,а вторая вообщем с сервером в целом. 1) я сделал в МТА себе небольшой админский домик с забором в гарели, сконвентировал его и засунул в GM, на сервере его нету,что делать не знаю. 2)как удалять созданные авто,даже если они чьи то? или просто созданы? где они хранятся?
- 5 ответов
-
- маппинг сервер авто
- crmp
- (и ещё 5 )
-
Можно перевести объекты с павно в мта? Что бы можно было отредактировать маппинг взятый с павно в МТА
- 7 ответов
-
- crmp
- criminal russia
-
(и ещё 4 )
C тегом:
-
У меня вопрос,для крмп модпак реально сделать! А вот для SAMP как сделать модпакк?! Так же не получиться! Нету таких папок/файлов!
- 1 ответ
-
- crmp
- criminal russia
-
(и ещё 4 )
C тегом:
-
Это моё первое готовое решение + оформлять темы я умею плохо так что...Пожалуй начнем.Ко всем дефайнам (#define) добавляем ещё один: #define HOSPITAL_TIME 5 //5 - Кол-во минут в больнице Ко всем new добавим ещё одну: new HospitalTime[MAX_PLAYERS]; В public OnPlayerConnect( playerid ) добавляем обнуление переменной HospitalTime[playerid] = 0; Нам нужно загрузить оставшееся время нахождения в больнице, для этого в public OnPlayerLogin( playerid, password[] ) вставляем:1)Для тех, у кого загрузка на mxINI т.е загрузка уровня у них выглядит примерно так: ini_getInteger(File, "Level", PlayerInfo[playerid][pLevel]);//Этот код вставлять НЕ надо!!! Вставляем вот такую строку ini_getInteger(File, "HospitalTime", HospitalTime[playerid]); 2)Для тех у кого НЕ на mxINI т.е загрузка уровня выглядит примерно так: if( strcmp( key , "Level" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pLevel] = strval( val ); } Вставляем следующую строку: if( strcmp( key , "HospitalTime" , true ) == 0 ) { val = ini_GetValue( Data ); HospitalTime[playerid] = strval( val ); } С загрузкой разобрались.Далее нам нужно сделать сохранение время проведения в больнице и для этого в public SavePlayer( playerid ) или public GF_OnPlayerUpdate( playerid ) (у всех поразному) добавляем следующее:У кого mxINI, а у кого не mxINI мы разобрались уже.1)Для тех, у кого mxINI: ini_setInteger(File, "HospitalTime", HospitalTime[playerid]); 2)Для тех, у кого НЕ mxINI: format(var, 32, "HospitalTime=%dn",HospitalTime[playerid]);fwrite(hFile, var); С сохранением мы тоже разобрались.Теперь нам надо сделать так, чтобы после смерти игрок попадал в больницу, для этого вpublic OnPlayerDeath( playerid, killerid, reason ) добавим код отвечающий за так сказать "помещение" игрока в больницу: if(killerid != INVALID_PLAYER_ID){if(!HospitalTime[playerid]){HospitalTime[playerid] = HOSPITAL_TIME * 60;SavePlayer(playerid);//SavePlayer замените на свою функцию сохранения}} в public SetPlayerUnJail() добавим код отвечающий за "выписку" игрока из больницы.После if(IsPlayerConnected(i)) вставляем следующий код if(HospitalTime[i] > 0){HospitalTime[i] --;if(!HospitalTime[i]){SendClientMessage(i, 0xBFC0C2FF,"Теперь ты здоров!");//Замените на свою функциюSetPlayerInterior(i, 0);//Замените на свою функциюSetPlayerVirtualWorld(i, 0);//Замените на свою функциюSetPlayerPos(i,2024.3229, -1404.7660, 17.2010);//Замените на свою функциюTogglePlayerControllable(i, true);//Замените на свою функциюSetPlayerHealth(i,100);}SavePlayer(i);//SavePlayer замените на свою функцию сохранения} Теперь мы добавим функцию помещения игрока в больницу при спавне (если время проведения в больнице не окончено).В начало public OnPlayerSpawn( playerid ) добавим следующий код: if(HospitalTime[playerid] > 0){SetPlayerInterior(playerid, 3);//Замените на свою функциюSetPlayerPos(playerid,338.4664,161.4294,1019.9844);//Замените на свою функциюSetPlayerVirtualWorld(playerid, 3);//Замените на свою функциюSetPlayerHealth(playerid, 100); //Замените на свою функциюTogglePlayerControllable(playerid, 0);//Замените на свою функциюApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);SendClientMessage(playerid, 0xFF6347AA, "Вы попали в больницу, отдыхайте.");//Замените на свою функциюSavePlayer(playerid);//SavePlayer замените на свою функцию сохраненияreturn true;} Вот и все...Автор: Jekazzz
- 6 ответов
-
- crmp
- всё для crmp
- (и ещё 5 )
-
Маскировка Пароля! Важно. Функцыя работает с врсии Sa-MP 0.3d. Пример использования! Находим: ShowPlayerDialog(playerid, ваш ид диалога, DIALOG_STYLE_INPUT, "Регистрация", straut, "Далее", "");Источник: **** И меняем на: ShowPlayerDialog(playerid, ваш ид диалога, DIALOG_STYLE_PASSWORD, "Регистрация", straut, "Далее", "");Источник: ****[/color] [color=#000000] Для стабильной работы возьмити диалог: DIALOG_STYLE_PASSWORD.
- 1 ответ
-
- 1
-
- всё для crmp
- pawn
-
(и ещё 5 )
C тегом:
-
Всем привет! У меня проблема с деньгами на своём сервере! Когда покупаю например дом он стоит 400000 тыс.У меня становится -400000 тыс Помогите!
- 4 ответа
-
- Помогите!!!
- crmp
- (и ещё 5 )
-
Как создать Мод Пак для сервера ?
- 3 ответа
-
- crmp
- criminal russia
-
(и ещё 4 )
C тегом:
-
Мне нужна помощь в создание бота для сервера crmp :) Это не так уж трудно , кто может сказать как ?)
- 4 ответа
-
- crmp
- criminal russia
-
(и ещё 4 )
C тегом:
-
Я поменял винду и такая хрень стала мод не комплерует разные павно пробовал
- 1 ответ
-
- crmp
- criminal russia
-
(и ещё 4 )
C тегом:
-
Как сделать новости сервера?То есть каждые 5 минут всем игрокам приходило например:телефон можно купить в магазине 24/7 Вот так с меня +
- 1 ответ
-
- crmp
- criminal russia
-
(и ещё 4 )
C тегом:
-
Мне нужен инклуд который читал бы : GetRealID GiveMoney С меня +
- 1 ответ
-
- crmp
- criminal russia
-
(и ещё 4 )
C тегом: