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

 



 
          





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





Последние Файлы 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 из 1
  • 1
Модератор форума: Dima-kun  
Делаем входы/выходы в здание
Fus1Дата: Суббота, 14.05.2011, 20:38 | Сообщение # 1
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
Давно хотел сделать урок и упростить для всех данную задачу, в том-же самом моде "GF" добавлять входы/выходы в здания ужасно и легко запутаться.
Вообщем, тут всё делается на много проще и в 1 строке.

В начало мода добавим

Code
#define TELEPORTS 1 //Кол-во телепортов на данный момент

При добавлении телепортов не забываем изменять цифру на ту которая = кол-ву телепортов.

Тут у нас сами телепорты, добавил 1 телепорт для примера,

Code
new IntTel[TELEPORTS][100] = {
{"2069.6624,-1779.7228,13.5591,91.4813,0,0,-204.0985,-26.3558,1002.2734,350.2738,16,12"}//тату салон-1
};

Quote
Добавлять координаты так :
X1.X1
Y1.Y1
Z1.Z1
A1.A1
Инт1
Вирт1
X2.X2
Y2.Y2
Z2.Z2
A2.A2
Инт2
Вирт2

Далее сделаем вход/выход на клавишу "ALT" , ну или можете сделать как вам удобнее.

Code
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
  if(newkeys == KEY_WALK) Teleport(playerid);
  return 1;
}

И в любое добавляем

Code
stock Teleport(playerid)
{
  new T[12][32],
  vw = GetPlayerVirtualWorld(playerid);
  for(new i; i < TELEPORTS; i++)
  {
      split(IntTel[i], T, ',');
      if(IsPlayerInRangeOfPoint(playerid,4.0,floatstr(T[0]),floatstr(T[1]),floatstr(T[2])) && vw == strval(T[5]) && GetPlayerInterior(playerid) == strval(T[4]))
      {
          SetPlayerPos(playerid,floatstr(T[6]),floatstr(T[7]),floatstr(T[8]));
          SetPlayerFacingAngle(playerid,floatstr(T[9]));
          SetPlayerInterior(playerid,strval(T[10]));
          SetPlayerVirtualWorld(playerid,strval(T[11]));
          return 1;
      }
      else if(IsPlayerInRangeOfPoint(playerid,4.0,floatstr(T[6]),floatstr(T[7]),floatstr(T[8])) && vw == strval(T[11]) && GetPlayerInterior(playerid) == strval(T[10]))
      {
          SetPlayerPos(playerid,floatstr(T[0]),floatstr(T[1]),floatstr(T[2]));
          SetPlayerFacingAngle(playerid,floatstr(T[3]));
          SetPlayerInterior(playerid,strval(T[4]));
          SetPlayerVirtualWorld(playerid,strval(T[5]));
          return 1;
      }
  }
   return 1;
}

Работает для любого мода.

GoshikДата: Суббота, 14.05.2011, 20:57 | Сообщение # 2
Уверенный в себе
Группа: Пользователи
Сообщений: 280
Награды: 1
Город: ---
Репутация: 18
Замечания: 60%
Статус:
пикапы уже не рулят?
ВеликсДата: Суббота, 14.05.2011, 21:12 | Сообщение # 3
Мастер джэдай
Группа: Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус:
[off] Fus1, тебе самому не стыдно такой урок писать?[/off]
Goshik, +1, так намного удобнее.



[cut=freestyle]
ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ ,
СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ,
ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ,
ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ.
УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА.
ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ.
ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ.
ЛЕНАРУ ДАЙ УМА И ЛЕНУ
НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ
© Хасан
[/cut]
Fus1Дата: Суббота, 14.05.2011, 21:13 | Сообщение # 4
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
Quote (Goshik)
пикапы уже не рулят?

ну для меня нет, а для тебя не знаю. Если удобнее через пикапы - пожалуйста, не кто не заставляет тебя делать моим способом.

