core.inc 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. #include <YSI_Coding\y_hooks>
  2. #define JOB_NONE 0
  3. #define JOB_PIZZABOY 1
  4. #define JOB_PAPERBOY 2
  5. #define JOB_COURIER 3
  6. static bool:Working[MAX_PLAYERS];
  7. static Job[MAX_PLAYERS];
  8. new JobCheckpoint[MAX_PLAYERS];
  9. hook OnPlayerConnect(playerid)
  10. {
  11. Working[playerid] = false;
  12. Job[playerid] = JOB_NONE;
  13. JobCheckpoint[playerid] = INVALID_STREAMER_ID;
  14. }
  15. hook OnPlayerDisconnect(playerid, reason)
  16. {
  17. Job_StopWorking(playerid);
  18. }
  19. hook OnPlayerWounded(playerid)
  20. {
  21. Job_StopWorking(playerid);
  22. }
  23. hook OnPlayerEnterJobCPoint(playerid)
  24. {
  25. if(Working[playerid])
  26. {
  27. switch(Job[playerid])
  28. {
  29. case JOB_PIZZABOY: PizzaboyEnterCheckpoint(playerid);
  30. case JOB_PAPERBOY: PaperboyEnterCheckpoint(playerid);
  31. case JOB_COURIER: CourierEnterCheckpoint(playerid);
  32. }
  33. }
  34. return 1;
  35. }
  36. Job_GetName(jobid)
  37. {
  38. new string[34];
  39. switch(jobid)
  40. {
  41. case JOB_NONE: strcat(string, "Unemployed");
  42. case JOB_PIZZABOY: strcat(string, "Pizza boy");
  43. case JOB_PAPERBOY: strcat(string, "Paperboy");
  44. case JOB_COURIER: strcat(string, "Courier");
  45. }
  46. return string;
  47. }
  48. Job_StopWorking(playerid)
  49. {
  50. if(JobCheckpoint[playerid] != INVALID_STREAMER_ID)
  51. {
  52. DestroyDynamicCP(JobCheckpoint[playerid]);
  53. }
  54. Working[playerid] = false;
  55. switch(Job[playerid])
  56. {
  57. case JOB_PIZZABOY: PizzaboyStopsWorking(playerid);
  58. case JOB_PAPERBOY: PaperboyStopsWorking(playerid);
  59. case JOB_COURIER: CourierStopsWorking(playerid);
  60. }
  61. }
  62. CMD:job(playerid, params[])
  63. {
  64. if(isnull(params)) return SendSyntaxMessage(playerid, "/job (options: start, stop, take, quit)");
  65. if(!strcmp(params, "start", true))
  66. {
  67. if(Job[playerid] == JOB_NONE) return SendErrorMessage(playerid, "You don't have a job.");
  68. if(Working[playerid]) return SendErrorMessage(playerid, "You are already working.");
  69. if(IsPlayerWounded(playerid)) return SendErrorMessage(playerid, "You can't do this while you're wounded.");
  70. switch(Job[playerid])
  71. {
  72. case JOB_PIZZABOY: PizzaboyStartJob(playerid);
  73. case JOB_PAPERBOY: PaperboyStartJob(playerid);
  74. case JOB_COURIER: CourierStartJob(playerid);
  75. }
  76. }
  77. else if(!strcmp(params, "stop", true))
  78. {
  79. if(Job[playerid] == JOB_NONE) return SendErrorMessage(playerid, "You don't have a job.");
  80. if(!Working[playerid]) return SendErrorMessage(playerid, "You are not working.");
  81. Job_StopWorking(playerid);
  82. SendClientMessage(playerid, 0xffcc80ff, "(Job) You have stopped working.");
  83. }
  84. else if(!strcmp(params, "take", true))
  85. {
  86. if(Job[playerid] != JOB_NONE) return SendErrorMessageF(playerid, "You are already hired as a %s. (Use /job take insetead)", Job_GetName(Job[playerid]));
  87. inline _response(pid, dialogid, response, listitem, string:inputtext[])
  88. {
  89. #pragma unused pid, dialogid, inputtext
  90. if(!response) return 0;
  91. Player_SetJob(playerid, listitem + 1, true);
  92. va_SendClientMessage(playerid, 0xffcc80ff, "(Job) You've got hired as a %s.", Job_GetName(listitem + 1));
  93. }
  94. Dialog_ShowCallback(playerid, using inline _response, DIALOG_STYLE_TABLIST_HEADERS, "Available jobs", "Please choose a job\nPizza boy\nPaperboy\nCourier", "Ok", "Close");
  95. }
  96. else if(!strcmp(params, "quit", true))
  97. {
  98. if(Job[playerid] == JOB_NONE) return SendErrorMessage(playerid, "You don't have a job.");
  99. va_SendClientMessage(playerid, 0xffcc80ff, "(Job) You have quit your job as a %s.", Job_GetName(Job[playerid]));
  100. Player_SetJob(playerid, JOB_NONE, true);
  101. Job_StopWorking(playerid);
  102. }
  103. else SendSyntaxMessage(playerid, "/job (options: start, stop, take)");
  104. return 1;
  105. }
  106. stock IsCheckpointJobCheckpoint(playerid, checkpointid)
  107. {
  108. if(JobCheckpoint[playerid] == checkpointid)
  109. {
  110. return true;
  111. }
  112. return false;
  113. }
  114. stock IsPlayerWorking(playerid)
  115. {
  116. return Working[playerid];
  117. }
  118. stock SetPlayerWorking(playerid, bool:status)
  119. {
  120. Working[playerid] = status;
  121. if(!status)
  122. {
  123. Job_StopWorking(playerid);
  124. }
  125. }
  126. stock Player_GetJob(playerid)
  127. {
  128. return Job[playerid];
  129. }
  130. stock Player_SetJob(playerid, jobid, bool:save)
  131. {
  132. Job[playerid] = jobid;
  133. if(save)
  134. {
  135. new query[62];
  136. mysql_format(MySQL_GetHandle(), query, sizeof(query), "UPDATE characters SET job = %d WHERE id = %d", jobid, Character_GetSQLID(playerid));
  137. mysql_tquery(MySQL_GetHandle(), query);
  138. }
  139. }