Охуетительный тред уровня Эдитора.
Бросаем сюда свой код, который дропнули, а его доделывают или добавляют своё.
Скрытый текст
Содержимое спойлера отсутствует в сохранённом тексте.
/* Stuff dirs Pipe pressure Source pressure type = (impulse, constant) Reciever
Pipenet sources recievers pipes splits mixpoints tmp parent reagents
Pipenet controller pipenets pipenets to update
NORTH - 1 SOUTH - 2 EAST - 4 WEST - 8 */
//var/datum/pipenet_controller/PNC = new
/obj/liquids var/list/flow_dirs = list(1,2,4,8)
pipe pipe_3 flow_dirs = list(1,2) pipe_5 flow_dirs = list(1,4) pipe_9 flow_dirs = list(1,8) pipe_6 flow_dirs = list(2,4) pipe_10 flow_dirs = list(2,8) pipe_12 flow_dirs = list(4,8)
#define IMPULSE 1 #define NONIMPULSE 2 /IMPULSE will add REAGENTS to the pipenet sometimes, NONIMPULSE will SET REAGENTS in the pipenet constantly/ source var/pressure = 0 var/work_type = NONIMPULSE
reciever
/datum mixpoint var/list/datum/pipenet/from_net = list() var/datum/pipenet/to_net var/obj/liquids/pipe/place
New(var/obj/liquids/pipe/loc, var/datum/pipenet/a, var/list/datum/pipenet/b) ..() place = loc to_net = a from_net = b
proc/process() var/max_pressure = 0 var/datum/pipenet/basis_net for (var/datum/pipenet/X in from_net) if (X.pressure > max_pressure) basis_net = X max_pressure = X.pressure if (!place.reagents) place.reagents = place.create_reagents(2000) place.flags |= NOREACT for (var/datum/pipenet/X in from_net) X.reagents.update_total() var/dif = X.pressure / basis_net.pressure for (var/datum/reagent/Y in X.reagents) var/amount_of = X.reagents.get_reagent_amount(Y) var/to_trans = amount_of * dif X.reagents.trans_to (place, to_trans) place.flags &= NOREACT place.reagents.handle_reactions() if (place) to_net.reagents = place.reagents
split var/datum/pipenet/from_net var/list/datum/pipenet/to_net = list()
New(var/datum/pipenet/b, var/list/datum/pipenet/a) ..() to_net = a from_net = b
proc/process() var/am = to_net.len
for (var/datum/pipenet/X in to_net) X.pressure = from_net.pressure / am from_net.reagents.update_total() var/total = from_net.reagents.total_volume for (var/datum/reagent/Y in from_net.reagents) var/amount_of = from_net.reagents.get_reagent_amount(Y) from_net.reagents.trans_to(X, amount_of / am) from_net.pressure = 0
pipenet var/list/obj/liquids source/sources = list() recievers/recievers = list() pipe/pipes = list()
var/list/datum split/splits = list() mixpoint/mixpoints = list()
var/tmp/./parent
var/pressure = 0
var/datum/reagents/reagents = new (INFINITY)
Таки трубопровод. Напишите трубоконтроллер.
Скрытый текст
Содержимое спойлера отсутствует в сохранённом тексте.
//True-holodeck. V2.0 /obj/effect/landmark/SP
/area/cyber_space icon_state = "Holodeck" luminosity = 1 requires_power = 0 var/holo = 0 //Real? Enter(stupid, hisloc) if (!holo) //WTF if (!istype(stupid, /mob/dead/observer)) del(stupid) return 0 if (!istype(stupid, /mob/living/carbon/human/avatar) || !istype(stupid, /mob/dead/observer)) stupid << "\blue You can't do that shit, bro, you can't." return 0 return 1
New() ..() if (type == "/area/cyber_space") del(src) //Abstract class simulation.
/area/cyber_space/place var/obj/structure/stool/bed/holo_bed/isTakenBy = null var/mob/living/carbon/human/avatar/owner = null
proc/process() if (isTakenBy && owner && owner in src) spawn(1) .() return //Something wrong disappear()
proc/disappear() if (owner) owner.death() for (var/atom/A in src) if (!istype(A, /area)) del(A) //Everything except area. isTakenBy = null owner = null
proc/appear(var/test, var/obj/structure/stool/bed/holo_bed/user, var/mob/living/toSend) disappear() var/area/cyber_space/chosen switch(test) if ("Enginnering") for (var/area/cyber_space/eng/E in world) if (!E.holo) //Do not take zones, that using already. chosen = E if ("Medicine") for (var/area/cyber_space/med/E in world) if (!E.holo) chosen = E if ("Chemistry") for (var/area/cyber_space/chem/E in world) if (!E.holo) chosen = E if ("Solar") for (var/area/cyber_space/solar/E in world) if (!E.holo) chosen = E if ("Singularity") for (var/area/cyber_space/sing/E in world) if (!E.holo) chosen = E if ("Bar") for (var/area/cyber_space/bar/E in world) if (!E.holo) chosen = E if ("Virology") for (var/area/cyber_space/virus/E in world) if (!E.holo) chosen = E holocopy(chosen, src, 1) var/obj/effect/landmark/SP/S = locate(/obj/effect/landmark/SP) in src owner = create_avatar(toSend, S) isTakenBy = user process() return owner
/area/cyber_space/med
/area/cyber_space/eng
/area/cyber_space/eng/apc_test requires_power = 1 luminosity = 0
/area/cyber_space/chem
/area/cyber_space/solar
/area/cyber_space/sing
/area/cyber_space/virus
/area/cyber_space/bar
/proc/DOb(var/atom/alpha, var/turf/place) if (isturf(place)) var/atom/beta = new alpha.type(place) for(var/V in beta.vars) if(!(V in list("type","loc","locs","vars", "parent", "parent_type","verbs","ckey","key","x","y","z", "contents"))) beta.vars[V] = alpha.vars[V] return beta
/proc/holocopy (var/area/from_area, var/area/to_area, delay) var/fmx = world.maxx var/fmy = world.maxy var/tmx = world.maxx var/tmy = world.maxy var/fmax = 0 var/fmay = 0 var/fz = 0 var/tz = 0 for (var/turf/T in from_area) if (T.x < fmx) fmx = T.x if (T.y < fmy) fmy = T.y if (T.x > fmax) fmax = T.x if (T.y > fmay) fmay = T.y fz = T.z
for (var/turf/T in to_area) if (T.x < tmx) tmx = T.x if (T.y < tmy) tmy = T.y tz = T.z
var/x_off = tmx - fmx var/y_off = tmy - fmy
for (var/turf/FT in block(locate(fmx,fmy,fz), locate(fmax,fmay,fz))) var/turf/TT = locate(FT.x + x_off, FT.y + y_off, tz) //To_zone Turf if (FT && TT) //Sanity if ( (FT in from_area) && (TT in to_area) ) DOb(FT, TT)
for (var/turf/FT in block(locate(fmx,fmy,fz), locate(fmax,fmay,fz))) var/turf/TT = locate(FT.x + x_off, FT.y + y_off, tz) //To_zone Turf if (FT && TT) //Sanity if ( (FT in from_area) && (TT in to_area) ) for (var/obj/alpha in FT) DOb(alpha, TT)
for (var/mob/living/alpha in FT) DOb(alpha, TT) sleep(delay)
Скрытый текст
Содержимое спойлера отсутствует в сохранённом тексте.
/obj/structure/stool/bed/holo_bed name = "Bed with sensors" var/forming_up = 0 buckle_mob(mob/M as mob, mob/user as mob) ..() if (!M:handcuffed) var/ask = input(M, "Do you want to put these sensors?", "Yes") in list("Yes", "No") if (ask == "No") return M << "\blue You have putted them over your entire body." var/test = input(M, "Choose a test to do.", null) in list("Enginnering", "Medicine", "Chemistry", "Solar", "Bar", "Singularity", "Virology", "Cancel") if (test == "Cancel") M << "\blue You've pulled off the sensors." return var/area/cyber_space/place/polygon = null for (var/area/cyber_space/place/A in world) if (!A.isTakenBy && !A.owner) polygon = A break if (polygon) M << "\blue Cyberspace is forming up... please, wait" M << "\red You've been restrained." forming_up = 1 polygon.appear(test, src, M) << "\blue The polygon has been created." forming_up = 0 return M << "\red \bold For unknown reason every polygon is busy. Try again later." manual_unbuckle(mob/user) if (!forming_up) ..(user) return 1 user << "\red You can't unbuckle [user], he's restrained to the bed!" return 0 unbuckle() var/mob/living/carbon/human/S = buckled_mob if (S && S.controlling) var/mob/living/carbon/human/avatar/C = S.controlling C << "\red \bold You have been unbuckled in reality!" C.death() ..()
Скрытый текст
Содержимое спойлера отсутствует в сохранённом тексте.
/verb/end_avatar() set name = "End control" set category = "IC"
usr << "\blue You've ended controlling." usr:death()
/mob/living var/mob/living/carbon/human/avatar/controlling = null
death(gibbed) ..(gibbed) if (controlling) //Is he in avatar? controlling << "\red You feel your consciousness fading away, like a leaf, carried by an autumn wind, uncaring and cold" controlling.death(0)
/mob/living/carbon/human/avatar name = "Avatar" var/mob/living/master_mob = null
death(gibbed) if (master_mob && master_mob.stat != 2) //Does the first body exists and alive? transfer_control(src, master_mob) else ghostize( (master_mob ? master_mob : null ) ) for (var/mob/A in oviewers(src)) A << "\blue [src] has disappeared!" del(src)
Life() nutrition = 600 //Always full. ..()
/proc/transfer_control(first, second) var/mob/living/F = first var/mob/living/carbon/human/avatar/S = second if (F && S) //They're both exist. if (F.client && F.ckey) //First has client inside if (F.mind) S << "\red Your feel that something has kicked out you" F.mind.transfer_to(S) F.controlling = S S.master_mob = F return 1 return 0
/proc/create_avatar(mob, place) place = get_turf(place) if (isturf(place)) if (ismob(mob)) var/mob/living/carbon/human/avatar/A = new /mob/living/carbon/human/avatar(place) if (!transfer_control(mob, A)) del (A) //Exception? return 0 A.verbs += /verb/end_avatar return A return 0 return 0
Заставь полигоны, которые я должен был ещё очень давно накодить желтому, работать на их билде. На их билде при запуске все виснет, а tg-station - все работает.
