Page 1 of 2

Informationen über Goris

Posted: Sun May 04, 2008 3:34 pm
by Helios2000
Ich poste hier mal nen paar Informationen über Goris. Es scheint so zu sein das seine "Robenfunktion" hardcodet ist.

Critter Protos:
152 (Grundfigur) Damit funktioniert die Animation.
319 - 324 (Stage 1 - Stage 6) Keine Animation.

Scripts haben dabei anscheinend keine Wirkung.
Wobei der deaktivierte Source auf die Files in der Critter.lst anspielt.
In der Critter.lst steht:
marobe,99
madeth,100
Das sind die Animationen für Goris.
Hier der Code:

Code: Select all

procedure combat_is_starting_p_proc begin
   inc_local_var(LVAR_First_Combat);

//   if (self_visible) then
//      art_change_fid_num(self_obj, 100); Taken out per Jesse
end

procedure combat_is_over_p_proc begin
//   if (self_visible) then
//      art_change_fid_num(self_obj, 99);
end

procedure combat_p_proc begin
   variable fid;
   variable over;

   if (self_visible) then begin
      if (fixed_param == COMBAT_SUBTYPE_TURN) then begin
         debug_msg("OCGORIS: umm my turn");
         if (Goris_In_Party and has_trait(TRAIT_OBJECT, target_obj, OBJECT_TEAM_NUM) == TEAM_VAULT13) then begin
            debug_msg("OCGORIS: Attcking player");
            set_self_abandon_party;
            self_attack_dude;
            set_local_var(LVAR_Hostile, 2);
         end
      end
   end else begin
      script_overrides;
   end
end
Allerdings taucht die PID (16777368 also ID 98 bzw. 152 in Dezimal) in dem Fallout2 Source von mir 3 mal auf:
1. mal

Code: Select all

if ( v13 & 1 )
          {
            if ( v6 )
            {
              if ( v4 != -1 )
                *(_DWORD *)(16 * v4 + dword_510948 + 12) = 0;
            }
          }
          sub_4A3B0C(*(_DWORD *)(v6 + 120), v6, 0);
          sub_4A3B34(*(_DWORD *)(v14 + 120), 0);
          if ( *(_DWORD *)(v7 + 100) == 16777368)
          {
            if ( !sub_42DD18(v7) )
              v1 = v8;
          }
          ++v4;
          v5 += 4;
        }
        while ( v4 < dword_56D37C );
      }
2. mal

Code: Select all

if ( dword_56D37C > 0 )
  {
    a1 = 0;
    do
    {
      v9 = *(_DWORD *)(a1 + dword_56D390);
      v14 = *(_DWORD *)(a1 + dword_56D390);
      *(_DWORD *)(v9 + 64) = 0;
      sub_48C2F0(v14, 0, v7);
      *(_DWORD *)(v9 + 84) = 0;
      sub_4A3B0C(*(_DWORD *)(v9 + 120), v7, 0);
      sub_4A3B34(*(_DWORD *)(v9 + 120), 0);
      if ( *(_DWORD *)(v9 + 100) == 16777368 )
      {
        if ( !sub_42DD18(v9) )
        {
          if ( !sub_47DC60() )
          {
            v15 = *(_DWORD *)(v9 + 32);
            sub_419C88(
              (*(_DWORD *)(v9 + 32) & 0xF000000) >> 24,
              99,
              (*(_DWORD *)(v9 + 32) & 0xF000) >> 12,
              (v15 & 0xFF0000) >> 16,
              (*(_DWORD *)(v9 + 32) & 0x70000000) >> 28);
            sub_413C4C(v9);
            sub_413AF4(2, v16);
            sub_4149D0(v9, -1, a1);
            sub_41518C(v9, a1);
            sub_413CCC();
            while ( sub_413EC8(v9) )
              sub_4C8BDC();
          }
        }
      }
      ++v8;
      a1 += 4;
    }
    while ( v8 < dword_56D37C );
  }
3. mal

Code: Select all

if ( v4 && v4 != 2 && *(_DWORD *)(v5 + 100) != 16777368 )
  {
    result = 0;
  }
  else
  {
    v7 = 0;
    v15 = sub_471B70(v5);
    while ( 1 )
    {
      v8 = sub_472698(v5, 3, (int)&v14);
      v10 = v8;
      if ( !v8 )
        break;
      if ( v8 != v15 )
      {
        if ( !v12 || sub_47905C(v8, v9, (int)&v14) <= *(_DWORD *)(v5 + 64) )
        {
          if ( sub_4298EC(v5, v10, 2) )
          {
            if ( sub_478280(v10, 2) != 4 || sub_4786A0(v10, v11) || sub_4292D4(v5, v10, 0) )
              v7 = sub_4293BC(v5, v7, v13, v10, v10);
          }
        }
      }
    }
    result = v7;
  }
  return result;
}
Leider etwas unübersichtlich.

Re: Informationen über Goris

Posted: Sun May 04, 2008 3:39 pm
by Mr.Wolna
ALso kann man da nix machen? ???

:wall1cf: Verdammte scheiße, die sollen uns den Quellcode geben *motherfucker


Und was sit mitr diesen scriptcode, warum geht er nicht? theoretisch müsste doch das auch per script geregelt werden.

Re: Informationen über Goris

Posted: Sun May 04, 2008 3:46 pm
by Helios2000
Theoretisch müsste es gehen. Hab ich aber noch nicht ausprobiert. Du sagtest ja es geht nicht.
Die Befehle sind auf jedenfall in der Header Definiert.

Kannst du mir gerad mal die Daten über die Frm's geben. Hab die Critters zur Zeit nicht entpackt.

Re: Informationen über Goris

Posted: Sun May 04, 2008 3:50 pm
by Mr.Wolna
ah brauchst du die zwei animatuionen für gorris? wozu den?^^
(hab grad selber die critts net auf der platte? aber wenn es so wichtig ist mach ich das!


mom.. ich will ma gleich was versuchen! ich glaub ich weiß warum das net geht!

Re: Informationen über Goris

Posted: Sun May 04, 2008 3:54 pm
by Helios2000
Frm's besitzen auch Header Informationen, die brauch ich zum abgleich. Bin gerad am entpacken ;)

Re: Informationen über Goris

Posted: Sun May 04, 2008 4:04 pm
by Mr.Wolna
ahso sry!

Ne Frage werden die proceduren auch irgenwo in den headers defeniert?
weil es scheint keine star_combat_p_proc zu geben, hab grad klin sein script genommen die prozedur rein und das er n text ablasen sollte (floater) wenn ich A drücke passiert abolut nix!

was wenn man if combat star then .... probiert? dann müsste man aber defenieren was star combat ist... wisst ihr was ich meine^^???


OK: die start/end combat_p_proc ist auf jedenfall nicht in den headers defeniert!

Re: Informationen über Goris

Posted: Sun May 04, 2008 4:11 pm
by Lexx
star combat? Meinst du nicht ehr start combat?

Re: Informationen über Goris

Posted: Sun May 04, 2008 4:14 pm
by Mr.Wolna
ja ist doch klar :P wie geschrieben, das teil muss definiert werden, und dann stehen uns zwei neue proceduren zu verfügung, und dann sollte es kein Problem mehr sein den Code aus ocgoris zu benützen, oder habe ich irgendwo n fehler in meinen Gedankengang?^^

Re: Informationen über Goris

Posted: Sun May 04, 2008 4:25 pm
by Helios2000
Guck mal in die Define.h außerdem wird die combat_is_starting_p_proc in ECBDYGRD eingesetzt.

Edit: Der Script ist geil!!! Guck mal rein. Damit könnte es vielleicht gehen. Das ist der Script wo man Horrigan in der Wüste begegnet und er die Leute umbläst.

Re: Informationen über Goris

Posted: Sun May 04, 2008 4:41 pm
by Mr.Wolna
??? ??? ??? ??? ???

Wo wird bitte dasdefeniert? i der define ist kein start/over combat! und wo sit deiser scripT?

Re: Informationen über Goris

Posted: Sun May 04, 2008 4:46 pm
by Helios2000

Code: Select all

// script.h: Script Procedure Types //
#define no_proc           (0)
#define start_proc        (1)
#define spatial_proc      (2)
#define description_proc  (3)
#define pickup_proc       (4)
#define drop_proc         (5)
#define use_proc          (6)
#define use_obj_on_proc   (7)
#define use_skill_on_proc (8)
#define use_ad_on_proc    (9)
#define use_disad_on_proc (10)
#define talk_proc         (11)
#define critter_proc      (12)
#define combat_proc       (13)
#define damage_proc       (14)
#define map_enter_proc    (15)
#define map_exit_proc     (16)
#define create_proc       (17)
#define destroy_proc      (18)
#define barter_init_proc  (19)
#define barter_proc       (20)
#define look_at_proc      (21)
#define timed_event_proc  (22)
#define map_update_proc   (23)
So steht das in der define.h.
Der Script ist bei den Random Encountern.

Ich spekuliere hier drauf:

Code: Select all

end else if (sequence == 7) then begin
      sound := sfx_build_weapon_name(snd_weapon_attack, obj_carrying_pid_obj(guard1, PID_VINDICATOR_MINIGUN), hit_left_weapon_primary, self_obj);
      reg_anim_clear(guard1);
      reg_anim_begin();
      reg_anim_animate(guard1, ANIM_fire_burst, -1);
      reg_anim_play_sfx(guard1, sound, 0);
      reg_anim_end();
      reg_anim_clear(guard2);
      reg_anim_begin();
      reg_anim_animate(guard2, ANIM_fire_burst, -1);
      reg_anim_play_sfx(guard2, sound, 0);
      reg_anim_end();
Nur in der ANIMCOMD.H steht:

Code: Select all

#define ANIM_exploded_to_nothing_sf  (59)
#define ANIM_melted_to_nothing_sf    (60)
//#define ANIM_fire_dance_sf           (61)// doesn't exist, but keeps the enums ordered
#define ANIM_fall_back_blood_sf      (61)
#define ANIM_fall_front_blood_sf     (62)
// called shot interface picture	 64
#define ANIM_called_shot_pic         (63)
#define ANIM_max_anim                (65)   // 65
Also kann es sein das die Animationen auch auf 65 Hardcodet sind. Müsste man mal ausprobieren.

Re: Informationen über Goris

Posted: Sun May 04, 2008 5:00 pm
by Mr.Wolna
Aslo tut mir leid ,dass ict mir jetz echt zu hoch! Wo ist in den headers define start_combat?

und was haben die anderen Sachen damit zu tun, ich bin grad echt verwirrt"

Re: Informationen über Goris

Posted: Sun May 04, 2008 5:11 pm
by Helios2000
Ok ich versuche mal zu erklären was ich vorhabe oder wo ich eine Möglichkeit sehe:
Also Prozeduren können in nem Script erweitert oder definiert werden. In der Define.h stehen die Standarts.

Wieso holt man sich nicht die Critter Pid mit abfrage. Dann wenn etwas bestimmtes passiert wird eine neue Animation geladen.
Weiters beispiel dafür:

Code: Select all

#define check_obj_fall(x)     if ((x == dude_obj) or (x != 0)) then begin                    \
                                 the_roll := do_check(x, STAT_ag, -8);                       \
                                 if (is_success(the_roll) == false) then begin               \
                                    if (is_critical(the_roll)) then begin                    \
                                       the_roll := random(1,4);                              \
                                       if (the_roll == 1) then begin                         \
                                          critter_injure(x, DAM_CRIP_LEG_LEFT);              \
                                       end else if (the_roll == 2) then begin                \
                                          critter_injure(x, DAM_CRIP_LEG_RIGHT);             \
                                       end else if (the_roll == 3) then begin                \
                                          critter_injure(x, DAM_CRIP_ARM_LEFT);              \
                                       end else begin                                        \
                                          critter_injure(x, DAM_CRIP_ARM_RIGHT);             \
                                       end                                                   \
                                    end else begin                                           \
                                       critter_injure(x, DAM_KNOCKED_DOWN);                  \
                                    end                                                      \
                                 end else begin                                              \
                                    debug_msg("" + obj_name(x) + " PASSED AGILITY CHECK");   \
                                 end                                                         \
                                 if (x == dude_obj) then begin                               \
                                    reg_anim_clear(x);                                       \
                                    reg_anim_begin();                                        \
                                       reg_anim_animate(x,ANIM_fall_front_sf,-1);            \
                                    reg_anim_end();                                          \
                                    critter_injure(x,DAM_KNOCKED_DOWN);                      \
                                 end else begin                                              \
                                    anim(x, ANIMATE_SET_FRAME, ANIM_fall_front_sf);          \
                                 end                                                         \
                              end
Dieser Code überprüft ob man selber oder andere Critter auf der Map von ner Explosion erfasst wurde oder nicht. Und lässt sie gegebenenfalls hinfallen. Das Problem ist aber wie gesagt das ich nicht weiß ob man ne Animation zur ANIMCOMD.H hinzufügen kann. Beziehungsweise ob das dann funktioniert. Sonst muss man ne Definierte ändern, aber das Fehlt dann wieder im Spiel.

Re: Informationen über Goris

Posted: Sun May 04, 2008 5:12 pm
by Mr.Wolna
kann man das nicht direkt im script defenieren? und komm mal chat ich sag dir an was ich gedacht hab!

Re: Informationen über Goris

Posted: Sun May 04, 2008 5:18 pm
by Lexx
Welcher Chat?

Re: Informationen über Goris

Posted: Sun May 04, 2008 5:21 pm
by SteWoBo
irc chan #fallout-modding

Re: Informationen über Goris

Posted: Sun May 04, 2008 5:22 pm
by Lexx
Welcher Server?

Re: Informationen über Goris

Posted: Sun May 04, 2008 5:23 pm
by SteWoBo
irc.chatspike.net

wie die andern falloutnow chans auch

Re: Informationen über Goris

Posted: Sun May 04, 2008 5:23 pm
by Lexx
Mah... da komm ich mit ChatZilla wohl nicht hin... jedenfalls nicht, dass ich wüsste, wie.

/Edit: Ok, hab's wohl...

Re: Informationen über Goris

Posted: Sun May 04, 2008 5:31 pm
by SteWoBo
erst

/server irc.chatspike.net 6667

dann

/j #falloutnow-modding

eingeben, dann müßte es gehen