[XP] Czar prowokacji - Wersja do druku
Ultima Forum
[XP] Czar prowokacji - Wersja do druku

+- Ultima Forum (https://forum.ultimateam.pl)
+-- Dział: RPG Maker (/Forum-RPG-Maker)
+--- Dział: Wsparcie (/Forum-Wsparcie)
+--- Wątek: [XP] Czar prowokacji (/Thread-XP-Czar-prowokacji)



Czar prowokacji - Dakla - 09-10-16 22:51

Witam.
Wie ktoś, jak stworzyć czar prowokacji działający na takiej zasadzie:
Rzucasz czar prowokacja który ma ileś procent (do ustawienia) na sprowokowanie wroga który przez ileś (także do ustawienia) rund atakuje osobę używającą czar.


RE: Czar prowokacji - Mateusz SSJ8 - 14-10-16 17:24

No to masz problem, bo standard RPG Makera XP nie przewiduje zależności między stanem i tym, który go wywołuje. Będziesz musiał zaprogramować klasę "Game_State" odpowiadającą za konkretny status i zaprogramować możliwość, żeby potraktowany tym stanem atakował tylko tego, kto ten stan rzucił. Trzeba będzie przerobić atak, skilla i item, bo te trzy akcje zadają jakieś stany.


RE: Czar prowokacji - AlmostNoRuby - 14-10-16 19:59

Cytat:Napisane przez Mateusz SSJ8 - Dzisiaj 17:24
No to masz problem, bo standard RPG Makera XP nie przewiduje zależności między stanem i tym, który go wywołuje. Będziesz musiał zaprogramować klasę "Game_State" odpowiadającą za konkretny status i zaprogramować możliwość, żeby potraktowany tym stanem atakował tylko tego, kto ten stan rzucił. Trzeba będzie przerobić atak, skilla i item, bo te trzy akcje zadają jakieś stany.
Teoretycznie, tak. Nie trzeba by było aż tworzyć nowej klasy ani aliasować nie wiadomo czego. Wystarczy:
  1. Utworzyć umiejętność o nazwie "Prowokacja" i ustalić jego użycie jako typowe zdarzenie
  2. Zdobyć z Arrow_Enemy zdobytego przeciwnika i zapisać go np. do zmiennej $game_variables[x], gdzie x oznacza numer. Z tych fragmentów kodu:
    Spoiler: (Otwórz)
    Trzeba zapisać przy na końcu każdego if Input.repeat? zmienną @index do zmiennej
  3. Zapisać skądeś kto atakował również do której z zmiennych $game_variables[x]
  4. Włączyć przełącznik odpowiedzialny za jednego z 8 dostępnych podczas walki przeciwników.
  5. Ustalić warunek w przeciwniku: Jeżeli przełącznik [...]=PRAWDA to umiejętność, np. "Wkurzenie",
  6. Ustawić umiejętność przeciwnika, np. "Wkurzenie" jako kolejne zdarzenie typowe.
  7. Pokazać animację ataku na konkretnym bohaterze ustalonej wcześniej zmiennej i obliczyć obrażenia,
    Spoiler: (Otwórz)
  8. Zadać obrażenia
  9. Pomnożyć wszystkich przeciwników razy 8.

...i tyle, to wersja z najmniejszą liczbą kombinowania w Ruby i najmniej awaryjna.


RE: Czar prowokacji - Yoroiookami - 14-10-16 20:07

http://forum.chaos-project.com/index.php?topic=11614.0
Proszę, tutaj zrobili coś takiego. smiles

Sam skrypt
Kod:
#===============================================================================​
# Taunt States
# Version 1.0
# Author game_guy
#-------------------------------------------------------------------------------
# Intro:
# When Taunting an enemy, the taunter has a higher chance of being attacked
# by all enemies. This script, rather than using skills, it uses states to
# control the taunt levels.
#
# Features:
# Customizable Taunt States
# Can Even Be Used to Avoid Attacks
#
# Instructions:
# Hop down to the CONFIGURE STATES area and you'll add your state and taunt
# configurations there. Taunt can be reversed to also Avoid attacks. To do
# this, simply set the taunt level to a negative number. The number you assign
# to the state, is the number of times it'll add/remove the member to the
# roullette when being attacked by enemies.
#
# Now to have an actor "taunt" the enemies, all you need to do is give him a
# taunt state, which can easily be done through skills or items.
#
# Credits:
# game_guy ~ Creation of this fine script.
# GrimTrigger ~ For requesting it.
#===============================================================================​
module TauntStates
  STATES = {
  #=========================
  # CONFIGURE STATES
  # -Add new lines.
  # state_id => taunt_level,
  #=========================
    17 => 1,
    18 => 2,
    19 => 4,
    20 => -4,
  }
end

class Game_Actor < Game_Battler
  def calculate_taunt
    taunt = 0
    TauntStates::STATES.each {|key, value|
      taunt += value if @states.include(key)}
    return taunt
  end
end

class Game_Party
  def random_target_actor(hp0 = false)
    roulette = []
    for actor in @actors
      if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
        position = $data_classes[actor.class_id].position
        n = [4 - position + actor.calculate_taunt, 1].max
        n.times do
          roulette.push(actor)
        end
      end
    end
    if roulette.size == 0
      return nil
    end
    return roulette[rand(roulette.size)]
  end
end



RE: Czar prowokacji - AlmostNoRuby - 15-10-16 10:01

Gdy ja wpisywałem w Google to wyskakiwało wszystko inne niż RMXP...


RE: Czar prowokacji - Dakla - 15-10-16 21:36

Yoroiookami wielkie dzięki za skrypt :) na pewno się przyda.

AlmostNoRuby dzięki za próbę rozwiązania problemu (choć w ruby jestem zielony, i i tak nic bym nie zrobił)

Ogólnie skrypt mi działa, nie widzę żadnych błędów (jeśli będą w razie czego się odezwę).


RE: Czar prowokacji - AlmostNoRuby - 15-10-16 22:23

Ja tam Ruby uczyłem się z włączonym co chwilę poradnikiem, dużo czasu, i coś czuję, że JavaScript pójdźcie mi jeszcze gorzej. Ja kiedyś głównie zajmowałem się zdarzeniami, może jakieś zostały na starym laptopie... ale mniejsza. Wiem, że "RM level hard" nie jest dla każdego ;) gdybyś nie dał rady, i tak bym ci jakoś pomógł, i tak. A że niektórzy są bardziej obeznani bo wciągnęło ich do forum WIELKIE UT i pomagają na potęgę bo umią to inna bajki...
Często gdy piszę odpowiedzi to wpada coś co ślina na język przyniesie.