#1 Re: Вопросы по скриптингу » Один вопрос » 14-03-2017 04:08

SliVka wrote:

$PLAYER_CHAR   это все педы в зоне стрима? Или как?  А как узнать Handle педа? Если я буду иметь Handle педа, то смогу этому педу уменьшать здоровье и прочее благодаря изменения адреса памяти?

Нет, $PLAYER_CHAR это игрок (ты),

0AD2: 1@ = player $PLAYER_CHAR targeted_actor // 1@ = пед, на которого нацелился игрок
08E5: get_actor_in_sphere 27@ 28@ 29@ radius 50.0 handle_as 0@ // 0@ = любой пед, который находится в заданной сфере

Насчёт второго немного не уверен правда
Можешь делать с ними что хочешь

#2 Re: Вопросы по скриптингу » Один вопрос » 09-03-2017 15:39

SliVka wrote:

Вот простой скрипт рабочий. Он автоматически восстанавливает хп до 100 (на деле), несмотря сколько хп у актёра (меня), хоть 99. А хотел я чтобы он восстанавливать ТОЛЬКО , когда хп ниже 20. В чём я ошибся?

{$CLEO}
0000:

:1
wait 0
0A96: 0@ = actor $PLAYER_ACTOR struct
0A8E: 5@ = 10@ + 20
0A8E: 1@ = 0@ + 0x540
repeat
wait 0
if
002D:   1@ >= 5@
then
0A8D: 2@ = read_memory 1@ size 4 virtual_protect 1
0A8C: write_memory 1@ size 4 value 100.0 virtual_protect 1
end
jump @1
until Actor.Dead($PLAYER_ACTOR)

Не пойму зачем всё так усложнять, ведь это можно реализовать с помощью стандартных опкодов, получится в 100 раз понятнее и короче

{$CLEO}
0000:
 
:MAIN
while true
    wait 0
    0226: 1@ = actor $PLAYER_ACTOR health
    if
    001B:   20 > 1@
    then
    0223: set_actor $PLAYER_ACTOR health_to 100
    end
end

#3 Re: Вопросы по скриптингу » Один вопрос » 08-03-2017 18:29

SliVka wrote:

Ну вот допустим я написал такой скрипт:

{$CLEO}
0000:
create_thread @1
:1
0001: wait 0
if
0611:   actor $PLAYER_CHAR performing_animation "WALK_CIVI"
jf @1
010D: set_player $PLAYER_CHAR wanted_level_to 6
jump @1

Вот и почему "гта не отвечает",когда уже загрузила новую игру или сохранение?? НУ что не так cry ?  Видосы смотрю обучающие. Но руки уже чешутся что-нибудь написать.

А вот так работает -

{$CLEO}
0000:
:1
0001: wait 0
if
0611: actor $PLAYER_ACTOR performing_animation "WALK_PLAYER"
jf @1
01F0: set_max_wanted_level_to 6
010D: set_player $PLAYER_CHAR wanted_level_to 6
jump @1

(ну я бы не сказал что работает стабильно, но всё же работает)0 )

Ну тут фишка в чём
Если в опкоде написано player_, то используй переменную $PLAYER_CHAR
А если написано actor_, то используй $PLAYER_ACTOR

#4 Re: Вопросы по скриптингу » Один вопрос » 08-03-2017 17:12

SliVka wrote:
05D9: AS_actor $PLAYER_CHAR run_to_actor $PLAYER_ACTOR timelimit -1 stop_within_radius 3.0

Этот опкод просто отвечает за выполнение анимации бега одного определённого актёра к другому и всё
А если ты хочешь заставить игру найти педа в определённом скине то вот вроде бы нужный опкод   -

091C: get_actor_in_sphere $TEMPVAR_FLOAT_X $TEMPVAR_FLOAT_Y $TEMPVAR_FLOAT_Z radius 1.5 model #FAM2 external_script_named "PEDSLOT" handle_as 1@

Где 1@ и есть указатель на этого педа

Мне кажется тебе не мешало бы посмотреть немного уроков по CLEO скриптингу, что тут и как делается.

#5 Re: Вопросы по скриптингу » Один вопрос » 08-03-2017 12:55

SliVka, #FAM2 это не указатель на актёра, это просто id модели, это не должно же так работать

#6 Re: Вопросы по скриптингу » Как узнать значение полоски запаса воздуха? » 04-03-2017 18:53

Придётся пока что быть извращенцем и сидеть понимать что тут к чему :с
Ну ничего, выйдет скоро полноценная VS2017 вот тогда и попробую установить ещё разок
Опять же - спасибо, какой раз уже хорошие, развёрнутые ответы

#7 Вопросы по скриптингу » Как узнать значение полоски запаса воздуха? » 04-03-2017 08:03

Zin_869731
Replies: 2

Берём например полосу ХП, её значение можно узнать (ну и собсна записать) опкодом 0226, а как узнать запас воздуха игрока?
И как можно поменять его значение?
Пытался найти что либо на эту тему в инете, по поиску опкодов SB тоже лазил, но как видите ничего я не нашёл.

