Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @name InfiniBlox
- @inputs
- @outputs
- @persist [Loc BoxSize]:vector [AE C O New Vtx]:entity X [LSLExp Resources BlockNames Mats Sounds Bedrock InTNTRange]:array
- @persist [BlockModel]:string BaseL BaseW BBB BB B Row BBY BreakInt Exp Q
- @persist BuildInt Num Pick Axe BBT
- interval(30)
- if(first() | dupefinished()){
- runOnChat(1)
- Axe=1
- Pick=1
- BBB=1
- BaseL=5
- BaseW=6
- BlockModel="models/hunter/blocks/cube1x1x1.mdl"
- AE=propSpawn(BlockModel,1)
- C=propSpawn(BlockModel,entity():toWorld(vec(0,0,AE:boxSize():z()/2)),entity():angles():setPitch(0),1)
- BoxSize=C:boxSize()
- propSpawn(BlockModel,C:toWorld(vec(BoxSize:x()*((B/20)-0.025*(B/20)),0,BoxSize:z())),C:angles(),1):setMaterial("models/props_wasteland/rockcliff02b")
- AE:propDelete()
- O=owner()
- holoCreate(1,O:toWorld(vec(25,10,40)))
- holoAng(1,O:eyeAngles())
- holoParentAttachment(1,O,"chest")
- holoAlpha(1,0)
- X=1
- Mats[1,string]="models/props_canal/metalwall005b",BlockNames[1,string]="Metal"
- Mats[2,string]="models/props_wasteland/rockcliff02b",BlockNames[2,string]="Rock"
- Mats[3,string]="models/props_combine/health_charger_glass",BlockNames[3,string]="Glass"
- Mats[4,string]="models/props/CS_militia/roofbeams01",BlockNames[4,string]="Wood"
- Mats[5,string]="models/props_foliage/tree_deciduous_01a_trunk",BlockNames[5,string]="Tree"
- Mats[6,string]="brick/brick_model",BlockNames[6,string]="Brick"
- Mats[7,string]="models/props_wasteland/dirtwall001a",BlockNames[7,string]="Dirt"
- Mats[8,string]="phoenix_storms/barrel_fps",BlockNames[8,string]="TNT"
- Mats[9,string]="models/props_c17/furnituremetal001a",BlockNames[9,string]="Sand"
- Sounds[1,string]="physics/metal/metal_barrel_impact_soft4.wav"
- Sounds[2,string]="physics/concrete/concrete_impact_hard3.wav"
- Sounds[3,string]="physics/glass/glass_impact_soft3.wav"
- Sounds[4,string]="physics/wood/wood_crate_impact_soft2.wav"
- Sounds[5,string]="physics/wood/wood_crate_impact_soft2.wav"
- Sounds[6,string]="physics/concrete/rock_impact_hard1.wav"
- Sounds[7,string]="physics/concrete/rock_impact_soft1.wav"
- Sounds[8,string]="physics/metal/metal_barrel_impact_soft4.wav"
- Sounds[9,string]="physics/surfaces/sand_impact_bullet3.wav"
- C:setMaterial("models/props_debris/plasterwall009d")
- print("Welcome To InfiniBlox, made by Chicken. :D Take out your crowbar once your world has been created and use Mouse 1, Mouse 2, Use and Reload key to create and remove blocks and to change their materials! Type /conversions to see material conversions.")
- }
- if(BBB){
- BB+=0.5
- if(BB/20<=max(BaseL,BaseW)){
- for(B=0,max(BaseL,BaseW)*20,20){
- if(BB==B){
- if(BB/20<=BaseL-1){
- propSpawn(BlockModel,entity():toWorld(vec(BoxSize:x()*((B/20)-0.025*(B/20)),0,BoxSize:z()/2)),C:angles(),1):setMaterial("models/props_debris/plasterwall009d")
- propSpawn(BlockModel,entity():toWorld(vec(BoxSize:x()*((B/20)-0.025*(B/20)),0,BoxSize:z()*1.499)),C:angles(),1):setMaterial("models/props_wasteland/rockcliff02b")
- }
- if(BB/20<=BaseW-1){
- Bedrock[BB/20,entity]=propSpawn(BlockModel,entity():toWorld(vec(0,BoxSize:y()*((B/20)-0.025*(B/20)),BoxSize:z()/2)),C:angles(),1)
- Bedrock[BB/20,entity]:setMaterial("models/props_debris/plasterwall009d")
- propSpawn(BlockModel,Bedrock[BB/20,entity]:toWorld(vec(0,0,BoxSize:z())),C:angles(),1):setMaterial("models/props_wasteland/rockcliff02b")
- }
- }
- }
- }else{
- if(BaseW>1){
- BBY=1
- Row=1
- }
- BBB=0
- BB=0
- }
- }elseif(BBY){
- if(BaseW>Row & BB/20>=BaseL-1){
- Row++
- BB=0
- }
- BB+=0.5
- if(BB/20<=BaseL-1){
- for(B=0,BaseL*20,20){
- if(BB==B & Bedrock[Row,entity]){
- propSpawn(BlockModel,Bedrock[Row,entity]:toWorld(vec(BoxSize:x()*((B/20)-0.025*(B/20)),0,0)),Bedrock[Row,entity]:angles(),1):setMaterial("models/props_debris/plasterwall009d")
- propSpawn(BlockModel,Bedrock[Row,entity]:toWorld(vec(BoxSize:x()*((B/20)-0.025*(B/20)),0,BoxSize:z())),Bedrock[Row,entity]:angles(),1):setMaterial("models/props_wasteland/rockcliff02b")
- }
- }
- }
- if(Row>Bedrock:count()){
- BBY=0
- BBT=1
- BB=0
- Row=1
- }
- }elseif(BBT){
- BB+=0.5
- if(BB/20>=BaseL & BaseW+1>Row){
- propSpawn(BlockModel, Bedrock[Row,entity]:toWorld(vec(0,0,BoxSize:z()*2)),C:angles(),1):setMaterial("models/props_wasteland/dirtwall001a")
- Row++
- BB=0
- }
- for(B=0,BaseL*20,20){
- if(BB==B & Bedrock[Row,entity]){
- propSpawn(BlockModel, Bedrock[Row,entity]:toWorld(vec(BoxSize:x()*((B/20)-0.025*(B/20)),0,BoxSize:z()*2)),Bedrock[Row,entity]:angles(),1):setMaterial("models/props_wasteland/dirtwall001a")
- if(Row==BaseW-1){
- propSpawn(BlockModel, Bedrock[Row,entity]:toWorld(vec(BoxSize:x()*((B/20)-0.025*(B/20)),-(BoxSize:y()*(BaseW-1))+(0.025*(BaseW-1)*BoxSize:y()),BoxSize:z()*2)),Bedrock[Row,entity]:angles(),1):setMaterial("models/props_wasteland/dirtwall001a")
- }
- }
- }
- if(Row==BaseW-1 & BB/20==BaseL-1){
- BBT=0
- propSpawn("models/props_foliage/tree_deciduous_03a.mdl",C:toWorld(vec(0,0,BoxSize:z())*2.5),C:angles(),1)
- propSpawn("models/props_wasteland/rockgranite02b.mdl",Bedrock[1,entity]:toWorld(vec(0,0,BoxSize:z()*3)),C:angles(),1)
- }
- }else{
- if(!C){selfDestruct()}
- if(O:weapon():type()=="weapon_crowbar"){
- AE=O:aimEntity()
- Loc=round(AE:toLocal(O:aimPos()))
- if(AE:model()==BlockModel){
- if(O:shootPos():distance(AE:pos())<300){
- if(O:keyAttack2() & Resources[X,number]>0){
- BuildInt++
- if(changed(O:keyAttack2())|BuildInt>7){
- propSpawnEffect(0)
- if(abs(Loc:x())==round((BoxSize/2):x()) & AE:getMaterial()!="models/props_debris/plasterwall009d"){
- New=propSpawn(BlockModel,AE:toWorld(Loc:setY(0):setZ(0)*1.975),AE:angles(),1)
- }elseif(abs(Loc:y())==round((BoxSize/2):y())&AE:getMaterial()!="models/props_debris/plasterwall009d"){
- New=propSpawn(BlockModel,AE:toWorld(Loc:setX(0):setZ(0)*1.975),AE:angles(),1)
- }elseif(abs(Loc:z())==round((BoxSize/2):z())){
- New=propSpawn(BlockModel,AE:toWorld(Loc:setX(0):setY(0)*1.975),AE:angles(),1)
- }
- New:setMaterial(Mats[X,string])
- soundPurge()
- if((owner():shootPos()-vec(0,0,BoxSize:z()-35)):distance(New:pos())<BoxSize:z()){
- New:propDelete()
- }else{
- Resources[X,number]=Resources[X,number]-1
- if(Resources[X,number]<0){Resources[X,number]=0}
- New:soundPlay(1,0,Sounds[X,string])
- }
- BuildInt=0
- }
- }
- if(O:keyAttack1()){
- BreakInt++
- if(BreakInt>25){
- if(AE:getMaterial()!="models/props_debris/plasterwall009d"){
- if(AE:getMaterial()=="phoenix_storms/barrel_fps"){
- propSpawn("models/props_c17/oildrum001_explosive.mdl",AE:pos(),AE:angles(),1):propBreak()
- findInSphere(AE:pos(),50)
- findIncludeModel(BlockModel)
- InTNTRange=findToArray()
- for(Exp=1,InTNTRange:count()){
- if(InTNTRange[Exp,entity]:getMaterial()!="models/props_debris/plasterwall009d" & InTNTRange[Exp,entity]:model()==BlockModel){
- InTNTRange[Exp,entity]:propDelete()
- }
- }
- }
- soundStop(0)
- AE:soundPlay(0,3,"physics/concrete/concrete_break3.wav")
- AE:propDelete()
- BreakInt=0
- }
- }
- }else{BreakInt=0}
- }
- }elseif(O:pos():distance(AE:pos())<300 & O:keyAttack1()){
- if(AE:model()=="models/props_foliage/tree_deciduous_03a.mdl"){
- Resources[5,number]=Resources[5,number]+0.25*Axe
- }
- if(AE:model()=="models/props_wasteland/rockgranite02b.mdl"){
- Random=randint(10)
- if(Random<5){
- Resources[2,number]=Resources[2,number]+0.5*Pick
- }elseif(Random<8){
- Resources[9,number]=Resources[9,number]+0.5*Pick
- }elseif(Random<10){
- Resources[7,number]=Resources[7,number]+0.5*Pick
- }
- }
- }
- if(changed(O:keyReload()) & O:keyReload()){
- X++
- if(X>Mats:count()){
- X=1
- }
- }
- if(changed(O:keyUse()) & O:keyUse()){
- X--
- if(X<1){
- X=Mats:count()
- }
- }
- print(4,BlockNames[X,string]+": "+round(Resources[X,number]):toString())
- holoAlpha(1,255)
- holoMaterial(1,Mats[X,string])
- if(chatClk(O)){
- LSLExp=O:lastSaid():lower():explode(" ")
- if(LSLExp[1,string]=="/craft"){
- hideChat(1)
- Num=LSLExp[2,string]:toNumber()
- if(LSLExp[3,string]=="wood"){
- Resources[4,number]=Resources[4,number]+clamp(Num,0,Resources[5,number])
- Resources[5,number]=Resources[5,number]-clamp(Num,0,Resources[5,number])
- }
- if(LSLExp[3,string]=="metal"){
- Resources[1,number]=Resources[1,number]+clamp(Num,0,Resources[2,number]/4)
- Resources[2,number]=Resources[2,number]-clamp(Num*4,0,Resources[2,number])
- }
- if(LSLExp[3,string]=="glass"){
- Resources[3,number]=Resources[3,number]+clamp(Num,0,Resources[9,number])
- Resources[9,number]=Resources[9,number]-clamp(Num,0,Resources[9,number])
- }
- if(LSLExp[3,string]=="brick"){
- Resources[6,number]=Resources[6,number]+clamp(Num,0,Resources[2,number]/3)
- Resources[2,number]=Resources[2,number]-clamp(Num*3,0,Resources[2,number])
- }
- if(LSLExp[3,string]=="tnt"){
- Resources[8,number]=Resources[8,number]+clamp(Num,0,Resources[1,number]/10)
- Resources[1,number]=Resources[1,number]-clamp(Num*10,0,Resources[1,number])
- }
- if(LSLExp[2,string]=="pick"){
- if(Resources[4,number]>=25 & Resources[1,number]>=15){
- Resources[4,number]=Resources[4,number]-25
- Resources[1,number]=Resources[1,number]-15
- print("Crafted! Rock-mining time lowered.")
- Pick=2
- }else{
- print("Insufficient Materials.")
- }
- }
- if(LSLExp[2,string]=="axe"){
- if(Resources[4,number]>=20 & Resources[1,number]>=10){
- Resources[4,number]=Resources[4,number]-20
- Resources[1,number]=Resources[1,number]-10
- print("Crafted! Tree-Chopping time lowered.")
- Axe=2
- }else{
- print("Insufficient Materials.")
- }
- }
- }elseif(LSLExp[1,string]=="/conversions"){
- hideChat(1)
- if(concmd("echo __CONVERSIONS__")){
- hint("Conversions Printed To Console",10)
- concmd("echo To Convert, type /craft quantityNum blockType")
- concmd("echo 1 Tree -> 1 Wood")
- concmd("echo 4 Rock -> 1 Metal")
- concmd("echo 1 Sand -> 1 Glass")
- concmd("echo 3 Rock -> 1 Brick")
- concmd("echo 10 Metal -> 1 TNT")
- concmd("echo 25 Wood & 15 Metal -> Mining Pick")
- concmd("echo 20 Wood & 10 Metal -> Axe")
- }else{
- print("Type 'wire_expression2_concmd 1' in console and try again.")
- }
- }
- }
- }else{
- holoAlpha(1,0)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement