Вопросы

За 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 пользователей онлайн

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

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

    • KAIF
      От KAIF


      Скачать файл GTA RolePlay-МОД,СБОРКА
      !!!!!ВСЕГО ОДНА КОПИЯ!!!! 
      Единственный мод GTA RP.
       
      Фракции:
      Правительство
      ГИБДД
      Полиция Южного
      ФСБ
      ЦГБ-А
      Автошкола
      Китайская мафия
      Русская Мафия
      Итальянская Мафия
      Американская Мафия
      Чеченская Мафия
      ВВС
      МЧС
      ОПГ Тяп-Ляп
      ОПГ Хади-Такташ
      СМИ Южного
      ФСИН
      В комплекте идёт СБОРКА И МОД.
      Единственный мод GTA RP.
      Добавил KAIF Добавлено 01.01.2024 Категория Моды Автор Aleksandr  
    • gooding
      От gooding
      Доброго времени суток! Я выложил на продажу игровой мод RedRow RolePlay!
       
      17 ТИТУЛОВ, 14 КОСТЮМОВ (КАМЕРМЭН, ФЕЯ, СИ-ДЖЕЙ, ДЭДПУЛ, СПАНЧ БОБ, НИНДЗЯ, ДЕД МОРОЗ и другие!),
      BMW I8, BMW M5, BMW Vision M NEXT, Mercedes-Benz G-CLASS, Rolls-Royce Phantom! Система рулетки  (Исправлена, теперь не выпадает одно и то же),
      Автопарки Фракций (FBI и банд), МОД ОПТИМИЗИРОВАЛИ под ИГРУ, ДОБАВИЛИ НОВЫЙ АНТИЧИТ (Latest Nex-AC) и АНТИЧИТ настроен. Проделано много работы (Над модом работали полгода) и исправили множество багов.
       
      Что было добавлено?
      1. 17 титулов,
      2. 14 костюмов,
      3. Эксклюзивный транспорт (SandKing, Rolls-Royce Phantom, BMW I8, BMW M5, BMW Vision M NEXT, Mercedes-Benz G-CLASS).
      4. Автопарк ФБР и всех банд.
      5. Новый анти-чит.
      6. Оптимизация игрового мода.
      7. Премиум и уникальные возможности для владельцев Премиума.
      8. Команда /bonus, где можно получить бесплатно Red Coins.
      9. За АКТИВ даются Red Coins!
      10. Рестарт сервера в 5:00 по МСК.
      11. Радужный клист.
      12. Уникальный тюнинг для эксклюзивных машин и ускорение.
      13. Новая система банка.
      14. Исправлено множество багов.
      15. Новый маппинг.
    • Redmondd
      От Redmondd
      Хочу сделать команду /gpsoff, которая убирает метку