Jack_Oliver
Умник
Всем привет.
Что делает это готовое решение?
Весь транспорт, который читер тп к себе - будет возращаться на позиции, где он был до начала тп.
Код:
//by Games Corp
Если Вы в моде используете SetVehiclePos, то тогда внедрение кода в мод обязательно.
Все SetVehiclePos в моде необходимо заменить на SetVehiclePosition.
Баги:
Версия эксперементальная, поэтому я не уверен, что не будет ложных срабатываний.
Поэтому наказывать игрока крайне не рекомендую!
Можно ограничиться сообщением о подозрении для онлайн-администрации на сервере.
О найденных багах отписываемся в теме!
Автор: Games
Информация взята с сайта:
P.s. ставил себе на сервер, всё проверял багов нету, хоть и бета-версия.
P.s. s. не пишите такого: "что ты взял да и скопировал?!", взял это для новичков, а может и опытным пригодится, может не увидели там.
Что делает это готовое решение?
Весь транспорт, который читер тп к себе - будет возращаться на позиции, где он был до начала тп.
Код:
//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 в моде необходимо заменить на SetVehiclePosition.
Баги:
Версия эксперементальная, поэтому я не уверен, что не будет ложных срабатываний.
Поэтому наказывать игрока крайне не рекомендую!
Можно ограничиться сообщением о подозрении для онлайн-администрации на сервере.
О найденных багах отписываемся в теме!
Автор: Games
Информация взята с сайта:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
P.s. ставил себе на сервер, всё проверял багов нету, хоть и бета-версия.
P.s. s. не пишите такого: "что ты взял да и скопировал?!", взял это для новичков, а может и опытным пригодится, может не увидели там.
Последнее редактирование:
