Форум TeamX
   Home   Members  
Pages: [1] |   Go Down
 
Author Topic: Изменение traits  (Read 1013 times)
Rainman
Пользователь
Posts: 69

301104000
Изменение traits
« on: 20 January 2011, 21:54:29 »

Приветствую!

Для знатоков кодинга у меня созрел еще один каверзный (и важный для моего проекта) вопрос: как можно изменить механику работы трейтов (т.е. "способностей") ?
Есть совершенно бесполезная способность "Сексапильность", у которой вообще нет никакой механики, она используется только через скрипты. Мне нужно изменить её так, чтобы при выборе этой способности у игрока снижались бы на 1 все показатели s.p.e.c.i.a.l. Этакий "анти-талант". Положительную сторону трейта я задам через скрипты.
На старом форуме откопал вот это
Quote
Traits: 0x10c184 (Just the location- I haven't looked at them any yet)
но описания, понятное дело, нет. Потратив несколько часов на анализ смещений по данному адресу я совершенно однозначно осознал, что ничего там не понимаю...

Может, кто-нибудь знает, как мне помочь?

Наш большой пост апокалиптический проект "Олимп 2207"
http://olympus2207.com
Jordan
Пользователь
Posts: 416

476228895
Re: Изменение traits
« Reply #1 on: 20 January 2011, 22:11:11 »

Вы хочите трейты, они у на есть. Веселый

Через сфал функции можно добавлять, изменять перки и трейты.

В моддерс паке есть примеры.

modderspack 2.12\example mods\Traits\Data\scripts\
« Last Edit: 20 January 2011, 22:15:05 by Jordan »

Воспрянет Россия, из праха отцов
Расправятся крылья, миллионов сердец
Поднимут все головы и грудью вздохнут
И громка скажут, что пришли
Мы пришли, со столетней войны
Rainman
Пользователь
Posts: 69

301104000
Re: Изменение traits
« Reply #2 on: 20 January 2011, 22:21:28 »

Замечательно, но:

Quote
;This is a modification to trait 0
[t0]
NoHardcode=0
Name=Example
Desc=This is an example trait
Image=72

Здесь только можно отключить эффект трейта, сменить описание (русский шрифт не поддерживается) и картинку поменять. Короче - "ни-о-чем".
Есть другие варианты?

Наш большой пост апокалиптический проект "Олимп 2207"
http://olympus2207.com
Jordan
Пользователь
Posts: 416

476228895
Re: Изменение traits
« Reply #3 on: 20 January 2011, 22:21:58 »

Вот пример. Но для перков.

GL_Perks.ssl

Code:

#define SFALL_GVAR_PERK_HERCULES  (2127)

#define NAME_PERK_HERCULES  ("Name Hercules")
#define DESC_PERK_HERCULES  ("Desc Hercules")

#define PERK_ON   (1)
#define PERK_OFF  (0)

#define select_perk(Perk, Active, Image)          \
set_selectable_perk(message_str(NAME, Perk + 1000), Active, Image, message_str(NAME, Perk + 2000));

procedure start;
procedure Add_Selectable_Fake_Perks;
procedure Selected_Perk;
procedure Apply_Perks_Repeat;

procedure start begin
   if (game_loaded) then begin
      set_global_script_repeat(100);
   end
   //set_perkbox_title("Choose a trait");
   hide_real_perks;
   //perk_add_mode(1);
   //show_real_perks;
   display_msg("" + get_sfall_global_int(SFALL_GVAR_PERK_HERCULES));
   call Add_Selectable_Fake_Perks;
   call Selected_Perk;
   call Apply_Perks_Repeat;
end

procedure Add_Selectable_Fake_Perks begin
  // if(requierments for the perk to be selectable)then
  //    begin

                  //set_sfall_global(SFALL_GVAR_PERK_HERCULES, 0);
  //    end
  // else
  //    begin
  //       set_selectable_perk(NAME_PERK_HERCULES, 0, 3, DESC_PERK_HERCULES);
  //    end
  
  
  
    IF (get_sfall_global_int(SFALL_GVAR_PERK_HERCULES) == 0) THEN
    set_selectable_perk(NAME_PERK_HERCULES, PERK_ON, 3, DESC_PERK_HERCULES);
    else
    set_selectable_perk(NAME_PERK_HERCULES, PERK_OFF, 3, DESC_PERK_HERCULES);
    
    
end

procedure Selected_Perk begin
   if(has_fake_perk(NAME_PERK_HERCULES) AND (get_sfall_global_int(SFALL_GVAR_PERK_HERCULES) < 1)) then //need a var to stop it from being applied over and over
      begin
      add_mult_objs_to_inven(dude_obj, create_object_sid(6,0,0,-1), 1);
         set_sfall_global(SFALL_GVAR_PERK_HERCULES, get_sfall_global_int(SFALL_GVAR_PERK_HERCULES) + 1);
         display_msg("" + get_sfall_global_int(SFALL_GVAR_PERK_HERCULES));
      end
end

procedure Apply_Perks_Repeat
begin
   //if (if has perk and needs to be repeated(game load etc)>) then begin
   //   <bonuses>
   //end
end


has_fake_perk замени на has_fake_trait
« Last Edit: 20 January 2011, 22:26:27 by Jordan »

Воспрянет Россия, из праха отцов
Расправятся крылья, миллионов сердец
Поднимут все головы и грудью вздохнут
И громка скажут, что пришли
Мы пришли, со столетней войны
Rainman
Пользователь
Posts: 69

301104000
Re: Изменение traits
« Reply #4 on: 20 January 2011, 22:41:25 »

функции fake_trait и fake_perk не подходят, так как они именно "фейковые" (т.е. не дают ничего, кроме картинки и описания) и устанавливаются через скрипты, а мне нужна возможность выбрать (или не выбрать) трейт именно при генерации персонажа. Конечно, можно просто сменить описание и картинку трейта "Сексапильность", а при старте игры сделать проверку на наличие трейта и убавить все показатели на 1, но мне нужно, чтоб было как у трейта "Талант" -> выбираешь его - и сразу видишь, что все показатели повысились (только мне наоборот, нужно их понизить).


Наш большой пост апокалиптический проект "Олимп 2207"
http://olympus2207.com
Jordan
Пользователь
Posts: 416

476228895
Re: Изменение traits
« Reply #5 on: 21 January 2011, 20:22:39 »

В документации к сфалу

Global scripts have multiple modes, which can be set
using the set_global_script_type function. In the default
mode (i.e. mode 0) their execution is linked to the local
map game loop, so the script will not run in dialogs or
on the world map. In mode 1 their execution is linked to
the player input, and so they will run whenever the mouse
cursor is visible on screen, including the world map,
character dialogs etc. In mode 2, execution is linked to
the world map loop, so the script will only be executed
on the world map and not on the local map or in any
dialog windows. Mode 3 is a combination of modes 0 and 2,
so scripts will be executed on both local maps and the
world map, but not in dialog windows. Using mode 1
requires the input wrapper to be enabled. Use
available_global_script_types to check what is available.

То есть режим 1 скрипт будет работать на карте мира, и когда курсор отображается на экране. Может быть скрипт будет работать и при создании героя.

Воспрянет Россия, из праха отцов
Расправятся крылья, миллионов сердец
Поднимут все головы и грудью вздохнут
И громка скажут, что пришли
Мы пришли, со столетней войны
Rainman
Пользователь
Posts: 69

301104000
Re: Изменение traits
« Reply #6 on: 21 January 2011, 21:49:18 »

На всякий случай я, конечно, проверил, но, как я и думал, никакие скрипты не работают при генерации персонажа. Все таки sfall не всемогущ, и нужно опять кастовать вызов двиглоковырятелей... Ray?..

Наш большой пост апокалиптический проект "Олимп 2207"
http://olympus2207.com
Ray
Глобальный модератор
Posts: 220

336150559
Re: Изменение traits
« Reply #7 on: 24 January 2011, 22:10:29 »

Сколь я помню - глобальные скрипты работали везде, даже в главном меню. А уж при генерации персонажа должны работать и подавно... Не знаю, что менялось - давно не следил за проектом, всё как-то не до этого...
Rainman
Пользователь
Posts: 69

301104000
Re: Изменение traits
« Reply #8 on: 24 January 2011, 23:07:07 »

Только что сделал sfall'у глобальную проверку:

set_global_script_type(1);
set_global_script_repeat(1);
if get_mouse_buttons == 1 and mouse_1_is_pressed == 0 then begin
   play_sfx("CENSOR");
   mouse_1_is_pressed := 1;
end
if get_mouse_buttons == 0 and mouse_1_is_pressed == 1 then
   mouse_1_is_pressed := 0;

Понятно, при каждом нажатии на левую клавишу мыши Fallout говорит "пиии". Реакция начинается только после загрузки карты (например, если щелкнуть клавишей во время ролика старейшины - звука "пиии" нет, glscript не работает). Зато после загрузки карты - пищит повсюду, вплоть до нажатия кнопки "Да" в окошке "Вы точно хотите выйти?"

В любом случае, мне кажется, что sfall не сможет дать такого же эффекта, как при взятии трейта "Талант" (где сразу же повышаются все очки характеристик)...
Ray (конечно, если ты не занят), не мог бы ты взглянуть на упомянутое смещение в 1.02d US ?

Наш большой пост апокалиптический проект "Олимп 2207"
http://olympus2207.com
Jordan
Пользователь
Posts: 416

476228895
Re: Изменение traits
« Reply #9 on: 25 January 2011, 12:32:44 »

Попробуй использовать ранние версии сфала. Может в этой версии глюк, поэтому в меню скрипт не работает.

Воспрянет Россия, из праха отцов
Расправятся крылья, миллионов сердец
Поднимут все головы и грудью вздохнут
И громка скажут, что пришли
Мы пришли, со столетней войны
Pages: [1] |   Go Up