AviaSkins.Forums

Вернуться   AviaSkins.Forums > Основные разделы > Вопросы Новичка8

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.09.2010, 12:29   #21
Gann
Бульбаш
 
Аватар для Gann
 
Регистрация: 19.01.2010
Сообщений: 47
По умолчанию

А можно как-то разобраться, как бегают человечки при атаке колонны? И так же сделать пехоту (ну или хотя бы чтоб на аэродроме такой же шухер начинался при вулче)... Всяко интереснее...
Gann вне форума   Ответить с цитированием
Старый 05.09.2010, 12:53   #22
Novichok8
Местный
 
Регистрация: 24.12.2007
Адрес: Россия(СССР)
Сообщений: 987
Отправить сообщение для Novichok8 с помощью ICQ Отправить сообщение для Novichok8 с помощью Skype™
По умолчанию

В классе паратропер тоже есть движение.
Novichok8 вне форума   Ответить с цитированием
Старый 05.09.2010, 12:54   #23
Novichok8
Местный
 
Регистрация: 24.12.2007
Адрес: Россия(СССР)
Сообщений: 987
Отправить сообщение для Novichok8 с помощью ICQ Отправить сообщение для Novichok8 с помощью Skype™
По умолчанию

/* Soldier - Decompiled by JODE
* Visit http://jode.sourceforge.net/
*/
package com.maddox.il2.objects.humans;
import com.maddox.JGP.Geom;
import com.maddox.JGP.Point3d;
import com.maddox.JGP.Vector3d;
import com.maddox.JGP.Vector3f;
import com.maddox.il2.ai.Explosion;
import com.maddox.il2.ai.MsgExplosionListener;
import com.maddox.il2.ai.MsgShotListener;
import com.maddox.il2.ai.Shot;
import com.maddox.il2.ai.World;
import com.maddox.il2.ai.ground.Prey;
import com.maddox.il2.ai.ground.UnitInterface;
import com.maddox.il2.engine.Actor;
import com.maddox.il2.engine.ActorMesh;
import com.maddox.il2.engine.ActorMeshDraw;
import com.maddox.il2.engine.BulletProperties;
import com.maddox.il2.engine.Engine;
import com.maddox.il2.engine.Interpolate;
import com.maddox.il2.engine.Landscape;
import com.maddox.il2.engine.Loc;
import com.maddox.il2.engine.Mesh;
import com.maddox.il2.engine.MsgCollisionListener;
import com.maddox.il2.engine.MsgCollisionRequestListener;
import com.maddox.il2.engine.Orient;
import com.maddox.rts.Message;
import com.maddox.rts.Time;

public class Soldier extends ActorMesh
implements MsgCollisionRequestListener, MsgCollisionListener,
MsgExplosionListener, MsgShotListener, Prey
{
private static final int FPS = 30;
private static final int RUN_START_FRAME = 0;
private static final int RUN_LAST_FRAME = 22;
private static final int RUN_N_FRAMES = 23;
private static final int RUN_CYCLE_TIME = 733;
private static final int FALL_START_FRAME = 22;
private static final int FALL_LAST_FRAME = 54;
private static final int FALL_N_FRAMES = 33;
private static final int FALL_CYCLE_TIME = 1066;
private static final int LIE_START_FRAME = 54;
private static final int LIE_LAST_FRAME = 74;
private static final int LIE_N_FRAMES = 21;
private static final int LIE_CYCLE_TIME = 666;
private static final int LIEDEAD_START_FRAME = 75;
private static final int LIEDEAD_N_FRAMES = 4;
private static final float RUN_SPEED = 6.5454545F;
private Vector3d speed;
private static final int ST_FLY = 0;
private static final int ST_RUN = 1;
private static final int ST_FALL = 2;
private static final int ST_LIE = 3;
private static final int ST_LIEDEAD = 4;
private int st = 0;
private int dying = 0;
static final int DYING_NONE = 0;
static final int DYING_DEAD = 1;
private int idxOfDeadPose;
private long animStartTime;
private long disappearTime;
private int nRunCycles;
private static Mesh preload1 = null;
private static Mesh preload2 = null;
private static Point3d p = new Point3d();
private static Orient o = new Orient();
private static Vector3f n = new Vector3f();

class Move extends Interpolate
{
public boolean tick() {
if ((st == 3 || st == 4) && Time.current() >= disappearTime) {
Soldier.this.postDestroy();
return false;
}
if (dying != 0) {
switch (st) {
case 1:
st = 2;
animStartTime = Time.current();
break;
case 3:
st = 4;
idxOfDeadPose = World.Rnd().nextInt(0, 3);
break;
}
setAnimFrame((double) Time.tickNext());
}
long l = Time.tickNext() - animStartTime;
switch (st) {
case 0: {
pos.getAbs(Soldier.p);
Soldier.p.scaleAdd((double) Time.tickLenFs(), speed,
Soldier.p);
speed.z -= (double) (Time.tickLenFs() * World.g());
Engine.land();
float f
= Landscape.HQ((float) Soldier.p.x, (float) Soldier.p.y);
if (Soldier.p.z <= (double) f) {
speed.z = 0.0;
speed.normalize();
speed.scale(6.545454502105713);
Soldier.p.z = (double) f;
st = 1;
nRunCycles = World.Rnd().nextInt(9, 17);
}
pos.setAbs(Soldier.p);
break;
}
case 1:
pos.getAbs(Soldier.p);
Soldier.p.scaleAdd((double) Time.tickLenFs(), speed,
Soldier.p);
Soldier.p.z = Engine.land().HQ(Soldier.p.x, Soldier.p.y);
pos.setAbs(Soldier.p);
if (l / 733L >= (long) nRunCycles
|| World.land().isWater(Soldier.p.x, Soldier.p.y)) {
st = 2;
animStartTime = Time.current();
}
break;
case 2:
pos.getAbs(Soldier.p);
Soldier.p.scaleAdd((double) Time.tickLenFs(), speed,
Soldier.p);
Soldier.p.z = Engine.land().HQ(Soldier.p.x, Soldier.p.y);
if (World.land().isWater(Soldier.p.x, Soldier.p.y))
Soldier.p.z -= 0.5;
pos.setAbs(Soldier.p);
if (l >= 1066L) {
st = 3;
animStartTime = Time.current();
disappearTime
= (Time.tickNext()
+ (long) (1000 * World.Rnd().nextInt(25, 35)));
}
break;
case 3:
case 4:
pos.getAbs(Soldier.p);
Soldier.p.z = Engine.land().HQ(Soldier.p.x, Soldier.p.y);
if (World.land().isWater(Soldier.p.x, Soldier.p.y))
Soldier.p.z -= 3.0;
pos.setAbs(Soldier.p);
break;
}
setAnimFrame((double) Time.tickNext());
return true;
}
}

private class SoldDraw extends ActorMeshDraw
{
private SoldDraw() {
/* empty */
}

public int preRender(Actor actor) {
setAnimFrame((double) Time.current());
return super.preRender(actor);
}
}

public static void resetGame() {
preload1 = preload2 = null;
}

public static void PRELOAD() {
preload1 = new Mesh(GetMeshName(1));
preload2 = new Mesh(GetMeshName(2));
}

public void msgCollisionRequest(Actor actor, boolean[] bools) {
if (actor == getOwner())
bools[0] = false;
if (actor instanceof Soldier)
bools[0] = false;
if (dying != 0)
bools[0] = false;
}

public void msgCollision(Actor actor, String string, String string_0_) {
if (dying == 0) {
Point3d point3d = p;
pos.getAbs(p);
Point3d point3d_1_ = actor.pos.getAbsPoint();
Vector3d vector3d = new Vector3d();
vector3d.set(point3d.x - point3d_1_.x, point3d.y - point3d_1_.y,
0.0);
if (vector3d.length() < 0.0010) {
float f = World.Rnd().nextFloat(0.0F, 359.99F);
vector3d.set((double) Geom.sinDeg(f), (double) Geom.cosDeg(f),
0.0);
}
vector3d.normalize();
float f = 0.2F;
vector3d.add((double) World.Rnd().nextFloat(-f, f),
(double) World.Rnd().nextFloat(-f, f),
(double) World.Rnd().nextFloat(-f, f));
vector3d.normalize();
float f_2_ = 13.090909F * Time.tickLenFs();
vector3d.scale((double) f_2_);
point3d.add(vector3d);
pos.setAbs(point3d);
if (st == 1) {
st = 2;
animStartTime = Time.current();
}
if (st == 3 && dying == 0 && actor instanceof UnitInterface
&& actor.getSpeed(null) > 0.5)
Die(actor);
}
}

public void msgShot(Shot shot) {
shot.bodyMaterial = 3;
if (dying == 0 && !(shot.power <= 0.0F)) {
if (shot.powerType == 1)
Die(shot.initiator);
else if (!(shot.v.length() < 20.0))
Die(shot.initiator);
}
}

public void msgExplosion(Explosion explosion) {
if (dying == 0) {
float f = 0.0050F;
float f_3_ = 0.1F;
if (explosion != null) {
/* empty */
}
if (Explosion.killable(this, explosion.receivedTNT_1meter(this), f,
f_3_, 0.0F))
Die(explosion.initiator);
}
}

private void Die(Actor actor) {
if (dying == 0) {
World.onActorDied(this, actor);
dying = 1;
}
}

public void destroy() {
super.destroy();
}

public Object getSwitchListener(Message message) {
return this;
}
Novichok8 вне форума   Ответить с цитированием
Старый 05.09.2010, 12:55   #24
Novichok8
Местный
 
Регистрация: 24.12.2007
Адрес: Россия(СССР)
Сообщений: 987
Отправить сообщение для Novichok8 с помощью ICQ Отправить сообщение для Novichok8 с помощью Skype™
По умолчанию

void setAnimFrame(double d) {
int i;
int i_4_;
float f;
switch (st) {
case 0:
case 1: {
i = 0;
i_4_ = 22;
int i_5_ = 733;
double d_6_ = d - (double) animStartTime;
d_6_ %= (double) i_5_;
if (d_6_ < 0.0)
d_6_ += (double) i_5_;
f = (float) (d_6_ / (double) i_5_);
break;
}
case 2: {
i = 22;
i_4_ = 54;
int i_7_ = 1066;
double d_8_ = d - (double) animStartTime;
if (d_8_ <= 0.0)
f = 0.0F;
else if (d_8_ >= (double) i_7_)
f = 1.0F;
else
f = (float) (d_8_ / (double) i_7_);
break;
}
case 3: {
i = 54;
i_4_ = 74;
int i_9_ = 666;
double d_10_ = d - (double) animStartTime;
if (d_10_ <= 0.0)
f = 0.0F;
else if (d_10_ >= (double) i_9_)
f = 1.0F;
else
f = (float) (d_10_ / (double) i_9_);
break;
}
default:
i = i_4_ = 75 + idxOfDeadPose;
f = 0.0F;
}
mesh().setFrameFromRange(i, i_4_, f);
}

public int HitbyMask() {
return -25;
}

public int chooseBulletType(BulletProperties[] bulletpropertieses) {
if (dying != 0)
return -1;
if (bulletpropertieses.length == 1)
return 0;
if (bulletpropertieses.length <= 0)
return -1;
if (bulletpropertieses[0].power <= 0.0F)
return 1;
if (bulletpropertieses[0].powerType == 1)
return 0;
if (bulletpropertieses[1].powerType == 1)
return 1;
if (bulletpropertieses[0].cumulativePower > 0.0F)
return 1;
if (bulletpropertieses[0].powerType == 2)
return 1;
return 0;
}

public int chooseShotpoint(BulletProperties bulletproperties) {
if (dying != 0)
return -1;
return 0;
}

public boolean getShotpointOffset(int i, Point3d point3d) {
if (dying != 0)
return false;
if (i != 0)
return false;
if (point3d != null)
point3d.set(0.0, 0.0, 0.0);
return true;
}

private static String GetMeshName(int i) {
boolean bool = i == 2;
boolean bool_11_ = World.cur().camouflage == 1;
return ("3do/humans/soldiers/" + (bool ? "Germany" : "Russia")
+ (bool_11_ ? "Winter" : "Summer") + "/mono.sim");
}

public Soldier(Actor actor, int i, Loc loc) {
super(GetMeshName(i));
setOwner(actor);
setArmy(i);
Point3d point3d = new Point3d();
Orient orient = new Orient();
loc.get(point3d, orient);
Vector3d vector3d = new Vector3d();
vector3d.set(1.0, 0.0, 0.0);
orient.transform(vector3d);
speed = new Vector3d();
speed.set(vector3d);
if (speed.length() < 0.009999999776482582)
speed.set(1.0, 0.0, 0.0);
speed.normalize();
if (Math.abs(speed.z) > 0.9) {
speed.set(1.0, 0.0, 0.0);
speed.normalize();
}
orient.setAT0(speed);
orient.set(orient.azimut(), 0.0F, 0.0F);
pos.setAbs(point3d, orient);
pos.reset();
speed.scale(6.545454502105713);
st = 0;
animStartTime = Time.tick() + (long) World.Rnd().nextInt(0, 2300);
dying = 0;
collide(true);
draw = new SoldDraw();
drawing(true);
if (!interpEnd("move"))
interpPut(new Move(), "move", Time.current(), null);
}
}

вот класс содлат из колонны.
Novichok8 вне форума   Ответить с цитированием
Старый 30.10.2010, 01:51   #25
skvorez
Гость
 
Сообщений: n/a
По умолчанию

Есть прогресс?
  Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 09:19. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Рейтинг@Mail.ru