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 @1
P.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