Последние Файлы 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, вот вот. А я всё мучался не мог вспомнить функцию