sanews.pwn 99 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568
  1. /*
  2. SA News - Faction Update (2015)
  3. by Jingles
  4. -- MAIN FILE --
  5. Make sure to read the "Install instructions" to get this plug-and-play script set up.
  6. */
  7. /*
  8. -- DEFINITIONS / VARIABLES (new)
  9. */
  10. #include <YSI\y_hooks>
  11. #define MAX_SANCHANNELS 8
  12. #define MAX_SANCAMERAS 10
  13. #define SAN_INVALID_CHANNEL 0
  14. #define COLOR_NEWS2 0xFFD589AA
  15. #define COLOR_SANRADIO 0x9DFF9DAA
  16. #define COLOR_SANRADIO2 0xEAFFEAAA
  17. #define DIALOG_SAN_LOGIN (20150)
  18. #define DIALOG_SAN_SHOWS (20151)
  19. #define DIALOG_SAN_SHOWS_EDIT (20152)
  20. #define DIALOG_SAN_SHOWS_EDIT2 (20153)
  21. #define DIALOG_SAN_SHOWS_MENU (20154)
  22. #define DIALOG_SAN_SHOWS_TOGGLE (20155)
  23. #define DIALOG_SAN_SHOWS_NAME (20156)
  24. #define DIALOG_SAN_SHOWS_HOST (20157)
  25. #define DIALOG_SAN_SHOWS_TYPE (20158)
  26. #define DIALOG_SAN_SHOWS_GLOBAL (20159)
  27. #define DIALOG_SAN_CAMLIST (20160)
  28. #define DIALOG_SAN_CAMLIST2 (20161)
  29. #define DIALOG_SAN_CAMERAMAN (20162)
  30. #define DIALOG_SAN_DCAMERAMAN (20163)
  31. #define DIALOG_SAN_DIRECTOR (20164)
  32. #define DIALOG_SAN_PSTREAM (20165)
  33. #define DIALOG_SAN_BSTREAM (20166)
  34. #define DIALOG_SAN_VIEWERS (20167)
  35. #define SAN_CAMERAMAN_SET 1
  36. #define SAN_CAMERAMAN_STOP 2
  37. #define SAN_CAMERAMAN_PREVIEW 3
  38. #define SAN_CAMERAMAN_BROADCAST 4
  39. #define SAN_CAMERAMAN_BIRDSEYE 5
  40. #define SAN_CAMERAMAN_VEHICLE 6
  41. #define SAN_CAMERAMAN_LOGOUT 7
  42. #define SAN_CAMERAMAN_SETPOINTA 8
  43. #define SAN_CAMERAMAN_SETPOINTB 9
  44. #define SAN_CAMERAMAN_POINTA 10
  45. #define SAN_CAMERAMAN_POINTB 11
  46. #define SAN_CAMERAMAN_PINTERPOLATE 12
  47. #define SAN_CAMERAMAN_INTERPOLATE 13
  48. #define SAN_DIRECTOR_LOGIN 14
  49. #define SAN_DIRECTOR_PREVIEW 15
  50. #define SAN_DIRECTOR_STOP 16
  51. #define SAN_DIRECTOR_BROADCAST 17
  52. #define SAN_DIRECTOR_BIRDSEYE 18
  53. #define SAN_DIRECTOR_INTERPOLATE 19
  54. #define SAN_DIRECTOR_VEHICLE 20
  55. #define SAN_DIRECTOR_STARTCAM 21
  56. #define SAN_DIRECTOR_STOPCAM 22
  57. #define SAN_DIRECTOR_LOGOUT 23
  58. #define SAN_DIRECTOR_PSTREAM 24
  59. #define SAN_DIRECTOR_BSTREAM 25
  60. new Float:CameramanFloats[MAX_SANCHANNELS][MAX_PLAYERS][4];
  61. new Float:CameramanFVFloats[MAX_SANCHANNELS][MAX_PLAYERS][4];
  62. new Float:ICCameramanFloats[MAX_SANCHANNELS][MAX_PLAYERS][6];
  63. new Float:ICCameramanFVFloats[MAX_SANCHANNELS][MAX_PLAYERS][6];
  64. new ListItemTrackID_Cameras[MAX_PLAYERS][MAX_SANCAMERAS];
  65. new iLastCameraman[MAX_SANCHANNELS] = -1;
  66. new Text:TV_text[14];
  67. //new TVObject[10];
  68. enum eSanShows {
  69. ChannelName[64],
  70. Hosts[MAX_PLAYER_NAME * 2],
  71. ChannelType,
  72. szChannelType[12],
  73. szStream[128],
  74. ChannelActive,
  75. Global,
  76. san_iRatings,
  77. san_iVehicleID,
  78. // iCameraObject[MAX_SANCAMERAS],
  79. Text3D:SANews3DText[2],
  80. Text3D:camera
  81. };
  82. new SANShows[MAX_SANCHANNELS][eSanShows];
  83. hook OnPlayerConnect(playerid)
  84. {
  85. SAN_PInit(playerid, 0);
  86. return 1;
  87. }
  88. hook OnPlayerDisconnect(playerid)
  89. {
  90. if(GetPVarType(playerid, "WatchingTV"))
  91. {
  92. PlayerInfo[playerid][pInt] = BroadcastLastInt[playerid];
  93. PlayerInfo[playerid][pVW] = BroadcastLastVW[playerid];
  94. PlayerInfo[playerid][pPos_r] = BroadcastFloats[playerid][0];
  95. PlayerInfo[playerid][pPos_x] = BroadcastFloats[playerid][1];
  96. PlayerInfo[playerid][pPos_y] = BroadcastFloats[playerid][2];
  97. PlayerInfo[playerid][pPos_z] = BroadcastFloats[playerid][3];
  98. SANShows[GetPVarInt(playerid, "ChannelID")][san_iRatings]--;
  99. UpdateSANewsBroadcast(GetPVarInt(playerid, "ChannelID"));
  100. }
  101. DeletePVar(playerid, "ChannelID");
  102. DeletePVar(playerid, "ChannelID_FMEM");
  103. DeletePVar(playerid, "TVOffer");
  104. DeletePVar(playerid, "TalkingTV");
  105. DeletePVar(playerid, "WatchingTV");
  106. DeletePVar(playerid, "ChannelID");
  107. return 1;
  108. }
  109. hook OnGameModeInit()
  110. {
  111. SAN_Init(0);
  112. return 1;
  113. }
  114. hook OnGameModeExit()
  115. {
  116. SAN_Init(1);
  117. return 1;
  118. }
  119. hook OnPlayerDeath(playerid)
  120. {
  121. SAN_Process_StopPreview(playerid);
  122. }
  123. hook OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
  124. if(arrAntiCheat[playerid][ac_iFlags][AC_DIALOGSPOOFING] > 0) return 1;
  125. switch(dialogid)
  126. {
  127. case DIALOG_SAN_LOGIN:
  128. {
  129. SAN_ShowsDialog(playerid, 0);
  130. }
  131. case DIALOG_SAN_SHOWS_MENU:
  132. {
  133. if(response)
  134. {
  135. switch(listitem)
  136. {
  137. case 0:
  138. {
  139. SAN_ShowsDialog(playerid, 2);
  140. }
  141. case 1:
  142. {
  143. SetPVarInt(playerid, "DirectorChannelID", 1);
  144. SAN_ShowsDialog(playerid, 0);
  145. }
  146. case 2:
  147. {
  148. SAN_ShowsDialog(playerid, 0);
  149. }
  150. case 3:
  151. {
  152. SAN_ShowsDialog(playerid, 1);
  153. }
  154. case 4:
  155. {
  156. SAN_Process_Logout(playerid);
  157. }
  158. }
  159. }
  160. }
  161. case DIALOG_SAN_SHOWS:
  162. {
  163. szMiscArray[0] = 0;
  164. if(response)
  165. {
  166. if(GetPVarType(playerid, "DirectorChannelID"))
  167. {
  168. new Float:X, Float:Y, Float:Z;
  169. SetPVarInt(playerid, "ChannelID_FMEM", listitem+1);
  170. GetPlayerPos(playerid,X,Y,Z);
  171. new channel = GetPVarInt(playerid, "ChannelID_FMEM");
  172. format(szMiscArray, sizeof(szMiscArray), "** [CH. %i] Broadcast Director %s signed in to Channel %i. **", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid), GetPVarInt(playerid, "ChannelID_FMEM"));
  173. SANShows[channel][SANews3DText][1] = CreateDynamic3DTextLabel(szMiscArray,COLOR_LIGHTBLUE,X,Y,Z,5.0);
  174. UpdateSANewsBroadcast(channel);
  175. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  176. DeletePVar(playerid, "DirectorChannelID");
  177. cmd_bdirector(playerid, "");
  178. }
  179. else if(GetPVarType(playerid, "CameramanChannelID"))
  180. {
  181. SetPVarInt(playerid, "ChannelID_FMEM", listitem+1);
  182. format(szMiscArray, sizeof(szMiscArray), "** [CH. %i] Cameraman %s signed in to Channel %i. **", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid), GetPVarInt(playerid, "ChannelID_FMEM"));
  183. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  184. DeletePVar(playerid, "CameramanChannelID");
  185. cmd_cameraman(playerid, "");
  186. }
  187. else if(GetPVarType(playerid, "LoginChannelID"))
  188. {
  189. SetPVarInt(playerid, "ChannelID_FMEM", listitem+1);
  190. format(szMiscArray, sizeof(szMiscArray), "** [CH. %i] Host %s signed in to Channel %i. **", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid), GetPVarInt(playerid, "ChannelID_FMEM"));
  191. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  192. DeletePVar(playerid, "LoginChannelID");
  193. }
  194. else
  195. {
  196. SetPVarInt(playerid, "ChannelID", listitem + 1);
  197. if(SANShows[listitem+1][ChannelType] != 1) SAN_WatchTV(playerid, listitem+1);
  198. else SAN_ListenRadio(playerid, listitem+1);
  199. return 1;
  200. }
  201. }
  202. return 1;
  203. }
  204. case DIALOG_SAN_SHOWS_EDIT:
  205. {
  206. if(response)
  207. {
  208. SetPVarInt(playerid, "SAN_EditingChannelID", listitem+1);
  209. SAN_ShowsDialog(playerid, 3);
  210. }
  211. else
  212. {
  213. SAN_ShowsDialog(playerid, 2);
  214. DeletePVar(playerid, "SAN_EditingChannelID");
  215. }
  216. return 1;
  217. }
  218. case DIALOG_SAN_SHOWS_EDIT2:
  219. {
  220. if(response)
  221. {
  222. switch(listitem)
  223. {
  224. case 0:
  225. {
  226. ShowPlayerDialogEx(playerid, DIALOG_SAN_SHOWS_NAME, DIALOG_STYLE_INPUT, "SAN Shows | Name", "Type the new name of the show.", "Enter", "Cancel");
  227. }
  228. case 1:
  229. {
  230. ShowPlayerDialogEx(playerid, DIALOG_SAN_SHOWS_HOST, DIALOG_STYLE_INPUT, "SAN Shows | Host", "Type the name of the show's host(s).", "Enter", "Cancel");
  231. }
  232. case 2:
  233. {
  234. ShowPlayerDialogEx(playerid, DIALOG_SAN_SHOWS_GLOBAL, DIALOG_STYLE_LIST, "SAN Shows | Global Channels", "Enable Global Channels\nDisable Global Channels", "Enter", "Cancel");
  235. }
  236. case 3:
  237. {
  238. ShowPlayerDialogEx(playerid, DIALOG_SAN_SHOWS_TYPE, DIALOG_STYLE_LIST, "SAN Shows | Show Type", "TV Show\nRadio Show\nCustom Show", "Enter", "Cancel");
  239. }
  240. case 4:
  241. {
  242. ShowPlayerDialogEx(playerid, DIALOG_SAN_SHOWS_TOGGLE, DIALOG_STYLE_LIST, "SAN Shows | Start / Stop Broadcast", "{EEFFEE}START {FFFFFF}Broadcast\n{FFDDDD}STOP {FFFFFF}Broadcast", "Enter", "Cancel");
  243. }
  244. }
  245. return 1;
  246. }
  247. else
  248. {
  249. SAN_ShowsDialog(playerid, 1);
  250. }
  251. }
  252. case DIALOG_SAN_SHOWS_GLOBAL:
  253. {
  254. if(response)
  255. {
  256. new channel = GetPVarInt(playerid, "SAN_EditingChannelID");
  257. switch(listitem)
  258. {
  259. case 0: SANShows[channel][Global] = 0;
  260. case 1: SANShows[channel][Global] = 1;
  261. }
  262. return SAN_ShowsDialog(playerid, 3);
  263. }
  264. else return SAN_ShowsDialog(playerid, 3);
  265. }
  266. case DIALOG_SAN_SHOWS_TYPE:
  267. {
  268. if(response)
  269. {
  270. new channel = GetPVarInt(playerid, "SAN_EditingChannelID");
  271. switch(listitem)
  272. {
  273. case 0:
  274. {
  275. SANShows[channel][ChannelType] = 0;
  276. format(SANShows[channel][szChannelType], 12, "TV");
  277. }
  278. case 1:
  279. {
  280. SANShows[channel][ChannelType] = 1;
  281. format(SANShows[channel][szChannelType], 12, "RADIO");
  282. }
  283. case 2:
  284. {
  285. SANShows[channel][ChannelType] = 2;
  286. format(SANShows[channel][szChannelType], 12, "%s", inputtext);
  287. }
  288. }
  289. return SAN_ShowsDialog(playerid, 3);
  290. }
  291. else return SAN_ShowsDialog(playerid, 3);
  292. }
  293. case DIALOG_SAN_SHOWS_TOGGLE:
  294. {
  295. if(response)
  296. {
  297. new channel = GetPVarInt(playerid, "SAN_EditingChannelID");
  298. switch(listitem)
  299. {
  300. case 0:
  301. {
  302. if(isnull(SANShows[channel][szChannelType])) return ShowPlayerDialogEx(playerid, DIALOG_SAN_SHOWS_TYPE, DIALOG_STYLE_LIST, "SAN Shows | Show Type | FORGOTTEN!", "TV Show\nRadio Show\nCustom Show", "Enter", "Cancel");
  303. if(SANShows[channel][Global] == 0 && strfind(SANShows[channel][szChannelType], "[G]", true) == -1) format(SANShows[channel][szChannelType], 32, "[G] %s", SANShows[channel][szChannelType]);
  304. SANShows[channel][ChannelActive] = 1;
  305. SAN_Broadcast(playerid, channel);
  306. }
  307. case 1:
  308. {
  309. SANShows[channel][ChannelActive] = 0;
  310. SAN_Broadcast(playerid, channel);
  311. }
  312. }
  313. return SAN_ShowsDialog(playerid, 3);
  314. }
  315. else return SAN_ShowsDialog(playerid, 3);
  316. }
  317. case DIALOG_SAN_SHOWS_NAME:
  318. {
  319. if(response)
  320. {
  321. new channel = GetPVarInt(playerid, "SAN_EditingChannelID");
  322. format(SANShows[channel][ChannelName], 64, "%s", inputtext);
  323. UpdateSANewsBroadcast(channel);
  324. SAN_ShowsDialog(playerid, 3);
  325. return 1;
  326. }
  327. else return SAN_ShowsDialog(playerid, 3);
  328. }
  329. case DIALOG_SAN_SHOWS_HOST:
  330. {
  331. if(response)
  332. {
  333. new channel = GetPVarInt(playerid, "SAN_EditingChannelID");
  334. if(!isnull(inputtext))
  335. {
  336. format(SANShows[channel][Hosts], 64, "%s", inputtext);
  337. }
  338. UpdateSANewsBroadcast(channel);
  339. SAN_ShowsDialog(playerid, 3);
  340. return 1;
  341. }
  342. else return SAN_ShowsDialog(playerid, 3);
  343. }
  344. case DIALOG_SAN_CAMERAMAN:
  345. {
  346. if(response)
  347. {
  348. switch(listitem)
  349. {
  350. case 0:
  351. {
  352. cmd_cameraman(playerid, "");
  353. }
  354. case 1:
  355. {
  356. SetPVarInt(playerid, "CameramanChannelID", 1);
  357. SAN_ShowsDialog(playerid, 0);
  358. }
  359. case 2:
  360. {
  361. format(szMiscArray, sizeof(szMiscArray), "<----- Static Camera Menu\n\
  362. ----------- DYNAMIC CAMERA MENU -----------\n\
  363. Preview Point A\n\
  364. Set Point A\n\
  365. Preview Point B\n\
  366. Set Point B\n\
  367. ------------------------------------------\n\
  368. Preview point-to-point camera\n\
  369. Finish & Broadcast");
  370. ShowPlayerDialogEx(playerid, DIALOG_SAN_DCAMERAMAN, DIALOG_STYLE_LIST, "SA News | Dynamic Camera Menu", szMiscArray, "Select", "Cancel");
  371. }
  372. case 3:
  373. {
  374. return 1;
  375. }
  376. case 4:
  377. {
  378. SAN_Process_Cameraman(playerid, SAN_CAMERAMAN_SET, GetPVarInt(playerid, "ChannelID_FMEM"));
  379. }
  380. case 5:
  381. {
  382. SAN_Process_Cameraman(playerid, SAN_CAMERAMAN_STOP, GetPVarInt(playerid, "ChannelID_FMEM"));
  383. }
  384. case 6:
  385. {
  386. SAN_Process_Cameraman(playerid, SAN_CAMERAMAN_PREVIEW, GetPVarInt(playerid, "ChannelID_FMEM"));
  387. }
  388. case 7:
  389. {
  390. return 1;
  391. }
  392. case 8:
  393. {
  394. SAN_Process_Cameraman(playerid, SAN_CAMERAMAN_BROADCAST, GetPVarInt(playerid, "ChannelID_FMEM"));
  395. }
  396. case 9:
  397. {
  398. SAN_Process_Cameraman(playerid, SAN_CAMERAMAN_BIRDSEYE, GetPVarInt(playerid, "ChannelID_FMEM"));
  399. }
  400. case 10:
  401. {
  402. SAN_Process_Cameraman(playerid, SAN_CAMERAMAN_VEHICLE, GetPVarInt(playerid, "ChannelID_FMEM"));
  403. }
  404. case 11:
  405. {
  406. SAN_Process_Cameraman(playerid, SAN_CAMERAMAN_LOGOUT, GetPVarInt(playerid, "ChannelID_FMEM"));
  407. }
  408. }
  409. }
  410. }
  411. case DIALOG_SAN_DCAMERAMAN:
  412. {
  413. if(response)
  414. {
  415. switch(listitem)
  416. {
  417. case 0:
  418. {
  419. cmd_cameraman(playerid, "");
  420. }
  421. case 1:
  422. {
  423. return 1;
  424. }
  425. case 2:
  426. {
  427. SAN_Process_Cameraman(playerid, SAN_CAMERAMAN_SETPOINTA, GetPVarInt(playerid, "ChannelID_FMEM"));
  428. }
  429. case 3:
  430. {
  431. SAN_Process_Cameraman(playerid, SAN_CAMERAMAN_POINTA, GetPVarInt(playerid, "ChannelID_FMEM"));
  432. }
  433. case 4:
  434. {
  435. SAN_Process_Cameraman(playerid, SAN_CAMERAMAN_SETPOINTB, GetPVarInt(playerid, "ChannelID_FMEM"));
  436. }
  437. case 5:
  438. {
  439. SAN_Process_Cameraman(playerid, SAN_CAMERAMAN_POINTB, GetPVarInt(playerid, "ChannelID_FMEM"));
  440. }
  441. case 6:
  442. {
  443. return 1;
  444. }
  445. case 7:
  446. {
  447. SAN_Process_Cameraman(playerid, SAN_CAMERAMAN_PINTERPOLATE, GetPVarInt(playerid, "ChannelID_FMEM"));
  448. }
  449. case 8:
  450. {
  451. SAN_Process_Cameraman(playerid, SAN_CAMERAMAN_INTERPOLATE, GetPVarInt(playerid, "ChannelID_FMEM"));
  452. }
  453. }
  454. }
  455. }
  456. case DIALOG_SAN_DIRECTOR:
  457. {
  458. if(response)
  459. {
  460. switch(listitem)
  461. {
  462. case 0:
  463. {
  464. cmd_bdirector(playerid, "");
  465. }
  466. case 1:
  467. {
  468. SetPVarInt(playerid, "DirectorChannelID", 1);
  469. SAN_ShowsDialog(playerid, 0);
  470. }
  471. case 2:
  472. {
  473. SAN_ShowsDialog(playerid, 2);
  474. }
  475. case 3:
  476. {
  477. SAN_Process_Director(playerid, SAN_DIRECTOR_PREVIEW, GetPVarInt(playerid, "ChannelID_FMEM"));
  478. }
  479. case 4:
  480. {
  481. SAN_Process_ListCameras(playerid, GetPVarInt(playerid, "ChannelID_FMEM"));
  482. }
  483. case 5:
  484. {
  485. SAN_Process_Director(playerid, SAN_DIRECTOR_STOP, GetPVarInt(playerid, "ChannelID_FMEM"));
  486. }
  487. case 6:
  488. {
  489. SAN_Process_Director(playerid, SAN_DIRECTOR_PSTREAM, GetPVarInt(playerid, "ChannelID_FMEM"));
  490. }
  491. case 7:
  492. {
  493. cmd_bdirector(playerid, "");
  494. }
  495. case 8:
  496. {
  497. SAN_Process_Director(playerid, SAN_DIRECTOR_BROADCAST, GetPVarInt(playerid, "ChannelID_FMEM"));
  498. }
  499. case 9:
  500. {
  501. SAN_Process_Director(playerid, SAN_DIRECTOR_BIRDSEYE, GetPVarInt(playerid, "ChannelID_FMEM"));
  502. }
  503. case 10:
  504. {
  505. SAN_Process_Director(playerid, SAN_DIRECTOR_INTERPOLATE, GetPVarInt(playerid, "ChannelID_FMEM"));
  506. }
  507. case 11:
  508. {
  509. SAN_Process_Director(playerid, SAN_DIRECTOR_VEHICLE, GetPVarInt(playerid, "ChannelID_FMEM"));
  510. }
  511. case 12:
  512. {
  513. SAN_Process_Director(playerid, SAN_DIRECTOR_BSTREAM, GetPVarInt(playerid, "ChannelID_FMEM"));
  514. }
  515. case 13:
  516. {
  517. cmd_bdirector(playerid, "");
  518. }
  519. case 14:
  520. {
  521. SAN_Process_Director(playerid, SAN_DIRECTOR_STARTCAM, GetPVarInt(playerid, "ChannelID_FMEM"));
  522. }
  523. case 15:
  524. {
  525. SAN_Process_Director(playerid, SAN_DIRECTOR_STOPCAM, GetPVarInt(playerid, "ChannelID_FMEM"));
  526. }
  527. case 16:
  528. {
  529. cmd_bdirector(playerid, "");
  530. }
  531. case 17:
  532. {
  533. SAN_Process_Director(playerid, SAN_DIRECTOR_LOGOUT, GetPVarInt(playerid, "ChannelID_FMEM"));
  534. }
  535. }
  536. }
  537. }
  538. case DIALOG_SAN_CAMLIST:
  539. {
  540. if(response)
  541. {
  542. new szTitle[32];
  543. SetPVarInt(playerid, "ListItemID_Cameras", ListItemTrackID_Cameras[playerid][listitem]);
  544. format(szTitle, sizeof(szTitle), "SAN | Camera List | Channel %i", GetPVarInt(playerid, "ChannelID_FMEM"));
  545. format(szMiscArray, sizeof(szMiscArray), "Preview %s's camera\nBroadcast %s's camera", GetPlayerNameEx(ListItemTrackID_Cameras[playerid][listitem]), GetPlayerNameEx(ListItemTrackID_Cameras[playerid][listitem]));
  546. ShowPlayerDialogEx(playerid, DIALOG_SAN_CAMLIST2, DIALOG_STYLE_LIST, szTitle, szMiscArray, "Select", "Cancel");
  547. }
  548. else
  549. {
  550. DeletePVar(playerid, "ListItemID_Cameras");
  551. cmd_bdirector(playerid, "");
  552. }
  553. }
  554. case DIALOG_SAN_CAMLIST2:
  555. {
  556. if(response)
  557. {
  558. switch(listitem)
  559. {
  560. case 0:
  561. {
  562. if(GetPVarType(playerid, "PreviewingTV")) return SendClientMessage(playerid, COLOR_GRAD1, "You are already previewing a camera angle.");
  563. SAN_Process_StartPreview(playerid, GetPVarInt(playerid, "ListItemID_Cameras"));
  564. }
  565. case 1:
  566. {
  567. switch(GetPVarInt(GetPVarInt(playerid, "ListItemID_Cameras"), "iCameraman_Type"))
  568. {
  569. case 1:
  570. {
  571. cameraangle = 1;
  572. SAN_Process_Camera(GetPVarInt(playerid, "ListItemID_Cameras"), GetPVarInt(playerid, "ChannelID_FMEM"));
  573. }
  574. case 2:
  575. {
  576. cameraangle = 4;
  577. SAN_Process_Camera(GetPVarInt(playerid, "ListItemID_Cameras"), GetPVarInt(playerid, "ChannelID_FMEM"));
  578. }
  579. case 3:
  580. {
  581. cameraangle = 7;
  582. SAN_Process_Camera(GetPVarInt(playerid, "ListItemID_Cameras"), GetPVarInt(playerid, "ChannelID_FMEM"));
  583. }
  584. }
  585. }
  586. }
  587. }
  588. else
  589. {
  590. DeletePVar(playerid, "ListItemID_Cameras");
  591. SAN_Process_ListCameras(playerid, GetPVarInt(playerid, "ChannelID_FMEM"));
  592. }
  593. }
  594. case DIALOG_SAN_PSTREAM:
  595. {
  596. if(response)
  597. {
  598. new Float:X, Float:Y, Float:Z;
  599. GetPlayerPos(playerid, X, Y, Z);
  600. format(SANShows[GetPVarInt(playerid, "ChannelID_FMEM")][szStream], 128, inputtext);
  601. PlayAudioStreamForPlayer(playerid, inputtext);
  602. SendClientMessage(playerid, COLOR_LIGHTBLUE, "Press 'N' to stop previewing the stream.");
  603. SetPVarInt(playerid, "SAN_PreviewingStream", 1);
  604. }
  605. cmd_bdirector(playerid, "");
  606. }
  607. case DIALOG_SAN_BSTREAM:
  608. {
  609. if(response)
  610. {
  611. if(isnull(SANShows[GetPVarInt(playerid, "ChannelID_FMEM")][szStream]) || GetPVarInt(playerid, "SAN_PreviewingStream") == 0) return SendClientMessage(playerid, COLOR_GRAD1, "You haven't previewed your stream yet.");
  612. DeletePVar(playerid, "SAN_PreviewingStream");
  613. foreach(Player, i)
  614. {
  615. if(GetPVarType(i, "WatchingTV"))
  616. {
  617. PlayAudioStreamForPlayer(i, SANShows[GetPVarInt(playerid, "ChannelID")][szStream]);
  618. SendClientMessage(i, COLOR_LIGHTBLUE, "[SAN] Stream started. Press 'N' to mute it.");
  619. SetPVarInt(i, "SAN_PlayingStream", 1);
  620. }
  621. }
  622. }
  623. cmd_bdirector(playerid, "");
  624. }
  625. }
  626. return 0;
  627. }
  628. hook OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  629. {
  630. if(newkeys & KEY_NO)
  631. {
  632. if(GetPVarType(playerid, "PreviewingTV"))
  633. {
  634. SAN_Process_Cameraman(playerid, SAN_CAMERAMAN_STOP, GetPVarInt(playerid, "ChannelID_FMEM"));
  635. }
  636. if(GetPVarType(playerid, "SAN_PlayingStream")) StopAudioStreamForPlayer(playerid);
  637. }
  638. if(newkeys & KEY_CROUCH)
  639. {
  640. if(GetPVarType(playerid, "PreviewingTV"))
  641. {
  642. new channel = GetPVarInt(playerid, "ChannelID_FMEM");
  643. if(GetPVarInt(playerid, "iCameraman_Type") == 1)
  644. {
  645. CameramanFloats[channel][playerid][2] += 0.25;
  646. SetPlayerCameraPos(playerid, CameramanFloats[channel][playerid][0], CameramanFloats[channel][playerid][1], CameramanFloats[channel][playerid][2]);
  647. SetPlayerCameraLookAt(playerid, CameramanFloats[channel][playerid][0]+CameramanFVFloats[channel][playerid][0], CameramanFloats[channel][playerid][1]+CameramanFVFloats[channel][playerid][1], CameramanFloats[channel][playerid][2]+CameramanFVFloats[channel][playerid][2]);
  648. }
  649. else
  650. {
  651. if(GetPVarInt(playerid, "ICamPointA") == 1)
  652. {
  653. ICCameramanFloats[channel][playerid][2] += 0.25;
  654. SetPlayerCameraPos(playerid, ICCameramanFloats[channel][playerid][0], ICCameramanFloats[channel][playerid][1], ICCameramanFloats[channel][playerid][2]);
  655. SetPlayerCameraLookAt(playerid, ICCameramanFloats[channel][playerid][0]+ICCameramanFVFloats[channel][playerid][0], ICCameramanFloats[channel][playerid][1]+ICCameramanFVFloats[channel][playerid][1], ICCameramanFloats[channel][playerid][2]+ICCameramanFVFloats[channel][playerid][2]);
  656. }
  657. else
  658. {
  659. ICCameramanFloats[channel][playerid][5] += 0.25;
  660. ICCameramanFVFloats[channel][playerid][5] += 0.25;
  661. SetPlayerCameraPos(playerid, ICCameramanFloats[channel][playerid][3], ICCameramanFloats[channel][playerid][4], ICCameramanFloats[channel][playerid][5]);
  662. SetPlayerCameraLookAt(playerid, ICCameramanFloats[channel][playerid][3]+ICCameramanFVFloats[channel][playerid][3], ICCameramanFloats[channel][playerid][4]+ICCameramanFVFloats[channel][playerid][4], ICCameramanFloats[channel][playerid][5]+ICCameramanFVFloats[channel][playerid][5]);
  663. }
  664. }
  665. }
  666. }
  667. if(newkeys & KEY_SPRINT)
  668. {
  669. if(GetPVarType(playerid, "PreviewingTV"))
  670. {
  671. new channel = GetPVarInt(playerid, "ChannelID_FMEM");
  672. CameramanFloats[channel][playerid][2] -= 0.25;
  673. SetPlayerCameraPos(playerid, CameramanFloats[channel][playerid][0], CameramanFloats[channel][playerid][1], CameramanFloats[channel][playerid][2]);
  674. SetPlayerCameraLookAt(playerid, CameramanFloats[channel][playerid][0]+CameramanFVFloats[channel][playerid][0], CameramanFloats[channel][playerid][1]+CameramanFVFloats[channel][playerid][1], CameramanFloats[channel][playerid][2]+CameramanFVFloats[channel][playerid][2]);
  675. }
  676. }
  677. return 1;
  678. }
  679. forward SAN_Init(choice);
  680. public SAN_Init(choice)
  681. {
  682. switch(choice)
  683. {
  684. case 0:
  685. {
  686. SAN_InitTextDraws();
  687. }
  688. case 1: {}
  689. }
  690. }
  691. forward SAN_PInit(playerid, choice);
  692. public SAN_PInit(playerid, choice)
  693. {
  694. switch(choice)
  695. {
  696. case 0:
  697. {
  698. TalkingLive[playerid] = INVALID_PLAYER_ID;
  699. }
  700. }
  701. }
  702. forward TVNews(color, string[], channel);
  703. public TVNews(color, string[], channel)
  704. {
  705. foreach(Player, i)
  706. {
  707. if(!gNews[i])
  708. {
  709. if(SANShows[channel][ChannelActive] == 1 && SANShows[channel][Global] == 0) return SendClientMessage(i, color, szMiscArray);
  710. if((SANShows[channel][ChannelActive] == 1 && SANShows[channel][Global] == 1 && GetPVarInt(i, "ChannelID") == channel)) return SendClientMessage(i, color, szMiscArray);
  711. }
  712. }
  713. return 1;
  714. }
  715. forward SAN_Viewers(playerid);
  716. public SAN_Viewers(playerid)
  717. {
  718. szMiscArray[0] = 0;
  719. foreach(Player, i)
  720. {
  721. if(GetPVarType(i, "WatchingTV"))
  722. {
  723. format(szMiscArray, sizeof(szMiscArray), "%s[CH. %i] || %s\n", szMiscArray, GetPVarInt(i, "ChannelID"), GetPlayerNameEx(i));
  724. }
  725. }
  726. if(isnull(szMiscArray)) return SendClientMessage(playerid, COLOR_GRAD1, "There are no viewers.");
  727. else ShowPlayerDialogEx(playerid, DIALOG_SAN_VIEWERS, DIALOG_STYLE_LIST, "SAN | Viewer List", szMiscArray, "--", "--");
  728. return 1;
  729. }
  730. forward SAN_ShowsDialog(playerid, choice);
  731. public SAN_ShowsDialog(playerid, choice)
  732. {
  733. szMiscArray[0] = 0;
  734. new szDialogLine[129],
  735. szTitle[64];
  736. for(new channel = 1; channel < MAX_SANCHANNELS; channel++)
  737. {
  738. switch(choice)
  739. {
  740. case 0 .. 1:
  741. {
  742. if(!isnull(SANShows[channel][ChannelName]))
  743. {
  744. switch(SANShows[channel][ChannelActive])
  745. {
  746. case 0:
  747. {
  748. format(szDialogLine, sizeof(szDialogLine), "{FF3232}[OFF] {FFFFFF}- [CH. %i] || {FFA500}%s {FFFFFF}|| Host: {32CD80}%s {FFFFFF}|| %s\n", channel, SANShows[channel][ChannelName], SANShows[channel][Hosts], SANShows[channel][szChannelType]);
  749. format(szMiscArray, sizeof(szMiscArray), "%s%s\n", szMiscArray, szDialogLine);
  750. }
  751. case 1:
  752. {
  753. format(szDialogLine, sizeof(szDialogLine), "{7CFC00}[ON] {FFFFFF}- [CH. %i] || {FFA500}%s {FFFFFF}|| Host: {32CD80}%s {FFFFFF}|| %s", channel, SANShows[channel][ChannelName], SANShows[channel][Hosts], SANShows[channel][szChannelType]);
  754. format(szMiscArray, sizeof(szMiscArray), "%s%s\n", szMiscArray, szDialogLine);
  755. }
  756. }
  757. }
  758. else
  759. {
  760. switch(SANShows[channel][ChannelActive])
  761. {
  762. case 0: format(szMiscArray, sizeof(szMiscArray), "%s{FF3232}[OFF] {FFFFFF}- [CH. %i] || ------ || Host: -- || --\n", szMiscArray, channel);
  763. case 1: format(szMiscArray, sizeof(szMiscArray), "%s {7CFC00}[ON] {FFFFFF}- [CH. %i] || ------ || Host: -- || --\n", szMiscArray, channel);
  764. }
  765. }
  766. }
  767. case 2 .. 3:
  768. {
  769. if(shutdown == 1)
  770. {
  771. format(szMiscArray, sizeof(szMiscArray), "__________________________ {FF3232}SYSTEM OFFLINE {FFFFFF}________________\n");
  772. }
  773. else
  774. {
  775. format(szMiscArray, sizeof(szMiscArray), "__________________________ {7CFC00}SYSTEM ONLINE {FFFFFF}__________________________\n");
  776. }
  777. format(szMiscArray, sizeof(szMiscArray),"%sLog in to Channel\nList Shows\nEdit Shows\nLog Out of System", szMiscArray);
  778. }
  779. }
  780. }
  781. switch(choice)
  782. {
  783. case 0: return ShowPlayerDialogEx(playerid, DIALOG_SAN_SHOWS, DIALOG_STYLE_LIST, "SAN Shows | Tune in", szMiscArray, "Select", "Cancel");
  784. case 1: return ShowPlayerDialogEx(playerid, DIALOG_SAN_SHOWS_EDIT, DIALOG_STYLE_LIST, "SAN Shows | Edit Console", szMiscArray, "Select", "Cancel");
  785. case 2: return ShowPlayerDialogEx(playerid, DIALOG_SAN_SHOWS_MENU, DIALOG_STYLE_LIST, "SAN Shows | Menu", szMiscArray, "Select", "Cancel");
  786. case 3:
  787. {
  788. format(szTitle, sizeof(szTitle), "SAN | EDITING: Channel %i | %s", GetPVarInt(playerid, "SAN_EditingChannelID"), SANShows[GetPVarInt(playerid, "SAN_EditingChannelID")][ChannelName]);
  789. format(szMiscArray, sizeof(szMiscArray), "Edit Show Name\nEdit Show Host\nEdit Global Channel Routing\nEdit Show Type\nStart / Stop Broadcast");
  790. ShowPlayerDialogEx(playerid, DIALOG_SAN_SHOWS_EDIT2, DIALOG_STYLE_LIST, szTitle, szMiscArray, "Select", "Cancel");
  791. }
  792. }
  793. return 1;
  794. }
  795. forward SAN_SendRadioMessage(playerid, color, string[]);
  796. public SAN_SendRadioMessage(playerid, color, string[])
  797. {
  798. foreach(Player, i)
  799. {
  800. if(PlayerInfo[i][pMember] == PlayerInfo[playerid][pMember])
  801. SendClientMessage(i, color, szMiscArray);
  802. }
  803. }
  804. /*
  805. forward TVObjects_Spawn();
  806. public TVObjects_Spawn()
  807. {
  808. TVObject[0] = CreateDynamicObject(2318, 1127.79, -1454.52, 17.43, 0.00, 0.00, 180.00);
  809. TVObject[1] = CreateDynamicObject(16101, 1128.36, -1454.57, 6.39, 0.00, 0.00, 0.72),
  810. TVObject[2] = CreateDynamicObject(2318, 1128.41, -1454.51, 17.43, 0.00, 0.00, 180.00),
  811. TVObject[3] = CreateDynamicObject(2318, 1129.03, -1454.50, 17.43, 0.00, 0.00, 180.00),
  812. TVObject[4] = CreateDynamicObject(16101, 1128.36, -1454.57, 6.39, 0.00, 0.00, 0.72);
  813. }
  814. */
  815. /*
  816. forward TVObjects_DeSpawn();
  817. public TVObjects_DeSpawn()
  818. {
  819. for(new i; i < sizeof(TVObject) ; i++)
  820. {
  821. DestroyDynamicObject(TVObject[i]);
  822. }
  823. }
  824. */
  825. forward SAN_Broadcast(playerid, channel);
  826. public SAN_Broadcast(playerid, channel)
  827. {
  828. szMiscArray[0] = 0;
  829. if(IsAReporter(playerid) && PlayerInfo[playerid][pRank] > 1)
  830. {
  831. if(shutdown == 1) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "The news system is currently shut down." );
  832. {
  833. if(isnull(SANShows[channel][Hosts])) format(SANShows[channel][Hosts], 64, "%s", GetPlayerNameEx(playerid));
  834. if(SANShows[channel][ChannelActive] == 1)
  835. {
  836. if(iLastCameraman[channel] == -1)
  837. {
  838. SetPVarInt(playerid, "iCameraman_Type", 1);
  839. cameraangle = 1;
  840. SAN_Process_Camera(playerid, channel);
  841. }
  842. // TV Object is a part of the "TV Hotspots"-system. It basically creates a few objects at a few hotspots where people can do /watchtv. (They can do it inside any interior though).
  843. // TVObjects_Spawn();
  844. // SendClientMessage(playerid, COLOR_LIGHTBLUE, "* You're now broadcasting LIVE.");
  845. broadcasting = 1;
  846. format(szMiscArray, sizeof(szMiscArray), "** %s has started the systems on Channel %i. **", GetPlayerNameEx(playerid), GetPVarInt(playerid, "ChannelID_FMEM"));
  847. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  848. format(szMiscArray, sizeof(szMiscArray), "[SAN]: We will broadcast %s LIVE with %s on Channel %i. (( Use /shows to tune in! ))", SANShows[channel][ChannelName], SANShows[channel][Hosts], channel); // This announces the broadcast to all players.
  849. OOCNews(COLOR_NEWS,szMiscArray);
  850. if(!SANShows[channel][SANews3DText][0])
  851. {
  852. new Float:X, Float:Y;
  853. GetXYInFrontOfPlayer(playerid, X, Y, -1.0);
  854. SANShows[channel][SANews3DText][0] = CreateDynamic3DTextLabel(szMiscArray, COLOR_LIGHTBLUE, X, Y+0.5, CameramanFloats[channel][playerid][2],5.0);
  855. }
  856. UpdateSANewsBroadcast(channel);
  857. }
  858. else
  859. {
  860. SendClientMessage(playerid, COLOR_LIGHTBLUE, "* No longer broadcasting");
  861. broadcasting = 0; // This makes sure we aren't broadcasting anymore.
  862. SANShows[channel][san_iRatings] = 0;
  863. UpdateSANewsBroadcast(channel);
  864. DestroyDynamic3DTextLabel(SANShows[channel][camera]);
  865. foreach(Player, i)
  866. {
  867. if(GetPVarType(i, "WatchingTV"))
  868. {
  869. Character_Actor(i, 1);
  870. SAN_HideTextDraws(i);
  871. SetPlayerVirtualWorld(i, BroadcastLastVW[i]);
  872. PlayerInfo[i][pVW] = BroadcastLastVW[i];
  873. SetPlayerInterior(i, BroadcastLastInt[i]);
  874. PlayerInfo[i][pInt] = BroadcastLastInt[i];
  875. SetPlayerFacingAngle(i, BroadcastFloats[i][0]);
  876. SetCameraBehindPlayer(i);
  877. TogglePlayerSpectating(i, 0);
  878. DeletePVar(i, "ChannelID");
  879. Player_StreamPrep(i, BroadcastFloats[i][1],BroadcastFloats[i][2],BroadcastFloats[i][3], FREEZE_TIME);
  880. DeletePVar(i, "WatchingTV");
  881. SendClientMessage(playerid, COLOR_GRAD1, "The show has been ended by the producers.");
  882. SendClientMessage(playerid, COLOR_GRAD1, "Fetching your character's old position...");
  883. SetTimerEx("SAN_SetPos", 5000, false, "i", i);
  884. }
  885. }
  886. }
  887. }
  888. }
  889. return 1;
  890. }
  891. forward SAN_ListenRadio(playerid, channel);
  892. public SAN_ListenRadio(playerid, channel)
  893. {
  894. szMiscArray[0] = 0;
  895. if(!GetPVarType(playerid, "WatchingTV"))
  896. {
  897. if(GetPVarType(playerid, "ChannelID"))
  898. {
  899. if(GetPVarType(playerid, "PreviewingTV")) return SendClientMessage(playerid, COLOR_GRAD1, "You cannot use this command while previewing a camera angle.");
  900. if(SANShows[channel][ChannelActive] == 0) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Nothing's on that TV Channel!"); // This makes sure that they can't do /watchtv when there's no one broadcasting.
  901. format(szMiscArray, sizeof(szMiscArray), "* %s tunes in to %s on [SAN] Channel %i", GetPlayerNameEx(playerid), SANShows[GetPVarInt(playerid, "ChannelID")][ChannelName], GetPVarInt(playerid, "ChannelID"));
  902. ProxDetector(20.0, playerid, szMiscArray, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
  903. SendClientMessage(playerid, COLOR_LIGHTBLUE, "Type /shows again to stop listening to the radio broadcast.");
  904. SetPVarInt(playerid, "WatchingTV", 1);
  905. // Viewers
  906. SANShows[channel][san_iRatings]++;
  907. UpdateSANewsBroadcast(channel); // Updates the SANews3Dtext.
  908. format(szMiscArray, sizeof(szMiscArray), "[SAN Radio] presents %s, live on Channel %i.", SANShows[channel][Hosts], channel);
  909. SendClientMessage(playerid, COLOR_SANRADIO, szMiscArray);
  910. }
  911. else
  912. {
  913. SendClientMessage(playerid, COLOR_GRAD1, "[SAN] Something went wrong. Please try again later.");
  914. }
  915. }
  916. else
  917. {
  918. format(szMiscArray, sizeof(szMiscArray), "* %s stops following %s on [SAN] Channel %i", GetPlayerNameEx(playerid), SANShows[GetPVarInt(playerid, "ChannelID")][ChannelName], GetPVarInt(playerid, "ChannelID"));
  919. ProxDetector(15.0, playerid, szMiscArray, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
  920. DeletePVar(playerid, "WatchingTV");
  921. DeletePVar(playerid, "ChannelID");
  922. }
  923. return 1;
  924. }
  925. forward SAN_WatchTV(playerid, channel);
  926. public SAN_WatchTV(playerid, channel)
  927. {
  928. szMiscArray[0] = 0;
  929. if(GetPVarType(playerid, "WatchingTV")) {
  930. SAN_StopWatching(playerid);
  931. return 1;
  932. }
  933. for(new i; i < MAX_HOUSES; ++i)
  934. {
  935. if(IsPlayerInRangeOfPoint(playerid, 50, HouseInfo[i][hInteriorX], HouseInfo[i][hInteriorY], HouseInfo[i][hInteriorZ]) && GetPlayerVirtualWorld(playerid) == HouseInfo[i][hIntVW] && GetPlayerInterior(playerid) == HouseInfo[i][hIntIW])
  936. {
  937. if(GetPVarType(playerid, "ChannelID"))
  938. {
  939. if(GetPVarType(playerid, "PreviewingTV")) return SendClientMessage(playerid, COLOR_GRAD1, "You cannot use this command while previewing a camera angle.");
  940. if(SANShows[channel][ChannelActive] == 0) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Nothing's on that TV Channel!"); // This makes sure that they can't do /watchtv when there's no one broadcasting.
  941. format(szMiscArray, sizeof(szMiscArray), "* %s starts watching TV.", GetPlayerNameEx(playerid));
  942. ProxDetector(15.0, playerid, szMiscArray, COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW,COLOR_YELLOW);
  943. SendClientMessage(playerid, COLOR_LIGHTBLUE, "Type /shows again to stop watching TV.");
  944. Character_Actor(playerid, 0);
  945. BroadcastLastVW[playerid] = GetPlayerVirtualWorld(playerid);
  946. BroadcastLastInt[playerid] = GetPlayerInterior(playerid);
  947. SetPVarInt(playerid, "SAN_INT", GetPlayerInterior(playerid));
  948. GetPlayerPos(playerid, BroadcastFloats[playerid][1], BroadcastFloats[playerid][2], BroadcastFloats[playerid][3]);
  949. GetPlayerFacingAngle(playerid, BroadcastFloats[playerid][0]);
  950. SetPVarInt(playerid, "WatchingTV", 1);
  951. // Viewers
  952. SANShows[channel][san_iRatings]++;
  953. UpdateSANewsBroadcast(channel); // Updates the SANews3Dtext.
  954. format(szMiscArray, sizeof(szMiscArray), "[SAN Television] presents %s, live on Channel %i.", SANShows[channel][Hosts], channel);
  955. SendClientMessage(playerid, COLOR_ORANGE, szMiscArray);
  956. SAN_Process_WatchTV(playerid, channel);
  957. return 1;
  958. }
  959. else
  960. {
  961. SAN_StopWatching(playerid);
  962. return 1;
  963. }
  964. }
  965. }
  966. SendClientMessage(playerid, COLOR_GRAD1, "You must be in a house to watch television.");
  967. return 1;
  968. }
  969. SAN_StopWatching(playerid)
  970. {
  971. szMiscArray[0] = 0;
  972. Character_Actor(playerid, 1);
  973. if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING) TogglePlayerSpectating(playerid, 0);
  974. SAN_HideTextDraws(playerid);
  975. Player_StreamPrep(playerid, BroadcastFloats[playerid][1],BroadcastFloats[playerid][2],BroadcastFloats[playerid][3], FREEZE_TIME);
  976. SetPlayerVirtualWorld(playerid, BroadcastLastVW[playerid]);
  977. SetPlayerInterior(playerid, BroadcastLastInt[playerid]);
  978. SetPlayerInterior(playerid, GetPVarInt(playerid, "SAN_INT"));
  979. DeletePVar(playerid, "SAN_INT");
  980. SetPlayerFacingAngle(playerid, BroadcastFloats[playerid][0]);
  981. SetCameraBehindPlayer(playerid);
  982. format(szMiscArray, sizeof(szMiscArray), "* %s stops following %s on [SAN] Channel %i", GetPlayerNameEx(playerid), SANShows[GetPVarInt(playerid, "ChannelID")][ChannelName], GetPVarInt(playerid, "ChannelID"));
  983. ProxDetector(15.0, playerid, szMiscArray, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
  984. DeletePVar(playerid, "WatchingTV");
  985. DeletePVar(playerid, "ChannelID");
  986. SendClientMessage(playerid, COLOR_GRAD1, "Fetching your character's old position...");
  987. SetTimerEx("SAN_SetPos", 5000, false, "i", playerid);
  988. }
  989. forward SAN_Process_WatchTV(playerid, channel);
  990. public SAN_Process_WatchTV(playerid, channel)
  991. {
  992. // Camera angles. They're constantly updated when someone's using /cameraman [choice]. (The "TextDrawHideForPlayer" is used so that the "Technical Difficulties" textdraw isn't displayed).
  993. TogglePlayerSpectating(playerid, 1);
  994. format(szMiscArray, sizeof(szMiscArray), "Channel %d", channel);
  995. TextDrawSetString(TV_text[6], szMiscArray);
  996. TextDrawSetString(TV_text[4], SANShows[GetPVarInt(playerid, "ChannelID")][ChannelName]);
  997. SAN_ShowTextDraws(playerid);
  998. SetPlayerInterior(playerid, GetPVarInt(iLastCameraman[channel], "CameramanLastInt"));
  999. SetPlayerVirtualWorld(playerid, GetPVarInt(iLastCameraman[channel], "CameramanLastVW"));
  1000. TogglePlayerControllable(playerid, 0);
  1001. TextDrawHideForPlayer(playerid, TV_text[11]);
  1002. TextDrawHideForPlayer(playerid, TV_text[12]);
  1003. TextDrawHideForPlayer(playerid, TV_text[13]);
  1004. SetTimerEx("SAN_Process_CameraAngle", 500, false, "ii", playerid, channel);
  1005. }
  1006. forward SAN_Process_CameraAngle(i, channel);
  1007. public SAN_Process_CameraAngle(i, channel)
  1008. {
  1009. if(iLastCameraman[channel] == -1) cameraangle = 0;
  1010. switch(cameraangle)
  1011. {
  1012. case 0:
  1013. {
  1014. SAN_ShowTextDraws(i);
  1015. }
  1016. case 1 .. 3:
  1017. {
  1018. SetPlayerPos(i, CameramanFloats[channel][iLastCameraman[channel]][0], CameramanFloats[channel][iLastCameraman[channel]][1], CameramanFloats[channel][iLastCameraman[channel]][2]-15.0); // Teleports the player 15 meters under the cameraman (in the ground, invisible).
  1019. }
  1020. case 4:
  1021. {
  1022. SetPlayerPos(i, ICCameramanFloats[channel][iLastCameraman[channel]][3], ICCameramanFloats[channel][iLastCameraman[channel]][4], ICCameramanFloats[channel][iLastCameraman[channel]][5]-15.0); // Teleports the player 15 meters under the cameraman (in the ground, invisible).
  1023. }
  1024. case 5:
  1025. {
  1026. SetPlayerPos(i, CameramanFloats[channel][iLastCameraman[channel]][0], CameramanFloats[channel][iLastCameraman[channel]][1], CameramanFloats[channel][iLastCameraman[channel]][2]-15.0); // Teleports the player 15 meters under the cameraman (in the ground, invisible).
  1027. }
  1028. }
  1029. switch(cameraangle)
  1030. {
  1031. case 0:
  1032. {
  1033. SetPlayerCameraPos(i, 735.4360, -1392.6974, 13.6314);
  1034. SetPlayerCameraLookAt(i, 734.8319, -1391.8953, 13.7662);
  1035. }
  1036. case 1:
  1037. {
  1038. SetPlayerCameraPos(i, CameramanFloats[channel][iLastCameraman[channel]][0], CameramanFloats[channel][iLastCameraman[channel]][1], CameramanFloats[channel][iLastCameraman[channel]][2]);
  1039. SetPlayerCameraLookAt(i, CameramanFloats[channel][iLastCameraman[channel]][0]+CameramanFVFloats[channel][iLastCameraman[channel]][0], CameramanFloats[channel][iLastCameraman[channel]][1]+CameramanFVFloats[channel][iLastCameraman[channel]][1], CameramanFloats[channel][iLastCameraman[channel]][2]+CameramanFVFloats[channel][iLastCameraman[channel]][2]);
  1040. }
  1041. case 2:
  1042. {
  1043. InterpolateCameraPos(i, CameramanFloats[channel][iLastCameraman[channel]][0]-10.0,
  1044. CameramanFloats[channel][iLastCameraman[channel]][1],
  1045. CameramanFloats[channel][iLastCameraman[channel]][2]+30.0,
  1046. CameramanFloats[channel][iLastCameraman[channel]][0]-5.0,
  1047. CameramanFloats[channel][iLastCameraman[channel]][1],
  1048. CameramanFloats[channel][iLastCameraman[channel]][2]+20.0, 10000, CAMERA_MOVE);
  1049. InterpolateCameraLookAt(i, CameramanFloats[channel][iLastCameraman[channel]][0]+CameramanFloats[channel][iLastCameraman[channel]][0],
  1050. CameramanFloats[channel][iLastCameraman[channel]][1]+CameramanFloats[channel][iLastCameraman[channel]][1],
  1051. CameramanFloats[channel][iLastCameraman[channel]][2]+CameramanFloats[channel][iLastCameraman[channel]][2],
  1052. CameramanFloats[channel][iLastCameraman[channel]][0]+CameramanFloats[channel][iLastCameraman[channel]][0],
  1053. CameramanFloats[channel][iLastCameraman[channel]][1]+CameramanFloats[channel][iLastCameraman[channel]][1],
  1054. CameramanFloats[channel][iLastCameraman[channel]][2]+CameramanFloats[channel][iLastCameraman[channel]][2], 10000, CAMERA_MOVE);
  1055. }
  1056. case 3:
  1057. {
  1058. SetPlayerCameraPos(i, CameramanFloats[channel][iLastCameraman[channel]][0], CameramanFloats[channel][iLastCameraman[channel]][1], CameramanFloats[channel][iLastCameraman[channel]][2]);
  1059. SetPlayerCameraLookAt(i, CameramanFloats[channel][iLastCameraman[channel]][0]+CameramanFVFloats[channel][iLastCameraman[channel]][0], CameramanFloats[channel][iLastCameraman[channel]][1]+CameramanFVFloats[channel][iLastCameraman[channel]][1], CameramanFloats[channel][iLastCameraman[channel]][2]+CameramanFVFloats[channel][iLastCameraman[channel]][2]);
  1060. }
  1061. case 4:
  1062. {
  1063. InterpolateCameraPos(i, ICCameramanFloats[channel][iLastCameraman[channel]][0], ICCameramanFloats[channel][iLastCameraman[channel]][1], ICCameramanFloats[channel][iLastCameraman[channel]][2], ICCameramanFloats[channel][iLastCameraman[channel]][3], ICCameramanFloats[channel][iLastCameraman[channel]][4], ICCameramanFloats[channel][iLastCameraman[channel]][5], 10000, CAMERA_MOVE);
  1064. InterpolateCameraLookAt(i, ICCameramanFloats[channel][iLastCameraman[channel]][0]+ICCameramanFVFloats[channel][iLastCameraman[channel]][0],
  1065. ICCameramanFloats[channel][iLastCameraman[channel]][1]+ICCameramanFVFloats[channel][iLastCameraman[channel]][1],
  1066. ICCameramanFloats[channel][iLastCameraman[channel]][2]+ICCameramanFVFloats[channel][iLastCameraman[channel]][2],
  1067. ICCameramanFloats[channel][iLastCameraman[channel]][3]+ICCameramanFVFloats[channel][iLastCameraman[channel]][3],
  1068. ICCameramanFloats[channel][iLastCameraman[channel]][4]+ICCameramanFVFloats[channel][iLastCameraman[channel]][4],
  1069. ICCameramanFloats[channel][iLastCameraman[channel]][5]+ICCameramanFVFloats[channel][iLastCameraman[channel]][5], 10000, CAMERA_MOVE);
  1070. }
  1071. case 5:
  1072. {
  1073. SetPlayerCameraPos(i, CameramanFloats[channel][iLastCameraman[channel]][0], CameramanFloats[channel][iLastCameraman[channel]][1], CameramanFloats[channel][iLastCameraman[channel]][2]);
  1074. SetPlayerCameraLookAt(i, CameramanFloats[channel][iLastCameraman[channel]][0]+CameramanFVFloats[channel][iLastCameraman[channel]][0], CameramanFloats[channel][iLastCameraman[channel]][1]+CameramanFVFloats[channel][iLastCameraman[channel]][1], CameramanFloats[channel][iLastCameraman[channel]][2]+CameramanFVFloats[channel][iLastCameraman[channel]][2]);
  1075. }
  1076. case 6 .. 7:
  1077. {
  1078. PlayerSpectateVehicle(i, GetPVarInt(iLastCameraman[channel], "SAN_iVehCam"), SPECTATE_MODE_SIDE);
  1079. }
  1080. }
  1081. }
  1082. forward SAN_ShowTextDraws(playerid);
  1083. public SAN_ShowTextDraws(playerid)
  1084. {
  1085. TextDrawShowForPlayer(playerid, TV_text[0]);
  1086. TextDrawShowForPlayer(playerid, TV_text[1]);
  1087. TextDrawShowForPlayer(playerid, TV_text[2]);
  1088. TextDrawShowForPlayer(playerid, TV_text[3]);
  1089. TextDrawShowForPlayer(playerid, TV_text[4]);
  1090. TextDrawShowForPlayer(playerid, TV_text[5]);
  1091. TextDrawShowForPlayer(playerid, TV_text[6]);
  1092. TextDrawShowForPlayer(playerid, TV_text[7]);
  1093. TextDrawShowForPlayer(playerid, TV_text[8]);
  1094. TextDrawShowForPlayer(playerid, TV_text[9]);
  1095. TextDrawShowForPlayer(playerid, TV_text[10]);
  1096. if(cameraangle == 0)
  1097. {
  1098. TextDrawShowForPlayer(playerid, TV_text[11]);
  1099. TextDrawShowForPlayer(playerid, TV_text[12]);
  1100. TextDrawShowForPlayer(playerid, TV_text[13]);
  1101. }
  1102. }
  1103. forward SAN_HideTextDraws(playerid);
  1104. public SAN_HideTextDraws(playerid)
  1105. {
  1106. TextDrawHideForPlayer(playerid, TV_text[0]);
  1107. TextDrawHideForPlayer(playerid, TV_text[1]);
  1108. TextDrawHideForPlayer(playerid, TV_text[2]);
  1109. TextDrawHideForPlayer(playerid, TV_text[3]);
  1110. TextDrawHideForPlayer(playerid, TV_text[4]);
  1111. TextDrawHideForPlayer(playerid, TV_text[5]);
  1112. TextDrawHideForPlayer(playerid, TV_text[6]);
  1113. TextDrawHideForPlayer(playerid, TV_text[7]);
  1114. TextDrawHideForPlayer(playerid, TV_text[8]);
  1115. TextDrawHideForPlayer(playerid, TV_text[9]);
  1116. TextDrawHideForPlayer(playerid, TV_text[10]);
  1117. TextDrawHideForPlayer(playerid, TV_text[11]);
  1118. TextDrawHideForPlayer(playerid, TV_text[12]);
  1119. TextDrawHideForPlayer(playerid, TV_text[13]);
  1120. }
  1121. forward SAN_Process_Login(playerid);
  1122. public SAN_Process_Login(playerid)
  1123. {
  1124. if(!GetPVarType(playerid, "ChannelID_FMEM"))
  1125. {
  1126. format(szMiscArray, sizeof(szMiscArray), "___________________________ {32CD80} SAN | LOGIN {FFFFFF}____________________\nClick Here to log in to a channel.");
  1127. ShowPlayerDialogEx(playerid, DIALOG_SAN_LOGIN, DIALOG_STYLE_LIST, "SAN | Channel Login Panel", szMiscArray, "Select", "Cancel");
  1128. return 0;
  1129. }
  1130. return 1;
  1131. }
  1132. forward SAN_Process_Logout(playerid);
  1133. public SAN_Process_Logout(playerid)
  1134. {
  1135. szMiscArray[0] = 0;
  1136. if(GetPVarType(playerid, "ChannelID_FMEM"))
  1137. {
  1138. format(szMiscArray, sizeof(szMiscArray), "** %s signed out from Channel %i. **", GetPlayerNameEx(playerid), GetPVarInt(playerid, "ChannelID_FMEM"));
  1139. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  1140. DeletePVar(playerid, "ChannelID");
  1141. DeletePVar(playerid, "ChannelID_FMEM");
  1142. DeletePVar(playerid, "iCameraman_Type");
  1143. }
  1144. else
  1145. {
  1146. SendClientMessage(playerid, COLOR_GRAD1, "You are not signed into a channel.");
  1147. }
  1148. }
  1149. forward SAN_Process_ListCameras(playerid, channel);
  1150. public SAN_Process_ListCameras(playerid, channel)
  1151. {
  1152. szMiscArray[0] = 0;
  1153. new szTitle[32];
  1154. foreach(Player, i)
  1155. {
  1156. if(GetPVarInt(i, "ChannelID_FMEM") == GetPVarInt(playerid, "ChannelID_FMEM"))
  1157. {
  1158. if(CameramanFloats[GetPVarInt(i, "ChannelID_FMEM")][i][1] != 0.0 || ICCameramanFloats[GetPVarInt(i, "ChannelID_FMEM")][i][0] != 0.0 && ICCameramanFloats[GetPVarInt(i, "ChannelID_FMEM")][i][3] != 0.0)
  1159. {
  1160. switch(GetPVarInt(i, "iCameraman_Type"))
  1161. {
  1162. case 1:
  1163. {
  1164. format(szMiscArray, sizeof(szMiscArray), "%s Name: %s || {FFFF99}STATIC\n", szMiscArray, GetPlayerNameEx(i));
  1165. }
  1166. case 2:
  1167. {
  1168. format(szMiscArray, sizeof(szMiscArray), "%s Name: %s || {CCFFCC}DYNAMIC{FFFFFF}\n", szMiscArray, GetPlayerNameEx(i));
  1169. }
  1170. case 3:
  1171. {
  1172. format(szMiscArray, sizeof(szMiscArray), "%s Name: %s || {BBEEFF}VEHICLE{FFFFFF}\n", szMiscArray, GetPlayerNameEx(i));
  1173. }
  1174. }
  1175. }
  1176. if(i == iLastCameraman[channel])
  1177. {
  1178. format(szMiscArray, sizeof(szMiscArray), "%s Name: %s || {4C4CFF}BROADCASTING\n", szMiscArray, GetPlayerNameEx(i));
  1179. }
  1180. ListItemTrackID_Cameras[playerid][GetPVarInt(playerid, "ListItemID_Cameras")] = i;
  1181. SetPVarInt(playerid, "ListItemID_Cameras", GetPVarInt(playerid, "ListItemID_Cameras") + 1);
  1182. SendClientMessage(playerid, COLOR_WHITE, szMiscArray);
  1183. }
  1184. }
  1185. if(!isnull(szMiscArray))
  1186. {
  1187. format(szTitle, sizeof(szTitle), "SAN | Camera List | Channel %i", GetPVarInt(playerid, "ChannelID_FMEM"));
  1188. ShowPlayerDialogEx(playerid, DIALOG_SAN_CAMLIST, DIALOG_STYLE_LIST, szTitle, szMiscArray, "Select", "Cancel");
  1189. }
  1190. else SendClientMessage(playerid, COLOR_GRAD1, "There are no active camera's right now.");
  1191. return 1;
  1192. }
  1193. forward SAN_Process_Cameraman(playerid, choice, channel);
  1194. public SAN_Process_Cameraman(playerid, choice, channel)
  1195. {
  1196. szMiscArray[0] = 0;
  1197. switch(choice)
  1198. {
  1199. case SAN_CAMERAMAN_SET:
  1200. {
  1201. if(GetPVarInt(playerid, "WatchingTV") == 1) return SendClientMessage(playerid, COLOR_GRAD1, "You cannot set an angle when you are already watching the TV.");
  1202. TogglePlayerControllable(playerid, 0);
  1203. if(!GetPVarType(playerid, "PreviewingTV"))
  1204. {
  1205. GetPlayerPos(playerid, CameramanFloats[channel][playerid][0], CameramanFloats[channel][playerid][1], CameramanFloats[channel][playerid][2]);
  1206. GetPlayerCameraFrontVector(playerid,CameramanFVFloats[channel][playerid][0], CameramanFVFloats[channel][playerid][1], CameramanFVFloats[channel][playerid][2]);
  1207. }
  1208. SetPlayerCameraPos(playerid, CameramanFloats[channel][playerid][0], CameramanFloats[channel][playerid][1], CameramanFloats[channel][playerid][2]);
  1209. SetPlayerCameraLookAt(playerid, CameramanFloats[channel][playerid][0]+CameramanFVFloats[channel][playerid][0], CameramanFloats[channel][playerid][1]+CameramanFVFloats[channel][playerid][1], CameramanFloats[channel][playerid][2]+CameramanFVFloats[channel][playerid][2]);
  1210. SetPVarInt(playerid, "PreviewingTV", 1);
  1211. cameraangle = 1;
  1212. GetPlayerPos(playerid, BroadcastFloats[playerid][1], BroadcastFloats[playerid][2], BroadcastFloats[playerid][3]);
  1213. BroadcastLastVW[playerid] = GetPlayerVirtualWorld(playerid);
  1214. BroadcastLastInt[playerid] = GetPlayerInterior(playerid);
  1215. GetPlayerFacingAngle(playerid, BroadcastFloats[playerid][0]);
  1216. SAN_ShowTextDraws(playerid);
  1217. SetPVarInt(playerid, "iCameraman_Type", 1);
  1218. format(szMiscArray, sizeof(szMiscArray), "** [CH. %i] Cameraman %s is setting the camera angle... **", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid));
  1219. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  1220. SendClientMessage(playerid, COLOR_LIGHTBLUE, "Use 'N' to cancel. Use -- '/cameraman' -> Broadcast -- to broadcast the current angle.");
  1221. }
  1222. case SAN_CAMERAMAN_PREVIEW:
  1223. {
  1224. if(iLastCameraman[channel] == -1)
  1225. {
  1226. SendClientMessage(playerid, COLOR_LIGHTBLUE, "* There is no cameraman active.");
  1227. return 1;
  1228. }
  1229. playerid = iLastCameraman[channel];
  1230. // SAN_Process_StartPreview(playerid, iLastCameraman[channel]);
  1231. SetPVarInt(playerid, "PreviewingTV", 1);
  1232. SetPlayerCameraPos(playerid, CameramanFloats[channel][playerid][0], CameramanFloats[channel][playerid][1], CameramanFloats[channel][playerid][2]);
  1233. SetPlayerCameraLookAt(playerid, CameramanFVFloats[channel][playerid][0], CameramanFVFloats[channel][playerid][1], CameramanFVFloats[channel][playerid][2]);
  1234. }
  1235. case SAN_CAMERAMAN_STOP:
  1236. {
  1237. if(GetPVarType(playerid, "PreviewingTV"))
  1238. {
  1239. SAN_Process_StopPreview(playerid);
  1240. }
  1241. else return SendClientMessage(playerid, COLOR_GRAD1, "You were not previewing a camera angle.");
  1242. }
  1243. case SAN_CAMERAMAN_BROADCAST:
  1244. {
  1245. if(GetPVarType(playerid, "WatchingTV")) return SendClientMessage(playerid, COLOR_GRAD1, "You cannot set an angle when you are already watching the TV.");
  1246. // SAN_CreateCamera(playerid, channel);
  1247. iLastCameraman[channel] = playerid;
  1248. SANShows[channel][san_iVehicleID] = 0;
  1249. cameraangle = 1;
  1250. SetPVarInt(playerid, "iCameraman_Type", 1);
  1251. format(szMiscArray, sizeof(szMiscArray), "** [CH. %i] %s is broadcasting his/her camera angle. **", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid));
  1252. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  1253. SAN_Process_Camera(playerid, channel);
  1254. SAN_Process_StopPreview(playerid);
  1255. }
  1256. case SAN_CAMERAMAN_BIRDSEYE:
  1257. {
  1258. SANShows[channel][san_iVehicleID] = 0;
  1259. SetPVarInt(playerid, "iCameraman_Type", 4);
  1260. format(szMiscArray, sizeof(szMiscArray), "** [CH. %i] %s changes the camera angle to the 'Bird's Eye' view. **", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid));
  1261. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  1262. cameraangle = 2;
  1263. SAN_Process_Camera(playerid, channel);
  1264. }
  1265. case SAN_CAMERAMAN_VEHICLE: // Nifty stuff here: The camera is set on the wing/foot of the aircraft. I used the spectate function, and it's working brilliantly (it's really smooth).
  1266. {
  1267. if(IsPlayerInAnyVehicle(playerid))
  1268. {
  1269. iLastCameraman[channel] = playerid;
  1270. SetPVarInt(iLastCameraman[channel], "SAN_iVehCam", GetPlayerVehicleID(playerid));
  1271. SetPVarInt(playerid, "iCameraman_Type", 3);
  1272. SendClientMessage(playerid, 0xFFFFFFAA, "Your camera is now attached to the vehicle.");
  1273. SANShows[channel][san_iVehicleID] = 1;
  1274. cameraangle = 7;
  1275. format(szMiscArray, sizeof(szMiscArray), "** [CH. %i] %s is broadcasting from the &s **", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid), GetVehicleName(GetVehicleModel(GetPVarInt(iLastCameraman[channel], "SAN_iVehCam"))));
  1276. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  1277. SAN_Process_Camera(playerid, channel);
  1278. }
  1279. else
  1280. {
  1281. SendClientMessage(playerid, COLOR_LIGHTBLUE, "* You must be in a vehicle to use this command!");
  1282. return 1;
  1283. }
  1284. }
  1285. case SAN_CAMERAMAN_LOGOUT: // THE QUIT FUNCTION (GET DATA).
  1286. {
  1287. SAN_Process_Logout(playerid);
  1288. }
  1289. case SAN_CAMERAMAN_SETPOINTA: // This allows the cameraman to preview POINT A of the interpolate-camera function.
  1290. {
  1291. if(GetPVarType(playerid, "WatchingTV")) return SendClientMessage(playerid, COLOR_GRAD1, "You cannot set an angle when you are already watching the TV.");
  1292. if(GetPVarType(playerid, "PreviewingTV")) return SendClientMessage(playerid, COLOR_GRAD1, "You are already previewing the camera angle.");
  1293. GetPlayerPos(playerid, BroadcastFloats[playerid][1], BroadcastFloats[playerid][2], BroadcastFloats[playerid][3]);
  1294. BroadcastLastVW[playerid] = GetPlayerVirtualWorld(playerid);
  1295. BroadcastLastInt[playerid] = GetPlayerInterior(playerid);
  1296. GetPlayerFacingAngle(playerid, BroadcastFloats[playerid][0]);
  1297. SetPVarInt(playerid, "PreviewingTV", 1);
  1298. SetPVarInt(playerid, "iCameraman_Type", 2);
  1299. SetPVarInt(playerid, "ICamPointA", 1);
  1300. TogglePlayerControllable(playerid, 0);
  1301. GetPlayerPos(playerid,ICCameramanFloats[channel][playerid][0], ICCameramanFloats[channel][playerid][1], ICCameramanFloats[channel][playerid][2]);
  1302. GetPlayerCameraFrontVector(playerid, ICCameramanFVFloats[channel][playerid][0], ICCameramanFVFloats[channel][playerid][1], ICCameramanFVFloats[channel][playerid][2]);
  1303. SetPlayerCameraPos(playerid, ICCameramanFloats[channel][playerid][0], ICCameramanFloats[channel][playerid][1], ICCameramanFloats[channel][playerid][2]);
  1304. SetPlayerCameraLookAt(playerid, ICCameramanFloats[channel][playerid][0]+ICCameramanFVFloats[channel][playerid][0], ICCameramanFloats[channel][playerid][1]+ICCameramanFVFloats[channel][playerid][1], ICCameramanFloats[channel][playerid][2]+ICCameramanFVFloats[channel][playerid][2]);
  1305. SAN_ShowTextDraws(playerid);
  1306. }
  1307. case SAN_CAMERAMAN_POINTA:
  1308. {
  1309. if(GetPVarType(playerid, "WatchingTV")) return SendClientMessage(playerid, COLOR_GRAD1, "You cannot set an angle when you are already watching the TV.");
  1310. SetPVarInt(playerid, "iCameraman_Type", 2);
  1311. if(!GetPVarType(playerid, "PreviewingTV"))
  1312. {
  1313. GetPlayerPos(playerid,ICCameramanFloats[channel][playerid][0], ICCameramanFloats[channel][playerid][1], ICCameramanFloats[channel][playerid][2]);
  1314. GetPlayerCameraFrontVector(playerid, ICCameramanFVFloats[channel][playerid][0], ICCameramanFVFloats[channel][playerid][1], ICCameramanFVFloats[channel][playerid][2]);
  1315. }
  1316. format(szMiscArray, sizeof(szMiscArray), "** [CH. %i] %s has set the first interpolate of the camera angle. **", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid));
  1317. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  1318. SAN_Process_StopPreview(playerid);
  1319. }
  1320. case SAN_CAMERAMAN_SETPOINTB:
  1321. {
  1322. if(GetPVarType(playerid, "WatchingTV")) return SendClientMessage(playerid, COLOR_GRAD1, "You cannot set an angle when you are already watching the TV.");
  1323. if(GetPVarType(playerid, "PreviewingTV")) return SendClientMessage(playerid, COLOR_GRAD1, "You are already previewing the camera angle.");
  1324. GetPlayerPos(playerid, BroadcastFloats[playerid][1], BroadcastFloats[playerid][2], BroadcastFloats[playerid][3]);
  1325. BroadcastLastVW[playerid] = GetPlayerVirtualWorld(playerid);
  1326. BroadcastLastInt[playerid] = GetPlayerInterior(playerid);
  1327. GetPlayerFacingAngle(playerid, BroadcastFloats[playerid][0]);
  1328. SetPVarInt(playerid, "iCameraman_Type", 2);
  1329. SetPVarInt(playerid, "PreviewingTV", 1);
  1330. TogglePlayerControllable(playerid, 0);
  1331. GetPlayerPos(playerid,ICCameramanFloats[channel][playerid][3], ICCameramanFloats[channel][playerid][4], ICCameramanFloats[channel][playerid][5]);
  1332. GetPlayerCameraFrontVector(playerid, ICCameramanFVFloats[channel][playerid][3], ICCameramanFVFloats[channel][playerid][4], ICCameramanFVFloats[channel][playerid][5]);
  1333. SetPlayerCameraPos(playerid, ICCameramanFloats[channel][playerid][3], ICCameramanFloats[channel][playerid][4], ICCameramanFloats[channel][playerid][5]);
  1334. SetPlayerCameraLookAt(playerid, ICCameramanFloats[channel][playerid][3]+ICCameramanFVFloats[channel][playerid][3], ICCameramanFloats[channel][playerid][4]+ICCameramanFVFloats[channel][playerid][4], ICCameramanFloats[channel][playerid][5]+ICCameramanFVFloats[channel][playerid][5]);
  1335. SAN_ShowTextDraws(playerid);
  1336. }
  1337. case SAN_CAMERAMAN_POINTB: // This allows the cameraman to finish POINT B of the interpolate-camera function and store the data for the players using /watchtv.
  1338. {
  1339. if(GetPVarType(playerid, "WatchingTV")) return SendClientMessage(playerid, COLOR_GRAD1, "You cannot set an angle when you are already watching the TV.");
  1340. SetPVarInt(playerid, "iCameraman_Type", 2);
  1341. if(!GetPVarType(playerid, "PreviewingTV"))
  1342. {
  1343. GetPlayerPos(playerid,ICCameramanFloats[channel][playerid][3], ICCameramanFloats[channel][playerid][4], ICCameramanFloats[channel][playerid][5]);
  1344. GetPlayerCameraFrontVector(playerid, ICCameramanFVFloats[channel][playerid][3], ICCameramanFVFloats[channel][playerid][4], ICCameramanFVFloats[channel][playerid][5]);
  1345. }
  1346. format(szMiscArray, sizeof(szMiscArray), "** [CH. %i] %s has set the last interpolate of the camera angle. **", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid));
  1347. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  1348. SAN_Process_StopPreview(playerid);
  1349. }
  1350. case SAN_CAMERAMAN_PINTERPOLATE: // The camerman can preview his interpolate settings.
  1351. {
  1352. if(GetPVarType(playerid, "WatchingTV")) return SendClientMessage(playerid, COLOR_GRAD1, "You cannot set an angle when you are already watching the TV.");
  1353. if(GetPVarType(playerid, "PreviewingTV")) return SendClientMessage(playerid, COLOR_GRAD1, "You are already previewing the camera angle.");
  1354. GetPlayerPos(playerid, BroadcastFloats[playerid][1], BroadcastFloats[playerid][2], BroadcastFloats[playerid][3]);
  1355. BroadcastLastVW[playerid] = GetPlayerVirtualWorld(playerid);
  1356. BroadcastLastInt[playerid] = GetPlayerInterior(playerid);
  1357. GetPlayerFacingAngle(playerid, BroadcastFloats[playerid][0]);
  1358. InterpolateCameraPos(playerid, ICCameramanFloats[channel][playerid][0],
  1359. ICCameramanFloats[channel][playerid][1], ICCameramanFloats[channel][playerid][2],
  1360. ICCameramanFloats[channel][playerid][3], ICCameramanFloats[channel][playerid][4],
  1361. ICCameramanFloats[channel][playerid][5], 10000, CAMERA_MOVE);
  1362. InterpolateCameraLookAt(playerid, ICCameramanFloats[channel][playerid][0]+ICCameramanFVFloats[channel][playerid][0],
  1363. ICCameramanFloats[channel][playerid][1]+ICCameramanFVFloats[channel][playerid][1],
  1364. ICCameramanFloats[channel][playerid][2]+ICCameramanFVFloats[channel][playerid][2],
  1365. ICCameramanFloats[channel][playerid][3]+ICCameramanFVFloats[channel][playerid][3],
  1366. ICCameramanFloats[channel][playerid][4]+ICCameramanFVFloats[channel][playerid][4],
  1367. ICCameramanFloats[channel][playerid][5]+ICCameramanFVFloats[channel][playerid][5], 10000, CAMERA_MOVE);
  1368. SetPVarInt(playerid, "PreviewingTV", 1);
  1369. TogglePlayerControllable(playerid, 0);
  1370. SAN_ShowTextDraws(playerid);
  1371. }
  1372. case SAN_CAMERAMAN_INTERPOLATE: // This will finalize the interpolate-camera settings of the cameraman, and stream it to the broadcast (the players using /watchtv).
  1373. {
  1374. if(ICCameramanFloats[channel][playerid][0] == 0.0 || ICCameramanFloats[channel][playerid][3] == 0.0) return SendClientMessage(playerid, COLOR_GRAD1, "To broadcast, you must set up point A and B first.");
  1375. SetPVarInt(playerid, "iCameraman_Type", 2);
  1376. SANShows[channel][san_iVehicleID] = 0;
  1377. cameraangle = 4;
  1378. format(szMiscArray, sizeof(szMiscArray), "** [CH. %i] %s is broadcasting the dynamic (point A-B / interpolate) camera. **", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid));
  1379. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  1380. if(GetPVarType(playerid, "PreviewingTV")) SAN_Process_StopPreview(playerid);
  1381. SAN_Process_Camera(playerid, channel);
  1382. }
  1383. }
  1384. return 1;
  1385. }
  1386. /*
  1387. SAN_CreateCamera(playerid, channel)
  1388. {
  1389. new Float:X, Float:Y, Float:Z, Float:R;
  1390. GetPlayerPos(playerid, X, Y, Z);
  1391. GetPlayerFacingAngle(playerid, R);
  1392. GetXYInFrontOfPlayer(playerid, X, Y, -1.5);
  1393. for(new i; i < MAX_SANCAMERAS; ++i)
  1394. {
  1395. if(!IsValidDynamicObject(SANShows[channel][iCameraObject][i]))
  1396. {
  1397. SANShows[channel][iCameraObject][i] = CreateDynamicObject(18654, X, Y, Z-2.25, 0.00000, 35.00000, 90-R);
  1398. return 1;
  1399. }
  1400. }
  1401. for(new i; i < 6; ++i) DestroyDynamicObject(SANShows[channel][iCameraObject][i]);
  1402. return SendClientMessage(playerid, COLOR_GRAD1, "The maximum spawned cameras has been reached. The server cleaned up 6 SAN cameras.");
  1403. }
  1404. */
  1405. forward SAN_Process_Director(playerid, choice, channel);
  1406. public SAN_Process_Director(playerid, choice, channel)
  1407. {
  1408. szMiscArray[0] = 0;
  1409. switch(choice)
  1410. {
  1411. case SAN_DIRECTOR_PREVIEW:
  1412. {
  1413. if(iLastCameraman[channel] == -1)
  1414. {
  1415. SendClientMessage(playerid, COLOR_LIGHTBLUE, "* There is no cameraman active.");
  1416. return 1;
  1417. }
  1418. SAN_Process_StartPreview(playerid, iLastCameraman[channel]);
  1419. }
  1420. case SAN_DIRECTOR_STOP:
  1421. {
  1422. if(GetPVarType(playerid, "PreviewingTV"))
  1423. {
  1424. if(iLastCameraman[channel] == -1) SendClientMessage(playerid, COLOR_LIGHTBLUE, "* There is no cameraman active.");
  1425. SAN_Process_StopPreview(playerid);
  1426. }
  1427. else return SendClientMessage(playerid, COLOR_GRAD1, "You were not previewing a camera angle.");
  1428. }
  1429. case SAN_DIRECTOR_PSTREAM:
  1430. {
  1431. ShowPlayerDialogEx(playerid, DIALOG_SAN_PSTREAM, DIALOG_STYLE_INPUT, "SAN | Preview Stream", "Paste the link of the stream here.", "Listen", "Cancel");
  1432. }
  1433. case SAN_DIRECTOR_BROADCAST:
  1434. {
  1435. SAN_Process_ListCameras(playerid, GetPVarInt(playerid, "ChannelID_FMEM"));
  1436. }
  1437. case SAN_DIRECTOR_BIRDSEYE:
  1438. {
  1439. if(GetPlayerInterior(iLastCameraman[channel]) == 0)
  1440. {
  1441. if(iLastCameraman[channel] == -1) SendClientMessage(playerid, COLOR_LIGHTBLUE, "* There is no cameraman active.");
  1442. format(szMiscArray, sizeof(szMiscArray), "** [CH. %i] Broadcast Director %s changes the camera angle to the 'Bird's Eye' angle. **", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid));
  1443. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  1444. SANShows[channel][san_iVehicleID] = 0;
  1445. cameraangle = 2;
  1446. DestroyDynamic3DTextLabel(SANShows[channel][camera]);
  1447. SANShows[channel][camera] = CreateDynamic3DTextLabel("*The Camera*",COLOR_RED,CameramanFloats[channel][iLastCameraman[channel]][1], CameramanFloats[channel][iLastCameraman[channel]][1], CameramanFloats[channel][iLastCameraman[channel]][2],15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1);
  1448. SAN_Process_Camera(iLastCameraman[channel], channel);
  1449. }
  1450. else return SendClientMessage(playerid, COLOR_GRAD1, "This camera angle can only be used outside.");
  1451. }
  1452. case SAN_DIRECTOR_INTERPOLATE:
  1453. {
  1454. if(ICCameramanFloats[channel][iLastCameraman[channel]][0] != 0.0)
  1455. {
  1456. format(szMiscArray, sizeof(szMiscArray), "** [CH. %i] Broadcast Director %s is broadcasting the point-to-point camera. **", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid));
  1457. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  1458. SANShows[channel][san_iVehicleID] = 0;
  1459. cameraangle = 4;
  1460. DestroyDynamic3DTextLabel(SANShows[channel][camera]);
  1461. SANShows[channel][camera] = CreateDynamic3DTextLabel("*The Camera*",COLOR_RED,ICCameramanFloats[channel][iLastCameraman[channel]][1],ICCameramanFloats[channel][iLastCameraman[channel]][2],ICCameramanFloats[channel][iLastCameraman[channel]][3],15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1);
  1462. SAN_Process_Camera(iLastCameraman[channel], channel);
  1463. }
  1464. else return SendClientMessage(playerid, COLOR_GRAD1, "No one set up a point-to-point camera yet.");
  1465. }
  1466. case SAN_DIRECTOR_VEHICLE:
  1467. {
  1468. if(SANShows[channel][san_iVehicleID] == 0) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "* There is no vehicle camera active!");
  1469. format(szMiscArray, sizeof(szMiscArray), "** [CH. %i] %s: The camera is now broadcasting from the %s. **", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid), GetVehicleName(GetPVarInt(iLastCameraman[channel], "SAN_iVehCam")));
  1470. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  1471. cameraangle = 7;
  1472. SANShows[channel][san_iVehicleID] = 1;
  1473. SAN_Process_Camera(iLastCameraman[channel], channel);
  1474. }
  1475. case SAN_DIRECTOR_BSTREAM:
  1476. {
  1477. ShowPlayerDialogEx(playerid, DIALOG_SAN_BSTREAM, DIALOG_STYLE_INPUT, "SAN | Preview Stream", "Paste the link of the stream here.", "Listen", "Cancel");
  1478. }
  1479. case SAN_DIRECTOR_STARTCAM:
  1480. {
  1481. SAN_HideTextDraws(playerid);
  1482. cameraangle = 1;
  1483. SANShows[channel][san_iVehicleID] = 0;
  1484. broadcasting = 1;
  1485. SANShows[channel][ChannelActive] = 1;
  1486. format(szMiscArray, sizeof(szMiscArray), "** [CH. %i] %s has started all current cameras. **", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid));
  1487. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  1488. SendClientMessage(playerid, COLOR_LIGHTBLUE, "The TV is now back on air. Use '/cameraangle cameraman' to start setting a camera position.");
  1489. TextDrawHideForAll(TV_text[11]);
  1490. TextDrawHideForAll(TV_text[12]);
  1491. TextDrawHideForAll(TV_text[13]);
  1492. SAN_Process_Camera(iLastCameraman[channel], channel);
  1493. }
  1494. case SAN_DIRECTOR_STOPCAM:
  1495. {
  1496. cameraangle = -1;
  1497. SANShows[channel][san_iVehicleID] = INVALID_VEHICLE_ID;
  1498. format(szMiscArray, sizeof(szMiscArray), "** [CH. %i] %s has stopped the broadcast. **", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid));
  1499. SAN_SendRadioMessage(playerid, RADIO, szMiscArray);
  1500. SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Broadcasting has just been shutdown..");
  1501. broadcasting = 0;
  1502. SANShows[channel][ChannelActive] = 0;
  1503. for(new ichannel; ichannel < MAX_SANCHANNELS; ++ichannel)
  1504. {
  1505. UpdateSANewsBroadcast(ichannel);
  1506. DestroyDynamic3DTextLabel(SANShows[ichannel][camera]);
  1507. }
  1508. foreach(Player, i)
  1509. {
  1510. SAN_Stop(i);
  1511. }
  1512. // SAN_ShowTextDraws(playerid);
  1513. // SAN_Process_Camera(iLastCameraman[channel], channel);
  1514. }
  1515. case SAN_DIRECTOR_LOGOUT:
  1516. {
  1517. SAN_Process_Logout(playerid);
  1518. }
  1519. }
  1520. return 1;
  1521. }
  1522. SAN_Process_StartPreview(playerid, giveplayerid)
  1523. {
  1524. szMiscArray[0] = 0;
  1525. if(GetPVarType(playerid, "WatchingTV")) return SendClientMessage(playerid, COLOR_GRAD1, "You cannot preview an angle when you are already watching the TV.");
  1526. if(GetPVarType(playerid, "PreviewingTV")) return SendClientMessage(playerid, COLOR_GRAD1, "You are already previewing a camera angle.");
  1527. BroadcastLastVW[playerid] = GetPlayerVirtualWorld(playerid);
  1528. BroadcastLastInt[playerid] = GetPlayerInterior(playerid);
  1529. SetPVarInt(playerid, "PreviewingTV", 1);
  1530. format(szMiscArray, sizeof(szMiscArray), "You are viewing %s's camera angle.", GetPlayerNameEx(giveplayerid));
  1531. SendClientMessage(playerid, COLOR_LIGHTBLUE, szMiscArray);
  1532. GetPlayerPos(playerid, BroadcastFloats[playerid][1], BroadcastFloats[playerid][2], BroadcastFloats[playerid][3]);
  1533. GetPlayerFacingAngle(playerid, BroadcastFloats[playerid][0]);
  1534. SendClientMessage(playerid, COLOR_LIGHTBLUE, "Use 'N' to cancel. Use -- '/bdirector' or '/cameraman' -> Broadcast -- to broadcast the current angle.");
  1535. SAN_ShowTextDraws(playerid);
  1536. DeletePVar(playerid, "ListItemID_Cameras");
  1537. TogglePlayerControllable(playerid, 0);
  1538. TogglePlayerSpectating(playerid, 1);
  1539. SetTimerEx("SAN_Process_StartPreview2", 500, false, "ii", playerid, giveplayerid);
  1540. return 1;
  1541. }
  1542. forward SAN_Process_StartPreview2(playerid, giveplayerid);
  1543. public SAN_Process_StartPreview2(playerid, giveplayerid)
  1544. {
  1545. new channel = GetPVarInt(giveplayerid, "ChannelID_FMEM");
  1546. switch(GetPVarInt(giveplayerid, "iCameraman_Type"))
  1547. {
  1548. case 1:
  1549. {
  1550. SetPlayerPos(playerid, CameramanFloats[channel][giveplayerid][0], CameramanFloats[channel][giveplayerid][1], CameramanFloats[channel][giveplayerid][2]-15);
  1551. SetPlayerCameraPos(playerid, CameramanFloats[channel][giveplayerid][0], CameramanFloats[channel][giveplayerid][1], CameramanFloats[channel][giveplayerid][2]);
  1552. SetPlayerCameraLookAt(playerid, CameramanFloats[channel][giveplayerid][0]+CameramanFVFloats[channel][giveplayerid][0], CameramanFloats[channel][giveplayerid][1]+CameramanFVFloats[channel][giveplayerid][1], CameramanFloats[channel][giveplayerid][2]+CameramanFVFloats[channel][giveplayerid][2]);
  1553. }
  1554. case 2:
  1555. {
  1556. SetPlayerPos(playerid, ICCameramanFloats[channel][giveplayerid][0], ICCameramanFloats[channel][giveplayerid][1], ICCameramanFloats[channel][giveplayerid][2]-15);
  1557. InterpolateCameraPos(playerid, ICCameramanFloats[channel][giveplayerid][0],
  1558. ICCameramanFloats[channel][giveplayerid][1],
  1559. ICCameramanFloats[channel][giveplayerid][2],
  1560. ICCameramanFloats[channel][giveplayerid][3],
  1561. ICCameramanFloats[channel][giveplayerid][4],
  1562. ICCameramanFloats[channel][giveplayerid][5], 10000, CAMERA_MOVE);
  1563. InterpolateCameraLookAt(playerid, ICCameramanFloats[channel][giveplayerid][0]+ICCameramanFVFloats[channel][giveplayerid][0],
  1564. ICCameramanFloats[channel][giveplayerid][1]+ICCameramanFVFloats[channel][giveplayerid][1],
  1565. ICCameramanFloats[channel][giveplayerid][2]+ICCameramanFVFloats[channel][giveplayerid][2],
  1566. ICCameramanFloats[channel][giveplayerid][3]+ICCameramanFVFloats[channel][giveplayerid][3],
  1567. ICCameramanFloats[channel][giveplayerid][4]+ICCameramanFVFloats[channel][giveplayerid][4],
  1568. ICCameramanFloats[channel][giveplayerid][5]+ICCameramanFVFloats[channel][giveplayerid][5], 10000, CAMERA_MOVE);
  1569. }
  1570. case 3:
  1571. {
  1572. PlayerSpectateVehicle(playerid, GetPVarInt(iLastCameraman[channel], "SAN_iVehCam"), SPECTATE_MODE_SIDE);
  1573. }
  1574. }
  1575. return 1;
  1576. }
  1577. forward SAN_Process_StopPreview(playerid);
  1578. public SAN_Process_StopPreview(playerid)
  1579. {
  1580. if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING) TogglePlayerSpectating(playerid, 0);
  1581. if(GetPVarType(playerid, "PreviewingTV"))
  1582. {
  1583. SAN_HideTextDraws(playerid);
  1584. DeletePVar(playerid, "ICamPointA");
  1585. Player_StreamPrep(playerid, BroadcastFloats[playerid][1],BroadcastFloats[playerid][2],BroadcastFloats[playerid][3], FREEZE_TIME);
  1586. SetPlayerVirtualWorld(playerid, BroadcastLastVW[playerid]);
  1587. SetPlayerInterior(playerid, BroadcastLastInt[playerid]);
  1588. SetPlayerFacingAngle(playerid, BroadcastFloats[playerid][0]);
  1589. SetCameraBehindPlayer(playerid);
  1590. DeletePVar(playerid, "PreviewingTV");
  1591. }
  1592. }
  1593. forward SAN_Process_Camera(playerid, channel);
  1594. public SAN_Process_Camera(playerid, channel)
  1595. {
  1596. szMiscArray[0] = 0;
  1597. iLastCameraman[channel] = playerid;
  1598. if(GetPVarInt(playerid, "ListItemID_Cameras") != playerid)
  1599. {
  1600. if(GetPVarType(playerid, "PreviewingTV"))
  1601. {
  1602. SAN_HideTextDraws(playerid);
  1603. DeletePVar(playerid, "ICamPointA");
  1604. SetPlayerPos(playerid,BroadcastFloats[playerid][1],BroadcastFloats[playerid][2],BroadcastFloats[playerid][3]);
  1605. Player_StreamPrep(playerid, BroadcastFloats[playerid][1],BroadcastFloats[playerid][2],BroadcastFloats[playerid][3], FREEZE_TIME);
  1606. SetPlayerVirtualWorld(playerid, BroadcastLastVW[playerid]);
  1607. SetPlayerInterior(playerid, BroadcastLastInt[playerid]);
  1608. SetPlayerFacingAngle(playerid, BroadcastFloats[playerid][0]);
  1609. SetCameraBehindPlayer(playerid);
  1610. DeletePVar(playerid, "PreviewingTV");
  1611. }
  1612. }
  1613. if(!GetPVarType(playerid, "ListItemID_Cameras"))
  1614. {
  1615. GetPlayerPos(playerid, CameramanFloats[channel][iLastCameraman[channel]][0], CameramanFloats[channel][iLastCameraman[channel]][1], CameramanFloats[channel][iLastCameraman[channel]][2]);
  1616. GetPlayerCameraFrontVector(playerid, CameramanFVFloats[channel][iLastCameraman[channel]][0], CameramanFVFloats[channel][iLastCameraman[channel]][1], CameramanFVFloats[channel][iLastCameraman[channel]][2]);
  1617. SetPVarInt(playerid, "CameramanLastInt", GetPlayerInterior(playerid));
  1618. SetPVarInt(playerid, "CameramanLastVW", GetPlayerVirtualWorld(playerid));
  1619. }
  1620. if(cameraangle == 6 || cameraangle == 7) SetPVarInt(iLastCameraman[channel], "SAN_iVehCam", GetPlayerVehicleID(playerid));
  1621. DeletePVar(playerid, "ListItemID_Cameras");
  1622. format(szMiscArray, sizeof(szMiscArray), "*SAN | Camera*\n {FFFFFF}Channel: %i\nOperator: %s", channel, GetPlayerNameEx(iLastCameraman[channel]));
  1623. DestroyDynamic3DTextLabel(SANShows[channel][camera]);
  1624. SANShows[channel][camera] = CreateDynamic3DTextLabel(szMiscArray, COLOR_NEWS, CameramanFloats[channel][iLastCameraman[channel]][0], CameramanFloats[channel][iLastCameraman[channel]][1], CameramanFloats[channel][iLastCameraman[channel]][2],15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1);
  1625. // SAN_Create_Camera(playerid, 1);
  1626. foreach(Player,i)
  1627. {
  1628. if(GetPVarType(i, "WatchingTV"))
  1629. {
  1630. if(GetPVarInt(i, "ChannelID") == channel)
  1631. {
  1632. SAN_Process_CameraAngle(i, channel);
  1633. }
  1634. }
  1635. }
  1636. return 1;
  1637. }
  1638. UpdateSANewsBroadcast(channel, ishutdown = 0)
  1639. {
  1640. if(ishutdown == 1) {
  1641. DestroyDynamic3DTextLabel(SANShows[channel][SANews3DText][0]);
  1642. DestroyDynamic3DTextLabel(SANShows[channel][SANews3DText][1]);
  1643. DestroyDynamic3DTextLabel(SANShows[channel][camera]);
  1644. }
  1645. szMiscArray[0] = 0;
  1646. if(SANShows[channel][ChannelActive] == 0)
  1647. {
  1648. format(szMiscArray, sizeof(szMiscArray), "{FFFFFF}MAIN SYSTEM MONITOR\n{32CD80}SAN | Channel {FFFFFF}%i\n{32CD80}Name: {FFFFFF}%s\n{32CD80}Host: {FFFFFF}%s\n{32CD80}View: {FF4C4C}Not Broadcasting\n{32CD80}Viewer Rating: {FFFFFF}- **", channel, SANShows[channel][ChannelName], SANShows[channel][Hosts], SANShows[channel][Hosts]);
  1649. }
  1650. else
  1651. {
  1652. format(szMiscArray, sizeof(szMiscArray), "{FFFFFF}MAIN SYSTEM MONITOR\n{32CD80}SAN | Channel {FFFFFF}%i\n{32CD80}Name: {FFFFFF}%s\n{32CD80}Host: {FFFFFF}%s\n{32CD80}Currently: {7CFC00}Broadcasting\n{32CD80}Viewer Rating: {FFFFFF}%i", channel, SANShows[channel][ChannelName], SANShows[channel][Hosts], SANShows[channel][san_iRatings]);
  1653. }
  1654. UpdateDynamic3DTextLabelText(SANShows[channel][SANews3DText][0], COLOR_LIGHTBLUE, szMiscArray);
  1655. if(broadcasting == 0)
  1656. {
  1657. format(szMiscArray, sizeof(szMiscArray), "{32CD80}SAN | Channel {FFFFFF}%i\n{32CD80}Name: {FFFFFF}%s\n{32CD80}Currently: {FF4C4C}Not Broadcasting\n{32CD80}Viewer Rating: {FFFFFF} **", channel, SANShows[channel][ChannelName]);
  1658. }
  1659. else
  1660. {
  1661. format(szMiscArray, sizeof(szMiscArray), "{32CD80}SAN | Channel {FFFFFF}%i\n{32CD80}Name: {FFFFFF}%s\n{32CD80}Currently: {7CFC00}Broadcasting\n{32CD80}Viewer Rating: {FFFFFF}%i", channel, SANShows[channel][ChannelName], SANShows[channel][san_iRatings]);
  1662. }
  1663. UpdateDynamic3DTextLabelText(SANShows[channel][SANews3DText][1], COLOR_LIGHTBLUE, szMiscArray);
  1664. }
  1665. SAN_Stop(i)
  1666. {
  1667. if(GetPVarType(i, "WatchingTV"))
  1668. {
  1669. SAN_HideTextDraws(i);
  1670. TogglePlayerSpectating(i, 0);
  1671. Character_Actor(i, 1);
  1672. Player_StreamPrep(i,BroadcastFloats[i][1],BroadcastFloats[i][2],BroadcastFloats[i][3], FREEZE_TIME);
  1673. SetPlayerVirtualWorld(i, BroadcastLastVW[i]);
  1674. PlayerInfo[i][pInt] = BroadcastLastVW[i];
  1675. SetPlayerInterior(i, BroadcastLastInt[i]);
  1676. PlayerInfo[i][pInt] = BroadcastLastInt[i];
  1677. SetPlayerFacingAngle(i, BroadcastFloats[i][0]);
  1678. DeletePVar(i, "WatchingTV");
  1679. DeletePVar(i, "ChannelID");
  1680. SendClientMessage(i, COLOR_GRAD1, "Fetching your character's old position...");
  1681. SetTimerEx("SAN_SetPos", 5000, false, "i", i);
  1682. for(new channel; channel < MAX_SANCHANNELS; channel ++)
  1683. {
  1684. SANShows[channel][san_iRatings] = 0;
  1685. UpdateSANewsBroadcast(channel, 1);
  1686. }
  1687. }
  1688. }
  1689. forward SAN_SetPos(i);
  1690. public SAN_SetPos(i) {
  1691. Player_StreamPrep(i, BroadcastFloats[i][1], BroadcastFloats[i][2], BroadcastFloats[i][3], FREEZE_TIME);
  1692. SetPlayerVirtualWorld(i, BroadcastLastVW[i]);
  1693. PlayerInfo[i][pInt] = BroadcastLastVW[i];
  1694. SetPlayerInterior(i, BroadcastLastInt[i]);
  1695. PlayerInfo[i][pInt] = BroadcastLastInt[i];
  1696. SetPlayerFacingAngle(i, BroadcastFloats[i][0]);
  1697. }
  1698. /*
  1699. forward SAN_Create_Camera(playerid, choice);
  1700. public SAN_Create_Camera(playerid, choice)
  1701. {
  1702. new Float:Pos_x, Float:Pos_y, Float:Pos_z, Float:Pos_r;
  1703. GetPlayerPos(playerid, Pos_x, Pos_y, Pos_z);
  1704. Pos_z -= 1.1;
  1705. GetXYInFrontOfPlayer(playerid, Pos_x, Pos_y, -1.5);
  1706. GetPlayerFacingAngle(playerid, Pos_r);
  1707. switch(choice)
  1708. {
  1709. case 1:
  1710. {
  1711. if(GetPVarInt(playerid, "CreatedCamera") == 0)
  1712. {
  1713. SetPVarInt(playerid, "CreatedCamera", 1);
  1714. SAN_Camera_Objects[playerid][0] = CreateDynamicObject(18655, Pos_x+-0.75554, Pos_y+0.02661, Pos_z+-1.08045, 0.00000, 35.00000, 0.00000+Pos_r);
  1715. SAN_Camera_Objects[playerid][1] = CreateDynamicObject(2994, Pos_x+0.38326, Pos_y+0.07556, Pos_z+0.63245, 0.00000, 0.00000, 180.00000+Pos_r);
  1716. SAN_Camera_Objects[playerid][2] = CreateDynamicObject(19279, Pos_x+0.75555, Pos_y+0.07361, Pos_z+0.40515, 345.00000, 0.00000, 270.00000+Pos_r);
  1717. SAN_Camera_Objects[playerid][3] = CreateDynamicObject(2343, Pos_x+-0.36984, Pos_y+-0.07556, Pos_z+1.08045, 0.00000, 0.00000, 0.00000+Pos_r);
  1718. return 1;
  1719. }
  1720. else
  1721. {
  1722. DeletePVar(playerid, "CreatedCamera");
  1723. SetTimerEx("SAN_Create_Camera", 1000, 0, "ii", playerid, 1);
  1724. for(new i; i < sizeof SAN_Camera_Objects; i++)
  1725. {
  1726. DestroyDynamicObject(SAN_Camera_Objects[playerid][i]);
  1727. }
  1728. return 1;
  1729. }
  1730. }
  1731. default:
  1732. {
  1733. for(new i; i < sizeof SAN_Camera_Objects; i++)
  1734. {
  1735. DestroyDynamicObject(SAN_Camera_Objects[playerid][i]);
  1736. }
  1737. return 1;
  1738. }
  1739. }
  1740. return 1;
  1741. }
  1742. */
  1743. CMD:sanhelp(playerid, params[])
  1744. {
  1745. SendClientMessage(playerid, COLOR_WHITE, "----------------------------------------------------------");
  1746. SendClientMessage(playerid, COLOR_LIGHTBLUE, "SAN CMD [TV]: {FFFFFF}/shows | /showmenu | /editshow | /broadcast | /cameraman | /channeldesc");
  1747. SendClientMessage(playerid, COLOR_LIGHTBLUE, "SAN CMD [DIR]: {FFFFFF}/bdirector | /stopnews | /showkick | /sanrank");
  1748. SendClientMessage(playerid, COLOR_LIGHTBLUE, "SAN CMD [CHATS]: {FFFFFF}/news | /live | /show (/sh) | /showinvite | /setchannel");
  1749. SendClientMessage(playerid, COLOR_WHITE, "----------------------------------------------------------");
  1750. return 1;
  1751. }
  1752. CMD:acceptshow(playerid, params[])
  1753. {
  1754. if(GetPVarInt(playerid, "TVOffer") < MAX_PLAYERS) {
  1755. if(IsPlayerConnected(GetPVarInt(playerid, "TVOffer"))) {
  1756. if (ProxDetectorS(5.0, playerid, GetPVarInt(playerid, "TVOffer"))) {
  1757. SendClientMessage(GetPVarInt(playerid, "TVOffer"), COLOR_LIGHTBLUE, "* The player accepted your invite.");
  1758. SendClientMessage(playerid, COLOR_LIGHTBLUE, "* The show has begun! Use '/mic' to talk. (Use /shows to stop).");
  1759. SetPVarInt(playerid, "ChannelID", GetPVarInt(GetPVarInt(playerid, "TVOffer"), "ChannelID_FMEM"));
  1760. DeletePVar(playerid, "ChannelID_FMEM");
  1761. SetPVarInt(playerid, "TalkingTV", GetPVarInt(playerid, "TVOffer"));
  1762. SetPVarInt(GetPVarInt(playerid, "TVOffer"), "TalkingTV", playerid);
  1763. SetPVarInt(playerid, "TVOffer", INVALID_PLAYER_ID);
  1764. return 1;
  1765. }
  1766. else {
  1767. SendClientMessage(playerid, COLOR_GREY, " You are too far away from the News Reporter!");
  1768. return 1;
  1769. }
  1770. }
  1771. }
  1772. return 1;
  1773. }
  1774. CMD:showkick(playerid, params[])
  1775. {
  1776. if(!IsAReporter(playerid)) return SendClientMessage(playerid, COLOR_GRAD1, " You are not a News Reporter.");
  1777. if(!SAN_RankCheck(playerid, 1)) return 1;
  1778. new giveplayerid;
  1779. if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /showkick [playerid]");
  1780. if(GetPVarInt(giveplayerid, "TalkingTV") == GetPVarInt(playerid, "TalkingTV")) return SendClientMessage(playerid, COLOR_GRAD1, "That player is not on the show.");
  1781. SetPVarInt(giveplayerid, "TalkingTV", INVALID_PLAYER_ID);
  1782. SendClientMessage(playerid, COLOR_LIGHTBLUE, "You have successfully kicked the player from the show.");
  1783. SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, "You have been kicked from the show.");
  1784. return 1;
  1785. }
  1786. CMD:stopnews(playerid, params[])
  1787. {
  1788. if(IsAReporter(playerid))
  1789. {
  1790. if(!SAN_RankCheck(playerid, 3)) return 1;
  1791. if(shutdown == 0)
  1792. {
  1793. shutdown = 1;
  1794. SendClientMessage(playerid, COLOR_WHITE, "You have just shutdown the whole news system and are ending anything in progres..." );
  1795. if(broadcasting == 1)
  1796. {
  1797. SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Broadcasting has just been shutdown..");
  1798. broadcasting = 0;
  1799. for(new channel; channel < MAX_SANCHANNELS; channel ++)
  1800. {
  1801. UpdateSANewsBroadcast(channel, 1);
  1802. }
  1803. foreach(Player, i)
  1804. {
  1805. SAN_Stop(i);
  1806. }
  1807. }
  1808. foreach(Player, i)
  1809. {
  1810. if(TalkingLive[i] != INVALID_PLAYER_ID)
  1811. {
  1812. SendClientMessage(i, COLOR_LIGHTBLUE, "* Live conversation ended.");
  1813. SendClientMessage(TalkingLive[i], COLOR_LIGHTBLUE, "* Live conversation ended.");
  1814. TogglePlayerControllable(i, 1);
  1815. TogglePlayerControllable(TalkingLive[i], 1);
  1816. TalkingLive[TalkingLive[i]] = INVALID_PLAYER_ID;
  1817. TalkingLive[i] = INVALID_PLAYER_ID;
  1818. SendClientMessage(i, COLOR_LIGHTBLUE, "* Live has just been shutdown..");
  1819. }
  1820. else if(GetPVarInt(i, "TalkingTV") != INVALID_PLAYER_ID)
  1821. {
  1822. SendClientMessage(i, COLOR_LIGHTBLUE, "* Show ended.");
  1823. SendClientMessage(GetPVarInt(i, "TalkingTV"), COLOR_LIGHTBLUE, "* Show ended.");
  1824. SetPVarInt(GetPVarInt(i, "TalkingTV"), "TalkingTV", INVALID_PLAYER_ID);
  1825. SetPVarInt(i, "TalkingTV", INVALID_PLAYER_ID);
  1826. SendClientMessage(i, COLOR_LIGHTBLUE, "* The show has just been shutdown...");
  1827. }
  1828. }
  1829. }
  1830. else
  1831. {
  1832. shutdown = 0;
  1833. SendClientMessage(playerid, COLOR_WHITE, "You have just turned the news system back on. " );
  1834. }
  1835. }
  1836. return 1;
  1837. }
  1838. // This command 'launches' the broadcast in the air. Until this hasn't been executed, the whole system is in "Training Mode" (People can't use /watchtv).
  1839. CMD:broadcast(playerid, params[])
  1840. {
  1841. if(IsAReporter(playerid))
  1842. {
  1843. if(!SAN_RankCheck(playerid, 2)) return 1;
  1844. if(!GetPVarType(playerid, "ChannelID_FMEM")) return cmd_setchannel(playerid, "");
  1845. if(broadcasting == 0)
  1846. {
  1847. broadcasting = 1;
  1848. SAN_Broadcast(playerid, GetPVarInt(playerid, "ChannelID_FMEM"));
  1849. return 1;
  1850. }
  1851. else
  1852. {
  1853. new channel = GetPVarInt(playerid, "ChannelID_FMEM");
  1854. SANShows[channel][ChannelActive] = 0;
  1855. broadcasting = 0;
  1856. SAN_Broadcast(playerid, channel);
  1857. return 1;
  1858. }
  1859. }
  1860. else
  1861. {
  1862. SendClientMessage(playerid, COLOR_GRAD1, " You are not a News Reporter.");
  1863. }
  1864. return 1;
  1865. }
  1866. CMD:news(playerid, params[])
  1867. {
  1868. szMiscArray[0] = 0;
  1869. if(IsAReporter(playerid))
  1870. {
  1871. if(!SAN_RankCheck(playerid, 0)) return 1;
  1872. if(shutdown == 1) return SendClientMessage(playerid, COLOR_WHITE, "The news system is currently shut down." );
  1873. if(isnull(params)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /news [text]");
  1874. new newcar = GetPlayerVehicleID(playerid);
  1875. if(IsANewsCar(newcar) || IsPlayerInRangeOfPoint(playerid, 35.0, 664.6821,-2.3673,1101.2085) || IsPlayerInRangeOfPoint(playerid, 35.0, 651.1910,-19.9795,1101.2200) || IsPlayerInRangeOfPoint(playerid, 35.0, 646.7300,-6.6966,1101.2085))
  1876. {
  1877. if(PlayerInfo[playerid][pRank] < 1)
  1878. {
  1879. SendClientMessage(playerid, COLOR_GRAD2, "You must be at least rank 1.");
  1880. }
  1881. else
  1882. {
  1883. format(szMiscArray, sizeof(szMiscArray), "NR %s: %s", GetPlayerNameEx(playerid), params);
  1884. OOCNews(COLOR_NEWS, szMiscArray);
  1885. format(szMiscArray, sizeof(szMiscArray), "[NEWS] NR %s: %s", GetPlayerNameEx(playerid), params);
  1886. GroupLog(PlayerInfo[playerid][pMember], szMiscArray);
  1887. }
  1888. }
  1889. else
  1890. {
  1891. SendClientMessage(playerid, COLOR_GREY, "You're not in a news van or chopper or in the studio.");
  1892. return 1;
  1893. }
  1894. }
  1895. else
  1896. {
  1897. SendClientMessage(playerid, COLOR_GREY, " You are not a News Reporter.");
  1898. }
  1899. return 1;
  1900. }
  1901. // -------------------------------------------- NEW COMMANDS BY JINGLES -----------------------------------
  1902. CMD:setchannel(playerid, params[])
  1903. {
  1904. if(IsAReporter(playerid))
  1905. {
  1906. if(!SAN_RankCheck(playerid, 2)) return 1;
  1907. SetPVarInt(playerid, "LoginChannelID", 1);
  1908. SAN_ShowsDialog(playerid, 0);
  1909. }
  1910. else SendClientMessage(playerid, COLOR_GREY, " You are not a News Reporter.");
  1911. return 1;
  1912. }
  1913. // WARNING: Please make sure that people can only use /watchtv in any interior (and mayby at some TV hotspots).
  1914. CMD:watchtv(playerid, params[])
  1915. {
  1916. cmd_shows(playerid, "");
  1917. return 1;
  1918. }
  1919. CMD:viewers(playerid, params[])
  1920. {
  1921. if(IsAReporter(playerid)) SAN_Viewers(playerid);
  1922. else SendClientMessage(playerid, COLOR_GREY, " You are not a News Reporter.");
  1923. return 1;
  1924. }
  1925. CMD:sh(playerid, params[])
  1926. {
  1927. cmd_mic(playerid, "");
  1928. return 1;
  1929. }
  1930. CMD:shows(playerid, params[])
  1931. {
  1932. if(!GetPVarType(playerid, "WatchingTV"))
  1933. {
  1934. SAN_ShowsDialog(playerid, 0);
  1935. }
  1936. else
  1937. {
  1938. if(SANShows[GetPVarInt(playerid, "ChannelID")][ChannelType] != 1)
  1939. {
  1940. SAN_WatchTV(playerid, SAN_INVALID_CHANNEL);
  1941. }
  1942. else
  1943. {
  1944. SAN_ListenRadio(playerid, SAN_INVALID_CHANNEL);
  1945. }
  1946. }
  1947. return 1;
  1948. }
  1949. CMD:mic(playerid, params[])
  1950. {
  1951. szMiscArray[0] = 0;
  1952. if(shutdown == 1) return SendClientMessage(playerid, COLOR_WHITE, "The news system is currently shut down." );
  1953. if(broadcasting == 0) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "* No one is broadcasting!");
  1954. if(isnull(params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /mic [text]");
  1955. if(GetPVarInt(playerid, "ChannelID_FMEM"))
  1956. {
  1957. switch(SANShows[GetPVarInt(playerid, "ChannelID_FMEM")][Global])
  1958. {
  1959. case 0:
  1960. {
  1961. switch(SANShows[GetPVarInt(playerid, "ChannelID_FMEM")][ChannelType])
  1962. {
  1963. case 0:
  1964. {
  1965. format(szMiscArray, sizeof(szMiscArray), "[SAN] Host %s: %s", GetPlayerNameEx(playerid), params);
  1966. TVNews(COLOR_NEWS, szMiscArray, GetPVarInt(playerid, "ChannelID_FMEM"));
  1967. }
  1968. case 1:
  1969. {
  1970. format(szMiscArray, sizeof(szMiscArray), "[SAN] Host %s: %s", GetPlayerNameEx(playerid), params);
  1971. TVNews(COLOR_SANRADIO, szMiscArray, GetPVarInt(playerid, "ChannelID_FMEM"));
  1972. }
  1973. }
  1974. return 1;
  1975. }
  1976. case 1:
  1977. {
  1978. switch(SANShows[GetPVarInt(playerid, "ChannelID_FMEM")][ChannelType])
  1979. {
  1980. case 0:
  1981. {
  1982. format(szMiscArray, sizeof(szMiscArray), "[CH. %i] TV Host %s: %s", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid), params);
  1983. TVNews(COLOR_NEWS, szMiscArray, GetPVarInt(playerid, "ChannelID_FMEM"));
  1984. }
  1985. case 1:
  1986. {
  1987. format(szMiscArray, sizeof(szMiscArray), "[CH. %i] Host %s: %s", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid), params);
  1988. TVNews(COLOR_SANRADIO, szMiscArray, GetPVarInt(playerid, "ChannelID_FMEM"));
  1989. }
  1990. case 2:
  1991. {
  1992. format(szMiscArray, sizeof(szMiscArray), "[CH. %i] [SAN] %s: %s", GetPVarInt(playerid, "ChannelID_FMEM"), GetPlayerNameEx(playerid), params);
  1993. TVNews(COLOR_NEWS, szMiscArray, GetPVarInt(playerid, "ChannelID_FMEM"));
  1994. }
  1995. }
  1996. return 1;
  1997. }
  1998. }
  1999. }
  2000. if(IsAReporter(playerid) && !GetPVarInt(playerid, "ChannelID_FMEM"))
  2001. {
  2002. SendClientMessage(playerid, COLOR_GRAD1, "You are not logged in to a channel. Please login now.");
  2003. return cmd_setchannel(playerid, "");
  2004. }
  2005. if(GetPVarInt(playerid, "ChannelID"))
  2006. {
  2007. if(GetPVarInt(playerid, "TalkingTV") != INVALID_PLAYER_ID)
  2008. {
  2009. switch(SANShows[GetPVarInt(playerid, "ChannelID")][Global])
  2010. {
  2011. case 0:
  2012. {
  2013. switch(SANShows[GetPVarInt(playerid, "ChannelID_FMEM")][ChannelType])
  2014. {
  2015. case 0:
  2016. {
  2017. format(szMiscArray, sizeof(szMiscArray), "[SAN] Guest %s: %s", GetPlayerNameEx(playerid), params);
  2018. TVNews(COLOR_NEWS2, szMiscArray, GetPVarInt(playerid, "ChannelID_FMEM"));
  2019. }
  2020. case 1:
  2021. {
  2022. format(szMiscArray, sizeof(szMiscArray), "[SAN] Guest %s: %s", GetPlayerNameEx(playerid), params);
  2023. TVNews(COLOR_SANRADIO2, szMiscArray, GetPVarInt(playerid, "ChannelID_FMEM"));
  2024. }
  2025. }
  2026. return 1;
  2027. }
  2028. case 1:
  2029. {
  2030. switch(SANShows[GetPVarInt(playerid, "ChannelID")][ChannelType])
  2031. {
  2032. case 0:
  2033. {
  2034. format(szMiscArray, sizeof(szMiscArray), "[CH. %i] TV Guest %s: %s", GetPVarInt(playerid, "ChannelID"), GetPlayerNameEx(playerid), params);
  2035. TVNews(COLOR_NEWS2, szMiscArray, GetPVarInt(playerid, "ChannelID"));
  2036. }
  2037. case 1:
  2038. {
  2039. format(szMiscArray, sizeof(szMiscArray), "[CH. %i] Radio Guest %s: %s", GetPVarInt(playerid, "ChannelID"), GetPlayerNameEx(playerid), params);
  2040. TVNews(COLOR_SANRADIO2, szMiscArray, GetPVarInt(playerid, "ChannelID"));
  2041. }
  2042. case 2:
  2043. {
  2044. format(szMiscArray, sizeof(szMiscArray), "[CH. %i] [SAN] Guest %s: %s", GetPVarInt(playerid, "ChannelID"), GetPlayerNameEx(playerid), params);
  2045. TVNews(COLOR_NEWS2, szMiscArray, GetPVarInt(playerid, "ChannelID"));
  2046. }
  2047. }
  2048. }
  2049. }
  2050. return 1;
  2051. }
  2052. else return SendClientMessage(playerid, COLOR_GRAD1, "You are not on a show.");
  2053. }
  2054. return 1;
  2055. }
  2056. // The TV show invite: People of SA News can invite people to this 'chat channel'.
  2057. CMD:showinvite(playerid, params[])
  2058. {
  2059. szMiscArray[0] = 0;
  2060. if(!IsAReporter(playerid)) return SendClientMessage(playerid, COLOR_GREY, " You are not a News Reporter.");
  2061. if(!SAN_RankCheck(playerid, 1)) return 1;
  2062. if(shutdown == 1) return SendClientMessage(playerid, COLOR_WHITE, "The news system is currently shut down." );
  2063. if(GetPVarType(playerid, "ChannelID_FMEM"))
  2064. {
  2065. new giveplayerid;
  2066. if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /showinvite [playerid]");
  2067. if (IsPlayerConnected(giveplayerid))
  2068. {
  2069. if (ProxDetectorS(5.0, playerid, giveplayerid))
  2070. {
  2071. if(PlayerInfo[giveplayerid][pLiveBanned] == 1) return SendClientMessage(playerid, COLOR_GREY, "That player is banned from the air.");
  2072. if(PlayerCuffed[giveplayerid] >= 1 || PlayerCuffed[playerid] >= 1)
  2073. {
  2074. SendClientMessage(playerid, COLOR_GRAD2, "You are unable to do this right now.");
  2075. }
  2076. else
  2077. {
  2078. if(SANShows[GetPVarInt(playerid, "ChannelID_FMEM")][ChannelType] != 1)
  2079. {
  2080. if(giveplayerid == playerid) return SendClientMessage(playerid, COLOR_GREY, "USAGE: '/mic' to talk on the TV Show!");
  2081. format(szMiscArray, sizeof(szMiscArray), "* You offered %s to participate in the TV Show.", GetPlayerNameEx(giveplayerid));
  2082. SendClientMessage(playerid, COLOR_LIGHTBLUE, szMiscArray);
  2083. format(szMiscArray, sizeof(szMiscArray), "* %s offered you to participate in the TV Show, type /acceptshow to accept.", GetPlayerNameEx(playerid));
  2084. SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, szMiscArray);
  2085. }
  2086. else
  2087. {
  2088. if(giveplayerid == playerid) return SendClientMessage(playerid, COLOR_GREY, "USAGE: '/mic' to talk on the Radio Show!");
  2089. format(szMiscArray, sizeof(szMiscArray), "* You offered %s to participate in the Radio Show.", GetPlayerNameEx(giveplayerid));
  2090. SendClientMessage(playerid, COLOR_LIGHTBLUE, szMiscArray);
  2091. format(szMiscArray, sizeof(szMiscArray), "* %s offered you to participate in the Radio Show, type /acceptshow to accept.", GetPlayerNameEx(playerid));
  2092. SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, szMiscArray);
  2093. }
  2094. SetPVarInt(giveplayerid, "TVOffer", playerid);
  2095. }
  2096. }
  2097. else
  2098. {
  2099. SendClientMessage(playerid, COLOR_GREY, "That player isn't near you.");
  2100. }
  2101. }
  2102. else
  2103. {
  2104. SendClientMessage(playerid, COLOR_GREY, "Invalid player specified.");
  2105. }
  2106. }
  2107. else SendClientMessage(playerid, COLOR_GRAD1, "You have not logged in to a channel. (Use '/setchannel' to login).");
  2108. return 1;
  2109. }
  2110. CMD:showmenu(playerid, params[])
  2111. {
  2112. if(!IsAReporter(playerid)) return SendClientMessage(playerid, COLOR_GREY, " You are not a News Reporter.");
  2113. if(!SAN_RankCheck(playerid, 0)) return 1;
  2114. SAN_ShowsDialog(playerid, 2);
  2115. return 1;
  2116. }
  2117. CMD:editshow(playerid, params[])
  2118. {
  2119. if(!IsAReporter(playerid)) return SendClientMessage(playerid, COLOR_GREY, " You are not a News Reporter.");
  2120. if(!SAN_RankCheck(playerid, 2)) return 1;
  2121. SAN_ShowsDialog(playerid, 1);
  2122. return 1;
  2123. }
  2124. CMD:togshow(playerid, params[])
  2125. {
  2126. if (!gNews[playerid])
  2127. {
  2128. gNews[playerid] = 1;
  2129. PlayerInfo[playerid][pToggledChats][1] = 1;
  2130. SendClientMessage(playerid, COLOR_GRAD2, "You have disabled the TV chat.");
  2131. }
  2132. else
  2133. {
  2134. gNews[playerid] = 0;
  2135. PlayerInfo[playerid][pToggledChats][1] = 0;
  2136. SendClientMessage(playerid, COLOR_GRAD2, "You have enabled the TV chat.");
  2137. }
  2138. return 1;
  2139. }
  2140. CMD:listcameras(playerid, params[])
  2141. {
  2142. if(!IsAReporter(playerid)) return SendClientMessage(playerid, COLOR_GREY, " You are not a News Reporter.");
  2143. if(!SAN_RankCheck(playerid, 0)) return 1;
  2144. SAN_Process_ListCameras(playerid, GetPVarInt(playerid, "ChannelID_FMEM"));
  2145. return 1;
  2146. }
  2147. SAN_RankCheck(playerid, slot) {
  2148. if(PlayerInfo[playerid][pRank] >= arrGroupData[PlayerInfo[playerid][pMember]][g_iWithdrawRank][slot]) return 1;
  2149. SendClientMessage(playerid, COLOR_GRAD1, "You do not have the permissions to use this command.");
  2150. return 0;
  2151. }
  2152. CMD:cameraman(playerid, params[])
  2153. {
  2154. if(IsAReporter(playerid))
  2155. {
  2156. if(!SAN_RankCheck(playerid, 0)) return 1;
  2157. SetPVarInt(playerid, "CameramanChannelID", 1);
  2158. if(!SAN_Process_Login(playerid)) return 1;
  2159. DeletePVar(playerid, "CameramanChannelID");
  2160. for(new channel; channel < MAX_SANCHANNELS; channel++)
  2161. {
  2162. if(shutdown == 1)
  2163. {
  2164. format(szMiscArray, sizeof(szMiscArray), "__________________________ {FF3232}SYSTEM OFFLINE {FFFFFF}________________\nActive: {FFA500}--- {FFFFFF}|| {32CD80}Channel ---{FFFFFF} (click to change)\n");
  2165. break;
  2166. }
  2167. if(GetPVarInt(playerid, "ChannelID_FMEM") == channel)
  2168. {
  2169. if(SANShows[channel][ChannelActive] == 1)
  2170. {
  2171. format(szMiscArray, sizeof(szMiscArray), "______________________________ {FF4C4C}ON AIR {FFFFFF}______________________________\nActive: {FFA500}%s {FFFFFF}|| {32CD80}Channel %i{FFFFFF} (click to change)\n", SANShows[channel][ChannelName], GetPVarInt(playerid, "ChannelID_FMEM"));
  2172. break;
  2173. }
  2174. if(SANShows[channel][ChannelActive] == 0)
  2175. {
  2176. format(szMiscArray, sizeof(szMiscArray), "__________________________ {7CFC00}SYSTEM ONLINE {FFFFFF}__________________________\nActive: {FFA500}%s {FFFFFF}|| {32CD80}Channel %i{FFFFFF} (click to change)\n", SANShows[channel][ChannelName], GetPVarInt(playerid, "ChannelID_FMEM"));
  2177. break;
  2178. }
  2179. }
  2180. }
  2181. format(szMiscArray, sizeof(szMiscArray), "%s--> Dynamic Camera Menu\n\
  2182. _______________________ STATIC CAMERA MENU _______________________ \n\
  2183. Set Camera Position\n\
  2184. Stop viewing current camera\n\
  2185. Preview SET camera\n\
  2186. ------------------------------------------\n\
  2187. Broadcast Camera Position\n\
  2188. Birdseye View\n\
  2189. Vehicle Camera\n\
  2190. Log out out of camera system", szMiscArray);
  2191. ShowPlayerDialogEx(playerid, DIALOG_SAN_CAMERAMAN, DIALOG_STYLE_LIST, "SA News | Cameraman Menu", szMiscArray, "Select", "Cancel");
  2192. }
  2193. else
  2194. {
  2195. SendClientMessage(playerid, COLOR_GRAD1, " You are not a News Reporter.");
  2196. }
  2197. return 1;
  2198. }
  2199. CMD:bdirector(playerid, params[])
  2200. {
  2201. szMiscArray[0] = 0;
  2202. if(!IsAReporter(playerid)) return SendClientMessage(playerid, COLOR_GRAD1, " You are not a News Reporter.");
  2203. if(!SAN_RankCheck(playerid, 2)) return 1;
  2204. if(PlayerInfo[playerid][pRank] < 3) return SendClientMessage(playerid, COLOR_GRAD1, "You must be at least Rank 3 to use the Broadcast Director system.");
  2205. {
  2206. SetPVarInt(playerid, "DirectorChannelID", 1);
  2207. if(!SAN_Process_Login(playerid)) return 1;
  2208. DeletePVar(playerid, "DirectorChannelID");
  2209. for(new channel; channel < MAX_SANCHANNELS; channel++)
  2210. {
  2211. if(shutdown == 1)
  2212. {
  2213. format(szMiscArray, sizeof(szMiscArray), "__________________________ {FF3232}SYSTEM OFFLINE {FFFFFF}________________\nActive: {FFA500}--- {FFFFFF}|| {32CD80}Channel ---{FFFFFF} (click to change)\n");
  2214. break;
  2215. }
  2216. if(GetPVarInt(playerid, "ChannelID_FMEM") == channel)
  2217. {
  2218. if(SANShows[channel][ChannelActive] == 1)
  2219. {
  2220. format(szMiscArray, sizeof(szMiscArray), "______________________________ {FF4C4C}ON AIR {FFFFFF}______________________________\nActive: {FFA500}%s {FFFFFF}|| {32CD80}Channel %i{FFFFFF} (click to change)\n", SANShows[channel][ChannelName], GetPVarInt(playerid, "ChannelID_FMEM"));
  2221. break;
  2222. }
  2223. if(SANShows[channel][ChannelActive] == 0)
  2224. {
  2225. format(szMiscArray, sizeof(szMiscArray), "__________________________ {7CFC00}SYSTEM ONLINE {FFFFFF}__________________________\nActive: {FFA500}%s {FFFFFF}|| {32CD80}Channel %i{FFFFFF} (click to change)\n", SANShows[channel][ChannelName], GetPVarInt(playerid, "ChannelID_FMEM"));
  2226. break;
  2227. }
  2228. }
  2229. }
  2230. strcat(szMiscArray, "\n\
  2231. ----> {32CD80}TV MENU{FFFFFF} (edit channel)\n\
  2232. Preview SET camera\n\
  2233. List all camera's\n\
  2234. Stop viewing current camera\n\
  2235. Preview Stream\n\
  2236. ----------------------------------\n\
  2237. Broadcast Cameraman's Camera (list)\n\
  2238. Broadcast Birdseye View\n\
  2239. Broadcast Point-to-Point Camera\n\
  2240. Broadcast Vehicle Camera\n\
  2241. Broadcast Stream\n\
  2242. ----------------------------------\n", sizeof(szMiscArray));
  2243. strcat(szMiscArray, "\
  2244. Start System\n\
  2245. Shutdown/Stop System \n\
  2246. ----------------------------------\n\
  2247. Log out of the system", sizeof(szMiscArray));
  2248. ShowPlayerDialogEx(playerid, DIALOG_SAN_DIRECTOR, DIALOG_STYLE_LIST, "SA News | Broadcast Director Menu", szMiscArray, "Select", "Cancel");
  2249. }
  2250. return 1;
  2251. }
  2252. // TV "Name" Command:
  2253. CMD:channeldesc(playerid, params[])
  2254. {
  2255. szMiscArray[0] = 0;
  2256. if(IsAReporter(playerid))
  2257. {
  2258. if(!SAN_RankCheck(playerid, 2)) return 1;
  2259. if(!isnull(params))
  2260. {
  2261. format(szMiscArray, sizeof(szMiscArray), "TV Channel line set to: %s", params);
  2262. SendClientMessage(playerid, COLOR_WHITE, szMiscArray);
  2263. TextDrawSetString(TV_text[4], params);
  2264. }
  2265. else
  2266. {
  2267. SendClientMessage(playerid, COLOR_WHITE, "Usage: /channeldesc [description]");
  2268. }
  2269. }
  2270. else
  2271. {
  2272. SendClientMessage(playerid, COLOR_GRAD1, " You are not a News Reporter.");
  2273. }
  2274. return 1;
  2275. }
  2276. CMD:cm(playerid, params[])
  2277. {
  2278. cmd_cameraman(playerid, "");
  2279. return 1;
  2280. }
  2281. forward SAN_InitTextDraws();
  2282. public SAN_InitTextDraws()
  2283. {
  2284. TV_text[0] = TextDrawCreate(0.000000, 120.000000, "tv-left");
  2285. TextDrawAlignment(TV_text[0], 2);
  2286. TextDrawBackgroundColor(TV_text[0], 255);
  2287. TextDrawFont(TV_text[0], 1);
  2288. TextDrawLetterSize(TV_text[0], 0.500000, 26.000000);
  2289. TextDrawColor(TV_text[0], 0);
  2290. TextDrawSetOutline(TV_text[0], 0);
  2291. TextDrawSetProportional(TV_text[0], 1);
  2292. TextDrawSetShadow(TV_text[0], 0);
  2293. TextDrawUseBox(TV_text[0], 1);
  2294. TextDrawBoxColor(TV_text[0], 255);
  2295. TextDrawTextSize(TV_text[0], 11.000000, 11.000000);
  2296. TextDrawSetSelectable(TV_text[0], 0);
  2297. TV_text[1] = TextDrawCreate(638.000000, 85.000000, "tv-right");
  2298. TextDrawAlignment(TV_text[1], 2);
  2299. TextDrawBackgroundColor(TV_text[1], 255);
  2300. TextDrawFont(TV_text[1], 1);
  2301. TextDrawLetterSize(TV_text[1], 0.500000, 26.000000);
  2302. TextDrawColor(TV_text[1], 0);
  2303. TextDrawSetOutline(TV_text[1], 0);
  2304. TextDrawSetProportional(TV_text[1], 1);
  2305. TextDrawSetShadow(TV_text[1], 0);
  2306. TextDrawUseBox(TV_text[1], 1);
  2307. TextDrawBoxColor(TV_text[1], 255);
  2308. TextDrawTextSize(TV_text[1], 11.000000, 11.000000);
  2309. TextDrawSetSelectable(TV_text[1], 0);
  2310. TV_text[2] = TextDrawCreate(313.000000, 439.000000, "tv-down");
  2311. TextDrawAlignment(TV_text[2], 2);
  2312. TextDrawBackgroundColor(TV_text[2], 255);
  2313. TextDrawFont(TV_text[2], 1);
  2314. TextDrawLetterSize(TV_text[2], 0.500000, 1.000000);
  2315. TextDrawColor(TV_text[2], 0);
  2316. TextDrawSetOutline(TV_text[2], 0);
  2317. TextDrawSetProportional(TV_text[2], 1);
  2318. TextDrawSetShadow(TV_text[2], 0);
  2319. TextDrawUseBox(TV_text[2], 1);
  2320. TextDrawBoxColor(TV_text[2], 255);
  2321. TextDrawTextSize(TV_text[2], 11.000000, 501.000000);
  2322. TextDrawSetSelectable(TV_text[2], 0);
  2323. TV_text[3] = TextDrawCreate(313.000000, -1.000000, "tv-up");
  2324. TextDrawAlignment(TV_text[3], 2);
  2325. TextDrawBackgroundColor(TV_text[3], 255);
  2326. TextDrawFont(TV_text[3], 1);
  2327. TextDrawLetterSize(TV_text[3], 0.500000, 1.000000);
  2328. TextDrawColor(TV_text[3], 0);
  2329. TextDrawSetOutline(TV_text[3], 0);
  2330. TextDrawSetProportional(TV_text[3], 1);
  2331. TextDrawSetShadow(TV_text[3], 0);
  2332. TextDrawUseBox(TV_text[3], 1);
  2333. TextDrawBoxColor(TV_text[3], 255);
  2334. TextDrawTextSize(TV_text[3], 11.000000, 501.000000);
  2335. TextDrawSetSelectable(TV_text[3], 0);
  2336. TV_text[4] = TextDrawCreate(317.000000, 424.000000, "news-line");
  2337. TextDrawAlignment(TV_text[4], 2);
  2338. TextDrawBackgroundColor(TV_text[4], 255);
  2339. TextDrawFont(TV_text[4], 2);
  2340. TextDrawLetterSize(TV_text[4], 0.200000, 0.999999);
  2341. TextDrawColor(TV_text[4], -1);
  2342. TextDrawSetOutline(TV_text[4], 0);
  2343. TextDrawSetProportional(TV_text[4], 1);
  2344. TextDrawSetShadow(TV_text[4], 0);
  2345. TextDrawUseBox(TV_text[4], 1);
  2346. TextDrawBoxColor(TV_text[4], 100);
  2347. TextDrawTextSize(TV_text[4], 11.000000, 191.000000);
  2348. TextDrawSetSelectable(TV_text[4], 0);
  2349. TV_text[5] = TextDrawCreate(317.000000, 10.000000, "SAN-TV");
  2350. TextDrawAlignment(TV_text[5], 2);
  2351. TextDrawBackgroundColor(TV_text[5], 255);
  2352. TextDrawFont(TV_text[5], 2);
  2353. TextDrawLetterSize(TV_text[5], 0.289999, 1.400000);
  2354. TextDrawColor(TV_text[5], -1);
  2355. TextDrawSetOutline(TV_text[5], 0);
  2356. TextDrawSetProportional(TV_text[5], 1);
  2357. TextDrawSetShadow(TV_text[5], 0);
  2358. TextDrawUseBox(TV_text[5], 1);
  2359. TextDrawBoxColor(TV_text[5], 100);
  2360. TextDrawTextSize(TV_text[5], 11.000000, 51.000000);
  2361. TextDrawSetSelectable(TV_text[5], 0);
  2362. TV_text[6] = TextDrawCreate(317.000000, 438.000000, "Channel 1");
  2363. TextDrawAlignment(TV_text[6], 2);
  2364. TextDrawBackgroundColor(TV_text[6], 255);
  2365. TextDrawFont(TV_text[6], 1);
  2366. TextDrawLetterSize(TV_text[6], 0.260000, 1.100000);
  2367. TextDrawColor(TV_text[6], -1);
  2368. TextDrawSetOutline(TV_text[6], 0);
  2369. TextDrawSetProportional(TV_text[6], 1);
  2370. TextDrawSetShadow(TV_text[6], 0);
  2371. TextDrawSetSelectable(TV_text[6], 0);
  2372. TV_text[7] = TextDrawCreate(-0.500, -0.500, "LD_SPAC:tvcorn");
  2373. TextDrawFont(TV_text[7], 4);
  2374. TextDrawTextSize(TV_text[7], 98.500, 149.500);
  2375. TextDrawColor(TV_text[7], 255);
  2376. TV_text[8] = TextDrawCreate(-0.500, 448.000, "LD_SPAC:tvcorn");
  2377. TextDrawFont(TV_text[8], 4);
  2378. TextDrawTextSize(TV_text[8], 89.500, -132.500);
  2379. TextDrawColor(TV_text[8], 255);
  2380. TV_text[9] = TextDrawCreate(640.000, -2.000, "LD_SPAC:tvcorn");
  2381. TextDrawFont(TV_text[9], 4);
  2382. TextDrawTextSize(TV_text[9], -99.500, 152.500);
  2383. TextDrawColor(TV_text[9], 255);
  2384. TV_text[10] = TextDrawCreate(640.000, 448.000, "LD_SPAC:tvcorn");
  2385. TextDrawFont(TV_text[10], 4);
  2386. TextDrawTextSize(TV_text[10], -116.000, -143.000);
  2387. TextDrawColor(TV_text[10], 255);
  2388. // Reset TV Textdraws (/director stopcameras).
  2389. TV_text[11] = TextDrawCreate(0.000000, 101.500000, "LD_SPAC:white");
  2390. TextDrawLetterSize(TV_text[11], 0.000000, 0.000000);
  2391. TextDrawTextSize(TV_text[11], 640.000000, 240.187500);
  2392. TextDrawAlignment(TV_text[11], 1);
  2393. TextDrawColor(TV_text[11], 255);
  2394. TextDrawUseBox(TV_text[11], true);
  2395. TextDrawBoxColor(TV_text[11], 255);
  2396. TextDrawSetShadow(TV_text[11], 0);
  2397. TextDrawSetOutline(TV_text[11], 0);
  2398. TextDrawBackgroundColor(TV_text[11], 255);
  2399. TextDrawFont(TV_text[11], 4);
  2400. TV_text[12] = TextDrawCreate(251.999984, 218.312500, "Please wait...");
  2401. TextDrawLetterSize(TV_text[12], 0.449999, 1.600000);
  2402. TextDrawAlignment(TV_text[12], 1);
  2403. TextDrawColor(TV_text[12], -1);
  2404. TextDrawSetShadow(TV_text[12], 0);
  2405. TextDrawSetOutline(TV_text[12], 1);
  2406. TextDrawBackgroundColor(TV_text[12], 51);
  2407. TextDrawFont(TV_text[12], 1);
  2408. TextDrawSetProportional(TV_text[12], 1);
  2409. TV_text[13] = TextDrawCreate(190.800003, 205.187500, "We are currently experiencing technical difficulties.");
  2410. TextDrawLetterSize(TV_text[13], 0.249999, 1.302500);
  2411. TextDrawAlignment(TV_text[13], 1);
  2412. TextDrawColor(TV_text[13], -1);
  2413. TextDrawSetShadow(TV_text[13], 0);
  2414. TextDrawSetOutline(TV_text[13], 1);
  2415. TextDrawBackgroundColor(TV_text[13], 51);
  2416. TextDrawFont(TV_text[13], 1);
  2417. TextDrawSetProportional(TV_text[13], 1);
  2418. }