» TeamX (Архив Форума)«


Форум TeamX » Тех. поддержка » Скрипты (Все вопросы по скриптингу - сюда)

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 ] Все собщения

 
Ray
Модератор

Откуда: Донецк,Украина
Регистрация: Янв. 2004

Всего: 746 сообщений

Цитата:
ObjectPtr self_obj - возвращает указатель на объект, в скрипте которого выполняется
ObjectPtr dude_obj - возвращает указатель на игрока


Чиатй доку и внимательно смотри пост Alchemist'а.


Цитата:
не получилось но зато Windiws XP висанул а писали что никогда не виснет
если хотите это проверить перепишите в скрипт dude_obj в проседуру  critter_p_proc


У меня мощности компьютера вполне хватает, чтобы закрыть "подвисший" процесс. Это раз.
Обработчик critter_p_proc выполняется всегда, причём несколько раз в секунду (хм... 10 раз? по тикам что-ли...) Отсюда такие результаты. Это два (заразно, блин )

Цитата:
Может байтик поменять в fallout2.exe

Блин. Что все так бросаются этой фразой. Хоть бы раз посмотрели на fallout2.exe в дизассемблереном виде и попытались там что-то найти. А также попробывали повозиться с отладчиками или REC Studio...


-----
Не бывает невозможных задач – бывает мало времени.

Отправлено: 23:37 - 5 Июля, 2007 | ИСПРАВЛЕНО: Ray - 22:39 - 5 Июля, 2007
Jordan 63
Пользователь

Откуда: Россия, Самара
Регистрация: Июль 2007

Всего: 228 сообщений

Ray

> Чиатй доку и внимательно смотри пост Alchemist'а.
Доку читал и пост перечитал то есть нельзя получается

> Блин. Что все так бросаются этой фразой. Хоть бы раз посмотрели на fallout2.exe в дизассемблереном

Смотрел ниче не понял очень много цифр  
 
> виде и попытались там что-то найти. А также попробывали повозиться с отладчиками или REC Studio...

Не я в этом полный ноль так я и задал этот вопрос знающим на него ответ
Так можно или нет?


Отправлено: 0:04 - 6 Июля, 2007
Spy
Реалист

Откуда: Все там будем...
Регистрация: Май 2005

Всего: 374 сообщения

Цитата:
Так можно или нет?


Конечно можно! Только байтиком тут, боюсь, необойдётся. Чтобы исправить что-то в движке как следует (т.е. так, чтобы потом не было глюков), нужно обладать недюжим интеллектом, памятью, кучей времени и страстным желанием. Практика показывает, что сочетается всё это в одном человеке чрезвычайно редко. Так что я предложу тебе забыть идею про "байтик в движке".

-----
Хочешь, чтобы что-то было сделано хорошо - сделай сам.

Отправлено: 2:02 - 6 Июля, 2007 | ИСПРАВЛЕНО: Spy - 2:05 - 6 Июля, 2007
Jordan 63
Пользователь

Откуда: Россия, Самара
Регистрация: Июль 2007

Всего: 228 сообщений

Spy

> Так что я предложу тебе забыть идею про "байтик в движке".

Прям как в анекдоте

- Хорошее пальто было
- Да (печально)
- Ну и хрен сним

to All
Еще пара вопросов вы уж меня не rtfm вопросы у меня не банальные то есть не такие
как скомпилировать скрипт или что такое макрос

Мне в процедуре combat_p_proc зделать проверку
если на self было использовано оружие то есть ударили или выстрелили пример

если на self было использовано оружие отравленное копье то повысить отравление self

  if (weapon_dmg_type(DMG_normal_dam == obj_pid(PID_SPEAR))) then critter_dmg(dude_obj, 50, DMG_normal_dam);

Но тут нужно через какойто параметр fixed_param

И еще Мне нужно чтобы чуз с одной карты скриптово появился скриптово на другой

Пример в наваро но на 2 elevation load_map(Имя_карты,параметр)
load_map("Navarro",0); но он загрузит первый ELEVATION dude окажется на бензакалонке а мне нужен 2 или 3

И вот вопросик который я давно хочу задать можно ли сделать проверку у партийуев да у любого персонажа маркус в   процедуре combat_p_proc если в руках пулемет и он стреляет в цель а рядом есть сопартийцы 1 вариант убрать оружие и взять другое
2 вариант атаковать другого
3 вариант вывести float и изменить значение GVAR выдает сообщение разайдись GVAR меняется а в скриптах партийцев Если гвара такая то или атаковать других или атайти от цели на 5 tile
А то если у него в руках пулемет э таж смерть для всей команды

Жмем на dude выбираем бинокль создается окошко как в Mrfixit
Там команды если в партии есть маркус то есть команды для маркуса
если в партии то тото....
И еще есть команды для всех
Пример именно в бою
Разойдись
или
отступаем и все партийцы
убегают с карты

Или приказ ленни
подлечи вика и ленни бежит и лечит

Так вот это возможно реализовать я буду пробывать но просто ответье
пример
Это нельзя реализоватьююю а за это отвечает движок или вот это можно и сделать

Кто нибудь может скинуть оригинальные текста fallout1 папку game
Ну очень надо


Отправлено: 10:35 - 6 Июля, 2007 | ИСПРАВЛЕНО: Jordan 63 - 10:38 - 6 Июля, 2007
binyan
Пользователь

Откуда: Israel
Регистрация: Март 2005

Всего: 292 сообщения

Возможно все, дерзай. У меня, когда я писал партийцев, кроме всего прочего, была идея реализации г.и. для командования. Но не хватило времени. Так что доки в руки и вперед.

-----
...выражая озадаченность, граничащую с озабоченностью..

Отправлено: 14:55 - 6 Июля, 2007
Jordan 63
Пользователь

Откуда: Россия, Самара
Регистрация: Июль 2007

Всего: 228 сообщений

Еще 40 вопросов от Jordan 63 )

Хотел реализовать если у персонажа клинта в руке пулемет и дистанция то есть если dude стоит рядом с врагом примерно <= 3 tile тогда клинт убирает оружие и идет в рукопашку. Без дистанции все отлично работает а вот с дистанцией проблемы fallout2 вылетает я знаю это мой косяк а вот примеры что не так

procedure combat_p_proc begin
    if (critter_inven_obj(self_obj,INVEN_TYPE_RIGHT_HAND)!=0) then begin

   if (obj_carrying_pid_obj(self_obj, PID_MINIGUN))

   а вот примеры
 
   and (tile_distance(tile_num(dude_obj), tile_num(obj_pid(PID_DOG)))<=3) then

   and (tile_distance_objs((obj_pid(PID_DOG)), dude_obj) <=3) then


     //inven_unwield(self_obj);
     rm_obj_from_inven(self_obj, obj_carrying_pid_obj(self_obj, PID_MINIGUN));
    end
end

А вот скрипт http://jordan631.narod.ru/party.rar
копируйте в папку data  и начинайте новую игру

Отправлено: 18:15 - 6 Июля, 2007 | ИСПРАВЛЕНО: Jordan 63 - 18:31 - 6 Июля, 2007
Jordan 63
Пользователь

Откуда: Россия, Самара
Регистрация: Июль 2007

Всего: 228 сообщений

Как организовать проверку if dude находтится на карте мира в такой то координате но меньше чем в такой то then
Пример который не сомпилится ругается что ошибка then
 if ((worldmap_xpos == 11) and (worldmap_ypos == 9)) > and < ((worldmap_xpos == 493) and (worldmap_ypos == 349)) then

Отправлено: 13:40 - 8 Июля, 2007
Wasteland Ghost
Маленькое Злое Привидение

Откуда: Россия, Самара
Регистрация: Дек. 2002

Всего: 2251 сообщение

Я бы на месте компилера ещё не так ругалась . Что это за конструкция такая?
Цитата:
> and <


Большая просьба грамотно, чётко и полно формулировать вопросы. Если не можешь сформулировать свой вопрос, это означает, что ты сам пока не понимаешь, что тебе нужно.

Отправлено: 20:16 - 9 Июля, 2007
Akkella
Пользователь

Регистрация: Авг. 2006

Всего: 175 сообщений

Возник такой вопрос.
Привязал скрипт к оружию (возьмем просто для примера нож)
Одна локальная переменная содержит некое число (не проблема)
В скрипте дуда при определенных условиях в процедуре combat записывается в одну глобальную переменную флаг, а во вторую указатель.
В скрипте оружия при обновление карты во время боевого режима (по идее несколько раз за ход) идет проверка на эти гвары и изменяется локальная переменная.

Вернее должна менятся,но почему-то процедура map_update_p_proc в скрипте предмета не работает.
Сам предмет находится в активной руке дуда.
Есть ли данные или опыт по этому вопросу?

На всякий случай код:
procedure start;
procedure map_update_p_proc;

procedure start
begin

end
procedure map_update_p_proc
begin
display_msg(message_str(1, 100));
if global_var(775)>0 and global_var(776)==self_obj then
begin
set_local_var(0, local_var(0)+1);
set_global_var(755, 0);
set_global_var(776, 0);
display_msg(message_str(1, 859));

if local_var(0)==1 and random(local_var(0), 10)==local_var(0) then
begin
set_local_var(0, 0);
display_msg(message_str(1, 850));
destroy_object(self_obj);
end
end
end

Отправлено: 20:55 - 9 Июля, 2007 | ИСПРАВЛЕНО: Akkella - 22:49 - 9 Июля, 2007
Dar
Пользователь

Откуда: Воронеж
Регистрация: Дек. 2004

Всего: 289 сообщений

Akkella

global_var(776)==self_obj

Это нормально ? Может тут процесс прерывается?

Глобальные вары, там всегда работают. Просто вары тоже  
variable eklmn  
тоже.

Jordan 63

Цитата:
И еще есть команды для всех
Пример именно в бою
Разойдись
или
отступаем и все партийцы
убегают с карты


anim(self_obj, ANIM_jump_begin, LVar2);
jump_begin не использована в оригинале и сюда можно встроить свою анимацию, а затем ее скриптово проигрывать.
"Рисуещь" анимацию под джамп(прыжок) в ручную, в смысле перииначиваещь обычную ходьбы/бега (не помню почему она так просто не подходит)(у меня где-то на Анклавера есть) и создаещь иллюзию перемешения, т.е. телепортирующь
критера вручную-скриптово, а затем проигрываещь анимацию скриптово, хм, наоборот проигрываещь свою анимацию и затем телепортируещь, подобрав клетку.
Но это коряво будет выглядеть в большей или меньшей степени так как синхронизировать их до идеала тоже самое, что подпрыгнуть и схватить пролетающюю мимо пулю - я не смог.
Нормально внедряется только команда "Стоять и Недышать"

Это предел: (если я код не попутал)

procedure combat_p_proc
begin  
     /* if  (fixed_param == 3) then begin
      float_msg(self_obj, "Sir!!! fixed_param = 3", 6);
      reg_anim_clear(self_obj); end
      If  (fixed_param == 5) then begin
      float_msg(self_obj, "Sir!!! fixed_param = 5", 6);
      end   */
     
// ждать приказ.
     if global_var(GVAR_WARCRAFT) == 1 then
     begin
     script_overrides;
     critter_injure( self_obj,DAM_KNOCKED_DOWN);
     anim(self_obj,ANIMATE_ROTATION,rotation_to_tile(tile_num(self_obj),tile_num(dude_obj)));
     anim(self_obj, ANIM_stand, rotation_to_tile(tile_num(self_obj),tile_num(dude_obj)));
     critter_injure( self_obj,DAM_KNOCKED_DOWN);
//good //float_msg(self_obj, "Ok, I'm stand, Sir, Ok", 6);
     end
//действовать самостоятельно.
       if global_var(GVAR_WARCRAFT) == 2 then
       begin
       critter_injure( self_obj,DAM_KNOCKED_OUT);
       //anim(self_obj, ANIM_stand, rotation_to_tile(tile_num(self_obj),tile_num(dude_obj)));
       critter_injure( self_obj,DAM_KNOCKED_OUT);
       float_msg(self_obj, "UYUYOYUrrrr, Sir", 6);
       end
   
// исполнять приказ: Ко мне.
         if global_var(GVAR_WARCRAFT) == 3 then begin
         script_overrides;
         critter_injure( self_obj,DAM_KNOCKED_DOWN);
      LVar2 := rotation_to_tile(tile_num(self_obj),tile_num(dude_obj));
      //float_msg(self_obj, "Sir!!! obj_get_rot(self_obj)=" + LVar2, 6);
If  (fixed_param == 4) then begin
anim(self_obj, ANIMATE_ROTATION, rotation_to_tile(tile_num(self_obj),tile_num(dude_obj)));
move_to(self_obj, tile_num_in_direction(tile_num(self_obj),LVar2,5), elevation(dude_obj));
anim(self_obj, ANIM_jump_begin, LVar2);
set_global_var(GVAR_WARCRAFT,1);

     while (time_control_of_anim_combat <=1000) do  begin
     time_control_of_anim_combat:= (time_control_of_anim_combat +1);
     if time_control_of_anim_combat == 900 then anim(self_obj,ANIM_swing_anim, LVar2);
     end

end
         critter_injure( self_obj,DAM_KNOCKED_DOWN);
         end
end

Зато для раздачи команд можно использовать интерфейсные команды.

ps
Обработчик critter_p_proc срабатывает не менее ста раз в реальную секунду. ЕМНИП.

Отправлено: 0:26 - 10 Июля, 2007
 

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 ] Все собщения


Powered by Ikonboard 2.1.9 RUS
Modified by RU.Board Team
© 2000 Ikonboard.com