You are not logged in.
Pages: 1
Доброго времени суток.
Я в кодинге новичок, но усваиваю быстро (знаю PHP, c#, pawno).
Надо телепортировать игрока из места в место, не по нажатию кнопки.
Есть 20 координат (x,y,z), и по всем этим координатам меня нужно ТПшить.
После этого - цикл повторялся.
(еще раз повторю, новичок, в других языках есть цикл for, тут как осуществить - не знаю)
Цикл что то типа:
00A1: put_actor $PLAYER_ACTOR at 1455.405 750.6191 11.0234 00A1: put_actor $PLAYER_ACTOR at 1000.6517 640.98744 8.647687 00A1: put_actor $PLAYER_ACTOR at 1132.6357 350.3544 15.653587 00A1: put_actor $PLAYER_ACTOR at 535.63517 653.98534 1.6535 00A1: put_actor $PLAYER_ACTOR at 1150.65537 51.987524 1.523687 ................
Offline
А почему не по нажатию? Просто при спавне?
Тогда:
{$CLEO}
wait 5000 //просто ждем 5сек, игра все равно загружается
repeat //Основной цикл
wait 0 //Чтобы не вылетело
repeat //Цикл проверки того, существует ли игрок
wait 0
until Player.Defined($PLAYER_CHAR)
00A1: put_actor $PLAYER_ACTOR at 1455.405 750.6191 11.0234
wait 3000 //Ожидание 3 сек, чтобы все успело прогрузиться при очередной телепортации, да и чтобы успеть увидеть, куда попал
00A1: put_actor $PLAYER_ACTOR at 1000.6517 640.98744 8.647687
wait 3000
00A1: put_actor $PLAYER_ACTOR at 1132.6357 350.3544 15.653587
wait 3000
00A1: put_actor $PLAYER_ACTOR at 535.63517 653.98534 1.6535
wait 3000
00A1: put_actor $PLAYER_ACTOR at 1150.65537 51.987524 1.523687
wait 3000
until false //Цикл будет выполняться бесконечноНу и можно еще обычными if..then..else. Способов еще много.
Offline
Ухх..
Спасибо огромное. Суть понял
Ещё.
Как при нажатии кнопки начинался цикл, если нажал паузу и снова нажал кнопку - не начинает сначала, а продолжает дальше
Offline
Как при нажатии кнопки начинался цикл, если нажал паузу и снова нажал кнопку - не начинает сначала, а продолжает дальше
С середины цикла? Для этого нужно выполнять проверки после каждого действия... Например так:
(действие)
gosub @check
(действие)
gosub @check
(действие)
...
:check
if
8AB0: not key_pressed (номер)
then
return
end
repeat
wait 100
until 0AB0: key_pressed (номер)
оффтоп:
Знаешь php? Где учился?
Offline
Можно полный код?
p.s. cамоучка)
Offline
Написал.
Не могу сделать одно:
Чтобы цикл продолжался до того момента, пока не будет нажата кнопка.
Делал по разному, не получается.
{$VERSION 3.1.0027}
{$CLEO .cs}
0000: NOP
:LOALA
wait 0 ms
if
0AB0: key_pressed 19
jf @LOALA
repeat
wait 0 ms
00A1: put_actor $PLAYER_ACTOR at 2229.7996 -2284.3499 13.5469
wait 8000
00A1: put_actor $PLAYER_ACTOR at 2171.4026 -2255.0449 13.3036
wait 8000
until 0AB0: key_pressed 35
jump @LOALA
Last edited by DelFast (22-07-2011 01:25)
Offline
Ребят, помогайте
Offline
{$CLEO .cs}
wait 4000
:1
repeat
wait 1 //Проверка существования игрока
until Player.Defined($PLAYER_CHAR)
repeat
wait 1 //Проверка нажатия "1"
until 0AB0: key_pressed 0x31
repeat
wait 0
00A1: put_actor $PLAYER_ACTOR at 2229.7996 -2284.3499 13.5469 //Телепортация по этим двум координатам пока зажата кнопка "1"
wait 3000
00A1: put_actor $PLAYER_ACTOR at 2171.4026 -2255.0449 13.3036
wait 3000
until 8AB0: key_pressed 31 //Проверка на то, отпущена ли кнопка "1", если отпущена, то выход из цикла
jump @1P.S число 8 в начале опкода 0AB0 означает обратное действие опкода. Это работает и на других опкодах проверки чего-либо.
Last edited by Jack Daniel's (23-07-2011 09:32)
Offline
Я имел ввиду не то..
Нажал кнопку - цикл начался, нажал кнопку - цикл закончился.
Offline
Я имел ввиду не то..
Нажал кнопку - цикл начался, нажал кнопку - цикл закончился.
Короче, после каждого действия в цикле надо делать проверку на нажатие.
Хотя, лучше сделать на зажатие, либо на ожидание нажатия, перед выполнением каждого действия, все из-за того, что проверка на нажатие между телепортациями будет проходить слишком быстро, так что чтобы остановить цикл, тебе придется жать помногу раз на кнопку.
Last edited by Jack Daniel's (24-07-2011 10:30)
Offline
Лучше замени клавишу пауза, например, на клавишу мыши.
{$CLEO .cs}
0000:
while true
wait 0
if
not Player.Defined($PLAYER_CHAR)
then
continue
end
if
8AB0: not key_pressed 1
then
0@ = 0
else
if
not 0@ == 1
then
0@ = 1
if
1@ == 0
then
1@ = 1
32@ = 0
00A1: put_actor $PLAYER_ACTOR at 2229.7996 -2284.3499 13.5469
else
1@ = 0
end
end
end
if
not 1@ == 0
then
if and
32@ >= 8000
32@ < 16000
then
if
not 1@ == 2
then
1@ = 2
00A1: put_actor $PLAYER_ACTOR at 2171.4026 -2255.0449 13.3036
end
end
if
32@ >= 16000
then
if
not 1@ == 1
then
32@ = 0
1@ = 1
00A1: put_actor $PLAYER_ACTOR at 2229.7996 -2284.3499 13.5469
end
end
end
end
I know everything and nothing...
Offline
Pages: 1