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
Dodatek

Totem Odpychajacy

Dodatek

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

#1 Stachuu :D ??

    Wszechobecny

  • Użytkownik

Reputacja: 237
Wszechwidzący

  • Postów:476
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Karsznice
Offline

Napisano 13.07.2011 16:01

Przedstawię wam 1 tak jakby moc pod totem (można spokojnie zamienić to na moc klasy itp.)

robimy nowa zmienna

new player_b_odepch[33] = 1


w
check_magic(id)


if (player_b_odepch[id] > 0) item_toteme(id)


w
 reset_item_skills(id) 


player_b_odepch[id] = 0


w
iteminfo(id)

if (player_b_odepch[id] > 0)
{
num_to_str(player_b_odepch[id],TempSkill,10)
add(itemEffect,199,"Masz totem odpychajacy. <br> Odpychasz na ")
add(itemEffect,199,TempSkill)
add(itemEffect,199," jednostek")
}

w
award_item(id)

case 186:
{
player_item_name[id] = "Repulsive Totem"
player_item_id[id] = rannum
player_b_odepch[id]=random_num(255,680)
ColorChat(0, GREEN, "^x04 %s^x01 Otrzymal ^x04 %s^x01 ", name, player_item_name[id])
}


na końcu lub gdzie chcesz

public item_toteme(id)
{
if (used_item[id])
{
hudmsg(id,2.0,"Totemu mozesz uzyc raz na runde!")
return PLUGIN_CONTINUE
}

used_item[id] = true

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

new ent = Spawn_Ent("info_target")
set_pev(ent,pev_classname,"Effect_Ode_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, 93,79,82, kRenderFxNone, 255 )
engfunc(EngFunc_DropToFloor,ent)

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

return PLUGIN_CONTINUE
}

public Effect_Ode_Totem_Think(ent)
{
new id = pev(ent,pev_owner)
new totem_dist = player_b_odepch[id]

//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 (pid == id || !is_user_alive(pid))
continue

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

new vOrigin[3];

new Float:gfOrigin[2][3], b;

entity_get_vector(pid, EV_VEC_origin, gfOrigin[1]);
entity_get_vector(ent, EV_VEC_origin, gfOrigin[0]);

get_user_origin(pid, vOrigin); ///
for(b = 0; b <= 2; b ++)
{
gfOrigin[1][b] -= gfOrigin[0][b]; // oblicza odległość miedzy środkiem totemu a graczem w totemie
gfOrigin[1][b] +=30; //wiem ze można dać +=210 ale kiedyś nie wiem nie chciało mi chodzić może teraz będzie.
gfOrigin[1][b] *=7; // zmieniając to zmieni się sile odpychania
}

entity_set_vector(pid, EV_VEC_velocity, gfOrigin[1]);
change_health(pid,-40,id,"")

message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(0);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_coord(vOrigin[0]);
write_coord(vOrigin[1]);
write_coord(vOrigin[2]);
write_short(sprite_lgt);
write_byte(1);
write_byte(5);
write_byte(2);
write_byte(20);
write_byte(30);
write_byte(200);
write_byte(200);
write_byte(200);
write_byte(200);
write_byte(200);
message_end();

}

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)
new red = random_num(1,255) //// to dałem se aby był kolorowy totem (czytaj aura)
new grenn = random_num(1,255)
new blue = random_num(1,255)
//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( red); // r, g, b
write_byte( grenn ); // r, g, b
write_byte( blue ); // r, g, b
write_byte( 170 ); // brightness
write_byte( 6 ); // speed
message_end();



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


return PLUGIN_CONTINUE

}

a i w plugin_init

register_think("Effect_Ode_Totem","Effect_Ode_Totem_Think")


Powinno trybic można dodać do tego dźwięk (chętni pisać bo mam na kompie ) ale nie polecam zbytnio ^^
  • +
  • -
  • 4

#2 ogieR8

    Wszechmogący

  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 06.01.2012 21:25

Sorry, że odświeżam, ale umiałbyś zrobić, aby gdy się kliknie odepchało innych od Ciebie ? A nie tworzyło do tego totemu ? No wiesz.. gram, leci na mnie 2 z kosą np, klikam i odlatują. Ale to nie przez xxx sekund odpycha graczy, ale jak raz kliknę to odepchnie graczy w zasięgu xxx. Fajne byłoby, gdyby można było tego użyć 3 razy na rundę, z góry wielkie dzięki :>
  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#3 ogieR8

    Wszechmogący

  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 07.05.2012 19:54

Pytanie wyżej olane, okey - już troszkę się podszkoliłem i mogę sobie to sam zrobić, ale pytanie czy Ty to dobrze zrobiłeś ; O

new numfound = find_sphere_class(0, "player", totem_dist+0.0, entlist, 512,forigin);


Mi się wydaję, że to sprawdza wszystkich graczy w zasięgu 'wartości totemu' od każdego gracza, bo ID 0 - wszyscy gracze, nie powinno tutaj być 'Ent' - mogę się mylić, ok. Tylko pytam, bo na to to forum jest, żeby się odkształcać, pytać i uczyć.
  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#4 Stachuu :D ??

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 237
Wszechwidzący

  • Postów:476
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Karsznice
Offline

Napisano 08.05.2012 20:20

nie sprawdza po id tylko po polozeniu
forigin
  • +
  • -
  • 1

#5 Franeczek123

    Banned

  • Zbanowany

Reputacja: 0
Nowy

  • Postów:10
  • Lokalizacja:Warszawa
Offline

Napisano 13.06.2012 19:00

Napisze mi ktoś jak zrobić z tego moc klasy jak i dodać aby obszar odpychania wzrastał z inteligencją ?





Również z jednym lub większą ilością słów kluczowych: Dodatek

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

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