Mod für griechische Antike: Anabasis -> geht in TPW ein

正在查看此主题的用户

Phaiak

Knight
i129982_mb110.jpg


Lynores arbeitet an seiner Mod zum Peloponesischen Krieg weiter und will sie auch für Warband im SP und MP veröffentlichen. Da man nicht getrennt an der Verwirklichung des selben Ziels arbeiten braucht, werden alle Relevanten Features von Anabasis in den MP von TPW eingehen (u.a. ein interessantes Multiplayer-Profil-System, Schifffahrt, ...). Aus Zeitgründen stelle ich meine Arbeit bis auf Weiteres ein. Da alles weitere im TPW Forum besprochen wird, kann dieser thread geschlossen werden.

Noch ein paar Eindrücke:
i129983_mb116.jpg


i129981_mb109.jpg

Ursprüngliche Nachricht:
Hallo,

ich hab da mal was zusammen gefuscht, weil ich Warband gerne als Hoplit spielen wollte.



Es besteht eigentlich aus dem abgewandelten Mount&Gladius Mod von "Llew2" und so einem cloaks Mod, aber es ist doch irgendwie etwas ganz anderes daraus geworden.

Es gibt drei Fraktionen: Sparta, Athen und Persien.




Ich wollte gern etwas dunkleres Wetter, hab auch einen Anleitung gefunden. Die war aber auf Englisch und ich fands etwas kompliziert. Wenn jemand eine einfache Erklärung hätte, würde ich mich freuen.

Sollte Interesse an dem Mod bestehen, kann ich ihn hochladen. Weiß nur nicht wie. Evntuell kann ihn ja noch irgendwer beleben...

Grüße!
 
"Basically, everything in this mod can be used and modified however you want, for whatever projects you want. " (Llew2)
 
Oh, na dann... :wink:

Übrigens wäre ich an guten Modellen für UA interessiert, falls du die vorhandenen Fraktionen noch erweitert hast, denn Sparta, Athen und Persien sind erstmal nicht eingeplant.
 
Das ganze wurde jetzt nochmal überarbeitet.

Das Wetter im Multiplayer kann man jetzt über das Menü auswählen.
Uhrzeit, Regen, Schnee, Nebel, Wolken ... alles aufs kleinste einstellbar.

Fraktionen wurden geändert.
Athen mit vier Multiplayereinheiten und Bots
Korinth mit vier Multiplayereinheiten und Bots

Sparta mit drei Multiplayereinheiten und Bots
Persien mit vier Bots

Credits
Modelle : Lynores(vakant) via DesideriusDolens
Pferde und Wurfspeere: Llew2
Mäntel: cloak Mod

Es handelt sich nur um einen Multiplayermod.
 
Phaiak 说:
Das Wetter im Multiplayer kann man jetzt über das Menü auswählen.
Uhrzeit, Regen, Schnee, Nebel, Wolken ... alles aufs kleinste einstellbar.

Oho... I like.  :smile:
 
Ok, ein paar Leute haben mich angeschrieben, um zu fragen, wie das mit dem Wetter funktioniert.
i120190_mb27.jpg
Ich hab von Modden und Scripten eigentlich keinen Schimmer. Verzeit also fehlende Fachterminologie und läppische Herangehensweise.Grundlage sind die py-Dateien des "Module_system".


I.Intro
Das Ganze beginnt bei der "module_mission_templates.py". Hier wird u.a. geregelt, was beim Start von Multiplayer-Missionen stattfinden soll. Bestimmungen für Deathmatch, Teamdeatmatch u.s.w. sind getrennt geregelt. Allen Spielmodi gemeinsam ist jedoch, dass das script "multiplayer_server_before_mission_start_common" gerufen wird.

II. Die "module_scripts.py" (Teil 1)
Dieses entscheidende Script ist natürlich in der "module_scripts.py" zu finden. Wenige Zeilen nach Scriptbeginn sollte man auch schon den verheerenden Befehl "(scene_set_day_time, 16)," finden, der in allen native Multiplayergefechten das Wetter so langweilig sonnig macht. Anstelle dieser Zeile müssen nun alle Befehle zur Wetterkontrolle eingefügt und mit einer Variable versehen werden, deren Name willkürlich gewählt werden kann.
In die "module_scripts.py":
####################################################################
    (scene_set_day_time, "$g_multiplayer_daytime"),
    (set_rain, "$g_multiplayer_niederschlag_art" , "$g_multiplayer_niederschlag_staerke"),# Niederschlag: 1.Var=Art (1=Regen, 2=Schnee) 2.Var= Staerke (scheinbar 0-100)
    (set_global_haze_amount, "$g_multiplayer_nebel_staerke"), # Nebelstaerke (scheinbar 90 -100)
#    (set_fog_distance, "$g_multiplayer_nebel_entfernung", 0xbfbfbf), # funktioniert nicht wirklich gut
    (set_global_cloud_amount, "$g_multiplayer_wolken"), #Wolken (0-100)
    (set_postfx, "$g_multiplayer_postfx"), # Meine Grafikeinstellungen sind zu niedrig um hier einen Unterschied zu bemerken
####################################################################
III. Die "module_presentations.py"
Hier wird u.a die Menuoberfläche für den Multiplayer geregelt. Fügt die Zeilen zwischen den Rauten am besten zwischen den Zeilen in eurer Datei ein, die auch hier vor und nach den Rauten sind.
Block I
      (val_sub, ":cur_y", ":cur_y_adder"),

      (create_text_overlay, reg0, "str_valid_vote_ratio", 0),
      (position_set_x, pos1, 0),
      (position_set_y, pos1, ":cur_y"),
      (overlay_set_position, reg0, pos1),

      (create_number_box_overlay, "$g_presentation_obj_admin_panel_30", 50, 101),
      (position_set_x, pos1, 390),
      (position_set_y, pos1, ":cur_y"),
      (overlay_set_position, "$g_presentation_obj_admin_panel_30", pos1),
      (overlay_set_val, "$g_presentation_obj_admin_panel_30", "$g_multiplayer_valid_vote_ratio"),

###########################################################################
###########################################################################
### Uhrzeit
      (val_sub, ":cur_y", ":cur_y_adder"),
      (create_text_overlay, reg0, "str_daytime", 0),
      (position_set_x, pos1, 0),
      (position_set_y, pos1, ":cur_y"),
      (overlay_set_position, reg0, pos1),
      (create_number_box_overlay, "$g_presentation_obj_admin_panel_99", 1, 24),
      (position_set_x, pos1, 390),
      (position_set_y, pos1, ":cur_y"),
      (overlay_set_position, "$g_presentation_obj_admin_panel_99", pos1),
      (overlay_set_val, "$g_presentation_obj_admin_panel_99", "$g_multiplayer_daytime"),
### Niederschlag Staerke
      (val_sub, ":cur_y", ":cur_y_adder"),
      (create_text_overlay, reg0, "str_niederschlag_staerke", 0),
      (position_set_x, pos1, 0),
      (position_set_y, pos1, ":cur_y"),
      (overlay_set_position, reg0, pos1),
      (create_number_box_overlay, "$g_presentation_obj_admin_panel_98", 0, 251),
      (position_set_x, pos1, 390),
      (position_set_y, pos1, ":cur_y"),
      (overlay_set_position, "$g_presentation_obj_admin_panel_98", pos1),
      (overlay_set_val, "$g_presentation_obj_admin_panel_98", "$g_multiplayer_niederschlag_staerke"),
### Niederschlag Art
      (val_sub, ":cur_y", ":cur_y_adder"),
      (create_text_overlay, reg0, "str_niederschlag_art", 0),
      (position_set_x, pos1, 0),
      (position_set_y, pos1, ":cur_y"),
      (overlay_set_position, reg0, pos1),
      (create_number_box_overlay, "$g_presentation_obj_admin_panel_97", 1, 3),
      (position_set_x, pos1, 390),
      (position_set_y, pos1, ":cur_y"),
      (overlay_set_position, "$g_presentation_obj_admin_panel_97", pos1),
      (overlay_set_val, "$g_presentation_obj_admin_panel_97", "$g_multiplayer_niederschlag_art"),
### Nebel Staerke
      (val_sub, ":cur_y", ":cur_y_adder"),
      (create_text_overlay, reg0, "str_nebel_staerke", 0),
      (position_set_x, pos1, 0),
      (position_set_y, pos1, ":cur_y"),
      (overlay_set_position, reg0, pos1),
      (create_number_box_overlay, "$g_presentation_obj_admin_panel_96", 1, 101),
      (position_set_x, pos1, 390),
      (position_set_y, pos1, ":cur_y"),
      (overlay_set_position, "$g_presentation_obj_admin_panel_96", pos1),
      (overlay_set_val, "$g_presentation_obj_admin_panel_96", "$g_multiplayer_nebel_staerke"),
### wolken
      (val_sub, ":cur_y", ":cur_y_adder"),
      (create_text_overlay, reg0, "str_wolken", 0),
      (position_set_x, pos1, 0),
      (position_set_y, pos1, ":cur_y"),
      (overlay_set_position, reg0, pos1),
      (create_number_box_overlay, "$g_presentation_obj_admin_panel_94", 0, 101),
      (position_set_x, pos1, 390),
      (position_set_y, pos1, ":cur_y"),
      (overlay_set_position, "$g_presentation_obj_admin_panel_94", pos1),
      (overlay_set_val, "$g_presentation_obj_admin_panel_94", "$g_multiplayer_wolken"),
### postfx
      (val_sub, ":cur_y", ":cur_y_adder"),
      (create_text_overlay, reg0, "str_postfx", 0),
      (position_set_x, pos1, 0),
      (position_set_y, pos1, ":cur_y"),
      (overlay_set_position, reg0, pos1),
      (create_number_box_overlay, "$g_presentation_obj_admin_panel_93", 0, 12),
      (position_set_x, pos1, 390),
      (position_set_y, pos1, ":cur_y"),
      (overlay_set_position, "$g_presentation_obj_admin_panel_93", pos1),
      (overlay_set_val, "$g_presentation_obj_admin_panel_93", "$g_multiplayer_postfx"),
###########################################################################
###########################################################################
      (val_sub, ":cur_y", ":cur_y_adder"),

      (create_text_overlay, reg0, "str_auto_team_balance_limit", 0),
      (position_set_x, pos1, 0),
      (position_set_y, pos1, ":cur_y"),
      (overlay_set_position, reg0, pos1),
Block II
      (else_try),
        (eq, ":eek:bject", "$g_presentation_obj_admin_panel_41"),
        (multiplayer_send_int_to_server, multiplayer_event_admin_set_anti_cheat, ":value"),

###########################################################################
###########################################################################
      (else_try),
        (eq, ":eek:bject", "$g_presentation_obj_admin_panel_99"),
        (multiplayer_send_int_to_server, multiplayer_event_admin_set_daytime, ":value"),
      (else_try),
        (eq, ":eek:bject", "$g_presentation_obj_admin_panel_98"),
        (multiplayer_send_int_to_server, multiplayer_event_admin_set_niederschlag_staerke, ":value"),
      (else_try),
        (eq, ":eek:bject", "$g_presentation_obj_admin_panel_97"),
        (multiplayer_send_int_to_server, multiplayer_event_admin_set_niederschlag_art, ":value"),
      (else_try),
        (eq, ":eek:bject", "$g_presentation_obj_admin_panel_96"),
        (multiplayer_send_int_to_server, multiplayer_event_admin_set_nebel_staerke, ":value"),
      (else_try),
        (eq, ":eek:bject", "$g_presentation_obj_admin_panel_94"),
        (multiplayer_send_int_to_server, multiplayer_event_admin_set_wolken, ":value"),
      (else_try),
        (eq, ":eek:bject", "$g_presentation_obj_admin_panel_93"),
        (multiplayer_send_int_to_server, multiplayer_event_admin_set_postfx, ":value"),

###########################################################################
###########################################################################

      (else_try),
        (eq, ":eek:bject", "$g_presentation_obj_admin_panel_42"),
        (multiplayer_send_int_to_server, multiplayer_event_admin_set_disallow_ranged_weapons, ":value"),
      (try_end),
      ]),
IV. Die "module_variables.py"
Die Variablen die benutzt wurden, müssen in der "module_variables.py" deklariert (?) werden.
In die "module_variables.py":
reserved_variables = [
    "g_multiplayer_daytime",
    "g_multiplayer_niederschlag_staerke",
    "g_multiplayer_niederschlag_art",
    "g_multiplayer_nebel_staerke",
    "g_multiplayer_nebel_entfernung",
    "g_multiplayer_wolken",
    "g_multiplayer_postfx",

    "g_presentation_obj_admin_panel_99",
    "g_presentation_obj_admin_panel_98",
    "g_presentation_obj_admin_panel_97",
    "g_presentation_obj_admin_panel_96",
    "g_presentation_obj_admin_panel_95",
    "g_presentation_obj_admin_panel_94",
    "g_presentation_obj_admin_panel_93",
]
V. Die "header_common.py"
Die in den presentations verwendeten events müssen hier rein.
Am Ende der client events das hier:
#############################################################################################
multiplayer_event_admin_set_daytime                          = 201

multiplayer_event_admin_set_niederschlag_staerke              = 202
multiplayer_event_admin_set_niederschlag_art                  = 203

multiplayer_event_admin_set_nebel_staerke                    = 204
multiplayer_event_admin_set_nebel_entfernung                  = 205

multiplayer_event_admin_set_wolken                  = 206

multiplayer_event_admin_set_postfx                  = 207

#############################################################################################
Am Ende der server events das hier:
#########################################################################################################
multiplayer_event_daytime_at_player                          = 301

multiplayer_event_niederschlag_staerke_at_player              = 302
multiplayer_event_niederschlag_art_at_player                  = 303

multiplayer_event_nebel_staerke_at_player                    = 304
multiplayer_event_nebel_entfernung_at_player                  = 305

multiplayer_event_wolken_at_player                            = 306

multiplayer_event_postfx_at_player                            = 307
#########################################################################################################
VI. Die "module_scripts.py" (Teil 2)
so, jetzt müssen die neuen Events noch in die "module_scripts.py". Am Ende der server events fügt man direkt über den so  markierten client events
        ###############
        #CLIENT EVENTS#
        ###############
das hier ein:
#################################################################################################
# SERVER WETTER EVENTS
#################################################################################################
### Uhrzeit  
(eq,":event_type", multiplayer_event_admin_set_daytime),
(store_script_param, ":value", 3),
        (try_begin),
          (player_is_admin, ":player_no"),#validity check
          (is_between, ":value", 0, 25),  #condition checks are done
          (assign, "$g_multiplayer_daytime", ":value"),
        (try_end),
      (else_try),
### Niederschlag
(eq,":event_type", multiplayer_event_admin_set_niederschlag_staerke),
(store_script_param, ":value", 3),
        (try_begin),
          (player_is_admin, ":player_no"),#validity check
          (is_between, ":value", -1, 250),  #condition checks are done
          (assign, "$g_multiplayer_niederschlag_staerke", ":value"),
        (try_end),
      (else_try),

(eq,":event_type", multiplayer_event_admin_set_niederschlag_art),
(store_script_param, ":value", 3),
        (try_begin),
          (player_is_admin, ":player_no"),#validity check
          (is_between, ":value", 0, 3),  #condition checks are done
          (assign, "$g_multiplayer_niederschlag_art", ":value"),
        (try_end),
      (else_try),
### Nebel
(eq,":event_type", multiplayer_event_admin_set_nebel_staerke),
(store_script_param, ":value", 3),
        (try_begin),
          (player_is_admin, ":player_no"),#validity check
          (is_between, ":value", -1, 100),  #condition checks are done
          (assign, "$g_multiplayer_nebel_staerke", ":value"),
        (try_end),

      (else_try),
(eq,":event_type", multiplayer_event_admin_set_nebel_entfernung),
(store_script_param, ":value", 3),
        (try_begin),
          (player_is_admin, ":player_no"),#validity check
          (is_between, ":value", -1, 100),  #condition checks are done
          (assign, "$g_multiplayer_nebel_entfernung", ":value"),
        (try_end),
      (else_try),
### wolken

(eq,":event_type", multiplayer_event_admin_set_wolken),
(store_script_param, ":value", 3),
        (try_begin),
          (player_is_admin, ":player_no"),#validity check
          (is_between, ":value", -1, 101),  #condition checks are done
          (assign, "$g_multiplayer_wolken", ":value"),
        (try_end),
      (else_try), 
### postfx
(eq,":event_type", multiplayer_event_admin_set_postfx),
(store_script_param, ":value", 3),
        (try_begin),
          (player_is_admin, ":player_no"),#validity check
          (is_between, ":value", 0, 12),  #condition checks are done
          (assign, "$g_multiplayer_postfx", ":value"),
        (try_end),
      (else_try),
#################################################################################################
# ENDE SERVER WETTER EVENTS
#################################################################################################
und am Ende der client events das hier:
#################################################################################################
# WETTER CLIENT EVENTS
#################################################################################################

### Uhrzeit
(else_try),
          (eq, ":event_type", multiplayer_event_daytime_at_player),
          (store_script_param, ":value", 3),
          (assign, "$g_multiplayer_daytime", ":value"),
### Niederschlag
(else_try),
          (eq, ":event_type", multiplayer_event_niederschlag_staerke_at_player),
          (store_script_param, ":value", 3),
          (assign, "$g_multiplayer_niederschlag_staerke", ":value"),
(else_try),
          (eq, ":event_type", multiplayer_event_niederschlag_art_at_player),
          (store_script_param, ":value", 3),
          (assign, "$g_multiplayer_niederschlag_art", ":value"),
### Nebel
(else_try),
          (eq, ":event_type", multiplayer_event_nebel_staerke_at_player),
          (store_script_param, ":value", 3),
          (assign, "$g_multiplayer_nebel_staerke", ":value"),
(else_try),
          (eq, ":event_type", multiplayer_event_nebel_entfernung_at_player),
          (store_script_param, ":value", 3),
          (assign, "$g_multiplayer_nebel_entfernung", ":value"),
### wolken
(else_try),
          (eq, ":event_type", multiplayer_event_wolken_at_player),
          (store_script_param, ":value", 3),
          (assign, "$g_multiplayer_wolken", ":value"),
### postfx
(else_try),
          (eq, ":event_type", multiplayer_event_postfx_at_player),
          (store_script_param, ":value", 3),
          (assign, "$g_multiplayer_postfx", ":value"),

#####################################################
# ENDE WETTER CLIENT EVENTS 
#####################################################
Man muss beim Einfügen darauf achten, das zwischen jedem event ein "(else_try)," ist.
VII. Die "module_strings.py"
Zu guter Letzt werden die Strings bezeichnet. Fügt dafür einfach das hier in die "module_strings.py" ein:
#####################################################
  ("daytime", "Uhrzeit"),
  ("niederschlag_staerke", "Niederschlagstaerke (%)"),
  ("niederschlag_art", "Art: 1=Regen 2=Schnee"),
  ("nebel_staerke", "Nebelstaerke (%)"),
  ("nebel_entfernung", "Nebelentfernung"),
  ("Wolken", "Wolken (%)"),
  ("postfx", "postfx"),
#####################################################

So, das wars. Ich hoffe ich hab nichts vergessen. Macht lieber Sicherheitskopien von eurem Mod, bevor ihr das hier einbaut.
 
Es gibt ein paar Verbesserungen:

Eine Taste um einen Kriegsschrei auszustoßen.
Zu Fuß gibt es die Jubelanimation+sound, welche die Truppen im SP machen:
i121212_mb86.jpg
Wenn man auf dem Pferd sitzt, bäumt es sich bei gedrückter Taste auf:
i121213_mb90.jpg
Es gibt eine Taste um vom reitenden Pferd zu springen und auch eine weitere, um das Pferd kurzzeitig zum sprinten zu bringen.
i121214_mb91.jpg

Ich würde gern noch ein Kommando einbringen, mit dem man die Bots zu einer Phalanx formieren kann.
Hat jemand einen Tipp?

Prinzipiell ist die Mod fertig.
 
Phaiak 说:
i129982_mb110.jpg


Lynores arbeitet an seiner Mod zum Peloponesischen Krieg weiter und will sie auch für Warband im SP und MP veröffentlichen. Da man nicht getrennt an der Verwirklichung des selben Ziels arbeiten braucht, werden alle Relevanten Features von Anabasis in den MP von TPW eingehen (u.a. ein interessantes Multiplayer-Profil-System, Schifffahrt, ...). Aus Zeitgründen stelle ich meine Arbeit bis auf Weiteres ein. Da alles weitere im TPW Forum besprochen wird, kann dieser thread geschlossen werden.

Noch ein paar Eindrücke:
i129983_mb116.jpg


i129981_mb109.jpg

Ursprüngliche Nachricht:
Hallo,

ich hab da mal was zusammen gefuscht, weil ich Warband gerne als Hoplit spielen wollte.



Es besteht eigentlich aus dem abgewandelten Mount&Gladius Mod von "Llew2" und so einem cloaks Mod, aber es ist doch irgendwie etwas ganz anderes daraus geworden.

Es gibt drei Fraktionen: Sparta, Athen und Persien.




Ich wollte gern etwas dunkleres Wetter, hab auch einen Anleitung gefunden. Die war aber auf Englisch und ich fands etwas kompliziert. Wenn jemand eine einfache Erklärung hätte, würde ich mich freuen.

Sollte Interesse an dem Mod bestehen, kann ich ihn hochladen. Weiß nur nicht wie. Evntuell kann ihn ja noch irgendwer beleben...

Grüße!


Keine Doppelposts.



Malakat 说:
wieso machst du ihn denn zuende weil ich wollte schon immer mal ein mod mit persern spartaner und Athenern spielen
 
1.Mach den Doppelpost weg.
2. Es gibt noch einen weiteren Mod, mit Athener, Perser usw., namens The Peloponian War.  Phaiak arbeitet auch an diesem Mod mit. Wenn du den Post fertig gelesen hättest, würdest du das wissen.
 
后退
顶部 底部