[Açık Kaynak Projesi]Deneysel - Mesafeden Çekme

Users who are viewing this thread

Pumpkin Lord


Herkese selamlar!

Dün canım sıkıldı, düşündüm hiç OSP kod paylaşmıyorum. Bu aralar eski ve yeni çalışmalarımı, durum el verdikçe paylaşmaya çalışacam.

İlk paylaşımım basit olarak herhangi bir menzilli silahla mekandaki herhangi bir oyuncuyu vurmanız halinde kendinize çekmenize yarıyor, çok basit bir kod. Zaten amacım da buydu. Belli kondisyonlar var, mesela gerçek-dışı mesafelerden ya da insan olmayan herhangi bir agenti çekemezsiniz.

Projenizde kullandığınız takdirde en azından bir teşekkür alabilirim, fakat özellikle rica etmiyorum. :smile:

Mission Template Kodu

Code:
ranged_pull = (
 ti_on_agent_hit, 0, 0, [(is_between, reg0, "itm_heavy_throwing_axes_melee", "itm_torch"),
                         # (item_get_type, ":is_bow", reg0),
                         # (eq, ":is_bow", itp_type_bow),
                         # (eq, reg0, "itm_short_bow"),
                            ],
  
  [  #(display_message, "@IP: Arrow shot."),
     
     (store_trigger_param_1, ":target"),
     (store_trigger_param_2, ":source"),

     (get_player_agent_no, ":me"),
      (str_store_agent_name, s0, ":target"),
     (agent_is_alive, ":source"),
     
     (agent_get_position, pos1, ":target"),
     (agent_get_position, pos2, ":source"),
      (get_distance_between_positions, ":dist", pos1, pos2),
      (assign, reg1, ":dist"),
     (position_move_x, pos2, 50),
     (eq, ":source", ":me"),
     (try_begin),
      (le, ":dist", 200),
       (str_store_string, s1, "@Too close to pull! Distance: {reg1}"), 
     (else_try),
      (ge, ":dist", 1000),
       (str_store_string, s1, "@Too far to pull! Distance: {reg1}"),
     (else_try),
      (neg|agent_is_human, ":target"),
       (str_store_string, s1, "@You cannot pull an animal! Distance: {reg1}"),
     (else_try),
      (agent_get_horse, ":has_horse", ":target"),
       (neq, ":has_horse", -1),
       (str_store_string, s1, "@You cannot pull horsemen! Distance: {reg1}"),
     (else_try),
      (agent_is_alive, ":target"),
      (agent_set_position, ":target", pos2),
       (str_store_string, s1, "@Pulled {s0}. Distance: {reg1}"),
     (try_end),
      (display_message, "@{s1}"),
    ])

Nasıl eklenir

Modul sistemi biliyorsunuz, at cebe. Module_mission_templates.py'yi göreceksiniz, tıklayın açın. Üstteki kodu bir trigger gibi ekleyin, herhangi bir "])" den sonra atın olduğu gibi fakat sakın ola da dosyanın çok aşağılarına inip de abuk subuk bir yere atmayın.

Code:
common_battle_victory_display = (
  10, 0, 0, [],
  [
    (eq,"$g_battle_won",1),
    (display_message,"str_msg_battle_won"),
    ])

Mesela hemen bu kodun altına atabilirsiniz. Bundan sonrası bebek işi...

Tek yapmanız gereken herhangi bir mission'ın kodlarını bulup, göstereceğim örnekte "lead_charge", yani arena ve çoklu-oyuncu modları dışında uygulanan mission protokolü.

Aşağıdaki spoiler'daki lineları bulun ve boldla işaretlediğim değişikliği yapın.

Code:
    (
    "multiplayer_dm",mtf_battle_mode,-1, #deathmatch mode
    "You lead your men to battle.",
    [
      (0,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (1,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (2,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (3,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (4,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (5,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (6,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (7,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),

      (8,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (9,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (10,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (11,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (12,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (13,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (14,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (15,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),

      (16,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (17,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (18,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (19,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (20,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (21,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (22,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (23,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),

      (24,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (25,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (26,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (27,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (28,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (29,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (30,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),
      (31,mtef_visitor_source|mtef_team_0,0,aif_start_alarmed,1,[]),

      (32,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (33,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (34,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (35,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (36,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (37,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (38,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (39,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),

      (40,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (41,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (42,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (43,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (44,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (45,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (46,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (47,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),

      (48,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (49,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (50,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (51,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (52,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (53,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (54,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (55,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),

      (56,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (57,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (58,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (59,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (60,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (61,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (62,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
      (63,mtef_visitor_source|mtef_team_1,0,aif_start_alarmed,1,[]),
     ],
    [
      #multiplayer_server_check_belfry_movement,      
     #Belendor
      [b]ranged_pull,[/b]
      multiplayer_server_check_polls,

Ve tamamdır. Her savaşa girdiğinizde bu kodun sağladığı özelliği kullanabileceksiniz.



Blizzard'a Butcher konsepti için teşekkürler, ilham kaynağım. Yakında bu kodun melee versiyonunu da yazacam.
 
Back
Top Bottom