Goodie
offline
Опыт:
2,825Активность: |
Как подменить нативку?
я знаю что есть такая штука, можно подменять нативку либо дополнять их. Хук вроде. Вобщем мне нужно чтобы вместо GetKillingUnit() появлялась моя переменная. Как это реализовать? |
08.05.2013, 19:47 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
IceFog
offline
Опыт:
7,984Активность: |
Ты хочешь, чтоб эта функция возвращала твою переменную? А почему свою функцию написать не можешь? Или напрямую к ней обращаться? |
08.05.2013, 20:35 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Clamp
Lost in space
offline
Опыт:
71,158Активность: |
Clamp добавил: А вообще за такие тупые вопросы надо ввести предупреждения, всё есть в cJass мануале. |
08.05.2013, 21:17 | #3
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Goodie
offline
Опыт:
2,825Активность: |
Clamp, У меня переменная массив. забыл написать. так бы я давно юзал как делать нечего
есть такая штука hook называется, только вот как ей пользоваться и поможет ли мне она я не знаю
((код jass
unit SomeUnits[]
define <GetKillingUnit()> = SomeUnits[GetPlayerId(GetOwningPlayer(GetKillingUnit()))] )) так нельзя. У меня кричит все в редакторе вот еще
((код jass
hook GetKillingUnit GetKillingUnitZZ
unit GetKillingUnitZZ(){ BJDebugMsg("Hello World!") return SomeUnits[GetPlayerId(GetOwningPlayer(GetKillingUnit()))] } /* void GetKillingUnitZZ(){
BJDebugMsg("Hello World!") }*/ ))
Та что сверху GetKillingUnitZZ даст вылет из игры при убийстве, а та что снизу, ничего не дает, как обычно сообщение, просто выполняется Буду еще пополнять новостями, может решим проблему
Дефайн я кстати скомментил
Goodie добавил:
Проблему решил Создал дефайн:
((код jass
define <GetKillingUnit()> = GetKillingUnitZZ()
)) и функция готовая:
((код jass
unit GetKillingUnitZZ(){
ID++ BJDebugMsg(I2S(ID)) return SomeUnits[GetPlayerId(GetOwningPlayer(GetKillingUnit()))] } )) Никакого хука и так далее. Только вот...Где я прибавляю ID там числа по 800 по 1500 по 4000, почему?
Goodie добавил:
А нет, проблема не решилась Goodie добавил: Я не знаю что делать, помогите |
08.05.2013, 23:18 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
IceFog
offline
Опыт:
7,984Активность: |
У меня работает, а значит проблема у тебя в коде. Тебе поможет только отладка . |
08.05.2013, 23:38 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Goodie
offline
Опыт:
2,825Активность: |
IceFog, Покажи свой код, а не слова на ветер, хотябы половину
Goodie добавил: Логично же что я там ступил где я написал проблему решил. я заменяю GetKillingUnit() на другую функцию с использованием GetKillingUnit() вот те и ошибка Хотя все работало и я даже запускал |
09.05.2013, 00:11 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
IceFog
offline
Опыт:
7,984Активность: |
» спойлер
Когда я (игрок 1) убивал кого либо, юнит в переменной умирал. |
09.05.2013, 00:34 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Goodie
offline
Опыт:
2,825Активность: |
У тебя все не так... Мне нужно GetKillingUnit() поменять на другое. Вникаешь? на SomeUnits[GetPlayerId(GetOwningPlayer(GetKillingUnit()))] |
09.05.2013, 00:48 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
IceFog
offline
Опыт:
7,984Активность: |
А чем этот вариант тебе не подходит? |
09.05.2013, 00:59 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
#define <GetKillingUnit()> = SomeUnits[GetPlayerId(GetOwningPlayer(GetKilling##Unit()))]
Ведь так сложно дочитать абзац до конца.
ADOLF добавил:
|
09.05.2013, 01:36 | #10
+2/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|