Dělám takový amatérský módy do CoD2 a můj poslední výtvor bylo stvořit něco jako letadlo... Ta část se mi povedla, ale teď se snažim o to, aby to letadlo umělo bombardovat. To se mi částečně taky povedlo, ale jak jsem spíš takovej domácí kutil, tak mi občas neni všechno jasný xD Tady je ten kód:
Problém je v tom, že jakmile je v kódu čekání na bombu než dosahne bodu kde má bouchnout "bomb wattil("movedone");" nebo případná obdoba wait(j);
Tak se cely kod zastavi.
Letadlo zmizi
Jakmile bomba dosahne vybuchu, tak kod opet pokracuje a jsem opet letadlo. (mezitim ovšem doletim na zem a rozplacnu se, ale to je vedlejší :))
Jde mi o to, jestli neexistuje nějaká funkce co by dokázala vytáhnout proměný destination.origin a bomb.origin abych mohl do while napsat další if, ktery by obsahovalo destination.origin=bomb.origin.
(Když bych to tak napsal, tak nevěděl co to destination a bomb je.)
Help protože jinak budu mít letadlo co nebombarduje a to pak ztrácí celej význam xD
edit:
while(1)
{
spawnuje se letadlo a meni pozice;
if (tlacitko F)
{
letadlo zmizi;
return 0; cyklus konci
}
if (tlacitko shift)
{
pod nami se objevi pozice kam poleti bomba;
bomba se respne a leti do pozice kde ma bouchnout;
jenze potrebuju nejak napsat, aby bomba letela na pozici a ja zatim mohl letet dal, aby mi to neomezovalo fci while
Otázka
Dutch
Dělám takový amatérský módy do CoD2 a můj poslední výtvor bylo stvořit něco jako letadlo... Ta část se mi povedla, ale teď se snažim o to, aby to letadlo umělo bombardovat. To se mi částečně taky povedlo, ale jak jsem spíš takovej domácí kutil, tak mi občas neni všechno jasný xD Tady je ten kód:
plane()
{
self hide();
while (1)
{
startOrigin = self getEye();
forward = anglesToForward( self getplayerangles() );
forward = maps\mp\_utility::vectorScale( forward, 200 );
endOrigin = startOrigin + forward;
trace = bulletTrace( startOrigin, endOrigin, false, self );
angles = vectortoangles(vectornormalize(trace["normal"]));
model = spawn("script_model", trace["position"]);
model2 = spawn("script_model", self.origin);
self linkto (model2);
plane = spawn("script_model", self.origin+(0,0,-30));
plane setmodel("xmodel/vehicle_stuka_flying");
plane.angles = (self.angles);
model2 moveto(model.origin, 0.2);
wait (0.02);
model delete();
model2 delete();
plane delete();
if(self UseButtonPressed())
{
model delete();
model2 delete();
plane delete();
return(0);
self show();
}
if (self MeleeButtonPressed())
{
bomb = spawn("script_model", self.origin );
bomb setmodel("xmodel/prop_mortar_ammunition");
//bombarding
startOrigin = self.origin;
down = anglesToForward( self.angles+(90,0,0) );
down = maps\mp\_utility::vectorScale( down, 10000 );
endOrigin = startOrigin + down;
trace = bulletTrace( startOrigin, endOrigin, false, self );
angles = vectortoangles(vectornormalize(trace["normal"]));
destination = spawn("script_model", trace["position"] );
x = destination.origin[0];
y = destination.origin[1];
z = destination.origin[2];
m = self.origin[0];
n = self.origin[1];
o = self.origin[2];
//neodmocnena vzdalenost dvou bodu
i = ((x-m)*(x-m))+((y-n)*(y-n))+((z-o)*(z-o));
//newtonuv vzorec pro odmocneni -> vzdalenosti dvou bodu
a = 1;
a = a-((a*a-i)/(2*a));
// t=s/v -> t=j v=120000[px/s] s=a[px]
j=a/120000;
bomb moveto(destination.origin, j);
bomb wattil("movedone");
level._effect["mortexplosion"] = loadfx("fx/explosions/flak88_explosion.efx");
playfx(level._effect["mortexplosion"], destination.origin);
destination playSound("flak88_explode");
radiusDamage (destination.origin+(0,0,30), 400, 250, 250);
}
}
}
Problém je v tom, že jakmile je v kódu čekání na bombu než dosahne bodu kde má bouchnout "bomb wattil("movedone");" nebo případná obdoba wait(j);
Tak se cely kod zastavi.
Letadlo zmizi
Jakmile bomba dosahne vybuchu, tak kod opet pokracuje a jsem opet letadlo. (mezitim ovšem doletim na zem a rozplacnu se, ale to je vedlejší :))
Jde mi o to, jestli neexistuje nějaká funkce co by dokázala vytáhnout proměný destination.origin a bomb.origin abych mohl do while napsat další if, ktery by obsahovalo destination.origin=bomb.origin.
(Když bych to tak napsal, tak nevěděl co to destination a bomb je.)
Help protože jinak budu mít letadlo co nebombarduje a to pak ztrácí celej význam xD
edit:
while(1)
{
spawnuje se letadlo a meni pozice;
if (tlacitko F)
{
letadlo zmizi;
return 0; cyklus konci
}
if (tlacitko shift)
{
pod nami se objevi pozice kam poleti bomba;
bomba se respne a leti do pozice kde ma bouchnout;
jenze potrebuju nejak napsat, aby bomba letela na pozici a ja zatim mohl letet dal, aby mi to neomezovalo fci while
}
}
Odkaz ke komentáři
Sdílet na ostatní stránky
1 odpověď na tuto otázku
Recommended Posts