//-------------------- // Name: CityRP // Type: RP // Version: 1.3 // Author: Jookia //-------------------- // Update 1.1 // Fixed a real estate bug. // No longer can reset while having a loan. // Updated the bank disclaimer. // Added ^cast command. // Save file is generated at start. // Added a few missing prefs. // Fixed a bug with not being able to see bottomprint when first spawned. // Update 1.2 // Added a datablock.CityRPCanSpawn variable. // Changing maps keeps minigame. // Default interest set to 1.01. // Update 1.3 // Added some RTB stuff. package CityRP { function CityRP(%mode, %data) { if(%mode == 1) { if(!isObject(CityRPData)) { new scriptObject(CityRPData) { class = Sassy; dataFile = "config/server/PeopleMods/CityRPData.dat"; }; $CityRP::jobs::name[$CityRP::jobs++] = "Civilian"; $CityRP::jobs::initialInvestment[$CityRP::jobs] = 0; $CityRP::jobs::pay[$CityRP::jobs] = 20; $CityRP::jobs::tools[$CityRP::jobs] = "hammerItem wrenchItem printGun"; $CityRP::jobs::items[$CityRP::jobs] = false; $CityRP::jobs::law[$CityRP::jobs] = false; $CityRP::jobs::pickpocket[$CityRP::jobs] = false; $CityRP::jobs::name[$CityRP::jobs++] = "Shop Keeper"; $CityRP::jobs::initialInvestment[$CityRP::jobs] = 100; $CityRP::jobs::pay[$CityRP::jobs] = 40; $CityRP::jobs::tools[$CityRP::jobs] = "hammerItem wrenchItem printGun"; $CityRP::jobs::items[$CityRP::jobs] = true; $CityRP::jobs::law[$CityRP::jobs] = false; $CityRP::jobs::pickpocket[$CityRP::jobs] = false; $CityRP::jobs::name[$CityRP::jobs++] = "Criminal"; $CityRP::jobs::initialInvestment[$CityRP::jobs] = 150; $CityRP::jobs::pay[$CityRP::jobs] = 20; $CityRP::jobs::tools[$CityRP::jobs] = "hammerItem wrenchItem printGun"; $CityRP::jobs::items[$CityRP::jobs] = false; $CityRP::jobs::law[$CityRP::jobs] = false; $CityRP::jobs::pickpocket[$CityRP::jobs] = true; $CityRP::jobs::name[$CityRP::jobs++] = "Policeman"; $CityRP::jobs::initialInvestment[$CityRP::jobs] = 150; $CityRP::jobs::pay[$CityRP::jobs] = 50; $CityRP::jobs::tools[$CityRP::jobs] = "hammerItem wrenchItem printGun CityRPBatonItem"; $CityRP::jobs::items[$CityRP::jobs] = false; $CityRP::jobs::law[$CityRP::jobs] = true; $CityRP::jobs::pickpocket[$CityRP::jobs] = false; $CityRP::prices::vehicleSpawn = 500; $CityRP::prices::addItemSpawn = 25; $CityRP::prices::jailingBonus = 25; $CityRP::prices::reset = 1000; $CityRP::prices::maxLoan = 5000; $CityRP::prices::loanPay = 25; $CityRP::demerits::demoteLevel = 250; $CityRP::demerits::wantedLevel = 50; $CityRP::demerits::pickpocketing = 60; $CityRP::demerits::hittingInnocents = 25; $CityRP::demerits::attemptedMurder = 25; $CityRP::demerits::murder = 75; $CityRP::other::tickSpeed = 5; $CityRP::other::interest = 1.01; $CityRP::other::interestTick = 5; $CityRP::other::maxInterest = 10000; $CityRP::other::commandSymbol = "^"; if(isFile("config/server/PeopleMods/CityRPPrefs.cs")) { exec("config/server/PeopleMods/CityRPPrefs.cs"); } export("$CityRP::*", "config/server/PeopleMods/CityRPPrefs.cs", false); $CityRP_temp::spawnPoints = ""; $CityRP_temp::loadedDatablocks = true; exec("config/server/PeopleMods/CityRPPrefs.cs"); if(isFile("add-ons/system_ReturnToBlockland/server.cs") && !$CityRP_temp::loadedRTBPrefs) { if(!$RTB::RTBS_ServerControl) { exec("add-ons/system_ReturnToBlockland/RTBR_ServerControl_Hook.cs"); } RTB_registerPref("Demote Demerits", "CityRP", "$CityRP::demerits::demoteLevel", "int 1 1000", "CityRP", $CityRP::demerits::demoteLevel, false, false); RTB_registerPref("Wanted Demerits", "CityRP", "$CityRP::demerits::wantedLevel", "int 1 1000", "CityRP", $CityRP::demerits::wantedLevel, false, false); RTB_registerPref("Pickpocket Demerits", "CityRP", "$CityRP::demerits::pickpocketing", "int 1 1000", "CityRP", $CityRP::demerits::pickpocketing, false, false); RTB_registerPref("Hitting Innocent Demerits", "CityRP", "$CityRP::demerits::hittingInnocents", "int 1 1000", "CityRP", $CityRP::demerits::hittingInnocents, false, false); RTB_registerPref("Attempted Murder Demerits", "CityRP", "$CityRP::demerits::attemptedMurder", "int 1 1000", "CityRP", $CityRP::demerits::attemptedMurder, false, false); RTB_registerPref("Murder Demerits", "CityRP", "$CityRP::demerits::murder", "int 1 1000", "CityRP", $CityRP::demerits::murder, false, false); RTB_registerPref("Vehicle Spawn Price", "CityRP", "$CityRP::prices::vehicleSpawn", "int 0 10000", "CityRP", $CityRP::prices::vehicleSpawn, false, true); RTB_registerPref("Base Item Spawn Price", "CityRP", "$CityRP::prices::addItemSpawn", "int 0 10000", "CityRP", $CityRP::prices::addItemSpawn, false, true); RTB_registerPref("Jailing Bonus Price", "CityRP", "$CityRP::prices::jailingBonus", "int 0 10000", "CityRP", $CityRP::prices::jailingBonus, false, true); RTB_registerPref("Reset Price", "CityRP", "$CityRP::prices::reset", "int 0 10000", "CityRP", $CityRP::prices::reset, false, true); RTB_registerPref("Maximum Loan", "CityRP", "$CityRP::prices::maxLoan", "int 0 10000", "CityRP", $CityRP::prices::maxLoan, false, true); RTB_registerPref("Loan Pay", "CityRP", "$CityRP::prices::loanPay", "int 0 10000", "CityRP", $CityRP::prices::loanPay, false, true); RTB_registerPref("Tick Speed", "CityRP", "$CityRP::other::tickSpeed", "int 1 10", "CityRP", $CityRP::other::tickSpeed, false, true); RTB_registerPref("Interest", "CityRP", "$CityRP::other::interest", "int 0 5", "CityRP", $CityRP::other::interest, false, true); RTB_registerPref("Interest Stop", "CityRP", "$CityRP::other::maxInterest", "int 0 100000", "CityRP", $CityRP::other::maxInterest, false, true); RTB_registerPref("Interest Tick", "CityRP", "$CityRP::other::interestTick", "int 0 100", "CityRP", $CityRP::other::interestTick, false, true); activatePackage(RTB_Goodies); $CityRP_temp::loadedRTBPrefs = true; } if(!CityRPData.loadedSaveFile) { CityRPData.addValue("money", 100); CityRPData.addValue("jobID", 1); CityRPData.addValue("demerits", 0); CityRPData.addValue("bankData", "0 0 0"); CityRPData.addValue("jailData", "0 0"); CityRPData.addValue("lotData", "0"); CityRPData.saveData(); } else { for(%a = 1; %a <= CityRPData.dataCount; %a++) { if(CityRPData.data[%a].valueJobID > $CityRP::jobs || CityRPData.data[%a].valueJobID < 0) { CityRPData.data[%a].valueJobID = 1; } } } registerInputEvent("fxDTSBrick", "onEnterLot", "Self fxDTSBrick\tPlayer player\tClient gameConnection\tMiniGame miniGame"); registerInputEvent("fxDTSBrick", "onLeaveLot", "Self fxDTSBrick\tPlayer player\tClient gameConnection\tMiniGame miniGame"); CityRPData.tickCount = 0; CityRPData.scheduleTick = schedule($CityRP::other::tickSpeed * 60000, false, "CityRP", 2); } else { for(%a = 1; %a <= CityRPData.dataCount; %a++) { if(CityRPData.data[%a].valueJobID > $CityRP::jobs || CityRPData.data[%a].valueJobID < 0) { CityRPData.data[%a].valueJobID = 0; } } } if(!isObject(CityRPHelp)) { new scriptObject(CityRPHelp) { class = Hellen; }; } if(!isObject(CityRPMini)) { new scriptObject(CityRPMini) { class = miniGameSO; brickDamage = true; brickRespawnTime = 10000; colorIdx = -1; enableBuilding = true; enablePainting = true; enableWand = true; fallingDamage = true; inviteOnly = true; points_plantBrick = 0; points_breakBrick = 0; points_die = -1; points_killPlayer = 1; points_killSelf = -1; playerDatablock = playerNoJet; respawnTime = 5000; selfDamage = true; playersUseOwnBricks = false; useAllPlayersBricks = true; useSpawnBricks = false; VehicleDamage = true; vehicleRespawnTime = 5000; weaponDamage = true; numMembers = 0; }; } for(%a = 1; %a <= $CityRP::jobs; %a++) { if(isObject("CityRPJob" @ %a @ "SpawnBrickData")) { continue; } datablock fxDtsBrickData(CityRPSpawnBrickData : brickSpawnPointData) { category = "PeopleMods"; subCategory = "CityRP Admin"; uiName = $CityRP::jobs::name[%a] SPC "Spawn"; specialBrickType = ""; CityRPBrickType = 3; CityRPBrickAdmin = true; spawnData = "jobSpawn" SPC %a; }; CityRPSpawnBrickData.setName("CityRPJob" @ %a @ "SpawnBrickData"); } } if(%mode == 2) { if(CityRPData.scheduleTick) { cancel(CityRPData.scheduleTick); } CityRPData.tickCount++; for(%a = 0; %a <= CityRPData.dataCount; %a++) { if(CityRPData.tickCount % $CityRP::other::interestTick == 0 && getWord(CityRPData.data[%a].valueBankData, 0) < $CityRP::other::maxInterest) { CityRPData.data[%a].valueBankData = mFloor(getWord(CityRPData.data[%a].valueBankData, 0) * $CityRP::other::interest) SPC getWords(CityRPData.data[%a].valueBankData, 1, 2); } if(!isObject(findClientByBL_ID(CityRPData.data[%a].ID))) { continue; } %client = findClientByBL_ID(CityRPData.data[%a].ID); if(getWord(CityRPData.getData(%client.bl_id).valueJailData, 1) > 0) { CityRPData.getData(%client.bl_id).valueJailData = 1 SPC getWord(CityRPData.getData(%client.bl_id).valueJailData, 1) - 1; if(getWord(CityRPData.getData(%client.bl_id).valueJailData, 1) < 1) { messageClient(%client, '', "\c6You're free."); if(isObject(%client.player)) { %client.player.delete(); %client.spawnPlayer(); } continue; } 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."); %client.CityRP(1); continue; } if($CityRP::jobs::pay[CityRPData.getData(%client.bl_id).valueJobID] > 0) { CityRPData.getData(%client.bl_id).valueMoney += $CityRP::jobs::pay[CityRPData.getData(%client.bl_id).valueJobID]; messageClient(%client, '', "\c6You have been paid \c3$" @ $CityRP::jobs::pay[CityRPData.getData(%client.bl_id).valueJobID] @ "\c6."); } if(%client.brickGroup.taxes > 0) { CityRPData.getData(%client.bl_id).valueMoney -= %client.brickGroup.taxes; if(CityRPData.getData(%client.bl_id).valueMoney < 0) { CityRPData.getData(%client.bl_id).valueMoney = 0; } messageClient(%client, '', "\c6You have paid \c3$" @ %client.brickGroup.taxes SPC "\c6in taxes."); } if(getWord(CityRPData.getData(%client.bl_id).valueBankData, 2) > 0 && CityRPData.getData(%client.bl_id).valueMoney > 0) { %paid = $CityRP::prices::loanPay; if(getWord(CityRPData.getData(%client.bl_id).valueBankData, 1) < $CityRP::prices::loanPay) { %paid = getWord(CityRPData.getData(%client.bl_id).valueBankData, 1); } if(CityRPData.getData(%client.bl_id).valueMoney < %paid) { %paid = CityRPData.getData(%client.bl_id).valueMoney; } messageClient(%client, '', "\c6You have paid \c3$" @ %paid SPC "\c6towards your loan."); CityRPData.getData(%client.bl_id).valueMoney -= %paid; if(getWord(CityRPData.getData(%client.bl_id).valueBankData, 1) - %paid < 1) { CityRPData.getData(%client.bl_id).valueBankData = getWord(CityRPData.getData(%client.bl_id).valueBankData, 0) SPC 0 SPC 0; } else { 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); } } %client.CityRP(1); } CityRPData.saveData(); CityRPData.scheduleTick = schedule($CityRP::other::tickSpeed * 60000, false, "CityRP", 2); } if(%mode == 3) { %letter = strLwr(getSubStr(%data, 0, 1)); if(%letter $= "a" || %letter $= "e" || %letter $= "i" || %letter $= "o" || %letter $= "u") { return "an"; } return "a"; } if(%mode == 4) { for(%a = 0; %a < getWordCount($CityRP_temp::spawnPoints); %a++) { %brick = getWord($CityRP_temp::spawnPoints, %a); if(strLwr(%brick.getDatablock().spawnData) !$= strLwr(%data) && getWord(strLwr(%data), 0) !$= strLwr("personalSpawn")) { continue; } if(getWord(strLwr(%data), 0) $= strLwr("personalSpawn") && (strLwr(%brick.getDatablock().spawnData) !$= strLwr("personalSpawn") || getBrickGroupFromObject(%brick).bl_id != getWord(strLwr(%data), 1))) { continue; } %possibleSpawns = (%possibleSpawns $= "") ? %brick : %possibleSpawns SPC %brick; } if(%possibleSpawns !$= "") { %spawnBrick = getWord(%possibleSpawns, getRandom(0, getWordCount(%possibleSpawns) - 1)); return vectorSub(%spawnBrick.getWorldBoxCenter(), "0 0" SPC (%spawnBrick.getDatablock().brickSizeZ - 3) * 0.1) SPC getWords(%spawnBrick.getTransform(), 3, 6); } return false; } } function fxDtsBrick::CityRP(%brick, %mode, %data) { if(%mode == 1 && !isObject(%brick.trigger)) { %datablock = %brick.getDatablock(); %scale = getWord(%datablock.triggerSize, 0) / 2 SPC getWord(%datablock.triggerSize, 1) / 2 SPC getWord(%datablock.triggerSize, 2) / 2; if(mFloor(getWord(%brick.rotation, 3)) == 90) { %scale = getWord(%datablock.triggerSize, 1) / 2 SPC getWord(%datablock.triggerSize, 0) / 2 SPC getWord(%datablock.triggerSize, 2) / 2; } %brick.trigger = new trigger() { datablock = %datablock.triggerDatablock; position = getWords(%brick.getWorldBoxCenter(), 0, 1) SPC getWord(%brick.getWorldBoxCenter(), 2) + ((getWord(%datablock.triggerSize, 2) / 4) + (%datablock.brickSizeZ * 0.1)); rotation = "1 0 0 0"; scale = %scale; 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"; parent = %brick; }; if(%brick.getDatablock().CityRPBrickType == 1) { %boxSize = getWord(%scale, 0) / 2.5 SPC getWord(%scale, 1) / 2.5 SPC getWord(%scale, 2) / 2.5; initContainerBoxSearch(%brick.trigger.getWorldBoxCenter(), %boxSize, $typeMasks::playerObjectType); while(isObject(%player = containerSearchNext())) { %brick.trigger.getDatablock().onEnterTrigger(%brick.trigger, %player); } getBrickGroupFromObject(%brick).taxes += %brick.getDatablock().taxAmount; if(isObject(getBrickGroupFromObject(%brick).client)) { getBrickGroupFromObject(%brick).client.CityRP(1); } } } if(%mode == 2 && isObject(%brick.trigger)) { for(%a = 0; %a < clientGroup.getCount(); %a++) { if(isObject(clientGroup.getObject(%a).player) && clientGroup.getObject(%a).CityRPTrigger == %brick.trigger) { %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, clientGroup.getObject(%a).player, true); } } %boxSize = getWord(%brick.trigger.scale, 0) / 2.5 SPC getWord(%brick.trigger.scale, 1) / 2.5 SPC getWord(%brick.trigger.scale, 2) / 2.5; initContainerBoxSearch(%brick.trigger.getWorldBoxCenter(), %boxSize, $typeMasks::playerObjectType); while(isObject(%player = containerSearchNext())) { %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, %player); } %brick.trigger.delete(); if(%brick.getDatablock().CityRPBrickType == 1) { getBrickGroupFromObject(%brick).taxes -= %brick.getDatablock().taxAmount; if(isObject(getBrickGroupFromObject(%brick).client)) { getBrickGroupFromObject(%brick).client.CityRP(1); } if(%brick.getName() !$= "") { %data = CityRPData.getData(getBrickGroupFromObject(%brick).bl_id).valueLotData; %newData = getWord(%data, 0) - 1; for(%a = 1; %a < getWordCount(%data); %a++) { if(%cancelNext) { %cancelNext = false; continue; } %newData = %newData SPC getWord(%data, %a); if(%a % 2 == 0) { continue; } %newBrick = "_" @ getWord(%data, %a); if(isObject(%newBrick) && %newBrick $= %brick.getName()) { %found = true; %newData = getWords(%newData, 0, getWordCount(%newData) - 2); %cancelNext = true; } } if(%found) { CityRPData.getData(getBrickGroupFromObject(%brick).bl_id).valueLotData = %newData; } } } } if(%mode == 3) { if(isObject(%data) && getWord(%data, 1)) { if(strReplace(%data.brickList, %brick, "") !$= %data.brickList) { return; } %data.brickCount++; %data.brickList = %data.brickList SPC %brick; for(%a = 0; %a < %brick.getNumUpBricks(); %a++) { %brick.getUpBrick(%a).CityRP(3, %data SPC 1); } for(%b = 0; %b < %brick.getNumDownBricks(); %b++) { %brick.getDownBrick(%b).CityRP(3, %data SPC 1); } return; } getBrickGroupFromObject(%brick).taxes -= %brick.getDatablock().taxAmount; %data.taxes += %brick.getDatablock().taxAmount; if(isObject(getBrickGroupFromObject(%brick).client)) { getBrickGroupFromObject(%brick).client.CityRP(1); } if(isObject(%data.client)) { %data.client.CityRP(1); } %dataStore = new scriptObject() { brickCount = 1; brickList = %brick; }; for(%a = 0; %a < %brick.getNumUpBricks(); %a++) { %brick.getUpBrick(%a).CityRP(3, %dataStore SPC 1); } for(%b = 0; %b < %dataStore.brickCount; %b++) { %brick = getWord(%dataStore.brickList, %b); %oldGroup = getBrickGroupFromObject(%brick); %oldGroup.remove(%brick); %data.add(%brick); if(%brick.getName() !$= "") { %name = %brick.getName(); %oldGroup.removeNTName(%name); %data.addNTName(%name); } } %dataStore.delete(); %boxSize = getWord(%brick.trigger.scale, 0) / 2.5 SPC getWord(%brick.trigger.scale, 1) / 2.5 SPC getWord(%brick.trigger.scale, 2) / 2.5; initContainerBoxSearch(%brick.trigger.getWorldBoxCenter(), %boxSize, $typeMasks::playerObjectType); while(isObject(%player = containerSearchNext())) { if(isObject(%player.client)) { %player.client.CityRP(1); } } } } function gameConnection::CityRP(%this, %mode, %data) { if(%mode == 1) { if(isObject(%this.player)) { %tag = $CityRP::jobs::name[CityRPData.getData(%this.bl_id).valueJobID]; if(getWord(CityRPData.getData(%this.bl_id).valueJailData, 1) > 0) { %tag = getWord(CityRPData.getData(%this.bl_id).valueJailData, 1) SPC "\c6Tick" @ ((getWord(CityRPData.getData(%this.bl_id).valueJailData, 1) == 1) ? "" : "s"); } %this.player.setShapeName("[" @ %tag @ "]" SPC %this.name); } %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) ? "\c6Owner: \c3" @ getBrickGroupFromObject(%this.CityRPLotTrigger.parent).name : ""); commandToClient(%this, 'bottomPrint', %this.cityRPPrint); } if(%mode == 2) { if(getWord(CityRPData.getData(%this.bl_id).valueJailData, 1) > 0) { return; } %demerits = mFloor(%data); %currentDemerits = CityRPData.getData(%this.bl_id).valueDemerits; CityRPData.getData(%this.bl_id).valueDemerits += %demerits; if(CityRPData.getData(%this.bl_id).valueDemerits >= $CityRP::demerits::demoteLevel) { CityRPData.getData(%this.bl_id).valueJailData = 1 SPC 0; if(!$CityRP::jobs::law[CityRPData.getData(%this.bl_id).valueJobID]) { return; } messageClient(%this, '', "\c6You have been demoted to" SPC CityRP(3, $CityRP::jobs::name[1]) SPC "\c3" @ $CityRP::jobs::name[1] @ "\c6."); CityRPData.getData(%this.bl_id).valueJobID = 1; %this.CityRP(1); if(isObject(%this.player)) { serverCmdunUseTool(%this); %this.player.giveDefaultEquipment(); } } } if(%mode == 3) { %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; %ticks = %rawTicks; if(%ticks > 6) { %ticks = 6; } messageAll('', "\c3" @ %data.name SPC "\c6has jailed \c3" @ %this.name SPC "\c6for \c3" @ %ticks SPC"\c6tick" @ ((%ticks == 1) ? "" : "s") @ ".", 5); commandToClient(%this, 'centerPrint', "\c3" @ %data.name SPC "\c6has jailed you for \c3" @ %ticks SPC"\c6tick" @ ((%ticks == 1) ? "" : "s") @ ".", 5); 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); CityRPData.getData(%this.bl_id).valueJailData = 1 SPC %ticks; CityRPData.getData(%this.bl_id).valueDemerits = 0; CityRPData.getData(%data.bl_id).valueMoney += $CityRP::prices::jailingBonus * %ticks; %data.CityRP(1); if($CityRP::jobs::law[CityRPData.getData(%this.bl_id).valueJobID]) { 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."); CityRPData.getData(%this.bl_id).valueJobID = 1; } if(isObject(%this.player.tempBrick)) { %this.player.tempBrick.delete(); } %this.player.delete(); %this.spawnPlayer(); } } function gameConnection::onClientEnterGame(%this) { parent::onClientEnterGame(%this); if(!isObject(CityRPData.getData(%this.bl_id))) { CityRPData.addData(%this.bl_id); } %this.CityRP(1); } function gameConnection::spawnPlayer(%this) { parent::spawnPlayer(%this); if(CityRP(4, "jobSpawn 1")) { %spawn = CityRP(4, "jobSpawn 1"); } if(CityRP(4, "jobSpawn" SPC CityRPData.getData(%this.bl_id).valueJobID)) { %spawn = CityRP(4, "jobSpawn" SPC CityRPData.getData(%this.bl_id).valueJobID); } if(CityRP(4, "personalSpawn" SPC %this.bl_id)) { %spawn = CityRP(4, "personalSpawn" SPC %this.bl_id); } if(getWord(CityRPData.getData(%this.bl_id).valueJailData, 1) > 0 && CityRP(4, "jailSpawn")) { %spawn = CityRP(4, "jailSpawn"); } if(%spawn !$= "") { %this.player.setTransform(%spawn); } %this.player.giveDefaultEquipment(); if(!isObject(CityRPMini)) { CityRP(1); } CityRPMini.addMember(%this); } function gameConnection::onDeath(%this, %killerPlayer, %killer, %damageType, %damageLoc) { if(isObject(%this.CityRPTrigger)) { %this.CityRPTrigger.getDatablock().onLeaveTrigger(%this.CityRPTrigger, %this.player); } if(isObject(%this.CityRPLotTrigger)) { %this.CityRPLotTrigger.getDatablock().onLeaveTrigger(%this.CityRPLotTrigger, %this.player); } %this.CityRP(1); if(getWord(CityRPData.getData(%this.bl_id).valueJailData, 1) < 1) { if(%this.player.currTool) { serverCmddropTool(%this, %this.player.currTool); } if(isObject(%killer) && %killer != %this) { commandToClient(%killer, 'centerPrint', "\c6You have commited a crime. [\c3Murder\c6]", 1); %killer.CityRP(2, $CityRP::demerits::murder); } } parent::onDeath(%this, %this, %killer, %damageType, %unknownA); } function serverCmdmessageSent(%client, %text) { if(getSubStr(%text, 0, 1) $= $CityRP::other::commandSymbol) { if(%client.lastCityRPCommand + 0.01 > $sim::time) { return; } %command = getWord(getSubStr(%text, 1, strLen(%text) - 1), 0); %args = getSubStr(%text, strLen(%command) + 2, strLen(%text) - 1); %lastCommand = %client.lastCityRPCommand; %client.lastCityRPCommand = $sim::time; if(%command $= "giveMoney") { %money = mFloor(getWord(%args, 0)); if(%money < 1) { messageClient(%client, '', "\c6You must enter a valid amount of money to give."); return; } if(CityRPData.getData(%client.bl_id).valueMoney - %money < 0) { messageClient(%client, '', "\c6You don't have that much money to give."); return; } if(!isObject(%client.player)) { messageClient(%client, '', "\c6Spawn first before you use this command."); return; } %target = containerRayCast(%client.player.getEyePoint(), vectorAdd(vectorScale(vectorNormalize(%client.player.getEyeVector()), 8), %client.player.getEyePoint()), $typeMasks::playerObjectType).client; if(!isObject(%target)) { messageClient(%client, '', "\c6You must be looking at and be in a reasonable distance of the player in order to give them money."); return; } messageClient(%client, '', "\c6You give \c3$" @ %money SPC "\c6to \c3" @ %target.name @ "\c6."); messageClient(%target, '', "\c3" @ %client.name SPC "\c6has given you \c3$" @ %money @ "\c6."); CityRPData.getData(%client.bl_id).valueMoney -= %money; CityRPData.getData(%target.bl_id).valueMoney += %money; %client.CityRP(1); %target.CityRP(1); return; } if(%command $= "grantMoney") { if(!%client.isAdmin) { messageClient(%client, '', "\c6You must be admin to use the this command."); return; } %money = mFloor(getWord(%args, 0)); if(%money < 1) { messageClient(%client, '', "\c6You must enter a valid amount of money to grant."); return; } if(!isObject(%client.player) && !isObject(findClientByName(getWords(%args, 1, getWordCount(%args) - 1)))) { messageClient(%client, '', "\c6Spawn first before you use this command or enter a valid player's name."); return; } if(getWords(%args, 1, getWordCount(%args) - 1) !$= "") { %target = findClientByName(getWords(%args, 1, getWordCount(%args) - 1)); } if(!isObject(%target) && isObject(%client.player)) { %target = containerRayCast(%client.player.getEyePoint(), vectorAdd(vectorScale(vectorNormalize(%client.player.getEyeVector()), 8), %client.player.getEyePoint()), $typeMasks::playerObjectType).client; } if(!isObject(%target)) { messageClient(%client, '', "\c6You must be looking at or enter the name of the player in order to grant to them."); return; } messageClient(%client, '', "\c6You grant \c3$" @ %money SPC "\c6to \c3" @ %target.name @ "\c6."); messageClient(%target, '', "\c3" @ %client.name @ "\c6 has granted you \c3$" @ %money @ "\c6."); CityRPData.getData(%target.bl_id).valueMoney += %money; %target.CityRP(1); return; } if(%command $= "deductMoney") { if(!%client.isAdmin) { messageClient(%client, '', "\c6You must be admin to use the this command."); return; } %money = mFloor(getWord(%args, 0)); if(%money < 1) { messageClient(%client, '', "\c6You must enter a valid amount of money to deduct."); return; } if(!isObject(%client.player) && !isObject(findClientByName(getWords(%args, 1, getWordCount(%args) - 1)))) { messageClient(%client, '', "\c6Spawn first before you use this command or enter a valid player's name."); return; } if(getWords(%args, 1, getWordCount(%args) - 1) !$= "") { %target = findClientByName(getWords(%args, 1, getWordCount(%args) - 1)); } if(!isObject(%target) && isObject(%client.player)) { %target = containerRayCast(%client.player.getEyePoint(), vectorAdd(vectorScale(vectorNormalize(%client.player.getEyeVector()), 8), %client.player.getEyePoint()), $typeMasks::playerObjectType).client; } if(!isObject(%target)) { messageClient(%client, '', "\c6You must be looking at or enter the name of the player in order to deduct money from them."); return; } if(CityRPData.getData(%target.bl_id).valueMoney - %money < 0) { %money = CityRPData.getData(%target.bl_id).valueMoney; } messageClient(%client, '', "\c6You deduct \c3$" @ %money SPC "\c6from \c3" @ %target.name @ "\c6."); messageClient(%target, '', "\c3" @ %client.name @ "\c6 has deducted \c3$" @ %money @ "\c6 from you."); CityRPData.getData(%target.bl_id).valueMoney -= %money; %target.CityRP(1); return; } if(%command $= "stats") { 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")); 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")); return; } if(%command $= "checkAccount") { if(!%client.isAdmin) { messageClient(%client, '', "\c6You must be admin to use the \c3" @ %command SPC "\c6command."); return; } if(!isObject(%client.player) && !isObject(findClientByName(getWords(%args, 1, getWordCount(%args) - 1)))) { messageClient(%client, '', "\c6Spawn first before you use this command."); return; } if(getWords(%args, 0, getWordCount(%args) - 1) !$= "") { %target = findClientByName(getWords(%args, 0, getWordCount(%args) - 1)); } if(!isObject(%target) && isObject(%client.player)) { %target = containerRayCast(%client.player.getEyePoint(), vectorAdd(vectorScale(vectorNormalize(%client.player.getEyeVector()), 8), %client.player.getEyePoint()), $typeMasks::playerObjectType).client; } if(!isObject(%target)) { for(%a = 0; %a < clientGroup.getCount(); %a++) { %target = clientGroup.getObject(%a); if(!isObject(CityRPData.getData(%target.bl_id))) { continue; } 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")); 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")); } return; } 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")); 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")); return; } if(%command $= "job") { if(strLwr(getWords(%args, 0, getWordCount(%args) - 1)) $= "") { messageClient(%client, '', "\c6Type \c3^help jobs\c6 to see a list of jobs."); return; } if(strLwr(getWords(%args, 0, getWordCount(%args) - 1)) $= strLwr($CityRP::jobs::name[CityRPData.getData(%client.bl_id).valueJobID])) { 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."); return; } for(%a = 1; %a <= $CityRP::jobs; %a++) { if(strLwr(getWords(%args, 0, getWordCount(%args) - 1)) $= strLwr($CityRP::jobs::name[%a])) { if($CityRP::jobs::law[%a] && getWord(CityRPData.getData(%client.bl_id).valueJailData, 0) == 1) { 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."); return; } if(mFloor($CityRP::jobs::initialInvestment[%a]) > 0) { if(CityRPData.getData(%client.bl_id).valueMoney < mFloor($CityRP::jobs::initialInvestment[%a])) { messageClient(%client, '', "\c6You need at least \c3$" @ mFloor($CityRP::jobs::initialInvestment[%a]) SPC "\c6in order to apply for this job."); return; } 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."); } else { messageClient(%client, '', "\c6You are now" SPC CityRP(3, $CityRP::jobs::name[%a]) SPC "\c3" @ $CityRP::jobs::name[%a] @ "\c6."); } if($CityRP::jobs::items[CityRPData.getData(%client.bl_id).valueJobID] == 1) { %brickGroup = "brickGroup_" @ %client.bl_id; %display = false; for(%b = 0; %b < %brickGroup.getCount(); %b++) { if(!isObject(%brickGroup.getObject(%b).item)) { continue; } %brickGroup.getObject(%b).setItem(0, (isObject(%brickGroup.client) ? %brickGroup.client : 0), true); %display = true; } if(%display) { 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."); } } CityRPData.getData(%client.bl_id).valueMoney -= mFloor($CityRP::jobs::initialInvestment[%a]); CityRPData.getData(%client.bl_id).valueJobID = %a; if(isObject(%client.player)) { serverCmdunUseTool(%client); %client.player.giveDefaultEquipment(); } %client.CityRP(1); return; } } messageClient(%client, '', "\c6Invalid job '\c3" @ getWords(%args, 0, getWordCount(%args) - 1) @ "\c6'. Type \c3^job\c6 to see a list of the jobs."); return; } if(%command $= "cast") { if(strLwr(getWord(strLwr(%args), getWordCount(%args) - 1)) $= "sandwich") { messageClient(%client, '', "\c6You cast a sandwich, but Iban takes it away from you!"); } return; } if(%command $= "help") { %section = strLwr(getWord(strLwr(%args), getWordCount(%args) - 1)); if(%section $= "admin") { if(!%client.isAdmin) { messageClient(%client, '', "\c6You must be admin to use this help section!"); } else { CityRPHelp.displayHelp(%client, "main_admin"); } return; } if(%section $= "jobs") { messageClient(%client, '', "\c6Type \c3^job\c6 then one of the jobs below to become that job."); for(%a = 1; %a <= $CityRP::jobs; %a++) { 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")); } return; } if(%section $= "lots") { messageClient(%client, '', "\c6This is a list of lots you can plant."); for(%a = 0; %a < datablockGroup.getCount(); %a++) { %datablock = datablockGroup.getObject(%a); if(%datablock.CityRPBrickType == 1) { 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); } } return; } if(%section $= "items") { messageClient(%client, '', "\c6This is a list of item prices."); for(%a = 0; %a < datablockGroup.getCount(); %a++) { %datablock = datablockGroup.getObject(%a); if((strLwr(%datablock.getClassName()) !$= strLwr("itemData") && strLwr(%datablock.getClassName()) !$= "weapon") || %datablock.uiName $= "") { continue; } if(!%datablock.CityRPCanSpawn && %datablock.CityRPCanSpawn !$= "") { continue; } %price = (isObject(%datablock.image) && isObject(%datablock.image.projectile)) ? mFloor(%datablock.image.projectile.directDamage) : 0; %price2 = (isObject(%datablock.image) && isObject(%datablock.image.projectile) && isObject(%datablock.image.projectile.explosion)) ? mFloor(%datablock.image.projectile.explosion.radiusDamage) : 0; messageClient(%client, '', "\c3" @ %datablock.uiName SPC "\c6- Price: \c3$" @ $CityRP::prices::addItemSpawn + (%price + %price2)); } return; } if(%section !$= "") { %error = CityRPHelp.displayHelp(%client, %section); if(!%error) { messageClient(%client, '', "\c6Invalid help section '\c3" @ getWord(strLwr(%args), getWordCount(%args) - 1) @ "\c6'."); } return; } CityRPHelp.displayHelp(%client, "main"); return; } if(%command $= "reset") { if(CityRPData.getData(%client.bl_id).valueMoney - $CityRP::prices::reset < 0) { messageClient(%client, '', "\c6You need at least \c3$" @ $CityRP::prices::reset SPC "\c6to do that."); return; } if(getWord(CityRPData.getData(%client.bl_id).valueBankData, 2) > 0) { messageClient(%client, '', "\c6You are still paying off your loan of \c3$" @ getWord(CityRPData.getData(%client.bl_id).valueBankData, 2) @ "\c6!"); return; } messageClient(%client, '', "\c6Your account has been reset."); CityRPData.removeData(%client.bl_id); CityRPData.addData(%client.bl_id); %client.CityRP(1); if(isObject(%client.player)) { %client.player.delete(); %client.spawnPlayer(); } return; } messageClient(%client, '', "\c6Invalid command '\c3" @ %command @ "\c6'."); %client.lastCityRPCommand = %lastCommand; return; } if(isObject(%client.player) && isObject(%client.CityRPTrigger) && isObject(%client.CityRPTrigger.parent) && %client.CityRPTrigger.parent.getDatablock().CityRPBrickType == 2) { if(%client.lastCityRPCommand + 0.01 > $sim::time) { return; } %client.CityRPTrigger.parent.getDatablock().parseData(%client.CityRPTrigger.parent, %client, "", %text); %client.lastCityRPCommand = $sim::time; return; } if(getWord(CityRPData.getData(%client.bl_id).valueJailData, 1) > 0) { messageClient(%client, '', "\c6You can't talk while in jail."); return; } parent::serverCmdmessageSent(%client, %text); } function serverCmdteamMessageSent(%client, %text) { %minigame = %client.minigame; %client.minigame = ""; parent::serverCmdteamMessageSent(%client, %text); %client.minigame = %minigame; } function serverCmdcreateMiniGame(%client) { return; } function serverCmdleaveMiniGame(%client) { return; } function serverCmddropTool(%client, %toolID) { if(getWord(CityRPData.getData(%client.bl_id).valueJailData, 1) > 0) { messageClient(%client, '', "\c6You can't drop tools while in jail."); return; } parent::serverCmddropTool(%client, %toolID); } function serverCmdsuicide(%client) { if(getWord(CityRPData.getData(%client.bl_id).valueJailData, 1) > 0) { messageClient(%client, '', "\c6You can't suicide while in jail."); return; } parent::serverCmdsuicide(%client); } function fxDtsBrick::onPlant(%brick) { parent::onPlant(%brick); if(isObject($loadingBricks_client) && !isObject($loadBrick_fileObj)) { if(%brick.getDatablock().CityRPBrickType == 1 || %brick.getDatablock().CityRPBrickType == 2) { %brick.schedule(1, "CityRP", 1); } if(%brick.getDatablock().CityRPBrickType == 3) { $CityRP_temp::spawnPoints = ($CityRP_temp::spawnPoints $= "") ? %brick : $CityRP_temp::spawnPoints SPC %brick; } return; } if(!isObject(getBrickGroupFromObject(%brick).client)) { if(%brick.getDatablock().CityRPBrickType == 1) { %brick.schedule(0, "delete"); } if(%brick.getDatablock().CityRPBrickType == 2) { %brick.schedule(0, "CityRP", 1); } if(%brick.getDatablock().CityRPBrickType == 3) { $CityRP_temp::spawnPoints = ($CityRP_temp::spawnPoints $= "") ? %brick : $CityRP_temp::spawnPoints SPC %brick; } return; } %boxSize = getWord(%brick.getDatablock().brickSizeX, 1) / 2.5 SPC getWord(%brick.getDatablock().brickSizeY, 0) / 2.5 SPC getWord(%brick.getDatablock().brickSizeZ, 2) / 2.5; if(mFloor(getWord(%brick.rotation, 3)) == 90) { %boxSize = getWord(%brick.getDatablock().brickSizeY, 1) / 2.5 SPC getWord(%brick.getDatablock().brickSizeX, 0) / 2.5 SPC getWord(%brick.getDatablock().brickSizeZ, 2) / 2.5; } %client = getBrickGroupFromObject(%brick).client; initContainerBoxSearch(%brick.getWorldBoxCenter(), %boxSize, $typeMasks::triggerObjectType); while(isObject(%potentialTrigger = containerSearchNext())) { %trigger = %potentialTrigger; if(%trigger.getDatablock() == CityRPLotTriggerData.getID()) { if(%brick.getDatablock().CityRPBrickType == 1) { %brick.schedule(0, "delete"); return; } if(getTrustLevel(%trigger.parent, %client.player) < 1) { 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); %brick.schedule(0, "delete"); return; } } } if(!%client.isAdmin && %brick.getDatablock().CityRPBrickAdmin) { commandToClient(%client, 'centerPrint', "\c3You must be admin to plant this brick!", 3); %brick.schedule(0, "delete"); return; } if(!%client.isAdmin && !isObject(%trigger) && %brick.getDatablock().CityRPBrickType != 1) { %brick.schedule(0, "delete"); return; } if(%brick.getDatablock().CityRPBrickType == 1) { if(CityRPData.getData(%client.bl_id).valueMoney < mFloor(%brick.getDatablock().initialPrice)) { messageClient(%client, '', "\c6You need at least \c3$" @ mFloor(%brick.getDatablock().initialPrice) SPC "\c6in order to plant this lot!"); %brick.schedule(0, "delete"); return; } messageClient(%client, '', "\c6You have paid \c3$" @ mFloor(%brick.getDatablock().initialPrice) @ "\c6 to plant this lot."); CityRPData.getData(%client.bl_id).valueMoney -= mFloor(%brick.getDatablock().initialPrice); } if(!isObject(CityRPData.getData(getBrickGroupFromObject(%brick).bl_id))) { CityRPData.addData(getBrickGroupFromObject(%brick).bl_id); } if(%brick.getDatablock().brickType == 2) { if(CityRPData.getData(%client.bl_id).valueMoney < mFloor($CityRP::prices::vehicleSpawn)) { messageClient(%client, '', "\c6You need at least \c3$" @ mFloor($CityRP::prices::vehicleSpawn) SPC "\c6in order to plant this vehicle spawn!"); %brick.schedule(0, "delete"); return; } messageClient(%client, '', "\c6You have paid \c3$" @ mFloor($CityRP::prices::vehicleSpawn) @ "\c6 to plant this vehicle spawn."); CityRPData.getData(%client.bl_id).valueMoney -= mFloor($CityRP::prices::vehicleSpawn); } if(%brick.getDatablock().CityRPBrickType == 1 || %brick.getDatablock().CityRPBrickType == 2) { %brick.schedule(0, "CityRP", 1); } if(%brick.getDatablock().CityRPBrickType == 3) { $CityRP_temp::spawnPoints = ($CityRP_temp::spawnPoints $= "") ? %brick : $CityRP_temp::spawnPoints SPC %brick; } %client.CityRP(1); } function fxDtsBrick::onDeath(%brick) { if(%brick.getDatablock().CityRPBrickType == 1 || %brick.getDatablock().CityRPBrickType == 2) { %brick.CityRP(2); } if(%brick.getDatablock().CityRPBrickType == 3) { if(getWord($CityRP_temp::spawnPoints, 0) == %brick) { $CityRP_temp::spawnPoints = strReplace($CityRP_temp::spawnPoints, %brick @ ((getWordCount($CityRP_temp::spawnPoints) == 1) ? "" : " "), ""); } else { $CityRP_temp::spawnPoints = strReplace($CityRP_temp::spawnPoints, " " @ %brick, ""); } } parent::onDeath(%brick); } function fxDtsBrick::onRemove(%brick) { if(%brick.getDatablock().CityRPBrickType == 1 || %brick.getDatablock().CityRPBrickType == 2) { %brick.CityRP(2); } if(%brick.getDatablock().CityRPBrickType == 3) { if(getWord($CityRP_temp::spawnPoints, 0) == %brick) { $CityRP_temp::spawnPoints = strReplace($CityRP_temp::spawnPoints, %brick @ ((getWordCount($CityRP_temp::spawnPoints) == 1) ? "" : " "), ""); } else { $CityRP_temp::spawnPoints = strReplace($CityRP_temp::spawnPoints, " " @ %brick, ""); } } parent::onRemove(%brick); } function fxDtsBrick::setName(%brick, %name) { %oldName = %brick.getName(); if(isObject(%name) && (%brick.getDatablock().CityRPBrickType == 1 || %name.getDatablock().CityRPBrickType == 1)) { %a = 2; while(isObject(%name @ %a)) { %a++; } %name = %name @ %a; parent::setName(%brick, %name); return; } parent::setName(%brick, %name); if(%name !$= "") { for(%a = 1; %a <= CityRPData.dataCount; %a++) { if(getWord(CityRPData.data[%a].valueLotData, 0) == 0) { continue; } %data = CityRPData.data[%a].valueLotData; for(%b = 1; %b < getWordCount(%data); %b++) { if(%b % 2 == 0) { continue; } if(strLwr(getWord(%data, %b)) $= strLwr(getSubStr(%name, 1, strLen(%name) - 1))) { %a = 2; while(isObject(%name @ %a)) { %a++; } %name = %name @ %a; parent::setName(%brick, %name); return; } } } } if(%oldName !$= "") { if(%brick.getName() $= "") { %data = CityRPData.getData(getBrickGroupFromObject(%brick).bl_id).valueLotData; %newData = getWord(%data, 0) - 1; for(%a = 1; %a < getWordCount(%data); %a++) { if(%cancelNext) { %cancelNext = false; continue; } %newData = %newData SPC getWord(%data, %a); if(%a % 2 == 0) { continue; } %newBrick = "_" @ getWord(%data, %a); if(isObject(%newBrick) && %newBrick $= %oldName) { %newData = getWords(%newData, 0, getWordCount(%newData) - 2); %cancelNext = true; } } CityRPData.getData(getBrickGroupFromObject(%brick).bl_id).valueLotData = %newData; } else { 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)); } } } function fxDtsBrick::setItem(%brick, %datablock, %client) { if(!isObject(%client)) { %client = getBrickGroupFromObject(%brick).client; } if(!isObject(%client)) { parent::spawnItem(%brick, %pos, %datablock, %client); return; } if(!isObject(%client) || (isObject($loadingBricks_client) && !isObject($loadBrick_fileObj)) || (isObject(%brick.item) && %brick.item.getDatablock() == %datablock)) { parent::setItem(%brick, %datablock, %client); return; } if(!%datablock.CityRPCanSpawn && %datablock.CityRPCanSpawn !$= "") { return; } if(!isObject(%datablock) || (!%client.isAdmin && $CityRP::jobs::items[CityRPData.getData(%client.bl_id).valueJobID] == 0)) { parent::setItem(%brick, 0, %client); return; } %price = (isObject(%datablock.image) && isObject(%datablock.image.projectile)) ? mFloor(%datablock.image.projectile.directDamage) : 0; %price2 = (isObject(%datablock.image) && isObject(%datablock.image.projectile) && isObject(%datablock.image.projectile.explosion)) ? mFloor(%datablock.image.projectile.explosion.radiusDamage) : 0; if((CityRPData.getData(%client.bl_id).valueMoney - ($CityRP::prices::addItemSpawn + (%price + %price2))) < 0) { messageClient(%client, '', "\c6You can't afford to spawn this item."); return; } messageClient(%client, '', "\c6You have paid \c3$" @ ($CityRP::prices::addItemSpawn + (%price + %price2)) @ "\c6 to spawn this item."); CityRPData.getData(%client.bl_id).valueMoney -= $CityRP::prices::addItemSpawn + (%price + %price2); %client.CityRP(1); parent::setItem(%brick, %datablock, %client); } function fxDtsBrick::spawnItem(%brick, %pos, %datablock, %client) { if(!isObject(%client)) { %client = getBrickGroupFromObject(%brick).client; } if(!isObject(%client)) { parent::spawnItem(%brick, %pos, %datablock, %client); return; } if(!isObject(%datablock) || (!%client.isAdmin && !$CityRP::jobs::items[CityRPData.getData(%client.bl_id).valueJobID])) { return; } if(!%datablock.CityRPCanSpawn && %datablock.CityRPCanSpawn !$= "") { return; } %price = (isObject(%datablock.image) && isObject(%datablock.image.projectile)) ? mFloor(%datablock.image.projectile.directDamage) : 0; %price2 = (isObject(%datablock.image) && isObject(%datablock.image.projectile) && isObject(%datablock.image.projectile.explosion)) ? mFloor(%datablock.image.projectile.explosion.radiusDamage) : 0; if((CityRPData.getData(%client.bl_id).valueMoney - ($CityRP::prices::addItemSpawn + (%price + %price2))) < 0) { messageClient(%client, '', "\c6You can't afford to spawn this item."); return; } messageClient(%client, '', "\c6You have paid \c3$" @ ($CityRP::prices::addItemSpawn + (%price + %price2)) @ "\c6 to spawn this item."); CityRPData.getData(%client.bl_id).valueMoney -= $CityRP::prices::addItemSpawn + (%price + %price2); %client.CityRP(1); parent::spawnItem(%brick, %pos, %datablock, %client); return; } function CityRPLotTriggerData::onEnterTrigger(%this, %trigger, %obj) { %trigger.parent.onEnterLot(%obj); if(!isObject(%obj.client)) { return; } %obj.client.CityRPLotTrigger = %trigger; %obj.client.CityRP(1); } function CityRPLotTriggerData::onLeaveTrigger(%this, %trigger, %obj) { %trigger.parent.onLeaveLot(%obj); if(!isObject(%obj.client) || %obj.client.CityRPLotTrigger != %trigger) { return; } %obj.client.CityRPLotTrigger = ""; %obj.client.CityRP(1); } function CityRPInputTriggerData::onEnterTrigger(%this, %trigger, %obj) { if(!isObject(%obj.client)) { return; } %obj.client.CityRPTrigger = %trigger; %trigger.parent.getDatablock().parseData(%trigger.parent, %obj.client, true, ""); } function CityRPInputTriggerData::onLeaveTrigger(%this, %trigger, %obj, %a) { if(!isObject(%obj.client)) { return; } if(%obj.client.CityRPTrigger == %trigger) { %trigger.parent.getDatablock().parseData(%trigger.parent, %obj.client, false, ""); %obj.client.CityRPTrigger = ""; } } function CityRPBankBrickData::parseData(%this, %brick, %client, %triggerStatus, %text) { if(%triggerStatus !$= "") { if(%triggerStatus == true && %client.stage $= "") { messageClient(%client, '', "\c6Welcome! Please type the number corresponding to the options below."); messageClient(%client, '', "\c6Also, you have \c3$" @ getWord(CityRPData.getData(%client.bl_id).valueBankData, 0) SPC "\c6in the bank."); messageClient(%client, '', "\c31 \c6- Withdraw Money"); messageClient(%client, '', "\c32 \c6- Deposit Money"); messageClient(%client, '', "\c33 \c6- Take Loan"); %client.stage = 0; } if(%triggerStatus == false && %client.stage !$= "") { messageClient(%client, '', "\c6Thanks, come again."); %client.stage = ""; } return; } %input = strLwr(%text); if(%client.stage == 1.1) { if(mFloor(%input) < 1) { messageClient(%client, '', "\c6Please enter a valid amount of money to withdraw."); return; } if(getWord(CityRPData.getData(%client.bl_id).valueBankData, 0) - mFloor(%input) < 0) { if(getWord(CityRPData.getData(%client.bl_id).valueBankData, 0) < 1) { messageClient(%client, '', "\c6You don't have that much money in the bank to withdraw."); %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0)); return; } %input = getWord(CityRPData.getData(%client.bl_id).valueBankData, 0); } messageClient(%client, '', "\c6You have withdrawn \c3$" @ mFloor(%input) @ "\c6."); 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); CityRPData.getData(%client.bl_id).valueMoney += mFloor(%input); %client.CityRP(1); %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0)); return; } if(%client.stage == 2.1) { if(mFloor(%input) < 1) { messageClient(%client, '', "\c6Please enter a valid amount of money to deposit."); return; } if(CityRPData.getData(%client.bl_id).valueMoney - mFloor(%input) < 0) { if(CityRPData.getData(%client.bl_id).valueMoney < 1) { messageClient(%client, '', "\c6You don't have that much money to deposit."); %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0)); return; } %input = CityRPData.getData(%client.bl_id).valueMoney; } messageClient(%client, '', "\c6You have deposited \c3$" @ mFloor(%input) @ "\c6!"); 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); CityRPData.getData(%client.bl_id).valueMoney -= mFloor(%input); %client.CityRP(1); %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0)); return; } if(%client.stage == 3.1) { if(mFloor(%input) < 1 || mFloor(%input) > $CityRP::prices::maxLoan) { messageClient(%client, '', "\c6Please enter a valid amount of money to loan."); return; } messageClient(%client, '', "\c6You have loaned \c3$" @ mFloor(%input) @ "\c6!"); %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0)); CityRPData.getData(%client.bl_id).valueBankData = getWord(CityRPData.getData(%client.bl_id).valueBankData, 0) SPC mFloor(%input) SPC mFloor(%input); CityRPData.getData(%client.bl_id).valueMoney += mFloor(%input); %client.CityRP(1); %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0)); return; } if(strReplace(%input, "1", "") !$= %input || strReplace(%input, "one", "") !$= %input) { %client.stage = 1.1; messageClient(%client, '', "\c6Please enter the amount of money you wish to withdraw."); return; } if(strReplace(%input, "2", "") !$= %input || strReplace(%input, "two", "") !$= %input) { %client.stage = 2.1; messageClient(%client, '', "\c6Please enter the amount of money you wish to deposit."); return; } if(strReplace(%input, "3", "") !$= %input || strReplace(%input, "three", "") !$= %input) { if(getWord(CityRPData.getData(%client.bl_id).valueBankData, 2) > 0) { messageClient(%client, '', "\c6You are still paying off your loan of \c3$" @ getWord(CityRPData.getData(%client.bl_id).valueBankData, 2) @ "\c6!"); return; } %client.stage = 3.1; messageClient(%client, '', "\c3DISCLAIMER"); messageClient(%client, '', "\c6The maximum amount of money you can loan is \c3$" @ $CityRP::prices::maxLoan @ "\c6."); messageClient(%client, '', "\c6You pay back \c3$" @ $CityRP::prices::loanPay SPC "\c6of your loan every tick."); messageClient(%client, '', "\c6You can not reset your account while having a loan out."); messageClient(%client, '', "\c6This may send you into permanent debt."); messageClient(%client, '', " "); messageClient(%client, '', "\c6Please enter the amount of money you wish to loan."); return; } messageClient(%client, '', "\c3" @ %text SPC "\c6is not a valid option!"); } function CityRPPoliceBrickData::parseData(%this, %brick, %client, %triggerStatus, %text) { if(%triggerStatus !$= "") { if(%triggerStatus == true) { messageClient(%client, '', "\c6Welcome! Please type the number corresponding to the options below."); if(CityRPData.getData(%client.bl_id).valueDemerits > 0) { messageClient(%client, '', "\c6Also, you have \c3" @ CityRPData.getData(%client.bl_id).valueDemerits SPC "\c6demerits."); } messageClient(%client, '', "\c31 \c6- View Online Criminals"); if(CityRPData.getData(%client.bl_id).valueDemerits > 0) { messageClient(%client, '', "\c32 \c6- Pay Demerits (\c3$" @ CityRPData.getData(%client.bl_id).valueDemerits * 2 @ "\c6)"); } } if(%triggerStatus == false) { messageClient(%client, '', "\c6Thanks, come again."); } return; } %input = strLwr(%text); if(strReplace(%input, "1", "") !$= %input || strReplace(%input, "one", "") !$= %input) { %noCriminals = true; for(%a = 0; %a < clientGroup.getCount(); %a++) { %criminal = clientGroup.getObject(%a); if(CityRPData.getData(%criminal.bl_id).valueDemerits >= $CityRP::demerits::wantedLevel) { messageClient(%client, '', "\c3" @ %criminal.name SPC "\c6- \c3" @ CityRPData.getData(%criminal.bl_id).valueDemerits); %noCriminals = false; } } if(%noCriminals) { messageClient(%client, '', "\c6There are no criminals online."); } %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0)); return; } if((strReplace(%input, "2", "") !$= %input || strReplace(%input, "two", "") !$= %input) && CityRPData.getData(%client.bl_id).valueDemerits > 0) { if(CityRPData.getData(%client.bl_id).valueMoney - (CityRPData.getData(%client.bl_id).valueDemerits * 2) < 0) { messageClient(%client, '', "\c6You don't have enough money to do that."); return; } messageClient(%client, '', "\c6You have paid \c3$" @ CityRPData.getData(%client.bl_id).valueDemerits * 2 @ "\c6. You now have no \c6demerits."); CityRPData.getData(%client.bl_id).valueMoney -= CityRPData.getData(%client.bl_id).valueDemerits * 2; CityRPData.getData(%client.bl_id).valueDemerits = 0; %client.CityRP(1); %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0)); return; } if((strReplace(%input, "3", "") !$= %input || strReplace(%input, "three", "") !$= %input) && CityRPData.getData(%client.bl_id).valueDemerits > 0) { if(CityRPData.getData(%client.bl_id).valueMoney - (CityRPData.getData(%client.bl_id).valueDemerits * 2) < 0) { messageClient(%client, '', "\c6You don't have enough money to do that."); return; } messageClient(%client, '', "\c6You have paid \c3$" @ CityRPData.getData(%client.bl_id).valueDemerits * 2 @ "\c6. You now have no \c6demerits."); CityRPData.getData(%client.bl_id).valueMoney -= CityRPData.getData(%client.bl_id).valueDemerits * 2; CityRPData.getData(%client.bl_id).valueDemerits = 0; %client.CityRP(1); %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0)); return; } messageClient(%client, '', "\c3" @ %text SPC "\c6is not a valid option!"); return; } function CityRPRealEstateBrickData::parseData(%this, %brick, %client, %triggerStatus, %text) { if(%triggerStatus !$= "") { if(%triggerStatus == true) { messageClient(%client, '', "\c6Welcome! Please type the number corresponding to the options below."); messageClient(%client, '', "\c31 \c6- View Lots"); messageClient(%client, '', "\c32 \c6- Buy Lot"); messageClient(%client, '', "\c33 \c6- Sell Lot"); messageClient(%client, '', "\c34 \c6- Cancel Sale"); %client.stage = 0; %client.pickedLot = ""; } if(%triggerStatus == false) { messageClient(%client, '', "\c6Thanks, come again."); %client.stage = ""; %client.pickedLot = ""; } return; } %input = strLwr(%text); if(%client.stage == 2.1) { %found = false; for(%a = 1; %a <= CityRPData.dataCount; %a++) { if(getWord(CityRPData.data[%a].valueLotData, 0) == 0 || CityRPData.data[%a].ID == %client.bl_id) { continue; } %data = CityRPData.data[%a].valueLotData; for(%b = 1; %b < getWordCount(%data); %b++) { if(%b % 2 == 0) { continue; } if(strLwr(getWord(%data, %b)) $= %input) { %found = true; %newBrick = "_" @ getWord(%data, %b); %price = getWord(%data, %b + 1); %owner = getBrickGroupFromObject(%newBrick); } } } if(!%found) { messageClient(%client, '', "\c6Invalid lot '\c3" @ %text @ "\c6'."); return; } if(CityRPData.getData(%client.bl_id).valueMoney < %price) { messageClient(%client, '', "\c6You need at least \c3$" @ %price SPC "\c6to buy this lot."); %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0)); return; } messageClient(%client, '', "\c3You have bought \c3" @ getSubStr(%newBrick, 1, strLen(%newBrick) - 1) SPC "\c6from \c3" @ %owner.name @ "\c6."); if(isObject(%owner.client)) { messageClient(%owner.client, '', "\c3" @ %client.name SPC "\c6has bought \c3" @ getSubStr(%newBrick, 1, strLen(%newBrick) - 1) SPC "\c6from you."); } CityRPData.getData(%client.bl_id).valueMoney -= %price; CityRPData.getData(%owner.bl_id).valueMoney += %price; %newBrick.CityRP(3, %client.brickGroup); %data = CityRPData.getData(%owner.bl_id).valueLotData; %newData = getWord(%data, 0) - 1; for(%a = 1; %a < getWordCount(%data); %a++) { if(%cancelNext) { %cancelNext = false; continue; } %newData = %newData SPC getWord(%data, %a); if(%a % 2 == 0) { continue; } if(strLwr(getWord(%data, %a)) == %newBrick) { %newData = getWords(%newData, 0, getWordCount(%newData) - 2); %cancelNext = true; } } CityRPData.getData(%owner.bl_id).valueLotData = %newData; %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0)); return; } if(%client.stage == 3.1) { if(%input $= "") { return; } %picked = false; %brickGroup = %client.brickGroup; for(%a = 0; %a < %brickGroup.getCount(); %a++) { if(%brickGroup.getObject(%a).getDatablock().CityRPBrickType == 1) { if(%brickGroup.getObject(%a).getName() $= "") { continue; } %brick = %brickGroup.getObject(%a); if(strLwr(getSubStr(%brick.getName(), 1, strLen(%brick.getName()) - 1)) $= %input) { 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)) { continue; } %picked = true; %client.pickedBrick = %brickGroup.getObject(%a); } } } if(!%picked) { messageClient(%client, '', "\c6Invalid lot '\c3" @ %text @ "\c6'."); return; } %client.stage = 3.2; messageClient(%client, '', "\c6Please enter the amount you wish to sell the lot for."); return; } if(%client.stage == 3.2) { %price = mFloor(%input); if(%price < 1) { messageClient(%client, '', "\c6Please enter a valid price!"); return; } messageClient(%client, '', "\c6Your offer has been put up."); if(getWord(CityRPData.getData(%client.bl_id).valueLotData, 0) > 0) { %rest = getWords(CityRPData.getData(%client.bl_id).valueLotData, 1, getWordCount(CityRPData.getData(%client.bl_id).valueLotData) - 1) @ " "; } 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; %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0)); return; } if(%client.stage == 4.1) { if(%input $= "") { return; } %picked = false; %data = CityRPData.getData(%client.bl_id).valueLotData; %newData = getWord(%data, 0) - 1; for(%a = 1; %a < getWordCount(%data); %a++) { if(%cancelNext) { %cancelNext = false; continue; } %newData = %newData SPC getWord(%data, %a); if(%a % 2 == 0) { continue; } if(strLwr(getWord(%data, %a)) $= %input) { %picked = true; %newData = getWords(%newData, 0, getWordCount(%newData) - 2); %cancelNext = true; } } if(!%picked) { messageClient(%client, '', "\c6Invalid lot '\c3" @ %text @ "\c6'."); return; } messageClient(%client, '', "\c6Your offer has been withdrawn."); CityRPData.getData(%client.bl_id).valueLotData = %newData; %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0)); return; } if(strReplace(%input, "1", "") !$= %input || strReplace(%input, "one", "") !$= %input) { %found = false; for(%a = 1; %a <= CityRPData.dataCount; %a++) { if(getWord(CityRPData.data[%a].valueLotData, 0) == 0) { continue; } %data = CityRPData.data[%a].valueLotData; for(%b = 1; %b < getWordCount(%data); %b++) { if(%b % 2 == 0) { continue; } %newBrick = "_" @ getWord(%data, %b); if(isObject(%newBrick)) { %found = true; 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); } } } if(!%found) { messageClient(%client, '', "\c6There are no lots to display."); } %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0)); return; } if((strReplace(%input, "2", "") !$= %input || strReplace(%input, "two", "") !$= %input)) { messageClient(%client, '', "\c6Please enter the lot which you wish to buy."); %client.stage = 2.1; return; } if((strReplace(%input, "3", "") !$= %input || strReplace(%input, "three", "") !$= %input)) { %nameLecture = true; %brick404 = true; %brickGroup = %client.brickGroup; for(%a = 0; %a < %brickGroup.getCount(); %a++) { if(%brickGroup.getObject(%a).getDatablock().CityRPBrickType == 1) { %brick = %brickGroup.getObject(%a); 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)) { continue; } %brick404 = false; if(%brickGroup.getObject(%a).getName() !$= "") { %brick = %brickGroup.getObject(%a); %nameLecture = false; messageClient(%client, '', "\c6" @ getSubStr(%brick.getName(), 1, strLen(%brick.getName()) - 1) SPC "\c6- \c3" @ %brick.getDatablock().uiName); } } } if(%brick404) { messageClient(%client, '', "\c6There are no lots to display."); %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0)); return; } if(%nameLecture) { messageClient(%client, '', "\c6You must give a name to one of your lots!"); %brick.trigger.getDatablock().onLeaveTrigger(%brick.trigger, (isObject(%client.player) ? %client.player : 0)); return; } messageClient(%client, '', "\c6Please enter the name of the lot you wish to sell."); %client.stage = 3.1; return; } if((strReplace(%input, "4", "") !$= %input || strReplace(%input, "four", "") !$= %input)) { %data = CityRPData.getData(%client.bl_id).valueLotData; %found = false; for(%a = 1; %a < getWordCount(%data); %a++) { if(%a % 2 == 0) { continue; } %found = true; if(isObject("_" @ getWord(%data, %a))) { %brick = "_" @ getWord(%data, %a); messageClient(%client, '', "\c6" @ getWord(%data, %a) SPC "\c6- \c3" @ %brick.getDatablock().uiName); } else { messageClient(%client, '', "\c6" @ getWord(%data, %a) SPC "\c6- \c3Unknown Lot Type"); } } if(!%found) { messageClient(%client, '', "\c6There are no lots to display."); return; } messageClient(%client, '', "\c6Please enter the name of the lot you wish to withdraw from sales."); %client.stage = 4.1; return; } messageClient(%client, '', "\c3" @ %text SPC "\c6is not a valid option!"); return; } function fxDTSBrick::onEnterLot(%brick, %obj) { $inputTarget_self = %brick; $inputTarget_client = %obj.client; $inputTarget_player = %obj.client.player; $inputTarget_miniGame = (isObject(getMiniGameFromObject(%obj.client))) ? getMiniGameFromObject(%obj.client) : 0; %brick.processInputEvent("OnEnterLot", %obj.client); } function fxDTSBrick::onLeaveLot(%brick, %obj) { $inputTarget_self = %brick; $inputTarget_client = %obj.client; $inputTarget_player = %obj.client.player; $inputTarget_miniGame = (isObject(getMiniGameFromObject(%obj.client))) ? getMiniGameFromObject(%obj.client) : 0; %brick.processInputEvent("OnLeaveLot", %obj.client); } function weapon::onPickup(%this, %item, %obj) { parent::onPickup(%this, %item, %obj); if(isObject(%item.spawnBrick)) { %item.spawnBrick.setItem(0, ((isObject(getBrickGroupFromObject(%item.spawnBrick).client)) ? getBrickGroupFromObject(%item.spawnBrick).client : 0), true); } } function itemData::onPickup(%this, %item, %obj) { parent::onPickup(%this, %item, %obj); if(isObject(%item.spawnBrick)) { %item.spawnBrick.setItem(0, ((isObject(getBrickGroupFromObject(%item.spawnBrick).client)) ? getBrickGroupFromObject(%item.spawnBrick).client : 0), true); } } function player::playThread(%this, %slot, %thread) { if(%thread $= "armReadyRight" && getWord(CityRPData.getData(%this.client.bl_id).valueJailData, 1) > 0) { return; } parent::playThread(%this, %slot, %thread); } function player::mountImage(%this, %datablock, %slot) { if(getWord(CityRPData.getData(%this.client.bl_id).valueJailData, 1) > 0) { return; } parent::mountImage(%this, %datablock, %slot); } function player::giveDefaultEquipment(%this) { for(%a = 0; %a < %this.getDatablock().maxTools; %a++) { if(%a > getWordCount($CityRP::jobs::tools[CityRPData.getData(%this.client.bl_id).valueJobID]) - 1) { %this.tool[%a] = ""; messageClient(%this.client, 'MsgItemPickup', "", %a, ""); continue; } %this.tool[%a] = nameToID(getWord($CityRP::jobs::tools[CityRPData.getData(%this.client.bl_id).valueJobID], %a)); messageClient(%this.client, 'MsgItemPickup', "", %a, nameToID(getWord($CityRP::jobs::tools[CityRPData.getData(%this.client.bl_id).valueJobID], %a))); } %this.maxWeapons = %this.getDatablock().maxTools; } function player::setDatablock(%this, %datablock) { if(%datablock != CityRPMini.playerDatablock.getID()) { return; } parent::setDatablock(%this, %datablock); } function player::damage(%this, %obj, %pos, %damage, %damageType) { 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) { %client = ((%this.getType() & $typeMasks::vehicleObjectType) && isObject(%obj.getControllingClient())) ? %obj.getControllingClient() : %obj.client; if(%this.getDamageLevel() + %damage < %this.getDatablock().maxDamage) { commandToClient(%client, 'centerPrint', "\c6You have commited a crime. [\c3Attempted Murder\c6]", 1); %client.CityRP(2, $CityRP::demerits::attemptedMurder); } } parent::damage(%this, %obj, %pos, %damage, %damageType); } function player::activateStuff(%this) { parent::activateStuff(%this); %target = containerRayCast(%this.getEyePoint(), vectorAdd(vectorScale(vectorNormalize(%this.getEyeVector()), 8), %this.getEyePoint()), $typeMasks::all); 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) { %this.lastPickpocket = $sim::time; if(getRandom(0, 1)) { return; } %amount = getRandom(1, 25); commandToClient(%this.client, 'centerPrint', "\c6You have commited a crime. [\c3Pickpocketing\c6]", 1); %this.client.CityRP(2, $CityRP::demerits::pickpocketing); messageClient(%this.client, '', "\c6You have stolen \c3$" @ %amount SPC "\c6from \c3" @ %target.client.name @ "\c6."); messageClient(%target.client, '', "\c3" @ %this.client.name SPC "\c6has stolen \c3$" @ %amount SPC "\c6from you."); CityRPData.getData(%this.client.bl_id).valueMoney += %amount; CityRPData.getData(%target.client.bl_id).valueMoney -= %amount; if(CityRPData.getData(%target.client.bl_id).valueMoney < 0) { CityRPData.getData(%target.client.bl_id).valueMoney = 0; } %this.client.CityRP(1); %target.client.CityRP(1); } } function commandToClient(%client, %command, %arg0, %arg1, %arg2, %arg3, %arg4, %arg5, %arg6, %arg7, %arg8, %arg9, %arg10) { if(strLwr(getTaggedString(%command)) $= strLwr("bottomPrint") && stripMLControlChars(getWord(%arg0, 0)) !$= "Money:") { if(%client.CityRPPrintSchedule) { cancel(%client.CityRPPrintSchedule); %client.CityRPPrintSchedule = ""; } if(!mFloor(%arg1)) { return; } if(mFloor(%arg1)) { %client.CityRPPrintSchedule = %client.schedule(%arg1 * 1000, "CityRP", 1); } } parent::commandToClient(%client, %command, %arg0, %arg1, %arg2, %arg3, %arg4, %arg5, %arg6, %arg7, %arg8, %arg9, %arg10); } function CityRPBatonImage::onFire(%this, %obj, %slot) { parent::onFire(%this, %obj, %slot); %obj.playThread(2, "armAttack"); } function CityRPBatonImage::onStopFire(%this, %obj, %slot) { %obj.playThread(2, "root"); } function CityRPBatonProjectile::onCollision(%this, %obj, %col, %fade, %pos, %normal) { serverPlay3D(hammerHitSound, %pos); if((%col.getType() & $typeMasks::fxBrickObjectType)) { if(isObject(%col.door)) { %col.doorOpen(); %col.schedule(3000, "doorClose"); } return; } if((%col.getType() & $typeMasks::playerObjectType) && isObject(%col.client)) { if(CityRPData.getData(%col.client.bl_id).valueDemerits < $CityRP::demerits::wantedLevel) { commandToClient(%obj.client, 'centerPrint', "\c6You have commited a crime. [\c3Hitting Innocents\c6]", 1); %obj.client.CityRP(2, $CityRP::demerits::hittingInnocents); return; } if(CityRPData.getData(%col.client.bl_id).valueDemerits >= $CityRP::demerits::wantedLevel) { %col.client.CityRP(3, %obj.client); } return; } } }; package RTB_Goodies { function serverCmdRTB_updatePrefs(%client, %prefArray) { parent::serverCmdRTB_updatePrefs(%client, %prefArray); export("$CityRP::*","config/server/PeopleMods/CityRPPrefs.cs"); } }; if(!$server::dedicated || $server::lan) { if(!$server::dedicated) { echo("CityRP does not support non-dedicated servers. Terminating."); } if($server::lan) { echo("CityRP does not support LAN servers. Terminating."); } eval("package CityRP{function CityRP(){return;}};"); eval("package RTB_Goodies{function serverCmdRTB_updatePrefs(){parent::serverCmdRTB_updatePrefs(%client, %prefArray);}};"); return; } exec("./Sassy.cs"); exec("./Hellen.cs"); if(!$CityRP_temp::loadedDatablocks) { exec("./datablocks.cs"); if(!$CityRP_temp::loadedDatablocks) { return; } } activatePackage(CityRP); CityRP(1);