Ya Zaregalsya
Известный
- 370
- 127
тут почекай https://github.com/hertanion/Open-SAMPЕсть список всех существующих AnimFlags в онфут синхре?
Так и не нашёл.
Есть список всех существующих AnimFlags в онфут синхре?
union {
struct {
uint16_t id;
uint8_t frameDelta;
union {
struct {
bool loop : 1;
bool lockX : 1;
bool lockY : 1;
bool freeze : 1;
uint8_t time : 2;
uint8_t _unused : 1;
bool regular : 1;
};
uint8_t value;
} flags;
} animation;
struct {
uint16_t animationId;
uint16_t animationFlags;
};
};
Это же просто структура рпс. Ааааа!! Т.е. получается animationFlags это просто дополнительные параметры этих рпс, токо упакованные в один интеджер вот это дааа....C++:union { struct { uint16_t id; uint8_t frameDelta; union { struct { bool loop : 1; bool lockX : 1; bool lockY : 1; bool freeze : 1; uint8_t time : 2; uint8_t _unused : 1; bool regular : 1; }; uint8_t value; } flags; } animation; struct { uint16_t animationId; uint16_t animationFlags; }; };
void CPed::GiveWeapon(int nWeapon, int nAmmo) {
((void(__thiscall*)(CPed*, int, int))GetAddress(0xAA060))(this, nWeapon, nAmmo);
}
AEF00всем ку, кароче юзаю samp api, там у класса CPed для R1 есть метод GiveWeapon
а у R3-1 нету, немогли бы вы пожалуйста дать адресс этой функции у класса CPed для R3-1C++:void CPed::GiveWeapon(int nWeapon, int nAmmo) { ((void(__thiscall*)(CPed*, int, int))GetAddress(0xAA060))(this, nWeapon, nAmmo); }
Допустим про безымянные классы я кое что слышал, а можешь пояснить для чего нужны безымянные классы, у которых нет ни одного экземпляра? Как происходит обращение к ним?C++:union { struct { uint16_t id; uint8_t frameDelta; union { struct { bool loop : 1; bool lockX : 1; bool lockY : 1; bool freeze : 1; uint8_t time : 2; uint8_t _unused : 1; bool regular : 1; }; uint8_t value; } flags; } animation; struct { uint16_t animationId; uint16_t animationFlags; }; };
struct {
uint16_t animationId;
uint16_t animationFlags;
};
Обычно используются в union-ах и позволяют указать компилятору, что два больших экземпляра распологаются на одинаковом участке памятиля чего нужны безымянные классы, у которых нет ни одного экземпляра
Ничего особенного, просто как к обычным полям классаКак происходит обращение к ним?
C++:union { struct { uint16_t id; uint8_t frameDelta; union { struct { bool loop : 1; bool lockX : 1; bool lockY : 1; bool freeze : 1; uint8_t time : 2; uint8_t _unused : 1; bool regular : 1; }; uint8_t value; } flags; } animation; struct { uint16_t animationId; uint16_t animationFlags; }; };
Да в общем добавил эту байду в stOnFootData, переписал код под унионы и всё заработало как часы. Странно, что в сампфунксе изначально этого нет, постоянно приходится что-то списывать с мунлоадера, вроде делали это всё одни и те же люди, а по факту мун сделан напорядок качественнее, чем сф.Обычно используются в union-ах и позволяют указать компилятору, что два больших экземпляра распологаются на одинаковом участке памяти
Ничего особенного, просто как к обычным полям класса
эти данные стали известны гораздо позже, чем вышла последняя версия сфа на 0.3.7 R1Да в общем добавил эту байду в stOnFootData, переписал код под унионы и всё заработало как часы. Странно, что в сампфунксе изначально этого нет, постоянно приходится что-то списывать с мунлоадера, вроде делали это всё одни и те же люди, а по факту мун сделан напорядок качественнее, чем сф.
и прикреплен код:For your system/game that already has Lua or uses an in-house or pre-rolled Lua system (LuaBridge, kaguya, Luwra, etc.), but you’d still like sol3 and nice things:
#define SOL_ALL_SAFETIES_ON 1
#include <sol/sol.hpp>
#include <iostream>
int use_sol2(lua_State* L) {
sol::state_view lua(L);
lua.script("print('bark bark bark!')");
return 0;
}
int main(int, char*[]) {
std::cout << "=== opening sol::state_view on raw Lua ===" << std::endl;
lua_State* L = luaL_newstate();
luaL_openlibs(L);
lua_pushcclosure(L, &use_sol2, 0);
lua_setglobal(L, "use_sol2");
if (luaL_dostring(L, "use_sol2()")) {
lua_error(L);
return -1;
}
std::cout << std::endl;
return 0;
}
да, вполне. никаких проблем не будет.такс, нужны знания гениев, наверно те, кто делал мун подскажут, есть кароче такая штука sol3, так вот, там написанно:
вот тут
и прикреплен код:
C++:#define SOL_ALL_SAFETIES_ON 1 #include <sol/sol.hpp> #include <iostream> int use_sol2(lua_State* L) { sol::state_view lua(L); lua.script("print('bark bark bark!')"); return 0; } int main(int, char*[]) { std::cout << "=== opening sol::state_view on raw Lua ===" << std::endl; lua_State* L = luaL_newstate(); luaL_openlibs(L); lua_pushcclosure(L, &use_sol2, 0); lua_setglobal(L, "use_sol2"); if (luaL_dostring(L, "use_sol2()")) { lua_error(L); return -1; } std::cout << std::endl; return 0; }
так вот, мне интересно, можно ли будет использовать samp api из moonloader в этих sol::state`ах, если у меня будет sol3 в asi плагине который будет заинжекчен в игру с moonloader?? (если я буду использовать lua_State* как написанно в гайде)
lua.globals()["sampSendChat"]("привет")
никакойКакой пакет применим к снаряду гидры и хантера?