Другое SAMPFUNCS | API C++

CleanLegend

Известный
Всефорумный модератор
476
929
Текст конечно над головой, но динамический в плане высоты.
Чем ближе к игроку - тем текст выше.
Чем дальше от игрока - тем текст ниже и почти сравнивается с координатой кости головы.

Imgur: The magic of the Internet(https://imgur.com/a/gmodHzb)

Меня конкретно интересует, чтобы с любого расстояния текст был статичным в плане высоты.
Тогда получай координату головы и прибавляй к ней +1 :

C++:
actor_info* actorInfo = SF->getSAMP()->getPlayers()->pRemotePlayer[идИгрока]->pPlayerData->pSAMP_Actor->pGTA_Ped;
if (actorInfo == nullptr) return;
CPed* Ped = GAME->GetPools()->GetPed((DWORD*)actorInfo);
if (Ped == nullptr) return;
CVector bonePos;
Ped->GetTransformedBonePosition(BONE_HEAD2 , &bonePos);

bonePos.fZ += 1.0f
 
  • Нравится
Реакции: Rjx13

Musaigen

abobusnik
Проверенный
1,583
1,302
Есть что-то такое в SF?
Lua:
getModelDemension(modelId)
Как-то так.

И да, как отключить nametag'и игроков?
И как получить ServerPresets?
 
Последнее редактирование:

ЯedЯuM

Malware Maker
244
304
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Есть что-то такое в SF?
Lua:
getModelDemension(modelId)
Как-то так.

И да, как отключить nametag'и игроков?
И как получить ServerPresets?
Насчёт первого не понял но поройся в интерфейсе GAME->GetModelInfo(идМодели)->
Для оффа неймтагов
C++:
SF->getSAMP()->getInfo()->bNametagStatus = false;
Если не поможет то
C++:
stLocalPlayer *lp = SF->getSAMP()->getPlayers()->pLocalPlayer;
lp->Say("/nametagstatus");
Для пресетов юзай SF->getSAMP()->getInfo()->pSettings-> и получишь список полей
 

Musaigen

abobusnik
Проверенный
1,583
1,302
Насчёт первого не понял но поройся в интерфейсе GAME->GetModelInfo(идМодели)->
Для оффа неймтагов
C++:
SF->getSAMP()->getInfo()->bNametagStatus = false;
Если не поможет то
C++:
stLocalPlayer *lp = SF->getSAMP()->getPlayers()->pLocalPlayer;
lp->Say("/nametagstatus");
Для пресетов юзай SF->getSAMP()->getInfo()->pSettings-> и получишь список полей
порылся, там ничего особенного.
Неймтаги оно не оффает, лишь выключает часики, если игрок афк.
//
Как получить дистанцию между двумя точками в 2д (или 3д, не важно) пространстве?
 

CleanLegend

Известный
Всефорумный модератор
476
929
порылся, там ничего особенного.
Неймтаги оно не оффает, лишь выключает часики, если игрок афк.
//
Как получить дистанцию между двумя точками в 2д (или 3д, не важно) пространстве?
теги:
C++:
SF->getSAMP()->getInfo()->pSettings->byteShowNameTags
дистанция:
C++:
float Get3DDistance(CVector * myCoords, CVector * enemyCoords)
{
    return sqrt(
        pow(double(enemyCoords->fX - myCoords->fX), 2.0) +
        pow(double(enemyCoords->fY - myCoords->fY), 2.0) +
        pow(double(enemyCoords->fZ - myCoords->fZ), 2.0));

}
 

Akatosh

Известный
21
0
Во время процедуры выхода из игры (/q), SAMPFUNCS запускает SFSAMP.IsInitialized, во время которой запускается часть SFSAMP.takeScreenshot. Можете объяснить, для чего это нужно (делать скриншот)?

u2KoN9u

takescronexit.JPG
 
Последнее редактирование:

Adder

Известный
22
0
Написал плагин, который обновляет определённые строки чата после ввода команды.
Функция работает с помощью SF->getSAMP()->getChat()->chatEntry.
Но чат не обновляет, пробовал обновить с помощью Set.iMessagesReceived = 1;
В этом случае, она обновляется, но только после того как в чат приходит ещё одна строка.
В этом случае Set.iMessagesReceived = 0; она обновляется сразу, но на время происходит не плохая просадка ФПС.
Может подскажете, как ещё можно обновлять чат? Или какой-нибудь вариант без просадки ФПС
 

FYP

Известный
Администратор
1,758
5,722
Можете объяснить, для чего это нужно (делать скриншот)?
никаких скриншотов эта функция не делает.
cheat engine выдаёт адресам имена близлежащих функций с известными именами + оффсет, для упрощения навигации по коду (однако в подобном случае лишь усложняет). как видишь адреса там SFSAMP.IsInitialized+11C1 и SFSAMP.takeScreenshot+B373, что достаточно далеко (очень далеко) от этих функций и на твоём скрине вообще не они.
 

ALF

Известный
Проверенный
320
537
Написал плагин, который обновляет определённые строки чата после ввода команды.
Функция работает с помощью SF->getSAMP()->getChat()->chatEntry.
Но чат не обновляет, пробовал обновить с помощью Set.iMessagesReceived = 1;
В этом случае, она обновляется, но только после того как в чат приходит ещё одна строка.
В этом случае Set.iMessagesReceived = 0; она обновляется сразу, но на время происходит не плохая просадка ФПС.
Может подскажете, как ещё можно обновлять чат? Или какой-нибудь вариант без просадки ФПС
Код:
SF->getSAMP()->getChat()->m_nPrevScrollBarPosition = 1;
 
  • Нравится
Реакции: Adder

-raymond-

Известный
110
9
как перевести координаты скина указанного игрока по id в экранные?