Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Podpalenie.


  • Zamknięty Temat jest zamknięty
7 odpowiedzi w tym temacie

#1 GoldeN

    Wszechmogący

  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 18.11.2010 21:54

public ignite_effects(id)
{
id = (id > 32) ? id - 345 : id;
if (is_user_alive(id) && onfire[id])
{
new origin[3];
get_user_origin(id, origin);

//TE_SPRITE - additive sprite, plays 1 cycle
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(17);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_short(mflash);
write_byte(20);
write_byte(200);
message_end();

//Smoke
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, origin);
write_byte(5);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_short(smoke);
write_byte(20);
write_byte(15);
message_end();

set_task(1.0, "ignite_effects", id+345);
}
else
{
if(onfire[id])
{
emit_sound(id, CHAN_AUTO, "scientist/scream21.wav", 0.6, ATTN_NORM, 0, PITCH_HIGH);
onfire[id] = 0;
}
if(task_exists(id + 345))
remove_task(id + 345);
}
return PLUGIN_CONTINUE;
}

public ignite_player(id)
{
id = (id > 32) ? id - 344 : id;
if (is_user_alive(id) && onfire[id] )
{
new origin[3];
get_user_origin(id, origin);

ExecuteHam(Ham_TakeDamage, id, 0, id, 10.0, 1);

message_begin(MSG_ONE, gmsgDamage, {0,0,0}, id);
write_byte(30);
write_byte(30);
write_long(1<<21);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
message_end();

//create some sound
emit_sound(id, CHAN_ITEM, "ambience/flameburst1.wav", 0.6, ATTN_NORM, 0, PITCH_NORM);

//Call Again in 2 seconds
set_task(1.0, "ignite_player", id + 344, _, _, "b");
}
else
{
if(task_exists(id + 344))
remove_task(id + 344);
}
return PLUGIN_CONTINUE;
}
public fire_player(id)
{
if(onfire[id] == 1)
{
ignite_effects(id);
ignite_player(id);
set_task(5.0, "podpal_off",_, _, _, "a");
}
}



public podpal_go(id)
{
new czas = 15-player_intelligence[id]/50
if (halflife_time()-gravitytimer[id] <= czas)
{
client_print(id,print_center,"The Eye of Diablo aktywne co %i sekund.",czas)
return PLUGIN_CONTINUE
}
gravitytimer[id] = floatround(halflife_time())

new koordy_gracza[3], koordy_przeciwnika[3];
get_user_origin(id, koordy_gracza);
for(new i = 1; i <= 32; i++)
{
if(!is_user_alive(i) || get_user_team(id) == get_user_team(i))
continue;

get_user_origin(i, koordy_przeciwnika);

if(get_distance(koordy_gracza,koordy_przeciwnika) < 300 + player_intelligence[id])
{
message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, i)
write_short(1<<16);
write_short(1<<13);
write_short(1<<14);
message_end();

//// FUNKCJA OD PODPALENIA I EFEKTY
onfire[i] = 1
fire_player(i)
}
}
return PLUGIN_CONTINUE;
}

public podpal_off(id)
{
onfire[id] = 0;

if(task_exists(id + 344))
remove_task(id + 344);
if(task_exists(id + 345))
remove_task(id + 345);
}


plugin_init :

gmsgDamage = get_user_msgid("Damage");


Globalne:

new gmsgDamage, smoke, mflash;
new onfire[33];

new podpal_gracza[33];


I oczywiście precache, ale to już mało ważne.

Co ja tutaj mam źle? Powinno działać tak:

Wciskam E i w obszarze "podpala graczy", co sekundę odbiera po 10hp i efekt i tak przez 5 sekund, po 5 sekundach powinno się wyłączyć - a nie robi tego. Dlaczego?

Użytkownik GoldeNx3 edytował ten post 18.11.2010 21:54


#2 Frozen

    Życzliwy

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:33
  • Imię:Mati
  • Lokalizacja:Polska
Offline

Napisano 18.11.2010 23:33

a wyskakuje jakis blad przy kompilacji?

Bo klamry 100% dobre
a w skriptu nie ma problemu...
powinno dzialac ale moze jakis plugin to blockuje?
ja sie na "podpalaniu" nie znam :D czekaj na kogos z support

pozdro
*BlackToxic*
  • +
  • -
  • 1
Dołączona grafika

#3 Knopers

    Nie patrz tak na mnie !

  • Przyjaciel

Reputacja: 588
Wszechwiedzący

  • Postów:2 013
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Cz-wa
Offline

Napisano 19.11.2010 12:52

Zamiast:
set_task(5.0, "podpal_off",_, _, _, "a");
Daj:
set_task(5.0, "podpal_off", id);
  • +
  • -
  • 1

#4 Frozen

    Życzliwy

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:33
  • Imię:Mati
  • Lokalizacja:Polska
Offline

Napisano 19.11.2010 12:55

´@ up

masz dobre oczy niwe widzialem to xD

sorry

set_task(1.0, "ignite_player", id + 344, _, _, "b");


