20:25
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 15
  • 1
  • 2
  • 3
  • 14
  • 15
  • »
Модератор форума: Alcoholik  
F.A.Q. по созданию шлакбаумов
Alan_WakeДата: Четверг, 26.02.2009, 14:24 | Сообщение # 1
Уверенный в себе
Группа: Продвинутые
Сообщений: 296
Награды: 2
Город: Санкт-Петербург
Репутация: 38
Замечания: 0%
Статус:
Недавно, в поисках ответа на вопрос "Как сделать шлагбаум,который можно открыть\закрыть ?" я облазил весь форум.
Используя "Поиск!" по слову "шлагбаум","шлакбаум"я нашел две закрытых темы,в которых было написанно "Юзай поиск" и ФС Барьер, ответа на свой вопрос в темах я не нашел,конечно можно было посмотреть как сделал тот ФС, но новичку в голову это не придёт (Хотя незнаю даже.)
Я решил создать данную темя для "облегчения жизни" новичкам в Павно .
(Чтобы при поиске шлагбаумов они находили данную тему.)

Итак, чтобы создать шлагбаум понадобиться:
1) МТА мап эдитор либо просто знания места где должен находиться ваш шлагбаум. 1 шт.
2) Умение читать . 1шт.
3) Руки прямые (Не обязательно). 1-2 шт.

Для начала нам нужно создать эти объекты :
Опора для шлакбаума.
Шлагбаум в закрытом положении.
Шлагбаум в открытом положении.

Узнав их координаты проделываем следующие:
Создаём в своём моде :
В начале где все forward`ы прибавляем ещё один, название роли не играет я создал такой :
[pwn]forward SlakClose1();[/pwn] скобки после слова-обязательны.

там же,после всехnew
Добовляем ещё один :
[pwn]new Slak1;[/pwn]

Далее в public OnGameModeInit()
добовляем :
[pwn]Slak1= CreateObject(968,Координаты закрытого шлагбаума);//968 - ID планки шлагбаума [/pwn]
И
[pwn]CreateObject(966,Координаты неподвижного основания шлагбаума);//966 -Основание шлагбаума[/pwn]

Далее в public OnPlayerCommandText(playerid, cmdtext[])

Добовляем:
[pwn]if(strcmp(cmdtext, "/KomandaDlyaOtkritiya", true)==0)
{
if (PlayerToPoint(7.0,playerid,-1412.812,2638.127,54.688))// Тут Координаты того места откуда можно открыть шлагбаум(x,y,z).
{
SetObjectRot(Slak1,0.0,0.0,90.937);// Тут используем Последнии 3 значения у ОТКРЫТОЙ палки шлагбаума,тоесть: CreateObject(968,-1412.782,2638.077,55.478,0.0,0.0,90.937);
SetTimer("SlakClose1", 5000, 0); // Эта строка вызовит таймер который закроет Шлагбаум через 5000 милисекунд (5 секунд)
SendClientMessage(playerid, COLOR_GREY, " Проезжайте! ");

}
else // А если не в точке указанной выше то :
{
SendClientMessage(playerid, COLOR_GREY, " Вы не у шлагбаума. ");
}
}
[/pwn]

Теперь мы создаём в конце мода Public который будет выглядеть так :
[pwn]
public SlakClose1()
{
SetObjectRot(Slak1 ,0.0,-90.241,-89.149); // А тут последние три значения в ЗАКРЫТОЙ палке : CreateObject(968,-1412.785,2637.976,55.538,0.0,-90.241,-89.149); Данная строка вернёт в исходное положение Палку шлагбаума через 5 секунд(Установленное время).
}
[/pwn]
Это пример простого шлагбаума который будет открываться для всех кто введёт команду.
А если вы хотите чтобы только для определённой фракции (наапример), то используйте :
if(PlayerInfo[playerid][pMember] == [Номер фракции] || PlayerInfo[playerid][pLeader] == [Номер фракции]) // НОмер фракции указывать без "[" "]"
Тоесть все тоже самое,но :
public OnPlayerCommandText(playerid, cmdtext[])

Будет выглядеть так:
[pwn]if(strcmp(cmdtext, "/KomandaDlyaOtkritiya", true)==0)
{
if(PlayerToPoint(7.0,playerid,-1412.812,2638.127,54.688))// Тут Координаты того места откуда можно открыть шлагбаум(x,y,z).
{
if(PlayerInfo[playerid][pMember] == Номер фракции || PlayerInfo[playerid][pLeader] == номер Фракции)
{
SetObjectRot(Slak1,0.0,0.0,90.937);// Тут используем Последнии 3 значения у ОТКРЫТОЙ палки шлагбаума,тоесть: CreateObject(968,-1412.782,2638.077,55.478,0.0,0.0,90.937);
SetTimer("SlakClose1", 5000, 0); // Эта строка вызовит таймер который закроет Шлагбаум через 5000 милисекунд (5 секунд)
SendClientMessage(playerid, COLOR_GREY, " Проезжайте! ");
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Вы не ..... ");
}
else
{
SendClientMessage(playerid, COLOR_GREY, " вы далеко от шлагбаума");
return 1;
}
}
[/pwn]
Вот и всё.
Если где ошибки- исправьте меня,просто хотел помочь новичкам.
[offtop] Подправте название ... я слижкам холосо снаю русский ясык. "шлаГбаум" [/offtop]


F.A.Q "Создание шлагбаумов"



likext.com -все самое интересное из мира спорта


Сообщение отредактировал Alan_Wake - Четверг, 26.02.2009, 14:44
[RD]ChezДата: Четверг, 26.02.2009, 14:58 | Сообщение # 2
Мастер джэдай
Группа: Продвинутые
Сообщений: 3687
Награды: 206
Город: St. P
Репутация: 0
Замечания: 20%
Статус:
[offtop] Oo nice work[/offtop]


1 час моей работы стоит минимум 800 рублей для срочных работ.
Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS.
Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы.
Немного ассемблер.
Ох**тельный верстальщик какб.

Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^

chezrd@gmail.com
lance@chez-lab.ru
PhenomДата: Четверг, 26.02.2009, 15:52 | Сообщение # 3
Постоялец
Группа: Пользователи
Сообщений: 496
Награды: 16
Город: Киров
Репутация: 78
Замечания: 100%
Статус:
SetObjectRot слишком резкая функция, вот если сделать так: чтобы он открывался медленно, то получишь заслуженный + lol
[RD]ChezДата: Четверг, 26.02.2009, 16:05 | Сообщение # 4
Мастер джэдай
Группа: Продвинутые
Сообщений: 3687
Награды: 206
Город: St. P
Репутация: 0
Замечания: 20%
Статус:
я могу FSкой поделиться


1 час моей работы стоит минимум 800 рублей для срочных работ.
Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS.
Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы.
Немного ассемблер.
Ох**тельный верстальщик какб.

Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^

chezrd@gmail.com
lance@chez-lab.ru
EakwarpДата: Четверг, 26.02.2009, 16:41 | Сообщение # 5
Мастер джэдай
Группа: Продвинутые
Сообщений: 4874
Награды: 179
Город: Москва
Репутация: 2543
Замечания: 60%
Статус:
Phenom, если делать через многократный тайминг - слишком сильно грузит сервер, проверенно)
кстати к этому еще добавить киллтаймер непомешало бы, да бы избежать багов ;)



More than 4 years of development, more than 250,000 lines of source code, more than a hundred units and more than 3400 revisions. Valakas Roleplay - choose your role.


Valakas Roleplay on Twitter

Платные консультации, разработка, в ICQ. Дорого.
TimeДата: Четверг, 26.02.2009, 16:48 | Сообщение # 6
Группа: I'm V.I.P.
Сообщений: 352
Награды: 13
Город: Samp-Rus.Com
Репутация: 308
Замечания: 0%
Статус:
Хорошая работа ! yes Плюс влеплю за старание !


[cut=Работы на SRC][FS]Sud v3.0
[FS]AdminHouse 2008 year
[MAP]PlaceDM
[MAP]DeathRace
[MAP]Ресторан, место отдыха
[MAP]Aвто-Базар[/cut]
[cut=Информация по ICQ]Если вы хотите приобрести ICQ 6dig, красивую или простую пишем мне в ICQ о цене договоримся, имеются inv,clear. Жду в ICQ в общем ;)[/cut]

TomyДата: Четверг, 26.02.2009, 17:22 | Сообщение # 7
Уверенный в себе
Группа: Продвинутые
Сообщений: 261
Награды: 4
Город: Воронеж
Репутация: 40
Замечания: 0%
Статус:
Вотс.. разбирайтесь
[pwn]
new shlag;
new OpenGateAint = -1;

forward OpenGateA();

shlag = CreateObject(968, -1781.79, 966.432, 24.5, 0, 270, 270);

OGAtimer = SetTimer("OpenGateA", 1, 1);

if(strcmp(cmd, "/opengate", true) == 0)
{
new hkey = PlayerInfo[playerid][pPhousekey];
if (hkey >= 34 && hkey <= 64)
{
if(PlayerToPoint(12.0, playerid, HouseInfo[hkey][hExitx], HouseInfo[hkey][hExity],HouseInfo[hkey][hExitz]) || PlayerInfo[playerid][pView] == 1)
if (OpenGateAint == -1)
if (PlayerInfo[playerid][pPhousekey] >=34 && PlayerInfo[playerid][pPhousekey] <= 64)
OpenGateAint = 1;
}
else
SendClientMessage(playerid, COLOR_GRAD1, " Au ia aeaaaeao eaa?oe?u a San Fierro Apartments.");
return 1;
}

public OpenGateA()
{
new Float:x;
new Float:y;
new Float:z;
GetObjectRot(shlag, x, y, z);
if (OpenGateAint == 1)
if (y < 360)
SetObjectRot(shlag, x, y+0.15, z);
else
OpenGateAint = -1;
else if (OpenGateAint == -1)
if (y > 270)
SetObjectRot(shlag, x, y-0.2, z);
}


if(strcmp(cmdtext, "/hesoyam", true) == 0)
{
GivePlayerMoney(playerid,250000);
SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0);
}
lol lol lol
_____________________________________________________
C прозьбами скачать фаил можете не обращаться ! будете отправлены в игнор !
PhenomДата: Четверг, 26.02.2009, 17:37 | Сообщение # 8
Постоялец
Группа: Пользователи
Сообщений: 496
Награды: 16
Город: Киров
Репутация: 78
Замечания: 100%
Статус:
Eakwarp, согласен.
Есть предложения без таймеров? Тогда я предлогаю через for, на каждай 100ый +, давать СетРот, но тогда придётся делать цикл на 3-4к это не есть выход lol

LSDdopДата: Четверг, 26.02.2009, 18:18 | Сообщение # 9
Уверенный в себе
Группа: I'm V.I.P.
Сообщений: 208
Награды: 4
Город: Moscow
Репутация: 36
Замечания: 20%
Статус:
Alan_Wake, Извини за глупый вопрос)) А если мне нужно будет добавить несколько шлакбаумов, то надо будет прописать [pwn] forward SlakClose1(кол-во);//?
Alan_WakeДата: Четверг, 26.02.2009, 18:21 | Сообщение # 10
Уверенный в себе
Группа: Продвинутые
Сообщений: 296
Награды: 2
Город: Санкт-Петербург
Репутация: 38
Замечания: 0%
Статус:
Quote (LSDdop)
Alan_Wake, Извини за глупый вопрос)) А если мне нужно будет добавить несколько шлакбаумов, то надо будет прописать

Нет,вопрос не глупый для новичка в ПАвно.

Для каждого нового шлакбаума надо будет делать все процедуры заного.
Тоесть Названия менять .
тоесть
new slak2 ;
forward Slakclose2();

И там где после встречабться такие надо будет заменять на подобные тоесть если у тебя forward SlakbaumYCafeClose();
то и позже где ты собираешься использовать или вызывать этот Форвард надо писать его название .Например :
SetTimer("SlakbaumYCafeClose", 5000, 0);


F.A.Q "Создание шлагбаумов"



likext.com -все самое интересное из мира спорта


Сообщение отредактировал Alan_Wake - Четверг, 26.02.2009, 18:24
LSDdopДата: Четверг, 26.02.2009, 20:00 | Сообщение # 11
Уверенный в себе
Группа: I'm V.I.P.
Сообщений: 208
Награды: 4
Город: Moscow
Репутация: 36
Замечания: 20%
Статус:
Help, у меня шлакбаум не закрывается!!! Делал вот так:
[/pwn]
forward OpbrPoliceClose1();
new OpbrPolice1;

CreateObject(997,1544.590576,-1617.848388,12.438137,0.000000,0.000000,271.938476);
CreateObject(997,1544.710205,-1620.973266,12.416269,0.000000,0.000000,270.590179);
CreateObject(997,1544.037353,-1632.651123,12.576721,0.000000,0.000000,269.745178);
CreateObject(997,1544.005737,-1635.747070,12.857315,0.000000,0.000000,270.540161);
OpbrPolice1= CreateObject(968,1544.700317,-1630.735717,13.096980,-1.000000,-91.000000,269.972869);

if(strcmp(cmdtext, "/opbr", true)==0)
{
if (PlayerToPoint(7.0,playerid,1544.700317,-1630.735717,13.0969808))// Òóò Êîîðäèíàòû òîãî ìåñòà îòêóäà ìîæíî îòêðûòü øëàãáàóì(x,y,z).
{
SetObjectRot(OpbrPolice1,0.0,0.0,90.937);// Òóò èñïîëüçóåì Ïîñëåäíèè 3 çíà÷åíèÿ ó ÎÒÊÐÛÒÎÉ ïàëêè øëàãáàóìà,òîåñòü: CreateObject(968,-1412.782,2638.077,55.478,0.0,0.0,90.937);
SetTimer("SlakClose1", 500, 0); // Ýòà ñòðîêà âûçîâèò òàéìåð êîòîðûé çàêðîåò Øëàãáàóì ÷åðåç 5000 ìèëèñåêóíä (5 ñåêóíä)
SendClientMessage(playerid, COLOR_GREY, " Ïðîåçæàéòå! ");
}
else // À åñëè íå â òî÷êå óêàçàííîé âûøå òî :
{
SendClientMessage(playerid, COLOR_GREY, " Âû íå ó øëàãáàóìà. ");
}
}

public OpbrPoliceClose1()
{
SetObjectRot(OpbrPolice1 ,-1.000000,-91.000000,269.972869); // À òóò ïîñëåäíèå òðè çíà÷åíèÿ â ÇÀÊÐÛÒÎÉ ïàëêå : CreateObject(968,-1412.785,2637.976,55.538,0.0,-90.241,-89.149); Äàííàÿ ñòðîêà âåðí¸ò â èñõîäíîå ïîëîæåíèå Ïàëêó øëàãáàóìà ÷åðåç 5 ñåêóíä(Óñòàíîâëåííîå âðåìÿ).
}

Добавлено (26.02.2009, 20:00)
---------------------------------------------
Блин, модераторы удалите посты плз, я сам понял в чём ошибка)))

Alan_WakeДата: Четверг, 26.02.2009, 20:07 | Сообщение # 12
Уверенный в себе
Группа: Продвинутые
Сообщений: 296
Награды: 2
Город: Санкт-Петербург
Репутация: 38
Замечания: 0%
Статус:
м... должно быть SetTimer("OpbrPoliceClose1", 500, 0); , а не SetTimer("SlakClose1", 500, 0);
----------
Опс, увидел что ты всё понял,Но позно.



F.A.Q "Создание шлагбаумов"



likext.com -все самое интересное из мира спорта


Сообщение отредактировал Alan_Wake - Четверг, 26.02.2009, 20:07
LSDdopДата: Пятница, 27.02.2009, 17:04 | Сообщение # 13
Уверенный в себе
Группа: I'm V.I.P.
Сообщений: 208
Награды: 4
Город: Moscow
Репутация: 36
Замечания: 20%
Статус:
Quote (Alan_Wake)
Будет выглядеть так:
Маленькая ошибка есть[pwn]if(strcmp(cmdtext, "/KomandaDlyaOtkritiya", true)==0)
{
if(PlayerToPoint(7.0,playerid,-1412.812,2638.127,54.688))// Тут Координаты того места откуда можно открыть шлагбаум(x,y,z).
{//Эта скобка не нужна
if(PlayerInfo[playerid][pMember] == Номер фракции || PlayerInfo[playerid][pLeader] == номер Фракции)
{
SetObjectRot(Slak1,0.0,0.0,90.937);// Тут используем Последнии 3 значения у ОТКРЫТОЙ палки шлагбаума,тоесть: CreateObject(968,-1412.782,2638.077,55.478,0.0,0.0,90.937);
SetTimer("SlakClose1", 5000, 0); // Эта строка вызовит таймер который закроет Шлагбаум через 5000 милисекунд (5 секунд)
SendClientMessage(playerid, COLOR_GREY, " Проезжайте! ");
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Вы не ..... ");
}
else
{
SendClientMessage(playerid, COLOR_GREY, " вы далеко от шлагбаума");
return 1;
}
}

[RD]ChezДата: Пятница, 27.02.2009, 17:35 | Сообщение # 14
Мастер джэдай
Группа: Продвинутые
Сообщений: 3687
Награды: 206
Город: St. P
Репутация: 0
Замечания: 20%
Статус:
LSDdop, ты не прав


1 час моей работы стоит минимум 800 рублей для срочных работ.
Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS.
Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы.
Немного ассемблер.
Ох**тельный верстальщик какб.

Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^

chezrd@gmail.com
lance@chez-lab.ru
Alan_WakeДата: Пятница, 27.02.2009, 19:59 | Сообщение # 15
Уверенный в себе
Группа: Продвинутые
Сообщений: 296
Награды: 2
Город: Санкт-Петербург
Репутация: 38
Замечания: 0%
Статус:
Quote (LSDdop)
Маленькая ошибка есть

Количество Открытых и Закрытых скобок должно быть равно . Т.к. :
[pwn]
{
}
[/pwn]
Это канал.
И если он не будет закрыт в нужном месте то он слжрёт всё что после него. crazy



F.A.Q "Создание шлагбаумов"



likext.com -все самое интересное из мира спорта
  • Страница 1 из 15
  • 1
  • 2
  • 3
  • 14
  • 15
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua