Zrobiłem 2 nowe moce. Rzut dyskiem i rzut kością. Zwykłe CTRL+C CTRL+V od StworzRakiete i DotykRakiety.
Ale co chciałem zmienić?
1. Wywalić efekt białej kuli i ogonka
2. Do dysku efekt taki jak w SuperHero Mod (różowy ogon)
3. Dodać odgłos gdy użyje się mocy
4. Zmienić efekt wybuchu
Oto kod:
Spoiler
public StworzDysk(id)
{
if (!ilosc_dyskow_gracza[id])
{
client_print(id, print_center, "Wykrzystales juz wszystkie dyski!");
return PLUGIN_CONTINUE;
}
if(poprzednia_dysk_gracza[id] + 2.0 > get_gametime())
{
client_print(id, print_center, "Dysk mozesz uzywac co 2 sekundy!");
return PLUGIN_CONTINUE;
}
if (is_user_alive(id))
{
if(inteligencja_gracza[id] < 1)
client_print(id, print_center, "Aby wzmocnic dysk, zwieksz inteligencje!");
poprzednia_dysk_gracza[id] = get_gametime();
ilosc_dyskow_gracza[id]--;
new Float: Origin[3], Float: vAngle[3], Float: Velocity[3];
entity_get_vector(id, EV_VEC_v_angle, vAngle);
entity_get_vector(id, EV_VEC_origin , Origin);
new Ent = create_entity("info_target");
entity_set_string(Ent, EV_SZ_classname,"Dysk");
entity_set_model(Ent, "models/killer_dysk.mdl");
vAngle[0] *= -1.0;
entity_set_origin(Ent, Origin);
entity_set_vector(Ent, EV_VEC_angles, vAngle);
entity_set_int(Ent,EV_INT_effects,64)
entity_set_int(Ent, EV_INT_solid, SOLID_BBOX);
entity_set_int(Ent, EV_INT_movetype, MOVETYPE_FLY);
entity_set_edict(Ent, EV_ENT_owner, id);
VelocityByAim(id, 1000 , Velocity);
entity_set_vector(Ent, EV_VEC_velocity ,Velocity);
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(22)
write_short(Ent)
write_short(sprite_beam)
write_byte(45)
write_byte(4)
write_byte(255)
write_byte(0)
write_byte(0)
write_byte(25)
message_end()
}
return PLUGIN_CONTINUE;
}
public StworzKosc(id)
{
if (!ilosc_kosci_gracza[id])
{
client_print(id, print_center, "Wykrzystales juz wszystkie kosci!");
return PLUGIN_CONTINUE;
}
if(poprzednia_kosc_gracza[id] + 2.0 > get_gametime())
{
client_print(id, print_center, "Kosc mozesz uzywac co 2 sekundy!");
return PLUGIN_CONTINUE;
}
if (is_user_alive(id))
{
if(inteligencja_gracza[id] < 1)
client_print(id, print_center, "Aby wzmocnic kosc, zwieksz inteligencje!");
poprzednia_kosc_gracza[id] = get_gametime();
ilosc_kosci_gracza[id]--;
new Float: Origin[3], Float: vAngle[3], Float: Velocity[3];
entity_get_vector(id, EV_VEC_v_angle, vAngle);
entity_get_vector(id, EV_VEC_origin , Origin);
new Ent = create_entity("info_target");
entity_set_string(Ent, EV_SZ_classname,"Kosc");
entity_set_model(Ent, "models/nekro_kosc.mdl");
vAngle[0] *= -1.0;
entity_set_origin(Ent, Origin);
entity_set_vector(Ent, EV_VEC_angles, vAngle);
entity_set_int(Ent,EV_INT_effects,64)
entity_set_int(Ent, EV_INT_solid, SOLID_BBOX);
entity_set_int(Ent, EV_INT_movetype, MOVETYPE_FLY);
entity_set_edict(Ent, EV_ENT_owner, id);
VelocityByAim(id, 1000 , Velocity);
entity_set_vector(Ent, EV_VEC_velocity ,Velocity);
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(22)
write_short(Ent)
write_short(sprite_beam)
write_byte(45)
write_byte(4)
write_byte(255)
write_byte(0)
write_byte(0)
write_byte(25)
message_end()
}
return PLUGIN_CONTINUE;
}
public DotykDysk(ent)
{
if ( !is_valid_ent(ent))
return;
new attacker = entity_get_edict(ent, EV_ENT_owner);
new Float:fOrigin[3], iOrigin[3];
entity_get_vector( ent, EV_VEC_origin, fOrigin);
iOrigin[0] = floatround(fOrigin[0]);
iOrigin[1] = floatround(fOrigin[1]);
iOrigin[2] = floatround(fOrigin[2]);
message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
write_byte(TE_EXPLOSION);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_dysk);
write_byte(32); // scale
write_byte(20); // framerate
write_byte(0);// flags
message_end();
new entlist[33];
new numfound = find_sphere_class(ent, "player", 230.0, entlist, 32);
for (new i=0; i < numfound; i++)
{
new pid = entlist[i];
if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid))
continue;
ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 200.0+float(inteligencja_gracza[attacker]) , 1);
}
remove_entity(ent);
}
public DotykKosc(ent)
{
if ( !is_valid_ent(ent))
return;
new attacker = entity_get_edict(ent, EV_ENT_owner);
new Float:fOrigin[3], iOrigin[3];
entity_get_vector( ent, EV_VEC_origin, fOrigin);
iOrigin[0] = floatround(fOrigin[0]);
iOrigin[1] = floatround(fOrigin[1]);
iOrigin[2] = floatround(fOrigin[2]);
message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
write_byte(TE_EXPLOSION);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_kosc);
write_byte(32); // scale
write_byte(20); // framerate
write_byte(0);// flags
message_end();
new entlist[33];
new numfound = find_sphere_class(ent, "player", 230.0, entlist, 32);
for (new i=0; i < numfound; i++)
{
new pid = entlist[i];
if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid))
continue;
ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 200.0+float(inteligencja_gracza[attacker]) , 1);
}
remove_entity(ent);
}
Tutaj efekt tego dysku z SuperHero
Spoiler
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(22) //TE_BEAMFOLLOW
write_short(NewEnt) //The entity to attach the sprite to
write_short(flash) //sprite's model
write_byte(lifetime) //life in 0.1 seconds
write_byte(50) //width of sprite
write_byte(255) //red
write_byte(0) //green
write_byte(255) //blue
write_byte(255) //brightness
message_end()
Użytkownik Blood Angel edytował ten post 22.02.2012 10:09