Перейти к содержанию

Скрипт


Рекомендуемые сообщения

Скрипт для ВС.

В чём я допустил ошибку?

 

create_thread @Pick
	   :Pick
	   wait 1000
	   84A6: $Money = create_asset_money_pickup_at 197.743, -483.123,10.070 money 1000,1000
	   end_thread

Тоже самое,если без create_thread:

032B: $weap = create_weapon_pickup #minigun 15 ammo 9999999 at -103.596,-953,691, 9.463

Пишет.что параметров должно быть 6....

Изменено пользователем romanzi
Ссылка на комментарий
Поделиться на другие сайты

убери все знаки препинания - должно помочь (видишь в опкоде их нет)

04A6: $616 = create_asset_money_pickup_at 93.3 -1472.14 $572 money $617 $617

обрати внимание на 8 в номере своего опкода (она означает отрицательную частицу not)

поэтому ставим 0 вместо 8

-------------------------------------------------------------------------------------------------------------

032B: $weap = create_weapon_pickup #minigun 15 ammo 9999999 at -103.596,-953,691, 9.463

тоже самое убери все знаки препинания !!! в координатах

Изменено пользователем Mode_WARRIOR
Ссылка на комментарий
Поделиться на другие сайты

Новая проблема создаю машину - а её нет на координатах. Создаю в Mission 0 (в самом низу)

 

create_thread @INITIAL_30645 

:INITIAL_30645
wait 0 
014B: $CAR = init_parked_car_generator #ADMIRAL 8 8 0 alarm 50 door_lock 0 0 40000 at -122.54 -884.236 9.468 angle 180.0 
014C: set_parked_car_generator $CAR cars_to_generate_to 101 
end_thread

З.Ы. Если знаете хороший сайт с форумом по скриптингу - дайте,что бы Вам мозги не пачкать =)

Изменено пользователем romanzi
Ссылка на комментарий
Поделиться на другие сайты

Я бы сказал что модель сначала нужно загрузить

