Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Анти-тп транспорта к себе

Статус
В этой теме нельзя размещать новые ответы.

Jack_Oliver

Умник
Всем привет.

Что делает это готовое решение?
Весь транспорт, который читер тп к себе - будет возращаться на позиции, где он был до начала тп.

Код:
//by Games Corp
PHP:
#include <a_samp> 


new Float:VehPos[MAX_VEHICLES][4]; 
new bool: BanCar[MAX_VEHICLES]; 
new TimeUpdate[MAX_PLAYERS]; 

forward UpdateVehiclePos(vehicleid, type); 

bool: UseCar(carid); 

public OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat) 
{ 
    new Float:Pos[3]; 
    GetVehiclePos(vehicleid, Pos[0], Pos[1], Pos[2]); 
    new Float:Count[2]; 
    Count[0] = Difference(Pos[0],VehPos[vehicleid][0]); 
    Count[1] = Difference(Pos[1],VehPos[vehicleid][1]); 
    switch(GetVehicleModel(vehicleid)) 
    { 
        case 435, 450, 584, 591, 606..608, 610..611: goto UPDATE; 
    } 
    if((Count[0] > 5 || Count[1] > 5) && !UseCar(vehicleid) && !BanCar[vehicleid]) 
    { 
        SetVehiclePos(vehicleid, VehPos[vehicleid][0], VehPos[vehicleid][1], VehPos[vehicleid][2]); 
        SetVehicleZAngle(vehicleid, VehPos[vehicleid][3]); 
    } 
    else 
    { 
        UPDATE: 
        UpdateVehiclePos(vehicleid, 0); 
    } 
    return 1; 
} 

public OnVehicleStreamIn(vehicleid, forplayerid) 
{ 
    UpdateVehiclePos(vehicleid, 0); 
    return 1; 
} 

public OnPlayerStateChange(playerid, newstate, oldstate) 
{ 
    if(newstate == PLAYER_STATE_DRIVER) SetPVarInt(playerid,"VehID",GetPlayerVehicleID(playerid)); 
    if(oldstate == PLAYER_STATE_DRIVER) 
    { 
        if(BanCar[GetPVarInt(playerid,"VehID")]) KillTimer(TimeUpdate[playerid]); 
        TimeUpdate[playerid] = SetTimerEx("UpdateVehiclePos", 10000, false, "ii", GetPVarInt(playerid,"VehID"), 1); 
        BanCar[GetPVarInt(playerid,"VehID")] = true; 
    } 
    return 1; 
} 

public UpdateVehiclePos(vehicleid, type) 
{ 
    if(type == 1) 
    { 
        BanCar[vehicleid] = false; 
    } 
    GetVehiclePos(vehicleid, VehPos[vehicleid][0], VehPos[vehicleid][1], VehPos[vehicleid][2]); 
    GetVehicleZAngle(vehicleid, VehPos[vehicleid][3]); 
    return 1; 
} 

stock Difference(Float:Value1, Float:Value2) 
{ 
    return floatround((Value1 > Value2) ? (Value1 - Value2) : (Value2 - Value1)); 
} 

stock bool: UseCar(carid) 
{ 
    for(new i; i != GetMaxPlayers(); i++) 
    { 
        if(!IsPlayerConnected(i)) continue; 
        if(IsPlayerInVehicle(i, carid)) return true; 
    } 
    return false; 
} 

stock SetVehiclePosition(vehicleid, Float:X, Float:Y, Float:Z) 
{ 
    SetVehiclePos(vehicleid ,X,Y,Z); 
    UpdateVehiclePos(vehicleid, 0); 
}
Если Вы в моде используете SetVehiclePos, то тогда внедрение кода в мод обязательно.
Все SetVehiclePos в моде необходимо заменить на SetVehiclePosition.

Баги:
Версия эксперементальная, поэтому я не уверен, что не будет ложных срабатываний.
Поэтому наказывать игрока крайне не рекомендую!
Можно ограничиться сообщением о подозрении для онлайн-администрации на сервере.

О найденных багах отписываемся в теме!

Автор: Games
Информация взята с сайта:


P.s. ставил себе на сервер, всё проверял багов нету, хоть и бета-версия.
P.s. s. не пишите такого: "что ты взял да и скопировал?!", взял это для новичков, а может и опытным пригодится, может не увидели там.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу