1
0

grouppay.pwn 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. #include <YSI\y_hooks>
  2. GovEditGroupBudget(playerid)
  3. {
  4. szMiscArray[0] = 0;
  5. new szTitle[GROUP_MAX_NAME_LEN + 8];
  6. for(new i = 0; i != MAX_GROUPS; ++i) {
  7. if(arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance] != arrGroupData[i][g_iAllegiance]) {
  8. format(szMiscArray, sizeof szMiscArray, "%s----\t{FFFFFF}----\n", szMiscArray);
  9. }
  10. else format(szMiscArray, sizeof szMiscArray, "%s{%s}%s\t{FFFFFF}$%s\n", szMiscArray, Group_NumToDialogHex(arrGroupData[i][g_hDutyColour]), arrGroupData[i][g_szGroupName], number_format(arrGroupData[i][g_iBudgetPayment]));
  11. }
  12. format(szTitle, sizeof(szTitle), "{%s}%s {FFFFFF}| Budget Overview", Group_NumToDialogHex(arrGroupData[PlayerInfo[playerid][pLeader]][g_hDutyColour]), arrGroupData[PlayerInfo[playerid][pLeader]][g_szGroupName]);
  13. return ShowPlayerDialogEx(playerid, DIALOG_GROUP_GOVLISTPAY, DIALOG_STYLE_TABLIST, "Edit Group Budget", szMiscArray, "Edit", "Cancel");
  14. }
  15. PlayerEditGroupPay(playerid)
  16. {
  17. szMiscArray[0] = 0;
  18. new iGroupID = PlayerInfo[playerid][pLeader],
  19. szTitle[32 + GROUP_MAX_NAME_LEN];
  20. for(new i = 0; i != MAX_GROUP_RANKS; ++i) {
  21. format(szMiscArray, sizeof szMiscArray, "%s(%i) %s\t$%s\n", szMiscArray, i, arrGroupRanks[iGroupID][i], number_format(arrGroupData[iGroupID][g_iPaycheck][i]));
  22. }
  23. format(szTitle, sizeof szTitle, "{%s}(%s) {FFFFFF}| Edit Paychecks", Group_NumToDialogHex(arrGroupData[iGroupID][g_hDutyColour]), arrGroupData[iGroupID][g_szGroupName]);
  24. return ShowPlayerDialogEx(playerid, DIALOG_GROUP_PLISTPAY, DIALOG_STYLE_TABLIST, szTitle, szMiscArray, "Edit", "Cancel");
  25. }
  26. PayGroupMember(i)
  27. {
  28. new
  29. iGroupID = PlayerInfo[i][pMember],
  30. iRank = PlayerInfo[i][pRank];
  31. szMiscArray[0] = 0;
  32. if((0 <= iGroupID < MAX_GROUPS) && 0 <= iRank <= 9 && arrGroupData[iGroupID][g_iPaycheck][iRank] > 0) {
  33. if(arrGroupData[iGroupID][g_iBudget] > 0) {
  34. arrGroupData[iGroupID][g_iBudget] -= arrGroupData[iGroupID][g_iPaycheck][iRank];
  35. //GivePlayerCash(i, arrGroupData[iGroupID][g_iPaycheck][iRank]);
  36. GivePlayerCashEx(i, TYPE_BANK, arrGroupData[iGroupID][g_iPaycheck][iRank]);
  37. format(szMiscArray,sizeof(szMiscArray)," {%s}%s {FFFFFF}paycheck: $%s", Group_NumToDialogHex(arrGroupData[iGroupID][g_hDutyColour]), arrGroupData[iGroupID][g_szGroupName], number_format(arrGroupData[iGroupID][g_iPaycheck][iRank]));
  38. SendClientMessageEx(i, COLOR_GRAD2, szMiscArray);
  39. format(szMiscArray, sizeof(szMiscArray), "%s has been paid $%s from %s's budget.", GetPlayerNameEx(i), number_format(arrGroupData[iGroupID][g_iPaycheck][iRank]), arrGroupData[iGroupID][g_szGroupName]);
  40. GroupPayLog(iGroupID, szMiscArray);
  41. }
  42. else SendClientMessageEx(i, COLOR_RED, "Your group is in debt; no money is available for pay.");
  43. }
  44. }
  45. hook OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
  46. if(arrAntiCheat[playerid][ac_iFlags][AC_DIALOGSPOOFING] > 0) return 1;
  47. switch(dialogid) {
  48. case DIALOG_GROUP_PLISTPAY: {
  49. new
  50. iGroupID = PlayerInfo[playerid][pLeader];
  51. if(response) {
  52. new
  53. szTitle[32 + GROUP_MAX_NAME_LEN];
  54. SetPVarInt(playerid, "Group_EditRank", listitem);
  55. format(szTitle, sizeof szTitle, "Edit Rank (%i)'s Paycheck {%s}(%s)", listitem, Group_NumToDialogHex(arrGroupData[iGroupID][g_hDutyColour]), arrGroupData[iGroupID][g_szGroupName]);
  56. return ShowPlayerDialogEx(playerid, DIALOG_GROUP_PEDITPAY, DIALOG_STYLE_INPUT, szTitle, "Specify a paycheck amount for this rank.", "Set", "Cancel");
  57. }
  58. return 1;
  59. }
  60. case DIALOG_GROUP_PEDITPAY: {
  61. new
  62. iGroupID = PlayerInfo[playerid][pLeader],
  63. iRankID = GetPVarInt(playerid, "Group_EditRank");
  64. if(response) {
  65. if(isnull(inputtext) || !IsNumeric(inputtext) || strval(inputtext) < 0) return SendClientMessage(playerid, COLOR_GRAD1, "You specified an invalid value.");
  66. arrGroupData[iGroupID][g_iPaycheck][iRankID] = strval(inputtext);
  67. format(szMiscArray, sizeof(szMiscArray), "%s has changed the paycheck for rank %d (%s) to $%d in %s (%d)", GetPlayerNameEx(playerid), iRankID, arrGroupRanks[iGroupID][iRankID], strval(inputtext), arrGroupData[iGroupID][g_szGroupName], iGroupID + 1);
  68. Log("logs/group.log", szMiscArray);
  69. Log("logs/editgroup.log", szMiscArray);
  70. DeletePVar(playerid, "Group_EditRank");
  71. SaveGroup(iGroupID);
  72. return PlayerEditGroupPay(playerid);
  73. }
  74. return PlayerEditGroupPay(playerid);
  75. }
  76. case DIALOG_GROUP_GOVLISTPAY: {
  77. if(response) {
  78. if(arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance] != arrGroupData[listitem][g_iAllegiance]) return SendClientMessage(playerid, COLOR_GRAD1, "This instance is not part of your nation.");
  79. SetPVarInt(playerid, "Gov_EditGroup", listitem);
  80. format(szMiscArray, sizeof szMiscArray, "Edit Paycheck | {%s}%s {FFFFFF}(ID: %i)", Group_NumToDialogHex(arrGroupData[listitem][g_hDutyColour]), arrGroupData[listitem][g_szGroupName], listitem);
  81. return ShowPlayerDialogEx(playerid, DIALOG_GROUP_GOVEDITPAY, DIALOG_STYLE_INPUT, szMiscArray, "Specify a budget for this group.", "Set", "Cancel");
  82. }
  83. return 1;
  84. }
  85. case DIALOG_GROUP_GOVEDITPAY: {
  86. new
  87. iGroupID = GetPVarInt(playerid, "Gov_EditGroup");
  88. if(response) {
  89. if(isnull(inputtext) || !IsNumeric(inputtext) || strval(inputtext) < 0) return SendClientMessage(playerid, COLOR_GRAD1, "You specified an invalid value.");
  90. arrGroupData[iGroupID][g_iBudgetPayment] = strval(inputtext);
  91. format(szMiscArray, sizeof(szMiscArray), "%s has changed the budget for %s to $%d", GetPlayerNameEx(playerid), arrGroupData[iGroupID][g_szGroupName], number_format(strval(inputtext)));
  92. Log("logs/group.log", szMiscArray);
  93. Log("logs/editgroup.log", szMiscArray);
  94. DeletePVar(playerid, "Gov_EditGroup");
  95. SaveGroup(iGroupID);
  96. return GovEditGroupBudget(playerid);
  97. }
  98. return GovEditGroupBudget(playerid);
  99. }
  100. }
  101. return 0;
  102. }
  103. CMD:editbudgets(playerid, params[])
  104. {
  105. if(PlayerInfo[playerid][pLeader] == PlayerInfo[playerid][pMember] && IsAGovernment(playerid))
  106. {
  107. GovEditGroupBudget(playerid);
  108. }
  109. else SendClientMessage(playerid, COLOR_GRAD2, "You must be leading a government to use this command.");
  110. return 1;
  111. }
  112. CMD:editpaychecks(playerid, params[])
  113. {
  114. if(PlayerInfo[playerid][pLeader] == PlayerInfo[playerid][pMember])
  115. {
  116. PlayerEditGroupPay(playerid);
  117. }
  118. else SendClientMessage(playerid, COLOR_GRAD2, "You must be a group leader to use this command.");
  119. return 1;
  120. }