Добавлено (14.05.2011, 21:13)
---------------------------------------------
[off][MrVelix], тебе то чё не нравиться ?
Делать было нечего, вот и сделал, а тебе не стыдно выкладывать один и теже работы в "ФА" и всякое дерьмо ?[/off]

ВеликсДата: Суббота, 14.05.2011, 21:24 | Сообщение # 5
Мастер джэдай
Группа: Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус:
[off]
Quote (Fus1)
[MrVelix], тебе то чё не нравиться ? Делать было нечего, вот и сделал, а тебе не стыдно выкладывать один и теже работы в "ФА" и всякое дерьмо ?

Я не наезжаю, просто это баян, думаю это уже давно все знают, согласись.[/off]



[cut=freestyle]
ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ ,
СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ,
ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ,
ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ.
УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА.
ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ.
ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ.
ЛЕНАРУ ДАЙ УМА И ЛЕНУ
НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ
© Хасан
[/cut]
Fus1Дата: Суббота, 14.05.2011, 21:40 | Сообщение # 6
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
[off][MrVelix], пример дай где бы был такой урок, ок?[/off]
ZiGGiДата: Суббота, 14.05.2011, 22:01 | Сообщение # 7
Мастер джэдай
Группа: Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус:
бредятина...
1. enum не в моде?
2. На кой хер создавать новый массив и делать split(IntTel[i], T, ','); (потом ещё и конвертить числа...)
3. vw не объявлен и раз так сделал миры, то интерьер почему забыл?
В итоге: бездарный и ошибочный урок...
вот, поправил:
Code

enum IntTel_Info {
   Float:ent_X,
   Float:ent_Y,
   Float:ent_Z,
   Float:ent_A,
   ent_Int,
   ent_World,
   Float:ext_X,
   Float:ext_Y,
   Float:ext_Z,
   F loat:e xt_A,
   ext_Int,
   ext_World,
}
new IntTel[][IntTel_Info] = {   
{2069.6624,-1779.7228,13.5591,91.4813,0,0,-204.0985,-26.3558,1002.2734,350.2738,16,12}//тату салон-1   
};

stock Teleport(playerid)   
{
   new vw = GetPlayerVirtualWorld(playerid);
   new pint = GetPlayerInterior(playerid);
   for(new i=0; i < sizeof(IntTel); i++)   
   {   
    if(IsPlayerInRangeOfPoint(playerid,4.0,IntTel[i][ent_X],IntTel[i][ent_Y],IntTel[i][ent_Z]) && pint == IntTel[i][ent_Int] && vw == IntTel[i][ent_World])   
    {   
     SetPlayerPos(playerid,IntTel[i][ext_X],IntTel[i][ext_Y],IntTel[i][ext_Z]);   
     SetPlayerFacingAngle(playerid,IntTel[i][ext_A]);   
     SetPlayerInterior(playerid,IntTel[i][ext_Int]);   
     SetPlayerVirtualWorld(playerid,IntTel[i][ext_World]);   
     return 1;   
    }
    else if(IsPlayerInRangeOfPoint(playerid,4.0,IntTel[i][ext_X],IntTel[i][ext_Y],IntTel[i][ext_Z]) && pint == IntTel[i][ext_Int] && vw == IntTel[i][ext_World])
    {   
     SetPlayerPos(playerid,IntTel[i][ent_X],IntTel[i][ent_Y],IntTel[i][ent_Z]);   
     SetPlayerFacingAngle(playerid,IntTel[i][ent_A]);   
     SetPlayerInterior(playerid,IntTel[i][ent_Int]);
     SetPlayerVirtualWorld(playerid,IntTel[i][ent_World]);
     return 1;   
    }
   }   
   return 1;   
}

pastebin



Бложе
[indent]Мой блог
Уроки по Pawn
[/indent]

Open-GTO
[indent]Блог разработчиков
GitHub: https://github.com/Open-GTO/Open-GTO
Сборки мода с сервером тут
[/indent]


Сообщение отредактировал ZZiGGi - Суббота, 14.05.2011, 22:16
Fus1Дата: Суббота, 14.05.2011, 22:07 | Сообщение # 8
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
Quote (ZZiGGi)
1. enum не в моде?

