Другое С/С++ Вопрос - Ответ

sqdxi

Новичок
1
0
1) Не могли бы подсказать в чем ошибка? (Суть скрипта, чтобы при виде пикапа(иконки зеленого домика"1273" нажимал alt+enter)
В каком формате закидывать в корень? .lua?
Код:
void CalcScreenCoors(D3DXVECTOR3* vecWorld, D3DXVECTOR3* vecScreen)
{

D3DXMATRIX m((float*)(0xB6FA2C));
DWORD* dwLenX = (DWORD*)(0xC17044);
DWORD* dwLenY = (DWORD*)(0xC17048);

vecScreen->x = (vecWorld->z * m._31) + (vecWorld->y * m._21) + (vecWorld->x * m._11) + m._41;
vecScreen->y = (vecWorld->z * m._32) + (vecWorld->y * m._22) + (vecWorld->x * m._12) + m._42;
vecScreen->z = (vecWorld->z * m._33) + (vecWorld->y * m._23) + (vecWorld->x * m._13) + m._43;

double fRecip = (double)1.0 / vecScreen->z;
vecScreen->x *= (float)(fRecip * (*dwLenX));
vecScreen->y *= (float)(fRecip * (*dwLenY));
}

bool IsPickOnScreen(int p)
{

D3DXVECTOR3 vecPos;
vecPos.x = SF->getSAMP()->getInfo()->pPools->pPickup->pickup[p].fPosition[0];
vecPos.y = SF->getSAMP()->getInfo()->pPools->pPickup->pickup[p].fPosition[1];
vecPos.z = SF->getSAMP()->getInfo()->pPools->pPickup->pickup[p].fPosition[2];

D3DXVECTOR3 screenPos;
CalcScreenCoors(&vecPos, &screenPos);
if (screenPos.z < 1.f)
return false;
return true;
}



while true do
send ("Alt")
send ("Enter")
end;
end
 

trefa

3d print
Всефорумный модератор
2,107
1,264
1) Не могли бы подсказать в чем ошибка? (Суть скрипта, чтобы при виде пикапа(иконки зеленого домика"1273" нажимал alt+enter)
В каком формате закидывать в корень? .lua?
Код:
void CalcScreenCoors(D3DXVECTOR3* vecWorld, D3DXVECTOR3* vecScreen)
{

D3DXMATRIX m((float*)(0xB6FA2C));
DWORD* dwLenX = (DWORD*)(0xC17044);
DWORD* dwLenY = (DWORD*)(0xC17048);

vecScreen->x = (vecWorld->z * m._31) + (vecWorld->y * m._21) + (vecWorld->x * m._11) + m._41;
vecScreen->y = (vecWorld->z * m._32) + (vecWorld->y * m._22) + (vecWorld->x * m._12) + m._42;
vecScreen->z = (vecWorld->z * m._33) + (vecWorld->y * m._23) + (vecWorld->x * m._13) + m._43;

double fRecip = (double)1.0 / vecScreen->z;
vecScreen->x *= (float)(fRecip * (*dwLenX));
vecScreen->y *= (float)(fRecip * (*dwLenY));
}

bool IsPickOnScreen(int p)
{

D3DXVECTOR3 vecPos;
vecPos.x = SF->getSAMP()->getInfo()->pPools->pPickup->pickup[p].fPosition[0];
vecPos.y = SF->getSAMP()->getInfo()->pPools->pPickup->pickup[p].fPosition[1];
vecPos.z = SF->getSAMP()->getInfo()->pPools->pPickup->pickup[p].fPosition[2];

D3DXVECTOR3 screenPos;
CalcScreenCoors(&vecPos, &screenPos);
if (screenPos.z < 1.f)
return false;
return true;
}



while true do
send ("Alt")
send ("Enter")
end;
end
Чего? Это код cpp, какой луа.
 
  • Нравится
Реакции: r0den

bab0n

Известный
95
10
В попытках работы с .ini пробую такой код:
C++:
void CALLBACK testik(std::string param) {
    SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "Start");
    std::fstream sets("settings.ini", std::ios::out); SF->getSAMP()->getChat()->AddChatMessage(-1, "Файл открыт");
    sets << param << std::endl; SF->getSAMP()->getChat()->AddChatMessage(-1, "Записан аргумент");
    sets.close(); SF->getSAMP()->getChat()->AddChatMessage(-1, "Файл закрыт");
    SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "End");
}
C++:
SF->getSAMP()->registerChatCommand("test", testik);
Но ничего не работает, краша нет, всё выводиться что должно в сампе, но файл не заполняется.
IeAcZ.png

IeAWv.png
Хочу услышать любые советы и предположения, сразу говорю что в Cpp я не так давно, и многие локальные фразы могу не понять
 

Dark_Knight