a to?


bo podpal off ma cos z koncem podpalania a na poczatek??

ale moze to zalezy od tego...

niech jakis pro sprawdzi xD
  • +
  • -
  • 1
Dołączona grafika

#5 Knopers

    Nie patrz tak na mnie !

  • Przyjaciel

Reputacja: 588
Wszechwiedzący

  • Postów:2 013
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Cz-wa
Offline

Napisano 19.11.2010 13:02

Nie reszta powinna być dobrze.
Jedynie ten task off można było by dodać jakieś liczby do id żeby się taski nie powtarzały.
  • +
  • -
  • 1

#6 GoldeN

    Wszechmogący

  • Autor tematu
  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 19.11.2010 17:38

Na górze pisałem, że nie wyłącza się i wszystko działa. Teraz sprawdzę to. I czemu jak przeciwnika zabija to nie wyświetla w prawym górnym rogu?

Dodano 20 listopad 2010 - 19:14:
Zrobiłem tak:

public ignite_effects(id)
{
id = (id > 32) ? id - 345 : id;
if (is_user_alive(id) && onfire[id])
{
new origin[3];
get_user_origin(id, origin);

//TE_SPRITE - additive sprite, plays 1 cycle
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(17);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_short(mflash);
write_byte(20);
write_byte(200);
message_end();

//Smoke
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, origin);
write_byte(5);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_short(smoke);
write_byte(20);
write_byte(15);
message_end();

set_task(1.0, "ignite_effects", id+345);
}
else
{
if(onfire[id])
{
emit_sound(id, CHAN_AUTO, "scientist/scream21.wav", 0.6, ATTN_NORM, 0, PITCH_HIGH);
onfire[id] = 0;
}
if(task_exists(id + 345))
remove_task(id + 345);
}
return PLUGIN_CONTINUE;
}

public ignite_player(id)
{
id = (id > 32) ? id - 344 : id;
if (is_user_alive(id) && onfire[id] )
{
new origin[3];
get_user_origin(id, origin);

ExecuteHam(Ham_TakeDamage, id, 0, id, 10.0, 1);

message_begin(MSG_ONE, gmsgDamage, {0,0,0}, id);
write_byte(30);
write_byte(30);
write_long(1<<21);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
message_end();

//create some sound
emit_sound(id, CHAN_ITEM, "ambience/flameburst1.wav", 0.6, ATTN_NORM, 0, PITCH_NORM);

//Call Again in 2 seconds
set_task(1.0, "ignite_player", id + 344, _, _, "b");
}
else
{
if(task_exists(id + 344))
remove_task(id + 344);
}
return PLUGIN_CONTINUE;
}
public fire_player(id)
{
if(onfire[id] == 1)
{
ignite_effects(id);
ignite_player(id);
set_task(5.0, "podpal_off", id+940);
}
}



public podpal_go(id)
{
new czas = 15-player_intelligence[id]/50
if (halflife_time()-gravitytimer[id] <= czas)
{
client_print(id,print_center,"The Eye of Diablo aktywne co %i sekund.",czas)
return PLUGIN_CONTINUE
}
gravitytimer[id] = floatround(halflife_time())

new koordy_gracza[3], koordy_przeciwnika[3];
get_user_origin(id, koordy_gracza);
for(new i = 1; i <= 32; i++)
{
if(!is_user_alive(i) || get_user_team(id) == get_user_team(i))
continue;

get_user_origin(i, koordy_przeciwnika);

if(get_distance(koordy_gracza,koordy_przeciwnika) < 300 + player_intelligence[id])
{
message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, i)
write_short(1<<16);
write_short(1<<13);
write_short(1<<14);
message_end();

//// FUNKCJA OD PODPALENIA I EFEKTY
onfire[i] = 1
fire_player(i)
}
}
return PLUGIN_CONTINUE;
}

public podpal_off(id)
{
onfire[id] = 0;

if(task_exists(id + 344))
remove_task(id + 344);
if(task_exists(id + 345))
remove_task(id + 345);
}


I dalej się nie wyłącza!

#7 Knopers

    Nie patrz tak na mnie !

  • Przyjaciel

Reputacja: 588
Wszechwiedzący

  • Postów:2 013
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Cz-wa
Offline

Napisano 20.11.2010 21:06

Jeśli przerabiasz z jednej strony (taska) to przerób też z drugiej (funkcję)
Funkcja:


public podpal_off(id)
{
onfire[id] = 0;

if(task_exists(id + 344))
remove_task(id + 344);
if(task_exists(id + 345))
remove_task(id + 345);
}

Powinna wyglądać tak :

public podpal_off(id)
{
id -= 940;
onfire[id] = 0;

if(task_exists(id + 344))
remove_task(id + 344);
if(task_exists(id + 345))
remove_task(id + 345);
}

  • +
  • -
  • 1

#8 GoldeN

    Wszechmogący

  • Autor tematu
  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 21.11.2010 14:48

Dzięki, wszystko działa.




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych