Вопросы

За 1 payday идет сразу несколько payday

 

Спойлер

stock PayDay()
{
    new string[128];
    foreach(new i: Player)
	{
	    if(PlayerLogged[i])
	    {
			if(PI[i][pCheckTime] >= 1200 && IsThePayDayMembers(PI[i][pMember]) && !PI[i][pAdmin])
			{
				PI[i][pPayCheck] += Fraction_Pay[GetTeamID(i)][PI[i][pRank]-1];
			}
			if(PI[i][pAdmin])
			{
			    if(PI[i][pCheckTime] < 1200) SendClientMessage(i, COLOR_WHITE, "- Зарплата администратора: 0р");
			    else
			    {
					static const gAdminPay[] =
					{
						5000, 12000, 15000, 20000, 20000, 20000, 20000
					};
				    new AdminSalary = gAdminPay[PI[i][pAdmin]-1];
					GiveBankMoney(i, AdminSalary, "AdminSalary");
			    	format(string, sizeof(string), "- Зарплата администратора: {FFCC00}%dр", AdminSalary);
					SendClientMessage(i, COLOR_WHITE, string);
				}
			}
			if(PI[i][pMember])
			{
				format(string, sizeof(string), "- Зарплата: {66CC00}%dр", Fraction_Pay[GetTeamID(i)][PI[i][pRank]-1]);
				SendClientMessage(i, COLOR_WHITE, string);
				GiveBankMoney(i, Fraction_Pay[GetTeamID(i)][PI[i][pRank]-1], "PayDay");
				FracBank[9] -= Fraction_Pay[GetTeamID(i)][PI[i][pRank]-1];
				MysqlUpdateOtherInt("sfnbank", FracBank[9]);
			}
			if(MP1[0] > 0)
			{
			    format(string, sizeof(string), "- Гос. Налог: {0099FF}%dр", MP1[0]);
			    SendClientMessage(i, COLOR_WHITE, string);
			    PI[i][pBank] -= MP1[0];
				FracBank[9] += MP1[0];
				MysqlUpdateOtherInt("sfnbank", FracBank[9]);
				MysqlUpdatePlayerInt(i, "bank", PI[i][pBank]);
			}
			if(GetPlayerRooms(i))
			{
				SendClientMessage(i, COLOR_WHITE, "- Кварплата: {FFCC00}100р");
			}
			format(string, sizeof(string), "- Доп. зарплата: {0099FF}%dр", PI[i][pPayCheck]);
			SendClientMessage(i, COLOR_WHITE, string);
			FracBank[9] -= PI[i][pPayCheck];
			MysqlUpdateOtherInt("sfnbank", FracBank[9]);
			GiveBankMoney(i, PI[i][pPayCheck], "PayDay");
			format(string, sizeof(string), "- Текущий баланс счёта: {0099FF}%dр", PI[i][pBank]);
			SendClientMessage(i, COLOR_WHITE, string);
			PI[i][pPayCheck] = 0;
			PI[i][pZakon]++;
			MysqlUpdatePlayerInt(i, "paycheck", PI[i][pPayCheck]);
			MysqlUpdatePlayerInt(i, "zakon", PI[i][pZakon]);
			if(PI[i][pPhone][0] > 10)
			{
			    PI[i][pPhone][0] -= 10;
			}
			else if(PI[i][pPhone][0] <= 10)
			{
			    PI[i][pPhone][0] = 0;
			    PhoneMenuExit(i);
				CancelSelectTextDraw(i);
			}
			else
			{
			    PI[i][pPhone][0] = 0;
			    PhoneMenuExit(i);
				CancelSelectTextDraw(i);
			}

			new fmt_query[50+MAX_PLAYER_NAME];

			format(fmt_query, sizeof fmt_query, "UPDATE `accounts` SET `phone`='%d, %d' WHERE `name`='%s'", PI[i][pPhone][0], PI[i][pPhone][1], GetName(i));
			mysql_query(dbHandle, fmt_query);

			if(PI[i][pCheckTime] < 0) SendClientMessage(i, COLOR_DARKORANGE, "В этом часу Вы отыграли менее 20 минут, по этому ничего не получаете!");//убрать
			else
			{
				PI[i][pTime]++;
				MysqlUpdatePlayerInt(i, "time", PI[i][pTime]);
				PI[i][pExp]++;
			    if(PI[i][pVip] && !(PI[i][pTime] % 4)) PI[i][pExp]++;
			    format(string, sizeof(string), "- Опыт (%d из %d)", PI[i][pExp], (PI[i][pLevel]+1)*4);
			    SendClientMessage(i, COLOR_WHITE, string);
				MysqlUpdatePlayerInt(i, "exp", PI[i][pExp]);
			    if(PI[i][pExp] >= (PI[i][pLevel]+1)*4)
			    {
			        SendClientMessage(i, TEAM_BLUE_COLOR, "Ваш игровой возраст повысился!");
				    PI[i][pLevel]++;
				    PI[i][pAge]++;
				    PI[i][pExp] = 0;
				    SetPlayerScore(i, PI[i][pLevel]);
					MysqlUpdatePlayerInt(i, "level", PI[i][pLevel]);
					MysqlUpdatePlayerInt(i, "age", PI[i][pAge]);
					MysqlUpdatePlayerInt(i, "exp", PI[i][pExp]);
			    }
			    if(PI[i][pLevel] == 4 && PI[i][pExp] == 0)
				{
					if(strlen(PI[i][GOOGLEAUTH]) > 2)
					{
						GiveMoney(i, 50000);
						SendClientMessage(i, COLOR_LIME, "Вы получили {63BD4E}50000р {FFFFFF}за привязку Google Authenticator");
					}

					if(PI[i][pMailConfirmed] == 0)
						return SendClientMessage(i, C_OSNOV, "Чтобы получить вознаграждение за игрока, привяжите почту!");
					{
						if(!strcmp(PI[i][pReferal], "None", true)) { }
						else
						{
							new targetid = GetPlayerID(PI[i][pReferal]);
							if(targetid != INVALID_PLAYER_ID)
							{
								GiveMoney(targetid, 50000);
								SendClientMessage(targetid, COLOR_LIME, "Вы получили {63BD4E}50000р {FFFFFF}за приглашенного игрока");
							}
							else
							{
								STRING_GLOBAL[0] = EOS;
								format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "SELECT * FROM "T_ACCOUNTS" WHERE name = '%s'", PI[i][pReferal]);
								mysql_tquery(dbHandle, STRING_GLOBAL, "OfflineSetReferalMoney", "i", i);
							}
						}
					}
				}
			}
			PI[i][pCheckTime] = 0;
			MysqlUpdatePlayerInt(i, "checktime", PI[i][pCheckTime]);
			Conday[1] = 0;
			PlayerPlaySound(i,5203,0.0,0.0,0.0);
		}
		else SendClientMessage(i, COLOR_DARKORANGE, "Вы не авторизированы для получения зарплаты");
	}
	new hour;
	gettime(hour, _, _);
	if(hour == 3)
	{
		for(new houseid = TOTALHOUSE; houseid > 0; houseid --)
		{
			if(!strcmp("None", HouseInfo[houseid][hOwner], true)) continue;
			if(HouseInfo[houseid][hOplata] < 1)
			{
				new targetid = GetPlayerID(HouseInfo[houseid][hOwner]);
				if(targetid != INVALID_PLAYER_ID)
				{
					PI[targetid][pBank] += HouseInfo[houseid][hBuyPrice];
					PI[targetid][pSpawnChange] = 0;
					MysqlUpdatePlayerInt(targetid, "spawnchange", PI[targetid][pSpawnChange]);
					SendClientMessage(targetid, COLOR_YELLOW, "Ваш дом был продан за неуплату");
					SendClientMessage(targetid, COLOR_YELLOW, "На Ваш банковский счет возвращена стоимость дома по гос-ву");
					MysqlUpdatePlayerInt(targetid, "bank", PI[targetid][pBank]);
				}
				else
				{
					STRING_GLOBAL[0] = EOS;
					format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "SELECT * FROM "T_ACCOUNTS" WHERE name = '%s'", HouseInfo[houseid][hOwner]);
					mysql_tquery(dbHandle, STRING_GLOBAL, "OfflineClearHouse", "i", houseid);
				}
				strmid(HouseInfo[houseid][hOwner], "None", 0, strlen("None"), MAX_PLAYER_NAME);
				HouseInfo[houseid][hBuyPrice] = HouseInfo[houseid][hOplata] = HouseInfo[houseid][hGarage] = HouseInfo[houseid][hAutoDoors] = 0;
				HouseInfo[houseid][hLock] = 1;

				STRING_GLOBAL[0] = EOS;
				format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "UPDATE "T_HOUSE" SET hOwner='%s',hOplata=%d,buyprice=%d,hGarage=%d,hAutoDoors=%d,hLock=%d WHERE id=%d",
				HouseInfo[houseid][hOwner],HouseInfo[houseid][hOplata],HouseInfo[houseid][hBuyPrice],HouseInfo[houseid][hGarage],HouseInfo[houseid][hAutoDoors],HouseInfo[houseid][hLock],houseid);
				mysql_tquery(dbHandle, STRING_GLOBAL, "", "");
				UpdateHouse(houseid);
			}
			else
			{
				HouseInfo[houseid][hOplata] -= 1;
				MysqlUpdateHouseInt(houseid, "hOplata", HouseInfo[houseid][hOplata]);
			}
		}
		for(new businessid = TOTALBIZZ; businessid > 0; businessid --)
		{
			if(!strcmp("None", BizzInfo[businessid][bOwner], true)) continue;
			if(BizzInfo[businessid][bOplata] < 1)
			{
				new targetid = GetPlayerID(BizzInfo[businessid][bOwner]);
				if(targetid != INVALID_PLAYER_ID)
				{
					PI[targetid][pBank] += BizzInfo[businessid][bBuyPrice];
					SendClientMessage(targetid, COLOR_YELLOW, "Ваш бизнес был продан за неуплату");
					SendClientMessage(targetid, COLOR_YELLOW, "На Ваш банковский счет возвращена стоимость бизнеса по гос-ву");
					MysqlUpdatePlayerInt(targetid, "bank", PI[targetid][pBank]);
				}

				ClearBizz(businessid);
			}
			else
			{
				BizzInfo[businessid][bOplata] -= 1;
				MysqlUpdateBizzInt(businessid, "oplata", BizzInfo[businessid][bOplata]);
			}
		}
		for(new kvarid = 1; kvarid <= TOTALROOMS; kvarid++)
		{
		    new query[300];
			if(!strcmp("None", RoomsInfo[kvarid][rOwner], true)) continue;
			if(RoomsInfo[kvarid][rOplata] < 100)
			{
				new targetid = GetPlayerID(RoomsInfo[kvarid][rOwner]);
				if(targetid != INVALID_PLAYER_ID)
				{
					new i = GetPVarInt(targetid, "PlayerRooms");
					strmid(RoomsInfo[i][rOwner], "None", 0, strlen("None"), MAX_PLAYER_NAME);
					RoomsInfo[i][rLock] = 0;
					SetRoomsStr(i, "rOwner", "None");
					RoomsInfo[i][rOplata] = 0;
					PI[targetid][pSpawnChange] = 0;
					SendClientMessage(targetid, COLOR_YELLOW, ""cPS"Вы не оплатили электричество, ваша квартира была передана гос-ву!");
					SendClientMessage(targetid, COLOR_YELLOW, ""cPS"На ваш банковский счет возвращена стоимость дома по гос-ву");
					PI[targetid][pBank] += RoomsInfo[i][rCost];
					format(query, sizeof(query), "UPDATE "T_ROOMS" SET  rOwner = '%s', rLock = %d WHERE id = %d LIMIT 1", RoomsInfo[i][rOwner], RoomsInfo[i][rLock], i);
					mysql_tquery(dbHandle, query, "", "");
				}
				else
				{
					format(query, sizeof(query), "SELECT * FROM "T_ACCOUNTS" WHERE name = '%s'", RoomsInfo[kvarid][rOwner]);
					mysql_tquery(dbHandle, query, "OfflineClearKvar", "i", kvarid);
				}
				strmid(RoomsInfo[kvarid][rOwner], "None", 0, strlen("None"), MAX_PLAYER_NAME);
				RoomsInfo[kvarid][rLock] = 0;
				format(query, sizeof(query), "UPDATE "T_ROOMS" SET  rOwner = '%s', rLock = %d WHERE id = %d LIMIT 1", RoomsInfo[kvarid][rOwner], RoomsInfo[kvarid][rLock], kvarid);
				mysql_tquery(dbHandle, query, "", "");
			}
			else
			{
				RoomsInfo[kvarid][rOplata] -= 100;
				SetRoomsInt(kvarid, "rOplata", RoomsInfo[kvarid][rOplata]);
			}
		}
	}
	for(new bizzid = TOTALBIZZ; bizzid > 0; bizzid --)
	{
		switch(BizzInfo[bizzid][bControl])
    	{
    		case TEAM_OPG1:
			{
				FracBank[6] += BizzPay[bizzid] / 10;
				MysqlUpdateMafiaInt("lcnbank", FracBank[6]);
			}
	    	case TEAM_RSM:
			{
				FracBank[5] += BizzPay[bizzid] / 10;
				MysqlUpdateMafiaInt("yakuzabank", FracBank[5]);
			}
		}

	    if(!strcmp(BizzInfo[bizzid][bOwner], "None", true)) continue;
	    if(BizzInfo[bizzid][bLock] == 1 && BizzInfo[bizzid][bLockTime] >= 36) ClearBizz(bizzid);
	    else
	    {
	       	BizzPay[bizzid] = 0;
	       	new playerid = GetPlayerID(BizzInfo[bizzid][bOwner]);
	        if(BizzInfo[bizzid][bProduct] <= 0 || BizzInfo[bizzid][bLic] == 0)
			{
				if(playerid != INVALID_PLAYER_ID && IsPlayerConnected(playerid))
				{
					if(BizzInfo[bizzid][bLockTime] == 0)
					{
					    if(GetPlayerBizz(playerid))
						{
							SendClientMessage(playerid, COLOR_YELLOW, "Налоговая служба |{FFFFFF} Ваш бизнес был закрыт по причине: отсутствие продуктов или отсутствие лицензии");
							SendClientMessage(playerid, COLOR_YELLOW, "Налоговая служба | {FFFFFF}Если по истечению 36 часов бизнес будет закрыт, он будет продан гос-ву");
						}
					}
					BizzInfo[bizzid][bLock] = 1;
					MysqlUpdateBizzInt(bizzid, "block", BizzInfo[bizzid][bLock]);
				}
			}
			if(BizzInfo[bizzid][bLock] == 1)
			{
				BizzInfo[bizzid][bLockTime]++;
				MysqlUpdateBizzInt(bizzid, "locktime", BizzInfo[bizzid][bLockTime]);
			}
			if(BizzInfo[bizzid][bLockTime] > 1 && BizzInfo[bizzid][bLockTime] < 36)
			{
				if(IsPlayerConnected(playerid) && playerid != INVALID_PLAYER_ID)
				{
					if(GetPlayerBizz(playerid))
					{
						SendMes(playerid, COLOR_YELLOW, "Ваш бизнес закрыт уже %i час(а)", BizzInfo[GetPVarInt(playerid, "PlayerBizz")][bLockTime]);
						SendClientMessage(playerid, COLOR_YELLOW, "Если по истечению 36 часов бизнес будет закрыт, он будет продан гос-ву");
					}
				}
			}
	    }
	}
	return 1;
}

 

 

