←  Poradniki oraz Łatki

AMXX.pl: Support AMX Mod X i SourceMod

»

Dodatek
Korzenie ala War3Ft

  • +
  • -
Stachuu :D ?? - zdjęcie Stachuu :D ?? 31.07.2011

Kazdy pewnie zna korzenie z war3ft

dziś pokażę wam jak dodać je do diablo :F
u góry

#define	TASK_ENTANGLEWAIT	928	
new zatakowany[33],totemstop[33]            ///////////////// (dalem na 2 zmienne mozna na 1 )
up polecam wyzerować w roundstart jak ktoś chce

plugin_precache
dodaj
precache_sound("diablosound/korzen.wav");

w
public damage(id)
dodaj

add_bonus_korzen(attacker_id,id)

w
set_speedchange(id)
nad
set_user_maxspeed(id, agi + speeds)
dodaj
if(totemstop[id] == 1) speeds -= 9250
jakby ktoś nie wiedzial
if(totemstop[id] == 1) speeds -= 9250
		set_user_maxspeed(id, agi + speeds)


to na koniec

Spoiler


myślę ze o niczym nie zapomniałem jak coś piszcie.

Załączone pliki

  • Załączony plik  korzen.wav   35,05 KB   147 Ilość pobrań
Odpowiedz

  • +
  • -
Juma - zdjęcie Juma 31.07.2011

Kazdy pewnie zna korzenie z war3ft


No niestety nie każdy ;? Poprosiłbym o jakiegoś screena lub dobry opis. Plusik za kod, chociaż go teraz nie sprawdzę.
Odpowiedz

  • +
  • -
Dragonite - zdjęcie Dragonite 05.08.2011

jak to dac klasie?
Odpowiedz

masterek - zdjęcie masterek 05.08.2011

if(player_class[attacker_id] == np klasa &&
Odpowiedz

  • +
  • -
Dragonite - zdjęcie Dragonite 07.08.2011

nie dziala to :/
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 10.08.2011

Nigdzie nie widzę do czego przypisałeś "sprite_smoke1".
Odpowiedz

VVirus - zdjęcie VVirus 11.08.2011

A ja mam z tym problem

Error: Undefined symbol "sprite_smoke1" on line 14366


edit///

wywaliłem kod tam gdzie błąd mam z kodu teraz jest taki :

public add_bonus_korzen(attacker_id,id)
{
if(player_class[attacker_id] == Diablo && (random_num(1,5) == 1) && get_user_team(attacker_id) != get_user_team(id)){

if (!is_user_alive(id))
return PLUGIN_HANDLED

if (zatakowany[id] == 1)
return PLUGIN_HANDLED

NE_ULT_Entangle(id)
zatakowany[id] = 1

}
return PLUGIN_HANDLED
}
stock Create_TE_BEAMFOLLOW(entity, iSprite, life, width, red, green, blue, alpha){

message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
write_byte( TE_BEAMFOLLOW )
write_short( entity ) // entity
write_short( iSprite ) // model
write_byte( life ) // life
write_byte( width ) // width
write_byte( red ) // red
write_byte( green ) // green
write_byte( blue ) // blue
write_byte( alpha ) // brightness
message_end()
}
public Create_TE_BE(start[3], end[3],startFrame, frameRate, life, width, noise, red, green, blue, alpha, spid,sprite){

message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
write_byte( TE_BEAMPOINTS )
write_coord( start[0] )
write_coord( start[1] )
write_coord( start[2] )
write_coord( end[0] )
write_coord( end[1] )
write_coord( end[2] )
write_short( sprite ) // model
write_byte( startFrame ) // start frame
write_byte( frameRate ) // framerate
write_byte( life ) // life
write_byte( width ) // width
write_byte( noise ) // noise
write_byte( red ) // red
write_byte( green ) // green
write_byte( blue ) // blue
write_byte( alpha ) // brightness
write_byte( spid ) // speed
message_end()
}
public NE_ULT_Entangle(iEnemy )
{

// Follow the user until they stop moving...
new parm[4];
parm[0] = iEnemy;
parm[1] = 0;
parm[2] = 0;
parm[3] = 0;
_NE_ULT_EntangleWait( parm );

}

// Wait for the user to stop moving
public _NE_ULT_EntangleWait( parm[4] )
{

new id = parm[0];

new vOrigin[3];
get_user_origin( id, vOrigin );

// Checking to see if the user has actually stopped yet?
if ( vOrigin[0] == parm[1] && vOrigin[1] == parm[2] && vOrigin[2] == parm[3] )
{
NE_ULT_EntangleEffect( id )
}
else
{
parm[1] = vOrigin[0];
parm[2] = vOrigin[1];
parm[3] = vOrigin[2];

set_task( 0.1, "_NE_ULT_EntangleWait", TASK_ENTANGLEWAIT + id, parm, 4 );
}
return;
}

public NE_ULT_EntangleEffect( id )
{
if(!is_user_alive(id)) return 1;

totemstop[id] = 1
set_speedchange(id)
set_task( 10.0, "off_zamroz",TASK_ENTANGLEWAIT + id)
// Get the user's origin
new vOrigin[3];
get_user_origin( id, vOrigin );

// Play the entangle sound
emit_sound( id, CHAN_STATIC, "diablosound/korzen.wav", 1.0, ATTN_NORM, 0, PITCH_NORM );

new iStart[3], iEnd[3], iHeight;
new iRadius = 20, iCounter = 0;
new x1, y1, x2, y2;

// Some sweet crap that I don't understand courtesy of SpaceDude - draws the "cylinder" around the player
while ( iCounter <= 7 )
{
if ( iCounter == 0 || iCounter == 8 )
x1 = -iRadius;
else if ( iCounter == 1 || iCounter == 7 )
x1 = -iRadius * 100/141;
else if ( iCounter == 2 || iCounter == 6 )
x1 = 0;
else if ( iCounter == 3 || iCounter == 5 )
x1 = iRadius*100/141
else if ( iCounter == 4 )
x1 = iRadius

if ( iCounter <= 4 )
y1 = sqroot( iRadius*iRadius-x1*x1 );
else
y1 = -sqroot( iRadius*iRadius-x1*x1 );

++iCounter;

if ( iCounter == 0 || iCounter == 8 )
x2 = -iRadius;
else if ( iCounter == 1 || iCounter==7 )
x2 = -iRadius*100/141;
else if ( iCounter == 2 || iCounter==6 )
x2 = 0;
else if ( iCounter == 3 || iCounter==5 )
x2 = iRadius*100/141;
else if ( iCounter == 4 )
x2 = iRadius;

if ( iCounter <= 4 )
y2 = sqroot( iRadius*iRadius-x2*x2 );
else
y2 = -sqroot( iRadius*iRadius-x2*x2 );

iHeight = 16 + 2 * iCounter;

while ( iHeight > -40 )
{

iStart[0] = vOrigin[0] + x1;
iStart[1] = vOrigin[1] + y1;
iStart[2] = vOrigin[2] + iHeight;
iEnd[0] = vOrigin[0] + x2;
iEnd[1] = vOrigin[1] + y2;
iEnd[2] = vOrigin[2] + iHeight + 2;

Create_TE_BE( iStart, iEnd, 0, 0, 100, 10, 5, 10, 108, 23, 255, 0 ,sprite_beam);

iHeight -= 16;
}
}

return 0;
}

Użytkownik Majster VVirus edytował ten post 11.08.2011 13:48
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 11.08.2011

Naprawienie błędu nie polega na tym, że usuwamy linijkę tam gdzie jest błąd... Pytałem się autora tematu co z "sprite_smoke1", ale na razie jeszcze nie odpowiedział. Sam domyśliłem się, że można użyć "sprite_smoke", które jest już w diablo, ale może jednak dodany został tu inny sprite.
Odpowiedz

  • +
  • -
Stachuu :D ?? - zdjęcie Stachuu :D ?? 11.08.2011

jakby ktoś nie wiedział

sprite_smoke1 = precache_model("sprites/smoke.spr")
Odpowiedz

VVirus - zdjęcie VVirus 11.08.2011

To mogłeś na początku napisać :D

Dodano 11 sierpień 2011 - 16:51:
Dodatkowo pod
new sprite_smoke = 0

dodać
new sprite_smoke1 = 0


oraz mam błąd z :

public off_zamroz(pid){ 	pid -=TASK_ENTANGLEWAIT 	totemstop[pid] = 0 	zatakowany[pid] = 0 	set_speedchange(pid) }


dokładnie z :

public off_zamroz(pid)



wiecie co nie tak ? :D
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 11.08.2011

A jaki masz ten błąd?
Odpowiedz

VVirus - zdjęcie VVirus 12.08.2011

Taki o : :P

Error: Symbol already defined: "off zamroz" on line 14466
Odpowiedz

  • +
  • -
Stachuu :D ?? - zdjęcie Stachuu :D ?? 12.08.2011

dodawałeś jakiś totem na zamrożenie ... czy coś


zamień off_zamroz na cokolwiek


przy wywołaniu i sama nazwa Publica
Odpowiedz

NewBorn - zdjęcie NewBorn 17.08.2011

Ale co daje ta moc czy co to jest?? :) Nie wiem co to i chciałbym się dowiedzieć czy warto to robić
Odpowiedz

  • +
  • -
dog_1 - zdjęcie dog_1 19.08.2011

Jejuś, moc ta zamraża w miejscu gracza na 10 sek.
Nie wiem czy ta moc odpowiednio działa, ponieważ w ogóle nic się nie dzieje gdy próbuję jej użyć. Nie wiem co jest nie tak.
Odpowiedz

  • +
  • -
Stachuu :D ?? - zdjęcie Stachuu :D ?? 19.08.2011

u mnie moc działa prawidłowo

zamaraza+robi spirale wokół gracza
Odpowiedz

Skull3D - zdjęcie Skull3D 27.08.2011

Mozna screena tego sprite w grze ?
+ bedzie
Odpowiedz

  • +
  • -
Stachuu :D ?? - zdjęcie Stachuu :D ?? 28.08.2011

http://steamcommunit...9261?tab=public

masz w mojej bibliotece steam dałem .


P.S na ninja tam jest jak cos :F
Użytkownik Stachu123 edytował ten post 28.08.2011 07:47
Odpowiedz

Skull3D - zdjęcie Skull3D 28.08.2011

Thx, szukalem tego sprita :)
Odpowiedz

  • +
  • -
Kapucha112 - zdjęcie Kapucha112 09.11.2011

Działa i to całkiem nieźle, ustawiłem sobie tylko by czas efektu zależny był od inteligencji.
Odpowiedz