Advertisement
Kralcik

Dynamic Actor System

Sep 8th, 2016
1,252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.12 KB | None | 0 0
  1. #define FILTERSCRIPT
  2.  
  3. #include <a_samp>
  4. #include <a_sampdb>
  5. #include <zcmd>
  6. #include <sscanf2>
  7.  
  8. #define function%0(%1) forward%0(%1);public%0(%1)
  9.  
  10. #define AFile ("Actor.db")
  11.  
  12. enum ActorInfo
  13. {
  14. ActorSkin,
  15. Float: ActorX,
  16. Float: ActorY,
  17. Float: ActorZ,
  18. Float: ActorA,
  19. ActorVirtual,
  20. ActorText[360],
  21. ActorAd[32],
  22. AActive,
  23. Actor,
  24. Text3D: ActorLabel
  25. }
  26.  
  27. new Ainfo[MAX_ACTORS][ActorInfo];
  28.  
  29. new gValue[128];
  30. new DB:ADB;
  31.  
  32. new Actor_AI = 1;
  33.  
  34. public OnFilterScriptInit()
  35. {
  36. print("\n--------------------------------------");
  37. print(" _Backup & Kralcik dinamik aktör sistemi yüklendi!"); // This is credits do not delete !
  38. print("--------------------------------------\n"); // ( Türkçeden anlamayan amipler için ingilizce yazdım )
  39. if(!fexist(AFile))
  40. {
  41. fcreate(AFile);
  42. printf("%s adlı veritabanı bulunamadı üzümle ben senin için oluştururum.");
  43. }
  44. ADB = db_open(AFile); // dbyi açıyoruz
  45. LoadActor(); // db yi açtıktan sonra Aktörlerimizi yüklüyoruz.
  46. return 1;
  47. }
  48.  
  49.  
  50.  
  51. public OnFilterScriptExit()
  52. {
  53. db_close(ADB); // dbyi kapatıyoruz
  54. return 1;
  55. }
  56.  
  57.  
  58. public OnPlayerRequestClass(playerid, classid)
  59. {
  60. return 1;
  61. }
  62.  
  63. public OnPlayerConnect(playerid)
  64. {
  65. return 1;
  66. }
  67.  
  68. public OnPlayerDisconnect(playerid, reason)
  69. {
  70. return 1;
  71. }
  72.  
  73. public OnPlayerSpawn(playerid)
  74. {
  75. return 1;
  76. }
  77.  
  78. public OnPlayerDeath(playerid, killerid, reason)
  79. {
  80. return 1;
  81. }
  82.  
  83. public OnVehicleSpawn(vehicleid)
  84. {
  85. return 1;
  86. }
  87.  
  88. public OnVehicleDeath(vehicleid, killerid)
  89. {
  90. return 1;
  91. }
  92.  
  93. public OnPlayerText(playerid, text[])
  94. {
  95. return 1;
  96. }
  97.  
  98. public OnPlayerCommandText(playerid, cmdtext[])
  99. {
  100. return 0;
  101. }
  102.  
  103. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  104. {
  105. return 1;
  106. }
  107.  
  108. public OnPlayerExitVehicle(playerid, vehicleid)
  109. {
  110. return 1;
  111. }
  112.  
  113. public OnPlayerStateChange(playerid, newstate, oldstate)
  114. {
  115. return 1;
  116. }
  117.  
  118. public OnPlayerEnterCheckpoint(playerid)
  119. {
  120. return 1;
  121. }
  122.  
  123. public OnPlayerLeaveCheckpoint(playerid)
  124. {
  125. return 1;
  126. }
  127.  
  128. public OnPlayerEnterRaceCheckpoint(playerid)
  129. {
  130. return 1;
  131. }
  132.  
  133. public OnPlayerLeaveRaceCheckpoint(playerid)
  134. {
  135. return 1;
  136. }
  137.  
  138. public OnRconCommand(cmd[])
  139. {
  140. return 1;
  141. }
  142.  
  143. public OnPlayerRequestSpawn(playerid)
  144. {
  145. return 1;
  146. }
  147.  
  148. public OnObjectMoved(objectid)
  149. {
  150. return 1;
  151. }
  152.  
  153. public OnPlayerObjectMoved(playerid, objectid)
  154. {
  155. return 1;
  156. }
  157.  
  158. public OnPlayerPickUpPickup(playerid, pickupid)
  159. {
  160. return 1;
  161. }
  162.  
  163. public OnVehicleMod(playerid, vehicleid, componentid)
  164. {
  165. return 1;
  166. }
  167.  
  168. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  169. {
  170. return 1;
  171. }
  172.  
  173. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  174. {
  175. return 1;
  176. }
  177.  
  178. public OnPlayerSelectedMenuRow(playerid, row)
  179. {
  180. return 1;
  181. }
  182.  
  183. public OnPlayerExitedMenu(playerid)
  184. {
  185. return 1;
  186. }
  187.  
  188. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  189. {
  190. return 1;
  191. }
  192.  
  193. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  194. {
  195. return 1;
  196. }
  197.  
  198. public OnRconLoginAttempt(ip[], password[], success)
  199. {
  200. return 1;
  201. }
  202.  
  203. public OnPlayerUpdate(playerid)
  204. {
  205. return 1;
  206. }
  207.  
  208. public OnPlayerStreamIn(playerid, forplayerid)
  209. {
  210. return 1;
  211. }
  212.  
  213. public OnPlayerStreamOut(playerid, forplayerid)
  214. {
  215. return 1;
  216. }
  217.  
  218. public OnVehicleStreamIn(vehicleid, forplayerid)
  219. {
  220. return 1;
  221. }
  222.  
  223. public OnVehicleStreamOut(vehicleid, forplayerid)
  224. {
  225. return 1;
  226. }
  227.  
  228. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  229. {
  230. return 1;
  231. }
  232.  
  233. CMD:createactor(playerid, params[])
  234. {
  235. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xE60000FF, "ERROR | {FFFFFF}Only RCON admins can use this command.");
  236. if(GetLastID() > MAX_ACTORS) return SendClientMessage(playerid, 0xE60000FF, "ERROR | {FFFFFF}Max Actor!");
  237. new Float:PPos[4], string[128], query[256],SkinID,ActorNamee[32],Text[250];
  238. GetPlayerPos(playerid, PPos[0], PPos[1], PPos[2]);
  239. GetPlayerFacingAngle(playerid,PPos[3]);
  240. if(sscanf(params,"ssi",ActorNamee,Text,SkinID)) return SendClientMessage(playerid, 0xE60000FF, "Usage: /createactor [Name] [Text] [Skin ID]");
  241. format(query, sizeof(query), "INSERT INTO `ActorDB` (`ActorX`,`ActorY`,`ActorZ`, `ActorName`,`Text`, `ActorVirtual`, `ActorA`,`Skin`,`AActive`) VALUES('%f','%f','%f','%s','%s','%i','%f','%i','1');",PPos[0], PPos[1], PPos[2],ActorNamee,Text,GetPlayerVirtualWorld(playerid),PPos[3],SkinID);
  242. db_query(ADB,query);
  243. format(string,sizeof(string),"{0F96C7}Actor ID:{FFFFFF} %d\n{0F96C7}Actor Name:{FFFFFF} %s\nActor Text:{FFFFFF} %s\nActor Skin:{FFFFFF} %i",Actor_AI, ActorNamee,Text,SkinID);
  244. ShowPlayerDialog(playerid,999,DIALOG_STYLE_MSGBOX,"{0F96C7}Dynamic Actor System {FFFFFF}| Actor Created",string,"Close","");
  245. SetPlayerPos(playerid, PPos[0] + (1.5 * floatsin(-PPos[3], degrees)), PPos[1] + (1.5 * floatcos(-PPos[3], degrees)), PPos[2]);
  246. K_B_CreateActor(ActorNamee,Actor_AI,Text,SkinID,PPos[0],PPos[1],PPos[2],PPos[3],GetPlayerVirtualWorld(playerid),1);
  247. Actor_AI ++;
  248. return 1;
  249. }
  250. CMD:removeactor(playerid,params[])
  251. {
  252. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xE60000FF, "ERROR | {FFFFFF}Only RCON admins can use this command.");
  253. new ID;
  254. if(sscanf(params,"i",ID)) return SendClientMessage(playerid,0xE60000FF,"Usage: /removeactor [Actor ID]");
  255. new query[250];
  256. Ainfo[ID][AActive] = 0;
  257. format(query, sizeof(query), "UPDATE `ActorDB` SET `AActive` = '0' WHERE `ActorName` = '%s'",Ainfo[ID][ActorAd]);
  258. db_query(ADB,query);
  259. DestroyActor(Ainfo[ID][Actor]);
  260. Delete3DTextLabel(Ainfo[ID][ActorLabel]);
  261. SendClientMessage(playerid,-1,"Actor Deleted.");
  262. return true;
  263.  
  264. }
  265. CMD:editactor(playerid,params[])
  266. {
  267. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xE60000FF, "ERROR | {FFFFFF}Only RCON admins can use this command.");
  268.  
  269. new akid ,Text[256],SkinID,Float:PPos[4],ActorNamee[32],query[500];
  270.  
  271. if(sscanf(params,"is[32]s[250]i,",akid,ActorNamee,Text,SkinID)) return SendClientMessage(playerid,0xE60000FF,"Usage : /editactor [ActorID] [New Name] [New Text] [Skin OD]");
  272. if(Ainfo[akid][AActive] == 0) return SendClientMessage(playerid, 0xE60000FF ,"ERROR | {FFFFFF}This actor is not active.");
  273.  
  274. GetPlayerPos(playerid, PPos[0], PPos[1], PPos[2]);
  275. GetPlayerFacingAngle(playerid,PPos[3]);
  276.  
  277. DestroyActor(Ainfo[akid][Actor]);
  278. Delete3DTextLabel(Ainfo[akid][ActorLabel]);
  279. new ad[32];
  280. //ad = Name
  281. format(ad,32,"%s",Ainfo[akid][ActorAd]);
  282.  
  283. format(query, sizeof(query), "UPDATE `ActorDB` SET `ActorName` = '%s' WHERE `ActorName` = '%s'",ActorNamee,ad);
  284. db_query(ADB,query);
  285.  
  286. format(query, sizeof(query), "UPDATE `ActorDB` SET `ActorX` = '%f' WHERE `ActorName` = '%s'",PPos[0],ad);
  287. db_query(ADB,query);
  288. format(query, sizeof(query), "UPDATE `ActorDB` SET `ActorY` = '%f' WHERE `ActorName` = '%s'",PPos[1],ad);
  289. db_query(ADB,query);
  290. format(query, sizeof(query), "UPDATE `ActorDB` SET `ActorZ` = '%f' WHERE `ActorName` = '%s'",PPos[2],ad);
  291. db_query(ADB,query);
  292. format(query, sizeof(query), "UPDATE `ActorDB` SET `ActorA` = '%f' WHERE `ActorName` = '%s'",PPos[3],ad);
  293. db_query(ADB,query);
  294. format(query, sizeof(query), "UPDATE `ActorDB` SET `Skin` = '%i' WHERE `ActorName` = '%s'",SkinID,ad);
  295. db_query(ADB,query);
  296. format(query, sizeof(query), "UPDATE `ActorDB` SET `Text` = '%s' WHERE `ActorName` = '%s'",Text,ad);
  297. db_query(ADB,query);
  298. format(query, sizeof(query), "UPDATE `ActorDB` SET `ActorVirtual` = '%i' WHERE `ActorName` = '%s'",GetPlayerVirtualWorld(playerid),ad);
  299. db_query(ADB,query);
  300.  
  301. SetPlayerPos(playerid, PPos[0] + (1.5 * floatsin(-PPos[3], degrees)), PPos[1] + (1.5 * floatcos(-PPos[3], degrees)), PPos[2]);
  302. K_B_CreateActor(ActorNamee,akid,Text,SkinID,PPos[0],PPos[1],PPos[2],PPos[3],GetPlayerVirtualWorld(playerid),1);
  303. return true;
  304. }
  305. /// Stocklar
  306.  
  307. stock GetLastID()
  308. {
  309. new DBResult:qresult, count = 0, Value[128];
  310. qresult = db_query(ADB, "SELECT * FROM `ActorDB` ORDER BY `ID` DESC LIMIT 1");
  311. count = db_num_rows(qresult);
  312. for(new a=0;a<count;a++)
  313. {
  314. if(count <= MAX_ACTORS)
  315. {
  316. db_get_field_assoc(qresult, "ID", Value, 5); gValue[a] = Value[a]+1;
  317. db_next_row(qresult);
  318. }
  319. }
  320. db_free_result(qresult);
  321. return 1;
  322. }
  323.  
  324. stock fcreate(filename[])
  325. {
  326. if (fexist(filename)){return false;}
  327. new File:fhandle = fopen(filename,io_write);
  328. fclose(fhandle);
  329. return true;
  330. }
  331.  
  332. stock LoadActor()
  333. {
  334.  
  335. new query[356], DBResult:qresult, count = 0, value[128],string[356],Float:xim,Float:yim,Float:zim,Float:aim,gelenText[356],ActorName[32],
  336. Actorvirtualim,ActorSkin2,adurum3;
  337. if(!db_query(DB: ADB, "SELECT * FROM `ActorDB`"))
  338. {
  339. print("Actor tablosu bulunamadı! Ben senin icin oluşturuyorum...");
  340. format(query,sizeof(query),"CREATE TABLE IF NOT EXISTS `ActorDB` (`ID` INTEGER PRIMARY KEY AUTOINCREMENT,`ActorName` TEXT,`ActorVirtual`INTEGER ,`ActorX` TEXT,`ActorA` TEXT,`ActorY` TEXT,`ActorZ` TEXT,`Skin` INTEGER ,`AActive` INTEGER ,`Text` TEXT)");
  341. db_query(ADB,query);
  342. print("--------------------------------------\n");
  343. print("Aktör tablosu oluşturuldu sunucuya restart atman gerekiyor...");
  344. print("--------------------------------------\n");
  345. SendRconCommand("exit");
  346. }
  347. else
  348. {
  349. qresult = db_query(ADB, "SELECT * FROM `ActorDB`");
  350. count = db_num_rows(qresult);
  351. for(new a=0;a<count;a++)
  352. {
  353. if(count >= 1 && count <= MAX_ACTORS)
  354. {
  355. db_get_field_assoc(qresult, "ActorX", value, 20); xim = floatstr(value);
  356. db_get_field_assoc(qresult, "ActorY", value, 20); yim = floatstr(value);
  357. db_get_field_assoc(qresult, "ActorZ", value, 20); zim = floatstr(value);
  358. db_get_field_assoc(qresult, "ActorA", value, 20); aim = floatstr(value);
  359. db_get_field_assoc(qresult, "Text",string,356); format(gelenText,356,string);
  360. db_get_field_assoc(qresult, "ActorName",string,35); format(ActorName,32,string);
  361. db_get_field_assoc(qresult, "ActorVirtual", value, 20); Actorvirtualim = strval(value);
  362. db_get_field_assoc(qresult, "Skin", value, 20); ActorSkin2 = strval(value);
  363. db_get_field_assoc(qresult, "AActive", value, 20); adurum3 = strval(value);
  364. if(adurum3 == 1)
  365. {
  366. K_B_CreateActor(ActorName,Actor_AI,gelenText,ActorSkin2,xim,yim,zim,aim,Actorvirtualim,adurum3);
  367. Actor_AI++;
  368. }
  369. db_next_row(qresult);
  370.  
  371. }
  372. }
  373. db_free_result(qresult);
  374. print("Backup & Kralcik aktör sistemi şuanda yüklendi.");
  375. print("--------------------------------------\n");
  376. }
  377.  
  378.  
  379.  
  380. return true;
  381. }
  382.  
  383. stock K_B_CreateActor(ActorNeym[],ActorID,BilgiText[],Smodel,Float:Axxx,Float:Ayyy,Float:Azzz,Float:Aaaa,AWorld,adurum)
  384. {
  385. if(adurum == 1)
  386. {
  387. new dongustr[256];
  388. format(dongustr,256,"%s(%i)\n%s",ActorNeym,ActorID,BilgiText);
  389. Ainfo[ActorID][ActorLabel] = Create3DTextLabel(dongustr, 0x008080FF, Axxx, Ayyy, Azzz, 20.0, AWorld, 0);
  390. Ainfo[ActorID][Actor] = CreateActor(Smodel,Axxx,Ayyy,Azzz,Aaaa);
  391. SetActorVirtualWorld(Ainfo[ActorID][Actor], AWorld);
  392.  
  393. Ainfo[ActorID][AActive] = 1;
  394. Ainfo[ActorID][ActorX] = Axxx;
  395. Ainfo[ActorID][ActorY] = Ayyy;
  396. Ainfo[ActorID][ActorZ] = Azzz;
  397. Ainfo[ActorID][ActorA] = Aaaa;
  398. Ainfo[ActorID][ActorVirtual] = AWorld;
  399. Ainfo[ActorID][ActorSkin] = Smodel;
  400. format(Ainfo[ActorID][ActorAd],32,ActorNeym);
  401. format(Ainfo[ActorID][ActorText],256,BilgiText);
  402. }
  403.  
  404. return true;
  405. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement