Current time: 23.03.2024, 07:15 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Отображение произвольного def`а на поле боя
» BattleFigures.dll
Author Message
Valery Offline

Posts: 2196
Post: #16

Wow nice!

Here is VCMI code for battle stacks order, maybe can help?

CODE
05.07.2016 01:46
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #17

Что значит как передать? Передаёшь туда указатели на один отряд и другой. this - скорей всего менеджер битвы. В чём конкретно проблема?


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
05.07.2016 01:49
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2807
Post: #18

this - это и есть менеджер битвы.
Проблема в том, что на словах я эту функцию прекрасно понимаю, но я не могу написать ее вызов, потому что не знаю как получить и передать в неё эти указатели. Я пытаюсь объяснить, что мне нужнен тупо наглядный пример, шаблон или т.п.


game bug fixes extended.dll || My Plugins || My GitHub
05.07.2016 01:59
Visit this user's website Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #19

У тебя же есть получение активного отряда. Подставь туда свои числа вместо активной стороны и номера активного отряда и получишь указатель на любой отряд. Берёшь два таких и передаёшь.
А передаются они обычно:
Code:
BattleStack *s1, *s2;
s1 = ... // получаешь какой-нибудь отряд
s2 = ... // аналогично
if (CompareStackPriority((int)battleManager, s1, s2) == 1)
{
    // твои действия
}


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
05.07.2016 02:23
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2807
Post: #20

Quote:s1 = ... // получаешь какой-нибудь отряд
Пробовал в таком духе. Не получалось. И поэтому я думал, что передаю не указатель, а занчение по этому адресу.
Code:
NOALIGN struct _BattleStack_ : public _Struct_ // размер 0x548
{
    _byte_ already_attack;    // +0 ?
Значит буду пробовать еще...

И как мне знать, передаю ли я указатель на адрес "X" или значение по этому адресу?


game bug fixes extended.dll || My Plugins || My GitHub
05.07.2016 14:52
Visit this user's website Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 622
Post: #21

указатели - геморрой, да, сколько я с ними мудохался в десятом классе..

   CALL_3(int, __thiscall, 0x464B30, o_BattleMgr_, o_BattleMgr_->stack[side][stack], o_BattleMgr_->stack[side][stack]); вроде, с работы проверить не могу
впрочем, лучше нормально объявить (через указатель на функцию, макросы, всеж, для нереюзаемого кода), но это из дома, если никто до того не поможет

если чо, могу помочь с плагином)

Upd: упс, на самом деле
CALL_3(int, __thiscall, 0x464B30, o_BattleMgr_, &(o_BattleMgr_->stack[side][stack]), &(o_BattleMgr_->stack[side][stack]) );
(This post was last modified: 05.07.2016 15:56 by feanor.)
05.07.2016 15:30
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2807
Post: #22

feanor Wrote:если чо, могу помочь с плагином)
Да. Было бы очень здорово.

Что я делаю не так? Какой инклуд я не подключил? Пишет "o_BattleMgr_: необъявленный идентификатор"

Используемые инклуды: (Click to View)

И ещё, могу ли я впихнуть в эту функцию номера стеков не с указанием стороны и стека стороны (0 ... 20 / 0 или 1), а в глобальной нумерации стеков (0 ... 41)?


game bug fixes extended.dll || My Plugins || My GitHub
05.07.2016 17:21
Visit this user's website Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 622
Post: #23

Quote:Да. Было бы очень здорово.
скинь тогда в личку, ближе к ночи посмотрю

Quote:Что я делаю не так? Какой инклуд я не подключил? Пишет "o_BattleMgr_: необъявленный идентификатор"
это я пишу вслепую. o_BattleMgr, без подчеркивания после

Quote:И ещё, могу ли я впихнуть в эту функцию номера стеков не с указанием стороны и стека стороны (0 ... 20 / 0 или 1), а в глобальной нумерации стеков (0 ... 41)?
[0][30] должно сработать
05.07.2016 18:36
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #24

(05.07.2016 14:52)igrik Wrote:  И как мне знать, передаю ли я указатель на адрес "X" или значение по этому адресу?
Если у нас есть BattleStack* foo, то:
foo это указатель на экземпляр BattleStack
*foo это экземпляр BattleStack
&foo это указатель на foo, т.е. значение типа BattleStack**.


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
05.07.2016 20:38
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group