[COD]Jak dodać Item/Klasę/Moc Spadochron(i...
camilost
07.08.2010
Zamieszczam tutorial jak połączyć ze sobą plugin Spadochron, aby w COD:MW Modzie można było dać klasie spadochron, zrobić klasę Spadochroniarz, dodać item Spadochron.
Otwieramy SMA Cod Moda i:
1. Szukamy
2. Szukamy
3. Szukamy
4. Szukamy
5. Szukamy w public Odrodzenie(id)
6. Szukamy w public client_disconnect(id)
7. Szukamy w public Death()
8. Na sam koniec kodu dodajemy to co w spoilerze:
Poradnik jak dodać do klasy X spadochronów, do przedmiotu, jak zrobić klasę spadochroniarz.
1. Gdy dodajemy nową klasę zgodnie z TYM poradnikiem:
w switch(klasa_gracza[id])
I pod daną klasie bronią dodajemy po prostu
Tak np. wyglądała by klasa Komandos
2. Zrobiliśmy klasę Spadochroniarz i chcemy, aby miała nieskończoność spadochronów w public client_PreThink(id)
Szukamy
3. Dodajemy nowy przedmiot według kolejności (nazwa,opis)
np. u mnie nr. przedmiotu spadochron w kolejności to będzie 29.
Szukamy w public Odrodzenie(id) np. przedmiotu Szpieg:
Jeżeli sam nie potrafisz tego zrobić
Załóż osobny temat w dziale Scripting/Pluginy załącz SMA i powiedz o co prosisz.
Jeśli nie posiadasz modelu spadochronu łap (Wrzucasz do models/ plik parachute.mdl): parachute.rar 60.83KB 191 downloads
Edited by QTM. Peyote, 18.12.2010 22:14.
Otwieramy SMA Cod Moda i:
1. Szukamy
new doswiadczenie_za_bombe;Po tym dodajemy
new SpadochronDetach; new SpadochronSpadanie;
2. Szukamy
new ilosc_skokow_gracza[33];Po tym dodajemy
new ilosc_spadochronow_gracza[33]; new para_ent[33];
3. Szukamy
doswiadczenie_za_bombe = get_cvar_num("cod_bombxp");Po tym dodajemy
SpadochronSpadanie = register_cvar("cod_spadochron_fallspeed", "100"); SpadochronDetach = register_cvar("cod_spadochron_detach", "1");
4. Szukamy
precache_model("models/mine.mdl");Po tym dodajemy
precache_model("models/parachute.mdl");
5. Szukamy w public Odrodzenie(id)
switch(klasa_gracza[id])Nad tym dodajemy (Dodałem dodatkowe linie, aby zapobiec bugom, iż po odrodzeniu mamy item z poprzedniej klasy [jeśli go nie wykorzystaliśmy])
ilosc_rakiet_gracza[id] = 0; ilosc_apteczek_gracza[id] = 0; ilosc_min_gracza[id] = 0; ilosc_dynamitow_gracza[id] = 0; ilosc_skokow_gracza[id] = 0; ilosc_spadochronow_gracza[id] = 0; if(para_ent[id] > 0) { remove_entity(para_ent[id]) set_user_gravity(id, 1.0) para_ent[id] = 0 }
6. Szukamy w public client_disconnect(id)
UsunPrzedmiot(id);Po tym dodajemy
parachute_reset(id);
7. Szukamy w public Death()
if(!is_user_alive(attacker) || !is_user_connected(attacker))Nad tym dodajemy
parachute_reset(id);
8. Na sam koniec kodu dodajemy to co w spoilerze:
Spoiler
Poradnik jak dodać do klasy X spadochronów, do przedmiotu, jak zrobić klasę spadochroniarz.
1. Gdy dodajemy nową klasę zgodnie z TYM poradnikiem:
w switch(klasa_gracza[id])
I pod daną klasie bronią dodajemy po prostu
ilosc_spadochronow_gracza[id] = 3;
Tak np. wyglądała by klasa Komandos
case Komandos: { give_item(id, "weapon_deagle"); ilosc_spadochronow_gracza[id] = 3; }
2. Zrobiliśmy klasę Spadochroniarz i chcemy, aby miała nieskończoność spadochronów w public client_PreThink(id)
Szukamy
if ((button & IN_USE) && (ilosc_spadochronow_gracza[id] > 0))I zamieniamy na np.:
if (button & IN_USE && (ilosc_spadochronow_gracza[id] > 0 || klasa_gracza[id] == Spadochroniarz))
3. Dodajemy nowy przedmiot według kolejności (nazwa,opis)
np. u mnie nr. przedmiotu spadochron w kolejności to będzie 29.
Szukamy w public Odrodzenie(id) np. przedmiotu Szpieg:
if(informacje_przedmiotu_gracza[id][0] == 9) ZmienUbranie(id, 0);I po nim dodajemy
if(informacje_przedmiotu_gracza[id][0] == 29) ilosc_spadochronow_gracza[id] = 5; // W zaleznosci ile daliscie w opisie, mozecie tez dodac tak jak z klasa spadochroniarz (patrz wyżej)
Jeżeli sam nie potrafisz tego zrobić
Załóż osobny temat w dziale Scripting/Pluginy załącz SMA i powiedz o co prosisz.
Jeśli nie posiadasz modelu spadochronu łap (Wrzucasz do models/ plik parachute.mdl): parachute.rar 60.83KB 191 downloads
@Zakaz kopiowania ^.^
Edited by QTM. Peyote, 18.12.2010 22:14.
OnlyDiabloMod
30.08.2010
Niestety mi nie działa robiłem 4x razy i nic, nie mam błędów podczas komplikacji.
Do tego psuje itemki, w ogóle sie nie dostaje za zabicie itemku
Edited by OnlyDiabloMod, 31.08.2010 01:07.
Do tego psuje itemki, w ogóle sie nie dostaje za zabicie itemku
Edited by OnlyDiabloMod, 31.08.2010 01:07.
camilost
31.08.2010
No jakoś innym działa wogóle. poradnika : > Czyli z Twojej strony błąd. Widziałem już serwery z tym. ; ]
OnlyDiabloMod
31.08.2010
No jakoś innym działa wogóle. poradnika : > Czyli z Twojej strony błąd. Widziałem już serwery z tym. ; ]
na pewno nie z mojej winy, robiłem to na czystym codzie już z 8 razy wszystkie inne poradniki nawet twoje działają, a propo nie wiadomo czy to z twojego poradnika robili jak mają na serwerze bo tematów jest mnóstwo.
Mniejsza nie polecam.
KSC21
31.08.2010
Też mi nie działało, daj nam *sma. ( Załóż nowy temat ). Wiem co trzeba zrobić
Edited by KSC21, 31.08.2010 10:09.
Edited by KSC21, 31.08.2010 10:09.
camilost
31.08.2010
No jakoś innym działa wogóle. poradnika : > Czyli z Twojej strony błąd. Widziałem już serwery z tym. ; ]
na pewno nie z mojej winy, robiłem to na czystym codzie już z 8 razy wszystkie inne poradniki nawet twoje działają, a propo nie wiadomo czy to z twojego poradnika robili jak mają na serwerze bo tematów jest mnóstwo.
Mniejsza nie polecam.
Dziecko 12letnie sobie poradziło (2lata różnicy), a Ty nie potrafisz prostych zadań (poszukaj, wklej, nad/pod)?
Zrobiłem na czystym dokładnie wogóle. poradnika i o dziwo działa?!
Poradnik jest dobry. Sprawdzałem drugi raz, wszystko wogóle. poradnika.
Ty nie polecasz, a ja Ci polecam uczyć się polskiego.
Masz dalej problem osobny temat, jeśli przeczytać napisu niebieskiego nie potrafisz. ; ]
KSC21
31.08.2010
To jest tylko Twoja wina, poradnik dobrze napisany, sam sprawdzałem, wsio działaNo jakoś innym działa wogóle. poradnika : > Czyli z Twojej strony błąd. Widziałem już serwery z tym. ; ]
na pewno nie z mojej winy, robiłem to na czystym codzie już z 8 razy wszystkie inne poradniki nawet twoje działają, a propo nie wiadomo czy to z twojego poradnika robili jak mają na serwerze bo tematów jest mnóstwo.
Mniejsza nie polecam.
@Topic:
Pewny jesteś, że zrobiłeś ten punkt? ;]
2. Zrobiliśmy klasę Spadochroniarz i chcemy, aby miała nieskończoność spadochronów w public client_PreThink(id)
Szukamyif ((button & IN_USE) && (ilosc_spadochronow_gracza[id] > 0))I zamieniamy na np.:if (button & IN_USE && (ilosc_spadochronow_gracza[id] > 0 || klasa_gracza[id] == Spadochroniarz))
Edited by KSC21, 31.08.2010 16:50.
OnlyDiabloMod
01.09.2010
A nie sorka za "nie polecam"
miałem 2x razy public client_PreThink(id)
które potem połączyłem w jedno i zapomniałem o pewnym błędzie.
Może ktoś mi pomóc z połaczeniem tych dwóch client_PreThink(id)?? Jak próbuję połączyć to mam problemy z return_plugin continue
Tak wygląda mój od skoczka
A tutaj czysty ten z góry od spadochroniarza:
Edited by OnlyDiabloMod, 01.09.2010 02:11.
miałem 2x razy public client_PreThink(id)
które potem połączyłem w jedno i zapomniałem o pewnym błędzie.
Może ktoś mi pomóc z połaczeniem tych dwóch client_PreThink(id)?? Jak próbuję połączyć to mam problemy z return_plugin continue
Tak wygląda mój od skoczka
public client_PreThink(id) {
if (entity_get_int(id, EV_INT_button) & 2 && klasa_gracza[id] == Skoczek) {
new flags = entity_get_int(id, EV_INT_flags)
if (flags & FL_WATERJUMP)
return PLUGIN_CONTINUE
if ( entity_get_int(id, EV_INT_waterlevel) >= 2 )
return PLUGIN_CONTINUE
if ( !(flags & FL_ONGROUND) )
return PLUGIN_CONTINUE
new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)
velocity[2] += 250.0
entity_set_vector(id, EV_VEC_velocity, velocity)
entity_set_int(id, EV_INT_gaitsequence, 6)
}
return PLUGIN_CONTINUE
}
A tutaj czysty ten z góry od spadochroniarza:
public client_PreThink(id)
{
//parachute.mdl animation information
//0 - deploy - 84 frames
//1 - idle - 39 frames
//2 - detach - 29 frames
if (!is_user_alive(id)) return
new Float:fallspeed = get_pcvar_float(SpadochronSpadanie) * -1.0
new Float:frame
new button = get_user_button(id)
new oldbutton = get_user_oldbutton(id)
new flags = get_entity_flags(id)
if (para_ent[id] > 0 && (flags & FL_ONGROUND)) {
if (get_pcvar_num(SpadochronDetach))
{
if (get_user_gravity(id) == 0.1) set_user_gravity(id, 1.0)
if (entity_get_int(para_ent[id],EV_INT_sequence) != 2) {
entity_set_int(para_ent[id], EV_INT_sequence, 2)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
entity_set_float(para_ent[id], EV_FL_framerate, 0.0)
return
}
frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 2.0
entity_set_float(para_ent[id],EV_FL_fuser1,frame)
entity_set_float(para_ent[id],EV_FL_frame,frame)
if (frame > 254.0) {
remove_entity(para_ent[id])
para_ent[id] = 0
}
}
else {
remove_entity(para_ent[id])
set_user_gravity(id, 1.0)
para_ent[id] = 0
}
return
}
if ((button & IN_USE) && (ilosc_spadochronow_gracza[id] > 0))
{
new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)
if (velocity[2] < 0.0) {
if(para_ent[id] <= 0) {
para_ent[id] = create_entity("info_target")
if(para_ent[id] > 0) {
entity_set_string(para_ent[id],EV_SZ_classname,"parachute")
entity_set_edict(para_ent[id], EV_ENT_aiment, id)
entity_set_edict(para_ent[id], EV_ENT_owner, id)
entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_model(para_ent[id], "models/parachute.mdl")
entity_set_int(para_ent[id], EV_INT_sequence, 0)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
}
}
if (para_ent[id] > 0) {
entity_set_int(id, EV_INT_sequence, 3)
entity_set_int(id, EV_INT_gaitsequence, 1)
entity_set_float(id, EV_FL_frame, 1.0)
entity_set_float(id, EV_FL_framerate, 1.0)
set_user_gravity(id, 0.1)
velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
entity_set_vector(id, EV_VEC_velocity, velocity)
if (entity_get_int(para_ent[id],EV_INT_sequence) == 0) {
frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 1.0
entity_set_float(para_ent[id],EV_FL_fuser1,frame)
entity_set_float(para_ent[id],EV_FL_frame,frame)
if (frame > 100.0) {
entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
entity_set_float(para_ent[id], EV_FL_framerate, 0.4)
entity_set_int(para_ent[id], EV_INT_sequence, 1)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
}
}
}
}
else if (para_ent[id] > 0) {
remove_entity(para_ent[id])
set_user_gravity(id, 1.0)
para_ent[id] = 0
ilosc_spadochronow_gracza[id]--;
}
}
else if ((oldbutton & IN_USE) && para_ent[id] > 0) {
remove_entity(para_ent[id])
set_user_gravity(id, 1.0)
para_ent[id] = 0;
ilosc_spadochronow_gracza[id]--;
}
}
Edited by OnlyDiabloMod, 01.09.2010 02:11.
camilost
01.09.2010
Sprawdź, ostatnio też ktoś prosił, abym mu skleił te oba i miałem formata i przepadło (Nie pamiętam jak robiłem)
Edited by camilost, 01.09.2010 10:17.
public client_PreThink(id) { //parachute.mdl animation information //0 - deploy - 84 frames //1 - idle - 39 frames //2 - detach - 29 frames if (!is_user_alive(id)) return new Float:fallspeed = get_pcvar_float(SpadochronSpadanie) * -1.0 new Float:frame new button = get_user_button(id) new oldbutton = get_user_oldbutton(id) new flags = get_entity_flags(id) if (para_ent[id] > 0 && (flags & FL_ONGROUND)) { if (get_pcvar_num(SpadochronDetach)) { if (get_user_gravity(id) == 0.1) set_user_gravity(id, 1.0) if (entity_get_int(para_ent[id],EV_INT_sequence) != 2) { entity_set_int(para_ent[id], EV_INT_sequence, 2) entity_set_int(para_ent[id], EV_INT_gaitsequence, 1) entity_set_float(para_ent[id], EV_FL_frame, 0.0) entity_set_float(para_ent[id], EV_FL_fuser1, 0.0) entity_set_float(para_ent[id], EV_FL_animtime, 0.0) entity_set_float(para_ent[id], EV_FL_framerate, 0.0) return } frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 2.0 entity_set_float(para_ent[id],EV_FL_fuser1,frame) entity_set_float(para_ent[id],EV_FL_frame,frame) if (frame > 254.0) { remove_entity(para_ent[id]) para_ent[id] = 0 } } else { remove_entity(para_ent[id]) set_user_gravity(id, 1.0) para_ent[id] = 0 } return } if ((button & IN_USE) && (ilosc_spadochronow_gracza[id] > 0)) { new Float:velocity[3] entity_get_vector(id, EV_VEC_velocity, velocity) if (velocity[2] < 0.0) { if(para_ent[id] <= 0) { para_ent[id] = create_entity("info_target") if(para_ent[id] > 0) { entity_set_string(para_ent[id],EV_SZ_classname,"parachute") entity_set_edict(para_ent[id], EV_ENT_aiment, id) entity_set_edict(para_ent[id], EV_ENT_owner, id) entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW) entity_set_model(para_ent[id], "models/parachute.mdl") entity_set_int(para_ent[id], EV_INT_sequence, 0) entity_set_int(para_ent[id], EV_INT_gaitsequence, 1) entity_set_float(para_ent[id], EV_FL_frame, 0.0) entity_set_float(para_ent[id], EV_FL_fuser1, 0.0) } } if (para_ent[id] > 0) { entity_set_int(id, EV_INT_sequence, 3) entity_set_int(id, EV_INT_gaitsequence, 1) entity_set_float(id, EV_FL_frame, 1.0) entity_set_float(id, EV_FL_framerate, 1.0) set_user_gravity(id, 0.1) velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed entity_set_vector(id, EV_VEC_velocity, velocity) if (entity_get_int(para_ent[id],EV_INT_sequence) == 0) { frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 1.0 entity_set_float(para_ent[id],EV_FL_fuser1,frame) entity_set_float(para_ent[id],EV_FL_frame,frame) if (frame > 100.0) { entity_set_float(para_ent[id], EV_FL_animtime, 0.0) entity_set_float(para_ent[id], EV_FL_framerate, 0.4) entity_set_int(para_ent[id], EV_INT_sequence, 1) entity_set_int(para_ent[id], EV_INT_gaitsequence, 1) entity_set_float(para_ent[id], EV_FL_frame, 0.0) entity_set_float(para_ent[id], EV_FL_fuser1, 0.0) } } } } else if (para_ent[id] > 0) { remove_entity(para_ent[id]) set_user_gravity(id, 1.0) para_ent[id] = 0 ilosc_spadochronow_gracza[id]--; } } else if ((oldbutton & IN_USE) && para_ent[id] > 0) { remove_entity(para_ent[id]) set_user_gravity(id, 1.0) para_ent[id] = 0; ilosc_spadochronow_gracza[id]--; } if (entity_get_int(id, EV_INT_button) & 2 && klasa_gracza[id] == Skoczek) { new flags = entity_get_int(id, EV_INT_flags) if (flags & FL_WATERJUMP) return if (entity_get_int(id, EV_INT_waterlevel) >= 2) return if (!(flags & FL_ONGROUND)) return new Float:velocity[3] entity_get_vector(id, EV_VEC_velocity, velocity) velocity[2] += 250.0 entity_set_vector(id, EV_VEC_velocity, velocity) entity_set_int(id, EV_INT_gaitsequence, 6) } return }
Edited by camilost, 01.09.2010 10:17.
OnlyDiabloMod
01.09.2010
Ech to widze ze ktoś kopiował moją moc skoczka z mojego coda. dzięki zaraz sprawdze
Jeszzce 1 sprawa możesz mi powiedziećk który fragment kodu odpowiada za dostawanie itemku za zabicie?
Jeszzce 1 sprawa możesz mi powiedziećk który fragment kodu odpowiada za dostawanie itemku za zabicie?
camilost
01.09.2010
if(!informacje_przedmiotu_gracza[attacker][0]) DajPrzedmiot(attacker, random_num(1, sizeof nazwy_przedmiotow-1));w public Death()
MenTo(S)
17.09.2010
ilosc_rakiet_gracza[id] = 0;
ilosc_apteczek_gracza[id] = 0;
ilosc_min_gracza[id] = 0;
ilosc_dynamitow_gracza[id] = 0;
ilosc_skokow_gracza[id] = 0;
ilosc_spadochronow_gracza[id] = 0;
if(para_ent[id] > 0) {
remove_entity(para_ent[id])
set_user_gravity(id, 1.0)
para_ent[id] = 0
}
Gdzie to dodac ?
Edited by MenTo(S), 17.09.2010 10:44.
abc24abc 21.10.2010
ja mam w tym taki problem ;/ bo zrobilem wszystko tak jak powinno a jak ktos ma ta klase to jak chce isc do przodu to nie moze tak jagby go odbijalo ;/
Edited by abc24abc, 21.10.2010 20:52.
Edited by abc24abc, 21.10.2010 20:52.
camilost
21.10.2010
Na pewno z tym problem -,- A jeśli nawet to coś wyraźnie napisane pod koniec (Specjalnie napisane dużymi, ale i tak tego nie zauważyłeś pewnie) - Twój post to OFFTOPIC.
Masz tylko to czy coś jeszcze dograne? Skąd mam wiedzieć wszystko. Myślisz, że napiszesz jaki masz problem i bez większej ilości info ktoś Ci je dopisze?
Inny dział i tyle, powiesz co dogrywałeś, co zmieniałeś i do tego SMA (Nie samo sma, bo komu się będzie chciało szukać każdej zmian w Twoim sma)
Masz tylko to czy coś jeszcze dograne? Skąd mam wiedzieć wszystko. Myślisz, że napiszesz jaki masz problem i bez większej ilości info ktoś Ci je dopisze?
Inny dział i tyle, powiesz co dogrywałeś, co zmieniałeś i do tego SMA (Nie samo sma, bo komu się będzie chciało szukać każdej zmian w Twoim sma)
dzej-dzej
16.09.2011
Witam podłącze się,czy ten spolier to sma spadochronu?? np można w ten sposób inne pluginy dodawać dla klasy?