[MOD] RepairMod™ Dla Cienia Czarnobyla

[MOD] RepairMod™ Dla Cienia Czarnobyla

Postprzez max1071 w 23 Kwi 2017, 00:39

Witajcie :D

no to tak zaczynamy

potrzebne nam będą pliki:

> 1) gamedata\configs\misc\items.ltx
> 2) gamedata\configs\misc\death_items_by_communities.ltx
> 3) gamedata\configs\misc\death_items_by_levels.ltx
> 4) gamedata\configs\misc\death_items_count.ltx
> 5) gamedata\scripts\repair_kit.script (będzie podany kod poniżej oryginalnie nie ma go nawet w grze)
> 6) gamedata\configs\ui\ui_repair_kit.xml (również zostanie podany poniżej)
> 7) gamedata\textures\ui_icon_equipment.dds (opcjonalnie trzeba dodać do tego pliku po prostu teksturkę repair moda w sumie to ja jej nie wykonywałem przyznaję się bez bicia XD że podjedwabiłem ją z zewu prypeci :D)
> 8) gamedata\configs\text\pol\string_table_enc_equipment.xml

pierwsze dodam pliki których w ogóle nie ma w grze czyli pt. 5 i 6.

repair_kit.script:
Kod: Zaznacz wszystko
local repairPercent=1.0

function god_repair(slot)
self:repairInSlot(slot,true)
end

function load_rep_menu(what)
   if has_alife_info("ui_inventory") then
      local obj_name = what:name()
      if (string.find(obj_name, "repair_kit")) then
         local gui_win = nil
         gui_win = repair_kit_ui(get_hud())
         level.start_stop_menu(gui_win, true)
      end
   end
end

class "repair_kit_ui" (CUIScriptWnd)

function repair_kit_ui:__init(owner) super()
   self.owner=owner
   self:InitControls()
   self:InitCallBacks()
end

function repair_kit_ui:__finalize() end

function repair_kit_ui:InitControls()
   self:SetWndRect(Frect():set(50,407,344,574))
   local xml=CScriptXmlInit()
   xml:ParseFile("ui_repair_kit.xml")
   if db.actor:item_in_slot(6) and db.actor:item_in_slot(6):condition()<1 then
      self:Register(xml:Init3tButton("btn_suit",self),"btn_suit")
   end
   if db.actor:item_in_slot(1) and db.actor:item_in_slot(1):condition()<1 then
      self:Register(xml:Init3tButton("btn_leftweapon",self),"btn_leftweapon")
   end
   if db.actor:item_in_slot(2) and db.actor:item_in_slot(2):condition()<1 then
      self:Register(xml:Init3tButton("btn_rightweapon",self),"btn_rightweapon")
   end
   self:Register(xml:Init3tButton("btn_exit",self),"btn_exit")
end

function repair_kit_ui:InitCallBacks()
   self:AddCallback("btn_suit",ui_events.BUTTON_CLICKED,self.onSuit,self)
   self:AddCallback("btn_leftweapon",ui_events.BUTTON_CLICKED,self.onLeftWeapon,self)
   self:AddCallback("btn_rightweapon",ui_events.BUTTON_CLICKED,self.onRightWeapon,self)
   self:AddCallback("btn_exit",ui_events.BUTTON_CLICKED,self.onExit,self)
end

function repair_kit_ui:repairInSlot(slot,on_god)
   if on_god then
      db.actor:item_in_slot(slot):set_condition(1)
   else
      local newCondition=db.actor:item_in_slot(slot):condition()+repairPercent
      db.actor:item_in_slot(slot):set_condition(newCondition<1 and newCondition or 1)
      self:hideGUI()
   end
end

function repair_kit_ui:onSuit()
   self:repairInSlot(6)
end

function repair_kit_ui:onLeftWeapon()
   self:repairInSlot(1)
end

function repair_kit_ui:onRightWeapon()
   self:repairInSlot(2)
end

function repair_kit_ui:onExit()
   alife():create("repair_kit",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
   self:hideGUI()
end

function repair_kit_ui:hideGUI()
   self:GetHolder():start_stop_menu(self,true)
end

function repair_kit_ui:OnKeyboard(dik, keyboard_action)
   CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
   if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
      if dik == DIK_keys.DIK_ESCAPE then
         self:onExit()
      end   
   end
   return true
end


Jako że mod jest w pełni konfigurowalny to ta wartość "local repairPercent=1.0" odpowiada za stan naprawionej broni.
1.0 = 100% i im mniej tym mniej naprawione (logiczne prawda ? :D).

ui_repair_kit.xml:
Kod: Zaznacz wszystko
<repair_kit_ui>
   <btn_suit x="157" y="20" width="117" height="29" stretch="1">
      <texture_e>ui_button_ordinary_e</texture_e>
      <texture_t>ui_button_ordinary_t</texture_t>
      <texture_h>ui_button_ordinary_h</texture_h>
      <text font="graffiti19" r="238" g="155" b="23">Pancerz</text>
   </btn_suit>
   <btn_leftweapon x="20" y="69" width="117" height="29" stretch="1">
      <texture_e>ui_button_ordinary_e</texture_e>
      <texture_t>ui_button_ordinary_t</texture_t>
      <texture_h>ui_button_ordinary_h</texture_h>
      <text font="graffiti19" r="238" g="155" b="23">Lewa Broń</text>
   </btn_leftweapon>
   <btn_rightweapon x="157" y="69" width="117" height="29" stretch="1">
      <texture_e>ui_button_ordinary_e</texture_e>
      <texture_t>ui_button_ordinary_t</texture_t>
      <texture_h>ui_button_ordinary_h</texture_h>
      <text font="graffiti19" r="238" g="155" b="23">Prawa Broń</text>
   </btn_rightweapon>
   <btn_exit x="89" y="118" width="117" height="29" stretch="1">
      <texture_e>ui_button_ordinary_e</texture_e>
      <texture_t>ui_button_ordinary_t</texture_t>
      <texture_h>ui_button_ordinary_h</texture_h>
      <text font="graffiti19" r="238" g="155" b="23">Wyjdź</text>
   </btn_exit>
</repair_kit_ui>


tutaj to raczej nie mamy co zmieniać.

teraz tak: w items.ltx trzeba dodać :
Kod: Zaznacz wszystko

[repair_kit]:identity_immunities
GroupControlSection   = spawn_group
discovery_dependency   =
$spawn         = "devices\quest_items\repair_kit"
$prefetch      = 32
class         = II_ANTIR
cform         = skeleton
visual         = equipments\item_merger.ogf
radius         = 1
description      = enc_equipment_repairkit
inv_name      = repairkit
inv_name_short      = repairkit
inv_weight      = 1.0
quest_item      = false
inv_grid_width      = 2
inv_grid_height      = 2
inv_grid_x      = 10
inv_grid_y      = 33
cost         = 1500
eat_health      = 0
eat_satiety      = 0
eat_power      = 0
eat_radiation      = 0
eat_alcohol      = 0
wounds_heal_perc   = 0
eat_portions_num   = 1
animation_slot      = 4



i zapisać :P nic więcej nie trzeba chyba ze ktoś chce harda i np ustawi wartość tego kita np na 15000 RU :D

>> plik : death_items_by_communities.ltx wystarczy wpisać "repair_kit = 1" w sekcji "item_count_0"

>> plik : death_items_by_levels.ltx wystarczy wpisać "repair_kit = 1" w sekcji "default"

>> plik : death_items_count.ltx wystarczy wpisać "repair_kit = 1.0" w sekcji "stalker"

te wartości w tych plikach też można konfigurować ja ustawiłem tak by zawsze się pojawiało.

>> plik : ui_icon_equipment.dds tu są schody bo nie moge jego dodać w załączniku bo przekracza rozmiar 300KB..
o tym pliku to warto jeszcze porozmawiać..

>> plik : string_table_enc_equipment.xml

w niego wprowadzić te wartości (patrz poniżej) w sekcji "string_table" :

Kod: Zaznacz wszystko
   <string id="repairkit">
      <text>Narzędzia Naprawcze</text>
   </string>
   <string id="enc_equipment_repairkit">
      <text>Wykorzystuje się je do naprawy wyposażenia (Pistoletów, Strzelb, Karabinów, Pancerzy).</text>
   </string>


------------------------------

taki mały jeszcze edit :/

wszystko ok jest niby zrobione ?! a jak tego użyjemy ?! :D
eh.. tak to jest jak się piszę na szybko

>> plik : gamedata\scripts\bind_stalker.script

Kod: Zaznacz wszystko
function isGameOn()
   if level.present() and db.actor ~= nil and db.actor:alive() then
      return true
   end
   return false
end

to dodajmy na samej górze skryptu

Kod: Zaznacz wszystko
function actor_binder:on_item_drop (obj)
    level_tasks.proceed(self.object)
   if(obj) then
      if isGameOn() then
         if has_alife_info("ui_inventory") then
            repair_kit.load_rep_menu(obj)
         end
      end
   end
    --game_stats.update_drop_item (obj, self.object)
end

zastępujemy callback-a on_item_drop;

edit: zmiana nazwy z repair_kit.ltx na repair_kit.script

-----------
także pozdrawiam i miłego modowania :)
Max1071
Ostatnio edytowany przez max1071, 21 Lut 2018, 16:30, edytowano w sumie 1 raz

Za ten post max1071 otrzymał następujące punkty reputacji:
Positive caleb59, Marcus_Polonus, Pangia, Cromm Cruac.
Awatar użytkownika
max1071
Stalker

Posty: 135
Dołączenie: 04 Gru 2010, 13:07
Ostatnio był: 09 Cze 2023, 20:21
Frakcja: Wolność
Ulubiona broń: TRs 301
Kozaki: 23

Reklamy Google

Re: [MOD] RepairMod™ Dla Cienia Czarnobyla

Postprzez konkun11 w 18 Lut 2018, 18:38

Działa na 1.0006 GOG ? Czy można to jakoś połączyć z Atlas spawn menu ?
-------------
Co dokładnie trzeba zrobić w pliku bind_stalker.script bo jestem laikiem jeśli chodzi o modowanie tej gry.
konkun11
Kot

Posty: 5
Dołączenie: 18 Lut 2018, 14:04
Ostatnio był: 18 Sie 2020, 03:16
Kozaki: 0


Powróć do Tutoriale

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 3 gości