#8 Re: Вопросы по скриптингу » Один вопрос » 27-02-2017 06:13

DK22Pac wrote:

проверь, можешь ли ты создавать проекты в своей студии.
File -> New -> Project... ->
Templates : Visual C++ : General : Empty Project

В той студии даже шаблонов проектов не было, но не суть
За всё это время я ставил кучу VS и все они устанавливались с какими либо ошибками, я думаю что я скорее смогу поставить винду 10 и попробовать установить на неё, чем найти хоть одну исправно работающую у меня студию.

Не думаю, что у меня есть какие либо ещё выходы кроме установки windows 10. sad
Если интересно, вот сохранившийся лог с ошибками после установки 2017 RC

#9 Re: Вопросы по скриптингу » Один вопрос » 05-02-2017 15:34

А пока я не знаю что делать с моей VS у меня зародилось ещё 2 вопроса.

Первый - DK выпускал CLEO скрипт на изменение цветов статических моделей. Есть ли способ таким образом красить совершенно любую модель? Будь то оружие какое нибудь, али человек... да что угодно)

И второй - Как изменить направление вектора вылетающей пули у оружия? Например шоб не прямо, а вбок, иль назад...

Спасибо заранее)

#10 Re: Вопросы по скриптингу » Один вопрос » 29-01-2017 05:48

DK22Pac wrote:

Zin_869731, это Visual Studio Express?
Нужна полноценная студия.

Вот всё как сказал сделал,галочки поставил,даже переустановил ещё раз. Результат такой же - не хочет совершенно работать с VC++ :с
Oj4Xukw.jpg

#11 Re: Вопросы по скриптингу » Один вопрос » 23-01-2017 12:22

DK22Pac wrote:

Нужно отразить модель по одной из оси и подровнять смещение.
Вариант реализации с plugin-sdk.

#include "plugin.h"
#include "game_sa\CModelInfo.h"

using namespace plugin;

const unsigned int MY_WEAPON_MODEL_ID = MODEL_BRASSKNUCKLE;
const RwV3d        MY_WEAPON_OFFSET   = { 0.0f, 0.0f, 0.0f };

class MyTwinWeapon {
public:
    MyTwinWeapon() {
        static CdeclEvent<
            AddressList<0x733119, H_CALL>, PRIORITY_BEFORE, ArgPickN<RpClump*, 0>, RpClump*(RpClump*)> onRenderSecondWeaponClump;

        onRenderSecondWeaponClump += [](RpClump *clump) {
            CWeaponModelInfo *weapModel = CallAndReturn<CWeaponModelInfo *, 0x732AC0>(clump);
            if (weapModel && CModelInfo::ms_modelInfoPtrs[MY_WEAPON_MODEL_ID] == weapModel) { // Если нужная модель
                RwFrame *frame = reinterpret_cast<RwFrame *>(clump->object.parent);
                RwV3d scale = { 1.0f, -1.0f, 1.0f };
                RwMatrixScale(&frame->modelling, &scale, rwCOMBINEPRECONCAT); // Масштабируем
                RwMatrixTranslate(&frame->modelling, &MY_WEAPON_OFFSET, rwCOMBINEPRECONCAT); // Смещаем
            }
        };
    }
} myTwinWeap;

Тест

#include "plugin.h"
#include "game_sa\common.h"
#include "game_sa\CStreaming.h"

using namespace plugin;

class MyTwinWeaponTest {
public:
    MyTwinWeaponTest() {
        patch::Nop(0x7330B9, 2); // Рендерим два оружия независимо от флага в weapon.dat
        Events::gameProcessEvent += [] {
            CPed *playa = FindPlayerPed();
            if(playa && KeyPressed('T')) {
                CStreaming::RequestModel(MODEL_BRASSKNUCKLE, GAME_REQUIRED);
                CStreaming::LoadAllRequestedModels(false);
                playa->GiveWeapon(WEAPON_BRASSKNUCKLE, 0, true); // Даём игроку оружие
                CStreaming::SetModelIsDeletable(MODEL_BRASSKNUCKLE);
            }
        };
    }
} myTest;

Спасибо за возможный вариант решения. Конечно прости за некоторую наглость, но не мог бы ты скинуть скомпилированные asi c вышеописанными кодами?
Просто я с VS  ваще ни разу не знаком, да и ошибок на ровном месте тоже хватает, например такая вот:
AfeAec7.jpg
VS 2015,пакет C++ тоже стоит.
Я вообще понятия не имею как её решить и соответственно продвинуться далее..

#12 Re: Вопросы по скриптингу » Один вопрос » 18-01-2017 19:58

Драсте, у меня тут вопрос есть такой, связанный со вторым оружием в левой руке, т.е  флаг TWIN_PISTOLS если так понятнее.
Короче говоря вот - у меня есть оружие,специально подстроенное только под правую руку, f мне требуется его отображать в обеих.
Когда я активирую этот флаг,то происходит то,что на картинке.
ck3Fejb.jpg
Вопрос заключается в чём собсна... как отзеркалить оружие для того,чтобы оно нормально отображалось во второй руке?
Спасибо заранее

Board footer

Powered by FluxBB