PDA

Просмотр полной версии : [Вопрос] Не обновляются деньги.



Skyline
15.07.2018, 00:20
Здравствуйте, когда сажаешь игрока через команду, ни у меня ни у игрока не отнимаются сразу деньги, только при перезаходе, почему, не могу понять. Подскажите.


CMD:arrest(playerid, params[])
{
if(!player_is_authorized{playerid})
return SendClientMessage(playerid, COLOR_GREY, !"Вы не авторизировались.");

if(!IsACop(playerid))
return SendClientMessage(playerid, COLOR_GREY, !"Ты не можешь использовать эту команду.");

new id,
price,
time,
name_rang[15];

if(sscanf(params, "udddd", id, price, time))
return SendClientMessage(playerid, COLOR_GREY, !" Использование: /arrest [ID/Ник] [Штраф] [Время]");

if(IsPlayerInRangeOfPoint(playerid,4.0, 1527.5050, -1683.8716, 5.8906) || IsPlayerInRangeOfPoint(playerid,4.0, -1600.0990, 675.6537, -5.2422) || IsPlayerInRangeOfPoint(playerid,4.0, 2241.7961, 2434.4890, 10.8203) || IsPlayerInRangeOfPoint(playerid,4.0,-1514.3807, 478.7199, 7.1809) || IsPlayerInRangeOfPoint(playerid,4.0, 2585.8528, 2780.4944, 10.8203))
{
if(GetPlayerVehicleID(playerid) != GetPlayerVehicleID(id))
return SendClientMessage(playerid, COLOR_GREY, !"Этот игрок не в твоей машине.");

if(id == playerid)
return SendClientMessage(playerid, COLOR_GREY, !"Невозможное действие.");

if(0 == PlayerBesideTheOther(4.0, playerid, id))
return SendClientMessage(playerid, COLOR_GREY, !"Игрок слишком далеко от тебя.");

if(IsACop(id))
return SendClientMessage(playerid, COLOR_GREY, !"Ты не можешь посадить законника.");

if(pInfo[id][pWanted] == 0)
return SendClientMessage(playerid, COLOR_GREY, !"Игрок не в розыске.");

if(price < 500 || price > 10000)
return SendClientMessage(playerid, COLOR_GREY, !"Штраф от 500 до 10000.");

if(time < 10 || time > 60)
return SendClientMessage(playerid, COLOR_GREY, !"Время от 10 до 60.");

switch(pInfo[playerid][pMember])
{
case 1: name_rang = "Сотрудник LSPD";
case 2: name_rang = "Агент F.B.I.";
case 3: name_rang = "Служащий Армии";
case 10: name_rang = "Сотрудник LVPD";
}
switch(pInfo[playerid][pMember])
{
case 1: pInfo[id][pJail] = 1;
case 2: pInfo[id][pJail] = 2;
case 3: pInfo[id][pJail] = 3;
case 10: pInfo[id][pJail] = 10;
}
pInfo[id][pJail_Time] = time*60;

if(pInfo[id][pSex] == 1) SetPlayerSkin(id, 268);
else SetPlayerSkin(id, 63);

static const fmt_str[] = "« %s %s арестовал%s подозревае%s %s на %d минут »";
new string[sizeof(fmt_str) -12 + (MAX_PLAYER_NAME*2) - 8 + 5 + 6];
format(string, sizeof string, fmt_str, name_rang, pInfo[playerid][pName], pInfo[playerid][pSex] == 1 ? ("") : ("a"), pInfo[id][pSex] == 1 ? ("мого") : ("мую"), pInfo[id][pName], time);
SendClientMessageToAll(0x2641FEAA, string);

pInfo[id][pWanted] = 0;
SetPlayerWantedLevel(id, pInfo[id][pWanted]);

format(string, sizeof string, "Вас посадили в тюрьму на %d минут. Залог: Невозможен.", time);
SendClientMessage(id, COLOR_LBLUE, string);

GivePlayerMoney(id, -price);
pInfo[id][pMoney] -= price;

GivePlayerMoney(id, price);
pInfo[playerid][pMoney] += price;

format(string, sizeof(string), "UPDATE `accounts` SET `money` = '%i', `jail` = '%i', `jail_time` = '%i' WHERE `id` = '%i'",
pInfo[id][pMoney], pInfo[id][pJail], pInfo[id][pJail_Time], pInfo[id][pID]);
mysql_tquery(mysql_connect_ID, string, "", "");
SpawnPlayer(id);
}
else return SendClientMessage(playerid, COLOR_GREY, !"Вы не у места арреста.");
return true;
}

DeimoS
15.07.2018, 00:40
GivePlayerMoney(id, -price);
pInfo[id][pMoney] -= price;

GivePlayerMoney(id, price);
pInfo[playerid][pMoney] += price;
====>

GivePlayerMoney(id, -price);
pInfo[id][pMoney] -= price;

GivePlayerMoney(playerid, price);
pInfo[playerid][pMoney] += price;

Skyline
15.07.2018, 00:59
Тюфу, точно. Невнимателен. Спасибо.

Если можно, еще вопрос, по одной команде, чтобы тему лишний раз не создавать.

CMD:tazer(playerid)
{
if(!player_is_authorized{playerid})
return SendClientMessage(playerid, COLOR_GREY, !"Вы не авторизировались.");

if(!IsACop(playerid))
return SendClientMessage(playerid, COLOR_GREY, !"Ты не законник.");

if(IsPlayerInAnyVehicle(playerid))
return SendClientMessage(playerid, COLOR_GREY, !"В данный момент недоступно.");
new
suspect,
string[(MAX_PLAYER_NAME*2)+20];

if(Player_Tazer[suspect] > true)
return true;

if(IsPlayerNearPlayer(playerid, suspect, 2))
{
if(IsACop(suspect))
return true;

if(animation[suspect] == true)
return true;

if(Player_Tazer[suspect] == true)
return SendClientMessage(playerid, COLOR_GREY, !"Игрок уже в тазере.");

if(IsPlayerInAnyVehicle(suspect))
return SendClientMessage(playerid, COLOR_GREY, !"Игрок в транспорте.");

format(string, sizeof(string), "%s бахнул тазером %s." ,pInfo[playerid][pName], pInfo[suspect][pName]);
ProxDetector(15.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
ApplyAnimation(suspect, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
Player_Tazer[suspect] = true;
Player_Tazer_Time[suspect] = 10;
}
return 1;
}

Срабатывает только на ID 0.

Ну и в сек таймере:

if(Player_Tazer_Time[i] > 0)
{
Player_Tazer_Time[i]--;
if(Player_Tazer_Time[i] <= 0)
{
Player_Tazer[i] = false;
Player_Tazer_Time[i] = 0;
new Float: healt;
GetPlayerHealth(i, healt);
if(healt <= 14.0)
{
animation[i] = true;
ApplyAnimation(i, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
}
else ApplyAnimation(i, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 0);

}
}

Ударить могу только ID 0

Paradox
15.07.2018, 01:33
Правильно ибо у тебя suspect ровняется нулю.
Присваивай в suspect самого ближнего игрока, там уж смотри сам, какая у тебя функция отвечает за это.
И будет все работать.