Немного отвлеченный вопрос из области моих незнаний.
Расскажите пожалуйста про файлы CameraNode.pyc и __init__.pyc которые также присутствуют и в этом моде.
Дело в том, что эти файлы присутствуют и в других модах и модпаках, которые я устанавливаю. Эти файлы, как я заметил, имеют разный размер, сталобыть они разные.
Моды я могу устанавливать в разном порядке, скажем, сперва на основе какого то модпака я закидываю все скопом, а потом добавляю отдельные моды. Файлы с одинаковыми именами затираются. И в каком бы я их порядке не ставил на работоспособность модов это не влияет (я не замечаю разницы).
Как это работает и как правильно с ними поступать?
Это файлы загрузчики. Они могут отличаться по размеру, но функционально они делают одно и то же. __init__.pyc, например, содержит всего одну команду на питоне pass, что означает - "ничего не делать", но чтоб из текущей папки загружались скрипты этот файл необходим. CameraNode.pyc содержит команды загрузки модов из папки mods, в содержимом могут быть вариации (отсюда разный размер), но суть одинакова. Поэтому не имеет значению из какого источника вы загрузите эти файлы, главное чтоб они присутствовали. Более того, если они уже есть, то не обязательно их копировать.
Зорро, а можно мне тогда тоже? )
Я пока только начал и сейчас у меня первый затык после бинарных операций.
вот тут
class Animal(object):
def __init__(self,name):
self.name = name
zebra = Animal("Jeffrey")
print zebra.name
1) класс объект - определяет объект как объект, в смысле, как юнит, способный хранить и значение и функции, либо же имеет какой-то еще смысл?
2) ок я понимаю что в классе я определяю функцию, которая принимает два аргумента. Но почему далее ниже стоит self.name = name? Что это значит? Правое name - это второй аргумент? Или слева стоит первый аргумент.второй аргумент, а справа яхз что?
3) и в конце концов - ок, zebra.name вызывается примерно также, как dict.items. Но почему именно так... Где указано что написав zebra.name я получу именно Jeffrey?
Короче я запутался и буду о-очень благодарен за объяснение ) Или ссылку.
Я знаю: списки, словари, функции, интеграцию библиотек, бинарные операции
Остальное пока не трогал. очень извиняюсь за нищенскую терминологию, к сожалению пока путаюсь в понятиях.
class Animal:
@ staticmethod
def __init__(name):
Animal.name = name
zebra = Animal("Jeffrey")
print zebra.name
Ничего сложного.
self - нужен, чтоб иметь возможность обращаться к самому себе, т.е. self - это объект собственный и идентичен Animal в данном контексте. self кстати - просто принятая форма, вместо self можно использовать и другие названия, например если self заменить на selfy, то это тоже сработает. Если использовать декоратор @ staticmethod, то можно вообще без первого аргумента обойтись, а к методу обращаться через имя объекта, будет выглядеть так:
PHP:class Animal: @ staticmethod def __init__(name): Animal.name = name zebra = Animal("Jeffrey") print zebra.name
и кстати (object) можно опустить. В питоне всё object по умолчанию.
"Где указано что написав zebra.name я получу именно Jeffrey? "
а именно в строке self.name = name и указано.
вы передали через метод __init__ классу Animal (он же self внутри себя) аргумент (строка "Jeffrey") и присвоили его методу name, поэтому у вас zebra.name = Animal.name (self.name внутри класса) содержит строку "Jeffrey"
Вот так всё просто.
ЗЫ. Надо только тему другую для таких вопросов создавать
Какой софт нужен для написания мода?
Немного отвлеченный вопрос из области моих незнаний.
Расскажите пожалуйста про файлы CameraNode.pyc и __init__.pyc которые также присутствуют и в этом моде.
Дело в том, что эти файлы присутствуют и в других модах и модпаках, которые я устанавливаю. Эти файлы, как я заметил, имеют разный размер, сталобыть они разные.
Моды я могу устанавливать в разном порядке, скажем, сперва на основе какого то модпака я закидываю все скопом, а потом добавляю отдельные моды. Файлы с одинаковыми именами затираются. И в каком бы я их порядке не ставил на работоспособность модов это не влияет (я не замечаю разницы).
Как это работает и как правильно с ними поступать?
class Animal(object):
"""Makes cute animals."""
is_alive = True
def __init__(self, name, age):
self.name = name
self.age = age
# Add your method here!
def description(self):
print self.name
print self.age
hippo = Animal("Hujak", 1239)
hippo.description()
Ну короче. Я получил RHCE. И теперь могу вернуться к питону. Еще разок про классы:
PHP:class Animal(object): """Makes cute animals.""" is_alive = True def __init__(self, name, age): self.name = name self.age = age # Add your method here! def description(self): print self.name print self.age hippo = Animal("Hujak", 1239) hippo.description()
Почему я должен использовать print self.name а не print Animal.name?
На самом деле это одно и тоже, но практически принято писать self. В этом случае вы сможете переименовать класс без последствий.
Traceback (most recent call last):
File "python", line 16, in <module>
File "python", line 11, in description
AttributeError: type object 'Animal' has no attribute 'name'
Это если писать def description(self):
print Animal.name
print Animal.age
def description(self):
print self.name
print self.age
class Animal(object):
"""Makes cute animals."""
is_alive = True
def __init__(self, name, age):
self.name = name
self.age = age
# Add your method here!
def description(selfyrius):
print selfyrius.name
print selfyrius.age
hippo = Animal("Hujak", 1239)
hippo.description()
Ты определяешь класс как self в строке def description(self) и работаешь с ним
PHP:def description(self): print self.name print self.age
а можешь написать хоть так:
PHP:class Animal(object): """Makes cute animals.""" is_alive = True def __init__(self, name, age): self.name = name self.age = age # Add your method here! def description(selfyrius): print selfyrius.name print selfyrius.age hippo = Animal("Hujak", 1239) hippo.description()
и будет работать
Да, понятно, это обхяснено в учебнике. Мне не понятно, почему метод принимает первый аргумент - self, его значение в виде класса, но далее я могу работать только с аргументом, а с его значение напрямую не могу.
Для меня self = Animal. А раз это значение уже есть в методе и один раз он смог с ним поработать, то я предполагаю, что смогу и дальше. Но не могу.
Скажем тут:
variable1 = "a"
variable2 = "b"
variable3 = variable1
Далее мне не придется каждый раз для вывода "a" ссылаться на variable3, я с тем же успехом могу и с variable1 работать.
Я пытаюсь понять, что на самом деле делает передача аргумента self (или аргумента с любым другим именем на 1 месте, как вы заметили), зачем оно нужно в описании класса.
Я не тупой, правда ))
class Animal(object):
"""Makes cute animals."""
is_alive = True
[MENTION=16006]sTa[/MENTION]ticmethod
def __init__(name, age):
Animal.name = name
Animal.age = age
# Add your method here!
[MENTION=16006]sTa[/MENTION]ticmethod
def description():
print Animal.name
print Animal.age
hippo = Animal("Hujak", 1239)
hippo.description()
GreedoX написал(а):Привет, не подскажешь где ты искал информацию о python'е в танках?
Вот решил, для жаждущих начать писать моды, но не знающих с чего начать накропать небольшое напутствие.
О-о-о-о вопрос риторический, с миру по нитке. На самом деле, пока сам в скрипты с головой не залезешь никто те ничего объяснить не сможет. Вопрос, типа: "Как писать моды?", тут не прокатит, сам в этом убедился. Внятные ответы можно получить только на внятные вопросы. Поэтому надо залезать, а потом спрашивать, как например сделать вот так? Ну, это всё лирика, теперь серьёзно.
1. Необходимо маломальски изучить питон, ну на начальном уровне хотяб. Для этого существует куча литературы, сайтов, видеоуроков наконец. Да, процесс не быстрый, но необходимый.
2. Если с 1-м пунктом всё окей, токда тебе сюда:
БАЦ
Тут лежит самая лучшая оболочка для работы с скриптами (модами) для WOT, ну и вообще с прогами на питоне. О, спасибо тебе великий СТРАННИК (это чувак который её разработал)
Умеет она очень многое, но разбираться тебе придётся самому.
Просто кидаешь в неё скрипт и декомпилишь его - если он конечно не защищён, то откроется без проблем.
3. Дальше напрягаешь мозг и медленно, но уверенно мидитируешь над кодом.
Может что-то на ходу поймёшь, но в основном появятся те самые истинные вопросы о которых я писал выше. Но, не спеши с ними обращаться.
Есть ещё один очень хороший, но к сожалению тоже не очень лёгкий инструмент для изучения структуры питоновского движка в WOT.
4. Тебе понадобится вышеописанный ОРИОН и Нотепод++ и такая программа как WotModTools 0.5.3 multy)))
В ОРИОНе есть возможность группового декомпилирования берёшь из оригинала игры папку \World_of_Tanks\res\scripts и пропускаешь её череза ОРИОН (групповая декомпиляция скриптов) и WotModTools (распаковка .xml и dev файлов, тоже групповая). Потом получившуюся папку загоняешь в Нотепад++ всю полностью и там через минутку откроются все файлы. Для нахождения необходимой информации используй поиск во всех файлах. И потихонечку изучай движок
Вот впринципе и всё, что я могу посоветовать тебе на первом этапе
Удачи.
ZJ благодарен нужная тема, вот только ссылка не работает, или только у меня?
блокируется, гугли так...
А есть ли флешка по этому пути?ERROR: IOError: scripts/client/mods/ProArmorResist/ProArmorResist.swf
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?