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

Problem ze spadochronem?


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

#1 Play4Fun

    Zaawansowany

  • Użytkownik

Reputacja: 15
Początkujący

  • Postów:86
  • GG:
  • Imię:Dawid
  • Lokalizacja:Lublin
Offline

Napisano 27.05.2012 10:09

Witam.

Mam pewien problem, a mianowicie chodzi mi o to iż mam dwie klasy premium (anioł i demon).
Chciałbym podpiąć pod te dwie klasy dwa różne spadochrony (chodzi tu o modele).

Nie za bardzo mi to wychodzi. Może da radę zrobić to na oddzielnym pluginie?
Dodam też, że te dwie klasy premium są na dwie różne flagi.

Dziękuję za pomoc i pozdrawiam.
  • +
  • -
  • 0

#2 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 28.05.2012 13:48

Punkt po punkcie:
  • w plugin_precache zmieniasz z
    precache_model("models/parachute.mdl")
    

    na
    precache_model("models/parachute.mdl")
    precache_model("models/parachute2.mdl")

    Oczywiście nazwy i ścieżki dostosuj do swoich modeli.
  • w client_PreThink zmieniasz:
    entity_set_model(para_ent[id], "models/parachute.mdl")
    

    na
    if(klasa == klasa1)
    entity_set_model(para_ent[id], "models/parachute.mdl")
    else if(klasa == klasa2)
    entity_set_model(para_ent[id], "models/parachute2.mdl")

    Oczywiście tu też musisz dostosować nazwy i ścieżki modeli, a także warunki na sprawdzanie klas, nazwę tablicy bądź zmiennej entity spadochronów itp. gdyż nie wiem z jakiej implementacji spadochronu korzystasz.
Pamiętaj o tym, że nie możesz nadpisać modelu u gracza, który już istnieje, więc własnego modelu spadochronu nie zapisuj jako models/parachute.mdl, ale jakoś unikalnie. Tak samo gdy go zaktualizujesz, zapisz go pod nową nazwą i odpowiednio zmień zawartość pluginu.

Użytkownik GwynBleidD edytował ten post 28.05.2012 13:48

  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#3 Play4Fun

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 15
Początkujący

  • Postów:86
  • GG:
  • Imię:Dawid
  • Lokalizacja:Lublin
Offline

Napisano 28.05.2012 19:25

Wszystko ładnie ;) lecz ja nie mam w kodzie:

precache_model("models/parachute.mdl")

ani -->
entity_set_model(para_ent[id], "models/parachute.mdl")
Te zmienne są jak bym miał w kodzie diablo moda wpisany spadochron lecz ja go nie posiadam.
  • +
  • -
  • 0

#4 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 28.05.2012 20:51

GwynBleidD Ci wszystko ładnie wytłumaczył, a teraz każesz nam się domyślać, co masz w kodzie.
Podaj kod, bo nikt tego z kart nie wywróży.

#5 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 29.05.2012 04:53

W takim razie musisz jeszcze wcześniej scalić plugin spadochronu z diablo modem. Oto kod spadochronu przygotowany już do integracji z diablo modem. Odpowiednie forwardy w tym kodzie i w diablo modzie musisz ze sobą scalić, a includów nie dublować. Mam nadzieję, że sobie poradzisz ;)
#include <amxmodx>
#include <amxmisc>
#include <engine>

new para_ent[33];

public plugin_precache() {
precache_model("models/parachute.mdl")
precache_model("models/parachute2.mdl")
}

public client_connect(id) {
if(para_ent[id] > 0)
remove_entity(para_ent[id])
para_ent[id] = 0
}

public event_roundend() {
new MaxPlayers = get_maxplayers();
for( new id; id < MaxPlayers; id++ ) {
if(para_ent[id] > 0)
remove_entity(para_ent[id])
para_ent[id] = 0
}
}

}

public event_resethud( id ) {
if(para_ent[id] > 0)
remove_entity(para_ent[id])
para_ent[id] = 0
}

public death_event() {
new id = read_data(2)

if(para_ent[id] > 0)
{
remove_entity(para_ent[id])
}
para_ent[id] = 0
}

public client_PreThink(id) {
if( !is_user_alive(id) )
return PLUGIN_CONTINUE

if(klasa[id] != klasa1 && klasa[id] != klasa2)
return PLUGIN_CONTINUE;

if (get_user_button(id) & IN_USE ) {
if ( !( get_entity_flags(id) & FL_ONGROUND ) ) {
new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)
if(velocity[2] < 0) {
if (para_ent[id] == 0) {
para_ent[id] = create_entity("info_target")
if (para_ent[id] > 0) {
if(klasa[id] == klasa1)
entity_set_model(para_ent[id], "models/parachute.mdl")
else if(klasa[id] == klasa2)
entity_set_model(para_ent[id], "models/parachute2.mdl")
entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_edict(para_ent[id], EV_ENT_aiment, id)
}
}
if (para_ent[id] > 0) {
velocity[2] = (velocity[2] + 40.0 < -100) ? velocity[2] + 40.0 : -100.0
entity_set_vector(id, EV_VEC_velocity, velocity)
if (entity_get_float(para_ent[id], EV_FL_frame) < 0.0 || entity_get_float(para_ent[id], EV_FL_frame) > 254.0) {
if (entity_get_int(para_ent[id], EV_INT_sequence) != 1) {
entity_set_int(para_ent[id], EV_INT_sequence, 1)
}
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
} else
entity_set_float(para_ent[id], EV_FL_frame, entity_get_float(para_ent[id], EV_FL_frame) + 1.0)
}
} else if (para_ent[id] > 0) {
remove_entity(para_ent[id])
para_ent[id] = 0
}
} else if (para_ent[id] > 0) {
remove_entity(para_ent[id])
para_ent[id] = 0
}
} else if (get_user_oldbutton(id) & IN_USE) {
if (para_ent[id] > 0)
remove_entity(para_ent[id])
para_ent[id] = 0
}

return PLUGIN_CONTINUE
}

Użytkownik GwynBleidD edytował ten post 29.05.2012 04:54

  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#6 Play4Fun

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 15
Początkujący

  • Postów:86
  • GG:
  • Imię:Dawid
  • Lokalizacja:Lublin
Offline

Napisano 02.06.2012 17:27

#include <amxmodx>
#include <amxmisc>
#include <engine>

new para_ent[33];

public plugin_precache() {
precache_model("models/parachute.mdl")
precache_model("models/parachute2.mdl")
}

public client_connect(id) {
if(para_ent[id] > 0)
remove_entity(para_ent[id])
para_ent[id] = 0
}

public event_roundend() {
new MaxPlayers = get_maxplayers();
for( new id; id < MaxPlayers; id++ ) {
if(para_ent[id] > 0)
remove_entity(para_ent[id])
para_ent[id] = 0
}
}

}

public event_resethud( id ) {
if(para_ent[id] > 0)
remove_entity(para_ent[id])
para_ent[id] = 0
}

public death_event() {
new id = read_data(2)

if(para_ent[id] > 0)
{
remove_entity(para_ent[id])
}
para_ent[id] = 0
}

public client_PreThink(id) {
if( !is_user_alive(id) )
return PLUGIN_CONTINUE

if(klasa[id] != klasa1 && klasa[id] != klasa2)
return PLUGIN_CONTINUE;

if (get_user_button(id) & IN_USE ) {
if ( !( get_entity_flags(id) & FL_ONGROUND ) ) {
new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)
if(velocity[2] < 0) {
if (para_ent[id] == 0) {
para_ent[id] = create_entity("info_target")
if (para_ent[id] > 0) {
if(klasa[id] == klasa1)
entity_set_model(para_ent[id], "models/parachute.mdl")
else if(klasa[id] == klasa2)
entity_set_model(para_ent[id], "models/parachute2.mdl")
entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_edict(para_ent[id], EV_ENT_aiment, id)
}
}
if (para_ent[id] > 0) {
velocity[2] = (velocity[2] + 40.0 < -100) ? velocity[2] + 40.0 : -100.0
entity_set_vector(id, EV_VEC_velocity, velocity)
if (entity_get_float(para_ent[id], EV_FL_frame) < 0.0 || entity_get_float(para_ent[id], EV_FL_frame) > 254.0) {
if (entity_get_int(para_ent[id], EV_INT_sequence) != 1) {
entity_set_int(para_ent[id], EV_INT_sequence, 1)
}
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
} else
entity_set_float(para_ent[id], EV_FL_frame, entity_get_float(para_ent[id], EV_FL_frame) + 1.0)
}
} else if (para_ent[id] > 0) {
remove_entity(para_ent[id])
para_ent[id] = 0
}
} else if (para_ent[id] > 0) {
remove_entity(para_ent[id])
para_ent[id] = 0
}
} else if (get_user_oldbutton(id) & IN_USE) {
if (para_ent[id] > 0)
remove_entity(para_ent[id])
para_ent[id] = 0
}

return PLUGIN_CONTINUE
}


Mógłby mi ktoś wyżej wymieniony kod scalić z tym


public client_PreThink ( id )
{
if(!is_user_alive(id)||is_user_bot(id)) return PLUGIN_CONTINUE
new clip,ammo
new weapon = get_user_weapon(id,clip,ammo)
new button2 = get_user_button(id);
if(player_class[id]==Rycerz && weapon == CSW_KNIFE && freeze_ended)
{
if((button2 & IN_DUCK) && (button2 & IN_JUMP))
{
if(JumpsLeft[id]>0)
{
new flags = pev(id,pev_flags)
if(flags & FL_ONGROUND)
{
set_pev ( id, pev_flags, flags-FL_ONGROUND )

JumpsLeft[id]--

new Float:va[3],Float:v[3]
entity_get_vector(id,EV_VEC_v_angle,va)
v[0]=floatcos(va[1]/180.0*M_PI)*560.0
v[1]=floatsin(va[1]/180.0*M_PI)*560.0
v[2]=300.0
entity_set_vector(id,EV_VEC_velocity,v)
write_hud(id)
}
}
}
}
if(flashlight[id] && flashbattery[id] && (get_cvar_num("flashlight_custom")) && (player_class[id] == Czarodziej)) {
new num1, num2, num3
num1=random_num(0,2)
num2=random_num(-1,1)
num3=random_num(-1,1)
flashlight_r+=1+num1
if (flashlight_r>250) flashlight_r-=245
flashlight_g+=1+num2
if (flashlight_g>250) flashlight_g-=245
flashlight_b+=-1+num3
if (flashlight_b<5) flashlight_b+=240
new origin[3];
get_user_origin(id,origin,3);
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(27); // TE_DLIGHT
write_coord(origin[0]); // X
write_coord(origin[1]); // Y
write_coord(origin[2]); // Z
write_byte(get_cvar_num("flashlight_radius")); // radius
write_byte(flashlight_r); // R
write_byte(flashlight_g); // G
write_byte(flashlight_B); // B
write_byte(1); // life
write_byte(get_cvar_num("flashlight_decay")); // decay rate
message_end();

new index1, bodypart1
get_user_aiming(id,index1,bodypart1)
if ((get_user_team(id)!=get_user_team(index1)) && (index1!=0))
{
if ((index1!=54) && (is_user_connected(index1))) set_user_rendering(index1,kRenderFxGlowShell,flashlight_r,flashlight_g,flashlight_b,kRenderNormal,4)
remove_task(TASK_FLASH_LIGHT+index1);
set_task(7.5, "un_rander",TASK_FLASH_LIGHT+index1)
//set_task(15.0,"un_rander",TASK_NAME,index1)
}
}

//Before freeze_ended check
if (((player_b_silent[id] > 0) || (player_class[id] == Skrytobojca)) && is_user_alive(id))
entity_set_int(id, EV_INT_flTimeStepSound, 300)
if(!is_user_connected(id)) return PLUGIN_CONTINUE
if(!is_user_alive(id)||is_user_bot(id)) return PLUGIN_CONTINUE
new Float:vect[3]
entity_get_vector(id,EV_VEC_velocity,vect)
new Float: sped= floatsqroot(vect[0]*vect[0]+vect[1]*vect[1]+vect[2]*vect[2])
if((get_user_maxspeed(id)*5)>(sped*9))
entity_set_int(id, EV_INT_flTimeStepSound, 300)

//bow model
if (button2 & IN_RELOAD && on_knife[id] && button[id]==0 && player_class[id]==Elf){
bow[id]++
button[id] = 1;
command_bow(id)
}

if ((!(button2 & IN_RELOAD)) && on_knife[id] && button[id]==1) button[id]=0
//

if (!freeze_ended)
return PLUGIN_CONTINUE

if (earthstomp[id] != 0 && is_user_alive(id))
{
static Float:fallVelocity;
pev(id,pev_flFallVelocity,fallVelocity);

if(fallVelocity) falling[id] = true
else falling[id] = false;
}


if (player_b_jumpx[id] > 0) Prethink_Doublejump(id)
if (player_b_blink[id] > 0) Prethink_Blink(id)
if (player_b_usingwind[id] == 1) Prethink_usingwind(id)
if (player_b_oldsen[id] > 0) Prethink_confuseme(id)
if (player_b_froglegs[id] > 0) Prethink_froglegs(id)


//USE Button actives USEMAGIC

if (get_entity_flags(id) & FL_ONGROUND && (!(button2 & (IN_FORWARD+IN_BACK+IN_MOVELEFT+IN_MOVERIGHT)) || (player_class[id] == Czarodziej && player_b_fireball[id]==0)) && is_user_alive(id) && !bow[id] && (on_knife[id] || (player_class[id] == Czarodziej && player_b_fireball[id])) && player_class[id]!=NONE && player_class[id]!=Nekromanta && invisible_cast[id]==0)
{
if(casting[id]==1 && halflife_time()>cast_end[id])
{
message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id )
write_byte( 0 )
write_byte( 0 )
message_end()
casting[id]=0
call_cast(id)
}
else if(casting[id]==0)
{
new Float: time_delay = 5.0-(player_intelligence[id]/80.0)

if(player_class[id] == Assassin) time_delay*=2.0
else if(player_class[id] == Czarodziej)
{
time_delay=time_delay = 4.0-(player_intelligence[id]/40.0)
if(player_b_fireball[id]>0) time_delay=random_float(0.5,4.0-(player_intelligence[id]/80.0))
}
else if(player_class[id] == Skrytobojca) time_delay*=2.0
else if(player_class[id] == Rycerz) time_delay*=1.4

cast_end[id]=halflife_time()+time_delay

new bar_delay = floatround(time_delay,floatround_ceil)

casting[id]=1

message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id )
write_byte( bar_delay )
write_byte( 0 )
message_end()
}
}
else
{
if(casting[id]==1)
{
message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id )
write_byte( 0 )
write_byte( 0 )
message_end()
}
casting[id]=0
}


if (pev(id,pev_button) & IN_USE && !casting[id])
Use_Spell(id)

if(player_class[id]==Assassin && (pev(id,pev_button) & IN_RELOAD)) command_knife(id)
else if (pev(id,pev_button) & IN_RELOAD && on_knife[id] && max_knife[id]>0) command_knife(id)

///////////////////// BOW /////////////////////////
if(player_class[id]==Elf)
{
new clip,ammo
new weapon = get_user_weapon(id,clip,ammo)

if(bow[id] == 1)
{
if((bowdelay[id] + 4.8 - float(player_intelligence[id]/80))< get_gametime() && button2 & IN_ATTACK)
{
bowdelay[id] = get_gametime()
command_arrow(id)
}
entity_set_int(id, EV_INT_button, (button2 & ~IN_ATTACK) & ~IN_ATTACK2)
}




// nade

if(g_GrenadeTrap[id] && button2 & IN_ATTACK2)
{
switch(weapon)
{
case CSW_HEGRENADE, CSW_FLASHBANG, CSW_SMOKEGRENADE:
{
if((g_PreThinkDelay[id] + 0.28) < get_gametime())
{
switch(g_TrapMode[id])
{
case 0: g_TrapMode[id] = 1
case 1: g_TrapMode[id] = 0
}
client_print(id, print_center, "Grenade Trap %s", g_TrapMode[id] ? "[ON]" : "[OFF]")
g_PreThinkDelay[id] = get_gametime()
}
}
default: g_TrapMode[id] = 0
}
}

}
///////////////////////////////////////////////////

return PLUGIN_CONTINUE
}

  • +
  • -
  • 0

#7 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 02.06.2012 17:42

Zmień w mojej funkcji nazwę na client_PreThink2 i dodaj w preThinku który podałeś wywołanie zaraz na początku:
client_PreThink2(id)


Możesz też usunąć public z deklaracji (mojej funkcji), gdyż funkcja nie musi być więcej publiczna.
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#8 Play4Fun

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 15
Początkujący

  • Postów:86
  • GG:
  • Imię:Dawid
  • Lokalizacja:Lublin
Offline

Napisano 02.06.2012 20:28

Dokładnie o to mi chodziło :P dzięki za pomoc. leci +
Temat do zamknięcia.
  • +
  • -
  • 0




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

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