#51 Re: Вопросы по скриптингу » Вопросы по опкодам » 16-10-2009 15:00

{$CLEO}
                             
:TEST
wait 100

:EXISTS
repeat 
wait 1
until Player.Defined($PLAYER_CHAR)

if and
00DF:   actor $PLAYER_ACTOR driving
0AB0:   key_pressed 16 
then 
     00D9: 0@ = actor $PLAYER_ACTOR car
     0423: set_car 0@ improved_handling_to 2.0 // (float) 
     015D: set_gamespeed 0.45
else 015D: set_gamespeed 1.0
     Car.RemoveReferences(0@)
end

jump @EXISTS

Вот мой код. Тут я юзнул опкод  0423: set_car 0@ improved_handling_to 2.0.
Игра вылетает при нажатии нужной кнопки.
0423: set_car 0@ improved_handling_to 2.0 //2.0 - есть что? Эффективность?

#52 Re: Вопросы по скриптингу » Вопросы по опкодам » 16-10-2009 14:27

Нужен опкод, который врубит идеальное вождение.

03FD: set_player $PLAYER_CHAR handling_responsiveness 1

- это не он? Вроде не пашет.

#53 Re: Вопросы по скриптингу » Вопросы по опкодам » 15-10-2009 18:55

Ок.
Пусть мой текст "GAME SPEED: " + 0@
Как его вывести-то?) Вот мне что нужно. Нечто типа textdraw x y "GAME SPEED: "

#54 Re: Вопросы по скриптингу » Вопросы по опкодам » 15-10-2009 18:12

Где можно надыбать коды шрифтов?
Вот такой текстдрав

045A: draw_text_1number 410.0 300.0 GXT 'NUMBER' number 2@

Только не для цифр, а для текста (текст обязательно любой, а не из стандартных игровых надписей).
Знаю, что на серверах SAMP текстдравы можно делать влёгкую с любым текстом. Но там способ проще.

#55 Re: Вопросы по скриптингу » Вопросы по опкодам » 15-10-2009 16:23

@3Doomer, спасибо. То что нужно.
Остался вопрос:

Нужен опкод, который сможет написать текстдрав определённого стиля. Текст произвольный (свой).
Такой же есть? Я вот полазил GXT-Editor'ом в поисках стилей и что-то не вкурил там ничего)

#56 Re: Вопросы по скриптингу » Вопросы по опкодам » 15-10-2009 15:14

Ок, спасибо. Вот только твой скрипт работает идентично моему sad
Есть опкод прерывания игры? Аналог паскалевского halt.
Желательно выход, а не выбрасывание с ошибкой (мнгновенный).

#57 Re: Вопросы по скриптингу » Вопросы по опкодам » 15-10-2009 14:23

@Sw[ee]t, твой опкод 0564: heli 34@ simulate_crash_landing у меня на сработал... Или я не так делаю?

{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
wait 0 

:NONAME_4
wait 10 

:NONAME_8
wait 0 
   Player.Defined($PLAYER_CHAR) //Если игрок существует
jf @NONAME_8
 
:NONAME_11
wait 0
04A9:   actor $PLAYER_ACTOR driving_heli  //Если игрок пилотирует вертолёт
jf @NONAME_11

Player.SetDrunkVisuals($PLAYER_CHAR, 0) //Камера в нормальном положении
03F0: enable_text_draw 1 //Включение текстдрава
045A: draw_text_1number 410.0 300.0 GXT 'NUMBER' number 0  // ~1~ //Пишется 0

:NONAME_41
wait 0 
0AB0:   key_pressed 50 //Но если ещё нажата клавиша 2
jf @NONAME_41 

:NONAME_50
wait 0 
00D9: 0@ = actor $PLAYER_ACTOR car //запихать вертолёт игрока в переменную 0@ (правильно?)
Player.SetDrunkVisuals($PLAYER_CHAR, 100) //камера болтается (типа эффект "бухой пилот" :) )
wait 3000
0564: heli 0@ simulate_crash_landing //собственно опкод "крушение"
03F0: enable_text_draw 1  //Ещё раз надо активировать текстдрав? Вроде ошибок нет.
045A: draw_text_1number 410.0 300.0 GXT 'NUMBER' number 1  // ~1~ //написать 1 (чтобы было видно, что скрипт активирован)
0AB0:   key_pressed 50 //делать это пока не нажмут 2 
jf @NONAME_50 
jump @NONAME_4

Может проблема в зацикливании? Если вертолёт уже падает, я заставляю его падать ещё раз...
З.Ы. Извините за код после декомпилятора (оригинал потерял).

#58 Re: Вопросы по скриптингу » Вопросы по опкодам » 15-10-2009 14:15

Нужен опкод, который сможет написать текстдрав определённого стиля. Текст произвольный (свой).
Такой же есть? Я вот полазил GXT-Editorom в поисках стилей и что-то не вкурил там ничего)

