 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
Простой вопрос по поводу переменных...
| |
| Vagrant | Дата: Четверг, 12.11.2009, 08:37 | Сообщение # 1 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| Меня давно уже интересует ответ на такой вопрос: Допустим я хочу создать 10 машин и обозначит каждую своей переменной такого типа. Например: [pwn] new car[11]; car[1] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 1 car[2] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 2 car[3] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 3 car[4] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 4 car[5] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 5 car[6] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 6 car[7] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 7 car[8] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 8 car[9] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 9 car[10] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 10 [/pwn] Теперь допустим я хочу уничтожить все машины сразу и без создания объёмного кода. То есть, например ввожу /desallcar и уничтожаются все эти машины. А вот собственно и суть вопроса. Как обозначить одной переменной все эти машины? Вот например код команды: [pwn] public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/desallcar", cmdtext, true,10) == 0) { /* Тут я делаю команду на обозначение всех машин... И в этой команде я должен обозначит переменную car[11] с самого начала обозначая каждую машину. То есть car[1](Destroy),car[2](Destroy),car[3](Destroy)... и т.д. Это я так в краце.*/ } return 1; } return 0; } [/pwn] Как обозначит все машины сразу то есть типо как с case например case 1..15 и это будет значить что будет выполняться с 1 по 15 включительно (если стоит какое-то действие). Но с car[11] так не прокатит. car[1..11] сделать нельзя. Как подругому обозначит все машины сразу с 1-й по 10-ю?
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
Сообщение отредактировал Vagrant - Четверг, 12.11.2009, 09:00 |
| |
|
|
| stepmex | Дата: Четверг, 12.11.2009, 11:36 | Сообщение # 2 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| Во-первых, запомните раз и на всегда, в програмировании счет идет с 0: [pwn]new car[10]; car[0] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 1 car[1] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 2 car[2] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 3 car[3] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 4 car[4] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 5 car[5] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 6 car[6] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 7 car[7] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 8 car[8] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 9 car[9] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); // Хантли 10[/pwn]можно записатьтак: [pwn]new car[10]; for(new i;i<sizeof(car);i++)car[i] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600);[/pwn]уничтожение: [pwn]public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/desallcar", cmdtext, true,10) == 0) { for(new i;i<sizeof(car);i++)DestroyVehicle(car[i]); } return 1; } return 0; }[/pwn]по другому никак не сделать, нельзя занести десять значений в одну переменную.
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| µTorrent | Дата: Суббота, 14.11.2009, 14:32 | Сообщение # 3 |
|
Новенький
Группа:
Пользователи
Сообщений: 12
Награды: 1
Город: Moscow
Репутация: -4
Замечания: 20%
Статус: 
| обозначить так в начало new newcar(GivePlayerVehicleid); и патом шпарим if(newcar == ид || newcar == еще один) { //effect }
|
| |
|
|
| Vagrant | Дата: Суббота, 14.11.2009, 14:36 | Сообщение # 4 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| Quote Во-первых, запомните раз и на всегда, в програмировании счет идет с 0: Спасибо ! Вообще я знал что счёт начинается с нуля но думал это не обязательно, буду знать что иначе. [pwn] for(new i;i<sizeof(car);i++)car[i] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); [/pwn] Тут как я понял если поставить всем 10 функциям CreateVehicle данный код то каждая машина будет обозначаться по порядку начиная с 0. А если например я захочу посадить игрока в машину после того как создам её? То есть создам например 1 машину и посадить конкретно в эту машину игрока. То делать так? Или писать полный код. [pwn] PutPlayerInVehicle(playerid,car[i],0); [/pwn] или нужно будет писать такой код? [pwn] for(new i;i<sizeof(car);i++)PutPlayerInVehicle(playerid,car[i],0); [/pwn] P.S. Просто давно к павно не притрагивался так что не сочтите за глупый вопрос Добавлено (14.11.2009, 14:36) --------------------------------------------- Quote обозначить так в начало new newcar(GivePlayerVehicleid); и патом шпарим if(newcar == ид || newcar == еще один) { //effect } Чуть-чуть не понял мысль, объясни по подробнее пожалуйсто.
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
Сообщение отредактировал Vagrant - Суббота, 14.11.2009, 14:42 |
| |
|
|
| s3ap | Дата: Суббота, 14.11.2009, 15:46 | Сообщение # 5 |
|
Местный
Группа:
Продвинутые
Сообщений: 570
Награды: 7
Город: Саратов
Репутация: 382
Замечания: 80%
Статус: 
| µTorrent, хрень не пиши. Vagrant, не смотри на этот пост, это бредятина. Человек хочет набить сообщения хД [offtop] Quote Во-первых, запомните раз и на всегда, в программировании счет идет с 0 Хммм.... с каких пор запрещено или некорректно начинать счёт хоть с 200? Да, понимаю, что это будет занимать больше памяти, но никак не запрещено.[/offtop]
|
| |
|
|
| stepmex | Дата: Суббота, 14.11.2009, 19:55 | Сообщение # 6 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| Quote (VCOScript) Хммм.... с каких пор запрещено или некорректно начинать счёт хоть с 200? Да, понимаю, что это будет занимать больше памяти, но никак не запрещено. В некоторых случаях, при обращении к несуществующим переменным, а это очень вероятно при неправильном счете, сервер полетит.
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| Vagrant | Дата: Вторник, 17.11.2009, 13:15 | Сообщение # 7 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| Ответьте на вопрос пожалуйсто. 4-й пост.
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
|
| |
|
|
| Stels | Дата: Вторник, 17.11.2009, 16:07 | Сообщение # 8 |
|
Группа:
I'm V.I.P.
Сообщений: 3167
Награды: 32
Город: Каменск-Уральский
Репутация: 828
Замечания: 0%
Статус: 
| Quote (Vagrant) или нужно будет писать такой код? Это цикл, который перебирает все тачки. На практике игрока просто по всем тачкам по порядку рассадит. Quote (Vagrant) PutPlayerInVehicle(playerid,car[i],0); Вместо i - id той тачки, в которую садить. Quote (Vagrant) for(new i;i<sizeof(car);i++)car[i] = CreateVehicle(579,1678.6085,-1890.7623,21.6785,9.8404,-1,-1,600); Это заполнение всего массива(car[0],car[1],...,car[размер, который ты указал в new]) значением
 Полезные ссылки: GTA:SA спецсборка для SA-MP / GTA:SA-MP ver. 0.3a / GTA:SA-MP ver. 0.2x / Руссификатор геймтекста в GTA:SA(рекомендуется) / Классная игрушка!(Рекомендую!) / Пак русских шрифтов.
|
| |
|
|
| Vagrant | Дата: Пятница, 20.11.2009, 06:44 | Сообщение # 9 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| stepmex, Stels, Спасибо, помогли. Каждому по плюсу. Тему Close
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
|
| |
|
|
| ZirkiN | Дата: Пятница, 20.11.2009, 23:08 | Сообщение # 10 |
|
Постоялец
Группа:
Продвинутые
Сообщений: 326
Награды: 15
Город: Новосибирск
Репутация: 144
Замечания: 0%
Статус: 
| Quote (stepmex) Во-первых, запомните раз и на всегда, в програмировании счет идет с 0: Если ты про индексы массива, то не факт ;p насколько я помню в бейсике с 1, а паскалю все равно с какого начинать Quote (VCOScript) Хммм.... с каких пор запрещено или некорректно начинать счёт хоть с 200? Касательно индексов массивов в си подобных языках это более чем некорректно, синтаксис си устроен так, что элемент массива с индексом 0 первый Quote (stepmex) нельзя занести десять значений в одну переменную. а как же регистровые диапазоны?
all:GMCC ~2% current:GMCC.C.L0 ~49%
|
| |
|
|
| Stels | Дата: Пятница, 20.11.2009, 23:39 | Сообщение # 11 |
|
Группа:
I'm V.I.P.
Сообщений: 3167
Награды: 32
Город: Каменск-Уральский
Репутация: 828
Замечания: 0%
Статус: 
| Quote (ZirkiN) Если ты про индексы массива, то не факт ;p насколько я помню в бейсике с 1, а паскалю все равно с какого начинать В школе си не преподают...
 Полезные ссылки: GTA:SA спецсборка для SA-MP / GTA:SA-MP ver. 0.3a / GTA:SA-MP ver. 0.2x / Руссификатор геймтекста в GTA:SA(рекомендуется) / Классная игрушка!(Рекомендую!) / Пак русских шрифтов.
|
| |
|
|
| stepmex | Дата: Суббота, 21.11.2009, 03:59 | Сообщение # 12 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| Quote (ZirkiN) насколько я помню в бейсике с 1, а паскалю все равно с какого начинать сугубо как задашь, что в первом названом что во втором, но потом не удивляйтесь если программа полетит при обращении к несуществующей ячейке! Quote (ZirkiN) а как же регистровые диапазоны? речь идет про одну перменную. Если вам удастся в самп поместить в одну переменную 10 значений вы облегчите жизнь многим. Quote (Stels) В школе си не преподают... я его изучал когда в школе учился
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| Vagrant | Дата: Суббота, 21.11.2009, 05:14 | Сообщение # 13 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| Quote я его изучал когда в школе учился Что за школа такая у нас только бэйсик преподавали
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
|
| |
|
|
| ZirkiN | Дата: Суббота, 21.11.2009, 18:06 | Сообщение # 14 |
|
Постоялец
Группа:
Продвинутые
Сообщений: 326
Награды: 15
Город: Новосибирск
Репутация: 144
Замечания: 0%
Статус: 
| Quote (stepmex) сугубо как задашь, что в первом названом что во втором, но потом не удивляйтесь если программа полетит при обращении к несуществующей ячейке! Code Uses Crt; const N=11; Var ar: array [1..N] of integer; s,u: integer; begin ClrScr; Randomize; for s:=1 to N do ar[s] := random(25); u:=round((N+1)/2); for s:=u downto 1 do begin writeln(' ',2*s-1,' : ',ar[2*s-1]); end; readln; end. Как видишь очень удобно начинать индексацию для паскалевского for именно с 1 а обращения к несуществующим элементам с той же долей вероятности могут быть и если с 0 начать. Пример: Code new LL[MAX_PLAYERS]; for(new i = 0; i < MAX_VEHICLES; i++) LL[i] = CreateVehicle(...); // kak tolko i == MAX_PLAYERS - crash Quote (stepmex) речь идет про одну перменную. Если вам удастся в самп поместить в одну переменную 10 значений вы облегчите жизнь многим. Если это действительно облегчит жизнь многим: размещение нескольких переменных в регистровых диапазонах (в частях одной переменной) Code new Test; new A[4] = {45,34,23,90}; // запись в переменную // просто так Test |= A[0]; // 0byteofvar Test |= A[1] << 8; // 1byteofvar Test |= A[2] << 16; // 2byteofvar Test |= A[3] << 24; // 3byteofvar // циклом for(new i=0; i<4; i++){ Test |= A[i] << (i * 8); //i.byteofvar } // извлечение данных // просто так printf("0 - %d, 1 - %d, 2 - %d, 3 - %d",Test & 0xFF, (Test & 0xFF00) >> 8, (Test & 0xFF0000) >> 16, (Test & 0xFF000000) >> 24); // циклом for(new i=0; i<4; i++){ printf(" %d - %d", i, (Test & (0xFF << i*8)) >> i*8); }
all:GMCC ~2% current:GMCC.C.L0 ~49%
Сообщение отредактировал ZirkiN - Суббота, 21.11.2009, 18:36 |
| |
|
|
| stepmex | Дата: Суббота, 21.11.2009, 19:15 | Сообщение # 15 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| ZirkiN, отличие начинать с нуля или еденицы только в дальнейшем обращении, а еменнно: for(new i; i < MAX_VEHICLES; i++) или for(new i = 1; i <= MAX_VEHICLES; i++) соответственно, согласись первая запись удобнее, условие строже. А вот за хранение даннных спасибо, позновательно 
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
Сообщение отредактировал stepmex - Суббота, 21.11.2009, 19:16 |
| |
|
|
|
 |
|
 | |
| |
|