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

Klasa z totemem do Diablo by DarkGL


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
8 odpowiedzi w tym temacie

#1 Kogut

    Wszechpomocny

  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:317
  • GG:
  • Lokalizacja:warszawa
Offline

Napisano 09.12.2012 20:22

Chciałbym aby totemu używało się gdy gracz ma wyciągnięty nóż i naciśnie przycisk T. Sma totemu do klasy już dodałem, oraz z tym przyciskiem to wiem, że trzeba uzyć tego http://amxx.pl/dokum...get_user_button
Sma

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <diablo_nowe.inc>
#include <fakemeta>
#include <engine>
#include <fun>



#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

new bool:bKlasa[33]
new sprite_blast,
sprite_white;


public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
diablo_register_class("Test", 100, "<br>Gdy wyciagne noz i nacisnie przycisk R polozy na ziemi podpalajacy totem", FLAG_ALL)
}
public diablo_class_enabled(id){
bKlasa[id] = true;
}

public diablo_class_disabled(id){
bKlasa[id] = false;
}

stock Spawn_Ent(const szNazwaKlasy[])
{
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, szNazwaKlasy))
set_pev(ent, pev_origin, {0.0, 0.0, 0.0})
dllfunc(DLLFunc_Spawn, ent)
return ent
}


public item_zamroz(id)
{


new origin[3]
pev(id,pev_origin,origin)

new ent = Spawn_Ent("info_target")
set_pev(ent,pev_classname,"Effect_Zamroz_Totem")
set_pev(ent,pev_owner,id)
set_pev(ent,pev_solid,SOLID_TRIGGER)
set_pev(ent,pev_origin,origin)
set_pev(ent,pev_ltime, halflife_time() + 15 + 0.1)

engfunc(EngFunc_SetModel, ent, "addons/amxmodx/diablo/totem_heal.mdl")
set_rendering ( ent, kRenderFxGlowShell, 0,100,255, kRenderFxNone, 255 )
engfunc(EngFunc_DropToFloor,ent)

set_pev(ent,pev_nextthink, halflife_time() + 0.1)

return PLUGIN_CONTINUE
}

public Effect_Zamroz_Totem_Think(ent)
{
new id = pev(ent,pev_owner)
new totem_dist = 300

//We have emitted beam. Apply effect (this is delayed)
if (pev(ent,pev_euser2) == 1)
{
new Float:forigin[3], origin[3]
pev(ent,pev_origin,forigin)
FVecIVec(forigin,origin)

//Find people near and damage them
new entlist[513]
new numfound = find_sphere_class(0,"player",totem_dist+0.0,entlist,512,forigin)

for (new i=0; i < numfound; i++)
{
new pid = entlist[i]

if (get_user_team(pid) == get_user_team(id))
continue

if (is_user_alive(pid)){
set_user_maxspeed(pid, 1.0)
set_task(15.0, "off_zamroz", pid)
}
}

set_pev(ent,pev_euser2,0)
set_pev(ent,pev_nextthink, halflife_time() + 1.5)

return PLUGIN_CONTINUE
}

//Entity should be destroyed because livetime is over
if (pev(ent,pev_ltime) < halflife_time() || !is_user_alive(id))
{
remove_entity(ent)
return PLUGIN_CONTINUE
}

//If this object is almost dead, apply some render to make it fade out
if (pev(ent,pev_ltime)-2.0 < halflife_time())
set_rendering ( ent, kRenderFxNone, 255,255,255, kRenderTransAlpha, 100 )

new Float:forigin[3], origin[3]
pev(ent,pev_origin,forigin)
FVecIVec(forigin,origin)

//Find people near and give them health
message_begin( MSG_BROADCAST, SVC_TEMPENTITY, origin );
write_byte( TE_BEAMCYLINDER );
write_coord( origin[0] );
write_coord( origin[1] );
write_coord( origin[2] );
write_coord( origin[0] );
write_coord( origin[1] + totem_dist );
write_coord( origin[2] + totem_dist );
write_short( sprite_white );
write_byte( 0 ); // startframe
write_byte( 0 ); // framerate
write_byte( 10 ); // life
write_byte( 10 ); // width
write_byte( 255 ); // noise
write_byte( 0 ); // r, g, b
write_byte( 100 ); // r, g, b
write_byte( 255 ); // r, g, b
write_byte( 128 ); // brightness
write_byte( 5 ); // speed
message_end();

set_pev(ent,pev_euser2,1)
set_pev(ent,pev_nextthink, halflife_time() + 0.5)


return PLUGIN_CONTINUE

}

public off_zamroz1(pid){
set_user_maxspeed(pid, 270.0)
}

  • +
  • -
  • 0

#2 Onyke

    Godlike

  • Przyjaciel

Reputacja: 708
Guru

  • Postów:2 178
Offline

Napisano 09.12.2012 20:34

Do plugin_init dodaj
register_impulse(201, "cmdImpulse201");

i gdzieś w kodzie
public cmdImpulse201(id){
new weapon = get_user_weapon(id)
if(weapon == CSW_KNIFE){
item_zamroz(id)
}
}

Powinno zadziałać.
  • +
  • -
  • 1

#3 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 09.12.2012 20:45

Jeżeli nie musi być koniecznie tak jak mówisz tylko może być na przycisk E to użyj forwardu diablo_class_skill_used(id);
  • +
  • -
  • 1

#4 Kogut

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:317
  • GG:
  • Lokalizacja:warszawa
Offline

Napisano 09.12.2012 21:00

Onyke masz plusa, Dark a jeżeli miał bym zrobić przez ten forwad to jak poprawnie tego użyć ?
tak ?

public diablo_class_skill_used(id);
{
item_zamroz(id)
}


Użytkownik Kogut edytował ten post 09.12.2012 21:01

  • +
  • -
  • 0

#5 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 09.12.2012 21:02

Tak, jeśli masz załączone diablo od darka .inc
public diablo_class_skill_used(id){
// kod od twojej mocy po nacisnieciu E
}

  • +
  • -
  • 1

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!


#6 Kogut

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:317
  • GG:
  • Lokalizacja:warszawa
Offline

Napisano 09.12.2012 21:30

Niestety ale gdy naciskam e nic się nie dzieje
albo funckja w diablo_class_skill_used jest źle wpisana albo coś nie tak z tym totemem całym
takie mam domysły ^D^

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <diablo_nowe.inc>
#include <fakemeta>
//#include <fakemeta_const.inc>
#include <engine>
#include <fun>



#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

new bool:bKlasa[33]
new sprite_blast,
sprite_white;


public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
diablo_register_class("Test", 100, "<br>Gdy wyciagne noz i nacisnie przycisk R polozy na ziemi podpalajacy totem", FLAG_ALL)

}
public diablo_class_enabled(id){
bKlasa[id] = true;
}

public diablo_class_disabled(id){
bKlasa[id] = false;
}


public plugin_precache()
{
precache_model("models/diablomod/totem_heal.mdl")
}



stock Spawn_Ent(const szNazwaKlasy[])
{
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, szNazwaKlasy))
set_pev(ent, pev_origin, {0.0, 0.0, 0.0})
dllfunc(DLLFunc_Spawn, ent)
return ent
}

public diablo_class_skill_used(id){

item_zamroz(id)
}

public item_zamroz(id)
{


new origin[3]
pev(id,pev_origin,origin)

new ent = Spawn_Ent("info_target")
set_pev(ent,pev_classname,"Effect_Zamroz_Totem")
set_pev(ent,pev_owner,id)
set_pev(ent,pev_solid,SOLID_TRIGGER)
set_pev(ent,pev_origin,origin)
set_pev(ent,pev_ltime, halflife_time() + 15 + 0.1)

engfunc(EngFunc_SetModel, ent, "addons/amxmodx/diablo/totem_heal.mdl")
set_rendering ( ent, kRenderFxGlowShell, 0,100,255, kRenderFxNone, 255 )
engfunc(EngFunc_DropToFloor,ent)

set_pev(ent,pev_nextthink, halflife_time() + 0.1)

return PLUGIN_CONTINUE
}

public Effect_Zamroz_Totem_Think(ent)
{
new id = pev(ent,pev_owner)
new totem_dist = 300

//We have emitted beam. Apply effect (this is delayed)
if (pev(ent,pev_euser2) == 1)
{
new Float:forigin[3], origin[3]
pev(ent,pev_origin,forigin)
FVecIVec(forigin,origin)

//Find people near and damage them
new entlist[513]
new numfound = find_sphere_class(0,"player",totem_dist+0.0,entlist,512,forigin)

for (new i=0; i < numfound; i++)
{
new pid = entlist[i]

if (get_user_team(pid) == get_user_team(id))
continue

if (is_user_alive(pid)){
set_user_maxspeed(pid, 1.0)
set_task(15.0, "off_zamroz", pid)
}
}

set_pev(ent,pev_euser2,0)
set_pev(ent,pev_nextthink, halflife_time() + 1.5)

return PLUGIN_CONTINUE
}

//Entity should be destroyed because livetime is over
if (pev(ent,pev_ltime) < halflife_time() || !is_user_alive(id))
{
remove_entity(ent)
return PLUGIN_CONTINUE
}

//If this object is almost dead, apply some render to make it fade out
if (pev(ent,pev_ltime)-2.0 < halflife_time())
set_rendering ( ent, kRenderFxNone, 255,255,255, kRenderTransAlpha, 100 )

new Float:forigin[3], origin[3]
pev(ent,pev_origin,forigin)
FVecIVec(forigin,origin)

//Find people near and give them health
message_begin( MSG_BROADCAST, SVC_TEMPENTITY, origin );
write_byte( TE_BEAMCYLINDER );
write_coord( origin[0] );
write_coord( origin[1] );
write_coord( origin[2] );
write_coord( origin[0] );
write_coord( origin[1] + totem_dist );
write_coord( origin[2] + totem_dist );
write_short( sprite_white );
write_byte( 0 ); // startframe
write_byte( 0 ); // framerate
write_byte( 10 ); // life
write_byte( 10 ); // width
write_byte( 255 ); // noise
write_byte( 0 ); // r, g, b
write_byte( 100 ); // r, g, b
write_byte( 255 ); // r, g, b
write_byte( 128 ); // brightness
write_byte( 5 ); // speed
message_end();

set_pev(ent,pev_euser2,1)
set_pev(ent,pev_nextthink, halflife_time() + 0.5)


return PLUGIN_CONTINUE

}

public off_zamroz1(pid){
set_user_maxspeed(pid, 270.0)
}


Użytkownik Kogut edytował ten post 09.12.2012 21:32

  • +
  • -
  • 0

#7 Kogut

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:317
  • GG:
  • Lokalizacja:warszawa
Offline

Napisano 10.12.2012 10:31

Takie pytanko czy w tym pluginie trzeba pobierać ten plik totem_heal.mdl bo tu np nie widze by trzeba bylo http://amxx.pl/topic...em-odpychajacy/
  • +
  • -
  • 0

#8 Kogut

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:317
  • GG:
  • Lokalizacja:warszawa
Offline

Napisano 10.12.2012 17:04

okej naprawiłem , totem moge postawić lecz dalej nic się nie dzieje tak jak by funckja item_zamroz nie "pociągała dalszych konsekwencji "
Proszę o pomoc
  • +
  • -
  • 0

#9 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 12.12.2012 17:30

Dostajesz jakieś logi ?
  • +
  • -
  • 0




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

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