Avatar billede xorioz Nybegynder
16. november 2002 - 15:51 Der er 3 kommentarer og
1 løsning

quake 2 mod

jeg er rimelig n00b og faktisk er den her simple mod min første c/c++ programering og jeg skal bruge lidt hjælp

er hved at lave en klusterbomb og for denne fejl
H:\Quake2\src\g_weapon.c(481) : warning C4013: 'fire_grenade3' undefined; assuming extern returning int
H:\Quake2\src\g_weapon.c(650) : error C2371: 'fire_grenade3' : redefinition; different basic types


jeg kunne også skrive alle koder men vil komme til at fulde helvede vis der er noget i vil spørgeom ang koden skal jeg nok poste den
Avatar billede xorioz Nybegynder
16. november 2002 - 15:54 #1
static void Cluster_Explode_1 (edict_t *ent)

{
    vec3_t        origin;

    //Sean added these 4 vectors

    vec3_t  grenade1;
    vec3_t  grenade2;
    vec3_t  grenade3;
    vec3_t  grenade4;

    if (ent->owner->client)
        PlayerNoise(ent->owner, ent->s.origin, PNOISE_IMPACT);

    //FIXME: if we are onground then raise our Z just a bit since we are a point?
    T_RadiusDamage(ent, ent->owner, ent->dmg, NULL, ent->dmg_radius, 1);

    VectorMA (ent->s.origin, -0.02, ent->velocity, origin);
    gi.WriteByte (svc_temp_entity);
    if (ent->waterlevel)
    {
        if (ent->groundentity)
            gi.WriteByte (TE_GRENADE_EXPLOSION_WATER);
        else
            gi.WriteByte (TE_ROCKET_EXPLOSION_WATER);
    }
    else
    {
        if (ent->groundentity)
            gi.WriteByte (TE_GRENADE_EXPLOSION);
        else
            gi.WriteByte (TE_ROCKET_EXPLOSION);
    }
    gi.WritePosition (origin);
    gi.multicast (ent->s.origin, MULTICAST_PVS);

    // SumFuka did this bit : give grenades up/outwards velocities
    VectorSet(grenade1,21,24,43);
    VectorSet(grenade2,22,-23,44);
    VectorSet(grenade3,-23,22,42);
    VectorSet(grenade4,-24,-21,41);

    // Sean : explode the four grenades outwards
    fire_grenade3(ent, origin, grenade1, 120, 10, 2.0, 120, 1);
    fire_grenade3(ent, origin, grenade2, 120, 13, 2.0, 120, 2);
    fire_grenade3(ent, origin, grenade3, 120, 21, 2.0, 120, 1);
    fire_grenade3(ent, origin, grenade4, 120, 11, 2.0, 120, 3);

    G_FreeEdict (ent);
}

static void Cluster_Explode_2 (edict_t *ent)

{
    vec3_t        origin;

    //Sean added these 4 vectors

    vec3_t  grenade1;
    vec3_t  grenade2;
    vec3_t  grenade3;
    vec3_t  grenade4;

    if (ent->owner->client)
        PlayerNoise(ent->owner, ent->s.origin, PNOISE_IMPACT);

    //FIXME: if we are onground then raise our Z just a bit since we are a point?
    T_RadiusDamage(ent, ent->owner, ent->dmg, NULL, ent->dmg_radius, 1);

    VectorMA (ent->s.origin, -0.02, ent->velocity, origin);
    gi.WriteByte (svc_temp_entity);
    if (ent->waterlevel)
    {
        if (ent->groundentity)
            gi.WriteByte (TE_GRENADE_EXPLOSION_WATER);
        else
            gi.WriteByte (TE_ROCKET_EXPLOSION_WATER);
    }
    else
    {
        if (ent->groundentity)
            gi.WriteByte (TE_GRENADE_EXPLOSION);
        else
            gi.WriteByte (TE_ROCKET_EXPLOSION);
    }
    gi.WritePosition (origin);
    gi.multicast (ent->s.origin, MULTICAST_PVS);

    // SumFuka did this bit : give grenades up/outwards velocities
    VectorSet(grenade1,21,24,43);
    VectorSet(grenade2,22,-23,44);
    VectorSet(grenade3,-23,22,42);
    VectorSet(grenade4,-24,-21,41);

    // Sean : explode the four grenades outwards
    fire_grenade2(ent, origin, grenade1, 120, 10, 2.0, 120, 1);
    fire_grenade2(ent, origin, grenade2, 120, 13, 2.0, 120, 2);
    fire_grenade2(ent, origin, grenade3, 120, 21, 2.0, 120, 1);
    fire_grenade2(ent, origin, grenade4, 120, 11, 2.0, 120, 3);

    G_FreeEdict (ent);
}

static void Grenade_Touch (edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *surf)
{
    if (other == ent->owner)
        return;

    if (surf && (surf->flags & SURF_SKY))
    {
        G_FreeEdict (ent);
        return;
    }

    if (!other->takedamage)
    {
        if (ent->spawnflags & 1)
        {
            if (random() > 0.5)
                gi.sound (ent, CHAN_VOICE, gi.soundindex ("weapons/hgrenb1a.wav"), 1, ATTN_NORM, 0);
            else
                gi.sound (ent, CHAN_VOICE, gi.soundindex ("weapons/hgrenb2a.wav"), 1, ATTN_NORM, 0);
        }
        else
        {
            gi.sound (ent, CHAN_VOICE, gi.soundindex ("weapons/grenlb1b.wav"), 1, ATTN_NORM, 0);
        }
        return;
    }

    ent->enemy = other;
    Grenade_Explode (ent);
}

void fire_grenade (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius)
{
    edict_t    *grenade;
    vec3_t    dir;
    vec3_t    forward, right, up;

    vectoangles (aimdir, dir);
    AngleVectors (dir, forward, right, up);

    grenade = G_Spawn();
    VectorCopy (start, grenade->s.origin);
    VectorScale (aimdir, speed, grenade->velocity);
    VectorMA (grenade->velocity, 200 + crandom() * 10.0, up, grenade->velocity);
    VectorMA (grenade->velocity, crandom() * 10.0, right, grenade->velocity);
    VectorSet (grenade->avelocity, 300, 300, 300);
    grenade->movetype = MOVETYPE_BOUNCE;
    grenade->clipmask = MASK_SHOT;
    grenade->solid = SOLID_BBOX;
    grenade->s.effects |= EF_GRENADE;
    VectorClear (grenade->mins);
    VectorClear (grenade->maxs);
    grenade->s.modelindex = gi.modelindex ("models/objects/grenade/tris.md2");
    grenade->owner = self;
    grenade->touch = Grenade_Touch;
    grenade->nextthink = level.time + timer;
    grenade->think = Cluster_Explode_1;
    grenade->dmg = damage;
    grenade->dmg_radius = damage_radius;
    grenade->classname = "grenade";

    gi.linkentity (grenade);
}

void fire_grenade2 (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius, qboolean held)
{
    edict_t    *grenade;
    vec3_t    dir;
    vec3_t    forward, right, up;

    vectoangles (aimdir, dir);
    AngleVectors (dir, forward, right, up);

    grenade = G_Spawn();
    VectorCopy (start, grenade->s.origin);
    VectorScale (aimdir, speed, grenade->velocity);
    VectorMA (grenade->velocity, 200 + crandom() * 10.0, up, grenade->velocity);
    VectorMA (grenade->velocity, crandom() * 10.0, right, grenade->velocity);
    VectorSet (grenade->avelocity, 300, 300, 300);
    grenade->movetype = MOVETYPE_BOUNCE;
    grenade->clipmask = MASK_SHOT;
    grenade->solid = SOLID_BBOX;
    grenade->s.effects |= EF_GRENADE;
    VectorClear (grenade->mins);
    VectorClear (grenade->maxs);
    grenade->s.modelindex = gi.modelindex ("models/objects/grenade2/tris.md2");
    grenade->owner = self;
    grenade->touch = Grenade_Touch;
    grenade->nextthink = level.time + timer;
    grenade->think = Grenade_Explode;
    grenade->dmg = damage;
    grenade->dmg_radius = damage_radius;
    grenade->classname = "hgrenade";
    if (held)
        grenade->spawnflags = 3;
    else
        grenade->spawnflags = 1;
    grenade->s.sound = gi.soundindex("weapons/hgrenc1b.wav");

    if (timer <= 0.0)
        Grenade_Explode (grenade);
    else
    {
        gi.sound (self, CHAN_WEAPON, gi.soundindex ("weapons/hgrent1a.wav"), 1, ATTN_NORM, 0);
        gi.linkentity (grenade);
    }
}

void fire_grenade3 (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float timer, float damage_radius)
{
    edict_t    *grenade;
    vec3_t    dir;
    vec3_t    forward, right, up;

    vectoangles (aimdir, dir);
    AngleVectors (dir, forward, right, up);

    grenade = G_Spawn();
    VectorCopy (start, grenade->s.origin);
    VectorScale (aimdir, speed, grenade->velocity);
    VectorMA (grenade->velocity, 200 + crandom() * 10.0, up, grenade->velocity);
    VectorMA (grenade->velocity, crandom() * 10.0, right, grenade->velocity);
    VectorSet (grenade->avelocity, 300, 300, 300);
    grenade->movetype = MOVETYPE_BOUNCE;
    grenade->clipmask = MASK_SHOT;
    grenade->solid = SOLID_BBOX;
    grenade->s.effects |= EF_GRENADE;
    VectorClear (grenade->mins);
    VectorClear (grenade->maxs);
    grenade->s.modelindex = gi.modelindex ("models/objects/grenade/tris.md2");
    grenade->owner = self;
    grenade->touch = Grenade_Touch;
    grenade->nextthink = level.time + timer;
    grenade->think = Cluster_Explode_2;
    grenade->dmg = damage;
    grenade->dmg_radius = damage_radius;
    grenade->classname = "grenade";

    gi.linkentity (grenade);
}


her er koden :/
Avatar billede xorioz Nybegynder
16. november 2002 - 15:56 #2
har det noget at gøe med game source skal jeg til at tilføje den ekstra granat der også?  kunne jo godt være :D
Avatar billede xorioz Nybegynder
16. november 2002 - 16:03 #3
plz mangler hjælp kan ikke komme videre mid mit mod uden det her...
Avatar billede xorioz Nybegynder
16. november 2002 - 16:06 #4
fant selv ud af det sorry
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester