Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

გზამკვლევი: იარაღის უნარების დამატება Veloren-ში

\_ დაწერილი @Sam-ის მიერ @James-ის დამატებებით

განსაზღვრეთ თქვენი უნარი

პირველი რაც თქვენ უნდა გააკეთოთ არის განსაზღვროთ თქვენი უნარი და გაარკვიოთ რა პარამეტრები დასჭირდება მას. მნიშვნელოვანია ამის გაკეთება, რადგან ზოგჯერ ახალ უნარს შეუძლია გაუმკლავდეს პერსონაჟის ერთ-ერთ ამჟამინდელ მდგომარეობას, და თუ ის ახლოსაა, მაშინ მხოლოდ 1 ან 2 დამატებითი შეიძლება დაემატოს ადრე არსებულ პერსონაჟის მდგომარეობას.

დაამატეთ თქვენი უნარი

იარაღზე თავდასხმის უნარებს ამუშავებენ ხასიათის მდგომარეობა. რაც შეეხება ამ რედაქტირებას, ეს არის შემდეგი ხასიათის მდგომარეობები (თუმცა ComboMelee მუშაობს და TripleStrike გამოსასვლელია).

pub enum CharacterAbilityType {
      BasicMelee,
      BasicRanged,
      Boost,
      ChargedRanged,
      ChargedMelee,
      DashMelee,
      BasicBlock,
      TripleStrike(Stage),
      LeapMelee,
      SpinMelee,
  }

სიმბოლოების ეს მდგომარეობები შეიძლება იყოს (და გამოიყენება) მრავალჯერადი უნარებისთვის. თქვენი ახალი უნარი შეიძლება ადვილად მოერგოს ერთ-ერთ ამ მდგომარეობას. შესაძლოა, მდგომარეობა ოდნავ მორგებული იყოს თქვენი უნარების დასაკმაყოფილებლად. მესამე ალტერნატივა არის ახალი ხასიათის მდგომარეობის დამატება. სამივე ეს შესაძლებლობა განხილულია შემდეგ თავებში.

თუ თქვენი უნარი შეიძლება დამუშავდეს არსებული პერსონაჟის მდგომარეობით

გადადით common/src/somp/inventory/item/tool.rs-ზე

როდესაც იქ ხართ, დაამატეთ დამატებითი თავდასხმა იარაღს, რომელსაც ამატებთ შეტევას. გაითვალისწინეთ, რომ იარაღის უნარებს ამუშავებს ვექტორი, პირველი უნარი მიბმულია M1-ზე, მეორე M2-ზე, მესამე უნარების ზოლის სლოტ 1-ზე და დამატებითი უნარების ზოლის სლოტზე (მხოლოდ უნარების ზოლის სლოტი 1 შეიძლება განხორციელდეს ახლა).

თუ თქვენი უნარი მოითხოვს არსებული სიმბოლოების მდგომარეობის შეცვლას

გადადით common/src/states/-ზე.

გახსენით შესაბამისი სიმბოლოს მდგომარეობის ფაილი. მონაცემთა სტრუქტურის ზედა ნაწილში დაამატეთ თქვენთვის საჭირო დამატებითი ველები, ასევე დაგჭირდებათ მისი დამატება კოდის ყველა განყოფილებაში, რომელიც განაახლებს სიმბოლოების მდგომარეობის მონაცემებს (შემდგენელი დააგდებს შეცდომებს, თუ დაგავიწყდებათ). შემდეგ გააგრძელეთ კოდი და შეცვალეთ საჭირო ლოგიკა.

გადადით common/src/comp/ability.rs-ზე.

მოძებნეთ სად არის განსაზღვრული სიმბოლოს მდგომარეობის ველები. ისინი განსაზღვრულია 3 ადგილას. ზედა განსაზღვრავს თუ რომელი ველები იკითხება tool.rs-დან, მეორე იკითხება tool.rs-დან და მესამე აყალიბებს Data struct-ს სიმბოლოების მდგომარეობის ფაილში. ზოგჯერ შეიძლება დაგჭირდეთ მხოლოდ ახალი ველის დამატება მე-3 სექციაში, თუმცა, როგორც წესი, მოგიწევთ ახალი ველის დამატება სამივეში.

გადადით common/src/comp/inventory/item/tool.rs-ზე.

იქვე დაამატეთ თქვენი ახალი თავდასხმა თქვენთვის სასურველ იარაღზე. ასევე, თუ რომელიმე იარაღს უკვე ჰქონდა შეტევა, განაახლეთ ველები, რომ შეიცავდეს თქვენს მიერ დამატებულ ახალ ცვლადს.

თუ თქვენი უნარი მოითხოვს ახალი პერსონაჟის მდგომარეობის შექმნას

გადადით common/src/states/-ზე.

შექმენით ახალი ფაილი და მიეცით მას სახელი, რომელიც შეესაბამება თქვენ მიერ დამატებულ სიმბოლოს. შეიძლება სასარგებლო იყოს ფაილის კოპირებით დაწყება მსგავსი სიმბოლოების მდგომარეობიდან. შექმენით თქვენი პერსონაჟის მდგომარეობის ლოგიკა და დაადგინეთ, რა ველები უნდა გადავიდეს მდგომარეობაში მონაცემთა სტრუქტურის ზედა ნაწილში.

ასევე, ამ განყოფილებაში, თქვენ უნდა დაადგინოთ, რა სახის შეტევაა თქვენი პერსონაჟის მდგომარეობა. ამჟამად არსებობს სისტემები მელეული შეტევების, ჭურვებისა და აფეთქებებისთვის. მალე იქნება მხარდაჭერა შოკის ტალღებისა და სხივებისთვის. თუ თქვენ გჭირდებათ სხვა სისტემა თქვენი შეტევის მოსაგვარებლად, მომწერეთ (@Sam) დახმარებისთვის.

გადადით common/src/states/mod.rs-ზე.

დაამატეთ თქვენი პერსონაჟის მდგომარეობა ამ ფაილს, შეინახეთ ის დალაგებული ანბანის მიხედვით

გადადით common/src/comp/ability.rs-ზე.

თითოეულ ლოკაციაში დამუშავებულია ყველა სხვა სიმბოლოს მდგომარეობა, დაამატეთ თქვენი ახალი სიმბოლოს მდგომარეობა (შეიძლება სასარგებლო იყოს ფაილში მოძებნოთ „leapmelee“ ან „leap“ და უბრალოდ დაამატოთ თქვენი ხასიათის მდგომარეობა თითოეულ მდებარეობაში. ადგილები, რომლებიც ფრთხილად უნდა იყოთ თქვენს ლოგიკაზე, არის 3 ადგილი, სადაც არის განსაზღვრული თქვენი სიმბოლოს მდგომარეობის ველები (იხილეთ განყოფილება შეცვალოს სიმბოლოები რას აკეთებენ სხვა პერსონაჟები).

გადადით common/src/comp/inventory/item/tool.rs-ზე.

დაამატეთ თქვენი ახალი პერსონაჟის მდგომარეობა, როგორც თავდასხმა იმ იარაღისთვის, რომლებშიც გსურთ მისი დამატება. დარწმუნდით, რომ ამ ადგილის ველები ემთხვევა უნარების პირველ ნაწილში გადასულ ველებს.rs.

გადადით common/src/comp/character_state.rs-ზე.

დაამატეთ თქვენი პერსონაჟის მდგომარეობა CharacterState სიაში (იდეალურად შეიტანეთ მოკლე აღწერაც). შეხედეთ CharacterState-ის განხორციელებას, თუ თქვენი აღწერილია რომელიმე ფუნქციით, დაამატეთ იგი იქ.

გადადით common/src/sys/character_behavior.rs-ზე.

მოძებნეთ ნებისმიერი პერსონაჟის მდგომარეობა (მაგ. LeapMelee). დაამატეთ თქვენი პერსონაჟის მდგომარეობა იმ 2 ადგილას, სადაც სხვა სიმბოლოების მდგომარეობა მუშავდება იმავე ლოგიკით.

გადადით common/src/sys/stats.rs-ზე.

დაამატეთ ლოგიკა იმის შესახებ, თუ როგორ მოქმედებს თქვენი ხასიათის მდგომარეობა ბუნებრივ ენერგეტიკულ რეგენზე. (თუ ეს არის შეტევა ან მოიხმარს ენერგიას, უნდა გამორთოთ ბუნებრივი ენერგიის რეგენი).

უნარის დამატება უნარების ზოლში

(როდესაც უნარების ხეები განხორციელდება, ეს განყოფილება განახლდება)

იმის გამო, რომ ამჟამად დანერგილ ყველა იარაღს უკვე აქვს მინიმუმ 2 უნარი, დიდია შანსი, რომ დაგჭირდეთ თქვენი უნარის დამატება უნარების ზოლში ან გადაიტანოთ ამჟამად არსებული უნარი უნარების ზოლში.

tool.rs ფაილში, ვექტორში უნარების დალაგება განსაზღვრავს, თუ რა სლოტზე იქნება მინიჭებული. პირველი სლოტი არის M1, მეორე M2, მესამე უნარების ზოლი 1, მეოთხე უნარების ზოლი 2 და ა.შ. ასე რომ, როდესაც დაამატებთ თქვენს შესაძლებლობებს, დარწმუნდით, რომ ის სწორ მდებარეობაშია შესაძლებლობების ვექტორში.

გადადით voxygen/src/hud/hotbar.rs-ზე

დაამატეთ იარაღის ტიპი, რომელსაც თქვენ ამატებთ მესამე უნარს ლოგიკაში, როდესაც უნდა იყოს წარმოდგენილი ბოლის მნიშვნელობის განსაზღვრა. ის ისეთივე მარტივი უნდა იყოს, როგორც დამატება:

else if let ToolKind::Hammer(_) = &kind.kind {
    true
}

დაამატეთ ხატულა assets/voxygen/element/icons-ში. უნარების ხატები უნდა იყოს 20 x 20 პიქსელი გამჭვირვალე კუთხის პიქსელებით. შეამოწმეთ ქინძისთავები აქტივებში ან veloren-art არხში Discord-ზე, რომ იპოვოთ შესაბამისი ფერის პალიტა. დარეკეთ @Pfau-ზე Discord-ზე, რათა ნახოთ ვინმე უკეთეს ხატულას შეიმუშავებს თუ თქვენი დამტკიცებისთვის.

გადადით voxygen/src/hud/img_ids.rs-ზე.

140-ე სტრიქონის გარშემო არის განყოფილება, სადაც ჩამოთვლილია ყველა M1 და M2 ხატის მდებარეობა. დაამატეთ თქვენი უნარი აქ მისი ხატის ბილიკით. თუ თქვენი უნარი მიდის უნარების ზოლზე, ამის ნაცვლად დაამატეთ თქვენი უნარი/ხატი წყვილი “ხატები” განყოფილებაში 270-ე სტრიქონის გარშემო.

გადადით voxygen/src/hud/skillbar.rs-ზე.

თუ თქვენი უნარი ანაცვლებს M1 ან M2 უნარს, დაამატეთ ის მატჩს 620 ხაზის გარშემო M1-ისთვის და 700 ხაზის გარშემო M2-ისთვის.

M1-ისთვის და M2-ისთვის, დაამატეთ მკლავი შესატყვისის გამოხატულებას 730-ე სტრიქონის გარშემო, რათა უნარების ხატულა გაქრეს, როდესაც self.energy.current() თქვენი უნარების ენერგიის ხარჯვას გადააჭარბებს. თუ თქვენს უნარს არ აქვს ენერგიის გადინება (და ყოველთვის ხელმისაწვდომი უნდა იყოს), თქვენ არ გჭირდებათ თქვენი უნარი ამ მატჩში ჩართოთ.

თუ თქვენი უნარი მიდის Hotbar-ში, მიჰყევით ქვემოთ მოცემულ ნაბიჯებს:

დაამატეთ უნარ-ჩვევის სახელი და აღწერა voxygen/src/hud/skillbar.rs-ის 800-ე ხაზის გარშემო. უბრალოდ შეხედეთ ამჟამად არსებული უნარების ლოგიკას. ეს დაამატებს ინსტრუმენტს და სახელს უნარს.

გადადით voxygen/src/hud/slots.rs-ზე.

90-ე სტრიქონის გარშემო დაამატეთ თქვენი უნარი HotbarImage-ის სიაში.

120-ე სტრიქონში იარაღთან შესაბამისობა დააბრუნებს შესაბამის უნარს HotbarImage-დან.

130-ე ხაზის ირგვლივ დაამატეთ თქვენი უნარი მატჩს. დააკოპირეთ აქ ერთ-ერთი სხვა უნარის ლოგიკა, მაგრამ გააკეთეთ energy.current() < ENERGY_DRAIN სადაც ENERGY_DRAIN არის თქვენი უნარების ენერგიის გადინება. ეს გამოიწვევს ხატის გაქრობას, როდესაც მოთამაშეს არ აქვს საკმარისი გამძლეობა.

image_id ფუნქციაში 165-ე ხაზის გარშემო, დაამატეთ ბილიკის იდენტიფიკატორი თქვენი უნარისთვის (დააკოპირეთ სხვა უნარების ლოგიკა).

ანიმაციები

Ping @Slipped on Discord. თქვენ ასევე შეგიძლიათ გაეცნოთ წინა MR-ებს (როგორც ეს: https://gitlab.com/veloren/veloren/-/merge_requests/1171/diffs), თუ გსურთ ნახოთ, როგორ გააკეთოთ ეს თავად (ეს გაჩვენებთ, სად უნდა დაამატოთ პერსონალი და გაჩვენებთ, როგორ გამოიყურება სხვა ანიმაციის კოდი).

ცვლილებების ჟურნალი

გადადით CHANGELOG.md-ზე დაამატეთ ხაზი, რომელშიც ნათქვამია, რომ თქვენ დაამატეთ შეტევა