←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Czerwone swiatlo

Zablokowany

  • +
  • -
Albertd - zdjęcie Albertd 05.07.2012

Czesc mam pytanie, mam fukcje ktora powoduje swiatlo pod nogami, ale nijak nie potrafie jej przerobic zeby to swiatlo zniknelo dopiero po 10 sek.
Czy ktos wie jak trzeba to przerobic? ;d


public swiatlo(ent)
{
static Float:float_origin[3];
entity_get_vector(ent, EV_VEC_origin, float_origin);

static origin[3];
FVecIVec(float_origin, origin);

message_begin(MSG_PVS, SVC_TEMPENTITY, origin, 0);
write_byte(TE_DLIGHT);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_byte(40);
write_byte(255);
write_byte(0);
write_byte(0);
write_byte(10);
write_byte(10);
message_end();

entity_set_float(ent, EV_FL_nextthink, get_gametime() + 5.01);
}


Z gory dziekuje i pozdrawiam
Odpowiedz

  • +
  • -
d0naciak - zdjęcie d0naciak 05.07.2012

message_begin(MSG_PVS, SVC_TEMPENTITY, origin, 0);

na

message_begin(MSG_PVS, SVC_TEMPENTITY, origin, 2);

nie jestem na 100% pewien, ale jakoś tak to szło :>
Użytkownik d0n tHe Pr0oo edytował ten post 05.07.2012 07:38
Odpowiedz

  • +
  • -
Albertd - zdjęcie Albertd 05.07.2012

Gdy uruchamia sie ta funkcja swiatlo jest ale po sekundzie gasnie ;d. Ogolnie chodzi mi o to by swiatlo utrzymywalo sie przez 10 sek(w obszarze gracza).
Odpowiedz

  • +
  • -
d0naciak - zdjęcie d0naciak 05.07.2012

public swiatlo(ent)
{
static Float:float_origin[3];
entity_get_vector(ent, EV_VEC_origin, float_origin);

static origin[3];
FVecIVec(float_origin, origin);

message_begin(MSG_PVS, SVC_TEMPENTITY, origin, 0);
write_byte(TE_DLIGHT);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_byte(40);
write_byte(255);
write_byte(0);
write_byte(0);
write_byte(10);
write_byte(10);
message_end();

entity_set_float(ent, EV_FL_nextthink, get_gametime() + 5.01);
set_task(10.0, "SwiatloOff", ent);
}

public SwiatloOff(ent)
{
static Float:float_origin[3];
entity_get_vector(ent, EV_VEC_origin, float_origin);

static origin[3];
FVecIVec(float_origin, origin);

message_begin(MSG_PVS, SVC_TEMPENTITY, origin, 2);
write_byte(TE_DLIGHT);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_byte(40);
write_byte(255);
write_byte(0);
write_byte(0);
write_byte(10);
write_byte(10);
message_end();
}
Odpowiedz

  • +
  • -
Albertd - zdjęcie Albertd 05.07.2012

d0n tHe Pr0oo, twoja funkcja swieci przez 3 sek, gasnie mignie i koniec, to jeszcze nie to ;P
Ja bym chcial zeby gracz przez 10 sek mial pod soba swiatlo
Użytkownik Albertd edytował ten post 05.07.2012 14:47
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 05.07.2012

#define TE_DLIGHT				   27	   // Dynamic light, effect world, minor entity effect
// write_byte(TE_DLIGHT)
// write_coord(position.x)
// write_coord(position.y)
// write_coord(position.z)
// write_byte(radius in 10's)
// write_byte(red)
// write_byte(green)
// write_byte(blue)
// write_byte(brightness)
// write_byte(life in 10's)
// write_byte(decay rate in 10's)

ale przedłużajać life do "100" dostaniesz światło w danym punkcie, nie światło pod graczem


musiałbyś co sekundę stawiać nowe światło w originie gracza 10 razy :)
Odpowiedz

  • +
  • -
Albertd - zdjęcie Albertd 05.07.2012

Czyli ustawic taska na 10 razy ? ;d Jezeli o to chodzi to, gdy tak robie to serwer crash.
Chyba ze chodzi o cos innego. : )
Odpowiedz

Gość_21977_* 05.07.2012

Coś w tym stylu będzie potrzebne:
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <engine>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "sw3356476fhd"
new times[33];

public plugin_init(){
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn, "player", "spawned", 1);
}

public spawned(id){
times[id]=10;
swiatlo(id);
}

public swiatlo(ent){
if(!ent || ent>32)return 0;
static Float:float_origin[3];
entity_get_vector(ent, EV_VEC_origin, float_origin);

static origin[3];
FVecIVec(float_origin, origin);

message_begin(MSG_PVS, SVC_TEMPENTITY, origin, 0);
write_byte(TE_DLIGHT);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_byte(40);
write_byte(255);
write_byte(0);
write_byte(0);
write_byte(10);
write_byte(10);
message_end();

if(--times[ent]>=0)set_task(1.0,"swiatlo",ent);
return 0;
}
Odpowiedz

Gość_21977_* 05.07.2012

// write_byte(brightness)

Tego raczej nie ma ;)
Odpowiedz

  • +
  • -
Albertd - zdjęcie Albertd 05.07.2012

Efekt, nie jest taki jak oczekiwalem, ale i tak jest super, troszeczke jeszcze pozmienialem by wygladalo to jak swiatlo pod graczem, i nie wyglada to najgorzej.
Mysle ze taki efekt jest wystarczajacy, chociaz jak ktos ma jeszcze jakis pomysl to mozna pw ;d

Wszystkich nagrodze punktami.
Dziekuje za pomoc.

Mozna zamknac.
Odpowiedz

Gość_21977_* 07.07.2012

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany