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
 

fexus - zdjęcie

fexus

Rejestracja: 13.02.2012
Aktualnie: Nieaktywny
Poza forum Ostatnio: 07.12.2023 20:55
-----

#459439 Pytania o enum oraz tablice.

Napisane przez Zapalka w 19.09.2012 07:35

Dzięki enum możesz zastąpić liczby znakami. W sensie, możesz zastąpić cyfrę 1234 wybranym ciągiem znaków, np. Cyferki.
Najprostsze zastosowanie:
enum {
CYFRA0, //0
CYFRA1, //1
CYFRA2, //2
CYFRA3 //3
}

client_print(id,print_chat,"Twoja cyfra to: %d",CYFRA2);


W tym przykładzie zostanie wypisana cyfra 2.
W takim przykładzie każdy ciąg znaków ma kolejną liczbę, CYFRA0 - 0, CYFRA1 - 1, CYFRA3 - 3.
Oczywiście enuma można rozszerzyć aby np. liczenie będzie się zaczynało od innej liczby, lub liczba będzie się zwiększała np. o 3.
Przykład:

enum (+=3) {
CYFRA1, //3
CYFRA2, //6
CYFRA3 //9
}

W tym przypadku ciąg CYFRA1 jest jako liczba 3, kolejne ciągi mają wartości zwiększające się o 3.
Można także używać niestandardowych enumów, czyli dla każdego ciągu znaków przypisać dowolną liczbę, niezależną od poprzedniej. Przykład:

enum {
CYFRA1 = 4,
CYFRA2 = 7,
CYFRA3 = 22
}


Tablic na razie ci nie opiszę bo jestem w szkole i średnio mi się chce ;)
  • +
  • -
  • 2


#406786 Jak zrobic nowy item z innego.

Napisane przez ogieR8 w 05.05.2012 12:36

http://amxx.pl/topic...ikonka-statusu/

Hmm. Np masz tam takie coś :

#include <amxmodx>
#include <fakemeta>

new iconstatus;

public plugin_init() {
register_plugin("Status Icon","0.1","SAMURAI");

register_forward(FM_PlayerPreThink,"fw_prethink");
iconstatus = get_user_msgid("StatusIcon");

}
public fw_prethink(id)
{
if(!(pev(id,pev_button) & FL_ONGROUND))
{
message_begin(MSG_ONE,iconstatus,{0,0,0},id);
write_byte(1); // status (0=hide, 1=show, 2=flash)
write_string("dmg_poison"); // sprite name
write_byte(0); // red
write_byte(255); // green
write_byte(0); // blue
message_end();
}

}


Czyli bedzie wyswietlac sie, jesli jestesmy w powietrzu " if(!(pev(id,pev_button) & FL_ONGROUND))", ale możemy to tak zrobić :


public fw_prethink(id)
{
if(jestem_zatruty[id] == 1)
{
message_begin(MSG_ONE,iconstatus,{0,0,0},id);
write_byte(1); // status (0=hide, 1=show, 2=flash)
write_string("dmg_poison"); // sprite name
write_byte(0); // red
write_byte(255); // green
write_byte(0); // blue
message_end();
}
}


Czyli jesli mamy 'jestem_zatruty[id]' = 1 to bedzie ten znaczek, nie wiem który, ale możesz sobie podmienić nazwę tego 'dmg_poison' na jedne z tego : http://amxx.pl/topic...ikonka-statusu/ lub tego : http://forums.allied...E%3C/amxmodx%3E . W funkcje np public add_freeze_costam_costam(id,attacker_id) nad taskiem co 5.0 dasz mu wtedy 'jestem_zatruty[id]=1', a pod tym task : 'set_task(30.0,"zdejmij_zatrucie_icon",id)'

A potem na koniec kodu gdzieś :

public zdejmij_zatrucie_icon(id) { // TUTAJ JEST ID AKURAT, DALEM CI DLA ULATWIENIA :D
jestem_zatruty[id]=0
}


Oczywiście ten przykład na początku postu trzeba odpowiednio wklepać w db_mod'a, jak będą problemy to pisz :)
  • +
  • -
  • 1


#406531 Jak zrobic nowy item z innego.

Napisane przez ogieR8 w 04.05.2012 20:31

public add_bonus_freeze(id) {
if (is_user_connected(id)) {
new weapon, bodypart; new attacker_id = get_user_attacker(id,weapon,bodypart); new bron = get_user_weapon(attacker_id)
new losowanie = random_num(1,3) // ustawiasz szanse na trucizne
if(attacker_id!=0 && attacker_id != id && zamrozenie[attacker_id] > 0 && get_user_team(id) != get_user_team(attacker_id) && bron==CSW_KNIFE &&
losowanie==1) {
if(DemageTake[id] == 0)
DemageTake[id] = 1
AddFlag(id, Flag_Freeze)
set_task(5.0,"zapierdol_mi_hp",id, "", 0, "a", 6) // szesc razy wywola funkcje 'zapierdol_mi_hp' z odstepem czasowym co 5 sekund (5*6=30sekund)
}
}
set_speedchange(id)
set_renderchange(id)
}


Podmien sobie ta funkcje wyżej, a tą niżej daj gdzieś na koniec .sma

public zapierdol_mi_hp(this) {
new old = get_user_health(this)
set_user_health(this, old-5) // co 5 sekund weznie 5hp, ale funkcja powtarzana 6 razy, czyli efekt raczej dobrany :>
}


Rozumiem, że :

Oto item który przez x sekund zamrozi wroga

ustawia się przez wartość zamrozenie[id]=WARTOSC_W_SEKUNDACH, ale nigdzie nie widzę ku temu odwołania ;x

Przyznam, nie sprawdzałem nawet czy się kompiluję, chodź nie widzę na 1 rzut oka błędów.

Pozdrawiam.
  • +
  • -
  • 1


#406576 Jak zrobic nowy item z innego.

Napisane przez ogieR8 w 04.05.2012 21:27

Mozna. Daj przyklad, bedzie latwiej. Np mozesz w mocy tej z freeze'm dać player_agility[id]-=30, a potem i zrobić osobny task na np 30 sekund, taki :

set_task(30.0, "ustaw_domyslne_staty",id)


A gdzies na koncu potem

public ustaw_domyslne_staty(this) {
player_agility[this]+=30
}


:D A co do mocy to praktycznie moc już masz na to, teraz wystarczy zrobić nowa zmienną u góry, np : new c_trucizna[33], ominac reset_item_skills, bo jesli tuta dasz to po /drop stracisz moc dla tej klasy (czyli nie dajemy tam), a linijke z kodu :

if(attacker_id!=0 && attacker_id != id && zamrozenie[attacker_id] > 0 && get_user_team(id) != get_user_team(attacker_id) && bron==CSW_KNIFE && losowanie==1) {


Zamieniasz na :

if(attacker_id!=0 && attacker_id != id && (zamrozenie[attacker_id] > 0 || c_trucizna[attacker_id] > 0) && get_user_team(id) != get_user_team(attacker_id) && bron==CSW_KNIFE && losowanie==1) {


W tym wypadku zamienilem "zamrozenie[attacker_id] > 0" na "(zamrozenie[attacker_id] > 0 || c_trucizna[attacker_id] > 0)", co daje : jesli spelnia inne warunki i gracz atakujacy ma item z ta moca LUB klase z ta moca to wywola to ofierze.

A potem w klasie po jej wyborze dodajesz c_trucizna[id]=WARTOSC. Ale pamietaj, ze trzeba nad wyborem klasy dodac do zresetowanych mocy to z wartoscia = 0, bo inaczej weźmiesz sobie klasę z tym czymś. Bedziesz mial - okey, ale potem zmienisz klase i dalej ta moc bedziesz mial :D
  • +
  • -
  • 1


#404254 Error logi na serwerze, brak wczytywania klas

Napisane przez Dizip w 30.04.2012 22:48

Zgodność plugin-init z całym pluginem


#404682 Item "Piorun Zeusa"

Napisane przez Dizip w 01.05.2012 18:54

else {
new Float:fl_Origin[3]
pev(id, pev_origin, fl_Origin)
set_pev(id, pev_velocity, Float:{0.0,0.0,0.0}) // stop motion
set_pev(id, pev_maxspeed, 5.0) // prevent from moving
thunder_effects(fl_Origin)
wait1[id]=floatround(halflife_time())
}
return PLUGIN_HANDLED


Zobacz. ID to Ty ,wiec znajdujesz siebie a potem walisz sobie w leb ; P

Po co zmieniasz cos w kodzie itemu ?
zrób to w public Damage(id) po prostu okresl if klasa jakas tami jakas losowa wartosc == 1 uzyj mocy na ofeirze

Ogolnie polecam uzywac hamsandwich do zadawania dmg w diablo ; )


#401994 Nowe Itemy DiabloMod

Napisane przez Dizip w 26.04.2012 13:02

Witam Jestem nowym użytkownikiem Amxx i zauważyłem ,że dział Diablomod jest bardzo ubogi np w przeciwieństwie do Coda
Dzisiaj wam pokaże jak dodać kilka nowych itemów do swojego Diablo; )

Nie jestem mistrzem pisania poradników także musicie mi wybaczyć

Pierwszy item - Kret działanie? -Szansa na resp u przeciwnika
Spoiler


Drugi item "Bezleb" - Działanie? -Nie da się Ciebie zabić strzałem w głowę
Spoiler

Dodawanie itemu w spis jest w opisie 1 itemu

Na razie to tyle post będę uaktualniał bo teraz nie mam czasu napisać więcej. Możecie składać propozycje co do itemków. Postaram się je wykonać nawet dla własnych krozyści ; )
Dziękuje za przeczytanie posta


#373366 Diablomod - nowe klasy i problem z kompilacja

Napisane przez Nakupenda. w 01.03.2012 11:29

w keys'ach powinieneś dodać to:
|(1<<8)


Kleryk zamienic na kleryk (z malej po prostu)
i pod public Lowca(id) dac public kleryk(id)

i potem masz jeszcze milion innych błędów które ci załatałem, ale przyjrzyjmy się jednemu:

		case Kleryk:
{
change_health[id]++
change_health(id, 25, id, "")
if(change_health[id]>3)
{
change_health[id]=3
show_hudmessage(id, "Maksymalna ilosc odnowien zycia to 3 razy",change_health[id])
}
else show_hudmessage(id, "Uleczyles sie juz %i razy",change_health[id])
}


nie mozesz zrobic zmiennej change_health skoro już jest taka funkcja
zmieniłem ci na "change_h"
jak już mamy zmienną change_h, trzeba ją najpierw stworzyć, a potem wyzerować na pocżątku rundy - to już też zrobiłem
Nie bój się przeróbek diablo ale rób to z rozwagą

Załączone pliki


  • +
  • -
  • 1