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.
|
LogiCC :D
Rejestracja: 11.08.2010Aktualnie: Nieaktywny
Poza forum Ostatnio: 27.04.2012 13:10





Statystyki
- Grupa: Użytkownik
- Całość postów: 105
- Odwiedzin: 7 374
- Tytuł: Zaawansowany
- Wiek: 28 lat
- Urodziny: Wrzesień 12, 1996
-
Płeć
Mężczyzna
-
Lokalizacja
Namysłów
Kontakt
#259020 Brak Bytów
Napisane przez Muzzi
w 15.06.2011 10:09
#222507 1/x z kilku broni
Napisane przez ParadisO
w 06.03.2011 20:05
Nie chce, żeby ktoś jeszcze miał z tym problemy więc piszę poradnik (mój 1 na tym forum).
Najpierw tworzymy item 1/x z danej broni według tego poradnika
[Tutorial] Itemy 1/1 - AMXX.pl: Support AMX Mod X
Zrobię przykład na broni gail/famas
W swoim itemie dodajemy coś takiego :
new razem
razem = random_num(X,Y)
player_b_gail[id] = razem
player_b_famas[id] = razem
X;Y - od ilu do ilu np: (14,24)
Całość powinna wyglądać tak
case Z:
{
player_item_name[id] = "Pogromca"
player_item_id[id] = random
new razem
razem = random_num(14,24)
player_b_gail[id] = razem
player_b_famas[id] = razem
show_hudmessage (id, "Znalazles przedmiot : %s :: Masz 1/%i szans na natychmiastowe zabicie z Gail/Famas.",player_item_name[id],razem)
}
Z - numer itemu
Nie sprawdzałem czy to działa na serwerze.
Jestem otwarty na wszelkie uwagi.
#149988 [Diablo Mod] Diablo 5.9l Nowy
Napisane przez patryk1345
w 07.07.2010 10:51
Diablo Mod 5.9l Poprawiony i edytowany !
Wejdź amxmodx/configs/ i w plugins.ini dopisz na samym końcu:
diablo_200.amxx
diablo_daj_wez.amxx
diablo_xpbonus 20 //Ilość expa za zabicie (standardowo ustawione na 7) diablo_xpbonus2 40 //Ilość expa za wykonania celu mapy (standardowo ustawione na 75) diablo_xpbonus3 20 //Okresla ile dosw. dostajesz za wygranie rundy przez twoj team diablo_durability 1 //Okresla ilosc tracenia jakosci za każdym razem,kiedy uderzy cie przeciwnik diablo_spawnchance 7 //1/x - szansa na zrespienia gracza SaveXp 1 //1/0 zapisywanie doświadczenia diablo_classes abcdefghijkl //które klasy maja być dostępne diablo_avg 0 //zaczynanie od sredniej serwera (liczonego od lvl 1) diablo_dmg_exp 0 //za ile zabranego hp wrogowi dostaje sie 1 exp (domyslnie 20, 0 - off)addons/amxmodx/configs/sql.cfg
diablo_sql_host "Adres bazy MySQL" diablo_sql_user "Użytkownik bazy" diablo_sql_pass "Hasło użytkownika" diablo_sql_database "Nazwa bazy danych" diablo_sql_table "dbmod" diablo_sql_save "Zapis bazy 0-2" 0 - Nick 1 - IP 2 - STEAMID
- Naświetlanie Ninja
- Wskrzeszanie Nekromanty zależne od inta
- Komenda /daj
- Doświadczenie za wygraną runde
- Komenda /exp
- Frakcje (Darmowe i Premium)
- Zablokowane rozwalanie bsow
- Naprawa oslepienie przeciwnika
- Naprawa LJ
- Poprawa spamu przy wejsciu na serwer
- Komenda na dawanie dośw. amx_givexp <nick> <exp>
- Naprawa Arabian Boots
- Naprawa mocy pistoletowych
- Naprawa dawania dośw przez zabicie 1/x HE
- Naprawa "leczacej" miny
- Błąd w logach - set_user_frags i get_user_maxspeed
- Nowe klasy:
a) Imperator - 110 HP (Po naładowaniu nożu - 1/5 HE)

c) Ezreal - 120 HP (Po naładowaniu nożu - Większy dmg i speed)
d) Skoczek - PREMIUM, 150 HP (Po naładowaniu nożu - Funkcja wingow +6)
- Poprawione wszelkie błędy dot. zwiększenia max lv
Niedługo:
- Nowe itemki
- Nowe klasy
- Nowe moce
- Nowe modele oraz dźwięki !
- Nowy sklep
/pomoc (tego chyba nie muszę tłumaczyć)
/czary (pokazuje menu z statystykami)
/rune (pokazuje menu sklepu możemy w nim ulepszać rożne przedmioty lub kupić księgę doświadczenia)
/reset (resetuje wszystkie punkty rozdane w statystykach)
/klasa (dzięki tej komendzie możemy zmienić swoja klasę)
/item lub /przedmiot (pokazuje informacje na temat przedmiotu tzn co robi itp.)
/drop (wyrzuca przedmiot)
/savexp (zapisywanie doświadczenia)
/klasy (wyświetla opis postaci)
/exp (Pokazuje ile expa posiadamy oraz ile nam brakuje)
Download:
http://www.sendspace...9b3fe7073112792
Zakaz kopiowania bez zgody autora.
Stworzone na bazie Diablo Mod 5.9l przy użyciu dost. poradników.
#158759 Błąd w kompilacji
Napisane przez Knopers
w 09.08.2010 20:38
new len = format(text2, 511,"\yWybierz klase/r^n\w1. \yCzarodziejka Level :\r%i^n2. \yDruid Level :\r%i^n3. \yPaladyn Level :\r%i^n4.\yZabojczyni Level :\r%i^n4.\y", player_class_lvl[id][9],player_class_lvl[id][10],player_class_lvl[id][11],player_class_lvl[id][12]);
len += format(text2[len], 511 - len,"Nekromanta Level :\r%i^n4.\yBarbarzynca Level :\r%i^n4.\ySkrytobojca Level :\r%i^n4.\yAmazonka Level :\r%i^n^n0.\yWstecz do menu wyboru^n",player_class_lvl[id][13],player_class_lvl[id][14],player_class_lvl[id][15], player_class_lvl[id][16]);
#31631 Warunki.
Napisane przez darkman
w 31.12.2008 15:10
Standardowo, jeżeli chcemy, żeby podczas gdy coś zachodzi wykonała się jakaś funkcja używamy operatora
if(warunek) wykonaj_funkcje();
Przykład kodu:
#include <amxmodx> public plugin_init() { register_plugin("Tutorial", "Tutorial", "Tutorial"); register_clcmd("test", "cmd_test"); } public cmd_test(id){ if(is_user_alive(id)) client_print(id, print_chat, "Jestes zywy"); else client_print(id, print_chat, "Jestes martwy"); }
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Napisany kod drukuje na chacie graczowi czy jest żywy lub martwy przy wpisaniu w konsoli komendy test. Nie chodzi jednak o sam kod i co on wywołuje, tylko o to jak prosto można zastąpić operator if(). Mianowicie można użyć formułki:
warunek ? jeżeli zwraca true(1) wykonaj xx : kiedy zwraca false wykonaj zz
Przykład kodu:
#include <amxmodx> public plugin_init() { register_plugin("Tutorial", "Tutorial", "Tutorial"); register_clcmd("test", "cmd_test"); } public cmd_test(id){ is_user_alive(id) ? client_print(id, print_chat, "Jestes zywy") : client_print(id, print_chat, "Jestes martwy"); }
W istocie kod działa tak samo jak pierwszy, tylko jego struktura jest troche inna. Nie ogranicza się to tylko do funkcji zwracających 0 lub 1, można tego też użyć w inny sposób np:
warunek == 2 ? client_print(id, print_chat, "Zmienna warunek ma wartość 2") : client_print(id, print_chat, "Zmienna warunek ma wartość inną niż 2")
Zachęcam do używania tej metody.
#215248 Easy End Round Sounds
Napisane przez DarkGL
w 12.02.2011 21:59
Nowa wersja http://amxx.pl/topic...end-round-sound
Pewnie niektórzy powiedzą że jest już coś takiego a no jest
czym wyróżnia się ten plugin ?
- Optymalny
- Opcja pokazywania playlisty
- Łatwość dodawania nowych utworów (żadnego dodawania do pliku .ini plugin sam to robi !)
- Cvary pozwalają naprawdę dużo zmienić
- Informacje dla graczy o granym utworze (4 sposoby wysyłania wiadomości można je łączyć
)
- Obsluga wav i mp3 (moga byc pomieszane)
- Możliwość wyboru czy plugin ma iść po kolei czy losować grany utwór
piszcie co dodać/zmienić w pluginie
@Update
- Drobny bug
@Update2
- Naprawa drobnego bugu
- Dodanie możliwości wybrania kanałów wysyłania wiadomości o granym utworze
- Poprawki estetyczne
@Update 3
- Dodanie menu przy komendzie /roundsound
- Dodanie możliwości tworzenia playlisty przez usera (roundsound_playlist_on)
@Update 4
- Filtracja utwórów wcześniej wczytywało wszystko nie tylko pliki mp3/wav
@Update 5
- Nazwy plikow moga mieć w sobie spacje wczesniej nie mogly
@Update 6
- Naprawa bugów
@Update 7
- Drobne Zmiany
//tag widoczny przy komunikatach wysyłanych przez plugin roundsound_tag AMXX.PL //w jaki sposob ma wysylac informacje o granym utworze a - center b - hud c - status text mozna laczyc np ab - pokaże w hudzie i center jeśli podamy nic nie wyświetli sie nigdzie roundsound_information_play abc //jak czesto ma sie pojawiac info o dostepnych komendach ustawienie na 0 wyłącza pokazywanie informacji roundsound_information_show 300 //sciezka do folderu z muzyka dla CT podajemy bez sound/ wazna jest wielkosc liter roundsound_ct_path misc/CT //sciezka do folderu z muzyka dla TT podajemy bez sound/ wazna jest wielkosc liter roundsound_tt_path misc/TT // 0 - nie mozna uzyc komendy /playlista 1 - mozna plugin sam generuje playliste 2 - mozna admin musi stworzyc playliste (folder configs pliki ctplaylist.txt i ttplaylist.txt) roundsound_playlist_on 1 //czy mozna uzyc komendy /roundsound pozwalajace na graczowi na wylaczenie/wlaczenie dla siebie roundsounda roundsound_roundsound_on 1 //ma odgrywac utwory po kolei czy losowo 0 - po kolei 1 - losowo roundsound_mode 0
w czacie
/roundsound
i
/playlista
Dodawanie utworow do grania odbywa sie poprzez wrzucenie pliku do folderów do których podalismy sciezke w cvarach
Jeśli chcemy wysyłać poprzez tutor musimy wrzucić pliki która są w archiwum tutor.rar
(włączone wszystkie flagi tutor został usunięty)
sound.rar 2,27 MB 9566 Ilość pobrań
roundsound.sma 10,21 KB 9467 Ilość pobrań
roundsound.amxx
#216597 Moc trzęsienie ekranu
Napisane przez
Jagoda
w 17.02.2011 08:34
no to jazda
znajdz
new player_b_illusionist[33] = 1
dodaj pod
new player_b_shake[33] = 1
znajdz
new player_dmg[33]
dodaj pod
new c_shake[33]
znajdz
add_bonus_redirect(id)
dodaj pod
add_bonus_shake(attacker_id,id)
znajdz
player_b_sniper[id] = 0
dodaj pod
player_b_shake[id] = 0
znajdz
if (player_b_explode[id] > 0)
{
num_to_str(player_b_explode[id],TempSkill,10)
add(itemEffect,199,"Gdy umierasz wybuchniesz w promieniu ")
add(itemEffect,199,TempSkill)
add(itemEffect,199," zadaje 75 obrazen wokol ciebie - im wiecej masz inteligencji tym wiekszy zasieg wybuchu<br>")
}
dodaj pod
if (player_b_shake[id] > 0)
{
num_to_str(player_b_shake[id],TempSkill,10)
add(itemEffect,199,"Masz 1/")
add(itemEffect,199,TempSkill)
add(itemEffect,199,"Ze przciwnikowi zacznie sie trzesc ekran<br>")
}
znajdz
case 68:
{
player_item_name[id] = "Ultra Armor"
player_item_id[id] = 68
player_ultra_armor[id]=random_num(7,11)
player_ultra_armor_left[id]=player_ultra_armor[id]
show_hudmessage (id, "Znalazles przedmiot : %s :: Twoj pancerz moze odbic do %i pociskow",player_item_name[id],player_ultra_armor[id])
}
dodaj pod
case 69:
{
player_item_name[id] = "Trzesienie"
player_item_id[id] = rannum
player_b_shake[id] = random_num(2,4)
show_hudmessage(id, "Znalazles przedmiot: %s :: Masz 1/%i ze przeciwnikowi zacznie sie trzesc ekran",player_item_name[id],player_b_shake[id])
}
znajdz
new rannum = random_num(1,68)
zamien na
new rannum = random_num(1,69)
znajdz
public add_bonus_darksteel(attacker,id,damage)
{
if (player_b_darksteel[attacker] > 0)
{
if (UTIL_In_FOV(attacker,id) && !UTIL_In_FOV(id,attacker))
{
new dam = floatround (15+player_strength[id]*2*player_b_darksteel[id]/10.0)
Effect_Bleed(id,248)
change_health(id,-dam,attacker,"world")
}
}
}
pod dodaj
public add_bonus_shake(attacker_id,id)
{
if((player_b_shake[attacker_id] > 0)||c_shake[attacker_id] > 0) && get_user_team(attacker_id) != get_user_team(id) && is_user_alive(id))
{
if (random_num(1,player_b_shake[attacker_id]) == 1)
{
message_begin(MSG_ONE,get_user_msgid("ScreenShake"),{0,0,0},id);
write_short(7<<14);
write_short(1<<13);
write_short(1<<14);
message_end();
}
else if (random_num(1,c_shake[attacker_id]) == 1)
{
message_begin(MSG_ONE,get_user_msgid("ScreenShake"),{0,0,0},id);
write_short(7<<14);
write_short(1<<13);
write_short(1<<14);
message_end();
}
}
return PLUGIN_HANDLED
}
w public select_class_menu(id, key) po g_haskit[id] = 0 dodaj
c_shake[id] = 0
a w klasie naprzyklad
case 5:
{
player_class[id] = Barbarzynca
LoadXP(id, player_class[id])
}
dodaj
case 5:
{
player_class[id] = Barbarzynca
c_shake[id] = 3 ///to wtedy bedzie 1/3 szans
}
Dziekuje za uwagę !!
#216601 Moc wyrzucenie broni przeciwnikowi
Napisane przez
Jagoda
w 17.02.2011 08:48
no to zaczynamy
znajdz
new player_b_mine[33] = 1
dodaj pod
znajdz
new player_b_drop[33] = 1
znajdz
new player_dmg[33]
pod dodaj
new c_drop[33]
znajdz
player_b_mine[id] = 0
dodaj pod
player_b_drop[id] = 0
znajdz
if (player_b_explode[id] > 0)
{
num_to_str(player_b_explode[id],TempSkill,10)
add(itemEffect,199,"Gdy umierasz wybuchniesz w promieniu ")
add(itemEffect,199,TempSkill)
add(itemEffect,199," zadaje 75 obrazen wokol ciebie - im wiecej masz inteligencji tym wiekszy zasieg wybuchu<br>")
}
dodaj pod
if (player_b_drop[id] > 0)
{
num_to_str(player_b_drop[id],TempSkill,10)
add(itemEffect,199,"Masz 1/")
add(itemEffect,199,TempSkill)
add(itemEffect,199,"Na wyrzucenie broni przeciwnikowi<br>")
}
znajdz
case 68:
{
player_item_name[id] = "Ultra Armor"
player_item_id[id] = 68
player_ultra_armor[id]=random_num(7,11)
player_ultra_armor_left[id]=player_ultra_armor[id]
show_hudmessage (id, "Znalazles przedmiot : %s :: Twoj pancerz moze odbic do %i pociskow",player_item_name[id],player_ultra_armor[id])
}
pod dodaj
case 69:
{
player_item_name[id] = "Wywal bron"
player_item_id[id] = rannum
player_b_drop[id] = random_num(4,8)
show_hudmessage(id, "Znalazles przedmiot: %s :: Masz 1/%i Szans Na wrzucenie broni przeciwnikowi",player_item_name[id],player_b_drop[id])
}
znajdz
new rannum = random_num(1,68)
zamien na
znajdz
new rannum = random_num(1,69)
znajdz
public add_bonus_darksteel(attacker,id,damage)
{
if (player_b_darksteel[attacker] > 0)
{
if (UTIL_In_FOV(attacker,id) && !UTIL_In_FOV(id,attacker))
{
new dam = floatround (15+player_strength[id]*2*player_b_darksteel[id]/10.0)
Effect_Bleed(id,248)
change_health(id,-dam,attacker,"world")
}
}
}
pod dodaj
public add_bonus_drop(attacker_id,id)
{
if(player_b_drop[attacker_id] > 0||c_drop[attacker_id] > 0&& get_user_team(attacker_id) != get_user_team(id) && is_user_alive(id))
{
if (random_num(1,player_b_drop[attacker_id]) == 1)
engclient_cmd(id, "drop")
else if (random_num(1,c_drop[attacker_id]) == 1)
engclient_cmd(id, "drop")
}
return PLUGIN_HANDLED
}
znajdz
if(player_b_sniper[id]>0)
{
if(player_b_sniper[id]>5) player_b_sniper[id]-=random_num(0,2)
else if(player_b_sniper[id]>2) player_b_sniper[id]-=random_num(0,1)
else if(player_b_sniper[id]>1) player_b_sniper[id]-=random_num(-1,1)
}
pod dodaj
if(player_b_drop[id]>0)
{
if(player_b_drop[id]>5) player_b_drop[id]-=random_num(0,2)
else if(player_b_drop[id]>2) player_b_drop[id]-=random_num(0,1)
else if(player_b_drop[id]>1) player_b_drop[id]-=random_num(-1,1)
}
Teraz w public select_class_menu(id, key){
po
g_haskit[id] = 0
dodaj
c_drop[id] = 0
Teraz w klasie np
case 2:
{
player_class[id] = Paladyn
}
dodaj c_drop[id] = 3 ///moc bedzie 1/3 szans
[sma]
case 2:
{
player_class[id] = Paladyn
c_drop[id] = 3
}
Dziekuje za uwagę jeśli coś nie działa proszę pisać w poście

#210975 Jak zwiększyć szybkość lotu
Napisane przez sebul
w 30.01.2011 13:04
#195217 [Tutorial dla początkujących] Ruletka
Napisane przez dasiek
w 10.12.2010 15:44

Chciałbym wam pokazać jak w łatwy sposób każdy może napisać własną Rultekę na serwer.

Więc na początku :
Definiujemy biblioteki z których mają być pobierane komenty. W amxx studio z automatu jest to
#include <amxmodx>
#include <amxmisc>
jednak nie wystarczą nam one więc dodamy jeszcze

Polecam:
#include <fun> <-Sprawy związane z graczem (jego życiem,kamizelką,grawitacją,szybkością itp)
#include <cstrike> <-Podobne co wyżej tylko "Trudniejsze" xd
początek Pluginu (dla tych co korzystają z notatnika w amxx studio jest z automatu to) :
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <fakemeta>
#include <engine>
#define PLUGIN "Ruletka_Tutek" //<-Nazwa Pluginu
#define VERSION "1.28" //<-Wersja (tak dla szpanu dodany że niby zpachowana itp)
#define AUTHOR "CheQ" //<- Autro pluginu
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR); // <- To jest po to by 2 raz nie wprwoadzac Danych o Pluginie
}
Bez public_init plugin nam nie będzie działał więc nie usuwamy go

Zaczynamy główne pisanie

w public_init() dodajemy linijke która będzie nam przywoływać ruletke gdy gracz wpisze w
say'u np /rulecia
Dodajemy:
register_clcmd("say /rulecia","rulecia");
W pierwszych cudzysłowiach określamy co dany gracz musi wpisać W KONSOLI żeby uruchomić rulecie
(dlatego piszemy say /rulecia gdyż mamy ten sam efekt jakbyśmy pisali w czacie)
dla lepszego działania określimy to żeby odpalało naszą rulecie jak gracz będzie pisał do teamu
register_clcmd("say_team /rulecia","rulecia");
i oto jakieś 10 % roboty

czas na pisanie głównego programu
zamykającej klamerze ("}") dajemy ENTER żeby nasz plugin ładniej wyglądał
i piszemy funkcje rulecia
public rulecia(id)
{
//Tu będzie kod naszej funkcji rulecia
}
Gdybyśmy Tego nie zrobili nie zapisalibyśmy bo ponieważ nie znalazłoby funkcji "rulecia" którą zadeklarowaliśmy
gdy gracz wpisze w czacie /rulecia.
dopisaliśmy (id) po to, by ruletka była losowana dla pojedyńczego gracza a nie dla całego serwera.
Teraz element Losowania. Służy do tego komenda:
switch(random_num(1, 4)) // swich()-wybierz, Random_num()-spomiędzy
{
//kod
}
w ten oto sposób nasza ruletka będzie miała 4 elementy
aby dodać więcej elementów piszemy np dla 500 elementów:
switch(random_num(1, 500))
{
//kod
}
czas opisać co ma losować.
po klamerkach otwierających piszemy numer i dalej co ma robić jeśli go wylosuje.
switch(random_num(1, 4))
{
case 1 :
{
//Kod
}
}
Opiszemy Teraz że jedną z naszych atrakcji na ruletce jest ustawienie HP do 1

switch(random_num(1, 4))
{
case 1 :
{
client_print(id,print_chat,"Masz 1 HP"); // Client print i print chat ustawia nam że
graczowi zostaje (w tym przypadku) wypisanie
Masz 1 HP
set_user_health(id,1); // ustawia graczowi HP na 1 (pierwsza wartość-konkretny gracz a nie
cały serwer a druga to ilość HP
}
Jak nie ma błędów przy zapisywaniu jest dobrze

teraz coś o Dodawaniu czegoś. Robimy to za pomocą komendy
give_item(id,"przedmiot");
np przy wyborze numeru 2 gracz dostanie m4

Kod:
c
ase 2:
{
client_print(id,print_chat,"Dostajesz M4");
give_item(id,"weapon_m4a1");
//dodajmy tez magazynek xd
give_item(id, "ammo_556nato");
}
i gracz po wylosowaniu dostanie M4.
Gdy napiszemy
case 3:
{
client_print(id,print_chat,"Masz Pecha");
}
gracz nie dostanie nic. Wyskoczy mu na chacie że ma pecha.

na 4 rzecz wpadniecie sami

Teraz zakończymy losowanie klamrą
switch(random_num(1, 4))
{
case 1 :
{
client_print(id,print_chat,"Masz 1 HP"); // Client print i print chat ustawia nam że
graczowi zostaje (w tym przypadku) wypisanie
Masz 1 HP
set_user_health(id,1); // ustawia graczowi HP na 1 (pierwsza wartość-konkretny gracz a nie
cały serwer a druga to ilość HP
}
case 2:
{
client_print(id,print_chat,"Dostajesz M4");
give_item(id,"weapon_m4a1");
//dodajmy tez magazynek xd
give_item(id, "ammo_556nato");
}
case 3:
{
client_print(id,print_chat,"Masz Pecha");
}
} // <-o Ta!
i cały public rulecia też. Nasz plugin wygląda tak

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <fakemeta>
#include <engine>
#define PLUGIN "Ruletka_Tutek"
#define VERSION "1.28"
#define AUTHOR "CheQ"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /rulecia","rulecia");
register_clcmd("say_team /rulecia","rulecia");
}
public rulecia(id)
{
switch(random_num(1, 4))
{
case 1 :
{
client_print(id,print_chat,"Masz 1 HP");
set_user_health(id,1);
}
case 2:
{
client_print(id,print_chat,"Dostajesz M4");
give_item(id,"weapon_m4a1");
give_item(id, "ammo_556nato");
}
case 3:
{
client_print(id,print_chat,"Masz Pecha");
}
case 4:
{
client_print(id,print_chat,"Masz 100 HP");
set_user_health(id,100);
}
}
}
Nie wiem jak wam ale mi się Skompilowało bez błędów.
aby ruletke rozbudować polecam poczytać o operacjach na graczu naprawde jest z Tym fajna zabawa.

Tutorial Wykonany przez CheQ. (Hakuna Matata

Kopiowanie i rozpewszechnianie dozwolane jedynie z podpisem autora.
Jest to mój pierwszy tutorial więc proszę nie pisać rzeczy w stylu "po co to i dlaczego" czy coś. Komuś to się może przydać

#209439 System Many, Punktów, Złota
Napisane przez dRaq
w 25.01.2011 23:48
Żeby to miało jakiś sens proponuję dorobić do tego sklep
Kod w "znajdź" oparty jest na czystej wersji bez dodatków
Zapis MySQL
Dodanie zmiennej:
new player_class[33]
dodaj pod:
new player_pkt[33]
Tworzenie komórek w tabeli:
format(q_command,511,"CREATE TABLE IF NOT EXISTS `%s` ( `nick` VARCHAR( 64 ),`ip` VARCHAR( 64 ),`sid` VARCHAR( 64 ), `klasa` integer( 2 ) , `lvl` integer( 3 ) DEFAULT 1, `exp` integer( 9 ) DEFAULT 0, `str` integer( 3 ) DEFAULT 0, `int` integer( 3 ) DEFAULT 0, `dex` integer( 3 ) DEFAULT 0, `agi` integer( 3 ) DEFAULT 0 ) ",g_sqlTable)
zamień na:
format(q_command,511,"CREATE TABLE IF NOT EXISTS `%s` ( `nick` VARCHAR( 64 ),`ip` VARCHAR( 64 ),`sid` VARCHAR( 64 ), `klasa` integer( 2 ) , `lvl` integer( 3 ) DEFAULT 1, `exp` integer( 9 ) DEFAULT 0, `str` integer( 3 ) DEFAULT 0, `int` integer( 3 ) DEFAULT 0, `dex` integer( 3 ) DEFAULT 0, `agi` integer( 3 ) DEFAULT 0, `pkt` integer( 4 ) DEFAULT 0 ) ",g_sqlTable)
Zapis:
public SaveXP(id)
{
if(g_boolsqlOK)
{
if(!is_user_bot(id) && player_xp[id]!=player_xp_old[id])
{
new name[64]
new ip[64]
new sid[64]
get_user_name(id,name,63)
replace_all ( name, 63, "'", "Q" )
replace_all ( name, 63, "`", "Q" )
get_user_ip(id, ip ,63,1)
get_user_authid(id, sid ,63)
if(get_cvar_num("diablo_sql_save")==0)
{
new q_command[512]
format(q_command,511,"UPDATE `%s` SET `ip`='%s',`sid`='%s',`lvl`='%i',`exp`='%i',`str`='%i',`int`='%i',`dex`='%i',`agi`='%i' WHERE `sid`='%s' AND `klasa`='%i' ",g_sqlTable,ip,sid,player_lvl[id],player_xp[id],player_strength[id],player_intelligence[id],player_dextery[id],player_agility[id],name,player_class[id])
SQL_ThreadQuery(g_SqlTuple,"Save_xp_handle",q_command)
}
else if(get_cvar_num("diablo_sql_save")==1)
{
new q_command[512]
format(q_command,511,"UPDATE `%s` SET `nick`='%s',`sid`='%s',`lvl`='%i',`exp`='%i',`str`='%i',`int`='%i',`dex`='%i',`agi`='%i' WHERE `sid`='%s' AND `klasa`='%i' ",g_sqlTable,name,sid,player_lvl[id],player_xp[id],player_strength[id],player_intelligence[id],player_dextery[id],player_agility[id],ip,player_class[id])
SQL_ThreadQuery(g_SqlTuple,"Save_xp_handle",q_command)
}
else if(get_cvar_num("diablo_sql_save")==2)
{
new q_command[512]
format(q_command,511,"UPDATE `%s` SET `nick`='%s',`ip`='%s',`lvl`='%i',`exp`='%i',`str`='%i',`int`='%i',`dex`='%i',`agi`='%i' WHERE `sid`='%s' AND `klasa`='%i' ",g_sqlTable,name,ip,player_lvl[id],player_xp[id],player_strength[id],player_intelligence[id],player_dextery[id],player_agility[id],sid,player_class[id])
SQL_ThreadQuery(g_SqlTuple,"Save_xp_handle",q_command)
}
player_xp_old[id]=player_xp[id]
}
}
else sql_start()
return PLUGIN_HANDLED
}
zmień na:
public SaveXP(id)
{
if(g_boolsqlOK)
{
if(!is_user_bot(id) && player_xp[id]!=player_xp_old[id])
{
new name[64]
new ip[64]
new sid[64]
get_user_name(id,name,63)
replace_all ( name, 63, "'", "Q" )
replace_all ( name, 63, "`", "Q" )
get_user_ip(id, ip ,63,1)
get_user_authid(id, sid ,63)
if(get_cvar_num("diablo_sql_save")==0)
{
new q_command[512]
format(q_command,511,"UPDATE `%s` SET `ip`='%s',`sid`='%s',`lvl`='%i',`exp`='%i',`str`='%i',`int`='%i',`dex`='%i',`agi`='%i',`pkt`='%i' WHERE `sid`='%s' AND `klasa`='%i' ",g_sqlTable,ip,sid,player_lvl[id],player_xp[id],player_strength[id],player_intelligence[id],player_dextery[id],player_agility[id],player_pkt[id],name,player_class[id])
SQL_ThreadQuery(g_SqlTuple,"Save_xp_handle",q_command)
}
else if(get_cvar_num("diablo_sql_save")==1)
{
new q_command[512]
format(q_command,511,"UPDATE `%s` SET `nick`='%s',`sid`='%s',`lvl`='%i',`exp`='%i',`str`='%i',`int`='%i',`dex`='%i',`agi`='%i',`pkt`='%i' WHERE `sid`='%s' AND `klasa`='%i' ",g_sqlTable,name,sid,player_lvl[id],player_xp[id],player_strength[id],player_intelligence[id],player_dextery[id],player_agility[id],player_pkt[id],ip,player_class[id])
SQL_ThreadQuery(g_SqlTuple,"Save_xp_handle",q_command)
}
else if(get_cvar_num("diablo_sql_save")==2)
{
new q_command[512]
format(q_command,511,"UPDATE `%s` SET `nick`='%s',`ip`='%s',`lvl`='%i',`exp`='%i',`str`='%i',`int`='%i',`dex`='%i',`agi`='%i',`pkt`='%i' WHERE `sid`='%s' AND `klasa`='%i' ",g_sqlTable,name,ip,player_lvl[id],player_xp[id],player_strength[id],player_intelligence[id],player_dextery[id],player_agility[id],player_pkt[id],sid,player_class[id])
SQL_ThreadQuery(g_SqlTuple,"Save_xp_handle",q_command)
}
player_xp_old[id]=player_xp[id]
}
}
else sql_start()
return PLUGIN_HANDLED
}
Odczyt z tabeli:
player_dextery[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"dex"))
dodaj pod:
player_pkt[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"pkt"))
Dodanie 1 pkt po zabiciu:
Znajdź:
[if (is_user_connected(kid) && is_user_connected(vid) && get_user_team(kid) != get_user_team(vid))
{
show_deadmessage(kid,vid,headshot,weaponname)
award_item(kid,0)
award_kill(kid,vid)
add_respawn_bonus(vid)
add_bonus_explode(vid)
add_barbarian_bonus(kid)
if (player_class[kid] == Barbarzynca)
refill_ammo(kid)
set_renderchange(kid)
savexpcom(vid)
}
Zamień na:
if (is_user_connected(kid) && is_user_connected(vid) && get_user_team(kid) != get_user_team(vid))
{
show_deadmessage(kid,vid,headshot,weaponname)
award_item(kid,0)
award_kill(kid,vid)
add_respawn_bonus(vid)
add_bonus_explode(vid)
add_barbarian_bonus(kid)
if (player_class[kid] == Barbarzynca)
refill_ammo(kid)
set_renderchange(kid)
player_pkt[kid]+=1
savexpcom(vid)
}
Hud z ilością PKT:
public write_hud(id)
Nad ostatnią klamrą wklej:
new Msg123[512]
set_hudmessage(255, 255, 255, -1.0, 0.85, 0, 6.0, 3.0)
format(Msg123,511,"Punkty: %i", player_pkt[id])
show_hudmessage(id, Msg123)
Możliwe że o czymś zapomniałem, bo jest późno i chce mi się spać -.-
Jako że Wy na początku pomagaliście mi, to ja postanowiłem zrobić coś dla Was

Sklep by KariiO:
Kliknij

Standardowy sklep używa funkcji od pobierania takiej:
public bool:UTIL_Buyformoney(id,amount)
{
if (cs_get_user_money(id) >= amount)
{
cs_set_user_money(id,cs_get_user_money(id)-amount)
return true
}
else
{
hudmsg(id,2.0,"Nie masz tyle zlota !")
return false
}
return false
}
Nowy sklep za np. punkty:
public UTIL_Buyforpkt(id,amount)
{
if (player_pkt[id] >= amount)
{
player_pkt[id]-=amount
return true
}
else
{
hudmsg(id,2.0,"Nie masz tyle zlota !")
return false
}
return false
}
I zamiast tego w norm. sklepie:
if (!UTIL_Buyformoney(id,9000))
Dajemy to:
if (!UTIL_Buyforpkt(id,ilosc))
#209450 System Many, Punktów, Złota
Napisane przez KariiO
w 26.01.2011 01:27
Standardowy sklep używa funkcji od pobierania takiej:
public bool:UTIL_Buyformoney(id,amount) { if (cs_get_user_money(id) >= amount) { cs_set_user_money(id,cs_get_user_money(id)-amount) return true } else { hudmsg(id,2.0,"Nie masz tyle zlota !") return false } return false }Nowy sklep za np. mane:
public UTIL_Buyformana(id,amount) { if (mana[id] >= amount) { mana[id]-=amount return true } else { hudmsg(id,2.0,"Nie masz tyle many !") return false } return false }
mana[id] - zmieniamy na swoje...
I zamiast tego w norm. sklepie:
if (!UTIL_Buyformoney(id,9000))Dajemy to:
if (!UTIL_Buyformana(id,ilosc))
Malusieńki tut jak by ktoś sam nie umiał sobie poradzić ;]
#208934 2 Pytania
Napisane przez Dimni
w 24.01.2011 15:33
if (count > 2)- zamień 2 na liczbę którą chcesz.
Natomiast jeżeli chcesz żeby liczba była zależna od player_b_mine, to zmień na:
if (count => player_b_mine[id])
{
hudmsg(id,2.0,"Mozesz polozyc maksymalnie %i min na runde", player_b_mine[id])
return PLUGIN_CONTINUE
}
Pisane z pamięci, sprawdź czy wszystko sie zgadza.
EDIT: Drobna poprawka.
#208720 2 Pytania
Napisane przez dRaq
w 23.01.2011 19:53
Dodajesz nową zmienną
Tworzysz tabelę w bazie i dodajesz tą zmienną do funkcji zapisu
W publicu deathmsg dodajesz aby po zabiciu dawało x pkt
Później tworzysz hud z wyświetlaniem
#204214 Czasy Ładowania na nozu
Napisane przez
Drewno.
w 08.01.2011 20:29
else if(casting[id]==0)
{
new Float: time_delay = 5.0-(player_intelligence[id]/80.0)
if(player_class[id] == Ninja) time_delay*=2.0
else if(player_class[id] == Mag)
{
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] == Zabojca) time_delay*=0.0
else if(player_class[id] == Paladyn) time_delay*=1.2
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()
}
time_delay*=X - x to czas trwania ladowania* 5 = czyli time_delay*=1.0 = 1*5=5
jesli chcesz dac osobny czas ladowania klasie to pod
else if(player_class[id] == Paladyn) time_delay*=1.2
dodaj
else if(player_class[id] == Twoja_Klasa) time_delay*=X
- AMXX.pl: Support AMX Mod X i SourceMod
- → Przeglądanie profilu: Reputacja: LogiCC :D
- Regulamin