#59 Re: Вопросы по скриптингу » SB in SAMP » 14-10-2009 17:17

Хм. Ну хоть намекни. Мне нужен транспорт, находящийся рядом, на виду. Значит должен быть какой-то опкод определения ближнего транспорта? Проверка на наличие водителя? Есть что-то такое?
Просто в поиске берётся тачка и только по ней определяется водитель.

0205:   actor $PLAYER_ACTOR near_car 73@ radius 25.0 25.0 25.0 flag 0

Я так понимаю, проверка на нахождение рядом с игроком машины 73@ (рядом = radius 25.0 25.0 25.0). flag 0 - без понятия, что это)
Можно заменить 73@ на переменную "любая машина"? Типа $ANY_CAR (как пример).

#60 Re: Вопросы по скриптингу » SB in SAMP » 14-10-2009 14:06

Хм. Мне для мультиплеера.
Как это можно сделать? Опкод есть?

#61 Re: Вопросы по скриптингу » SB in SAMP » 14-10-2009 13:11

Как можно определить транспорт другого игрока? Нужно, чтобы было "выделение цели". Можно как-нибудь отметить цель? Игрока. Маркером или лучше прицелом (как на гидре/Heat Seeker).
Думаю сделать, как в игре Blazing Angels. Будучи на самолёте, приметил себе цель,  выделил цель (какой-нибудь кнопкой), нажал Shift, камера держится на цели (пока нажата клавиша Shift), в то же время игрок летит дальше, отпустил Shift - камеру кидает обратно на свой самолёт.
Знаю, есть такая тема:

00D9: 68@ = actor $PLAYER_ACTOR car

Запишет в переменную 68@ тачку игрока. А технику другого игрока можно залить в переменную?

#62 Re: Вопросы по скриптингу » SB in SAMP » 03-10-2009 14:54

Смотри. Сделал для теста.

wait 0 

:NONAME_4
wait 10 

:NONAME_8
wait 0 
   Player.Defined($PLAYER_CHAR)
else_jump @NONAME_8 

:NONAME_18
wait 0 
if and
00E1:   player 0 pressed_key 10 //если нажаты клавиши
00E1:   player 0 pressed_key 11 //Y+N
else_jump @NONAME_3A 
jump @NONAME_41 

:NONAME_3A
jump @NONAME_18 

:NONAME_41
wait 10 
0470: 0@ = actor $PLAYER_ACTOR current_weapon //пробить ид оружия (по идее)
03FE: set_actor $PLAYER_CHAR money 0@ //установить значение денег на значение переменной, в которой хранился ид пушки
jump @NONAME_4

Вылетает из игры)

#63 Re: Вопросы по скриптингу » SB in SAMP » 02-10-2009 22:25

И правда. Вот только вопрос тогда: разве можно сделать что-то не с игроком в мультиплеере?
Хотя программа наверное была изначально предназначена для сингла, и там можно делать тачки, пикапы оружия, ботов...

Так. Видел опкоды типа "убрать текущее оружие", "проверить патроны текущего оружия", а опкод определения ID текущего оружия есть?

#64 Re: Вопросы по скриптингу » SB in SAMP » 02-10-2009 18:07

Я понимаю, что не имеют смысла, но таймер мог быть запущен и так. Вот я убедился в этом) Спасибо-спасибо.

#66 Re: Вопросы по скриптингу » SB in SAMP » 02-10-2009 14:55

Den_spb, "С начала запуска игры"?
Когда игра начинается точно? При появлении игрового мира?

#67 Re: Вопросы по скриптингу » SB in SAMP » 01-10-2009 14:05

