Тепловизор
#1

Приветствую, недавно лазил по "SA-MP wiki", и обнаружил следующее:

Quote:

Thermal ******s | - | id | slot | model | Visual effects show for all players (fix available)
Вот мне интересна выделенная строчка, что за фикс доступен, кто нибудь знает?
Reply
#2

Quote:
Originally Posted by Dreamerzzz
Посмотреть сообщение
Приветствую, недавно лазил по "SA-MP wiki", и обнаружил следующее:



Вот мне интересна выделенная строчка, что за фикс доступен, кто нибудь знает?
Это значит что будет доступно в будущем.
Reply
#3

Я думаю, что это про fixes.inc
Reply
#4

Нет, available - это УЖЕ доступен. А в fixes только название модели кооректное исправили в функции GetWeaponName. Фикс я делал когда-то для ночного видения и для этого, но я не помню уже, на чём он был основан. Главная идея - рассинхронизация. Возможно, в onplayerupdate return 0 при надевании, а потом spawnplayer при снятии.
Reply
#5

Как вариант использовать GetPlayerKeys в OnPlayerUpdate, и если в руках тепловизор && нажата лкм -> return 0
Reply
#6

Или при нажатии SetPlayerArmedWeapon... Надо пробовать))
Reply
#7

Оу! Хорошая дискуссия и варианты) Отвлечемся от mySQL и т.д. обсуждаем обычный тепловизер)
Reply
#8

У клиента(В самой GTA) это банально лечится хуком, правда очечи игроку не крепятся, да и это не так критично с учётом их не синхронизированости.
PHP код:
DWORD HOOKPOS_FixNTV 0x634F60;
DWORD HOOKRET_FixNTV 0x634F65;
DWORD HOOKRET2_FixNTV 0x634F7C;
void _declspec naked HOOK_FixNTV()
{
    
__asm
    
{    
        
push esi//хвост
        
mov esi, [esp 0x8]//хвост
        
mov edi0XB6F5F0//Положим указатель на CPed (Сам игрок)
        
cmp esi, [edi]//Сравним CPed-ы
        
jne fixcode//Если CPed одевшего очки не равен CPed игрока, выпрыгиваем из функции
        
jmp HOOKRET_FixNTV        
    fixcode
:
        
jmp HOOKRET2_FixNTV
    
}

Reply
#9

Должно работать.
pawn Код:
public OnPlayerUpdate(playerid)
{
    new weaponid = GetPlayerWeapon(playerid);

    if (weaponid == 43 || weaponid == 44 || weaponid == 45) {
        new key[3];
        GetPlayerKeys(playerid, key[0], key[1], key[2]);
       
        if (key[0] & KEY_FIRE) {
            return 0;
        }
    }
    return 1;
}
Reply
#10

Quote:
Originally Posted by ZiGGi
Посмотреть сообщение
Должно работать.
pawn Код:
public OnPlayerUpdate(playerid)
{
    new weaponid = GetPlayerWeapon(playerid);

    if (weaponid == 43 || weaponid == 44 || weaponid == 45) {
        new key[3];
        GetPlayerKeys(playerid, key[0], key[1], key[2]);
       
        if (key[0] & KEY_FIRE) {
            return 0;
        }
    }
    return 1;
}
В машине если заюзать в рассинхрон улетит же игрок.
Reply
#11

Раньше можно было рассинхронизировать отдельную модель оружия для всего сервера. Сейчас эту функцию убрали, грусть, печаль, тоска.
Reply
#12

pawn Код:
public OnPlayerUpdate(playerid)
{
    switch(GetPlayerWeapon(playerid))
    {
      case 44, 45:
      {
        new keys, ud, lr;
        GetPlayerKeys(playerid, keys, ud, lr);
        if((keys & KEY_FIRE) && (!IsPlayerInAnyVehicle(playerid)))
            {
              return 0;
            }
        }
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)