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

 



 
          





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





Последние Файлы 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
Модератор форума: Alcoholik  
[TUT] Диначеские здания в GF
ВеликсДата: Понедельник, 21.03.2011, 16:17 | Сообщение # 1
Мастер джэдай
Группа: Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус:
Всем привет, сейчас мы будем учиться делать динамическия здания.(Вход\Выход)

В начало мода:

Code
enum plInfo
{
     Float:plX,
     Float:plY,
     Float:plZ,
     plInt,
     Float:plIntX,
     Float:plIntY,
     Float:plIntZ,
     plText[256],
     plPick,
     Text3D:plLabel
}
new PlaceInfo[50][plInfo];

В public OnPropUpdate:

Code
    idx = 0;
     while (idx < sizeof(PlaceInfo))
     {
         new coordsstring[256];
         format(coordsstring, sizeof(coordsstring), "%f|%f|%f|%i|%f|%f|%f|%s\n",
         PlaceInfo[idx][plX],
         PlaceInfo[idx][plY],
         PlaceInfo[idx][plZ],
         PlaceInfo[idx][plInt],
         PlaceInfo[idx][plIntX],
         PlaceInfo[idx][plIntY],
         PlaceInfo[idx][plIntZ],
         PlaceInfo[idx][plText]);
         if(idx == 0)
         {
             file2 = fopen("places.cfg", io_write);
         }
         else
         {
             file2 = fopen("places.cfg", io_append);
         }
         fwrite(file2, coordsstring);
         idx++;
         fclose(file2);
     }

Загрузка:

Code
stock LoadPlace()
{
     new splitter[8][256];
     new strFromFile2[256];
     new File: file = fopen("places.cfg", io_read);
     if (file)
     {
         new idx;
         while (idx < sizeof(PlaceInfo))
         {
             fread(file, strFromFile2);
             split(strFromFile2, splitter, '|');
             PlaceInfo[idx][plX] = floatstr(splitter[0]);
             PlaceInfo[idx][plY] = floatstr(splitter[1]);
             PlaceInfo[idx][plZ] = floatstr(splitter[2]);
             PlaceInfo[idx][plInt] = strval(splitter[3]);
             PlaceInfo[idx][plIntX] = floatstr(splitter[4]);
             PlaceInfo[idx][plIntY] = floatstr(splitter[5]);
             PlaceInfo[idx][plIntZ] = floatstr(splitter[6]);
             PlaceInfo[idx][plText] = splitter[7];
             idx++;
         }
         fclose(file);
     }
     return 1;
}

Команда:

Code
if(strcmp(cmd,"/placeed",true) == 0)
{
             tmp = strtok(cmdtext, idx);
             editingplace[playerid] = strval(tmp);
             if(PlayerInfo[playerid][pAdmin] < 4) return SendClientMessage(playerid,COLOR_GRAD4,"У вас нет достура к команде");
             if(!strlen(tmp))
             {
                 SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /aplace [placeid]");
                 return 1;
             }
             ShowPlayerDialog(playerid,2,DIALOG_STYLE_LIST,"Редактор","Вход\nВыход\nТекст","Ок",Отмена");
}

Далее, диалог респонсе.

Code
if(dialogid == 2)
     {
         if(response)
         {
             switch(listitem)
             {
                 case 0:
                 {
                     new Float:X,Float:Y,Float:Z;
                     GetPlayerPos(playerid,X,Y,Z);
                     new p = editingplace[playerid];
                     PlaceInfo[p][plX] = X;
                     PlaceInfo[p][plY] = Y;
                     PlaceInfo[p][plZ] = Z;
                     DestroyPickup(PlaceInfo[p][plPick]);
                     Delete3DTextLabel(PlaceInfo[p][plLabel]);
                     PlaceInfo[p][plPick] = CreatePickup(1318,28,PlaceInfo[p][plX],PlaceInfo[p][plY],PlaceInfo[p][plZ]);
                     new string[256];
                     format(string,sizeof(string),"%s\nID: %i",PlaceInfo[p][plText],p);
                     PlaceInfo[p][plLabel] = Create3DTextLabel(string,COLOR_YELLOW,PlaceInfo[p][plX],PlaceInfo[p][plY],PlaceInfo[p][plZ]+0.7,10.0,0,0);
                     OnPropUpdate();
                     SendClientMessage(playerid,COLOR_WHITE,"Вы перенесли вход");
                 }
                 case 1:
                 {
                     new Float:X,Float:Y,Float:Z;
                     GetPlayerPos(playerid,X,Y,Z);
                     new p = editingplace[playerid];
                     PlaceInfo[p][plIntX] = X;
                     PlaceInfo[p][plIntY] = Y;
                     PlaceInfo[p][plIntZ] = Z;
                     PlaceInfo[p][plInt] = GetPlayerInterior(playerid);
                     OnPropUpdate();
                     SendClientMessage(playerid,COLOR_WHITE,"Вы перенесли выход");
                  
                 }
                 case 2:
                 {
                     ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"Текст","Введите текст для здания","Ок","Отмена");
                 }

             }
         }
     }
     if(dialogid == 3)
     {
         if(!strlen(inputtext)) return SendClientMessage(playerid,COLOR_WHITE,"Вы ничего не ввели!");
         new p = editingplace[playerid];
         format(PlaceInfo[p][plText],256,"%s",inputtext);
         OnPropUpdate();
         Delete3DTextLabel(PlaceInfo[p][plLabel]);
         new string[256];
         format(string,sizeof(string),"%s\nID: %i",PlaceInfo[p][plText],p);
         PlaceInfo[p][plLabel] = Create3DTextLabel(string,COLOR_YELLOW,PlaceInfo[p][plX],PlaceInfo[p][plY],PlaceInfo[p][plZ]+0.7,10.0,0,0);
         SendClientMessage(playerid,COLOR_WHITE,"Вы установили текст!");
     }