кстати насчёт таймера.
Если мне надо, чтобы работало что-то одно, а потом стало что-то другое через 10 секунд, то можно использовать wait 10000 или есть какой-то более "приспособленный" вариант?

#68 Re: Вопросы по скриптингу » SB in SAMP » 01-10-2009 10:36

3Doomer, здесь как раз то, что нужно.
Новый вопрос: 0446: set_actor $PLAYER_ACTOR immune_to_headshots 0 вообще прокатит? Для MP.
Я пробовал что-то писать, но не выходило.  Immune_to_headshots надо присваивать один раз или постоянно, чтобы работало? То же касается 054A: set_actor $ACTOR_ACTOR immune_to_car_headshots 0 а также
02AB: set_actor $PLAYER_ACTOR immunities...
У меня такая идея: когда у игрока осталось 25 хп, в течение 15 секунд его можно будет убить только в голову из огнестрельного оружия или взорвать.
Я не прошу чистый код, я хочу понять сам, так что пожалуйста давайте как можно больше пояснений.

#69 Re: Вопросы по скриптингу » SB in SAMP » 01-10-2009 09:42

GTASA прав. Оказалось, в MP есть $PLAYER_ACTOR.
Den_spb, надо было в key_press юзать другой опкод - 00E1, а также перед клавишей надо было поставить 0 (всё это я узнал, посмотрев халп по SB ещё раз).
То есть код рабочего скрипта:

{$CLEO}
wait 0
while true
    wait 1000
    repeat
        wait 0
    until player.Defined($PLAYER_CHAR) 
    while true
        wait 0
        if and
            00E1:   key_pressed 0 8 // "Backspace"
            00E1:   key_pressed 0 9 // "Tab"
        then
            break
        end
    end 
    wait 1000 
    Actor.Health($PLAYER_ACTOR) = 100
    Actor.Armour($PLAYER_ACTOR) = 100
    0109: player $PLAYER_CHAR money += -10000
end

#70 Re: Вопросы по скриптингу » SB in SAMP » 30-09-2009 19:28

Den_spb, а вот код также не пашет, как и мой - 0 эффекта, как в SA, так и в MP.

#71 Re: Вопросы по скриптингу » SB in SAMP » 30-09-2009 19:06

Мм... Здорово, спасибо.
Заметил вещь, мне абсолютно не понятную.
Что есть $PLAYER_CHAR и $PLAYER_ACTOR и в чем разница между ними?

#72 Вопросы по скриптингу » SB in SAMP » 30-09-2009 18:41

BritishColonist
Replies: 49

Здравствуйте скриптеры! Для начала хотел выразить свою благодарность Seemann'у за такой инструмент, как SB а также за такой форум, как этот. Спасибо.
Теперь собственно к делу.
Будучи администратором на одном из серверов SA-MP, задался вопросом чего-либо необычного на серверах, что должно привлечь посетителей, и вот увидел Sanny Builder. Я так понимаю, клео - способ получить "необычное".
Предположим, гл. админ выложит на сайте пак скриптов спицально для данного сервера, которые будут работать на данном сервере. Примеры скриптов: иммунитет к хедшотам(убрать иммунитет), взрыв тачки выстрелом в бак, уменьшение/увеличение дамага от оружия и прочее (по идее можно сколотить отличный рпг мод, где всё это будет в качестве бонусов/наказаний).
Собственно вопрос: возможно ли такое?
А также возникла куча вопросов непосредственно по написанию скрипта. Я в скриптинге шарю маловато (изучил весь хелп SB), при попытке создать что-либо, сплошные вылеты в игре.

{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP 

:NONAME_2
wait 0 
if and
   Player.Defined($PLAYER_ACTOR)
0AB0:   key_pressed 6 
0AB0:   key_pressed 11 
else_jump @NONAME_2 
wait 1000 
Actor.Health($PLAYER_ACTOR) = 100
Actor.Armour($PLAYER_ACTOR) = 100
0109: player $PLAYER_CHAR money -= 10000
end_thread

По идее (по идее), должно восстанавливать здоровье и броню игроку, который нажал прицел + Y (у игрока также отнимется $10000). Только не пашет =\

Board footer

Powered by FluxBB