-
Не обновляются деньги.
Здравствуйте, когда сажаешь игрока через команду, ни у меня ни у игрока не отнимаются сразу деньги, только при перезаходе, почему, не могу понять. Подскажите.
Код
PHP код:
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;
}
-
PHP код:
GivePlayerMoney(id, -price);
pInfo[id][pMoney] -= price;
GivePlayerMoney(id, price);
pInfo[playerid][pMoney] += price;
====>
PHP код:
GivePlayerMoney(id, -price);
pInfo[id][pMoney] -= price;
GivePlayerMoney(playerid, price);
pInfo[playerid][pMoney] += price;
-
Тюфу, точно. Невнимателен. Спасибо.
Если можно, еще вопрос, по одной команде, чтобы тему лишний раз не создавать.
PHP код:
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.
Ну и в сек таймере:
PHP код:
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
-
Правильно ибо у тебя suspect ровняется нулю.
Присваивай в suspect самого ближнего игрока, там уж смотри сам, какая у тебя функция отвечает за это.
И будет все работать.