:INITIAL_xxx
wait0
Model.Load(#ADMIRAL)
038B: load_requested_models 
if
Model.Avaliable(#ADMIRAL)
else_jump @INITIAL_xxx
как ты создаешь поток ?

create_thread @INITIAL_30645 - create_thread 'INITIAL'

Изменено пользователем Mode_WARRIOR
Ссылка на комментарий
Поделиться на другие сайты

Вот смотрите, этим нехитрым скриптом хотел заставить камеру двигаться по осям, но ничего толкового так и из этого не вышло - помогите опытные скриптеры, довести его до ума

create_thread 'ENJOY'

:ENJOY_50
wait 0
if 
05EE:  key_pressed 111
else_jump @ENJOY_50
Player.CanMove($PLAYER_CHAR) = False 
04C4: create_coordinate 5@ 6@ 7@ from_actor $PLAYER_ACTOR offset 0 1.0 0
Camera.SetPosition(5@, 6@, 7@,0.0,0.0,0.0)


:ENJOY_60
wait 0
if 
85EE:  not key_pressed 111
else_jump  @ENJOY_120
if
05EE:   key_pressed 102
else_jump @ENJOY_70
5@ += 5.0
Camera.SetPosition(5@, 6@, 7@,0.0,0.0,0.0)

:ENJOY_70
wait 0
if 
85EE:  not key_pressed 111
else_jump  @ENJOY_120
if
05EE:   key_pressed 100
else_jump @ENJOY_80
5@ -= 5.0
Camera.SetPosition(5@, 6@, 7@,0.0,0.0,0.0)

:ENJOY_80
wait 0
if 
85EE:  not key_pressed 111
else_jump  @ENJOY_120
if
05EE:   key_pressed 104
else_jump @ENJOY_90
6@ += 5.0
Camera.SetPosition(5@, 6@, 7@,0.0,0.0,0.0)

:ENJOY_90
wait 0
if 
85EE:  not key_pressed 111
else_jump  @ENJOY_120
if
05EE:   key_pressed 98
else_jump @ENJOY_100
6@ -= 5.0
Camera.SetPosition(5@, 6@, 7@,0.0,0.0,0.0)

:ENJOY_100
wait 0
if 
85EE:  not key_pressed 111
else_jump  @ENJOY_120
if
05EE:   key_pressed 107
else_jump @ENJOY_110
7@ += 5.0
Camera.SetPosition(5@, 6@, 7@,0.0,0.0,0.0)

:ENJOY_110
wait 0
if 
85EE:  not key_pressed 111
else_jump  @ENJOY_120
if
05EE:   key_pressed 109
else_jump @ENJOY_60
7@ -= 5.0
Camera.SetPosition(5@, 6@, 7@,0.0,0.0,0.0)


:ENJOY_120
wait 0
if
05EE:   key_pressed 111
else_jump @ENJOY_60
Camera.Restore_WithJumpCut 
Player.CanMove($PLAYER_CHAR) = True
jump @ENJOY_50

Изменено пользователем Mode_WARRIOR
Ссылка на комментарий
Поделиться на другие сайты

Вот смотрите, этим нехитрым скриптом хотел заставить камеру двигаться по осям, но ничего толкового так и из этого не вышло - помогите опытные скриптеры, довести его до ума


linenums:0'>create_thread 'ENJOY':ENJOY_50wait 0if 05EE: key_pressed 111else_jump @ENJOY_50Player.CanMove($PLAYER_CHAR) = False 04C4: create_coordinate 5@ 6@ 7@ from_actor $PLAYER_ACTOR offset 0 1.0 0Camera.SetPosition(5@, 6@, 7@,0.0,0.0,0.0):ENJOY_60wait 0if 85EE: not key_pressed 111else_jump @ENJOY_120if05EE: key_pressed 102else_jump @ENJOY_705@ += 5.0Camera.SetPosition(5@, 6@, 7@,0.0,0.0,0.0):ENJOY_70wait 0if 85EE: not key_pressed 111else_jump @ENJOY_120if05EE: key_pressed 100else_jump @ENJOY_805@ -= 5.0Camera.SetPosition(5@, 6@, 7@,0.0,0.0,0.0):ENJOY_80wait 0if 85EE: not key_pressed 111else_jump @ENJOY_120if05EE: key_pressed 104else_jump @ENJOY_906@ += 5.0Camera.SetPosition(5@, 6@, 7@,0.0,0.0,0.0):ENJOY_90wait 0if 85EE: not key_pressed 111else_jump @ENJOY_120if05EE: key_pressed 98else_jump @ENJOY_1006@ -= 5.0Camera.SetPosition(5@, 6@, 7@,0.0,0.0,0.0):ENJOY_100wait 0if 85EE: not key_pressed 111else_jump @ENJOY_120if05EE: key_pressed 107else_jump @ENJOY_1107@ += 5.0Camera.SetPosition(5@, 6@, 7@,0.0,0.0,0.0):ENJOY_110wait 0if 85EE: not key_pressed 111else_jump @ENJOY_120if05EE: key_pressed 109else_jump @ENJOY_607@ -= 5.0Camera.SetPosition(5@, 6@, 7@,0.0,0.0,0.0):ENJOY_120wait 0if05EE: key_pressed 111else_jump @ENJOY_60Camera.Restore_WithJumpCut Player.CanMove($PLAYER_CHAR) = Truejump @ENJOY_50

Камера должна куда-либо указывать, а именно: Camera.On.Ped , Camera.On.Vehicle , Camera.On.Point , etc.

Ссылка на комментарий
Поделиться на другие сайты

Вот в чём проблема - у меня не работают скрипты в собственных потоках и label"ах!

При написании уже в существующих - работают - в своих - нет!

Может,я что-то не так делаю?

 

Ищу в --MAIN-- упоминания об create_thread - вношу свой (например create_thread @Pick)

 

Потом ищу --Mission 0 -- и над ним (т.е. в конце Main) пишу -

 

:Pick
thread 'Pick'
wait 1000
---Часть скрипта---(ну там...wait, model.load)
:Pick_1
---Скрипт--- (например пикап)
end_thread
Ссылка на комментарий
Поделиться на другие сайты

создай поток перед началом скрипта

thread 'Pick'

а уже потом

:Pick (сделай метку з номером) - Pick_1... etc

Изменено пользователем Mode_WARRIOR
Ссылка на комментарий
Поделиться на другие сайты

Не работает =(

 

thread 'SYT' 

:SYT
wait 100 
Model.Load(#KATANA)
038B: load_requested_models 

:SYT_21
wait 100 
if 
   Model.Available(#KATANA)
else_jump @SYT_21 
$WEAPON1 = Pickup.Create(#KATANA, 15, 1499.546, -12936.03, 151.413)
Model.Destroy(#KATANA)
end_thread
Ссылка на комментарий
Поделиться на другие сайты

Не работает =(

 

thread 'SYT' 

:SYT
wait 100 
Model.Load(#KATANA)
038B: load_requested_models 

:SYT_21
wait 100 
if 
   Model.Available(#KATANA)
else_jump @SYT_21 
$WEAPON1 = Pickup.Create(#KATANA, 15, 1499.546, -12936.03, 151.413)
Model.Destroy(#KATANA)
end_thread

сейчас разберусь

Изменено пользователем Mode_WARRIOR
Ссылка на комментарий
Поделиться на другие сайты

разобрался

-----------------------------------------------

все должно работать, пример

http://www.imagebar.net/out.php/i98106_1.png

http://www.imagebar.net/out.php/i98107_2.png

результат

http://www.imagebar.net/out.php/i98108_rezult.png

здесь нет знаков препинания в координатах, нет Model.Destroy и end_thread

Я просто в майне не пишу скрипты, а делаю Клео скрипты

Изменено пользователем Mode_WARRIOR
Ссылка на комментарий
Поделиться на другие сайты

А по расстановке моделей на карте мог бы написать?
http://102.imagebam.com/download/nMHDqh7U3ZbgfwsP2jusmg/27271/272704289/2007a.4766234.jpg
Ссылка на комментарий
Поделиться на другие сайты

СПС!!! Всё работает,но у меня появился вопрос - если я поставлю в конце Main'а код - то игра вылетает на "Кафе Бистро" либо на "Офис Кена" (при новой игре),а если в середину Main'a то - всё работает.

-----------------------

 

Почему то когда я меняю твои координаты - игра вылетает!

 

:KILLA
thread 'KILLA' 
wait 0 
Model.Load(#KATANA)
038B: load_requested_models 

:KILLA_21
wait 0 
if 
   Model.Available(#KATANA)
else_jump @KILLA_21 
  Pickup.Create($WEAP,#KATANA, 15, 3199.868 -6897.697 154.369)
wait 1000 
Model.Destroy(#KATANA)
Изменено пользователем Ужастикс
Ссылка на комментарий
Поделиться на другие сайты

Mode_WARRIOR, когда ты не пишешь end_thread, скрипт продолжает обрабатыватся дальше. В твоем примере после спавна катаны произойдет все, что было после метки :HOT. Я к примеру когда создаю поток, то всегда пишу сначала название, потом этот самый end_thread, потом между ними вэйт и уже после вэйта сам код. Так лучше всего. А Model.Destroy тоже нужен. Я сам его не пишу иногда, но в дебаг скрипте, если мне нужно срочно проверить, сработает или нет. Не просто так же этот опкод существует, он выгружает из памяти модель, что бы на слабых компьютерах не лагало так сильно. Это ладно, одна катана. А если у тебя скрипт выбора автомобилей, да еще накачал моделей хайпольных? Сколько их там в вайсе, 100 машин? Вот загрузи в память все модели, и поиграй. Еще если я не ошибаюсь при попытке загрузить загруженную модель случится крэш.

П.С. У тебя там что-то не так. СРАЗУ после попытки загрузить модель (она все еще грузится, буквально десятки милисекунд) ты проверяешть, что если она не загружена (тоесть да) ты ее ОПЯТЬ ГРУЗИШЬ.

 

Ужастикс, лучше используй чистый мэйн, его можно найти в папке с санни билдером "stripped.txt", в нем нет миссий, как бы минимальная рабочая единица.

Еще ты заменил имя глобальной переменной, $weap уже возможно (да точно) используется в скм, по этому и вылетает. В середине нормально, т.к. эту переменную еще не использовали. Это приведет к вылету когда в оригинальном скрипте попробуют использовать эту переменную, а она уже занята катаной.

 

:KILLA
 wait 0 
 Model.Load(#KATANA)   
					  // не вижу смысла в 038B: load_requested_models, у меня всегда без него работает
 
:KILLA_1		 // Зачем добавлять имя _21 или _10? Сложно читать такой код. Лучше по-порядку
 wait 100		 //Небольшая задержка, чтоб проверять всего лишь десять раз в секунду, а не как получится.
 if 
   Model.Available(#KATANA)
 Jf @KILLA_1		   //  Jf короче и работает
  Pickup.Create(1@,#KATANA, 15, 3199.868, -6897.697, 154.369)
 wait 1000 
 Model.Destroy(#KATANA)
end_thread		 // ОБЯЗАТЕЛЬНО завершаю поток

^Вон то должно работать 100%

 

 

И еще, мне вдруг показалось, что вы все время закрываете исходник и декомпилируете свой код заного, из-за этого и метки у вас глупо названы, и прочая подобная ерунда... Исходник в текст срохраняете и все дела, а потом скомпилить можно когда угодно.

Ссылка на комментарий
Поделиться на другие сайты

Я писал скрипт на скорую руку и не выгрузка одной маленькой модели не страшна, тем более если присмотреться то некоторые потоки в майне так и не заканчиваются.

Проверка если загрузилась модель верна, то есть я так учился - если не загрузилась, загржаем ее до тех пор пока не загрузится - и проверка проходит в 0 мс.

У меня иногда лаги при попытке вигрузить и загрузить модель снова возникают (циклический скрипт)

038B: load_requested_models (нужен опкод)

Изменено пользователем Mode_WARRIOR
Ссылка на комментарий
Поделиться на другие сайты

СПС!!! Всё работает,но у меня появился вопрос - если я поставлю в конце Main'а код - то игра вылетает на "Кафе Бистро" либо на "Офис Кена" (при новой игре),а если в середину Main'a то - всё работает.

-----------------------

 

Почему то когда я меняю твои координаты - игра вылетает!

 

:KILLA
thread 'KILLA' 
wait 0 
Model.Load(#KATANA)
038B: load_requested_models 

:KILLA_21
wait 0 
if 
   Model.Available(#KATANA)
else_jump @KILLA_21 
  Pickup.Create($WEAP,#KATANA, 15, 3199.868 -6897.697 154.369)
wait 1000 
Model.Destroy(#KATANA)
Ты же не в интро и миссиях его ставишь

-------------------------------------------------------------------------------------

Кто знает что делает gosub @label ? - у меня есть предположение

Изменено пользователем Mode_WARRIOR
Ссылка на комментарий
Поделиться на другие сайты

А по расстановке моделей на карте мог бы написать?

:objectSpawn
wait 100
model.Load(#farm_enteracearch)

:objectSpawn_2
wait 100
if
model.Available(#farm_enteracearch)
jf @objectSpawn_2
wait 100 // Не думаю, что этот вэйт здесь нужен. Но он не мешает) Лучше уж с ним, чем без него вылетит.
object.Create(1@,#farm_enteracearch,-1571.3452 -214.5276 26.4977)
end_thread

Так же, как и все остальное. (модель только у меня есть, у тебя ее НЕТ и загрузить ее ты не сможешь, замени имя на другое)

П.С. Когда тестировал заметил что-то странное... Модель появилась, но стукнув ее машиной она провалилась под землю (обычная статическая модель...)

П.П.С. Mode_WARRIOR, мультипостим с тобой ) У тебя сообщения вобще один за другим, лучше эдит жми. И не цитируй пожалуйста собщение целиком, трудно читать (это многих касается, пожалуйста, не цитируйте сообщения целиком без особой нужды)

П.П.П.С. Засек время, за которое я запускаю вайс (от винды до самой игры)... 6-7 секунд... Для сравнения - ЭФЛЦ запускается у меня за 2,5 минуты.

 

 

Вот что еще хочу про скм добавить. Поделюсь своим видением кода.

Скм - это не программа с функциями, это - огромная функция, в которой полно меток быстрого перехода.

Запуская новую игру, вайс читает скм с самого начала (разве не очевидно?), всякие там идентификации, спавн гг, а затем - create_thread. Что происходит когда этот невидимый указатель доходит до этого опкода? Создается еще один указатель на метке, на которую указывает опкод. Затем еще пара таких опкодов, и того (допустим) штуки три получилось. Первый самый доходит до end_thread и эмм... умирает чтоли? Не знаю как назвать это.. Вобщем перестает существовать. Другой же указатель "идет" обрабатывать код с указанной метки. Говорят, что все время игра обрабатывае только его, пока он не дойдет до опкода вэйт, и тогда переходит к другому указателю. Я не знаю как точно, все происодит слишком быстро для человека, да и вобще, работает - ну и хорошо. Еще помнится мне, в сане проблемы были из-за того, что все указатели "умерли", и игра зависла. Можно во избежание этого завести один в бесконечный цикл на подобии

:loop
wait 1000
jump @loop

Что происходит во время сейва. Убеждался в этом не раз, возможно я не прав, но выглядит все именно так. Во время выполнения опкода сохранения в файл сейва записывается: положения всех указателей в мейне, статистика, позиция игрока... Тут подробнее. Если игрок собирает пикап сейва, вызывается опкод сохранения, затем в коде у вас идет телепорт в другую часть комнаты (что бы повторно не схватить пикап), то когда этотсейв загрузится, игрок сначала появится на месте пикапа (или там, где опкой сохранения был вызван), и потом будет телепортирован, т.к. сохранилась позиция указателя в скрипте как раз перед телепортацией. Это пример.

 

Немного теории от меня, в правдивости не уверен, но думаю может быть полейна чтобы представить, как работает этот самый скм.

Ссылка на комментарий
Поделиться на другие сайты

Тоже самое(

Координаты Mode_WARRIOR - работают,свои - нет(

 

Вот мои:

create_thread @MAIN_182 

:MAIN_182
wait 0 
Model.Load(#KATANA)
038B: load_requested_models 

:MAIN_193
wait 100 
if 
   Model.Available(#KATANA)
else_jump @MAIN_193 
1@ = Pickup.Create(#KATANA, 15, 768.717, -15104.149, 377.168)
wait 100 
Model.Destroy(#KATANA)
end_thread

Ну только координаты Mode_WARRIOR - и всё пашет...Мои - нет.

 

Может я не правильно координаты измеряю? Как их вообще измерять?

Или проблема в другом (кроме меня))?

Ссылка на комментарий
Поделиться на другие сайты

А чем ты их измиряеш, в сани билдере есть свои измиритель координат. Мне кажется что у тебя что-то неверно с последней координатой Изменено пользователем Mode_WARRIOR
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...