Hello everyone!
I do modostroeniya by The Fall relatively recently, there have been various attempts to make it a fashion,
and all hands did not reach. Since the information in Russian on modostroeniya relatively small, I decided
document their fixes, so to speak, for those who want, but can not figure out. I took as a basis version
Russobita from 1.10 to established Derfflinger v.7.4 and Freedom 2.0
In this article I will try to put on a character belt!
We all know that times are character can not wear because nowhere.
So, take as a basis the easiest times are: http://fall.pro-d.ru/db/other/belt/
its code scripts/itemdata/items.py:
create_item_type(typeid='SET_BELT')
objects.set_attribute(object='SET_BELT', attribute = "name", value = globaltext.SET_BELT_NAME)
objects.set_attribute (object = 'SET_BELT', attribute = "hint", value = globaltext.SET_BELT_HINT)
objects.set_attribute (object = 'SET_BELT', attribute = "resourceui", value = 'RES_ITEM65X32_MISCITEM_BELT')
objects.set_attribute (object = 'SET_BELT', attribute = "resource3d", value = 'RES3D_BELT')
objects.set_attribute (object = 'SET_BELT', attribute = "value", value = 2.0)
objects.set_attribute (object = 'SET_BELT', attribute = "weight", value = 0.2)
objects.set_attribute (object = 'SET_BELT', attribute = "stacking ", value = 1)
The next line specifies which slot it will be put on:
objects.set_attribute (object = 'SET_BELT', attribute =" occupied_slots ", value = [" belt "]) < br>
And now you can put it in the game. But we sense from the belt if no useful it does not carry?
Let it gives us at least 10 strength 5 Agility and 30 medicine. Belt countries, yes. :)
Come up with something otbaldovoe:
objects.set_attribute (object = 'SET_BELT', attribute = "eq_effect", value = {"strength": 10, "agility": 5, "medicine ": 30})
in scripts / object_events.py has two great features: on_equip and on_unequip. The first is triggered when the thing
dress, the second - when the shoot.
first wanted to write the handler, after I realized that you can modify the existing DR_recalculate_bonus.
Hang handler on_equip at the very end:
if objects.get_attribute (itemtype, "eq_effect"):
DR_recalculate_bonus (objectid, "eq_effect", itemtype)
on_unequip And also at the very end:
if objects.get_attribute (itemtype, " eq_effect "):
DR_recalculate_bonus (objectid," eq_effect ", None)
modify the f-th DR_recalculate_bonus:
def DR_recalculate_bonus (character_id, object_type, itemtype):
if character_id == None or object_type == None:
return
bonus.remove_temp_bonus (character_id, object_type)
if object_type == "armor_effect":
properity_table = DR_armor_bonus_calculator (character_id)
elif object_type == "implantant ":
properity_table = objects.get_att (itemtype," implantant_effect ")
elif object_type ==" eq_effect ":
properity_table = objects.get_att (itemtype," eq_effect ")
else:
properity_table = None
if properity_table:
bonus.add_temp_bonuses (character_id, properity_table, object_type)
Our "eq_effect" will apply not only to the belt, and to any itemu having attribute "eq_effect" .
Never in the game did not raise setting body. Considered it useless. Indeed, good cannon
our characters almost ogrebayut. There were at least a little idea to make it useful.
In scripts / skill_tables.py modifitsruem calculation load capacity:
def strength_max_load (strength, constitution):
"" "Returns max load (ie, max. Added weight of all inventory items) in kg.
Chars can carry more than max load, but they get penalties.
Parameters:
strength - Strength value.
constitution - Constitution value.
"" "
assert strength & gt; = 1
assert constitution & gt; = 1
weight = (strength * 3)
weight + = (constitution * 1.5)
return weight
Since the function arguments popribavilos we need to add a second where I f-called
particularly in the scripts / object_events.py:
def update_speed (character_id):
...
strength = objects.get_attribute (object = character_id, attribute = "strength")
constitution = objects.get_attribute (object = character_id, attribute = "constitution")
...
if strength == 0: rel_load = 0
else: rel_load = load / skill_tables.strength_max_load (strength, constitution)
def get_load_text (character_id):
...
constitution = objects.get_attribute (object = character_id, attribute = "constitution")
if strength & gt; 0:
relload = load / skill_tables.strength_max_load (strength, constitution)
In the same way, it can be more useful intellect, in particular for influencing mechanics conversation
trade. While on this thought :)
That's what I do not like cocktail molotov, more precisely in his craft - rags to it is necessary to look.
In his fashion, I want to increase my value to throw explosives itemov - it follows that they must be in the game
somewhere to take in sufficient quantities.
First, you need somewhere to grow roots rags under the cocktail, and since it is a cloth rag, then we cut clothes.
The one, the usual. For example: http://fall.pro-d.ru/db/armor/vest/normal_clothes_2/
In what has become a code rags scripts/itemdata/items.py:
create_item_type(typeid='SET_RAGS')
objects.set_attribute(object='SET_RAGS', attribute = "name", value = globaltext.SET_RAGS_NAME)
objects.set_attribute (object = 'SET_RAGS', attribute = "hint", value = globaltext.SET_RAGS_HINT)
objects.set_attribute (object = 'SET_RAGS', attribute = "resourceui", value = 'RES_ITEM65X32_MISCITEM_RAGS')
objects.set_attribute (object = 'SET_RAGS', attribute = "resource3d", value = 'RES3D_RAGS')
objects.set_attribute (object = 'SET_RAGS', attribute = "value", value = 1.0)
objects.set_attribute (object = 'SET_RAGS', attribute = "weight", value = 0.1)
objects.set_attribute (object = 'SET_RAGS', attribute = "stacking ", value = 10)
objects.set_attribute (object = 'SET_RAGS', attribute =" item_combination ", value = {
" difficulty_assemble ": COMBO_EVERYBODY,
" assemble_function ":" assemble_rags ",
"combination_list":
cutting ([ 'SET_NORMAL_CLOTHES_1' , 'SET_NORMAL_CLOTHES_2' , 'SET_NORMAL_CLOTHES_3' < span>, 'SET_NORMAL_CLOTHES_4' , 'SET_NORMAL_CLOTHES_5' , 'SET_NORMAL_CLOTHES_6' < / span> , 'SET_LOW_SHOES' ])})
What I did to her? I increased the amount in the stack (at us it will be a lot!) And wrote a function (see below).
Are functions that it returns the stack of arrays consisting of cutlery and items
that need to be cut. I have plans to further cutting of different meats, sewing and many others, and copy all
cutting items tedious - now in one place can only add them.
We cut all the usual clothes and sneakers. In the code, I have a function that will process the data
craft kits:
"Assemble_function": "assemble_rags",
This function is defined in the file scripts / combos.py:
def assemble_rags (character_id, items, item):
new_count = 0
exp = 0
for act_item in items:
# Do not remove our tools
if objects.get_att (act_item, 'typeid') not in CUTTING_TOOLS:
# Shoes smaller - get smaller rags
if objects.get_att (act_item, 'typeid') == 'SET_LOW_SHOES':
new_count + = 3
else:
new_count + = 5
# Each character gets chopped thing yedinichku experience.
exp + = 1
objects.remove_item_from_inventory (character_id, act_item)
while new_count & gt; 0:
objects.create_item_in_inventory (object = character_id, equipment = item)
new_count - = 1
character.add_experience (character_id, exp)
return True
The file scripts / define_globals.py:
# List of cutlery
CUTTING_TOOLS = ['SET_KNIFE','SET_THROWING_KNIFE','SET_KATANA','SET_MACHETE','SET_SHURIKEN','SET_AXE', 'SET_BIG_KNIFE' , 'SET_GIANT_KNIFE' , 'SET_PLANT_SHEARS' ]
def cutting (array_of_objects):
objs = []
for item in array_of_objects: < br> for tool in CUTTING_TOOLS:
objs.append ([item , tool])
return objs
calculates do to a time you could cut several things at once, but have not yet figured out how :)
More precisely, it is possible to do something like that in the definition of an item:
['SET_MACHETE', 'SET_NORMAL_CLOTHES_3'], ['SET_MACHETE', 'SET_NORMAL_CLOTHES_3', 'SET_NORMAL_CLOTHES_1'],
['SET_MACHETE', 'SET_NORMAL_CLOTHES_2', 'SET_NORMAL_CLOTHES_6'] and many others
Only it seems to me somehow krivokodem and I will not do that :)
Although dug code combining in object_events.py, wanted to do everything through dictionaries (python),
but swears at boot itemov in memory. I think bypassed with time.
rags we provide for themselves, left to add combinations of cocktails:
create_throw_object_type (typeid = 'SET_MOLOTOV_COCKTAIL')
...
"combination_list": [
['SET_RAGS', 'SET_BOTTLE_OF_HOOCH' ],
['SET_RAGS', 'SET_BOTTLE_OF_BOOZE'],
['SET_RAGS', 'SET_BOTTLE_OF_WHISKEY'],
['SET_RAGS', 'SET_TIN_WITH_ALCOHOL'],
['SET_RAGS', ' SET_BOTTLE_OF_GAS ']]})
Looking for ideas that you can create in a fashion useful - read that in RT mod was such a feature,
as the expo for the application of skills (not for the first, and in general). A good trick, now realize it in our.
Here is an example of theft from the pockets. In scripts / object_scripts.py:
In def on_steal (target, operator) instead give_first_use_exp (operator, "steal_item"), type the following,
although the first theft can leave :)
character.add_experience (operator, 10)
In RT modes as well expo depends on the skill, but if all undermining all steal - do not see the point,
For the expo is growing and so is very fast even with small values.