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

 



 
          





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





Последние Файлы 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 из 2
  • 1
  • 2
  • »
Модератор форума: AXE, Weddew  
Простой вопрос по поводу переменных...
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)
В школе си не преподают...
я его изучал когда в школе учился mda



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
VagrantДата: Суббота, 21.11.2009, 05:14 | Сообщение # 13
Уважаемый человек
Группа: I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус:
Quote
я его изучал когда в школе учился

Что за школа такая crazy у нас только бэйсик преподавали mda



Человек учась ходить падает, и только падая, он учится ходить!
Мои работы:
[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++) соответственно, согласись первая запись удобнее, условие строже.

А вот за хранение даннных спасибо, позновательно yes


И создал Бог женщину!.. Существо получилось злобное, но симпатичное...

Сообщение отредактировал stepmex - Суббота, 21.11.2009, 19:16
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:





 


 


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