Advertisement
Guest User

Beavis NoDM 2.0

a guest
Mar 20th, 2013
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.94 KB | None | 0 0
  1. /*
  2. NoDM Zonen Include by [DT]Beavis
  3.  
  4. Diese Include darf frei verwendet werden.
  5. Das was nicht genehmigt wird, ist das Werk als eigenes zu missbrauchen,
  6. Die weiterveröffentlichung bedarf nur mit einer Genehmigung von mir.
  7.  
  8. 2013 by [DT]Beavis aka Chris
  9. */
  10.  
  11. #include a_samp
  12.  
  13. #define diaNoDMCreate 10000
  14. #define diaNoDMInfo 10001
  15.  
  16. enum NoDMEnum
  17. {
  18. Float:B_MinX,
  19. Float:B_MinY,
  20. Float:B_MaxX,
  21. Float:B_MaxY,
  22. B_Erstellt,
  23. B_Zone
  24. };
  25.  
  26. new BeavisNoDM[100][NoDMEnum],
  27. Text:Beavis[4],
  28. BeavisInit = 0,
  29. DB:BeavisDB;
  30.  
  31. forward CreateNoDMZone(Float:B_XMin,Float:B_YMin,Float:B_XMax,Float:B_YMax);
  32. public CreateNoDMZone(Float:B_XMin,Float:B_YMin,Float:B_XMax,Float:B_YMax)
  33. {
  34. for(new i = 0; i < sizeof(BeavisNoDM); i++)
  35. {
  36. if(BeavisNoDM[i][B_Erstellt] == 0)
  37. {
  38. BeavisNoDM[i][B_MinX]=B_XMin;
  39. BeavisNoDM[i][B_MinY]=B_YMin;
  40. BeavisNoDM[i][B_MaxX]=B_XMax;
  41. BeavisNoDM[i][B_MaxY]=B_YMax;
  42. BeavisNoDM[i][B_Erstellt]=1;
  43. BeavisNoDM[i][B_Zone] = GangZoneCreate(BeavisNoDM[i][B_MinX], BeavisNoDM[i][B_MinY], BeavisNoDM[i][B_MaxX], BeavisNoDM[i][B_MaxY]);
  44. return 1;
  45. }
  46. }
  47. return 0;
  48. }
  49.  
  50. stock NoDMZoneInit(BeavisDM = 0)
  51. {
  52. if(BeavisDM == 0 || BeavisDM == 1 ||BeavisDM == 2 || BeavisDM == 3)
  53. {
  54. BeavisInit = BeavisDM;
  55. print("\n\n______________________________________________");
  56. print("Beavis NoDM-Include wurde geladen");
  57. print("______________________________________________\n\n");
  58. }
  59. else
  60. {
  61. print("\n\n______________________________________________");
  62. print("Beavis NoDM-Include Error!");
  63. print("NoDMZoneInit fehlerhaft eingestellt");
  64. print("Es wird die Standarteinstellung verwendet");
  65. BeavisInit = 0;
  66. print("______________________________________________\n\n");
  67. }
  68. return 1;
  69. }
  70.  
  71. forward Beavis_OnGameModeInit();
  72. public OnGameModeInit()
  73. {
  74. BeavisDB = db_open("BeavisNoDM.db");
  75. new DBResult:query = db_query(BeavisDB, "CREATE TABLE IF NOT EXISTS \"NoDM\" (\"id\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, \"MinX\" VARCHAR NOT NULL,\"MinY\" VARCHAR NOT NULL,\"MaxX\" VARCHAR NOT NULL,\"MaxY\" VARCHAR NOT NULL);");
  76. db_free_result(query);
  77. LoadNoDMZonen();
  78.  
  79. SetTimer("IsInBeavisNoDm",1000,1);
  80. Beavis[0] = TextDrawCreate(233.000000, 395.000000, "NoDM Zone");
  81. TextDrawBackgroundColor(Beavis[0], 255);
  82. TextDrawFont(Beavis[0], 1);
  83. TextDrawLetterSize(Beavis[0], 0.719999, 3.299998);
  84. TextDrawColor(Beavis[0], -16776961);
  85. TextDrawSetOutline(Beavis[0], 0);
  86. TextDrawSetProportional(Beavis[0], 1);
  87. TextDrawSetShadow(Beavis[0], 1);
  88.  
  89. Beavis[1] = TextDrawCreate(33.000000, 421.000000, "NoDM Zone");
  90. TextDrawBackgroundColor(Beavis[1], 255);
  91. TextDrawFont(Beavis[1], 1);
  92. TextDrawLetterSize(Beavis[1], 0.500000, 1.000000);
  93. TextDrawColor(Beavis[1], -16776961);
  94. TextDrawSetOutline(Beavis[1], 1);
  95. TextDrawSetProportional(Beavis[1], 1);
  96.  
  97. Beavis[2] = TextDrawCreate(538.000000, 415.000000, "NoDM Zone");
  98. TextDrawBackgroundColor(Beavis[2], 255);
  99. TextDrawFont(Beavis[2], 0);
  100. TextDrawLetterSize(Beavis[2], 0.629999, 2.599999);
  101. TextDrawColor(Beavis[2], -16776961);
  102. TextDrawSetOutline(Beavis[2], 0);
  103. TextDrawSetProportional(Beavis[2], 1);
  104. TextDrawSetShadow(Beavis[2], 1);
  105.  
  106. Beavis[3] = TextDrawCreate(498.000000, 98.000000, "~g~NoDM Zone");
  107. TextDrawBackgroundColor(Beavis[3], 255);
  108. TextDrawFont(Beavis[3], 3);
  109. TextDrawLetterSize(Beavis[3], 0.589999, 1.500000);
  110. TextDrawColor(Beavis[3], -16776961);
  111. TextDrawSetOutline(Beavis[3], 1);
  112. TextDrawSetProportional(Beavis[3], 1);
  113.  
  114. return CallLocalFunction("Beavis_OnGameModeInit","");
  115. }
  116.  
  117. forward Beavis_OnGameModeExit();
  118. public OnGameModeExit()
  119. {
  120. db_close(BeavisDB);
  121. return CallLocalFunction("Beavis_OnGameModeExit","");
  122. }
  123.  
  124. forward Beavis_OnPlayerConnect(playerid);
  125. public OnPlayerConnect(playerid)
  126. {
  127. for(new c = 0; c < sizeof(Beavis); c++){
  128. TextDrawHideForPlayer(playerid, Beavis[c]);}
  129. for(new i = 0; i < sizeof(BeavisNoDM); i++){
  130. if(BeavisNoDM[i][B_Erstellt] == 0) continue;
  131. GangZoneShowForPlayer(playerid, BeavisNoDM[i][B_Zone], 0xFF3A3A66);}
  132. return CallLocalFunction("Beavis_OnPlayerConnect","d",playerid);
  133. }
  134.  
  135. forward Beavis_OnPlayerCommandText(playerid, cmdtext[]);
  136. public OnPlayerCommandText(playerid, cmdtext[])
  137. {
  138. if(!strcmp("/createnodmzone", cmdtext, true))
  139. {
  140. if(!IsPlayerAdmin(playerid))
  141. SendClientMessage(playerid,-1,"Um diesen Command eingeben zu können, musst du als RCON Admin eingeloggt sein!");
  142. else{
  143. SetPVarInt(playerid,"ErstelleNoDMZone",1);
  144. ShowPlayerDialog(playerid,diaNoDMCreate,DIALOG_STYLE_MSGBOX,"NoDM Zone erstellen","Um eine NoDM Zone zu erstellen,\nmusst du einige aufforderungen nachkommen.\nIch werde dir hier erklären, wie du eine NoDM Zone\
  145. \neinfach erstellen kannst.\n\nMöchtest du jetzt anfangen?","Ja","Nein");}
  146. return CallLocalFunction("Beavis_OnPlayerCommandText","ds",playerid, cmdtext);
  147. }
  148. return CallLocalFunction("Beavis_OnPlayerCommandText","ds",playerid, cmdtext);
  149. }
  150.  
  151. forward Beavis_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
  152. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  153. {
  154. if(dialogid == diaNoDMCreate)
  155. {
  156. if(!response)
  157. DeletePVar(playerid,"ErstelleNoDMZone");
  158. else
  159. ShowPlayerDialog(playerid,diaNoDMInfo,DIALOG_STYLE_MSGBOX,"NoDM Zone erstellen","Gehe jetzt zu der Oberen Ecke und drücke die Z Taste!","Ok","");
  160. }
  161. if(!inputtext[0])return CallLocalFunction("Beavis_OnDialogResponse","dddds",playerid, dialogid, response, listitem, " ");
  162. return CallLocalFunction("Beavis_OnDialogResponse","dddds",playerid, dialogid, response, listitem, inputtext);
  163. }
  164.  
  165. forward Beavis_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
  166. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  167. {
  168. if(newkeys & 65536)
  169. {
  170. new Float:Pos[3];
  171. if(GetPVarInt(playerid,"ErstelleNoDMZone") == 1)
  172. {
  173. GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
  174. SetPVarFloat(playerid,"X1",Pos[0]);
  175. SetPVarFloat(playerid,"Y1",Pos[1]);
  176. ShowPlayerDialog(playerid,diaNoDMInfo,DIALOG_STYLE_MSGBOX,"NoDM Zone erstellen","Gehe jetzt zu der Unteren Ecke und drücke die Z Taste erneut!","Ok","");
  177. SetPVarInt(playerid,"ErstelleNoDMZone",2);
  178. return CallLocalFunction("Beavis_OnPlayerKeyStateChange","ddd",playerid, newkeys, oldkeys);
  179. }
  180. else if(GetPVarInt(playerid,"ErstelleNoDMZone") == 2)
  181. {
  182. GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
  183. SetPVarFloat(playerid,"X2",Pos[0]);
  184. SetPVarFloat(playerid,"Y2",Pos[1]);
  185. CreateNoDMZoneOnGame(GetPVarFloat(playerid,"X1"),GetPVarFloat(playerid,"Y1"),GetPVarFloat(playerid,"X2"),GetPVarFloat(playerid,"Y2"));
  186. DeletePVar(playerid,"ErstelleNoDMZone");
  187. DeletePVar(playerid,"X1");
  188. DeletePVar(playerid,"Y1");
  189. DeletePVar(playerid,"X2");
  190. DeletePVar(playerid,"Y2");
  191. ShowPlayerDialog(playerid,diaNoDMInfo,DIALOG_STYLE_MSGBOX,"NoDM Zone erstellen","Die NoDM Zone wurde erfolgreich erstellt!\nSie wurde gespeichert und wird beim Serverstart wieder geladen.\nDie Zone ist schon Aktiv nur sie wird NICHT angezeigt!\nBei einen Reconnect wirst du sie sehen","Ok","");
  192. return CallLocalFunction("Beavis_OnPlayerKeyStateChange","ddd",playerid, newkeys, oldkeys);
  193. }
  194. }
  195. if(newkeys & 4)
  196. {
  197. for(new i = 0; i < sizeof(BeavisNoDM); i++)
  198. {
  199. if(BeavisNoDM[i][B_Erstellt] == 0) continue;
  200. if(Beavis_IsPlayerInArea(playerid, BeavisNoDM[i][B_MinX], BeavisNoDM[i][B_MinY], BeavisNoDM[i][B_MaxX], BeavisNoDM[i][B_MaxY]))
  201. {
  202. if(!IsPlayerInAnyVehicle(playerid))
  203. {
  204. SendClientMessage(playerid,0xFF3A3AFF,"Du wurdest wegen DM in einer NoDM Zone für 5 Sekunden gefreezt!");
  205. TogglePlayerControllable(playerid, 0);
  206. SetTimerEx("Beavis_Freeze", 5000, 0, "d", playerid);
  207. return CallLocalFunction("Beavis_OnPlayerKeyStateChange","ddd",playerid, newkeys, oldkeys);
  208. }
  209. }
  210. }
  211. }
  212. return CallLocalFunction("Beavis_OnPlayerKeyStateChange","ddd",playerid, newkeys, oldkeys);
  213. }
  214.  
  215. forward Beavis_Freeze(playerid);
  216. public Beavis_Freeze(playerid)
  217. {
  218. TogglePlayerControllable(playerid, 1);
  219. return 1;
  220. }
  221.  
  222. forward IsInBeavisNoDm();
  223. public IsInBeavisNoDm()
  224. {
  225. for(new playerid; playerid < MAX_PLAYERS; playerid++)
  226. {
  227. if(!IsPlayerConnected(playerid)) continue;
  228. for(new i = 0; i < sizeof(BeavisNoDM); i++)
  229. {
  230. if(BeavisNoDM[i][B_Erstellt] == 0) continue;
  231. if(Beavis_IsPlayerInArea(playerid, BeavisNoDM[i][B_MinX], BeavisNoDM[i][B_MinY], BeavisNoDM[i][B_MaxX], BeavisNoDM[i][B_MaxY]))
  232. {
  233. TextDrawShowForPlayer(playerid, Beavis[BeavisInit]);
  234. SetPlayerArmedWeapon(playerid,0);
  235. }
  236. else
  237. {
  238. TextDrawHideForPlayer(playerid, Beavis[BeavisInit]);
  239. }
  240. }
  241. }
  242. return 1;
  243. }
  244.  
  245. forward CreateNoDMZoneOnGame(Float:minXX,Float:minYY,Float:maxXX,Float:maxYY);
  246. public CreateNoDMZoneOnGame(Float:minXX,Float:minYY,Float:maxXX,Float:maxYY)
  247. {
  248. new Float:_Beavis_[4],query[128];
  249. if(minXX > maxXX){
  250. _Beavis_[0] = maxXX;
  251. _Beavis_[2] = minXX;
  252. }else{
  253. _Beavis_[0] = minXX;
  254. _Beavis_[2] = maxXX;
  255. }
  256. if(minYY > maxYY){
  257. _Beavis_[1] = maxYY;
  258. _Beavis_[3] = minYY;
  259. }else{
  260. _Beavis_[1] = minYY;
  261. _Beavis_[3] = maxYY;
  262. }
  263. format(query,sizeof(query),"INSERT INTO \"NoDM\" (\"MinX\",\"MinY\",\"MaxX\",\"MaxY\") VALUES ('%f','%f','%f','%f')",_Beavis_[0],_Beavis_[1],_Beavis_[2],_Beavis_[3]);
  264. new DBResult:res = db_query(BeavisDB,query);
  265. db_free_result(res);
  266. return CreateNoDMZone(_Beavis_[0],_Beavis_[1],_Beavis_[2],_Beavis_[3]);
  267. }
  268.  
  269. stock GetMaxNoDMZonenFromSQL()
  270. {
  271. new DBResult:qresult = db_query(BeavisDB,"SELECT * FROM \"NoDM\"");
  272. new iRows = db_num_rows(qresult);
  273. db_free_result(qresult);
  274. return iRows;
  275. }
  276.  
  277. stock LoadNoDMZonen()
  278. {
  279. new data[20],Float:DMMaja[4];
  280. new DBResult:qresult = db_query(BeavisDB,"SELECT * FROM \"NoDM\"");
  281. new iRows = db_num_rows(qresult);
  282. if(iRows==0)
  283. return 1;
  284. for(new i = 0; i < iRows; i++)
  285. {
  286. db_get_field_assoc(qresult,"MinX",data,sizeof(data));
  287. DMMaja[0] = floatstr(data);
  288. db_get_field_assoc(qresult,"MinY",data,sizeof(data));
  289. DMMaja[1] = floatstr(data);
  290. db_get_field_assoc(qresult,"MaxX",data,sizeof(data));
  291. DMMaja[2] = floatstr(data);
  292. db_get_field_assoc(qresult,"MaxY",data,sizeof(data));
  293. DMMaja[3] = floatstr(data);
  294. CreateNoDMZone(DMMaja[0],DMMaja[1],DMMaja[2],DMMaja[3]);
  295. db_next_row(qresult);
  296. }
  297. db_free_result(qresult);
  298. return 1;
  299. }
  300.  
  301. stock Beavis_IsPlayerInArea(playerid,Float:MinX,Float:MinY,Float:MaxX,Float:MaxY)
  302. {
  303. new Float:pX,Float:pY,Float:pZ;
  304. GetPlayerPos(playerid,pX,pY,pZ);
  305. if(pX >= MinX && pX <= MaxX && pY >= MinY && pY <= MaxY) return 1;
  306. else return 0;
  307. }
  308.  
  309. #if defined _ALS_OnPlayerConnect
  310. #undef OnPlayerConnect
  311. #else
  312. #define _ALS_OnPlayerConnect
  313. #endif
  314. #define OnPlayerConnect Beavis_OnPlayerConnect
  315.  
  316. #if defined _ALS_OnGameModeInit
  317. #undef OnGameModeInit
  318. #else
  319. #define _ALS_OnGameModeInit
  320. #endif
  321. #define OnGameModeInit Beavis_OnGameModeInit
  322.  
  323. #if defined _ALS_OnPlayerKeyStateChange
  324. #undef OnPlayerKeyStateChange
  325. #else
  326. #define _ALS_OnPlayerKeyStateChange
  327. #endif
  328. #define OnPlayerKeyStateChange Beavis_OnPlayerKeyStateChange
  329.  
  330. #if defined _ALS_OnPlayerCommandText
  331. #undef OnPlayerCommandText
  332. #else
  333. #define _ALS_OnPlayerCommandText
  334. #endif
  335. #define OnPlayerCommandText Beavis_OnPlayerCommandText
  336.  
  337. #if defined _ALS_OnGameModeExit
  338. #undef OnGameModeExit
  339. #else
  340. #define _ALS_OnGameModeExit
  341. #endif
  342. #define OnGameModeExit Beavis_OnGameModeExit
  343.  
  344. #if defined _ALS_OnDialogResponse
  345. #undef OnDialogResponse
  346. #else
  347. #define _ALS_OnDialogResponse
  348. #endif
  349. #define OnDialogResponse Beavis_OnDialogResponse
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement