RolePlay-S

RolePlay-S 0.4.7

Lazi Ness

Модостроитель
Автор модов
Регистрация
29.05.2024
Темы
1
Сообщения
341
Реакции
265
Делает множитель динамическим.
Вот и все.
И в коде и в событиях, просто выставляй self.stat["Exp_Global_Modifier"] = любое значение
А потом возвращай когда надо.
В месте, где дается опыт абсолютный - там пусть будет равно 1, а в обычных фреймах пусть возвращается в зависимость от уровня.
То есть, во всех своих местах, где дается абсолютный опыт, путь будет

старое число = self.stat["Exp_Global_Modifier"]
self.stat["Exp_Global_Modifier"] = число
gain_exp(число абсолютного опыта)
self.stat["Exp_Global_Modifier"] = старое число
И старое число пусть обновляется в handle by step... До нормы по уровню.

Оно просто позволяет управлять коэффициентом получения опыта из любого места кода путем введения команды:
$game_player.actor.stat["Exp_Global_Modifier"] = некое число.
не, не знаю как мне этим кодом пользоваться, ничего не понял, я сделаю просто вот так как-нибудь:
Ruby:
    def Batch_tmpBouns(value)
        value = 0.1 + ($game_player.actor.level * 0.01)
    end
   
    tmpBouns = Batch_tmpBouns(tmpBouns)
 

AleDerXan

Модостроитель
Автор модов
Регистрация
20.06.2024
Темы
6
Сообщения
464
Реакции
221
Возраст
32
А можно еще круче…
Ща покажу.
Ruby:
class Game_Actor < Game_Battler
 
    alias_method(:gain_exp_role_play, :gain_exp)
 
    def gain_exp(exp, mult=true)
        if mult
            self.stat["Exp_Global_Modifier"] = self.stat["Exp_Global_Modifier"].to_f
            exp = exp * self.stat["Exp_Global_Modifier"]
        end
        gain_exp_role_play(exp)
    end

end

И потом в своих командах на добавление опыта вводить не
gain_exp(exp)
А
gain_exp(exp) - для относительного уровня
gain_exp(exp, false) - для абсолютного.
 

AleDerXan

Модостроитель
Автор модов
Регистрация
20.06.2024
Темы
6
Сообщения
464
Реакции
221
Возраст
32
не, не знаю как мне этим кодом пользоваться, ничего не понял, я сделаю просто вот так как-нибудь:
Ruby:
    def Batch_tmpBouns(value)
        value = 0.1 + ($game_player.actor.level * 0.01)
    end
 
    tmpBouns = Batch_tmpBouns(tmpBouns)
И будет просто дофигища файлов?
Ты знаешь что это такое?
Это значит что твой мод будет в будущем пипец тяжко переносить на новые версии. И будет дофига конфликтов с модами которые тоже редачат эти файлы.
Если тебе надо поменять опыт, то и нужно менять опыт. А не мешать другим модам менять в этих файлах что-то свое иное.
 

AleDerXan

Модостроитель
Автор модов
Регистрация
20.06.2024
Темы
6
Сообщения
464
Реакции
221
Возраст
32
не, не знаю как мне этим кодом пользоваться, ничего не понял……………
Сделай тогда вот так:
Ruby:
class Game_Actor < Game_Battler
 
    alias_method(:gain_exp_role_play, :gain_exp)
 
    def gain_exp(exp, mult=true)
        if mult
            exp = exp * ( 0.1 + (self.level * 0.01) )
        end
        gain_exp_role_play(exp)
    end

end

Тогда относительное добавление будет по умолчанию использоваться.
И лишь использование
gain_exp(exp, false) - будет давать абсолютное значение опыта.
 

Lazi Ness

Модостроитель
Автор модов
Регистрация
29.05.2024
Темы
1
Сообщения
341
Реакции
265
А можно еще круче…
Ща покажу.
Ruby:
class Game_Actor < Game_Battler
 
    alias_method(:gain_exp_role_play, :gain_exp)
 
    def gain_exp(exp, mult=true)
        if mult
            self.stat["Exp_Global_Modifier"] = self.stat["Exp_Global_Modifier"].to_f
            exp = exp * self.stat["Exp_Global_Modifier"]
        end
        gain_exp_role_play(exp)
    end

end

И потом в своих командах на добавление опыта вводить не
gain_exp(exp)
А
gain_exp(exp) - для относительного уровня
gain_exp(exp, false) - для абсолютного.
ну то есть этот код никак не будет влиять на команды вроде "$game_player.actor.gain_exp(tmpExp)" в самой игре?
gain_exp(exp) - вот этот ведь по умолчанию абсолютный? gain_exp(exp, false) - нужно прописать во всех местах кроме, кроме тех скриптов в Batch папке?
расскажи про - self.stat["Exp_Global_Modifier"] - где это должно хранится? у меня плохой опыт с гребанными статами, и кажется я уже говорил как отношусь к массивам?))
 

Lazi Ness

Модостроитель
Автор модов
Регистрация
29.05.2024
Темы
1
Сообщения
341
Реакции
265
И будет просто дофигища файлов?
Ты знаешь что это такое?
Это значит что твой мод будет в будущем пипец тяжко переносить на новые версии. И будет дофига конфликтов с модами которые тоже редачат эти файлы.
Если тебе надо поменять опыт, то и нужно менять опыт. А не мешать другим модам менять в этих файлах что-то свое иное.
ну да, я не хочу дофигищу файлов и всячески стараюсь этого избежать -___-
 

AleDerXan

Модостроитель
Автор модов
Регистрация
20.06.2024
Темы
6
Сообщения
464
Реакции
221
Возраст
32
ну то есть этот код никак не будет влиять на команды вроде "$game_player.actor.gain_exp(tmpExp)" в самой игре?
gain_exp(exp) - вот этот ведь по умолчанию абсолютный? gain_exp(exp, false) - нужно прописать во всех местах кроме, кроме тех скриптов в Batch папке?
расскажи про - self.stat["Exp_Global_Modifier"] - где это должно хранится? у меня плохой опыт с гребанными статами, и кажется я уже говорил как отношусь к массивам?))
Смотри тут какая фишка.
Этот код делает добавление опыта везде по умолчанию - относительным.
И чтоб использовать абсолютное - требуется уточнение с false.
Но я так понял, у тебя и так везде практически относительное.
 

Lazi Ness

Модостроитель
Автор модов
Регистрация
29.05.2024
Темы
1
Сообщения
341
Реакции
265
Сделай тогда вот так:
Ruby:
class Game_Actor < Game_Battler
 
    alias_method(:gain_exp_role_play, :gain_exp)
 
    def gain_exp(exp, mult=true)
        if mult
            exp = exp * ( 0.1 + (self.level * 0.01) )
        end
        gain_exp_role_play(exp)
    end

end

Тогда относительное добавление будет по умолчанию использоваться.
И лишь использование
gain_exp(exp, false) - будет давать абсолютное значение опыта.
этот мне нравится намного больше.))
 

Lazi Ness

Модостроитель
Автор модов
Регистрация
29.05.2024
Темы
1
Сообщения
341
Реакции
265
Смотри тут какая фишка.
Этот код делает добавление опыта везде по умолчанию - относительным.
И чтоб использовать абсолютное - требуется уточнение с false.
Но я так понял, у тебя и так везде практически относительное.
не совсем... как бы? в общем, опыт за квесты у меня считает вот так:
Ruby:
def optain_exp(temp_exp)
        temp_exp = sigmoid_exp(temp_exp)
        SndLib.sys_LvUp
        $game_map.popup(0,"EXP+#{temp_exp}",0,0)
        $game_player.actor.gain_exp(temp_exp)
    end
    
    def sigmoid_exp(exp_output) #0.45 - предел 24к для 1600, 0.66 - 16к
        player_level = $game_player.actor.level
        exp_amount = (exp_output / 5) * (7 / (0.45 + Math.exp(-0.1 * (player_level - 25))) - 0.5)
        exp_amount.round(-1)
    end
 

Lazi Ness

Модостроитель
Автор модов
Регистрация
29.05.2024
Темы
1
Сообщения
341
Реакции
265
Смотри тут какая фишка.
Этот код делает добавление опыта везде по умолчанию - относительным.
И чтоб использовать абсолютное - требуется уточнение с false.
Но я так понял, у тебя и так везде практически относительное.
и как, в таком случае, будет работать опыт с мобов и от стамины?
 

AleDerXan

Модостроитель
Автор модов
Регистрация
20.06.2024
Темы
6
Сообщения
464
Реакции
221
Возраст
32
не совсем... как бы? в общем, опыт за квесты у меня считает вот так:
Ruby:
def optain_exp(temp_exp)
        temp_exp = sigmoid_exp(temp_exp)
        SndLib.sys_LvUp
        $game_map.popup(0,"EXP+#{temp_exp}",0,0)
        $game_player.actor.gain_exp(temp_exp)
    end
   
    def sigmoid_exp(exp_output) #0.45 - предел 24к для 1600, 0.66 - 16к
        player_level = $game_player.actor.level
        exp_amount = (exp_output / 5) * (7 / (0.45 + Math.exp(-0.1 * (player_level - 25))) - 0.5)
        exp_amount.round(-1)
    end
Ruby:
def optain_exp(temp_exp)
        temp_exp = sigmoid_exp(temp_exp)
        SndLib.sys_LvUp
        $game_map.popup(0,"EXP+#{temp_exp}",0,0)
        $game_player.actor.gain_exp(temp_exp,false)
    end
   
    def sigmoid_exp(exp_output) #0.45 - предел 24к для 1600, 0.66 - 16к
        player_level = $game_player.actor.level
        exp_amount = (exp_output / 5) * (7 / (0.45 + Math.exp(-0.1 * (player_level - 25))) - 0.5)
        exp_amount.round(-1)
    end
 
Сверху Снизу