Ты прям как Goshik
Quote (Goshik)
пикапы уже не рулят?

Quote (ZZiGGi)
интерьер почему забыл?

в каком месте ?

Quote (ZZiGGi)
бездарный и ошибочный урок

ну да, только чем он бездарный и ошибочный?
Работоспособность его проверена и работает на ура, а бездарность это уже тупо твой выепон и всё.

ВеликсДата: Суббота, 14.05.2011, 22:14 | Сообщение # 9
Мастер джэдай
Группа: Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус:
Quote (Fus1)
Ты прям как Goshik Quote (Goshik)пикапы уже не рулят?

Эмм, причем тут пикапы то?
Quote (Fus1)
[MrVelix], пример дай где бы был такой урок, ок?

lolwhat? это чисто реализация баяна в другой вариации
Quote (Fus1)
ну да, только чем он бездарный и ошибочный? Работоспособность его проверена и работает на ура, а бездарность это уже тупо твой выепон и всё.

Сделал бы лучше динамичную систему, потратил бы на 15 минут больше.



[cut=freestyle]
ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ ,
СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ,
ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ,
ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ.
УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА.
ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ.
ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ.
ЛЕНАРУ ДАЙ УМА И ЛЕНУ
НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ
© Хасан
[/cut]
ZiGGiДата: Суббота, 14.05.2011, 22:22 | Сообщение # 10
Мастер джэдай
Группа: Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус:
Quote (Fus1)
в каком месте ?

читай предложения полностью, ты ф-ию нахождения миров заюзал 1 раз, записав в vw, а интерьеры так не сделал, почему?

Quote (Fus1)
а бездарность это уже тупо твой выепон и всё

Укажи где я "выепнулся" ;) .
Я написал как надо-было писать... Опять ты не хочешь принимать свои ошибки...
итак,
Quote (Fus1)
new IntTel[TELEPORTS][100]

ты создал СТРОКУ! Где ты такое видал wall ? Это же дибилизм чистой силы...
И потом:
Quote (Fus1)
new T[12][32],

Quote (Fus1)
split(IntTel[i], T, ',');

ты создал новый массив, и заюзал тяжёлую функцию, когда этого можно-было спокойно избежать... В связи с этим и с тем, что строка, тебе пришлось юзать кучу раз функции: floatstr и strval

В итоге:
* ты заюзал 100 ячеек в глобале(хватило-бы 12)
* 12*32 ячеек в локале(без них можно было обойтись)
* юзал функции split, floatstr, strval - влияет на быстродействие
* код стал непонятный для девственных мозгов и УРОКОМ это назвать ну никак нельзя, скорее пособие: "как не надо писать скрипты".
включай мозги уже...


Бложе
[indent]Мой блог
Уроки по Pawn
[/indent]

Open-GTO
[indent]Блог разработчиков
GitHub: https://github.com/Open-GTO/Open-GTO
Сборки мода с сервером тут
[/indent]
Fus1Дата: Воскресенье, 15.05.2011, 07:02 | Сообщение # 11
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
ZZiGGi, ок убедил :D
Ну кто не понимает тот я думаю ничего не понимает, ибо тут всё проще не куда.

_Dark_Дата: Вторник, 12.07.2011, 21:45 | Сообщение # 12
Постоялец
Группа: I'm V.I.P.
Сообщений: 379
Награды: 4
Город: Dark://core.dll
Репутация: 169
Замечания: 40%
Статус:
Извиняюсь за подъем темы, но я дополню: я хотел это использовать в своем моде, создал 21 телепорт. Так вот: в момент самого телепорта загрузка CPU поднимается до 100%. Так что если вдруг кто то хочет поставить автоматический заход и засунуть это в таймер, то ваш сервер из 100% нагрузки не вылезит.




Если баги возникают из ниоткуда - ты на правильном пути. (с)
  • Страница 1 из 1
  • 1
Поиск:





 


 


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