Ну и в OnGameModeInit:

Code
for(new p = 0; p < sizeof(PlaceInfo); p++)
     {
         PlaceInfo[p][plPick] = CreatePickup(1318,28,PlaceInfo[p][plX],PlaceInfo[p][plY],PlaceInfo[p][plZ]);
         format(string,sizeof(string),"%s\nID: %i",PlaceInfo[p][plText],p);
         PlaceInfo[p][plLabel] = Create3DTextLabel(string,COLOR_YELLOW,PlaceInfo[p][plX],PlaceInfo[p][plY],PlaceInfo[p][plZ]+0.7,10.0,0,0);
         pickups++;
     }

Осталось только создать файл, внести туда координаты.


[cut=freestyle]
ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ ,
СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ,
ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ,
ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ.
УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА.
ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ.
ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ.
ЛЕНАРУ ДАЙ УМА И ЛЕНУ
НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ
© Хасан
[/cut]
ВеликсДата: Вторник, 22.03.2011, 21:36 | Сообщение # 2
Мастер джэдай
Группа: Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус:
Latron, вход\выход...


[cut=freestyle]
ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ ,
СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ,
ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ,
ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ.
УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА.
ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ.
ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ.
ЛЕНАРУ ДАЙ УМА И ЛЕНУ
НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ
© Хасан
[/cut]
GoshikДата: Среда, 23.03.2011, 01:39 | Сообщение # 3
Уверенный в себе
Группа: Пользователи
Сообщений: 280
Награды: 1
Город: ---
Репутация: 18
Замечания: 60%
Статус:
а где OnPlayerPickUpPickup или чёто такое, как ТПшить то будет?
EakwarpДата: Среда, 23.03.2011, 01:52 | Сообщение # 4
Мастер джэдай
Группа: Продвинутые
Сообщений: 4874
Награды: 179
Город: Москва
Репутация: 2543
Замечания: 60%
Статус:
Quote (|MrVelix|)
Диначеские здания

ну не соответствует название содержимому.



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. Дорого.
AndroidДата: Среда, 23.03.2011, 03:57 | Сообщение # 5
Группа: I'm V.I.P.
Сообщений: 1066
Награды: 11
Город: Рязань
Репутация: 571
Замечания: 0%
Статус:
Хороший урок tr_thankyou


Играй там где лучше Server Gta San Andreas: Multiplayer 0.3.7



Без труда талант - это фейерверк: на мгновение ослепляет, а потом ничего не остается
LatronДата: Пятница, 25.03.2011, 19:00 | Сообщение # 6
Группа: I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус:
зачем это надо так и не понимаю если бы динам.дома то да....


Моё портфолио

Мои работы:
[ Lesson ] Операторы в PAWN.
[ Lesson ] Переменная.
[ GM ] RegSys. ( Last update: 21.04.2012 )


DiSEДата: Суббота, 26.03.2011, 14:09 | Сообщение # 7
Группа: I'm V.I.P.
Сообщений: 1759
Награды: 23
Город: Уфа
Репутация: 337
Замечания: 80%
Статус:
В чём смысл? Я не совсем понимаю, ведь если создаёшь дома то тоже можно сделать вход/выход! Объясни подробнее
LatronДата: Понедельник, 28.03.2011, 17:05 | Сообщение # 8
Группа: I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус:
DiSE, ну эт типо можно создать вход и выход из здания прямо в игре но это не дома


Моё портфолио

Мои работы:
[ Lesson ] Операторы в PAWN.
[ Lesson ] Переменная.
[ GM ] RegSys. ( Last update: 21.04.2012 )


HELKERNДата: Вторник, 29.03.2011, 07:13 | Сообщение # 9
Уважаемый человек
Группа: I'm V.I.P.
Сообщений: 767
Награды: 17
Город: Улан-Удэ
Репутация: 206
Замечания: 0%
Статус:
Quote (|MrVelix|)
Delete3DTextLabel(PlaceInfo[p][plLabel]);
         new string[256];
         format(string,sizeof(string),"%s\nID: %i",PlaceInfo[p][plText],p);
         PlaceInfo[p][plLabel] = Create3DTextLabel(string,COLOR_YELLOW,PlaceInfo[p][plX],PlaceInfo[p][plY],PlaceInfo[p]

Специально для таких целей существует Update3DTextLabelText

DiSEДата: Вторник, 29.03.2011, 08:55 | Сообщение # 10
Группа: I'm V.I.P.
Сообщений: 1759
Награды: 23
Город: Уфа
Репутация: 337
Замечания: 80%
Статус:
HELKERN, вот вот. А я всё мучался не мог вспомнить функцию
  • Страница 1 из 1
  • 1
Поиск:





 


 


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