 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
[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%
Статус: 
| Хороший урок
Играй там где лучше 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, вот вот. А я всё мучался не мог вспомнить функцию
|
| |
|
|
|
 |
|
 | |
| |
|