impl.inc 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. // This is an include guard with a purpose - we need more control than the
  2. // standard include guards give.
  3. #include "internal\y_version"
  4. #include "y_utils"
  5. #include "y_scriptinit"
  6. #include "y_bit"
  7. #include "internal\y_shortfunc"
  8. enum ALS
  9. {
  10. Bit:ALS_OnScriptInit,
  11. Bit:ALS_OnScriptExit,
  12. Bit:ALS_OnGameModeInit,
  13. Bit:ALS_OnGameModeExit,
  14. Bit:ALS_OnFilterScriptInit,
  15. Bit:ALS_OnFilterScriptExit,
  16. Bit:ALS_OnPlayerConnect,
  17. Bit:ALS_OnPlayerDisconnect,
  18. Bit:ALS_OnPlayerSpawn,
  19. Bit:ALS_OnPlayerDeath,
  20. Bit:ALS_OnVehicleSpawn,
  21. Bit:ALS_OnVehicleDeath,
  22. Bit:ALS_OnPlayerText,
  23. Bit:ALS_OnPlayerCommandText,
  24. Bit:ALS_OnPlayerRequestClass,
  25. Bit:ALS_OnPlayerEnterVehicle,
  26. Bit:ALS_OnPlayerExitVehicle,
  27. Bit:ALS_OnPlayerStateChange,
  28. Bit:ALS_OnPlayerEnterCheckpoint,
  29. Bit:ALS_OnPlayerLeaveCheckpoint,
  30. Bit:ALS_OnPlayerEnterRaceCheckpoint,
  31. Bit:ALS_OnPlayerLeaveRaceCheckpoint,
  32. Bit:ALS_OnRconCommand,
  33. Bit:ALS_OnPlayerRequestSpawn,
  34. Bit:ALS_OnObjectMoved,
  35. Bit:ALS_OnPlayerObjectMoved,
  36. Bit:ALS_OnPlayerPickUpPickup,
  37. Bit:ALS_OnVehicleMod,
  38. Bit:ALS_OnEnterExitModShop,
  39. Bit:ALS_OnVehiclePaintjob,
  40. Bit:ALS_OnVehicleRespray,
  41. Bit:ALS_OnVehicleDamageStatusUpdate,
  42. Bit:ALS_OnPlayerSelectedMenuRow,
  43. Bit:ALS_OnPlayerExitedMenu,
  44. Bit:ALS_OnPlayerInteriorChange,
  45. Bit:ALS_OnPlayerKeyStateChange,
  46. Bit:ALS_OnRconLoginAttempt,
  47. Bit:ALS_OnPlayerUpdate,
  48. Bit:ALS_OnPlayerStreamIn,
  49. Bit:ALS_OnPlayerStreamOut,
  50. Bit:ALS_OnVehicleStreamIn,
  51. Bit:ALS_OnVehicleStreamOut,
  52. Bit:ALS_OnDialogResponse,
  53. Bit:ALS_OnPlayerClickPlayer,
  54. Bit:ALS_OnPlayerLogin,
  55. Bit:ALS_OnPlayerLogout,
  56. Bit:ALS_OnPlayerTakeDamage,
  57. Bit:ALS_OnPlayerGiveDamage,
  58. Bit:ALS_OnPlayerClickMap,
  59. Bit:ALS_OnPlayerCommandReceived,
  60. Bit:ALS_OnPlayerCommandPerformed,
  61. Bit:ALS_OnUnoccupiedVehicleUpdate,
  62. Bit:ALS_OnPlayerClickTextDraw,
  63. Bit:ALS_OnPlayerClickPlayerTextDraw,
  64. Bit:ALS_OnPlayerEditObject,
  65. Bit:ALS_OnPlayerEditAttachedObject,
  66. // YSI
  67. Bit:ALS_OnPlayerEnterArea,
  68. Bit:ALS_OnPlayerLeaveArea,
  69. Bit:ALS_OnPlayerFinishRace,
  70. Bit:ALS_OnPlayerExitRace,
  71. Bit:ALS_OnRaceEnd,
  72. #if defined _YSI_PLUGINS_STREAMER
  73. Bit:ALS_OnDynamicObjectMoved,
  74. Bit:ALS_OnPlayerEditDynamicObject,
  75. Bit:ALS_OnPlayerSelectDynamicObject,
  76. Bit:ALS_OnPlayerPickUpDynamicPickup,
  77. Bit:ALS_OnPlayerEnterDynamicCP,
  78. Bit:ALS_OnPlayerLeaveDynamicCP,
  79. Bit:ALS_OnPlayerEnterDynamicRaceCP,
  80. Bit:ALS_OnPlayerLeaveDynamicRaceCP,
  81. Bit:ALS_OnPlayerEnterDynamicArea,
  82. Bit:ALS_OnPlayerLeaveDynamicArea,
  83. #endif
  84. Bit:ALS_OnPlayerSelectObject
  85. }
  86. #define ALS_DATA<>
  87. #define ALS_DETECT<%0>
  88. // ALS Callback.
  89. #define _ALS_C_INT<%0,%2>(%3) ALS_MAKE<..._On%0>(ALS_RS_%3);
  90. #define ALS_C_INT<%0,%2>(%3) return _ALS_C_INT<%0,%2>(%3)
  91. // ALS Forward.
  92. #define ALS_F_INT<%0,%8>(%1) forward ALS_MAKE<..._On%0>(ALS_KS_%1);//ALS_F_INT1<%0,%8>(%1)ALS_F_INT2<%0,%8>(%1)
  93. //#define ALS_F_INT1<%0,%8>(%1) public ALS_MAKE<..._On%0>(ALS_KS_%1)<_ALS_:unhooked>{return ALS_R_%0;}
  94. //#define ALS_F_INT2<%0,%8>(%1) public ALS_MAKE<..._On%0>(ALS_KS_%1)<>{return ALS_R_%0;}
  95. // ALS Go (ignore extra parameters).
  96. #define ALS_G_INT<%0,%1>(%8)(%2) W@(#On#%0,(x:#%1#),%2)
  97. // Default return value definitions.
  98. #define ALS_R_ScriptInit 1
  99. #define ALS_R_ScriptExit 1
  100. #define ALS_R_GameModeInit 1
  101. #define ALS_R_GameModeExit 1
  102. #define ALS_R_FilterScriptInit 1
  103. #define ALS_R_FilterScriptExit 1
  104. #define ALS_R_PlayerConnect 1
  105. #define ALS_R_PlayerDisconnect 1
  106. #define ALS_R_PlayerSpawn 1
  107. #define ALS_R_PlayerDeath 1
  108. #define ALS_R_VehicleSpawn 1
  109. #define ALS_R_VehicleDeath 1
  110. #define ALS_R_PlayerText 1
  111. #define ALS_R_PlayerCommandText 0
  112. #define ALS_R_PlayerRequestClass 1
  113. #define ALS_R_PlayerEnterVehicle 1
  114. #define ALS_R_PlayerExitVehicle 1
  115. #define ALS_R_PlayerStateChange 1
  116. #define ALS_R_PlayerEnterCheckpoint 1
  117. #define ALS_R_PlayerLeaveCheckpoint 1
  118. #define ALS_R_PlayerEnterRaceCheckpoint 1
  119. #define ALS_R_PlayerLeaveRaceCheckpoint 1
  120. #define ALS_R_RconCommand 1
  121. #define ALS_R_PlayerRequestSpawn 1
  122. #define ALS_R_ObjectMoved 1
  123. #define ALS_R_PlayerObjectMoved 1
  124. #define ALS_R_PlayerPickUpPickup 1
  125. #define ALS_R_VehicleMod 1
  126. #define ALS_R_EnterExitModShop 1
  127. #define ALS_R_VehiclePaintjob 1
  128. #define ALS_R_VehicleRespray 1
  129. #define ALS_R_VehicleDamageStatusUpdate 1
  130. #define ALS_R_PlayerSelectedMenuRow 1
  131. #define ALS_R_PlayerExitedMenu 1
  132. #define ALS_R_PlayerInteriorChange 1
  133. #define ALS_R_PlayerKeyStateChange 1
  134. #define ALS_R_RconLoginAttempt 1
  135. #define ALS_R_PlayerUpdate 1
  136. #define ALS_R_PlayerStreamIn 1
  137. #define ALS_R_PlayerStreamOut 1
  138. #define ALS_R_VehicleStreamIn 1
  139. #define ALS_R_VehicleStreamOut 1
  140. #define ALS_R_DialogResponse 1
  141. #define ALS_R_PlayerClickPlayer 1
  142. #define ALS_R_PlayerLogin 1
  143. #define ALS_R_PlayerLogout 1
  144. #define ALS_R_PlayerTakeDamage 1
  145. #define ALS_R_PlayerGiveDamage 1
  146. #define ALS_R_PlayerClickMap 1
  147. #define ALS_R_PlayerCommandReceived 1
  148. #define ALS_R_PlayerCommandPerformed -1
  149. #define ALS_R_UnoccupiedVehicleUpdate 1
  150. // 0.3e
  151. #define ALS_R_PlayerClickTextDraw 1
  152. #define ALS_R_PlayerClickPlayerTextDraw 1
  153. #define ALS_R_PlayerEditObject 1
  154. #define ALS_R_PlayerEditAttachedObject 1
  155. #define ALS_R_PlayerSelectObject 1
  156. // YSI
  157. #define ALS_R_PlayerEnterArea 1
  158. #define ALS_R_PlayerLeaveArea 1
  159. #define ALS_R_PlayerFinishRace 1
  160. #define ALS_R_PlayerExitRace 1
  161. #define ALS_R_RaceEnd 1
  162. // Streamer plugins.
  163. #define ALS_R_DynamicObjectMoved 1
  164. #define ALS_R_PlayerEditDynamicObject 1
  165. #define ALS_R_PlayerSelectDynamicObject 1
  166. #define ALS_R_PlayerPickUpDynamicPickup 1
  167. #define ALS_R_PlayerEnterDynamicCP 1
  168. #define ALS_R_PlayerLeaveDynamicCP 1
  169. #define ALS_R_PlayerEnterDynamicRaceCP 1
  170. #define ALS_R_PlayerLeaveDynamicRaceCP 1
  171. #define ALS_R_PlayerEnterDynamicArea 1
  172. #define ALS_R_PlayerLeaveDynamicArea 1
  173. // Chain call declarations.
  174. #define ALS_DO_ScriptInit<%0> %0<ScriptInit,>(none:)
  175. #define ALS_DO_ScriptExit<%0> %0<ScriptExit,>(none:)
  176. #define ALS_DO_GameModeInit<%0> %0<GameModeInit,>(none:)
  177. #define ALS_DO_GameModeExit<%0> %0<GameModeExit,>(none:)
  178. #define ALS_DO_FilterScriptInit<%0> %0<FilterScriptInit,>(none:)
  179. #define ALS_DO_FilterScriptExit<%0> %0<FilterScriptExit,>(none:)
  180. #define ALS_DO_PlayerConnect<%0> %0<PlayerConnect,i>(end:playerid)
  181. #define ALS_DO_PlayerDisconnect<%0> %0<PlayerDisconnect,ii>(more:playerid,end:reason)
  182. #define ALS_DO_PlayerSpawn<%0> %0<PlayerSpawn,i>(end:playerid)
  183. #define ALS_DO_PlayerDeath<%0> %0<PlayerDeath,iii>(more:playerid,more:killerid,end:reason)
  184. #define ALS_DO_VehicleSpawn<%0> %0<VehicleSpawn,i>(end:vehicleid)
  185. #define ALS_DO_VehicleDeath<%0> %0<VehicleDeath,ii>(more:vehicleid,end:killerid)
  186. #define ALS_DO_PlayerText<%0> %0<PlayerText,is>(more:playerid,end_string:text[])
  187. #define ALS_DO_PlayerCommandText<%0> %0<PlayerCommandText,is>(more:playerid,end_string:cmdtext[])
  188. #define ALS_DO_PlayerRequestClass<%0> %0<PlayerRequestClass,ii>(more:playerid,end:classid)
  189. #define ALS_DO_PlayerEnterVehicle<%0> %0<PlayerEnterVehicle,iii>(more:playerid,more:vehicleid,end:ispassenger)
  190. #define ALS_DO_PlayerExitVehicle<%0> %0<PlayerExitVehicle,ii>(more:playerid,end:vehicleid)
  191. #define ALS_DO_PlayerStateChange<%0> %0<PlayerStateChange,iii>(more:playerid,more:newstate,end:oldstate)
  192. #define ALS_DO_PlayerEnterCheckpoint<%0> %0<PlayerEnterCheckpoint,i>(end:playerid)
  193. #define ALS_DO_PlayerLeaveCheckpoint<%0> %0<PlayerLeaveCheckpoint,i>(end:playerid)
  194. #define ALS_DO_PlayerEnterRaceCheckpoint<%0> %0<PlayerEnterRaceCheckpoint,i>(end:playerid)
  195. #define ALS_DO_PlayerLeaveRaceCheckpoint<%0> %0<PlayerLeaveRaceCheckpoint,i>(end:playerid)
  196. #define ALS_DO_RconCommand<%0> %0<RconCommand,s>(end_string:cmd[])
  197. #define ALS_DO_PlayerRequestSpawn<%0> %0<PlayerRequestSpawn,i>(end:playerid)
  198. #define ALS_DO_ObjectMoved<%0> %0<ObjectMoved,i>(end:objectid)
  199. #define ALS_DO_PlayerObjectMoved<%0> %0<PlayerObjectMoved,ii>(more:playerid,end:objectid)
  200. #define ALS_DO_PlayerPickUpPickup<%0> %0<PlayerPickUpPickup,ii>(more:playerid,end:pickupid)
  201. #define ALS_DO_VehicleMod<%0> %0<VehicleMod,iii>(more:playerid,more:vehicleid,end:componentid)
  202. #define ALS_DO_EnterExitModShop<%0> %0<EnterExitModShop,iii>(more:playerid,more:enterexit,end:interiorid)
  203. #define ALS_DO_VehiclePaintjob<%0> %0<VehiclePaintjob,iii>(more:playerid,more:vehicleid,end:paintjobid)
  204. #define ALS_DO_VehicleRespray<%0> %0<VehicleRespray,iiii>(more:playerid,more:vehicleid,more:color1,end:color2)
  205. #define ALS_DO_VehicleDamageStatusUpdate<%0> %0<VehicleDamageStatusUpdate,ii>(more:vehicleid,end:playerid)
  206. #define ALS_DO_PlayerSelectedMenuRow<%0> %0<PlayerSelectedMenuRow,ii>(more:playerid,end:row)
  207. #define ALS_DO_PlayerExitedMenu<%0> %0<PlayerExitedMenu,i>(end:playerid)
  208. #define ALS_DO_PlayerInteriorChange<%0> %0<PlayerInteriorChange,iii>(more:playerid,more:newinteriorid,end:oldinteriorid)
  209. #define ALS_DO_PlayerKeyStateChange<%0> %0<PlayerKeyStateChange,iii>(more:playerid,more:newkeys,end:oldkeys)
  210. #define ALS_DO_RconLoginAttempt<%0> %0<RconLoginAttempt,ssi>(string:ip[],string:password[],end:success)
  211. #define ALS_DO_PlayerUpdate<%0> %0<PlayerUpdate,i>(end:playerid)
  212. #define ALS_DO_PlayerStreamIn<%0> %0<PlayerStreamIn,ii>(more:playerid,end:forplayerid)
  213. #define ALS_DO_PlayerStreamOut<%0> %0<PlayerStreamOut,ii>(more:playerid,end:forplayerid)
  214. #define ALS_DO_VehicleStreamIn<%0> %0<VehicleStreamIn,ii>(more:vehicleid,end:forplayerid)
  215. #define ALS_DO_VehicleStreamOut<%0> %0<VehicleStreamOut,ii>(more:vehicleid,end:forplayerid)
  216. #define ALS_DO_DialogResponse<%0> %0<DialogResponse,iiiis>(more:playerid,more:dialogid,more:response,more:listitem,end_string:inputtext[])
  217. #define ALS_DO_PlayerClickPlayer<%0> %0<PlayerClickPlayer,iii>(more:playerid,more:clickedplayerid,end:source)
  218. #define ALS_DO_PlayerLogin<%0> %0<PlayerLogin,ii>(more:playerid,end:uid)
  219. #define ALS_DO_PlayerLogout<%0> %0<PlayerLogout,ii>(more:playerid,end:uid)
  220. #define ALS_DO_PlayerGiveDamage<%0> %0<PlayerGiveDamage,iifii>(more:playerid,more:damagedid,Float:amount,more:weaponid,end:bodypart)
  221. #define ALS_DO_PlayerTakeDamage<%0> %0<PlayerTakeDamage,iifii>(more:playerid,more:issuerid,Float:amount,more:weaponid,end:bodypart)
  222. #define ALS_DO_PlayerClickMap<%0> %0<PlayerClickMap,ifff>(more:playerid,Float:fX,Float:fY,end_Float:fZ)
  223. #define ALS_DO_PlayerCommandReceived<%0> %0<PlayerCommandReceived,is>(more:playerid,end_string:cmdtext[])
  224. #define ALS_DO_PlayerCommandPerformed<%0> %0<PlayerCommandPerformed,isi>(more:playerid,string:cmdtext[],end:success)
  225. #define ALS_DO_UnoccupiedVehicleUpdate<%0> %0<UnoccupiedVehicleUpdate,iii>(more:vehicleid,more:playerid,end:passenger_seat)
  226. // 0.3e
  227. #define ALS_DO_PlayerClickTextDraw<%0> %0<PlayerClickTextDraw,ii>(more:playerid,end_tag:Text:clickedid)
  228. #define ALS_DO_PlayerClickPlayerTextDraw<%0> %0<PlayerClickPlayerTextDraw,iii>(more:playerid,end_tag:PlayerText:playertextid)
  229. #define ALS_DO_PlayerEditObject<%0> %0<PlayerEditObject,iiiiffffff>(more:playerid,more:playerobject,more:objectid,more:response,Float:fX,Float:fY,Float:fZ,Float:fRotX,Float:fRotY,end_Float:fRotZ)
  230. #define ALS_DO_PlayerEditAttachedObject<%0> %0<PlayerEditAttachedObject,iiiiifffffffff>(more:playerid,more:response,more:index,more:modelid,more:boneid,Float:fOffsetX,Float:fOffsetY,Float:fOffsetZ,Float:fRotX,Float:fRotY,Float:fRotZ,Float:fScaleX,Float:fScaleY,end_Float:fScaleZ)
  231. #define ALS_DO_PlayerSelectObject<%0> %0<PlayerSelectObject,iiiifff>(more:playerid,more:type,more:objectid,more:modelid,Float:fX,Float:fY,end_Float:fZ)
  232. // YSI
  233. #define ALS_DO_PlayerEnterArea<%0> %0<PlayerEnterArea,ii>(more:playerid,end:areaid)
  234. #define ALS_DO_PlayerLeaveArea<%0> %0<PlayerLeaveArea,ii>(more:playerid,end:areaid)
  235. #define ALS_DO_PlayerFinishRace<%0> %0<PlayerFinishRace,iiiii>(more:playerid,more:race,more:position,more:prize,end:time)
  236. #define ALS_DO_PlayerExitRace<%0> %0<PlayerExitRace,ii>(more:playerid,end:race)
  237. #define ALS_DO_RaceEnd<%0> %0<RaceEnd,i>(end:race)
  238. // Streamer plugin.
  239. #define ALS_DO_DynamicObjectMoved<%0> %0<DynamicObjectMoved,i>(end:objectid)
  240. #define ALS_DO_PlayerEditDynamicObject<%0> %0<PlayerEditDynamicObject,iiiiiiiii>(more:playerid,more:objectid,more:response,Float:x,Float:y,Float:z,Float:rx,Float:ry,end_Float:rz)
  241. #define ALS_DO_PlayerSelectDynamicObject<%0> %0<PlayerSelectDynamicObject,iiiiii>(more:playerid,more:objectid,more:modelid,Float:x,Float:y,end_Float:z)
  242. #define ALS_DO_PlayerPickUpDynamicPickup<%0> %0<PlayerPickUpDynamicPickup,ii>(more:playerid,end:pickupid)
  243. #define ALS_DO_PlayerEnterDynamicCP<%0> %0<PlayerEnterDynamicCP,ii>(more:playerid,end:checkpointid)
  244. #define ALS_DO_PlayerLeaveDynamicCP<%0> %0<PlayerLeaveDynamicCP,ii>(more:playerid,end:checkpointid)
  245. #define ALS_DO_PlayerEnterDynamicRaceCP<%0> %0<PlayerEnterDynamicRaceCP,ii>(more:playerid,end:checkpointid)
  246. #define ALS_DO_PlayerLeaveDynamicRaceCP<%0> %0<PlayerLeaveDynamicRaceCP,ii>(more:playerid,end:checkpointid)
  247. #define ALS_DO_PlayerEnterDynamicArea<%0> %0<PlayerEnterDynamicArea,ii>(more:playerid,end:areaid)
  248. #define ALS_DO_PlayerLeaveDynamicArea<%0> %0<PlayerLeaveDynamicArea,ii>(more:playerid,end:areaid)
  249. #define ALS_KS_more:%0, %0,ALS_KS_
  250. #define ALS_KS_string:%0[], %0[],ALS_KS_
  251. #define ALS_KS_Float:%0, Float:%0,ALS_KS_
  252. #define ALS_KS_tag:%3:%0, %3:%0,ALS_KS_
  253. #define ALS_KS_end:%0) %0)
  254. #define ALS_KS_none:) )
  255. #define ALS_KS_end_string:%0[]) %0[])
  256. #define ALS_KS_end_Float:%0) Float:%0)
  257. #define ALS_KS_end_tag:%3:%0) %3:%0)
  258. #define ALS_TS_more:%0, %0,ALS_TS_
  259. #define ALS_TS_string:%0[], (%0),ALS_TS_
  260. #define ALS_TS_Float%0, Float:%0,ALS_TS_
  261. #define ALS_TS_tag:%3:%0, %3:%0,ALS_TS_
  262. #define ALS_TS_end:%0) %0)
  263. #define ALS_TS_none:) )
  264. #define ALS_TS_end_string:%0[]) (%0))
  265. #define ALS_TS_end_Float:%0) Float:%0)
  266. #define ALS_TS_end_tag:%3:%0) %3:%0)
  267. #define ALS_RS_more:%0, %0,ALS_RS_
  268. #define ALS_RS_string:%0[], ((%0[0])?(%0):NULL),ALS_RS_
  269. #define ALS_RS_Float:%0, (_:%0),ALS_RS_
  270. #define ALS_RS_tag:%3:%0, (_:%0),ALS_RS_
  271. #define ALS_RS_end:%0) %0)
  272. #define ALS_RS_none:) )
  273. #define ALS_RS_end_string:%0[]) ((%0[0])?(%0):NULL))
  274. #define ALS_RS_end_Float:%0) (_:%0))
  275. #define ALS_RS_end_tag:%3:%0) (_:%0))
  276. #define ALS_DO:%9<%0> ALS_DO_%0<%9>
  277. #define ALS_CALL<%0> ALS_DO:ALS_C_INT<%0>
  278. #define ALS_GET<%0> ALS_DO:_ALS_C_INT<%0>
  279. #define ALS_FORWARD<%0> ALS_DO:ALS_F_INT<%0>
  280. #define call%0On%1(%2) ALS_DO:ALS_G_INT<%1>(%2)