Не отнимаются деньги в стандартных автоматах спранк
проблема в античите на деньги я так понимаю ?
Вид для печати
Не отнимаются деньги в стандартных автоматах спранк
проблема в античите на деньги я так понимаю ?
Именно. Скиньте его
PHP код:
public GetMoney()
{
foreach(Player, i)
{
if(IsPlayerConnected(i))
{
new money = GetPlayerMoney(i);
if(PlayerInfo[i][pMoney] > money)
{
ResetPlayerMoney(i);
GivePlayerMoney(i, PlayerInfo[i][pMoney]);
}
else if(PlayerInfo[i][pMoney] < money)
{
ResetPlayerMoney(i);
GivePlayerMoney(i, PlayerInfo[i][pMoney]);
}
}
}
return ;
}
Тут самым простым вариантом будет либо найти и удалить все автоматы с помощью RemoveBuildingForPlayer, либо опять же искать все автоматы и в найденных точках делать исключения для античита с проверкой анимации (если у игрока анимация использования автомата - не восстанавливать деньги, при этом кол-во денег не должно увеличиваться вместо уменьшения на $1).
Зачем? Достаточно сделать так
Ведь какой нам вред, если читер решит уменьшить себе число денег на руках? Пусть уменьшает! Только себе хуже сделает.PHP код:
public GetMoney()
{
foreach(Player, i)
{
if(IsPlayerConnected(i))
{
new money = GetPlayerMoney(i);
if(PlayerInfo[i][pMoney] > money)
{
ResetPlayerMoney(i);
GivePlayerMoney(i, PlayerInfo[i][pMoney]);
}
else if(PlayerInfo[i][pMoney] < money) PlayerInfo[i][pMoney] = money;
}
}
return ;
}
Да, перепутал. Знаки поменять надо
PHP код:
public GetMoney()
{
foreach(Player, i)
{
new money = GetPlayerMoney(i);
if(PlayerInfo[i][pMoney] < money)
{
ResetPlayerMoney(i);
GivePlayerMoney(i, PlayerInfo[i][pMoney]);
}
else if(PlayerInfo[i][pMoney] > money) PlayerInfo[i][pMoney] = money;
}
return ;
}
А в foreach разве нет встроенной проверки IsPlayerConnected?
это не помогло, сделал проверку на анимации как посоветовали, получилось, работает.
Но все же, мб что-то кривенько ?))
- - - Добавлено - - -PHP код:
if(newkeys == 16)
{
new animlib[32];
new animname[32];
{
if(PlayerToPoint(3.0,playerid,-2420.219, 984.578, 44.297))
{
GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,32,animname,32);
if(strcmp(animname, "VEND_USE", true) != 0)
{
PlayerInfo[playerid][pMoney] -=1;
return true;
}
}
p/s только проблемка если в этом диапазоне по 100 раз нажимать и отнимется 100$ можно сделать что бы пока анимация не завершится, повторно деньги не снимались ?) хотябы новодочку дайте))
Эмм, странно... Всё должно работать. Ну ладно.
Во-первых, зачем радиус в 3 клетки? Слишком много. Максимум - единица
Во-вторых, засеките сколько проигрывается анимация и потом отслеживайте это время с помощью GetTickCount
PHP код:
if(newkeys == 16)
{
if(GetPVarInt(playerid, "Delay") < GetTickCount()) return 1;
new animlib[32], animname[32];
if(IsPlayerInRangeOfPoint(playerid, 1.0, -2420.219, 984.578, 44.297))
{
GetAnimationName(GetPlayerAnimationIndex(playerid), animlib, sizeof(animlib), animname, sizeof(animname));
if(strcmp(animname, "VEND_USE", true) != 0)
{
PlayerInfo[playerid][pMoney] -=1;
SetPVarInt(playerid, "Delay", GetTickCount() + 5000);
return 1;
}
}
}