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
 

pro100wHS - zdjęcie

pro100wHS

Rejestracja: 11.03.2014
Aktualnie: Nieaktywny
Poza forum Ostatnio: 09.07.2015 09:09
-----

#659275 Powrót do strony w menu, na której byliśmy - /klasy , /perki

Napisane przez Lacostii w 21.08.2014 15:49

Witam, miałem pewien problem z menu /klasy na COD'ie i doprowadziło mnie to do wykonania pewnego ułatwienia,  graczom pewnie oszczędzi to nerwów i klikania.

 

Chodzi o to, że jak np. jesteśmy w menu klas na 6 stronie i wybierzemy klasę do oglądnięcia, to gdy klikniemy ponownie to normalnie cofa nas na pierwszą stronę.

Nie znalazłem nigdzie, więc publikuję sposób jak załatwić ten problem, aby cofało nas na stronę na której byliśmy i żeby normalnie kontynuowało się oglądanie, a nie od pierwszej strony.

 

Pokazuję dwa sposoby jak dla standardowych menu /klasy i /perki to zrobić, ale można to odwzorować dla każdego większego menu.

 

 

 

Zmian dokonujemy oczywiście w silniku COD'a.

 

Musimy przede wszystkim dodać tablicę, której będziemy używać, niezależnie czy skorzystacie z jednego czy dwóch sposobów.

Spoiler

 

 

Dla /klasy .

Spoiler

 

 

Dla /perki .

Spoiler

 

Zapisujemy, kompilujemy i wrzucamy ponownie na serwer.

 

 

Mam nadzieję, że się komuś przyda.

Jak jakieś problemy to proszę pisać, a postaram się pomóc.


  • +
  • -
  • 12


#666827 Sklep Cod Mod by Play [Aktualizacja 02.08.2016]

Napisane przez Dziobak? w 12.10.2014 19:48

Sklep Cod Mod by Play po aktualizacji

 

opis.png

 

Siema, chciałbym się z wami podzielić moim sklepem który miałem przez pewien okres u siebie na serwerze i bardzo dobrze się sprawował i gracze byli zadowoleni. Od dawna chciałem go udostępnić ale jakoś nie było czasu albo mi się nie chciało.

 

Ważne informacje:

Rakiety i inne umiejętności używamy klawiszem E

Nazwę waluty możemy zmienić szukając w *sma

new const say_dolar[]="dolarow";

Jeżeli chcemy zmienić walute to w *sma szukamy:

#define set_waluta  cs_set_user_money
#define get_waluta  cs_get_user_money(id)

i zmieniamy, przykładowo na

#define set_waluta  cod_set_user_coins
#define get_waluta  cod_get_user_coins(id)

dodatkowo pod spodem musimy dodać:

native cod_set_user_coins(id, wartosc);
native cod_get_user_coins(id);

Gdy zmienimy walutę w przedstawionym wyżej mini poradniku wymagany będzie poniższy plugin.

https://amxx.pl/topi...3-system-monet/

 

ss.png

 

Stara Wersja

Spoiler

 

Po aktualizacji

amxx_1470128149__20160802104323_1.pngamxx_1470128176__20160802104323_2.pngamxx_1470128220__20160802104323_3.pngamxx_1470128250__20160802104323_4.pngamxx_1470128280__20160802104323_5.png

 

 

 

komendy.png

/Sklep
/Shop

inneinformacje.png

 

02.08.2015

  • Załadowana aktualizacja pluginu, 
  • zostały skasowane zbędne rzeczy,
  • wyeliminowane bugi jakie w poprzedniej wersji były,
  • wiele więcej....

 

download.png

Załączony plik  cod_shop.sma   30,17 KB  334 Ilość pobrań
  cod_shop.amxx

Załączony plik  sklep.cfg   2,27 KB  201 Ilość pobrań

 

Załączony plik  Sklep 2.5.rar   172,03 KB  668 Ilość pobrań


  • +
  • -
  • 15


#313569 Sklepik Cod Mod

Napisane przez radim w 26.10.2011 14:49

@up
:facepalm: A to, to co to jest ?
Dołączona grafika
:mur:
  • +
  • -
  • 4


#679219 Problem z floatround

Napisane przez GwynBleidD w 31.12.2014 02:54

Można też tak:
_:(poziom[id]+1) % 100 > 0)
I również pozbędziemy się tag mismatch.
  • +
  • -
  • 1


#679217 Problem z floatround

Napisane przez grankee w 31.12.2014 02:48


ShowSyncHudMsg(id, SyncHudObj, ".:|Stopien : %s|:.", ranga[(poziom[id]+1)/100 + ((poziom[id]+1) % 100 > 0)]);

Powinno być nie %s tylko %d, bo pokazujemy liczbę całkowitą, a nie ciąg znaków.

 

 

 

Ciekawostka:
operacje na floatach są dużo mniej optymalne, niż na liczbach rzeczywistych. Dlatego:

ShowSyncHudMsg(id, SyncHudObj, ".:|Stopien : %s|:.", ranga[(poziom[id]+1)/100 + ((poziom[id]+1) % 100 > 0)]);
Jest lepszym wyjściem. Jak to działa?
Najpierw dzielimy całkowitą liczbę poziom[id] zwiększoną o 1 przez 100, program w tym miejscu zwróci liczbę zaokrągloną jak wiadomo w dół. Dodatkowo obliczymy resztę z tego samego dzielenia i jeśli jest ona większa od 0, dodamy jedynkę do wcześniejszego wyniku z dzielenia. (operatory logiczne zwracają 0 dla fałszu i 1 dla prawdy, więc jeśli warunek jest spełniony, otrzymamy 1).

Zwykle nie ma to znaczenia, ale czasem może mieć. Zależy jak często wykonuje się ta funkcja. Polecam gorąco unikać floatów kiedy tylko się da :)

 

 

 

Sprytne, przyznam, że nie wpadłbym na to :)

Chociaż powinno być zamiast

(poziom[id]+1) % 100 > 0) 

które zwraca true/false a nie 1/0

((poziom[id]+1) % 100 > 0)?1:0) 

które zwróci 1/0 :) Pewnie oba zadziałają, ale żeby nie czytać warninga przy kompilacji...

 

 

 

Panie prosto w glowe, działa to bardzo prosto:

na bardziej przejrzystym przykładzie

(liczba/100)+(((liczba % 100)>0)?1:0)

całe wyrażenie składa się z:

(liczba/100)

to jest jasne, wyrażenie ma wartość dzielenia, ale zaokrąglone w dół tj ucina ułamek po przecinku więc dowolna liczba między 300 a 400 zwróci 3

 

oraz

(((liczba % 100)>0)?1:0)

to jest reszta z dzielenie tzn

301%100 da nam reszte 1, bo 300/100 daje okrągłe 3, a było 301 więc reszta z dzielenia jest 1. Jak będzie 302 to reszta będzie 2 itd, a to wyrażenie sprawdza czy reszta z dzielenie jest większa od 0, jeśli tak to całe wyrażenie zwraca 1, jeśli nie to 0. Jeśli zwróci 1 to znaczy, że taka liczba jako float byłaby zaokrąglona w górę, dlatego dodać 1.


  • +
  • -
  • 1


#679125 Problem z floatround

Napisane przez GwynBleidD w 30.12.2014 18:24

Ciekawostka:
operacje na floatach są dużo mniej optymalne, niż na liczbach rzeczywistych. Dlatego:
ShowSyncHudMsg(id, SyncHudObj, ".:|Stopien : %s|:.", ranga[(poziom[id]+1)/100 + ((poziom[id]+1) % 100 > 0)]);
Jest lepszym wyjściem. Jak to działa?
Najpierw dzielimy całkowitą liczbę poziom[id] zwiększoną o 1 przez 100, program w tym miejscu zwróci liczbę zaokrągloną jak wiadomo w dół. Dodatkowo obliczymy resztę z tego samego dzielenia i jeśli jest ona większa od 0, dodamy jedynkę do wcześniejszego wyniku z dzielenia. (operatory logiczne zwracają 0 dla fałszu i 1 dla prawdy, więc jeśli warunek jest spełniony, otrzymamy 1).

Zwykle nie ma to znaczenia, ale czasem może mieć. Zależy jak często wykonuje się ta funkcja. Polecam gorąco unikać floatów kiedy tylko się da :)
  • +
  • -
  • 1


#678361 [ROZWIĄZANE] Blokowanie broni na mapie awp_india

Napisane przez grankee w 27.12.2014 23:19


engclient_cmd(id, "weapon_KNIFE")

zamien na 

client_cmd(id,"drop")

i będzie wyrzucało mu m4/ak


  • +
  • -
  • 2


#678634 Funkcja z lokalnym czasem

Napisane przez grankee w 29.12.2014 04:22

Przy czym byłbym ostrożny, maksymalna wartość zmiennej to 1874919423, a czas od 70 roku będzie oscylował w granicach półtora miliarda, no ale to znaczy, że na następne 9 lat jest spokój :) Kwestia tylko co dalej z tym masz zamiar robić, żebyś tych sekund zbytnio nie mnożył dalej :P


  • +
  • -
  • 2


#678980 Problem z floatround

Napisane przez grankee w 30.12.2014 13:06

Z floatround jest wszystko w porządku, problem jest inny.

funkcja floatround przyjmuje jako pierwszy parametr zmienną lub stałą float, a kompilator niestety nie wie, że 301/100( a w momencie kompilacji nawet nie wiadomo jakie będą wartości, bo będą tu zmienne) to wyjdzie float i w efekcie otrzymujesz tutaj 0, bo przeznaczono dla wyniku zmienną typu int, a floatround zaokrągla to do 1(bo w górę). Float będzie wtedy jak podzielisz float przez jakąś liczbę, wtedy kompilator wie "aha dzieli float więc wyjdzie też float" i przeznacza mu odpowiedni typ zmiennej.

ShowSyncHudMsg(id, SyncHudObj, ".:|Stopien : %s|:.", ranga[floatround((float(poziom[id]+1)/100), floatround_ceil)]);

  • +
  • -
  • 2


#652402 Problem ze statystykami i natychmiastowym zabijaniem(1/x z broni)

Napisane przez xenos w 23.07.2014 13:28

wiesz okey ustawiłeś max dla użytkownika.
Ale zapomniałeś o jednym
inne pluginy używają przeważnie
cod_get_user_health(id)

I wiesz co im wtedy zwróci?
To samo co by miało zwrócić po wpisaniu : PobierzZdrowie(id, 1, 1, 1);
I tu powstaje problem ustalając zdrowie maxymalne, na końcu dzielisz ilość na 2.
Lecz pluginy używające innej funkcji tego nie robią.


Co do pierwszego problemu co opisałeś żeby zawsze wszystkie punkty dawało 1 hp za 2pkty zastosował bym:

maksymalne_zdrowie_gracza[id] = 100.0+PobierzZdrowie(id, 1,0,0)*0.5+PobierzZdrowie(id, 0,1,0)*0.5+PobierzZdrowie(id, 0,0,1)*0.5;

To dla rozwiązania problemu proponował bym test takiej funkcji PobierzZdrowie //nie sprawdzane czy działa lecz kompilator nie wywala błędów

public PobierzZdrowie(id, zdrowie_zdobyte, zdrowie_klasy, zdrowie_bonusowe)
{
    new zdrowie;
    
    if(zdrowie_zdobyte)
        zdrowie += zdrowie_gracza[id]*0.5;
    if(zdrowie_bonusowe)
        zdrowie += bonusowe_zdrowie_gracza[id]*0.5;
    if(zdrowie_klasy)
        zdrowie += zdrowie_klas[klasa_gracza[id]]*0.5;
    
    return zdrowie;
}

lub w Twoim przypadku jak masz ustawione tak jak masz obecnie to tak:

public PobierzZdrowie(id, zdrowie_zdobyte, zdrowie_klasy, zdrowie_bonusowe)
{
    new zdrowie;
    
    if(zdrowie_zdobyte)
        zdrowie += zdrowie_gracza[id];
    if(zdrowie_bonusowe)
        zdrowie += bonusowe_zdrowie_gracza[id];
    if(zdrowie_klasy)
        zdrowie += zdrowie_klas[klasa_gracza[id]]
    
    return zdrowie*0.5;
}

  • +
  • -
  • 1