Поделиться сообщением


Ссылка на сообщение

4 ответа на этот вопрос

  • 0

@archiboy6, на основании чего вы пришли к такому выводу?

Поделиться сообщением


Ссылка на сообщение
  • 0

@odosenok ПРи PayDay в игре выводится несколько раз, и сумма денег тоже обновляется

Поделиться сообщением


Ссылка на сообщение
  • 0

Для решения проблемы, необходимо посмотреть  конкретно место где вызывается функция PayDay(). Если вызывается несколько раз, следовательно вызов идет в таймере, следовательно необходимо поставить условие, при котором PayDay() вызовется только один раз.

Отредактировано пользователем odosenok
Причина: убрал жирный текст.

Заметка от Cawfee , создано

Все-таки не стоит выделять жирным все подряд. Ухудшается читаемость текста.

Поделиться сообщением


Ссылка на сообщение
  • 0

@archiboy6, ну, так что? Тебе же предложили посмотреть место вызова функции PayDay. Есть новости, не?

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Mister Odin
      От Mister Odin
       
      new
       g_teleport_list[39][E_TELEPORT_LIST] = {  {"Спавн пгт.Батырево", 1802.3612, 2508.4824, 15.8887},  {"Спавн г.Арзамас", -113.5887, 977.7222, 12.0346},     {"Спавн г.Южный", 2744.2770, -2446.7246, 21.8988},     {"Центральный банк", 1852.020385,2040.791381,15.892713},  {"Рублёвка", -837.7783, 888.6161, 12.7232},  {"Казино", 1332.4252, 2358.7014, 17.6641},  {"Битва за контейнеры", 614.5167, 1722.3566, 12.0709},  {"Автосалон низкого класса", 2493.9616, -722.9544, 12.3315},  {"Автосалон среднего класса", 1407.7449, 455.4801, 13.1630},  {"Автосалон высокого класса", -14.0637, 2614.5664, 10.9892},   {"Мотосалон Harley Davidson", 785.720153, 750.465087, 12.000024},  {"Автошкола", 1909.174438,2227.679687,15.708162},  {"Военкомат", 1916.778564,2302.411376,15.574637},  {"Правительство области", -139.140975,593.789611,12.145712},  {"Отдел полиции №1 (ГИБДД)", 1906.805786,-2234.382812,11.257631},  {"Отдел полиции №2 (УМВД)", 2581.309326,-2416.139892,21.960090},  {"Отдел ФСБ", 1823.904663,2095.636718,15.848405},  {"Городская больница г.Арзамас", -285.797210,581.851562,12.120290},   {"СМИ", -317.708038,821.221679,13.051450},  {"Воинская часть", 1703.197265,1678.025878,15.279437},  {"Арзамасская ОПГ", 438.705322,1046.505126,12.002637},  {"Батыревская ОПГ", 1941.203857,2161.006591,15.705187},  {"Лыткаринская ОПГ", -2346.002441,75.257041,21.002962},  {"Шахта", 2381.5727, 1726.4451, -2.1506},  {"Завод", -1062.6697, 2204.1894, 38.0964},  {"Инкосация", 1864.1374, 2011.7136, 15.8546},  {"Транспортная Компания", 2362.1115, 1972.5627, 15.5530},  {"База механиков", 1840.918090,-118.025146,15.695312},  {"Курьерская служба доставки", 2764.509765,-2396.882568,21.890625},  {"Аренда автобуса(Южный)", 2771.041992,-2454.780761,21.845964},  {"Аренда автобуса(Арзамас)", -127.487670,943.652648,12.142824},   {"Аренда автобуса(Батырево)", 1798.986328,2529.591552,15.664262},  {"Гоночная трасса", -1568.7784, 1611.8305, 36.3971},  {"Дом на горе", -789.5397, -456.7479, 741.1422},  {"СТО и тюнинг-ателье", 1856.1375, -122.3266, 15.6888},  {"Аренда транспорта пгт.Батырево", 1763.641723,2255.673339,15.865348},  {"Аренда транспорта г.Арзамас", -36.923530,1360.673583,12.002090},  {"Аренда транспорта г.Южный", 1966.599975,-2603.943603,10.820312},  {"Тайный интерьер в Лыткарино", -2424.5818, 2846.3291, 40.7908} };