Рекомендованные сообщения



Не найдено.

5 posts in this topic

За 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
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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

    • glvde.
      By glvde.
      Матрешка РП | Слив мода с продажи
      Просмотр файла МАТРЕШКА РП
       
      Хранение данных (версия MySQL): R41-3.
      Командный процессор: Pawn.CMD.
      Количество строк в моде (без маппинга): 49192.
      Анти-чит: Nexius-AC v1.9.53.
      Автор доработки: Антон Нолмадов.
       
      Стоило бы немного поговорить о том, почему этот мод сливается.
      Данный мод покупался у Антона Нолмадова напрямую.
      Отдали мы около 1.000 рублей, с некоторыми доработками (о них попозже).

      О каких доработках идет речь:

      У данного кадра мы купили: Мод, сборка(ПК) + 700 рублей - адаптирование клиента мобильного под игровой мод.
      Мы все оплатили, он выставил сроки до пятницы (24.09.21), на дворе - воскресенье (26.09.21).
      Спустя день мы добились того, что нам предоставят сборку на ПК (скрин. ниже):

      Сборку предоставили, а теперь начинается самое интересное.
      Как утверждалось в теме с продажей - основа мода Brilliant.
      Открыв код я понял, что основа мода далеко не Brilliant.
      Архив с игровым модом предоставили без .sql файла (базы данных).
      Соответственно, никаких адаптированных клиентов предоставлено не было.

      Остальные ссылки:

      Уважаемая администрация портала Pawno-Rus - @DEST, @keyl, @Jawn.
      Попрошу обратить внимание на данного персонажа - @Антон Нолмадов 
      P.S: архив предоставил таким, как он и был на yadi.sk (прямой линк - *клик*).

      Лучшая благодарность для меня - подписка на группу моей студии: vk.link/way_dev
      Всем спасибо за внимание.
      Добавил glvde. Добавлено 26.09.2021 Категория Моды Автор Антон Нолмадов  
    • glvde.
      By glvde.
      МАТРЕШКА РП
       
      Хранение данных (версия MySQL): R41-3.
      Командный процессор: Pawn.CMD.
      Количество строк в моде (без маппинга): 49192.
      Анти-чит: Nexius-AC v1.9.53.
      Автор доработки: Антон Нолмадов.
       
      Стоило бы немного поговорить о том, почему этот мод сливается.
      Данный мод покупался у Антона Нолмадова напрямую.
      Отдали мы около 1.000 рублей, с некоторыми доработками (о них попозже).

      О каких доработках идет речь:

      У данного кадра мы купили: Мод, сборка(ПК) + 700 рублей - адаптирование клиента мобильного под игровой мод.
      Мы все оплатили, он выставил сроки до пятницы (24.09.21), на дворе - воскресенье (26.09.21).
      Спустя день мы добились того, что нам предоставят сборку на ПК (скрин. ниже):

      Сборку предоставили, а теперь начинается самое интересное.
      Как утверждалось в теме с продажей - основа мода Brilliant.
      Открыв код я понял, что основа мода далеко не Brilliant.
      Архив с игровым модом предоставили без .sql файла (базы данных).
      Соответственно, никаких адаптированных клиентов предоставлено не было.

      Остальные ссылки:

      Уважаемая администрация портала Pawno-Rus - @DEST, @keyl, @Jawn.
      Попрошу обратить внимание на данного персонажа - @Антон Нолмадов 
      P.S: архив предоставил таким, как он и был на yadi.sk (прямой линк - *клик*).

      Лучшая благодарность для меня - подписка на группу моей студии: vk.link/way_dev
      Всем спасибо за внимание.
    • brodgie
      By brodgie
      Include - m_mail
      Просмотр файла m_mail - Отправляет письмо на электронную почту из игры.
       
      Описание:

      • Поддержка русского текста;
      • Доступно 2 типа отправки письма (обычный и HTML).

      Пример использования:
       
      #define M_MAIL_URL "example.com/m_mail.php" #define M_MAIL_ADDRESS "mymail@example.com" #include <m_mail> public OnPlayerConnect(playerid) { Mail_Send(playerid, Mail:EXAMPLE_EMAIL, "pawnocoder@mail.ru", "Название", "Тема сообщения", "Текст сообщения"); return 1; } Mail_Response:EXAMPLE_EMAIL(playerid, response_code, const data[]) { switch (response_code) { case 200: { // Почта успешно отправлена } default: { // Не удалось отправить почту } } return 1; }  
      Автор: NoName (Pawno_Coder) | Взято с соседнего борда
      Добавил brodgie Добавлено 25.09.2021 Категория Плагины / инклуды Автор Pawno_Coder Совместимость с версией мультиплеера  
    • brodgie
      By brodgie
      m_mail - Отправляет письмо на электронную почту из игры.
       
      Описание:

      • Поддержка русского текста;
      • Доступно 2 типа отправки письма (обычный и HTML).

      Пример использования:
       
      #define M_MAIL_URL "example.com/m_mail.php" #define M_MAIL_ADDRESS "mymail@example.com" #include <m_mail> public OnPlayerConnect(playerid) { Mail_Send(playerid, Mail:EXAMPLE_EMAIL, "pawnocoder@mail.ru", "Название", "Тема сообщения", "Текст сообщения"); return 1; } Mail_Response:EXAMPLE_EMAIL(playerid, response_code, const data[]) { switch (response_code) { case 200: { // Почта успешно отправлена } default: { // Не удалось отправить почту } } return 1; }  
      Автор: NoName (Pawno_Coder) | Взято с соседнего борда
    • Antoxa39
      By Antoxa39
      Здрасте, вообщем сразу к делу. платный ли плагин для новых машин на сервере? У меня есть плагин который расширяет количество новых машин на сервере, но нет клиентской части. Так вот плагин клиент. части платный? Если нет то может кто нибудь его скинуть?