Advertisement
Guest User

CityRP Blockland

a guest
Aug 6th, 2018
568
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 80.96 KB | None | 0 0
  1. //--------------------
  2. // Name: CityRP
  3. // Type: RP
  4. // Version: 1.3
  5. // Author: Jookia
  6. //--------------------
  7.  
  8. // Update 1.1
  9. // Fixed a real estate bug.
  10. // No longer can reset while having a loan.
  11. // Updated the bank disclaimer.
  12. // Added ^cast command.
  13. // Save file is generated at start.
  14. // Added a few missing prefs.
  15. // Fixed a bug with not being able to see bottomprint when first spawned.
  16.  
  17. // Update 1.2
  18. // Added a datablock.CityRPCanSpawn variable.
  19. // Changing maps keeps minigame.
  20. // Default interest set to 1.01.
  21.  
  22. // Update 1.3
  23. // Added some RTB stuff.
  24.  
  25. package CityRP
  26. {
  27. function CityRP(%mode, %data)
  28. {
  29. if(%mode == 1)
  30. {
  31. if(!isObject(CityRPData))
  32. {
  33. new scriptObject(CityRPData)
  34. {
  35. class = Sassy;
  36.  
  37. dataFile = "config/server/PeopleMods/CityRPData.dat";
  38. };
  39.  
  40. $CityRP::jobs::name[$CityRP::jobs++] = "Civilian";
  41. $CityRP::jobs::initialInvestment[$CityRP::jobs] = 0;
  42. $CityRP::jobs::pay[$CityRP::jobs] = 20;
  43. $CityRP::jobs::tools[$CityRP::jobs] = "hammerItem wrenchItem printGun";
  44. $CityRP::jobs::items[$CityRP::jobs] = false;
  45. $CityRP::jobs::law[$CityRP::jobs] = false;
  46. $CityRP::jobs::pickpocket[$CityRP::jobs] = false;
  47.  
  48. $CityRP::jobs::name[$CityRP::jobs++] = "Shop Keeper";
  49. $CityRP::jobs::initialInvestment[$CityRP::jobs] = 100;
  50. $CityRP::jobs::pay[$CityRP::jobs] = 40;
  51. $CityRP::jobs::tools[$CityRP::jobs] = "hammerItem wrenchItem printGun";
  52. $CityRP::jobs::items[$CityRP::jobs] = true;
  53. $CityRP::jobs::law[$CityRP::jobs] = false;
  54. $CityRP::jobs::pickpocket[$CityRP::jobs] = false;
  55.  
  56. $CityRP::jobs::name[$CityRP::jobs++] = "Criminal";
  57. $CityRP::jobs::initialInvestment[$CityRP::jobs] = 150;
  58. $CityRP::jobs::pay[$CityRP::jobs] = 20;
  59. $CityRP::jobs::tools[$CityRP::jobs] = "hammerItem wrenchItem printGun";
  60. $CityRP::jobs::items[$CityRP::jobs] = false;
  61. $CityRP::jobs::law[$CityRP::jobs] = false;
  62. $CityRP::jobs::pickpocket[$CityRP::jobs] = true;
  63.  
  64. $CityRP::jobs::name[$CityRP::jobs++] = "Policeman";
  65. $CityRP::jobs::initialInvestment[$CityRP::jobs] = 150;
  66. $CityRP::jobs::pay[$CityRP::jobs] = 50;
  67. $CityRP::jobs::tools[$CityRP::jobs] = "hammerItem wrenchItem printGun CityRPBatonItem";
  68. $CityRP::jobs::items[$CityRP::jobs] = false;
  69. $CityRP::jobs::law[$CityRP::jobs] = true;
  70. $CityRP::jobs::pickpocket[$CityRP::jobs] = false;
  71.  
  72. $CityRP::prices::vehicleSpawn = 500;
  73. $CityRP::prices::addItemSpawn = 25;
  74. $CityRP::prices::jailingBonus = 25;
  75. $CityRP::prices::reset = 1000;
  76. $CityRP::prices::maxLoan = 5000;
  77. $CityRP::prices::loanPay = 25;
  78.  
  79. $CityRP::demerits::demoteLevel = 250;
  80. $CityRP::demerits::wantedLevel = 50;
  81. $CityRP::demerits::pickpocketing = 60;
  82. $CityRP::demerits::hittingInnocents = 25;
  83. $CityRP::demerits::attemptedMurder = 25;
  84. $CityRP::demerits::murder = 75;
  85.  
  86. $CityRP::other::tickSpeed = 5;
  87. $CityRP::other::interest = 1.01;
  88. $CityRP::other::interestTick = 5;
  89. $CityRP::other::maxInterest = 10000;
  90. $CityRP::other::commandSymbol = "^";
  91.  
  92. if(isFile("config/server/PeopleMods/CityRPPrefs.cs"))
  93. {
  94. exec("config/server/PeopleMods/CityRPPrefs.cs");
  95. }
  96.  
  97. export("$CityRP::*", "config/server/PeopleMods/CityRPPrefs.cs", false);
  98.  
  99. $CityRP_temp::spawnPoints = "";
  100. $CityRP_temp::loadedDatablocks = true;
  101.  
  102. exec("config/server/PeopleMods/CityRPPrefs.cs");
  103.  
  104. if(isFile("add-ons/system_ReturnToBlockland/server.cs") && !$CityRP_temp::loadedRTBPrefs)
  105. {
  106. if(!$RTB::RTBS_ServerControl)
  107. {
  108. exec("add-ons/system_ReturnToBlockland/RTBR_ServerControl_Hook.cs");
  109. }
  110.  
  111. RTB_registerPref("Demote Demerits", "CityRP", "$CityRP::demerits::demoteLevel", "int 1 1000", "CityRP", $CityRP::demerits::demoteLevel, false, false);
  112. RTB_registerPref("Wanted Demerits", "CityRP", "$CityRP::demerits::wantedLevel", "int 1 1000", "CityRP", $CityRP::demerits::wantedLevel, false, false);
  113. RTB_registerPref("Pickpocket Demerits", "CityRP", "$CityRP::demerits::pickpocketing", "int 1 1000", "CityRP", $CityRP::demerits::pickpocketing, false, false);
  114. RTB_registerPref("Hitting Innocent Demerits", "CityRP", "$CityRP::demerits::hittingInnocents", "int 1 1000", "CityRP", $CityRP::demerits::hittingInnocents, false, false);
  115. RTB_registerPref("Attempted Murder Demerits", "CityRP", "$CityRP::demerits::attemptedMurder", "int 1 1000", "CityRP", $CityRP::demerits::attemptedMurder, false, false);
  116. RTB_registerPref("Murder Demerits", "CityRP", "$CityRP::demerits::murder", "int 1 1000", "CityRP", $CityRP::demerits::murder, false, false);
  117.  
  118. RTB_registerPref("Vehicle Spawn Price", "CityRP", "$CityRP::prices::vehicleSpawn", "int 0 10000", "CityRP", $CityRP::prices::vehicleSpawn, false, true);
  119. RTB_registerPref("Base Item Spawn Price", "CityRP", "$CityRP::prices::addItemSpawn", "int 0 10000", "CityRP", $CityRP::prices::addItemSpawn, false, true);
  120. RTB_registerPref("Jailing Bonus Price", "CityRP", "$CityRP::prices::jailingBonus", "int 0 10000", "CityRP", $CityRP::prices::jailingBonus, false, true);
  121. RTB_registerPref("Reset Price", "CityRP", "$CityRP::prices::reset", "int 0 10000", "CityRP", $CityRP::prices::reset, false, true);
  122. RTB_registerPref("Maximum Loan", "CityRP", "$CityRP::prices::maxLoan", "int 0 10000", "CityRP", $CityRP::prices::maxLoan, false, true);
  123. RTB_registerPref("Loan Pay", "CityRP", "$CityRP::prices::loanPay", "int 0 10000", "CityRP", $CityRP::prices::loanPay, false, true);
  124.  
  125. RTB_registerPref("Tick Speed", "CityRP", "$CityRP::other::tickSpeed", "int 1 10", "CityRP", $CityRP::other::tickSpeed, false, true);
  126. RTB_registerPref("Interest", "CityRP", "$CityRP::other::interest", "int 0 5", "CityRP", $CityRP::other::interest, false, true);
  127. RTB_registerPref("Interest Stop", "CityRP", "$CityRP::other::maxInterest", "int 0 100000", "CityRP", $CityRP::other::maxInterest, false, true);
  128. RTB_registerPref("Interest Tick", "CityRP", "$CityRP::other::interestTick", "int 0 100", "CityRP", $CityRP::other::interestTick, false, true);
  129.  
  130. activatePackage(RTB_Goodies);
  131.  
  132. $CityRP_temp::loadedRTBPrefs = true;
  133. }
  134.  
  135. if(!CityRPData.loadedSaveFile)
  136. {
  137. CityRPData.addValue("money", 100);
  138. CityRPData.addValue("jobID", 1);
  139. CityRPData.addValue("demerits", 0);
  140.  
  141. CityRPData.addValue("bankData", "0 0 0");
  142. CityRPData.addValue("jailData", "0 0");
  143. CityRPData.addValue("lotData", "0");
  144.  
  145. CityRPData.saveData();
  146. }
  147. else
  148. {
  149. for(%a = 1; %a <= CityRPData.dataCount; %a++)
  150. {
  151. if(CityRPData.data[%a].valueJobID > $CityRP::jobs || CityRPData.data[%a].valueJobID < 0)
  152. {
  153. CityRPData.data[%a].valueJobID = 1;
  154. }
  155. }
  156. }
  157.  
  158. registerInputEvent("fxDTSBrick", "onEnterLot", "Self fxDTSBrick\tPlayer player\tClient gameConnection\tMiniGame miniGame");
  159. registerInputEvent("fxDTSBrick", "onLeaveLot", "Self fxDTSBrick\tPlayer player\tClient gameConnection\tMiniGame miniGame");
  160.  
  161. CityRPData.tickCount = 0;
  162.  
  163. CityRPData.scheduleTick = schedule($CityRP::other::tickSpeed * 60000, false, "CityRP", 2);
  164. }
  165. else
  166. {
  167. for(%a = 1; %a <= CityRPData.dataCount; %a++)
  168. {
  169. if(CityRPData.data[%a].valueJobID > $CityRP::jobs || CityRPData.data[%a].valueJobID < 0)
  170. {
  171. CityRPData.data[%a].valueJobID = 0;
  172. }
  173. }
  174. }
  175.  
  176. if(!isObject(CityRPHelp))
  177. {
  178. new scriptObject(CityRPHelp)
  179. {
  180. class = Hellen;
  181. };
  182. }
  183.  
  184. if(!isObject(CityRPMini))
  185. {
  186. new scriptObject(CityRPMini)
  187. {
  188. class = miniGameSO;
  189.  
  190. brickDamage = true;
  191. brickRespawnTime = 10000;
  192. colorIdx = -1;
  193.  
  194. enableBuilding = true;
  195. enablePainting = true;
  196. enableWand = true;
  197. fallingDamage = true;
  198. inviteOnly = true;
  199.  
  200. points_plantBrick = 0;
  201. points_breakBrick = 0;
  202. points_die = -1;
  203. points_killPlayer = 1;
  204. points_killSelf = -1;
  205.  
  206. playerDatablock = playerNoJet;
  207. respawnTime = 5000;
  208. selfDamage = true;
  209.  
  210. playersUseOwnBricks = false;
  211. useAllPlayersBricks = true;
  212. useSpawnBricks = false;
  213. VehicleDamage = true;
  214. vehicleRespawnTime = 5000;
  215. weaponDamage = true;
  216.  
  217. numMembers = 0;
  218. };
  219. }
  220.  
  221. for(%a = 1; %a <= $CityRP::jobs; %a++)
  222. {
  223. if(isObject("CityRPJob" @ %a @ "SpawnBrickData"))
  224. {
  225. continue;
  226. }
  227.  
  228. datablock fxDtsBrickData(CityRPSpawnBrickData : brickSpawnPointData)
  229. {
  230. category = "PeopleMods";
  231. subCategory = "CityRP Admin";
  232.  
  233. uiName = $CityRP::jobs::name[%a] SPC "Spawn";
  234.  
  235. specialBrickType = "";
  236.  
  237. CityRPBrickType = 3;
  238. CityRPBrickAdmin = true;
  239.  
  240. spawnData = "jobSpawn" SPC %a;
  241. };
  242.  
  243. CityRPSpawnBrickData.setName("CityRPJob" @ %a @ "SpawnBrickData");
  244. }
  245. }
  246.  
  247. if(%mode == 2)
  248. {
  249. if(CityRPData.scheduleTick)
  250. {
  251. cancel(CityRPData.scheduleTick);
  252. }
  253.  
  254. CityRPData.tickCount++;
  255.  
  256. for(%a = 0; %a <= CityRPData.dataCount; %a++)
  257. {
  258. if(CityRPData.tickCount % $CityRP::other::interestTick == 0 && getWord(CityRPData.data[%a].valueBankData, 0) < $CityRP::other::maxInterest)
  259. {
  260. CityRPData.data[%a].valueBankData = mFloor(getWord(CityRPData.data[%a].valueBankData, 0) * $CityRP::other::interest) SPC getWords(CityRPData.data[%a].valueBankData, 1, 2);
  261. }
  262.  
  263. if(!isObject(findClientByBL_ID(CityRPData.data[%a].ID)))
  264. {
  265. continue;
  266. }
  267.  
  268. %client = findClientByBL_ID(CityRPData.data[%a].ID);
  269.  
  270. if(getWord(CityRPData.getData(%client.bl_id).valueJailData, 1) > 0)
  271. {
  272. CityRPData.getData(%client.bl_id).valueJailData = 1 SPC getWord(CityRPData.getData(%client.bl_id).valueJailData, 1) - 1;
  273.  
  274. if(getWord(CityRPData.getData(%client.bl_id).valueJailData, 1) < 1)
  275. {
  276. messageClient(%client, '', "\c6You're free.");
  277.  
  278. if(isObject(%client.player))
  279. {
  280. %client.player.delete();
  281. %client.spawnPlayer();
  282. }
  283.  
  284. continue;
  285. }
  286.  
  287. messageClient(%client, '', "\c6You now have \c3" @ getWord(CityRPData.getData(%client.bl_id).valueJailData, 1) SPC "\c6tick" @ ((getWord(CityRPData.getData(%client.bl_id).valueJailData, 1) == 1) ? "" : "s") SPC "until you get out of jail.");
  288.  
  289. %client.CityRP(1);
  290.  
  291. continue;
  292. }
  293.  
  294. if($CityRP::jobs::pay[CityRPData.getData(%client.bl_id).valueJobID] > 0)
  295. {
  296. CityRPData.getData(%client.bl_id).valueMoney += $CityRP::jobs::pay[CityRPData.getData(%client.bl_id).valueJobID];
  297.  
  298. messageClient(%client, '', "\c6You have been paid \c3$" @ $CityRP::jobs::pay[CityRPData.getData(%client.bl_id).valueJobID] @ "\c6.");
  299. }
  300.  
  301. if(%client.brickGroup.taxes > 0)
  302. {
  303. CityRPData.getData(%client.bl_id).valueMoney -= %client.brickGroup.taxes;
  304.  
  305. if(CityRPData.getData(%client.bl_id).valueMoney < 0)
  306. {
  307. CityRPData.getData(%client.bl_id).valueMoney = 0;
  308. }
  309.  
  310. messageClient(%client, '', "\c6You have paid \c3$" @ %client.brickGroup.taxes SPC "\c6in taxes.");
  311. }
  312.  
  313. if(getWord(CityRPData.getData(%client.bl_id).valueBankData, 2) > 0 && CityRPData.getData(%client.bl_id).valueMoney > 0)
  314. {
  315. %paid = $CityRP::prices::loanPay;
  316.  
  317. if(getWord(CityRPData.getData(%client.bl_id).valueBankData, 1) < $CityRP::prices::loanPay)
  318. {
  319. %paid = getWord(CityRPData.getData(%client.bl_id).valueBankData, 1);
  320. }
  321.  
  322. if(CityRPData.getData(%client.bl_id).valueMoney < %paid)
  323. {
  324. %paid = CityRPData.getData(%client.bl_id).valueMoney;
  325. }
  326.  
  327. messageClient(%client, '', "\c6You have paid \c3$" @ %paid SPC "\c6towards your loan.");
  328.  
  329. CityRPData.getData(%client.bl_id).valueMoney -= %paid;
  330.  
  331. if(getWord(CityRPData.getData(%client.bl_id).valueBankData, 1) - %paid < 1)
  332. {
  333. CityRPData.getData(%client.bl_id).valueBankData = getWord(CityRPData.getData(%client.bl_id).valueBankData, 0) SPC 0 SPC 0;
  334. }
  335. else
  336. {
  337. CityRPData.getData(%client.bl_id).valueBankData = getWord(CityRPData.getData(%client.bl_id).valueBankData, 0) SPC getWord(CityRPData.getData(%client.bl_id).valueBankData, 1) - %paid SPC getWord(CityRPData.getData(%client.bl_id).valueBankData, 2);
  338. }
  339. }
  340.  
  341. %client.CityRP(1);
  342. }
  343.  
  344. CityRPData.saveData();
  345.  
  346. CityRPData.scheduleTick = schedule($CityRP::other::tickSpeed * 60000, false, "CityRP", 2);
  347. }
  348.  
  349. if(%mode == 3)
  350. {
  351. %letter = strLwr(getSubStr(%data, 0, 1));
  352.  
  353. if(%letter $= "a" || %letter $= "e" || %letter $= "i" || %letter $= "o" || %letter $= "u")
  354. {
  355. return "an";
  356. }
  357.  
  358. return "a";
  359. }
  360.  
  361. if(%mode == 4)
  362. {
  363. for(%a = 0; %a < getWordCount($CityRP_temp::spawnPoints); %a++)
  364. {
  365. %brick = getWord($CityRP_temp::spawnPoints, %a);
  366.  
  367. if(strLwr(%brick.getDatablock().spawnData) !$= strLwr(%data) && getWord(strLwr(%data), 0) !$= strLwr("personalSpawn"))
  368. {
  369. continue;
  370. }
  371.  
  372. if(getWord(strLwr(%data), 0) $= strLwr("personalSpawn") && (strLwr(%brick.getDatablock().spawnData) !$= strLwr("personalSpawn") || getBrickGroupFromObject(%brick).bl_id != getWord(strLwr(%data), 1)))
  373. {
  374. continue;
  375. }
  376.  
  377. %possibleSpawns = (%possibleSpawns $= "") ? %brick : %possibleSpawns SPC %brick;
  378. }
  379.  
  380. if(%possibleSpawns !$= "")
  381. {
  382. %spawnBrick = getWord(%possibleSpawns, getRandom(0, getWordCount(%possibleSpawns) - 1));
  383.  
  384. return vectorSub(%spawnBrick.getWorldBoxCenter(), "0 0" SPC (%spawnBrick.getDatablock().brickSizeZ - 3) * 0.1) SPC getWords(%spawnBrick.getTransform(), 3, 6);
  385. }
  386.  
  387. return false;
  388. }
  389. }
  390.  
  391. function fxDtsBrick::CityRP(%brick, %mode, %data)
  392. {
  393. if(%mode == 1 && !isObject(%brick.trigger))
  394. {
  395. %datablock = %brick.getDatablock();
  396.  
  397. %scale = getWord(%datablock.triggerSize, 0) / 2 SPC getWord(%datablock.triggerSize, 1) / 2 SPC getWord(%datablock.triggerSize, 2) / 2;
  398.  
  399. if(mFloor(getWord(%brick.rotation, 3)) == 90)
  400. {
  401. %scale = getWord(%datablock.triggerSize, 1) / 2 SPC getWord(%datablock.triggerSize, 0) / 2 SPC getWord(%datablock.triggerSize, 2) / 2;
  402. }
  403.  
  404. %brick.trigger = new trigger()
  405. {
  406. datablock = %datablock.triggerDatablock;
  407.  
  408. position = getWords(%brick.getWorldBoxCenter(), 0, 1) SPC getWord(%brick.getWorldBoxCenter(), 2) + ((getWord(%datablock.triggerSize, 2) / 4) + (%datablock.brickSizeZ * 0.1));
  409. rotation = "1 0 0 0";
  410. scale = %scale;
  411.  
  412. polyhedron = "-0.5000000 -0.5000000 -0.5000000 1.0000000 0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 1.0000000";
  413.  
  414. parent = %brick;
  415. };
  416.  
  417. if(%brick.getDatablock().CityRPBrickType == 1)
  418. {
  419. %boxSize = getWord(%scale, 0) / 2.5 SPC getWord(%scale, 1) / 2.5 SPC getWord(%scale, 2) / 2.5;
  420.  
  421. initContainerBoxSearch(%brick.trigger.getWorldBoxCenter(), %boxSize, $typeMasks::playerObjectType);
  422.  
  423. while(isObject(%player = containerSearchNext()))
  424. {
  425. %brick.trigger.getDatablock().onEnterTrigger(%brick.trigger, %player);
  426. }
  427.  
  428. getBrickGroupFromObject(%brick).taxes += %brick.getDatablock().taxAmount;
  429.  
  430. if(isObject(getBrickGroupFromObject(%brick).client))
  431. {
  432. getBrickGroupFromObject(%brick).client.CityRP(1);
  433. }
  434. }
  435. }
  436.  
  437. if(%mode == 2 && isObject(%brick.trigger))
  438. {
  439. for(%a = 0; %a < clientGroup.getCount(); %a++)
  440. {
  441. if(isObject(clientGroup.getObject(%a).player) && clientGroup.getObject(%a).CityRPTrigger == %brick.trigger)
  442. {
  443. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, clientGroup.getObject(%a).player, true);
  444. }
  445. }
  446.  
  447. %boxSize = getWord(%brick.trigger.scale, 0) / 2.5 SPC getWord(%brick.trigger.scale, 1) / 2.5 SPC getWord(%brick.trigger.scale, 2) / 2.5;
  448.  
  449. initContainerBoxSearch(%brick.trigger.getWorldBoxCenter(), %boxSize, $typeMasks::playerObjectType);
  450.  
  451. while(isObject(%player = containerSearchNext()))
  452. {
  453. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, %player);
  454. }
  455.  
  456. %brick.trigger.delete();
  457.  
  458. if(%brick.getDatablock().CityRPBrickType == 1)
  459. {
  460. getBrickGroupFromObject(%brick).taxes -= %brick.getDatablock().taxAmount;
  461.  
  462. if(isObject(getBrickGroupFromObject(%brick).client))
  463. {
  464. getBrickGroupFromObject(%brick).client.CityRP(1);
  465. }
  466.  
  467. if(%brick.getName() !$= "")
  468. {
  469. %data = CityRPData.getData(getBrickGroupFromObject(%brick).bl_id).valueLotData;
  470.  
  471. %newData = getWord(%data, 0) - 1;
  472.  
  473. for(%a = 1; %a < getWordCount(%data); %a++)
  474. {
  475. if(%cancelNext)
  476. {
  477. %cancelNext = false;
  478.  
  479. continue;
  480. }
  481.  
  482. %newData = %newData SPC getWord(%data, %a);
  483.  
  484. if(%a % 2 == 0)
  485. {
  486. continue;
  487. }
  488.  
  489. %newBrick = "_" @ getWord(%data, %a);
  490.  
  491. if(isObject(%newBrick) && %newBrick $= %brick.getName())
  492. {
  493. %found = true;
  494.  
  495. %newData = getWords(%newData, 0, getWordCount(%newData) - 2);
  496.  
  497. %cancelNext = true;
  498. }
  499. }
  500.  
  501. if(%found)
  502. {
  503. CityRPData.getData(getBrickGroupFromObject(%brick).bl_id).valueLotData = %newData;
  504. }
  505. }
  506. }
  507. }
  508.  
  509. if(%mode == 3)
  510. {
  511. if(isObject(%data) && getWord(%data, 1))
  512. {
  513. if(strReplace(%data.brickList, %brick, "") !$= %data.brickList)
  514. {
  515. return;
  516. }
  517.  
  518. %data.brickCount++;
  519. %data.brickList = %data.brickList SPC %brick;
  520.  
  521. for(%a = 0; %a < %brick.getNumUpBricks(); %a++)
  522. {
  523. %brick.getUpBrick(%a).CityRP(3, %data SPC 1);
  524. }
  525.  
  526. for(%b = 0; %b < %brick.getNumDownBricks(); %b++)
  527. {
  528. %brick.getDownBrick(%b).CityRP(3, %data SPC 1);
  529. }
  530.  
  531. return;
  532. }
  533.  
  534. getBrickGroupFromObject(%brick).taxes -= %brick.getDatablock().taxAmount;
  535.  
  536. %data.taxes += %brick.getDatablock().taxAmount;
  537.  
  538. if(isObject(getBrickGroupFromObject(%brick).client))
  539. {
  540. getBrickGroupFromObject(%brick).client.CityRP(1);
  541. }
  542.  
  543. if(isObject(%data.client))
  544. {
  545. %data.client.CityRP(1);
  546. }
  547.  
  548. %dataStore = new scriptObject()
  549. {
  550. brickCount = 1;
  551.  
  552. brickList = %brick;
  553. };
  554.  
  555. for(%a = 0; %a < %brick.getNumUpBricks(); %a++)
  556. {
  557. %brick.getUpBrick(%a).CityRP(3, %dataStore SPC 1);
  558. }
  559.  
  560. for(%b = 0; %b < %dataStore.brickCount; %b++)
  561. {
  562. %brick = getWord(%dataStore.brickList, %b);
  563. %oldGroup = getBrickGroupFromObject(%brick);
  564.  
  565. %oldGroup.remove(%brick);
  566. %data.add(%brick);
  567.  
  568. if(%brick.getName() !$= "")
  569. {
  570. %name = %brick.getName();
  571.  
  572. %oldGroup.removeNTName(%name);
  573. %data.addNTName(%name);
  574. }
  575. }
  576.  
  577. %dataStore.delete();
  578.  
  579. %boxSize = getWord(%brick.trigger.scale, 0) / 2.5 SPC getWord(%brick.trigger.scale, 1) / 2.5 SPC getWord(%brick.trigger.scale, 2) / 2.5;
  580.  
  581. initContainerBoxSearch(%brick.trigger.getWorldBoxCenter(), %boxSize, $typeMasks::playerObjectType);
  582.  
  583. while(isObject(%player = containerSearchNext()))
  584. {
  585. if(isObject(%player.client))
  586. {
  587. %player.client.CityRP(1);
  588. }
  589. }
  590. }
  591. }
  592.  
  593. function gameConnection::CityRP(%this, %mode, %data)
  594. {
  595. if(%mode == 1)
  596. {
  597. if(isObject(%this.player))
  598. {
  599. %tag = $CityRP::jobs::name[CityRPData.getData(%this.bl_id).valueJobID];
  600.  
  601. if(getWord(CityRPData.getData(%this.bl_id).valueJailData, 1) > 0)
  602. {
  603. %tag = getWord(CityRPData.getData(%this.bl_id).valueJailData, 1) SPC "\c6Tick" @ ((getWord(CityRPData.getData(%this.bl_id).valueJailData, 1) == 1) ? "" : "s");
  604. }
  605.  
  606. %this.player.setShapeName("[" @ %tag @ "]" SPC %this.name);
  607. }
  608.  
  609. %this.CityRPPrint = "\c6Money: \c3$" @ CityRPData.getData(%this.bl_id).valueMoney SPC "\c6Job: \c3" @ $CityRP::jobs::name[CityRPData.getData(%this.bl_id).valueJobID] SPC "\c6Income: \c3$" @ $CityRP::jobs::pay[CityRPData.getData(%this.bl_id).valueJobID] SPC "\c6Taxes: \c3$" @ ((%this.brickGroup.taxes > 0) ? %this.brickGroup.taxes : "0") @ (isObject(%this.CityRPLotTrigger) ? "<just:right>\c6Owner: \c3" @ getBrickGroupFromObject(%this.CityRPLotTrigger.parent).name : "");
  610.  
  611. commandToClient(%this, 'bottomPrint', %this.cityRPPrint);
  612. }
  613.  
  614. if(%mode == 2)
  615. {
  616. if(getWord(CityRPData.getData(%this.bl_id).valueJailData, 1) > 0)
  617. {
  618. return;
  619. }
  620.  
  621. %demerits = mFloor(%data);
  622. %currentDemerits = CityRPData.getData(%this.bl_id).valueDemerits;
  623.  
  624. CityRPData.getData(%this.bl_id).valueDemerits += %demerits;
  625.  
  626. if(CityRPData.getData(%this.bl_id).valueDemerits >= $CityRP::demerits::demoteLevel)
  627. {
  628. CityRPData.getData(%this.bl_id).valueJailData = 1 SPC 0;
  629.  
  630. if(!$CityRP::jobs::law[CityRPData.getData(%this.bl_id).valueJobID])
  631. {
  632. return;
  633. }
  634.  
  635. messageClient(%this, '', "\c6You have been demoted to" SPC CityRP(3, $CityRP::jobs::name[1]) SPC "\c3" @ $CityRP::jobs::name[1] @ "\c6.");
  636.  
  637. CityRPData.getData(%this.bl_id).valueJobID = 1;
  638.  
  639. %this.CityRP(1);
  640.  
  641. if(isObject(%this.player))
  642. {
  643. serverCmdunUseTool(%this);
  644.  
  645. %this.player.giveDefaultEquipment();
  646. }
  647. }
  648. }
  649.  
  650. if(%mode == 3)
  651. {
  652. %rawTicks = (mFloor(CityRPData.getData(%this.bl_id).valueDemerits / ($CityRP::other::tickSpeed * 50)) > 0) ? mFloor(CityRPData.getData(%this.bl_id).valueDemerits / ($CityRP::other::tickSpeed * 50)) : 1;
  653.  
  654. %ticks = %rawTicks;
  655.  
  656. if(%ticks > 6)
  657. {
  658. %ticks = 6;
  659. }
  660.  
  661. messageAll('', "\c3" @ %data.name SPC "\c6has jailed \c3" @ %this.name SPC "\c6for \c3" @ %ticks SPC"\c6tick" @ ((%ticks == 1) ? "" : "s") @ ".", 5);
  662. commandToClient(%this, 'centerPrint', "\c3" @ %data.name SPC "\c6has jailed you for \c3" @ %ticks SPC"\c6tick" @ ((%ticks == 1) ? "" : "s") @ ".", 5);
  663. commandToClient(%data, 'centerPrint', "\c6You have jailed \c3" @ %this.name SPC "\c6for \c3" @ %ticks SPC"\c6tick" @ ((%ticks == 1) ? "" : "s") @ ". You now have \c3$" @ CityRPData.getData(%data.bl_id).valueMoney + ($CityRP::prices::jailingBonus * %ticks) @ "\c6.", 5);
  664.  
  665. CityRPData.getData(%this.bl_id).valueJailData = 1 SPC %ticks;
  666. CityRPData.getData(%this.bl_id).valueDemerits = 0;
  667.  
  668. CityRPData.getData(%data.bl_id).valueMoney += $CityRP::prices::jailingBonus * %ticks;
  669.  
  670. %data.CityRP(1);
  671.  
  672. if($CityRP::jobs::law[CityRPData.getData(%this.bl_id).valueJobID])
  673. {
  674. messageClient(%this, '', "\c6You have been demoted to" SPC CityRP(3, $CityRP::jobs::name[1]) SPC "\c3" @ $CityRP::jobs::name[1] SPC "\c6since you were jailed.");
  675.  
  676. CityRPData.getData(%this.bl_id).valueJobID = 1;
  677. }
  678.  
  679. if(isObject(%this.player.tempBrick))
  680. {
  681. %this.player.tempBrick.delete();
  682. }
  683.  
  684. %this.player.delete();
  685. %this.spawnPlayer();
  686. }
  687. }
  688.  
  689. function gameConnection::onClientEnterGame(%this)
  690. {
  691. parent::onClientEnterGame(%this);
  692.  
  693. if(!isObject(CityRPData.getData(%this.bl_id)))
  694. {
  695. CityRPData.addData(%this.bl_id);
  696. }
  697.  
  698. %this.CityRP(1);
  699. }
  700.  
  701. function gameConnection::spawnPlayer(%this)
  702. {
  703. parent::spawnPlayer(%this);
  704.  
  705. if(CityRP(4, "jobSpawn 1"))
  706. {
  707. %spawn = CityRP(4, "jobSpawn 1");
  708. }
  709.  
  710. if(CityRP(4, "jobSpawn" SPC CityRPData.getData(%this.bl_id).valueJobID))
  711. {
  712. %spawn = CityRP(4, "jobSpawn" SPC CityRPData.getData(%this.bl_id).valueJobID);
  713. }
  714.  
  715. if(CityRP(4, "personalSpawn" SPC %this.bl_id))
  716. {
  717. %spawn = CityRP(4, "personalSpawn" SPC %this.bl_id);
  718. }
  719.  
  720. if(getWord(CityRPData.getData(%this.bl_id).valueJailData, 1) > 0 && CityRP(4, "jailSpawn"))
  721. {
  722. %spawn = CityRP(4, "jailSpawn");
  723. }
  724.  
  725. if(%spawn !$= "")
  726. {
  727. %this.player.setTransform(%spawn);
  728. }
  729.  
  730. %this.player.giveDefaultEquipment();
  731.  
  732. if(!isObject(CityRPMini))
  733. {
  734. CityRP(1);
  735. }
  736.  
  737. CityRPMini.addMember(%this);
  738. }
  739.  
  740. function gameConnection::onDeath(%this, %killerPlayer, %killer, %damageType, %damageLoc)
  741. {
  742. if(isObject(%this.CityRPTrigger))
  743. {
  744. %this.CityRPTrigger.getDatablock().onLeaveTrigger(%this.CityRPTrigger, %this.player);
  745. }
  746.  
  747. if(isObject(%this.CityRPLotTrigger))
  748. {
  749. %this.CityRPLotTrigger.getDatablock().onLeaveTrigger(%this.CityRPLotTrigger, %this.player);
  750. }
  751.  
  752. %this.CityRP(1);
  753.  
  754. if(getWord(CityRPData.getData(%this.bl_id).valueJailData, 1) < 1)
  755. {
  756. if(%this.player.currTool)
  757. {
  758. serverCmddropTool(%this, %this.player.currTool);
  759. }
  760.  
  761. if(isObject(%killer) && %killer != %this)
  762. {
  763. commandToClient(%killer, 'centerPrint', "\c6You have commited a crime. [\c3Murder\c6]", 1);
  764.  
  765. %killer.CityRP(2, $CityRP::demerits::murder);
  766. }
  767. }
  768.  
  769. parent::onDeath(%this, %this, %killer, %damageType, %unknownA);
  770. }
  771.  
  772. function serverCmdmessageSent(%client, %text)
  773. {
  774. if(getSubStr(%text, 0, 1) $= $CityRP::other::commandSymbol)
  775. {
  776. if(%client.lastCityRPCommand + 0.01 > $sim::time)
  777. {
  778. return;
  779. }
  780.  
  781. %command = getWord(getSubStr(%text, 1, strLen(%text) - 1), 0);
  782. %args = getSubStr(%text, strLen(%command) + 2, strLen(%text) - 1);
  783.  
  784. %lastCommand = %client.lastCityRPCommand;
  785. %client.lastCityRPCommand = $sim::time;
  786.  
  787. if(%command $= "giveMoney")
  788. {
  789. %money = mFloor(getWord(%args, 0));
  790.  
  791. if(%money < 1)
  792. {
  793. messageClient(%client, '', "\c6You must enter a valid amount of money to give.");
  794.  
  795. return;
  796. }
  797.  
  798. if(CityRPData.getData(%client.bl_id).valueMoney - %money < 0)
  799. {
  800. messageClient(%client, '', "\c6You don't have that much money to give.");
  801.  
  802. return;
  803. }
  804.  
  805. if(!isObject(%client.player))
  806. {
  807. messageClient(%client, '', "\c6Spawn first before you use this command.");
  808.  
  809. return;
  810. }
  811.  
  812. %target = containerRayCast(%client.player.getEyePoint(), vectorAdd(vectorScale(vectorNormalize(%client.player.getEyeVector()), 8), %client.player.getEyePoint()), $typeMasks::playerObjectType).client;
  813.  
  814. if(!isObject(%target))
  815. {
  816. messageClient(%client, '', "\c6You must be looking at and be in a reasonable distance of the player in order to give them money.");
  817.  
  818. return;
  819. }
  820.  
  821. messageClient(%client, '', "\c6You give \c3$" @ %money SPC "\c6to \c3" @ %target.name @ "\c6.");
  822. messageClient(%target, '', "\c3" @ %client.name SPC "\c6has given you \c3$" @ %money @ "\c6.");
  823.  
  824. CityRPData.getData(%client.bl_id).valueMoney -= %money;
  825. CityRPData.getData(%target.bl_id).valueMoney += %money;
  826.  
  827. %client.CityRP(1);
  828. %target.CityRP(1);
  829.  
  830. return;
  831. }
  832.  
  833. if(%command $= "grantMoney")
  834. {
  835. if(!%client.isAdmin)
  836. {
  837. messageClient(%client, '', "\c6You must be admin to use the this command.");
  838.  
  839. return;
  840. }
  841.  
  842. %money = mFloor(getWord(%args, 0));
  843.  
  844. if(%money < 1)
  845. {
  846. messageClient(%client, '', "\c6You must enter a valid amount of money to grant.");
  847.  
  848. return;
  849. }
  850.  
  851. if(!isObject(%client.player) && !isObject(findClientByName(getWords(%args, 1, getWordCount(%args) - 1))))
  852. {
  853. messageClient(%client, '', "\c6Spawn first before you use this command or enter a valid player's name.");
  854.  
  855. return;
  856. }
  857.  
  858. if(getWords(%args, 1, getWordCount(%args) - 1) !$= "")
  859. {
  860. %target = findClientByName(getWords(%args, 1, getWordCount(%args) - 1));
  861. }
  862.  
  863. if(!isObject(%target) && isObject(%client.player))
  864. {
  865. %target = containerRayCast(%client.player.getEyePoint(), vectorAdd(vectorScale(vectorNormalize(%client.player.getEyeVector()), 8), %client.player.getEyePoint()), $typeMasks::playerObjectType).client;
  866. }
  867.  
  868. if(!isObject(%target))
  869. {
  870. messageClient(%client, '', "\c6You must be looking at or enter the name of the player in order to grant to them.");
  871.  
  872. return;
  873. }
  874.  
  875. messageClient(%client, '', "\c6You grant \c3$" @ %money SPC "\c6to \c3" @ %target.name @ "\c6.");
  876. messageClient(%target, '', "\c3" @ %client.name @ "\c6 has granted you \c3$" @ %money @ "\c6.");
  877.  
  878. CityRPData.getData(%target.bl_id).valueMoney += %money;
  879.  
  880. %target.CityRP(1);
  881.  
  882. return;
  883. }
  884.  
  885. if(%command $= "deductMoney")
  886. {
  887. if(!%client.isAdmin)
  888. {
  889. messageClient(%client, '', "\c6You must be admin to use the this command.");
  890.  
  891. return;
  892. }
  893.  
  894. %money = mFloor(getWord(%args, 0));
  895.  
  896. if(%money < 1)
  897. {
  898. messageClient(%client, '', "\c6You must enter a valid amount of money to deduct.");
  899.  
  900. return;
  901. }
  902.  
  903. if(!isObject(%client.player) && !isObject(findClientByName(getWords(%args, 1, getWordCount(%args) - 1))))
  904. {
  905. messageClient(%client, '', "\c6Spawn first before you use this command or enter a valid player's name.");
  906.  
  907. return;
  908. }
  909.  
  910. if(getWords(%args, 1, getWordCount(%args) - 1) !$= "")
  911. {
  912. %target = findClientByName(getWords(%args, 1, getWordCount(%args) - 1));
  913. }
  914.  
  915. if(!isObject(%target) && isObject(%client.player))
  916. {
  917. %target = containerRayCast(%client.player.getEyePoint(), vectorAdd(vectorScale(vectorNormalize(%client.player.getEyeVector()), 8), %client.player.getEyePoint()), $typeMasks::playerObjectType).client;
  918. }
  919.  
  920. if(!isObject(%target))
  921. {
  922. messageClient(%client, '', "\c6You must be looking at or enter the name of the player in order to deduct money from them.");
  923.  
  924. return;
  925. }
  926.  
  927. if(CityRPData.getData(%target.bl_id).valueMoney - %money < 0)
  928. {
  929. %money = CityRPData.getData(%target.bl_id).valueMoney;
  930. }
  931.  
  932. messageClient(%client, '', "\c6You deduct \c3$" @ %money SPC "\c6from \c3" @ %target.name @ "\c6.");
  933. messageClient(%target, '', "\c3" @ %client.name @ "\c6 has deducted \c3$" @ %money @ "\c6 from you.");
  934.  
  935. CityRPData.getData(%target.bl_id).valueMoney -= %money;
  936.  
  937. %target.CityRP(1);
  938.  
  939. return;
  940. }
  941.  
  942. if(%command $= "stats")
  943. {
  944. messageClient(%client, '', "\c3" @ %client.name SPC "\c6- Money: \c3$" @ CityRPData.getData(%client.bl_id).valueMoney SPC "\c6Bank: \c3$" @ getWord(CityRPData.getData(%client.bl_id).valueBankData, 0) SPC "\c6Job: \c3" @ $CityRP::jobs::name[CityRPData.getData(%client.bl_id).valueJobID] SPC "\c6Income: \c3" @ $CityRP::jobs::pay[CityRPData.getData(%client.bl_id).valueJobID] SPC "\c6Tax: \c3" @ ((%client.brickGroup.taxes > 0) ? %client.brickGroup.taxes : "0"));
  945. messageClient(%client, '', "\c6- Clean Record: \c3" @ ((getWord(CityRPData.getData(%client.bl_id).valueJailData, 0)) ? "No" : "Yes") SPC "\c6Demerits: \c3" @ CityRPData.getData(%client.bl_id).valueDemerits SPC "\c6Jail Time: \c3" @ getWord(CityRPData.getData(%client.bl_id).valueJailData, 1) SPC "\c6Tick" @ ((getWord(CityRPData.getData(%client.bl_id).valueJailData, 1) == 1) ? "" : "s"));
  946.  
  947. return;
  948. }
  949.  
  950. if(%command $= "checkAccount")
  951. {
  952. if(!%client.isAdmin)
  953. {
  954. messageClient(%client, '', "\c6You must be admin to use the \c3" @ %command SPC "\c6command.");
  955.  
  956. return;
  957. }
  958.  
  959. if(!isObject(%client.player) && !isObject(findClientByName(getWords(%args, 1, getWordCount(%args) - 1))))
  960. {
  961. messageClient(%client, '', "\c6Spawn first before you use this command.");
  962.  
  963. return;
  964. }
  965.  
  966. if(getWords(%args, 0, getWordCount(%args) - 1) !$= "")
  967. {
  968. %target = findClientByName(getWords(%args, 0, getWordCount(%args) - 1));
  969. }
  970.  
  971. if(!isObject(%target) && isObject(%client.player))
  972. {
  973. %target = containerRayCast(%client.player.getEyePoint(), vectorAdd(vectorScale(vectorNormalize(%client.player.getEyeVector()), 8), %client.player.getEyePoint()), $typeMasks::playerObjectType).client;
  974. }
  975.  
  976. if(!isObject(%target))
  977. {
  978. for(%a = 0; %a < clientGroup.getCount(); %a++)
  979. {
  980. %target = clientGroup.getObject(%a);
  981.  
  982. if(!isObject(CityRPData.getData(%target.bl_id)))
  983. {
  984. continue;
  985. }
  986.  
  987. messageClient(%client, '', "\c3" @ %target.name SPC "\c6- Money: \c3$" @ CityRPData.getData(%target.bl_id).valueMoney SPC "\c6Bank: \c3$" @ getWord(CityRPData.getData(%target.bl_id).valueBankData, 0) SPC "\c6Job: \c3" @ $CityRP::jobs::name[CityRPData.getData(%target.bl_id).valueJobID] SPC "\c6Income: \c3" @ $CityRP::jobs::pay[CityRPData.getData(%target.bl_id).valueJobID] SPC "\c6Tax: \c3" @ ((%target.brickGroup.taxes > 0) ? %target.brickGroup.taxes : "0"));
  988. messageClient(%client, '', "\c6- Clean Record: \c3" @ ((getWord(CityRPData.getData(%target.bl_id).valueJailData, 0)) ? "No" : "Yes") SPC "\c6Demerits: \c3" @ CityRPData.getData(%target.bl_id).valueDemerits SPC "\c6Jail Time: \c3" @ getWord(CityRPData.getData(%target.bl_id).valueJailData, 1) SPC "\c6Tick" @ ((getWord(CityRPData.getData(%target.bl_id).valueJailData, 1) == 1) ? "" : "s"));
  989. }
  990.  
  991. return;
  992. }
  993.  
  994. messageClient(%client, '', "\c3" @ %target.name SPC "\c6- Money: \c3$" @ CityRPData.getData(%target.bl_id).valueMoney SPC "\c6Bank: \c3$" @ getWord(CityRPData.getData(%target.bl_id).valueBankData, 0) SPC "\c6Job: \c3" @ $CityRP::jobs::name[CityRPData.getData(%target.bl_id).valueJobID] SPC "\c6Income: \c3" @ $CityRP::jobs::pay[CityRPData.getData(%target.bl_id).valueJobID] SPC "\c6Tax: \c3" @ ((%target.brickGroup.taxes > 0) ? %target.brickGroup.taxes : "0"));
  995. messageClient(%client, '', "\c6- Clean Record: \c3" @ ((getWord(CityRPData.getData(%target.bl_id).valueJailData, 0)) ? "No" : "Yes") SPC "\c6Demerits: \c3" @ CityRPData.getData(%target.bl_id).valueDemerits SPC "\c6Jail Time: \c3" @ getWord(CityRPData.getData(%target.bl_id).valueJailData, 1) SPC "\c6Tick" @ ((getWord(CityRPData.getData(%target.bl_id).valueJailData, 1) == 1) ? "" : "s"));
  996.  
  997. return;
  998. }
  999.  
  1000. if(%command $= "job")
  1001. {
  1002. if(strLwr(getWords(%args, 0, getWordCount(%args) - 1)) $= "")
  1003. {
  1004. messageClient(%client, '', "\c6Type \c3^help jobs\c6 to see a list of jobs.");
  1005.  
  1006. return;
  1007. }
  1008.  
  1009. if(strLwr(getWords(%args, 0, getWordCount(%args) - 1)) $= strLwr($CityRP::jobs::name[CityRPData.getData(%client.bl_id).valueJobID]))
  1010. {
  1011. messageClient(%client, '', "\c6You are already" SPC CityRP(3, $CityRP::jobs::name[CityRPData.getData(%client.bl_id).valueJobID]) SPC "\c3" @ $CityRP::jobs::name[CityRPData.getData(%client.bl_id).valueJobID] @ "\c6.");
  1012.  
  1013. return;
  1014. }
  1015.  
  1016. for(%a = 1; %a <= $CityRP::jobs; %a++)
  1017. {
  1018. if(strLwr(getWords(%args, 0, getWordCount(%args) - 1)) $= strLwr($CityRP::jobs::name[%a]))
  1019. {
  1020. if($CityRP::jobs::law[%a] && getWord(CityRPData.getData(%client.bl_id).valueJailData, 0) == 1)
  1021. {
  1022. messageClient(%client, '', "\c6You don't have a clean criminal record. You can't become" SPC CityRP(3, $CityRP::jobs::name[%a]) SPC "\c3" @ $CityRP::jobs::name[%a] @ "\c6.");
  1023.  
  1024. return;
  1025. }
  1026.  
  1027. if(mFloor($CityRP::jobs::initialInvestment[%a]) > 0)
  1028. {
  1029. if(CityRPData.getData(%client.bl_id).valueMoney < mFloor($CityRP::jobs::initialInvestment[%a]))
  1030. {
  1031. messageClient(%client, '', "\c6You need at least \c3$" @ mFloor($CityRP::jobs::initialInvestment[%a]) SPC "\c6in order to apply for this job.");
  1032.  
  1033. return;
  1034. }
  1035.  
  1036. messageClient(%client, '', "\c6You have paid \c3$" @ mFloor($CityRP::jobs::initialInvestment[%a]) @ "\c6 to become" SPC CityRP(3, $CityRP::jobs::name[%a]) SPC "\c3" @ $CityRP::jobs::name[%a] @ "\c6.");
  1037. }
  1038. else
  1039. {
  1040. messageClient(%client, '', "\c6You are now" SPC CityRP(3, $CityRP::jobs::name[%a]) SPC "\c3" @ $CityRP::jobs::name[%a] @ "\c6.");
  1041. }
  1042.  
  1043. if($CityRP::jobs::items[CityRPData.getData(%client.bl_id).valueJobID] == 1)
  1044. {
  1045. %brickGroup = "brickGroup_" @ %client.bl_id;
  1046.  
  1047. %display = false;
  1048.  
  1049. for(%b = 0; %b < %brickGroup.getCount(); %b++)
  1050. {
  1051. if(!isObject(%brickGroup.getObject(%b).item))
  1052. {
  1053. continue;
  1054. }
  1055.  
  1056. %brickGroup.getObject(%b).setItem(0, (isObject(%brickGroup.client) ? %brickGroup.client : 0), true);
  1057.  
  1058. %display = true;
  1059. }
  1060.  
  1061. if(%display)
  1062. {
  1063. messageClient(%client, '', "\c6Since you are no longer" SPC CityRP(3, $CityRP::jobs::name[CityRPData.getData(%client.bl_id).valueJobID]) SPC $CityRP::jobs::name[CityRPData.getData(%client.bl_id).valueJobID] @ ", your item spawns have been removed.");
  1064. }
  1065. }
  1066.  
  1067. CityRPData.getData(%client.bl_id).valueMoney -= mFloor($CityRP::jobs::initialInvestment[%a]);
  1068. CityRPData.getData(%client.bl_id).valueJobID = %a;
  1069.  
  1070. if(isObject(%client.player))
  1071. {
  1072. serverCmdunUseTool(%client);
  1073.  
  1074. %client.player.giveDefaultEquipment();
  1075. }
  1076.  
  1077. %client.CityRP(1);
  1078.  
  1079. return;
  1080. }
  1081. }
  1082.  
  1083. messageClient(%client, '', "\c6Invalid job '\c3" @ getWords(%args, 0, getWordCount(%args) - 1) @ "\c6'. Type \c3^job\c6 to see a list of the jobs.");
  1084.  
  1085. return;
  1086. }
  1087.  
  1088. if(%command $= "cast")
  1089. {
  1090. if(strLwr(getWord(strLwr(%args), getWordCount(%args) - 1)) $= "sandwich")
  1091. {
  1092. messageClient(%client, '', "\c6You cast a sandwich, but Iban takes it away from you!");
  1093. }
  1094.  
  1095. return;
  1096. }
  1097.  
  1098. if(%command $= "help")
  1099. {
  1100. %section = strLwr(getWord(strLwr(%args), getWordCount(%args) - 1));
  1101.  
  1102. if(%section $= "admin")
  1103. {
  1104. if(!%client.isAdmin)
  1105. {
  1106. messageClient(%client, '', "\c6You must be admin to use this help section!");
  1107. }
  1108. else
  1109. {
  1110. CityRPHelp.displayHelp(%client, "main_admin");
  1111. }
  1112.  
  1113. return;
  1114. }
  1115.  
  1116. if(%section $= "jobs")
  1117. {
  1118. messageClient(%client, '', "\c6Type \c3^job\c6 then one of the jobs below to become that job.");
  1119.  
  1120. for(%a = 1; %a <= $CityRP::jobs; %a++)
  1121. {
  1122. messageClient(%client, '', "\c3" @ $CityRP::jobs::name[%a] SPC "\c6- Inital Investment: \c3" @ $CityRP::jobs::initialInvestment[%a] SPC "\c6Pay: \c3" @ $CityRP::jobs::pay[%a] SPC "\c6Items: \c3" SPC (($CityRP::jobs::items[%a] == 1) ? "Yes" : "No") SPC "\c6Law: \c3" SPC (($CityRP::jobs::law[%a]) ? "Yes" : "No"));
  1123. }
  1124.  
  1125. return;
  1126. }
  1127.  
  1128. if(%section $= "lots")
  1129. {
  1130. messageClient(%client, '', "\c6This is a list of lots you can plant.");
  1131.  
  1132. for(%a = 0; %a < datablockGroup.getCount(); %a++)
  1133. {
  1134. %datablock = datablockGroup.getObject(%a);
  1135.  
  1136. if(%datablock.CityRPBrickType == 1)
  1137. {
  1138. messageClient(%client, '', "\c3" @ %datablock.uiName SPC "\c6- Size: \c3" @ %datablock.brickSizeX @ "x" @ %datablock.brickSizeY SPC "\c6Cost: \c3" @ %datablock.initialPrice SPC "\c6Tax: \c3" SPC %datablock.taxAmount);
  1139. }
  1140. }
  1141.  
  1142. return;
  1143. }
  1144.  
  1145. if(%section $= "items")
  1146. {
  1147. messageClient(%client, '', "\c6This is a list of item prices.");
  1148.  
  1149. for(%a = 0; %a < datablockGroup.getCount(); %a++)
  1150. {
  1151. %datablock = datablockGroup.getObject(%a);
  1152.  
  1153. if((strLwr(%datablock.getClassName()) !$= strLwr("itemData") && strLwr(%datablock.getClassName()) !$= "weapon") || %datablock.uiName $= "")
  1154. {
  1155. continue;
  1156. }
  1157.  
  1158. if(!%datablock.CityRPCanSpawn && %datablock.CityRPCanSpawn !$= "")
  1159. {
  1160. continue;
  1161. }
  1162.  
  1163. %price = (isObject(%datablock.image) && isObject(%datablock.image.projectile)) ? mFloor(%datablock.image.projectile.directDamage) : 0;
  1164. %price2 = (isObject(%datablock.image) && isObject(%datablock.image.projectile) && isObject(%datablock.image.projectile.explosion)) ? mFloor(%datablock.image.projectile.explosion.radiusDamage) : 0;
  1165.  
  1166. messageClient(%client, '', "\c3" @ %datablock.uiName SPC "\c6- Price: \c3$" @ $CityRP::prices::addItemSpawn + (%price + %price2));
  1167. }
  1168.  
  1169. return;
  1170. }
  1171.  
  1172. if(%section !$= "")
  1173. {
  1174. %error = CityRPHelp.displayHelp(%client, %section);
  1175.  
  1176. if(!%error)
  1177. {
  1178. messageClient(%client, '', "\c6Invalid help section '\c3" @ getWord(strLwr(%args), getWordCount(%args) - 1) @ "\c6'.");
  1179. }
  1180.  
  1181. return;
  1182. }
  1183.  
  1184. CityRPHelp.displayHelp(%client, "main");
  1185.  
  1186. return;
  1187. }
  1188.  
  1189. if(%command $= "reset")
  1190. {
  1191. if(CityRPData.getData(%client.bl_id).valueMoney - $CityRP::prices::reset < 0)
  1192. {
  1193. messageClient(%client, '', "\c6You need at least \c3$" @ $CityRP::prices::reset SPC "\c6to do that.");
  1194.  
  1195. return;
  1196. }
  1197.  
  1198. if(getWord(CityRPData.getData(%client.bl_id).valueBankData, 2) > 0)
  1199. {
  1200. messageClient(%client, '', "\c6You are still paying off your loan of \c3$" @ getWord(CityRPData.getData(%client.bl_id).valueBankData, 2) @ "\c6!");
  1201.  
  1202. return;
  1203. }
  1204.  
  1205. messageClient(%client, '', "\c6Your account has been reset.");
  1206.  
  1207. CityRPData.removeData(%client.bl_id);
  1208. CityRPData.addData(%client.bl_id);
  1209.  
  1210. %client.CityRP(1);
  1211.  
  1212. if(isObject(%client.player))
  1213. {
  1214. %client.player.delete();
  1215. %client.spawnPlayer();
  1216. }
  1217.  
  1218. return;
  1219. }
  1220.  
  1221. messageClient(%client, '', "\c6Invalid command '\c3" @ %command @ "\c6'.");
  1222.  
  1223. %client.lastCityRPCommand = %lastCommand;
  1224.  
  1225. return;
  1226. }
  1227.  
  1228. if(isObject(%client.player) && isObject(%client.CityRPTrigger) && isObject(%client.CityRPTrigger.parent) && %client.CityRPTrigger.parent.getDatablock().CityRPBrickType == 2)
  1229. {
  1230. if(%client.lastCityRPCommand + 0.01 > $sim::time)
  1231. {
  1232. return;
  1233. }
  1234.  
  1235. %client.CityRPTrigger.parent.getDatablock().parseData(%client.CityRPTrigger.parent, %client, "", %text);
  1236.  
  1237. %client.lastCityRPCommand = $sim::time;
  1238.  
  1239. return;
  1240. }
  1241.  
  1242. if(getWord(CityRPData.getData(%client.bl_id).valueJailData, 1) > 0)
  1243. {
  1244. messageClient(%client, '', "\c6You can't talk while in jail.");
  1245.  
  1246. return;
  1247. }
  1248.  
  1249. parent::serverCmdmessageSent(%client, %text);
  1250. }
  1251.  
  1252. function serverCmdteamMessageSent(%client, %text)
  1253. {
  1254. %minigame = %client.minigame;
  1255. %client.minigame = "";
  1256.  
  1257. parent::serverCmdteamMessageSent(%client, %text);
  1258.  
  1259. %client.minigame = %minigame;
  1260. }
  1261.  
  1262. function serverCmdcreateMiniGame(%client)
  1263. {
  1264. return;
  1265. }
  1266.  
  1267. function serverCmdleaveMiniGame(%client)
  1268. {
  1269. return;
  1270. }
  1271.  
  1272. function serverCmddropTool(%client, %toolID)
  1273. {
  1274. if(getWord(CityRPData.getData(%client.bl_id).valueJailData, 1) > 0)
  1275. {
  1276. messageClient(%client, '', "\c6You can't drop tools while in jail.");
  1277.  
  1278. return;
  1279. }
  1280.  
  1281. parent::serverCmddropTool(%client, %toolID);
  1282. }
  1283.  
  1284. function serverCmdsuicide(%client)
  1285. {
  1286. if(getWord(CityRPData.getData(%client.bl_id).valueJailData, 1) > 0)
  1287. {
  1288. messageClient(%client, '', "\c6You can't suicide while in jail.");
  1289.  
  1290. return;
  1291. }
  1292.  
  1293. parent::serverCmdsuicide(%client);
  1294. }
  1295.  
  1296. function fxDtsBrick::onPlant(%brick)
  1297. {
  1298. parent::onPlant(%brick);
  1299.  
  1300. if(isObject($loadingBricks_client) && !isObject($loadBrick_fileObj))
  1301. {
  1302. if(%brick.getDatablock().CityRPBrickType == 1 || %brick.getDatablock().CityRPBrickType == 2)
  1303. {
  1304. %brick.schedule(1, "CityRP", 1);
  1305. }
  1306.  
  1307. if(%brick.getDatablock().CityRPBrickType == 3)
  1308. {
  1309. $CityRP_temp::spawnPoints = ($CityRP_temp::spawnPoints $= "") ? %brick : $CityRP_temp::spawnPoints SPC %brick;
  1310. }
  1311.  
  1312. return;
  1313. }
  1314.  
  1315. if(!isObject(getBrickGroupFromObject(%brick).client))
  1316. {
  1317. if(%brick.getDatablock().CityRPBrickType == 1)
  1318. {
  1319. %brick.schedule(0, "delete");
  1320. }
  1321.  
  1322. if(%brick.getDatablock().CityRPBrickType == 2)
  1323. {
  1324. %brick.schedule(0, "CityRP", 1);
  1325. }
  1326.  
  1327. if(%brick.getDatablock().CityRPBrickType == 3)
  1328. {
  1329. $CityRP_temp::spawnPoints = ($CityRP_temp::spawnPoints $= "") ? %brick : $CityRP_temp::spawnPoints SPC %brick;
  1330. }
  1331.  
  1332. return;
  1333. }
  1334.  
  1335. %boxSize = getWord(%brick.getDatablock().brickSizeX, 1) / 2.5 SPC getWord(%brick.getDatablock().brickSizeY, 0) / 2.5 SPC getWord(%brick.getDatablock().brickSizeZ, 2) / 2.5;
  1336.  
  1337. if(mFloor(getWord(%brick.rotation, 3)) == 90)
  1338. {
  1339. %boxSize = getWord(%brick.getDatablock().brickSizeY, 1) / 2.5 SPC getWord(%brick.getDatablock().brickSizeX, 0) / 2.5 SPC getWord(%brick.getDatablock().brickSizeZ, 2) / 2.5;
  1340. }
  1341.  
  1342. %client = getBrickGroupFromObject(%brick).client;
  1343.  
  1344. initContainerBoxSearch(%brick.getWorldBoxCenter(), %boxSize, $typeMasks::triggerObjectType);
  1345.  
  1346. while(isObject(%potentialTrigger = containerSearchNext()))
  1347. {
  1348. %trigger = %potentialTrigger;
  1349.  
  1350. if(%trigger.getDatablock() == CityRPLotTriggerData.getID())
  1351. {
  1352. if(%brick.getDatablock().CityRPBrickType == 1)
  1353. {
  1354. %brick.schedule(0, "delete");
  1355.  
  1356. return;
  1357. }
  1358.  
  1359. if(getTrustLevel(%trigger.parent, %client.player) < 1)
  1360. {
  1361. commandToClient(%client, 'centerPrint', (getBrickGroupFromObject(%trigger.parent).name $= "") ? "\c1BL_ID:" SPC getBrickGroupFromObject(%trigger.parent).bl_id : getBrickGroupFromObject(%trigger.parent).name SPC "\c0does not trust you enough to do that.", 1);
  1362.  
  1363. %brick.schedule(0, "delete");
  1364.  
  1365. return;
  1366. }
  1367. }
  1368. }
  1369.  
  1370. if(!%client.isAdmin && %brick.getDatablock().CityRPBrickAdmin)
  1371. {
  1372. commandToClient(%client, 'centerPrint', "\c3You must be admin to plant this brick!", 3);
  1373.  
  1374. %brick.schedule(0, "delete");
  1375.  
  1376. return;
  1377. }
  1378.  
  1379. if(!%client.isAdmin && !isObject(%trigger) && %brick.getDatablock().CityRPBrickType != 1)
  1380. {
  1381. %brick.schedule(0, "delete");
  1382.  
  1383. return;
  1384. }
  1385.  
  1386. if(%brick.getDatablock().CityRPBrickType == 1)
  1387. {
  1388. if(CityRPData.getData(%client.bl_id).valueMoney < mFloor(%brick.getDatablock().initialPrice))
  1389. {
  1390. messageClient(%client, '', "\c6You need at least \c3$" @ mFloor(%brick.getDatablock().initialPrice) SPC "\c6in order to plant this lot!");
  1391.  
  1392. %brick.schedule(0, "delete");
  1393.  
  1394. return;
  1395. }
  1396.  
  1397. messageClient(%client, '', "\c6You have paid \c3$" @ mFloor(%brick.getDatablock().initialPrice) @ "\c6 to plant this lot.");
  1398.  
  1399. CityRPData.getData(%client.bl_id).valueMoney -= mFloor(%brick.getDatablock().initialPrice);
  1400. }
  1401.  
  1402. if(!isObject(CityRPData.getData(getBrickGroupFromObject(%brick).bl_id)))
  1403. {
  1404. CityRPData.addData(getBrickGroupFromObject(%brick).bl_id);
  1405. }
  1406.  
  1407. if(%brick.getDatablock().brickType == 2)
  1408. {
  1409. if(CityRPData.getData(%client.bl_id).valueMoney < mFloor($CityRP::prices::vehicleSpawn))
  1410. {
  1411. messageClient(%client, '', "\c6You need at least \c3$" @ mFloor($CityRP::prices::vehicleSpawn) SPC "\c6in order to plant this vehicle spawn!");
  1412.  
  1413. %brick.schedule(0, "delete");
  1414.  
  1415. return;
  1416. }
  1417.  
  1418. messageClient(%client, '', "\c6You have paid \c3$" @ mFloor($CityRP::prices::vehicleSpawn) @ "\c6 to plant this vehicle spawn.");
  1419.  
  1420. CityRPData.getData(%client.bl_id).valueMoney -= mFloor($CityRP::prices::vehicleSpawn);
  1421. }
  1422.  
  1423. if(%brick.getDatablock().CityRPBrickType == 1 || %brick.getDatablock().CityRPBrickType == 2)
  1424. {
  1425. %brick.schedule(0, "CityRP", 1);
  1426. }
  1427.  
  1428. if(%brick.getDatablock().CityRPBrickType == 3)
  1429. {
  1430. $CityRP_temp::spawnPoints = ($CityRP_temp::spawnPoints $= "") ? %brick : $CityRP_temp::spawnPoints SPC %brick;
  1431. }
  1432.  
  1433. %client.CityRP(1);
  1434. }
  1435.  
  1436. function fxDtsBrick::onDeath(%brick)
  1437. {
  1438. if(%brick.getDatablock().CityRPBrickType == 1 || %brick.getDatablock().CityRPBrickType == 2)
  1439. {
  1440. %brick.CityRP(2);
  1441. }
  1442.  
  1443. if(%brick.getDatablock().CityRPBrickType == 3)
  1444. {
  1445. if(getWord($CityRP_temp::spawnPoints, 0) == %brick)
  1446. {
  1447. $CityRP_temp::spawnPoints = strReplace($CityRP_temp::spawnPoints, %brick @ ((getWordCount($CityRP_temp::spawnPoints) == 1) ? "" : " "), "");
  1448. }
  1449. else
  1450. {
  1451. $CityRP_temp::spawnPoints = strReplace($CityRP_temp::spawnPoints, " " @ %brick, "");
  1452. }
  1453. }
  1454.  
  1455. parent::onDeath(%brick);
  1456. }
  1457.  
  1458. function fxDtsBrick::onRemove(%brick)
  1459. {
  1460. if(%brick.getDatablock().CityRPBrickType == 1 || %brick.getDatablock().CityRPBrickType == 2)
  1461. {
  1462. %brick.CityRP(2);
  1463. }
  1464.  
  1465. if(%brick.getDatablock().CityRPBrickType == 3)
  1466. {
  1467. if(getWord($CityRP_temp::spawnPoints, 0) == %brick)
  1468. {
  1469. $CityRP_temp::spawnPoints = strReplace($CityRP_temp::spawnPoints, %brick @ ((getWordCount($CityRP_temp::spawnPoints) == 1) ? "" : " "), "");
  1470. }
  1471. else
  1472. {
  1473. $CityRP_temp::spawnPoints = strReplace($CityRP_temp::spawnPoints, " " @ %brick, "");
  1474. }
  1475. }
  1476.  
  1477. parent::onRemove(%brick);
  1478. }
  1479.  
  1480. function fxDtsBrick::setName(%brick, %name)
  1481. {
  1482. %oldName = %brick.getName();
  1483.  
  1484. if(isObject(%name) && (%brick.getDatablock().CityRPBrickType == 1 || %name.getDatablock().CityRPBrickType == 1))
  1485. {
  1486. %a = 2;
  1487.  
  1488. while(isObject(%name @ %a))
  1489. {
  1490. %a++;
  1491. }
  1492.  
  1493. %name = %name @ %a;
  1494.  
  1495. parent::setName(%brick, %name);
  1496.  
  1497. return;
  1498. }
  1499.  
  1500. parent::setName(%brick, %name);
  1501.  
  1502. if(%name !$= "")
  1503. {
  1504. for(%a = 1; %a <= CityRPData.dataCount; %a++)
  1505. {
  1506. if(getWord(CityRPData.data[%a].valueLotData, 0) == 0)
  1507. {
  1508. continue;
  1509. }
  1510.  
  1511. %data = CityRPData.data[%a].valueLotData;
  1512.  
  1513. for(%b = 1; %b < getWordCount(%data); %b++)
  1514. {
  1515. if(%b % 2 == 0)
  1516. {
  1517. continue;
  1518. }
  1519.  
  1520. if(strLwr(getWord(%data, %b)) $= strLwr(getSubStr(%name, 1, strLen(%name) - 1)))
  1521. {
  1522. %a = 2;
  1523.  
  1524. while(isObject(%name @ %a))
  1525. {
  1526. %a++;
  1527. }
  1528.  
  1529. %name = %name @ %a;
  1530.  
  1531. parent::setName(%brick, %name);
  1532.  
  1533. return;
  1534. }
  1535. }
  1536. }
  1537. }
  1538.  
  1539. if(%oldName !$= "")
  1540. {
  1541. if(%brick.getName() $= "")
  1542. {
  1543. %data = CityRPData.getData(getBrickGroupFromObject(%brick).bl_id).valueLotData;
  1544.  
  1545. %newData = getWord(%data, 0) - 1;
  1546.  
  1547. for(%a = 1; %a < getWordCount(%data); %a++)
  1548. {
  1549. if(%cancelNext)
  1550. {
  1551. %cancelNext = false;
  1552.  
  1553. continue;
  1554. }
  1555.  
  1556. %newData = %newData SPC getWord(%data, %a);
  1557.  
  1558. if(%a % 2 == 0)
  1559. {
  1560. continue;
  1561. }
  1562.  
  1563. %newBrick = "_" @ getWord(%data, %a);
  1564.  
  1565. if(isObject(%newBrick) && %newBrick $= %oldName)
  1566. {
  1567. %newData = getWords(%newData, 0, getWordCount(%newData) - 2);
  1568.  
  1569. %cancelNext = true;
  1570. }
  1571. }
  1572.  
  1573. CityRPData.getData(getBrickGroupFromObject(%brick).bl_id).valueLotData = %newData;
  1574. }
  1575. else
  1576. {
  1577. CityRPData.getData(getBrickGroupFromObject(%brick).bl_id).valueLotData = strReplace(CityRPData.getData(getBrickGroupFromObject(%brick).bl_id).valueLotData, getSubStr(%oldName, 1, strLen(%oldName) - 1), getSubStr(%name, 1, strLen(%name) - 1));
  1578. }
  1579. }
  1580. }
  1581.  
  1582. function fxDtsBrick::setItem(%brick, %datablock, %client)
  1583. {
  1584. if(!isObject(%client))
  1585. {
  1586. %client = getBrickGroupFromObject(%brick).client;
  1587. }
  1588.  
  1589. if(!isObject(%client))
  1590. {
  1591. parent::spawnItem(%brick, %pos, %datablock, %client);
  1592.  
  1593. return;
  1594. }
  1595.  
  1596. if(!isObject(%client) || (isObject($loadingBricks_client) && !isObject($loadBrick_fileObj)) || (isObject(%brick.item) && %brick.item.getDatablock() == %datablock))
  1597. {
  1598. parent::setItem(%brick, %datablock, %client);
  1599.  
  1600. return;
  1601. }
  1602.  
  1603. if(!%datablock.CityRPCanSpawn && %datablock.CityRPCanSpawn !$= "")
  1604. {
  1605. return;
  1606. }
  1607.  
  1608. if(!isObject(%datablock) || (!%client.isAdmin && $CityRP::jobs::items[CityRPData.getData(%client.bl_id).valueJobID] == 0))
  1609. {
  1610. parent::setItem(%brick, 0, %client);
  1611.  
  1612. return;
  1613. }
  1614.  
  1615. %price = (isObject(%datablock.image) && isObject(%datablock.image.projectile)) ? mFloor(%datablock.image.projectile.directDamage) : 0;
  1616. %price2 = (isObject(%datablock.image) && isObject(%datablock.image.projectile) && isObject(%datablock.image.projectile.explosion)) ? mFloor(%datablock.image.projectile.explosion.radiusDamage) : 0;
  1617.  
  1618. if((CityRPData.getData(%client.bl_id).valueMoney - ($CityRP::prices::addItemSpawn + (%price + %price2))) < 0)
  1619. {
  1620. messageClient(%client, '', "\c6You can't afford to spawn this item.");
  1621.  
  1622. return;
  1623. }
  1624.  
  1625. messageClient(%client, '', "\c6You have paid \c3$" @ ($CityRP::prices::addItemSpawn + (%price + %price2)) @ "\c6 to spawn this item.");
  1626.  
  1627. CityRPData.getData(%client.bl_id).valueMoney -= $CityRP::prices::addItemSpawn + (%price + %price2);
  1628.  
  1629. %client.CityRP(1);
  1630.  
  1631. parent::setItem(%brick, %datablock, %client);
  1632. }
  1633.  
  1634. function fxDtsBrick::spawnItem(%brick, %pos, %datablock, %client)
  1635. {
  1636. if(!isObject(%client))
  1637. {
  1638. %client = getBrickGroupFromObject(%brick).client;
  1639. }
  1640.  
  1641. if(!isObject(%client))
  1642. {
  1643. parent::spawnItem(%brick, %pos, %datablock, %client);
  1644.  
  1645. return;
  1646. }
  1647.  
  1648. if(!isObject(%datablock) || (!%client.isAdmin && !$CityRP::jobs::items[CityRPData.getData(%client.bl_id).valueJobID]))
  1649. {
  1650. return;
  1651. }
  1652.  
  1653. if(!%datablock.CityRPCanSpawn && %datablock.CityRPCanSpawn !$= "")
  1654. {
  1655. return;
  1656. }
  1657.  
  1658. %price = (isObject(%datablock.image) && isObject(%datablock.image.projectile)) ? mFloor(%datablock.image.projectile.directDamage) : 0;
  1659. %price2 = (isObject(%datablock.image) && isObject(%datablock.image.projectile) && isObject(%datablock.image.projectile.explosion)) ? mFloor(%datablock.image.projectile.explosion.radiusDamage) : 0;
  1660.  
  1661. if((CityRPData.getData(%client.bl_id).valueMoney - ($CityRP::prices::addItemSpawn + (%price + %price2))) < 0)
  1662. {
  1663. messageClient(%client, '', "\c6You can't afford to spawn this item.");
  1664.  
  1665. return;
  1666. }
  1667.  
  1668. messageClient(%client, '', "\c6You have paid \c3$" @ ($CityRP::prices::addItemSpawn + (%price + %price2)) @ "\c6 to spawn this item.");
  1669.  
  1670. CityRPData.getData(%client.bl_id).valueMoney -= $CityRP::prices::addItemSpawn + (%price + %price2);
  1671.  
  1672. %client.CityRP(1);
  1673.  
  1674. parent::spawnItem(%brick, %pos, %datablock, %client);
  1675.  
  1676. return;
  1677. }
  1678.  
  1679. function CityRPLotTriggerData::onEnterTrigger(%this, %trigger, %obj)
  1680. {
  1681. %trigger.parent.onEnterLot(%obj);
  1682.  
  1683. if(!isObject(%obj.client))
  1684. {
  1685. return;
  1686. }
  1687.  
  1688. %obj.client.CityRPLotTrigger = %trigger;
  1689.  
  1690. %obj.client.CityRP(1);
  1691. }
  1692.  
  1693. function CityRPLotTriggerData::onLeaveTrigger(%this, %trigger, %obj)
  1694. {
  1695. %trigger.parent.onLeaveLot(%obj);
  1696.  
  1697. if(!isObject(%obj.client) || %obj.client.CityRPLotTrigger != %trigger)
  1698. {
  1699. return;
  1700. }
  1701.  
  1702. %obj.client.CityRPLotTrigger = "";
  1703.  
  1704. %obj.client.CityRP(1);
  1705. }
  1706.  
  1707. function CityRPInputTriggerData::onEnterTrigger(%this, %trigger, %obj)
  1708. {
  1709. if(!isObject(%obj.client))
  1710. {
  1711. return;
  1712. }
  1713.  
  1714. %obj.client.CityRPTrigger = %trigger;
  1715.  
  1716. %trigger.parent.getDatablock().parseData(%trigger.parent, %obj.client, true, "");
  1717. }
  1718.  
  1719. function CityRPInputTriggerData::onLeaveTrigger(%this, %trigger, %obj, %a)
  1720. {
  1721. if(!isObject(%obj.client))
  1722. {
  1723. return;
  1724. }
  1725.  
  1726. if(%obj.client.CityRPTrigger == %trigger)
  1727. {
  1728. %trigger.parent.getDatablock().parseData(%trigger.parent, %obj.client, false, "");
  1729.  
  1730. %obj.client.CityRPTrigger = "";
  1731. }
  1732. }
  1733.  
  1734. function CityRPBankBrickData::parseData(%this, %brick, %client, %triggerStatus, %text)
  1735. {
  1736. if(%triggerStatus !$= "")
  1737. {
  1738. if(%triggerStatus == true && %client.stage $= "")
  1739. {
  1740. messageClient(%client, '', "\c6Welcome! Please type the number corresponding to the options below.");
  1741. messageClient(%client, '', "\c6Also, you have \c3$" @ getWord(CityRPData.getData(%client.bl_id).valueBankData, 0) SPC "\c6in the bank.");
  1742.  
  1743. messageClient(%client, '', "\c31 \c6- Withdraw Money");
  1744. messageClient(%client, '', "\c32 \c6- Deposit Money");
  1745. messageClient(%client, '', "\c33 \c6- Take Loan");
  1746.  
  1747. %client.stage = 0;
  1748. }
  1749.  
  1750. if(%triggerStatus == false && %client.stage !$= "")
  1751. {
  1752. messageClient(%client, '', "\c6Thanks, come again.");
  1753.  
  1754. %client.stage = "";
  1755. }
  1756.  
  1757. return;
  1758. }
  1759.  
  1760. %input = strLwr(%text);
  1761.  
  1762. if(%client.stage == 1.1)
  1763. {
  1764. if(mFloor(%input) < 1)
  1765. {
  1766. messageClient(%client, '', "\c6Please enter a valid amount of money to withdraw.");
  1767.  
  1768. return;
  1769. }
  1770.  
  1771. if(getWord(CityRPData.getData(%client.bl_id).valueBankData, 0) - mFloor(%input) < 0)
  1772. {
  1773. if(getWord(CityRPData.getData(%client.bl_id).valueBankData, 0) < 1)
  1774. {
  1775. messageClient(%client, '', "\c6You don't have that much money in the bank to withdraw.");
  1776.  
  1777. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0));
  1778.  
  1779. return;
  1780. }
  1781.  
  1782. %input = getWord(CityRPData.getData(%client.bl_id).valueBankData, 0);
  1783. }
  1784.  
  1785. messageClient(%client, '', "\c6You have withdrawn \c3$" @ mFloor(%input) @ "\c6.");
  1786.  
  1787. CityRPData.getData(%client.bl_id).valueBankData = getWord(CityRPData.getData(%client.bl_id).valueBankData, 0) - mFloor(%input) SPC getWords(CityRPData.getData(%client.bl_id).valueBankData, 1, 2);
  1788. CityRPData.getData(%client.bl_id).valueMoney += mFloor(%input);
  1789.  
  1790. %client.CityRP(1);
  1791.  
  1792. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0));
  1793.  
  1794. return;
  1795. }
  1796.  
  1797. if(%client.stage == 2.1)
  1798. {
  1799. if(mFloor(%input) < 1)
  1800. {
  1801. messageClient(%client, '', "\c6Please enter a valid amount of money to deposit.");
  1802.  
  1803. return;
  1804. }
  1805.  
  1806. if(CityRPData.getData(%client.bl_id).valueMoney - mFloor(%input) < 0)
  1807. {
  1808. if(CityRPData.getData(%client.bl_id).valueMoney < 1)
  1809. {
  1810. messageClient(%client, '', "\c6You don't have that much money to deposit.");
  1811.  
  1812. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0));
  1813.  
  1814. return;
  1815. }
  1816.  
  1817. %input = CityRPData.getData(%client.bl_id).valueMoney;
  1818. }
  1819.  
  1820. messageClient(%client, '', "\c6You have deposited \c3$" @ mFloor(%input) @ "\c6!");
  1821.  
  1822. CityRPData.getData(%client.bl_id).valueBankData = getWord(CityRPData.getData(%client.bl_id).valueBankData, 0) + mFloor(%input) SPC getWords(CityRPData.getData(%client.bl_id).valueBankData, 1, 2);
  1823. CityRPData.getData(%client.bl_id).valueMoney -= mFloor(%input);
  1824.  
  1825. %client.CityRP(1);
  1826.  
  1827. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0));
  1828.  
  1829. return;
  1830. }
  1831.  
  1832. if(%client.stage == 3.1)
  1833. {
  1834. if(mFloor(%input) < 1 || mFloor(%input) > $CityRP::prices::maxLoan)
  1835. {
  1836. messageClient(%client, '', "\c6Please enter a valid amount of money to loan.");
  1837.  
  1838. return;
  1839. }
  1840.  
  1841.  
  1842. messageClient(%client, '', "\c6You have loaned \c3$" @ mFloor(%input) @ "\c6!");
  1843.  
  1844. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0));
  1845.  
  1846. CityRPData.getData(%client.bl_id).valueBankData = getWord(CityRPData.getData(%client.bl_id).valueBankData, 0) SPC mFloor(%input) SPC mFloor(%input);
  1847. CityRPData.getData(%client.bl_id).valueMoney += mFloor(%input);
  1848.  
  1849. %client.CityRP(1);
  1850.  
  1851. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0));
  1852.  
  1853. return;
  1854. }
  1855.  
  1856. if(strReplace(%input, "1", "") !$= %input || strReplace(%input, "one", "") !$= %input)
  1857. {
  1858. %client.stage = 1.1;
  1859.  
  1860. messageClient(%client, '', "\c6Please enter the amount of money you wish to withdraw.");
  1861.  
  1862. return;
  1863. }
  1864.  
  1865. if(strReplace(%input, "2", "") !$= %input || strReplace(%input, "two", "") !$= %input)
  1866. {
  1867. %client.stage = 2.1;
  1868.  
  1869. messageClient(%client, '', "\c6Please enter the amount of money you wish to deposit.");
  1870.  
  1871. return;
  1872. }
  1873.  
  1874. if(strReplace(%input, "3", "") !$= %input || strReplace(%input, "three", "") !$= %input)
  1875. {
  1876. if(getWord(CityRPData.getData(%client.bl_id).valueBankData, 2) > 0)
  1877. {
  1878. messageClient(%client, '', "\c6You are still paying off your loan of \c3$" @ getWord(CityRPData.getData(%client.bl_id).valueBankData, 2) @ "\c6!");
  1879.  
  1880. return;
  1881. }
  1882.  
  1883. %client.stage = 3.1;
  1884.  
  1885. messageClient(%client, '', "\c3DISCLAIMER");
  1886. messageClient(%client, '', "\c6The maximum amount of money you can loan is \c3$" @ $CityRP::prices::maxLoan @ "\c6.");
  1887. messageClient(%client, '', "\c6You pay back \c3$" @ $CityRP::prices::loanPay SPC "\c6of your loan every tick.");
  1888. messageClient(%client, '', "\c6You can not reset your account while having a loan out.");
  1889. messageClient(%client, '', "\c6This may send you into permanent debt.");
  1890. messageClient(%client, '', " ");
  1891.  
  1892. messageClient(%client, '', "\c6Please enter the amount of money you wish to loan.");
  1893.  
  1894. return;
  1895. }
  1896.  
  1897. messageClient(%client, '', "\c3" @ %text SPC "\c6is not a valid option!");
  1898. }
  1899.  
  1900. function CityRPPoliceBrickData::parseData(%this, %brick, %client, %triggerStatus, %text)
  1901. {
  1902. if(%triggerStatus !$= "")
  1903. {
  1904. if(%triggerStatus == true)
  1905. {
  1906. messageClient(%client, '', "\c6Welcome! Please type the number corresponding to the options below.");
  1907.  
  1908. if(CityRPData.getData(%client.bl_id).valueDemerits > 0)
  1909. {
  1910. messageClient(%client, '', "\c6Also, you have \c3" @ CityRPData.getData(%client.bl_id).valueDemerits SPC "\c6demerits.");
  1911. }
  1912.  
  1913. messageClient(%client, '', "\c31 \c6- View Online Criminals");
  1914.  
  1915. if(CityRPData.getData(%client.bl_id).valueDemerits > 0)
  1916. {
  1917. messageClient(%client, '', "\c32 \c6- Pay Demerits (\c3$" @ CityRPData.getData(%client.bl_id).valueDemerits * 2 @ "\c6)");
  1918. }
  1919. }
  1920.  
  1921. if(%triggerStatus == false)
  1922. {
  1923. messageClient(%client, '', "\c6Thanks, come again.");
  1924. }
  1925.  
  1926. return;
  1927. }
  1928.  
  1929. %input = strLwr(%text);
  1930.  
  1931. if(strReplace(%input, "1", "") !$= %input || strReplace(%input, "one", "") !$= %input)
  1932. {
  1933. %noCriminals = true;
  1934.  
  1935. for(%a = 0; %a < clientGroup.getCount(); %a++)
  1936. {
  1937. %criminal = clientGroup.getObject(%a);
  1938.  
  1939. if(CityRPData.getData(%criminal.bl_id).valueDemerits >= $CityRP::demerits::wantedLevel)
  1940. {
  1941. messageClient(%client, '', "\c3" @ %criminal.name SPC "\c6- \c3" @ CityRPData.getData(%criminal.bl_id).valueDemerits);
  1942.  
  1943. %noCriminals = false;
  1944. }
  1945. }
  1946.  
  1947. if(%noCriminals)
  1948. {
  1949. messageClient(%client, '', "\c6There are no criminals online.");
  1950. }
  1951.  
  1952. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0));
  1953.  
  1954. return;
  1955. }
  1956.  
  1957. if((strReplace(%input, "2", "") !$= %input || strReplace(%input, "two", "") !$= %input) && CityRPData.getData(%client.bl_id).valueDemerits > 0)
  1958. {
  1959. if(CityRPData.getData(%client.bl_id).valueMoney - (CityRPData.getData(%client.bl_id).valueDemerits * 2) < 0)
  1960. {
  1961. messageClient(%client, '', "\c6You don't have enough money to do that.");
  1962.  
  1963. return;
  1964. }
  1965.  
  1966. messageClient(%client, '', "\c6You have paid \c3$" @ CityRPData.getData(%client.bl_id).valueDemerits * 2 @ "\c6. You now have no \c6demerits.");
  1967.  
  1968. CityRPData.getData(%client.bl_id).valueMoney -= CityRPData.getData(%client.bl_id).valueDemerits * 2;
  1969. CityRPData.getData(%client.bl_id).valueDemerits = 0;
  1970.  
  1971. %client.CityRP(1);
  1972.  
  1973. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0));
  1974.  
  1975. return;
  1976. }
  1977.  
  1978. if((strReplace(%input, "3", "") !$= %input || strReplace(%input, "three", "") !$= %input) && CityRPData.getData(%client.bl_id).valueDemerits > 0)
  1979. {
  1980. if(CityRPData.getData(%client.bl_id).valueMoney - (CityRPData.getData(%client.bl_id).valueDemerits * 2) < 0)
  1981. {
  1982. messageClient(%client, '', "\c6You don't have enough money to do that.");
  1983.  
  1984. return;
  1985. }
  1986.  
  1987. messageClient(%client, '', "\c6You have paid \c3$" @ CityRPData.getData(%client.bl_id).valueDemerits * 2 @ "\c6. You now have no \c6demerits.");
  1988.  
  1989. CityRPData.getData(%client.bl_id).valueMoney -= CityRPData.getData(%client.bl_id).valueDemerits * 2;
  1990. CityRPData.getData(%client.bl_id).valueDemerits = 0;
  1991.  
  1992. %client.CityRP(1);
  1993.  
  1994. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0));
  1995.  
  1996. return;
  1997. }
  1998.  
  1999. messageClient(%client, '', "\c3" @ %text SPC "\c6is not a valid option!");
  2000.  
  2001. return;
  2002. }
  2003.  
  2004. function CityRPRealEstateBrickData::parseData(%this, %brick, %client, %triggerStatus, %text)
  2005. {
  2006. if(%triggerStatus !$= "")
  2007. {
  2008. if(%triggerStatus == true)
  2009. {
  2010. messageClient(%client, '', "\c6Welcome! Please type the number corresponding to the options below.");
  2011.  
  2012. messageClient(%client, '', "\c31 \c6- View Lots");
  2013. messageClient(%client, '', "\c32 \c6- Buy Lot");
  2014. messageClient(%client, '', "\c33 \c6- Sell Lot");
  2015. messageClient(%client, '', "\c34 \c6- Cancel Sale");
  2016.  
  2017. %client.stage = 0;
  2018. %client.pickedLot = "";
  2019. }
  2020.  
  2021. if(%triggerStatus == false)
  2022. {
  2023. messageClient(%client, '', "\c6Thanks, come again.");
  2024.  
  2025. %client.stage = "";
  2026. %client.pickedLot = "";
  2027. }
  2028.  
  2029. return;
  2030. }
  2031.  
  2032. %input = strLwr(%text);
  2033.  
  2034. if(%client.stage == 2.1)
  2035. {
  2036. %found = false;
  2037.  
  2038. for(%a = 1; %a <= CityRPData.dataCount; %a++)
  2039. {
  2040. if(getWord(CityRPData.data[%a].valueLotData, 0) == 0 || CityRPData.data[%a].ID == %client.bl_id)
  2041. {
  2042. continue;
  2043. }
  2044.  
  2045. %data = CityRPData.data[%a].valueLotData;
  2046.  
  2047. for(%b = 1; %b < getWordCount(%data); %b++)
  2048. {
  2049. if(%b % 2 == 0)
  2050. {
  2051. continue;
  2052. }
  2053.  
  2054. if(strLwr(getWord(%data, %b)) $= %input)
  2055. {
  2056. %found = true;
  2057.  
  2058. %newBrick = "_" @ getWord(%data, %b);
  2059.  
  2060. %price = getWord(%data, %b + 1);
  2061.  
  2062. %owner = getBrickGroupFromObject(%newBrick);
  2063. }
  2064. }
  2065. }
  2066.  
  2067. if(!%found)
  2068. {
  2069. messageClient(%client, '', "\c6Invalid lot '\c3" @ %text @ "\c6'.");
  2070.  
  2071. return;
  2072. }
  2073.  
  2074. if(CityRPData.getData(%client.bl_id).valueMoney < %price)
  2075. {
  2076. messageClient(%client, '', "\c6You need at least \c3$" @ %price SPC "\c6to buy this lot.");
  2077.  
  2078. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0));
  2079.  
  2080. return;
  2081. }
  2082.  
  2083. messageClient(%client, '', "\c3You have bought \c3" @ getSubStr(%newBrick, 1, strLen(%newBrick) - 1) SPC "\c6from \c3" @ %owner.name @ "\c6.");
  2084.  
  2085. if(isObject(%owner.client))
  2086. {
  2087. messageClient(%owner.client, '', "\c3" @ %client.name SPC "\c6has bought \c3" @ getSubStr(%newBrick, 1, strLen(%newBrick) - 1) SPC "\c6from you.");
  2088. }
  2089.  
  2090. CityRPData.getData(%client.bl_id).valueMoney -= %price;
  2091. CityRPData.getData(%owner.bl_id).valueMoney += %price;
  2092.  
  2093. %newBrick.CityRP(3, %client.brickGroup);
  2094.  
  2095. %data = CityRPData.getData(%owner.bl_id).valueLotData;
  2096.  
  2097. %newData = getWord(%data, 0) - 1;
  2098.  
  2099. for(%a = 1; %a < getWordCount(%data); %a++)
  2100. {
  2101. if(%cancelNext)
  2102. {
  2103. %cancelNext = false;
  2104.  
  2105. continue;
  2106. }
  2107.  
  2108. %newData = %newData SPC getWord(%data, %a);
  2109.  
  2110. if(%a % 2 == 0)
  2111. {
  2112. continue;
  2113. }
  2114.  
  2115. if(strLwr(getWord(%data, %a)) == %newBrick)
  2116. {
  2117. %newData = getWords(%newData, 0, getWordCount(%newData) - 2);
  2118.  
  2119. %cancelNext = true;
  2120. }
  2121. }
  2122.  
  2123. CityRPData.getData(%owner.bl_id).valueLotData = %newData;
  2124.  
  2125. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0));
  2126.  
  2127. return;
  2128. }
  2129.  
  2130. if(%client.stage == 3.1)
  2131. {
  2132. if(%input $= "")
  2133. {
  2134. return;
  2135. }
  2136.  
  2137. %picked = false;
  2138.  
  2139. %brickGroup = %client.brickGroup;
  2140.  
  2141. for(%a = 0; %a < %brickGroup.getCount(); %a++)
  2142. {
  2143. if(%brickGroup.getObject(%a).getDatablock().CityRPBrickType == 1)
  2144. {
  2145. if(%brickGroup.getObject(%a).getName() $= "")
  2146. {
  2147. continue;
  2148. }
  2149.  
  2150. %brick = %brickGroup.getObject(%a);
  2151.  
  2152. if(strLwr(getSubStr(%brick.getName(), 1, strLen(%brick.getName()) - 1)) $= %input)
  2153. {
  2154. if(strReplace(strLwr(CityRPData.getData(%client.bl_id).valueLotData), strLwr(getSubStr(%brick.getName(), 1, strLen(%brick.getName()) - 1)), "") !$= strLwr(CityRPData.getData(%client.bl_id).valueLotData))
  2155. {
  2156. continue;
  2157. }
  2158.  
  2159. %picked = true;
  2160.  
  2161. %client.pickedBrick = %brickGroup.getObject(%a);
  2162. }
  2163. }
  2164. }
  2165.  
  2166. if(!%picked)
  2167. {
  2168. messageClient(%client, '', "\c6Invalid lot '\c3" @ %text @ "\c6'.");
  2169.  
  2170. return;
  2171. }
  2172.  
  2173. %client.stage = 3.2;
  2174.  
  2175. messageClient(%client, '', "\c6Please enter the amount you wish to sell the lot for.");
  2176.  
  2177. return;
  2178. }
  2179.  
  2180. if(%client.stage == 3.2)
  2181. {
  2182. %price = mFloor(%input);
  2183.  
  2184. if(%price < 1)
  2185. {
  2186. messageClient(%client, '', "\c6Please enter a valid price!");
  2187.  
  2188. return;
  2189. }
  2190.  
  2191. messageClient(%client, '', "\c6Your offer has been put up.");
  2192.  
  2193. if(getWord(CityRPData.getData(%client.bl_id).valueLotData, 0) > 0)
  2194. {
  2195. %rest = getWords(CityRPData.getData(%client.bl_id).valueLotData, 1, getWordCount(CityRPData.getData(%client.bl_id).valueLotData) - 1) @ " ";
  2196. }
  2197.  
  2198. CityRPData.getData(%client.bl_id).valueLotData = getWord(CityRPData.getData(%client.bl_id).valueLotData, 0) + 1 SPC %rest @ getSubStr(%client.pickedBrick.getName(), 1, strLen(%client.pickedBrick.getName()) - 1) SPC %price;
  2199.  
  2200. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0));
  2201.  
  2202. return;
  2203. }
  2204.  
  2205. if(%client.stage == 4.1)
  2206. {
  2207. if(%input $= "")
  2208. {
  2209. return;
  2210. }
  2211.  
  2212. %picked = false;
  2213.  
  2214. %data = CityRPData.getData(%client.bl_id).valueLotData;
  2215.  
  2216. %newData = getWord(%data, 0) - 1;
  2217.  
  2218. for(%a = 1; %a < getWordCount(%data); %a++)
  2219. {
  2220. if(%cancelNext)
  2221. {
  2222. %cancelNext = false;
  2223.  
  2224. continue;
  2225. }
  2226.  
  2227. %newData = %newData SPC getWord(%data, %a);
  2228.  
  2229. if(%a % 2 == 0)
  2230. {
  2231. continue;
  2232. }
  2233.  
  2234. if(strLwr(getWord(%data, %a)) $= %input)
  2235. {
  2236. %picked = true;
  2237.  
  2238. %newData = getWords(%newData, 0, getWordCount(%newData) - 2);
  2239.  
  2240. %cancelNext = true;
  2241. }
  2242. }
  2243.  
  2244. if(!%picked)
  2245. {
  2246. messageClient(%client, '', "\c6Invalid lot '\c3" @ %text @ "\c6'.");
  2247.  
  2248. return;
  2249. }
  2250.  
  2251. messageClient(%client, '', "\c6Your offer has been withdrawn.");
  2252.  
  2253. CityRPData.getData(%client.bl_id).valueLotData = %newData;
  2254.  
  2255. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0));
  2256.  
  2257. return;
  2258. }
  2259.  
  2260. if(strReplace(%input, "1", "") !$= %input || strReplace(%input, "one", "") !$= %input)
  2261. {
  2262. %found = false;
  2263.  
  2264. for(%a = 1; %a <= CityRPData.dataCount; %a++)
  2265. {
  2266. if(getWord(CityRPData.data[%a].valueLotData, 0) == 0)
  2267. {
  2268. continue;
  2269. }
  2270.  
  2271. %data = CityRPData.data[%a].valueLotData;
  2272.  
  2273. for(%b = 1; %b < getWordCount(%data); %b++)
  2274. {
  2275. if(%b % 2 == 0)
  2276. {
  2277. continue;
  2278. }
  2279.  
  2280. %newBrick = "_" @ getWord(%data, %b);
  2281.  
  2282. if(isObject(%newBrick))
  2283. {
  2284. %found = true;
  2285.  
  2286. messageClient(%client, '', "\c3" @ getWord(%data, %b) @ "\c6, \c3" @ %newBrick.getDatablock().uiName SPC "\c6- Price: \c3$" @ getWord(%data, %b + 1) SPC "\c6Owner: \c3" @ ("brickGroup_" @ CityRPData.data[%a].ID).name);
  2287. }
  2288. }
  2289. }
  2290.  
  2291. if(!%found)
  2292. {
  2293. messageClient(%client, '', "\c6There are no lots to display.");
  2294. }
  2295.  
  2296. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0));
  2297.  
  2298. return;
  2299. }
  2300.  
  2301. if((strReplace(%input, "2", "") !$= %input || strReplace(%input, "two", "") !$= %input))
  2302. {
  2303. messageClient(%client, '', "\c6Please enter the lot which you wish to buy.");
  2304.  
  2305. %client.stage = 2.1;
  2306.  
  2307. return;
  2308. }
  2309.  
  2310. if((strReplace(%input, "3", "") !$= %input || strReplace(%input, "three", "") !$= %input))
  2311. {
  2312. %nameLecture = true;
  2313. %brick404 = true;
  2314.  
  2315. %brickGroup = %client.brickGroup;
  2316.  
  2317. for(%a = 0; %a < %brickGroup.getCount(); %a++)
  2318. {
  2319. if(%brickGroup.getObject(%a).getDatablock().CityRPBrickType == 1)
  2320. {
  2321. %brick = %brickGroup.getObject(%a);
  2322.  
  2323. if(strReplace(strLwr(CityRPData.getData(%client.bl_id).valueLotData), strLwr(getSubStr(%brick.getName(), 1, strLen(%brick.getName()) - 1)), "") !$= strLwr(CityRPData.getData(%client.bl_id).valueLotData))
  2324. {
  2325. continue;
  2326. }
  2327.  
  2328. %brick404 = false;
  2329.  
  2330. if(%brickGroup.getObject(%a).getName() !$= "")
  2331. {
  2332. %brick = %brickGroup.getObject(%a);
  2333.  
  2334. %nameLecture = false;
  2335.  
  2336. messageClient(%client, '', "\c6" @ getSubStr(%brick.getName(), 1, strLen(%brick.getName()) - 1) SPC "\c6- \c3" @ %brick.getDatablock().uiName);
  2337. }
  2338. }
  2339. }
  2340.  
  2341. if(%brick404)
  2342. {
  2343. messageClient(%client, '', "\c6There are no lots to display.");
  2344.  
  2345. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0));
  2346.  
  2347. return;
  2348. }
  2349.  
  2350. if(%nameLecture)
  2351. {
  2352. messageClient(%client, '', "\c6You must give a name to one of your lots!");
  2353.  
  2354. %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0));
  2355.  
  2356. return;
  2357. }
  2358.  
  2359. messageClient(%client, '', "\c6Please enter the name of the lot you wish to sell.");
  2360.  
  2361. %client.stage = 3.1;
  2362.  
  2363. return;
  2364. }
  2365.  
  2366. if((strReplace(%input, "4", "") !$= %input || strReplace(%input, "four", "") !$= %input))
  2367. {
  2368. %data = CityRPData.getData(%client.bl_id).valueLotData;
  2369.  
  2370. %found = false;
  2371.  
  2372. for(%a = 1; %a < getWordCount(%data); %a++)
  2373. {
  2374. if(%a % 2 == 0)
  2375. {
  2376. continue;
  2377. }
  2378.  
  2379. %found = true;
  2380.  
  2381. if(isObject("_" @ getWord(%data, %a)))
  2382. {
  2383. %brick = "_" @ getWord(%data, %a);
  2384.  
  2385. messageClient(%client, '', "\c6" @ getWord(%data, %a) SPC "\c6- \c3" @ %brick.getDatablock().uiName);
  2386. }
  2387. else
  2388. {
  2389. messageClient(%client, '', "\c6" @ getWord(%data, %a) SPC "\c6- \c3Unknown Lot Type");
  2390. }
  2391. }
  2392.  
  2393. if(!%found)
  2394. {
  2395. messageClient(%client, '', "\c6There are no lots to display.");
  2396.  
  2397. return;
  2398. }
  2399.  
  2400. messageClient(%client, '', "\c6Please enter the name of the lot you wish to withdraw from sales.");
  2401.  
  2402. %client.stage = 4.1;
  2403.  
  2404. return;
  2405. }
  2406.  
  2407. messageClient(%client, '', "\c3" @ %text SPC "\c6is not a valid option!");
  2408.  
  2409. return;
  2410. }
  2411.  
  2412. function fxDTSBrick::onEnterLot(%brick, %obj)
  2413. {
  2414. $inputTarget_self = %brick;
  2415.  
  2416. $inputTarget_client = %obj.client;
  2417. $inputTarget_player = %obj.client.player;
  2418.  
  2419. $inputTarget_miniGame = (isObject(getMiniGameFromObject(%obj.client))) ? getMiniGameFromObject(%obj.client) : 0;
  2420.  
  2421. %brick.processInputEvent("OnEnterLot", %obj.client);
  2422. }
  2423.  
  2424. function fxDTSBrick::onLeaveLot(%brick, %obj)
  2425. {
  2426. $inputTarget_self = %brick;
  2427.  
  2428. $inputTarget_client = %obj.client;
  2429. $inputTarget_player = %obj.client.player;
  2430.  
  2431. $inputTarget_miniGame = (isObject(getMiniGameFromObject(%obj.client))) ? getMiniGameFromObject(%obj.client) : 0;
  2432.  
  2433. %brick.processInputEvent("OnLeaveLot", %obj.client);
  2434. }
  2435.  
  2436. function weapon::onPickup(%this, %item, %obj)
  2437. {
  2438. parent::onPickup(%this, %item, %obj);
  2439.  
  2440. if(isObject(%item.spawnBrick))
  2441. {
  2442. %item.spawnBrick.setItem(0, ((isObject(getBrickGroupFromObject(%item.spawnBrick).client)) ? getBrickGroupFromObject(%item.spawnBrick).client : 0), true);
  2443. }
  2444. }
  2445.  
  2446. function itemData::onPickup(%this, %item, %obj)
  2447. {
  2448. parent::onPickup(%this, %item, %obj);
  2449.  
  2450. if(isObject(%item.spawnBrick))
  2451. {
  2452. %item.spawnBrick.setItem(0, ((isObject(getBrickGroupFromObject(%item.spawnBrick).client)) ? getBrickGroupFromObject(%item.spawnBrick).client : 0), true);
  2453. }
  2454. }
  2455.  
  2456. function player::playThread(%this, %slot, %thread)
  2457. {
  2458. if(%thread $= "armReadyRight" && getWord(CityRPData.getData(%this.client.bl_id).valueJailData, 1) > 0)
  2459. {
  2460. return;
  2461. }
  2462.  
  2463. parent::playThread(%this, %slot, %thread);
  2464. }
  2465.  
  2466. function player::mountImage(%this, %datablock, %slot)
  2467. {
  2468. if(getWord(CityRPData.getData(%this.client.bl_id).valueJailData, 1) > 0)
  2469. {
  2470. return;
  2471. }
  2472.  
  2473. parent::mountImage(%this, %datablock, %slot);
  2474. }
  2475.  
  2476. function player::giveDefaultEquipment(%this)
  2477. {
  2478. for(%a = 0; %a < %this.getDatablock().maxTools; %a++)
  2479. {
  2480. if(%a > getWordCount($CityRP::jobs::tools[CityRPData.getData(%this.client.bl_id).valueJobID]) - 1)
  2481. {
  2482. %this.tool[%a] = "";
  2483.  
  2484. messageClient(%this.client, 'MsgItemPickup', "", %a, "");
  2485.  
  2486. continue;
  2487. }
  2488.  
  2489. %this.tool[%a] = nameToID(getWord($CityRP::jobs::tools[CityRPData.getData(%this.client.bl_id).valueJobID], %a));
  2490.  
  2491. messageClient(%this.client, 'MsgItemPickup', "", %a, nameToID(getWord($CityRP::jobs::tools[CityRPData.getData(%this.client.bl_id).valueJobID], %a)));
  2492. }
  2493.  
  2494. %this.maxWeapons = %this.getDatablock().maxTools;
  2495. }
  2496.  
  2497. function player::setDatablock(%this, %datablock)
  2498. {
  2499. if(%datablock != CityRPMini.playerDatablock.getID())
  2500. {
  2501. return;
  2502. }
  2503.  
  2504. parent::setDatablock(%this, %datablock);
  2505. }
  2506.  
  2507. function player::damage(%this, %obj, %pos, %damage, %damageType)
  2508. {
  2509. if(isObject(%obj) && isObject(%this.client) && isObject(%obj.client) && %this != %obj && %this.getDamageLevel() + %damage < %this.getDatablock().maxDamage && CityRPData.getData(%this.client.bl_id).valueDemerits < $CityRP::demerits::wantedLevel && getWord(CityRPData.getData(%this.client.bl_id).valueJailData, 1) < 1)
  2510. {
  2511. %client = ((%this.getType() & $typeMasks::vehicleObjectType) && isObject(%obj.getControllingClient())) ? %obj.getControllingClient() : %obj.client;
  2512.  
  2513. if(%this.getDamageLevel() + %damage < %this.getDatablock().maxDamage)
  2514. {
  2515. commandToClient(%client, 'centerPrint', "\c6You have commited a crime. [\c3Attempted Murder\c6]", 1);
  2516.  
  2517. %client.CityRP(2, $CityRP::demerits::attemptedMurder);
  2518. }
  2519. }
  2520.  
  2521. parent::damage(%this, %obj, %pos, %damage, %damageType);
  2522. }
  2523.  
  2524. function player::activateStuff(%this)
  2525. {
  2526. parent::activateStuff(%this);
  2527.  
  2528. %target = containerRayCast(%this.getEyePoint(), vectorAdd(vectorScale(vectorNormalize(%this.getEyeVector()), 8), %this.getEyePoint()), $typeMasks::all);
  2529.  
  2530. if(isObject(%target) && %target.getType() & $typeMasks::playerObjectType && isObject(%target.client) && getWord(CityRPData.getData(%this.client.bl_id).valueJailData, 1) < 1 && getWord(CityRPData.getData(%target.client.bl_id).valueJailData, 1) < 1 && $CityRP::jobs::pickpocket[CityRPData.getData(%this.client.bl_id).valueJobID] && CityRPData.getData(%target.client.bl_id).valueMoney > 10 && %this.lastPickpocket + 2 < $sim::time)
  2531. {
  2532. %this.lastPickpocket = $sim::time;
  2533.  
  2534. if(getRandom(0, 1))
  2535. {
  2536. return;
  2537. }
  2538.  
  2539. %amount = getRandom(1, 25);
  2540.  
  2541. commandToClient(%this.client, 'centerPrint', "\c6You have commited a crime. [\c3Pickpocketing\c6]", 1);
  2542.  
  2543. %this.client.CityRP(2, $CityRP::demerits::pickpocketing);
  2544.  
  2545. messageClient(%this.client, '', "\c6You have stolen \c3$" @ %amount SPC "\c6from \c3" @ %target.client.name @ "\c6.");
  2546. messageClient(%target.client, '', "\c3" @ %this.client.name SPC "\c6has stolen \c3$" @ %amount SPC "\c6from you.");
  2547.  
  2548. CityRPData.getData(%this.client.bl_id).valueMoney += %amount;
  2549. CityRPData.getData(%target.client.bl_id).valueMoney -= %amount;
  2550.  
  2551. if(CityRPData.getData(%target.client.bl_id).valueMoney < 0)
  2552. {
  2553. CityRPData.getData(%target.client.bl_id).valueMoney = 0;
  2554. }
  2555.  
  2556. %this.client.CityRP(1);
  2557. %target.client.CityRP(1);
  2558. }
  2559. }
  2560.  
  2561. function commandToClient(%client, %command, %arg0, %arg1, %arg2, %arg3, %arg4, %arg5, %arg6, %arg7, %arg8, %arg9, %arg10)
  2562. {
  2563. if(strLwr(getTaggedString(%command)) $= strLwr("bottomPrint") && stripMLControlChars(getWord(%arg0, 0)) !$= "Money:")
  2564. {
  2565. if(%client.CityRPPrintSchedule)
  2566. {
  2567. cancel(%client.CityRPPrintSchedule);
  2568.  
  2569. %client.CityRPPrintSchedule = "";
  2570. }
  2571.  
  2572. if(!mFloor(%arg1))
  2573. {
  2574. return;
  2575. }
  2576.  
  2577. if(mFloor(%arg1))
  2578. {
  2579. %client.CityRPPrintSchedule = %client.schedule(%arg1 * 1000, "CityRP", 1);
  2580. }
  2581. }
  2582.  
  2583. parent::commandToClient(%client, %command, %arg0, %arg1, %arg2, %arg3, %arg4, %arg5, %arg6, %arg7, %arg8, %arg9, %arg10);
  2584. }
  2585.  
  2586. function CityRPBatonImage::onFire(%this, %obj, %slot)
  2587. {
  2588. parent::onFire(%this, %obj, %slot);
  2589.  
  2590. %obj.playThread(2, "armAttack");
  2591. }
  2592.  
  2593. function CityRPBatonImage::onStopFire(%this, %obj, %slot)
  2594. {
  2595. %obj.playThread(2, "root");
  2596. }
  2597.  
  2598. function CityRPBatonProjectile::onCollision(%this, %obj, %col, %fade, %pos, %normal)
  2599. {
  2600. serverPlay3D(hammerHitSound, %pos);
  2601.  
  2602. if((%col.getType() & $typeMasks::fxBrickObjectType))
  2603. {
  2604. if(isObject(%col.door))
  2605. {
  2606. %col.doorOpen();
  2607.  
  2608. %col.schedule(3000, "doorClose");
  2609. }
  2610.  
  2611. return;
  2612. }
  2613.  
  2614. if((%col.getType() & $typeMasks::playerObjectType) && isObject(%col.client))
  2615. {
  2616. if(CityRPData.getData(%col.client.bl_id).valueDemerits < $CityRP::demerits::wantedLevel)
  2617. {
  2618. commandToClient(%obj.client, 'centerPrint', "\c6You have commited a crime. [\c3Hitting Innocents\c6]", 1);
  2619.  
  2620. %obj.client.CityRP(2, $CityRP::demerits::hittingInnocents);
  2621.  
  2622. return;
  2623. }
  2624.  
  2625. if(CityRPData.getData(%col.client.bl_id).valueDemerits >= $CityRP::demerits::wantedLevel)
  2626. {
  2627. %col.client.CityRP(3, %obj.client);
  2628. }
  2629.  
  2630. return;
  2631. }
  2632. }
  2633. };
  2634.  
  2635. package RTB_Goodies
  2636. {
  2637. function serverCmdRTB_updatePrefs(%client, %prefArray)
  2638. {
  2639. parent::serverCmdRTB_updatePrefs(%client, %prefArray);
  2640.  
  2641. export("$CityRP::*","config/server/PeopleMods/CityRPPrefs.cs");
  2642. }
  2643. };
  2644.  
  2645. if(!$server::dedicated || $server::lan)
  2646. {
  2647. if(!$server::dedicated)
  2648. {
  2649. echo("CityRP does not support non-dedicated servers. Terminating.");
  2650. }
  2651.  
  2652. if($server::lan)
  2653. {
  2654. echo("CityRP does not support LAN servers. Terminating.");
  2655. }
  2656.  
  2657. eval("package CityRP{function CityRP(){return;}};");
  2658. eval("package RTB_Goodies{function serverCmdRTB_updatePrefs(){parent::serverCmdRTB_updatePrefs(%client, %prefArray);}};");
  2659.  
  2660. return;
  2661. }
  2662.  
  2663. exec("./Sassy.cs");
  2664. exec("./Hellen.cs");
  2665.  
  2666. if(!$CityRP_temp::loadedDatablocks)
  2667. {
  2668. exec("./datablocks.cs");
  2669.  
  2670. if(!$CityRP_temp::loadedDatablocks)
  2671. {
  2672. return;
  2673. }
  2674. }
  2675.  
  2676. activatePackage(CityRP);
  2677.  
  2678. CityRP(1);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement