#1
31 декабря 2011 в 09:34
Собственно имеется код куба,куб можно брать порталганом,в порталы кидать..но не в этом тема,нужно чтобы он нажимал на кнопку(когда куб кладешь на нее)американский программист уже с ума сходит,не знает что делать,может вы поможете?)<br />код куба:<br />
/* Aperture Science Cube<br /><br /> Copyleft (<)2010. <br /> No rights reserved.<br /> DO distribute.<br /><br /> Push function inspired by Wazat's code from inside3d.com<br /><br /> !!experimental!!<br />*/<br /><br />void() asscube_think =<br />{<br /> self.nextthink = time;<br />};<br /><br />void() asscube_push =<br />{<br /> local vector vec, selforg, otherorg;<br /> local float dist; dist = 2;<br /> <br /> if (other.classname != "player") return;<br /> if (other.absmin_z + 4 < self.absmax_z)<br /> {<br /> // getting origins this way allows for BSP entities to work too.<br /> otherorg = 0.5*(other.absmin + other.absmax);<br /> selforg = 0.5*(self.absmin + self.absmax);<br /><br /> // Don't move in the direction the player is facing. Instead, always move away from the player.<br /> vec = normalize(selforg - otherorg); // dir from them toward me<br /> vec = vectoangles(vec);<br /> walkmove(vec_y, dist);<br /> }<br /> else // (touch on top)<br /> {<br /> other.flags = other.flags | FL_ONGROUND;<br /> }<br />};<br /><br /><br />/*QUAKED ass_cube<br /> Companion Cube (it's not solid, because it caused trouble. quake is not game of pushables...)<br /> EDIT: the problem is elsewhere...<br />*/<br />void() ass_cube =<br />{<br /> local entity new;<br /> local vector newsize;<br /><br /> self.mangle = self.angles;<br /> self.angles = '0 0 0';<br /><br /> precache_model ("progs/cube.bsp");<br /> setmodel (self, "progs/cube.bsp");<br /> setsize (self, '0 0 0', '32 32 32');<br /><br /> self.classname = "cube";<br /> self.solid = SOLID_SLIDEBOX;<br /> self.movetype = MOVETYPE_PUSH;<br /> setorigin (self, self.origin);<br /> self.oldorigin = self.origin;<br /> self.touch = asscube_push;<br /> self.nextthink = time + 0.1;<br /> self.think = asscube_think;<br />};
<br /><br />то,что осталось сделать,помогите пожалуйста)<br />/***<br /> 1500 Megawatt Heavy Duty Super-Colliding Super Button<br /> -----------------------------------------------------<br /> - weighted by player, cube, sentry gun<br /> Variable sized trigger. Triggers once, then <br />*/<br />void() ass_button = <br />{<br /> InitTrigger ();<br /> <br /> self.think = assbutton_think;<br /><br /> <br /> <br /><br /><br />};
<br />еще один код для куба<br /><br />/*QUAKED ass_cube<br /> Companion Cube<br />*/<br />void() asscube_think =<br />{<br /> self.nextthink = time + 0.2;<br /> if (self.flags & FL_ONGROUND)<br /> {<br /> self.velocity = '0 0 0';<br /> }<br /> self.flags = (self.flags | FL_ONGROUND) - FL_ONGROUND;<br />};<br /><br />void() asscube_push =<br />{<br /> local vector vec, selforg, otherorg;<br /> local float dist; dist = 2;<br /> <br /> if (other.classname != "player") return;<br /> if (other.absmin_z + 4 < self.absmax_z)<br /> {<br /> // getting origins this way allows for BSP entities to work too.<br /> otherorg = 0.5*(other.absmin + other.absmax);<br /> selforg = 0.5*(self.absmin + self.absmax);<br /><br /> // Don't move in the direction the player is facing. Instead, always move away from the player.<br /> vec = normalize(selforg - otherorg); // dir from them toward me<br /> vec = vectoangles(vec);<br /> walkmove(vec_y, dist);<br /> }<br /> else // (touch on top)<br /> {<br /> other.flags = other.flags | FL_ONGROUND;<br /> }<br />};<br /><br /><br />void() ass_cube =<br />{<br /> local entity new;<br /> local vector newsize;<br /><br /> self.mangle = self.angles;<br /> self.angles = '0 0 0';<br /><br /> precache_model ("progs/cube.bsp");<br /> setmodel (self, "progs/cube.bsp");<br /> setsize (self, '-16 -16 0', '16 16 32');<br /><br /> self.classname = "cube";<br /> self.solid = SOLID_SLIDEBOX;<br /> self.movetype = MOVETYPE_TOSS;<br /> setorigin (self, self.origin);<br /> self.oldorigin = self.origin;<br /> self.gravity = 1;<br /> self.touch = asscube_push;<br /> self.nextthink = time + 0.1;<br /> self.think = asscube_think;<br />};
#2
31 декабря 2011 в 09:41
в вольфе можно нажимать кнопки выстрелом, можно попытаться оттуда взять эту функцию и переделать под куб
#3
31 декабря 2011 в 09:42
[quote author=Eugeny link=topic=714.msg16014#msg16014 date=1325324462]<br />в вольфе можно нажимать кнопки выстрелом, можно попытаться оттуда взять эту функцию и переделать под куб<br />[/quote]<br /><br />в квейке тоже так можно,видимо это не прокатило..
#5
05 января 2012 в 13:37
да,оно было найдено,извращенным способом)<br /><br />
#6
05 января 2012 в 15:49
Ну так напиши его тут, чтобы у темы как бы было "логическое завершение" =)
#7
05 января 2012 в 17:34
сам спросил-сам ответил:)<br />
<br />void() button_touch =<br />{<br /> if (other.classname != "cube" && (other.classname != "player"))<br /> return;<br /> self.enemy = other;<br /> button_fire (); <br />};