Advertisement
Guest User

Untitled

a guest
Sep 7th, 2014
718
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.69 KB | None | 0 0
  1. /*
  2. AttachObject-Editor by IPrototypeI
  3.  
  4. */
  5. #if !defined _pcmd_included
  6. #include <pcmd>
  7. #endif
  8.  
  9. #if !defined _sscanf2_included
  10. #include <sscanf2>
  11. #endif
  12.  
  13. #if !defined _streamer_included
  14. #include <streamer>
  15. #endif
  16.  
  17. #if !defined _a_mysql_included
  18. #include <a_mysql>
  19. #endif
  20.  
  21. #define MAX_ATTACHED_OBJECTS 100
  22.  
  23. enum vehData {
  24. vCarID,
  25. vObjID,
  26. Float:voObjX,
  27. Float:voObjY,
  28. Float:voObjZ,
  29. Float:voObjRx,
  30. Float:voObjRy,
  31. Float:voObjRz,
  32. }
  33.  
  34.  
  35. static PlayerData[MAX_PLAYERS][vehData],
  36. sqlHandler;
  37.  
  38. native IsValidVehicle(vehicleid);
  39.  
  40.  
  41.  
  42.  
  43.  
  44. native __CreateVehicle(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay) = CreateVehicle;
  45. stock _CreateVehicle(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay) {
  46. new veh = __CreateVehicle(modelid, x, y, z, angle, color1, color2, respawn_delay), IDstr[4];
  47. valstr(IDstr,veh);
  48. setproperty(.name = IDstr, .value = (color1 |( color2 << 16)));
  49. return veh;
  50. }
  51. #if defined _ALS_CreateVehicle
  52. #undef CreateVehicle
  53. #else
  54. #define _ALS_CreateVehicle
  55. #endif
  56. #define CreateVehicle _CreateVehicle
  57.  
  58.  
  59. native __ChangeVehicleColor(veh, color1, color2) = ChangeVehicleColor;
  60. stock _ChangeVehicleColor(veh, color1, color2) {
  61. static IDstr[4];
  62. valstr(IDstr,veh);
  63. setproperty(.name = IDstr, .value = (color1 |( color2 << 16)));
  64. __ChangeVehicleColor(veh, color1, color2);
  65. return 1;
  66. }
  67. #if defined _ALS_ChangeVehicleColor
  68. #undef ChangeVehicleColor
  69. #else
  70. #define _ALS_ChangeVehicleColor
  71. #endif
  72. #define ChangeVehicleColor _ChangeVehicleColor
  73.  
  74.  
  75.  
  76. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  77. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  78. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  79. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  80. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  81.  
  82.  
  83.  
  84.  
  85.  
  86. #if !defined _ALS_
  87. forward public _ALS_();
  88. _ALS_()<_ALS_:unhooked>{}
  89. _ALS_()<_ALS_:hooked>{}
  90. _ALS_()<>{}
  91. #endif
  92.  
  93. #if !defined AL_
  94. forward public AL_();
  95. AL_()<AL_:unhooked>{}
  96. AL_()<AL_:hooked>{}
  97. AL_()<>{}
  98. #endif
  99.  
  100.  
  101. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  102. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  103. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  104. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  105. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  106. enum loadData {
  107. lID,
  108. lVehID,
  109. lObjectID,
  110. }
  111. forward @InsertObject(ObjectID,ModelID);
  112. @InsertObject(ObjectID,ModelID){
  113. new query[256];
  114. mysql_format(sqlHandler,query,256,"INSERT INTO `objects`(`cID`,`ObjectID`,`oModelID`,`oX`,`oY`,`oZ`) VALUES (%d, %d, %d,5.0, 5.0, 2.0);",cache_get_field_content_int(0,"cID",sqlHandler), ObjectID,ModelID);
  115. return mysql_pquery(sqlHandler,query,"","");
  116. }
  117. forward @Load_Data();
  118.  
  119. @Load_Data() {
  120. new id,LoadData[loadData],query[128];
  121. static data[MAX_ATTACHED_OBJECTS];
  122. for(new i, j = cache_get_row_count(); i != j; ++i){
  123. id = cache_get_field_content_int(i,"cID",sqlHandler);
  124. if(LoadData[lID] != id){
  125. LoadData[lID] = id;
  126. LoadData[lVehID] = CreateVehicle(cache_get_field_content_int(i,"ModelID",sqlHandler),cache_get_field_content_float(i,"X",sqlHandler),cache_get_field_content_float(i,"Y",sqlHandler),cache_get_field_content_float(i,"Z",sqlHandler),cache_get_field_content_float(i,"A",sqlHandler),cache_get_field_content_int(i,"ColorID1",sqlHandler),cache_get_field_content_int(i,"ColorID2",sqlHandler),-1);
  127. if(cache_get_field_content_int(i,"oModelID",sqlHandler)!= 0){
  128. LoadData[lObjectID] = CreateDynamicObject(cache_get_field_content_int(i,"oModelID",sqlHandler),0.0,0.0,0.0,0.0,0.0,0.0);
  129. AttachDynamicObjectToVehicle(LoadData[lObjectID] , LoadData[lVehID], cache_get_field_content_float(i,"oX",sqlHandler),cache_get_field_content_float(i,"oY",sqlHandler), cache_get_field_content_float(i,"oZ",sqlHandler), cache_get_field_content_float(i,"oRx",sqlHandler), cache_get_field_content_float(i,"oRy",sqlHandler), cache_get_field_content_float(i,"oRy",sqlHandler));
  130. Streamer_SetIntData(STREAMER_TYPE_OBJECT, LoadData[lObjectID], E_STREAMER_EXTRA_ID,LoadData[lVehID]);
  131. data[0] = LoadData[lObjectID];
  132. setproperty(0, "", LoadData[lVehID], data);
  133. }
  134. mysql_format(sqlHandler,query,128,"UPDATE `vehicles` SET `VehID` = %d WHERE `VehID` = %d;",LoadData[lVehID],cache_get_field_content_int(i,"VehID",sqlHandler));
  135. mysql_pquery(sqlHandler,query,"","");
  136. mysql_format(sqlHandler,query,128,"UPDATE `objects` SET `ObjectID` = %d WHERE `ObjectID` = %d;",LoadData[lObjectID],cache_get_field_content_int(i,"ObjectID",sqlHandler));
  137. mysql_pquery(sqlHandler,query,"","");
  138. } else {
  139. LoadData[lObjectID] = CreateDynamicObject(cache_get_field_content_int(i,"oModelID",sqlHandler),0.0,0.0,0.0,0.0,0.0,0.0);
  140. Streamer_SetIntData(STREAMER_TYPE_OBJECT, LoadData[lObjectID], E_STREAMER_EXTRA_ID,LoadData[lVehID]);
  141. AttachDynamicObjectToVehicle(LoadData[lObjectID], LoadData[lVehID], cache_get_field_content_float(i,"oX",sqlHandler),cache_get_field_content_float(i,"oY",sqlHandler), cache_get_field_content_float(i,"oZ",sqlHandler), cache_get_field_content_float(i,"oRx",sqlHandler), cache_get_field_content_float(i,"oRy",sqlHandler), cache_get_field_content_float(i,"oRy",sqlHandler));
  142. mysql_format(sqlHandler,query,128,"UPDATE `objects` SET `ObjectID` = %d WHERE `ObjectID` = %d;",LoadData[lObjectID],cache_get_field_content_int(i,"ObjectID",sqlHandler));
  143. mysql_pquery(sqlHandler,query,"","");
  144. getproperty(0, "", LoadData[lVehID], data);
  145. strunpack(data,data);
  146. AddToArray(data,LoadData[lObjectID]);
  147. setproperty(0, "", LoadData[lVehID], data);
  148. }
  149. }
  150. return 1;
  151. }
  152. stock SaveData() {
  153. static data[MAX_ATTACHED_OBJECTS], Float:Pos[6],query[256];
  154. for(new x; x != MAX_VEHICLES; ++x){
  155. if(!existproperty(0, "", x))continue;
  156. getproperty(0, "", x, data);
  157. strunpack(data,data);
  158. for(new i; i != MAX_ATTACHED_OBJECTS; ++i){
  159. if(!data[i])continue;
  160. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, data[i], E_STREAMER_ATTACH_OFFSET_X,Pos[0]);
  161. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, data[i], E_STREAMER_ATTACH_OFFSET_Y,Pos[1]);
  162. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, data[i], E_STREAMER_ATTACH_OFFSET_Z,Pos[2]);
  163. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, data[i], E_STREAMER_ATTACH_R_X,Pos[3]);
  164. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, data[i], E_STREAMER_ATTACH_R_Y,Pos[4]);
  165. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, data[i], E_STREAMER_ATTACH_R_Z,Pos[5]);
  166. mysql_format(sqlHandler,query,256,"UPDATE `objects` SET `oX` = %f, `oY` = %f, `oZ` = %f,`oRx` = %f, `oRy` = %f, `oRz` = %f WHERE `ObjectID` = %d;",Pos[0],Pos[1],Pos[2],Pos[3],Pos[4],Pos[5],data[i]);
  167. mysql_pquery(sqlHandler,query,"","");
  168. }
  169. }
  170. return 1;
  171. }
  172. public OnGameModeExit()
  173. {
  174. state _A_:hooked;
  175. SaveData();
  176. return H_OnGameModeExit();
  177. }
  178. forward H_OnGameModeExit();
  179. #if defined _A_OnGameModeExit
  180. #undef OnGameModeExit
  181. #else
  182. #define _A_OnGameModeExit
  183. #endif
  184. public H_OnGameModeExit() <_A_:unhooked> return 1;
  185. public H_OnGameModeExit() <> return 1;
  186. #define OnGameModeExit(%0) H_OnGameModeExit(%0)<_A_:hooked>
  187. public OnGameModeInit()
  188. {
  189. state _ALS_:hooked;
  190. mysql_log(LOG_DEBUG,LOG_TYPE_TEXT);
  191. sqlHandler = mysql_connect("localhost", "root", "amazing", "");
  192. mysql_errno() && print("Verbindung nicht hergestellt") || print("Verbindung hergestellt");
  193. mysql_pquery(sqlHandler,"CREATE TABLE IF NOT EXISTS `vehicles`(`cID` INT AUTO_INCREMENT,`VehID` INT,`ModelID` INT,`ColorID1` INT,`ColorID2` INT,`X` DOUBLE NOT NULL,`Y` DOUBLE NOT NULL,`Z` DOUBLE NOT NULL,`A` DOUBLE NOT NULL,PRIMARY KEY(`cID`))ENGINE = InnoDB;","","");
  194. mysql_pquery(sqlHandler,"CREATE TABLE IF NOT EXISTS `objects`(`cID` INT,`ObjectID` INT,`oModelID` INT,`oX` DOUBLE NOT NULL,`oY` DOUBLE NOT NULL,`oZ` DOUBLE NOT NULL,`oRx` DOUBLE NOT NULL,`oRy` DOUBLE NOT NULL,`oRz` DOUBLE NOT NULL)ENGINE = InnoDB;","","");
  195. mysql_tquery(sqlHandler,"SELECT * FROM `vehicles` LEFT JOIN `objects` ON `objects`.`cID` = `vehicles`.`cID`;","@Load_Data","");
  196. return H_OnGameModeInit();
  197. }
  198.  
  199. forward H_OnGameModeInit();
  200. #if defined _ALS_OnGameModeInit
  201. #undef OnGameModeInit
  202. #else
  203. #define _ALS_OnGameModeInit
  204. #endif
  205. public H_OnGameModeInit() <_ALS_:unhooked> return 1;
  206. public H_OnGameModeInit() <> return 1;
  207. #define OnGameModeInit(%0) H_OnGameModeInit(%0)<_ALS_:hooked>
  208.  
  209. public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz){
  210. state _ALS_:hooked;
  211. switch(response){
  212. case EDIT_RESPONSE_CANCEL:{
  213. AttachDynamicObjectToVehicle(objectid, PlayerData[playerid][vCarID],PlayerData[playerid][voObjX],PlayerData[playerid][voObjY],PlayerData[playerid][voObjZ],PlayerData[playerid][voObjRx],PlayerData[playerid][voObjRy],PlayerData[playerid][voObjRz]);
  214. PlayerData[playerid][vObjID] = false;
  215. return 1;
  216. }
  217. case EDIT_RESPONSE_FINAL:{
  218. static Float:Pos[6];
  219. GetVehiclePos(PlayerData[playerid][vCarID],Pos[0],Pos[1],Pos[2]);
  220. GetVehicleZAngle(PlayerData[playerid][vCarID],Pos[3]);
  221. AttachDynamicObjectToVehicle(objectid, PlayerData[playerid][vCarID], ((x - Pos[0])*floatcos(Pos[3],degrees)+(y - Pos[1])*floatsin(Pos[3],degrees)), ((-(x - Pos[0]))*floatsin(Pos[3],degrees)+(y - Pos[1])*floatcos(Pos[3],degrees)), z-Pos[2], rx, ry, rz-Pos[3]);
  222. PlayerData[playerid][vObjID] = false;
  223. return SelectObject(playerid);
  224. }
  225. }
  226. return H_OnPlayerEditDynamicObject(playerid, objectid, response, x, y, z, rx, ry, rz);
  227. }
  228. forward H_OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz);
  229. #if defined _ALS_OnPlayerEditDynamicObject
  230. #undef OnPlayerEditDynamicObject
  231. #else
  232. #define _ALS_OnPlayerEditDynamicObject
  233. #endif
  234. public H_OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz) <_ALS_:unhooked> return 1;
  235. public H_OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz) <> return 1;
  236. #define OnPlayerEditDynamicObject(%0,%1,%2,%3,%4,%5,%6,%7,%8) H_OnPlayerEditDynamicObject(%0,%1,%2,%3,%4,%5,%6,%7,%8)<_ALS_:hooked>
  237.  
  238.  
  239. public OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float:x, Float:y, Float:z) {
  240. state AL_:hooked;
  241. if(!PlayerData[playerid][vCarID])return SendClientMessage(playerid,-1,"Du bist in keinem Auto");
  242. PlayerData[playerid][vObjID] = objectid;
  243. if(Streamer_GetIntData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID) != PlayerData[playerid][vCarID])return SendClientMessage(playerid,-1,"Dieses Objekt gehört nicht zu deinem Fahrzeug");
  244. static Float:Rot;
  245. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_ATTACH_R_X,PlayerData[playerid][voObjRx]);
  246. Streamer_SetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_R_X,PlayerData[playerid][voObjRx]);
  247. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_ATTACH_R_Y,PlayerData[playerid][voObjRy]);
  248. Streamer_SetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_R_Y,PlayerData[playerid][voObjRy]);
  249. GetVehicleZAngle(PlayerData[playerid][vCarID],Rot);
  250. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_ATTACH_R_Z,PlayerData[playerid][voObjRz]);
  251. Streamer_SetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_R_Z,PlayerData[playerid][voObjRz]+Rot);
  252. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_ATTACH_OFFSET_X,PlayerData[playerid][voObjX]);
  253. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_ATTACH_OFFSET_Y,PlayerData[playerid][voObjY]);
  254. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_ATTACH_OFFSET_Z,PlayerData[playerid][voObjZ]);
  255. Streamer_SetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_X,x);
  256. Streamer_SetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_Y,y);
  257. Streamer_SetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_Z,z);
  258.  
  259. Streamer_SetIntData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_ATTACHED_VEHICLE,65535);
  260. EditDynamicObject(playerid, objectid);
  261. return H_OnPlayerSelectDynamicObject(playerid, objectid, modelid, x, y, z);
  262. }
  263. forward H_OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float:x, Float:y, Float:z);
  264. #if defined AL_OnPlayerSelectDynamicObject
  265. #undef OnPlayerSelectDynamicObject
  266. #else
  267. #define AL_OnPlayerSelectDynamicObject
  268. #endif
  269. public H_OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float:x, Float:y, Float:z) <AL_:unhooked> return 1;
  270. public H_OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float:x, Float:y, Float:z) <> return 1;
  271. #define OnPlayerSelectDynamicObject(%0,%1,%2,%3,%4,%5) H_OnPlayerSelectDynamicObject(%0,%1,%2,%3,%4,%5)<AL_:hooked>
  272.  
  273.  
  274. public OnQueryError(errorid, error[], callback[], query[], connectionHandle) {
  275. printf("Errorid %d",errorid);
  276. print(error);
  277. print(callback);
  278. print(query);
  279. return 1;
  280. }
  281.  
  282. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  283. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  284. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  285. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  286. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  287.  
  288. stock AddToArray(str[],value) {
  289. static i;
  290. for(;i != MAX_ATTACHED_OBJECTS;++i){
  291. if(str[i])continue;
  292. str[i] = value;
  293. return 1;
  294. }
  295. return 0;
  296.  
  297. }
  298. stock RemoveFromArray(str[],value) {
  299. static i;
  300. for(; i != MAX_ATTACHED_OBJECTS;++i){
  301. if(value != str[i])continue;
  302. str[i] = false;
  303. return 1;
  304. }
  305. return 1;
  306.  
  307. }
  308.  
  309. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  310. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  311. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  312.  
  313. CMD->help(playerid,params[]){
  314. SendClientMessage(playerid,-1,"/veh [ModelID] [ColorID 1] [ColorID 2]");
  315. SendClientMessage(playerid,-1,"/delveh [VehID]");
  316. SendClientMessage(playerid,-1,"/setcolor [VehID] [ColorID 1] [ColorID 2]");
  317. SendClientMessage(playerid,-1,"/savepos");
  318. SendClientMessage(playerid,-1,"/respawn [VehID]");
  319. SendClientMessage(playerid,-1,"/respawnall");
  320. SendClientMessage(playerid,-1,"/delete");
  321. SendClientMessage(playerid,-1,"/attachobject");
  322. SendClientMessage(playerid,-1,"/editid");
  323. return SendClientMessage(playerid,-1,"/edit");
  324. }
  325. CMD->veh(playerid,params[]){
  326. static veh[4];
  327. if(sscanf(params,"e<k<vehicle>dd>",veh))return SendClientMessage(playerid,-1,"Benutze: /veh [ModelID] [ColorID 1] [ColorID 2]");
  328. static Float:Pos[3];
  329. GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
  330. PutPlayerInVehicle(playerid,veh[3]=CreateVehicle(veh[0],Pos[0],Pos[1],Pos[2],0.0,veh[1],veh[2],-1),0);
  331. new query[256];
  332. mysql_format(sqlHandler,query,256,"INSERT INTO `vehicles`(`VehID`,`ModelID`,`ColorID1`,`ColorID2`,`X`,`Y`,`Z`,`A`) VALUES (%d,%d,%d,%d,%f,%f,%f,%f);",veh[3],veh[0],veh[1],veh[2],Pos[0],Pos[1],Pos[2],0.0);
  333. mysql_pquery(sqlHandler,query,"","");
  334. return SendClientMessage(playerid,-1,"Erfolgreich erstellt!");
  335. }
  336. CMD->delveh(playerid,params[]){
  337. extract params -> new veh; else veh = GetPlayerVehicleID(playerid);
  338. if(!veh)return SendClientMessage(playerid,-1,"Du bist in keinem Fahrzeug!");
  339. DestroyVehicle(veh);
  340. new query[256];
  341. mysql_format(sqlHandler,query,256,"DELETE FROM `objects`, `vehicles` USING `objects`, `vehicles` WHERE `objects`.`cID` = `vehicles`.`cID` AND `vehicles`.`VehID` = %d;",veh);
  342. mysql_pquery(sqlHandler,query,"","");
  343. static data[MAX_ATTACHED_OBJECTS];
  344. getproperty(0, "", veh, data);
  345. strunpack(data,data);
  346. for(new i; i != MAX_ATTACHED_OBJECTS; ++i){
  347. if(!data[i])continue;
  348. DestroyDynamicObject(data[i]);
  349. }
  350. deleteproperty(0, "", veh);
  351. return SendClientMessage(playerid,-1,"Das Fahrzeug wurde gelöscht!");
  352. }
  353.  
  354.  
  355. CMD->setcolor(playerid,params[]){
  356. new veh[3];
  357. if(sscanf(params, "a<i>[3]",veh))return SendClientMessage(playerid,-1,"Benutze: /setcolor [VehID] [ColorID 1] [ColorID 2]");
  358. veh[0] && ChangeVehicleColor(veh[0] ,veh[1],veh[2]) || ChangeVehicleColor(GetPlayerVehicleID(playerid),veh[1],veh[2]);
  359. new query[128];
  360. mysql_format(sqlHandler,query,128,"UPDATE `vehicles` SET `ColorID1` = %d, `ColorID2` = %d WHERE `VehID` = %d;",veh[1],veh[2],((veh[0] != 0)?(veh[0]):(GetPlayerVehicleID(playerid))));
  361. mysql_pquery(sqlHandler,query,"","");
  362. return SendClientMessage(playerid,-1,"Die Farbe wurde geändert!");
  363. }
  364.  
  365. CMD->savepos(playerid,params[]){
  366. if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Du bist in keinem Fahrzeug!");
  367. static Float:Pos[6], veh[3],IDstr[4];
  368. veh[0] = GetPlayerVehicleID(playerid);
  369. valstr(IDstr,veh[0]);
  370. veh[1] = getproperty(0, .name = IDstr);
  371. veh[2] = veh[0];
  372. GetVehiclePos(veh[0],Pos[0],Pos[1],Pos[2]);
  373. GetVehicleZAngle(veh[0],Pos[3]);
  374.  
  375. static data[MAX_ATTACHED_OBJECTS];
  376. getproperty(0, "", veh[0], data);
  377. strunpack(data,data);
  378. deleteproperty(0, "", veh[0]);
  379. veh[0] = CreateVehicle(GetVehicleModel(veh[0]),Pos[0],Pos[1],Pos[2],Pos[3],(veh[1] & ~0xFFFF0000),(veh[1] >> 16),-1);
  380. new query[256];
  381. mysql_format(sqlHandler,query,256,"UPDATE `vehicles` SET `VehID` = %d, `X` = %f, `Y` = %f, `Z` = %f, `A` = '%f' WHERE `VehID` = %d;",veh[0],Pos[0],Pos[1],Pos[2],Pos[3],GetPlayerVehicleID(playerid));
  382. print(query);
  383. mysql_pquery(sqlHandler,query,"","");
  384. setproperty(0, "", veh[0], data);
  385. for(new i; i != MAX_ATTACHED_OBJECTS; ++i){
  386. if(!data[i])continue;
  387. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, data[i], E_STREAMER_ATTACH_OFFSET_X,Pos[0]);
  388. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, data[i], E_STREAMER_ATTACH_OFFSET_Y,Pos[1]);
  389. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, data[i], E_STREAMER_ATTACH_OFFSET_Z,Pos[2]);
  390. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, data[i], E_STREAMER_ATTACH_R_X,Pos[3]);
  391. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, data[i], E_STREAMER_ATTACH_R_Y,Pos[4]);
  392. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, data[i], E_STREAMER_ATTACH_R_Z,Pos[5]);
  393. Streamer_SetIntData(STREAMER_TYPE_OBJECT, data[i], E_STREAMER_EXTRA_ID,veh[0]);
  394. Streamer_SetIntData(STREAMER_TYPE_OBJECT, data[i], E_STREAMER_ATTACHED_VEHICLE,65535);
  395. AttachDynamicObjectToVehicle(data[i], veh[0],Pos[0],Pos[1],Pos[2],Pos[3],Pos[4],Pos[5]);
  396. }
  397. PutPlayerInVehicle(playerid,veh[0],0);
  398. DestroyVehicle(veh[2]);
  399. return 1;
  400. }
  401. CMD->respawn(playerid,params[]){
  402. extract params -> new veh; else veh = GetPlayerVehicleID(playerid);
  403. if(!veh)return SendClientMessage(playerid,-1,"Benutze: /respawn [vehicleid optional] || Sitze in einem Fahrzeug");
  404. SetVehicleToRespawn(veh);
  405. return SendClientMessage(playerid,-1,"Das Fahrzeug wurde respawnt!");
  406. }
  407. CMD->respawnall(playerid,params[]){
  408. static i;
  409. for(; i != MAX_VEHICLES; ++i) {
  410. if(!IsValidVehicle(i))continue;
  411. SetVehicleToRespawn(i);
  412. }
  413. return SendClientMessage(playerid,-1,"Fahrzeuge wurden respawnt!");
  414. }
  415.  
  416. CMD->edit(playerid,params[]){
  417. PlayerData[playerid][vCarID]= GetPlayerVehicleID(playerid);
  418. if(!PlayerData[playerid][vCarID])return SendClientMessage(playerid,-1,"Du bist in keinem Auto");
  419. SelectObject(playerid);
  420. return 1;
  421. }
  422. CMD->editid(playerid,params[]){
  423. new objectid;
  424. PlayerData[playerid][vCarID]= GetPlayerVehicleID(playerid);
  425. if(sscanf(params,"d",objectid))return SendClientMessage(playerid,-1,"Benutze: /edit [objectid]");
  426. if(!PlayerData[playerid][vCarID])return SendClientMessage(playerid,-1,"Du bist in keinem Auto");
  427. PlayerData[playerid][vObjID] = objectid;
  428. if(Streamer_GetIntData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_EXTRA_ID) != PlayerData[playerid][vCarID])return SendClientMessage(playerid,-1,"Dieses Objekt gehört nicht zu deinem Fahrzeug");
  429. static Float:Rot;
  430. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_ATTACH_R_X,PlayerData[playerid][voObjRx]);
  431. Streamer_SetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_R_X,PlayerData[playerid][voObjRx]);
  432. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_ATTACH_R_Y,PlayerData[playerid][voObjRy]);
  433. Streamer_SetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_R_Y,PlayerData[playerid][voObjRy]);
  434. GetVehicleZAngle(PlayerData[playerid][vCarID],Rot);
  435. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_ATTACH_R_Z,PlayerData[playerid][voObjRz]);
  436. Streamer_SetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_R_Z,PlayerData[playerid][voObjRz]+Rot);
  437. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_ATTACH_OFFSET_X,PlayerData[playerid][voObjX]);
  438. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_ATTACH_OFFSET_Y,PlayerData[playerid][voObjY]);
  439. Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_ATTACH_OFFSET_Z,PlayerData[playerid][voObjZ]);
  440. new Float:Pos[3];
  441. GetVehiclePos(PlayerData[playerid][vCarID],Pos[0],Pos[1],Pos[2]);
  442. Streamer_SetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_X,floatsin(360-Rot,degrees) * PlayerData[playerid][voObjY] + floatcos(360-Rot,degrees) * PlayerData[playerid][voObjX] + Pos[0]);
  443. Streamer_SetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_Y,floatcos(360-Rot,degrees) * PlayerData[playerid][voObjY] - floatsin(360-Rot,degrees) * PlayerData[playerid][voObjX] + Pos[1]);
  444. Streamer_SetFloatData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_Z,Pos[2]+PlayerData[playerid][voObjZ]);
  445. Streamer_SetIntData(STREAMER_TYPE_OBJECT, objectid, E_STREAMER_ATTACHED_VEHICLE,65535);
  446. EditDynamicObject(playerid, objectid);
  447. return 1;
  448. }
  449.  
  450.  
  451.  
  452. CMD->delete(playerid,params[]){
  453. if(!PlayerData[playerid][vObjID])return SendClientMessage(playerid,-1,"Du hast kein Object ausgewählt");
  454. DestroyDynamicObject(PlayerData[playerid][vObjID]);
  455. static data[MAX_ATTACHED_OBJECTS];
  456. getproperty(0, "", PlayerData[playerid][vCarID], data);
  457. strunpack(data,data);
  458. RemoveFromArray(data,PlayerData[playerid][vObjID]);
  459. SendClientMessage(playerid,-1,"Object wurde gelöscht");
  460. setproperty(0, "", PlayerData[playerid][vCarID], data);
  461. new query[64];
  462. mysql_format(sqlHandler,query,64,"DELETE FROM `objects` WHERE `ObjectID` = %d LIMIT 1;",PlayerData[playerid][vObjID]);
  463. mysql_pquery(sqlHandler,query,"","");
  464. return CancelEdit(playerid);
  465. }
  466. CMD->saveall(playerid,params[]){
  467. return SaveData();
  468. }
  469. CMD->attachobject(playerid,params[]){
  470. static obj[2];
  471. if(sscanf(params,"d",obj[0]))return SendClientMessage(playerid,-1,"Benutze: /attachobject [modelid]");
  472. static Float:Pos[3];
  473. PlayerData[playerid][vCarID]= GetPlayerVehicleID(playerid);
  474. if(!PlayerData[playerid][vCarID])return SendClientMessage(playerid,-1,"Du bist in keinem Auto");
  475. GetVehiclePos(PlayerData[playerid][vCarID],Pos[0],Pos[1],Pos[2]);
  476. AttachDynamicObjectToVehicle(obj[1] = CreateDynamicObject(obj[0],Pos[0],Pos[1],Pos[2],0.0,0.0,0.0), PlayerData[playerid][vCarID], 5.0, 5.0, 2.0, 0.0, 0.0, 0.0);
  477. Streamer_SetIntData(STREAMER_TYPE_OBJECT, obj[1], E_STREAMER_EXTRA_ID,PlayerData[playerid][vCarID]);
  478. new query[64];
  479. Streamer_Update(playerid);
  480. mysql_format(sqlHandler,query,64,"SELECT `cID` FROM `vehicles` WHERE `VehID` = %d LIMIT 1;",PlayerData[playerid][vCarID]);
  481. mysql_pquery(sqlHandler,query,"@InsertObject","dd",obj[1],obj[0]);
  482. static data[MAX_ATTACHED_OBJECTS];
  483. switch(existproperty(0, "", PlayerData[playerid][vCarID])){
  484. case 0:{
  485. data[0] = obj[1];
  486. setproperty(0, "", PlayerData[playerid][vCarID], data);
  487. }
  488. case 1:{
  489. getproperty(0, "", PlayerData[playerid][vCarID], data);
  490. strunpack(data,data);
  491. AddToArray(data,obj[1]);
  492. setproperty(0, "", PlayerData[playerid][vCarID], data);
  493. }
  494. }
  495. SelectObject(playerid);
  496. new str[20];
  497. format(str,20,"ObjectID: %d",obj[1]);
  498. SendClientMessage(playerid,-1,str);
  499. return SendClientMessage(playerid,-1,"Objekt wurde erstellt!");
  500. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement