←  Poradniki oraz Łatki

AMXX.pl: Support AMX Mod X i SourceMod

»

Tutorial
Blokada expienia

  • +
  • -
sebul - zdjęcie sebul 12.01.2011

Widziałem raz, że ktoś tam się pytał na forum jak wyłączyć dawanie expa, gdy na serwerze jest mniej niż 2 graczy, czyli po prostu jak zablokować tzw. expienie.
Spoiler


Od teraz exp będzie dodawany tylko wtedy, gdy na serwerze będzie minimum 2 graczy (boty i hltv się nie wliczają). Dodatkowo dodałem, że jeśli ilość expa, którą ma dostać gracz, będzie większa, bądź równa 200, to wtedy ta blokada nie będzie działać, przyda się takie coś, gdy ktoś ma dodaną komendę na dawanie expa i będzie chciał sobie dodać expa gdy na serwerze będzie pusto :D oczywiście 200 można sobie zamienić na inną wartość.
Użytkownik sebul edytował ten post 25.02.2011 03:38
Odpowiedz

  • +
  • -
KariiO - zdjęcie KariiO 12.01.2011

Dobra blokada ale wiesz ludzie są sprytni :) Pisał gdzieś Verticus jak zrobić lepszą blokadę może znajdziesz i też pomyślisz ^^
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 12.01.2011

Sprytni w sensie, że siedzi 2 graczy i sobie expią? Tego akurat nie wykluczam, ale przy takim czymś co podałem już na pewno nie spotkasz jakiegoś jednego typka na serwerze co będzie latał z paką jak najszybciej na bsa, albo ratował zakładników, żeby zdobyć expa.
Odpowiedz

  • +
  • -
KariiO - zdjęcie KariiO 12.01.2011

Zmiana tej jedynki na dwójkę nic nie da ?:
if(player_xp[id]+amount!=0 && get_playersnum()>1){
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 12.01.2011

Zmiana tej jedynki na dwójkę nic nie da ?:

if(player_xp[id]+amount!=0 && get_playersnum()>1){

Da, ale jeśli masz jakieś hltv, albo po prostu boty na spekcie, to wtedy już nie...
Użytkownik sebul edytował ten post 13.01.2011 23:09
Odpowiedz

cesik - zdjęcie cesik 16.02.2011

hmmm fajne a jest opcja zeby zrobic np blokade nocna expa np.
Od 24 do 9 rano wykonywanie celow mapy i zabijanie przeciwnikow bedzie dawalo 1 exp ?
za pomoc dam +:D
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 16.02.2011

jak zwykle najprostsze rzeczy są najlepsze ;]
Odpowiedz

cesik - zdjęcie cesik 16.02.2011

tzn?
Odpowiedz

FreZZy - zdjęcie FreZZy 16.02.2011

tzn jak bedzie 5 graczy na servie 0 5 rano to szybko wyjdą bo nie będzie im dawało expa za gre
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 16.02.2011

Co do godzin od kiedy do kiedy ma dawać expa, to niby da się to jakoś zrobić, ale to będzie na zasadzie takiej, ze gdy wartość tego dodanego expa przekroczy powiedzmy 30, to wtedy można dodać, żeby dawało 1, czyli to będzie mniej więcej tak wyglądać:
public Give_Xp(id,amount)
{
if(player_class_lvl[id][player_class[id]]==player_lvl[id])
{
if(player_xp[id]+amount!=0 && get_playersnum()>1){
new sHour[3], iHour;
get_time("%H", sHour, 2);
iHour = str_to_num(sHour);
if(iHour <= 9 && amount > 30) amount = 1;
player_xp[id]+=amount

oczywiście każdy sobie może pozmieniać te wartości.
Odpowiedz

cesik - zdjęcie cesik 16.02.2011

i mam to dobisac do diablo.sma? i zrobic nowy diablo.amx?
Odpowiedz

FreZZy - zdjęcie FreZZy 16.02.2011

No to na początek znajdź

public Give_Xp(id,amount)
{
if(player_class_lvl[id][player_class[id]]==player_lvl[id])
{


i zamień na

public Give_Xp(id,amount)
{
if(player_class_lvl[id][player_class[id]]==player_lvl[id])
{
if(player_xp[id]+amount!=0 && get_playersnum()>1){
new sHour[3], iHour;
get_time("%H", sHour, 2);
iHour = str_to_num(sHour);
if(iHour <= 9 && amount > 30) amount = 1;
player_xp[id]+=amount


następnie znajdź w tym samym publicu

write_hud(id)
}
}


i dodaj za


return PLUGIN_CONTINUE;


Odpowiedz

cesik - zdjęcie cesik 16.02.2011

k dzięki i rozumiem ze szlaban na expa zaczyna sie od godz 3 rano
new sHour[3], iHour;
czy od 2
get_time("%H", sHour, 2);
do
if(iHour <= 9 && amount > 30) amount = 1;
9 rano

i wlaczy sie jesli ktos jednorazowo zdobdedzie 30 exp-a?
Użytkownik cesik edytował ten post 16.02.2011 21:36
Odpowiedz

FreZZy - zdjęcie FreZZy 16.02.2011

tak
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 16.02.2011

tak

Nie... Jeśli godzina będzie mniejsza bądź równa 9 (czyli od 0 do 9), to gdy dawany exp będzie przekraczał 30 to zamiast tych, np. 31 doda tylko 1.
Odpowiedz

cesik - zdjęcie cesik 16.02.2011

No tak napisaleiscie ze tak ale od ktorej godziny zacznie sie mniejsze naliczanie expa...


public Give_Xp(id,amount)
{       
        if(player_class_lvl[id][player_class[id]]==player_lvl[id])
        {
                if(player_xp[id]+amount!=0 && get_playersnum()>1){
                        new sHour[22], iHour;
                        get_time("%H", sHour, 2);
                        iHour = str_to_num(sHour);
                        if(iHour <= 9 && amount > 20) amount = 1;
                        player_xp[id]+=amount


czy to bedzie dzialalo od godz 22 do 9 rano? i po otrzymania przez kogos wiecej niz 20 expa w rundzie zapisze mu czylo 1?

nie kumam tylko do czego skurzy ta linijka
get_time("%H", sHour, 2);

Użytkownik cesik edytował ten post 16.02.2011 23:42
Odpowiedz

FreZZy - zdjęcie FreZZy 16.02.2011

Wyświetl postUżytkownik FreZZy dnia napisał
tak

Nie... Jeśli godzina będzie mniejsza bądź równa 9 (czyli od 0 do 9), to gdy dawany exp będzie przekraczał 30 to zamiast tych, np. 31 doda tylko 1.


omg a o co innego chodziło -.-

przecież napisał to samo / bardzo podobne
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 17.02.2011

No tak napisaleiscie ze tak ale od ktorej godziny zacznie sie mniejsze naliczanie expa...


public Give_Xp(id,amount)
{       
        if(player_class_lvl[id][player_class[id]]==player_lvl[id])
        {
                if(player_xp[id]+amount!=0 && get_playersnum()>1){
                        new sHour[22], iHour;
                        get_time("%H", sHour, 2);
                        iHour = str_to_num(sHour);
                        if(iHour <= 9 && amount > 20) amount = 1;
                        player_xp[id]+=amount


czy to bedzie dzialalo od godz 22 do 9 rano? i po otrzymania przez kogos wiecej niz 20 expa w rundzie zapisze mu czylo 1?

nie kumam tylko do czego skurzy ta linijka
get_time("%H", sHour, 2);

Nie, nie, nie i jeszcze raz nie. Tablicy "sHour[3]" w ogóle nie ruszaj. Chyba wyraźnie napisałem, że w tym co ja podałem ta blokada będzie działać od 0 (czyli 24) do 9, a jeśli chcesz, aby blokada działała wcześniej to dodaj tak
public Give_Xp(id,amount)
{
if(player_class_lvl[id][player_class[id]]==player_lvl[id])
{
if(player_xp[id]+amount!=0 && get_playersnum()>1){
new sHour[3], iHour;
get_time("%H", sHour, 2);
iHour = str_to_num(sHour);
if((iHour <= 9 || iHour >= 22) && amount > 30) amount = 1;
player_xp[id]+=amount

I teraz od 22 do 9 gdy exp będzie większy od 30 to będzie dodawać 1.

omg a o co innego chodziło -.-

przecież napisał to samo / bardzo podobne

No nie wiem czy to samo...
Użytkownik sebul edytował ten post 17.02.2011 00:05
Odpowiedz

cesik - zdjęcie cesik 17.02.2011

No to k zostaje przy tym tylko ze
public Give_Xp(id,amount)
{       
        if(player_class_lvl[id][player_class[id]]==player_lvl[id])
        {
                if(player_xp[id]+amount!=0 && get_playersnum()>1){
                        new sHour[3], iHour;
                        get_time("%H", sHour, 2);
                        iHour = str_to_num(sHour);
                        if(iHour <= 9 && amount > 20) amount = 1;
                        player_xp[id]+=amount


tylko ze dam zeby po przekroczeniu 20 exp dawalo 1
i teraz mam z tego amx zrobic czy wkleic w cale diablo do .smb? jesli tak to gdzie
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 17.02.2011

Najpierw wklejasz do sma diablo, czyli zamiast
public Give_Xp(id,amount)
{
if(player_class_lvl[id][player_class[id]]==player_lvl[id])
{
if(player_xp[id]+amount!=0 && get_playersnum()>1){
player_xp[id]+=amount

potem kompilujesz i plik amxx wrzucasz na ftp serwera do folderu "plugins". Żebym takie coś musiał tłumaczyć... :mur:
Odpowiedz