Me, me and me.
Друг
4,078
2,096
C++:
float FloatValue = INI::GetFloat("Section","Key",sizeof(float),"C:\\Settings\\ConfigFile.ini");
INI::WriteFloat("Section","Key",23236526.562362f,"C:\\Settings\\ConfigFile.ini");
Ух ты йобана.
@#Babon
Могу посоветовать от SRTeam взять класс для работы с ини.
Вот че неплохое нашел на гитхабе
Лично сам юзаю boost::property_ptree, который умеет работать c ini, json, xml и info.
 

bab0n

Известный
95
10
Ух ты йобана.
@#Babon
Могу посоветовать от SRTeam взять класс для работы с ини.
Вот че неплохое нашел на гитхабе
Лично сам юзаю boost::property_ptree, который умеет работать c ini, json, xml и info.
Как я и говорил, с++ изучаю недавно, и многое для меня закрыто как космос. И даже в том что, на ваш взгляд просто, я буду разбираться 2 ночи
UPD: Кстати, почему не работал fstream?
 

Dark_Knight

Me, me and me.
Друг
4,078
2,096
Смотри. Если ты ставишь out, то каждый раз при открытии файла позиция для записи ставится на 0, а при app ставится в конец. Возможно ты открыл файл и держал его открытым в блокноте, а он не умеет обновлять состояние файла, если то был изменен. Юзай Notepad++, как стандартный текстовый редактор.
наверно потому что он ты написал std::ios::out, а не std::ios::in или как то так, хз
У него всё верно открывается.
 

bab0n

Известный
95
10
C++:
float FloatValue = INI::GetFloat("Section","Key",sizeof(float),"C:\\Settings\\ConfigFile.ini");
INI::WriteFloat("Section","Key",23236526.562362f,"C:\\Settings\\ConfigFile.ini");

Не понимаю почему не срабатывает, есть готовый .sf и .ini с исходным кодом чтоб я понял что и как?
C++:
void CALLBACK testik(std::string param) {

    INI::WriteInt("Section", "Key", 4, "config.ini");
    SF->getSAMP()->getChat()->AddChatMessage(-1, "Work");
}
 

loganhackerdff

Известный
868
519
Не понимаю почему не срабатывает, есть готовый .sf и .ini с исходным кодом чтоб я понял что и как?
C++:
void CALLBACK testik(std::string param) {

    INI::WriteInt("Section", "Key", 4, "config.ini");
    SF->getSAMP()->getChat()->AddChatMessage(-1, "Work");
}
путь надо к ини фалу а не название
 
  • Нравится
Реакции: bab0n

bab0n

Известный
95
10
путь надо к ини фалу а не название
Всё я смог братик, ещё раз огромное СПС <3

New:
Снова залетаю на немного простеньких вопросах
Пытаюсь датьперсонажу в руку оружие, передаваемое IDшником из /test<id>
Но никак не выходит, есть следующие идеи:
1) С памятью:
CPed +0x4F4 = [dword] Текущее оружие (RpClump)
Но понятия не имею как это использовать дальше.
2) С RPC на выдачу оружия, но она работает только со 2 запроса, тоесть оружие выдаётся, а сервер с ним взаимодействовать не может, не спасала даже задержка
C++:
void emulateRPC_giveweapon(uint32_t weapon_id, uint32_t ammo){
    BitStream bsClass;
    bsClass.Write(uint32_t(weapon_id));
    bsClass.Write(uint32_t(ammo));
    SF->getRakNet()->emulateRecvRPC(22, &bsClass);
}

emulateRPC_giveweapon(sw_id, 0);
    for(int ok; ok < 20000; ok++)
3) Возможно как то через GAME->?
 
Последнее редактирование:

AdCKuY_DpO4uLa

Адский дрочер
Друг
315
666
Всё я смог братик, ещё раз огромное СПС <3

New:
Снова залетаю на немного простеньких вопросах
Пытаюсь датьперсонажу в руку оружие, передаваемое IDшником из /test<id>
Но никак не выходит, есть следующие идеи:
1) С памятью:
CPed +0x4F4 = [dword] Текущее оружие (RpClump)
Но понятия не имею как это использовать дальше.
2) С RPC на выдачу оружия, но она работает только со 2 запроса, тоесть оружие выдаётся, а сервер с ним взаимодействовать не может, не спасала даже задержка
C++:
void emulateRPC_giveweapon(uint32_t weapon_id, uint32_t ammo){
    BitStream bsClass;
    bsClass.Write(uint32_t(weapon_id));
    bsClass.Write(uint32_t(ammo));
    SF->getRakNet()->emulateRecvRPC(22, &bsClass);
}

emulateRPC_giveweapon(sw_id, 0);
    for(int ok; ok < 20000; ok++)
3) Возможно как то через GAME->?


C++:
CWeapon *weap = PEDSELF->GiveWeapon(eWeaponType(24), 1, eWeaponSkill(100));//24 - ид оружия
weap->SetAmmoTotal(ammo);//кол-во пт
weap->SetAmmoInClip(ammo_clip);//кол-во заряженных пт