Question

archiboy6
Гуру форума

За 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;
}

 

 

Share this post


Link to post

4 answers to this question

  • 0
archiboy6
Гуру форума

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

Share this post


Link to post
  • 0
punkochel
Новичок

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

Edited by odosenok
Причина: убрал жирный текст.

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

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

Share this post


Link to post
  • 0
Talex
Постоянный

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

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • nosikzamorozhen1
      By nosikzamorozhen1
      Всем привет! Ищу разработчика, для проекта SA:MP с очень большими амбициями  Из основного подправить мод, убрать баги, добавить что то новое по тз.  Хотелось бы поработать первое время за общую идею + бонусы от меня $ Дальше либо выйти на % или получать стабильную ставку.  Если я вас хоть немножечко заинтересовал жду сообщение в Телеграмм: @pasterrss
    • Preson Torpedo
      By Preson Torpedo
      Приветствую,нужно вырезать только карту и интерьеры с модификации sanvice.Адаптировать под 0.3.7.Связь в личные сообщения.
    • Ластовецький Вадим В'ячеславович
      By Ластовецький Вадим В'ячеславович
      Решил понастольгировать. Нашел и скачал мод Амазинг РП годов так 20 хз, все уже перепробовал, но не могу зайти на сервер через клиент 0.3.7. Я запускаю сервак локально на своем компе если что. При поделючении к серверу в чате выдает ошибку неверный пароль сервера. Подскажите, что это может быть?