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
 

Zmiana prędkości graczaJak zrobić to poprawnie oraz dlaczego NIE poprzez CurWeapon

speedmaxspeed prędkość set_user_maxspeed

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
32 odpowiedzi w tym temacie

#1 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 29.03.2013 21:05

*
Popularny

Istota prędkości u gracza
Prędkość, z jaką porusza się gracz to iloczyn jego maksymalnej prędkości oraz spowolnienia (np. po skoku, otrzymaniu niektórych obrażeń czy podczas używania spadochronu).
Jednakże chcąc dodać graczowi bonus prędkości, bądź go spowolnić, wystarczy się skupić na jego maksymalnej prędkości i tym się właśnie zajmiemy.

Prędkość standardowa
Standardowo, prędkość maksymalna gracza jest ustalana głównie w 3 sytuacjach (dla CS 1.6):
  • Przy aktywowaniu broni, gdzie wartość maksymalnej prędkości gracza jest ustalana w zależności od przyjmowanej broni (210 - 260):
    • 210: AWP, G3SG1, SG550
    • 220: M249
    • 221: AK47
    • 230: M3, M4A1
    • 235: SG552
    • 240: XM1014, Galil, Famas, AUG
    • 245: P90
    • 250: Glock, USP, P228, dEagle, Elites, FiveseveN, UZI, TMP, MP5, UMP ,Knife , HE, FB, SG, C4
    • 260: Scout
  • Przy rozpoczęciu podkładania bomby (0)
  • Przy rozpoczęciu rozbrajania bomby (0)
Ograniczenia górne prędkości maksymalnej
Maksymalna prędkość graczy jest ograniczona bezwzględnie:
  • do 1000 przez HLDS
  • przez cvar serwera sv_maxspeed
  • przez cvary każdego z graczy:
  • cl_forwardspeed dla biegu do przodu
  • cl_backspeed dla biegu do tyłu
  • cl_sidespeed dla biegu w bok
  • cl_upspeed dla szybkości wspinania się po drabinie
  • cl_downspeed dla szybkości schodzenia z drabiny
Jeśli chcemy zezwolić graczom na korzystanie z bonusów prędkości,
warto ustawić cvar serwera sv_maxspeed na 1000.

Do tego, możemy zmieść graczom limity ustalone przez nich samych:
public client_connect(id){
client_cmd(id, "cl_forwardspeed 1000");
client_cmd(id, "cl_backspeed 1000");
client_cmd(id, "cl_sidespeed 1000");
client_cmd(id, "cl_upspeed 1000");
client_cmd(id, "cl_downspeed 1000");
}


Zmiana prędkości gracza
Maksymalna prędkość gracza zapisana jest jako dana prywatna bytu (pdata) pod identyfikatorem pev_maxspeed.
Jednak dużo łatwiej będzie nam korzystać z gotowych natywów set_user_maxspeed i get_user_maxspeed.
jednakże, jak już wiemy, prędkość gracza zmienia się m.in. wraz z aktywowaniem broni, a więc samo przypisanie jej do gracza nie wystarczy.

W tym celu, poza zmianą prędkości gracza w miejscu, będziemy musieli oznaczyć go jako posiadacza
bonusu prędkości, by w momencie, gdy zaistnieje reset jego prędkości, ponownie nadać utracony bonus.

Event zmiany prędkości
Do wykrycia resetu maksymalnej prędkości u gracza, służy event HamSandwich: Ham_CS_Player_ResetMaxSpeed.
RegisterHam(Ham_CS_Player_ResetMaxSpeed, "player", "speed", 1);


Funkcja Ham_CS_Player_ResetMaxSpeed wyłapuje dokładnie i tylko reset prędkości gracza, czyli właśnie to, czego chcemy.
Ham_CS_Player_ResetMaxSpeed jest częścią HamSandwich od wersji 1.3. Jeśli korzystasz ze starszej wersji HamSandwich,
zalecam Ci zaktualizować go do najnowszej wersji 1.3, dzięki czemu zyskasz dość sporo nowych eventów do wykorzystania.

Jeśli jednak masz starą wersję i nie chcesz aktualizować modułu kanapki z szynką, zamiast eventu Ham_CS_Player_ResetMaxSpeed,
użyj eventu, który wykonuje się przy każdym procesie myślenia przedmiotów, czyli zawsze, gdy potrzeba, oraz
przy zmianie właściwości przedmiotów, zwłaszcza broni, podczas przeładowania, czy oddawania strzałów,
czyli Ham_Item_PreFrame. Dla wersji HamSandwich starszych, niż 1.3 jest to jedyne rozwiązanie.

WebKompilator na AMXX.pl posiada ham_const.inc w wersji 1.3, a więc obsługuje najnosze eventy HamSandwich.

Jeśli tworzysz uniwersalny plugin, bądź modyfikację i nie wiesz, czy Administrator korzysta z aktualnej wersji HamSandwich, czy nie,
warto sprawdzić, czy można wykorzystać event Ham_CS_Player_ResetMaxSpeed, czy będzie trzeba użyć Ham_Item_PreFrame.
RegisterHam(get_player_resetmaxspeed_func(), "player", "speed", 1);

Ham:get_player_resetmaxspeed_func(){
#if defined Ham_CS_Player_ResetMaxSpeed
return IsHamValid(Ham_CS_Player_ResetMaxSpeed)?Ham_CS_Player_ResetMaxSpeed:Ham_Item_PreFrame;
#else
return Ham_Item_PreFrame;
#endif
}
Autor funkcji get_player_resetmaxspeed_func: ConnorMcLeod.

Przykładowe zastosowanie
Przykład pluginu, który na początku każdej rundy, przyzna losowemu graczowi buff prędkości do 1000.0 wraz z komentarzami.
Spoiler


Dlaczego CurWeapon NIE JEST eventem od resetu prędkości
CurWeapon jest eventem, wywoływanym w momencie zmiany stanu broni.
Czyli m.in. po każdym strzale, zmianie broni, przeładowaniu czy zakupieniu.

Wiele osób BŁĘDNIE wykorzystuje event CurWeapon zamiast Ham_CS_Player_ResetMaxSpeed.
Wymienię tutaj kilka najważniejszych z negatywnych skutków tego tragicznego rozwiązania.

CurWeapon nie wykonuje się po spawnie graczy (choć powinien) i zmiana prędkości gracza
zachodzi w praktyce dopiero po zmianie broni, bądź oddanym strzale czy przeładowaniu.

CurWeapon zachodzi w momencie, kiedy zmienia się stan broni, jak wspomniałem, m.in.
podczas strzału, choć nie powinien. Jest to zdecydowanie niepotrzebne i wpływa zauważalnie
na zwiększenie lagów na serwerze. Używanie tego rozwiązania w połączeniu z wymagającymi
obliczeniami, znacząco zwiększa lagi gracza i potem na forum pojawiają się tematy "Zacina mi CS, jak strzelam".

CurWeapon wykonuje się dopiero pewien czas po evencie resetu prędkości gracza, przez co
możemy zauważyć dość irytujące "bujanie' postacią podczas strzelania, czy zmiany broni.

CurWeapon jest eventem zawodnym. Innymi słowy, może się nie wykonać, tym
samym, nie reustalić prędkości gracza po resecie jego maksymalnej prędkości.
Wystarczy bardzo szybko zmienić dokładnie czterokrotnie broń (z jednej na drugą),
by zyskał status zawodnego i nie wykonał się, nie przyznając nam buffu, czy antybuffu.

Dla standardowego połączenia, jest to okres ok. 1/4 sekundy. Czterokrotna zmiana
broni w tym czasie nie jest trudna, zapewne zgodzą się ze mną Ci, którzy odblokowali
labirynt w ukrytej krainie w Raymanie 2 bez wpisywania tajnego kodu w menu głównym.

Przykład nieskutecznego działania eventu CurWeapon dla przykładowego pluginu:
#include <amxmodx>
#include <fun>

public plugin_init(){
register_plugin("1000 speed", "1.0", "benio101");
register_event("CurWeapon", "CurWeapon", "be");
}

public CurWeapon(id){
set_user_maxspeed(id, 75.0);
}


http://youtu.be/ecZx0SFWqpg

Jeśli nie potraficie w ciągu ok. 1/4 sekundy czterokrotnie zmienić broni,
a chcielibyście się przekonać, że CurWeapon faktycznie NIE ZAWSZE działa,
załączam Wam config, który możecie sobie zbindować pod wodolny klawisz.
Po wciśnięciu klawisza, wasza prędkość wróci do podstawowej (zignoruje efekt
speed buffa, spowolnienia, czy unieruchomienia) o ile jest on nadawany przez CurWeapon.

Config z bindem pod klawisz "L", wymaga posiadania noża oraz pistoletu:
alias "waits" "wait; wait; wait; wait; wait; wait"
bind "l" "slot2; wait; slot3; waits; slot2; waits; slot3; waits; slot2;"

Jak widzicie, zmienia on broń dokładnie czterokrotnie w ok. 1/4 sekundy.
Pierwsza zmiana służy jedynie upewnieniu się, że rozpoczniemy zmiany od pistoletu.
Dla wolnego połączenia lub mulącego serwera / CSa, należy zmniejszyć liczbę
wait w aliasie z 6 do ok. 4. Zainteresowani zresztą trafią na to metodą prób i błędów.

Użytkownik Benio101 edytował ten post 29.03.2013 21:31
Dodałem wzmiankę o ham_const.inc w WebKompilatorze


#2 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 29.03.2013 21:38

Dobrze by było, gdybyś jednak napisał, na jakich wersjach binarek działa "kanapka" w wersji 1.3.
(29.03.2013 21:42):
obydwu
sebul (29.03.2013 21:56):
Z przed aktualizacji z lutego i po?
(29.03.2013 22:57):
Tak. Jest to kwestia jedynie offsetów dla linuxa.
Szczegóły w zalinkowanym temacie na AM.

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#3 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1 678
Godlike

  • Postów:2 496
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 29.03.2013 23:32

Ładnie ale przydał by się opis jak np dodać do wartości szybkości gracza tylko ileś więcej :P tak dla laików ;)
(29.03.2013 23:41):
ok, postaram się wkrótce dodać

  • +
  • -
  • 0

#4 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 29.03.2013 23:53

Czyli jeśli u mnie na CODzie klasy poruszają się szybciej na boki wystarczy, że w codmod.cgf dopisze cvar cl_sidespeed 3000 ??
  • +
  • -
  • 0

#5 Vasto_Lorde

    Wszechmogący

  • Power User

Reputacja: 256
Wszechwidzący

  • Postów:633
  • GG:
  • Steam:steam
  • Imię:Maćko
  • Lokalizacja:Poznań
Offline

Napisano 30.03.2013 00:04

Czyli jeśli u mnie na CODzie klasy poruszają się szybciej na boki wystarczy, że w codmod.cgf dopisze cvar cl_sidespeed 3000 ??

Jeśli poruszają się szybciej bokami, to chyba powinieneś zwiększyć wartość poruszania się w przód.
  • +
  • -
  • 0

#6 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 30.03.2013 00:12

Wtedy na boki jeszcze szybciej =]
  • +
  • -
  • 0

#7 Vasto_Lorde

    Wszechmogący

  • Power User

Reputacja: 256
Wszechwidzący

  • Postów:633
  • GG:
  • Steam:steam
  • Imię:Maćko
  • Lokalizacja:Poznań
Offline

Napisano 30.03.2013 00:19

Nie bardzo chce mi się wierzyć, że jeśli zwiększasz wartość komendy w przód, poruszasz się szybciej na boki. Poza tym, jeśli ograniczasz komendy to nie ma po co w kondycje więcej punktów dawać. (ale taki trochę offtop)
  • +
  • -
  • 0

#8 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 30.03.2013 00:24

Nie nie. Uzywam sv_maxspeed 3000
  • +
  • -
  • 0

#9 Vasto_Lorde

    Wszechmogący

  • Power User

Reputacja: 256
Wszechwidzący

  • Postów:633
  • GG:
  • Steam:steam
  • Imię:Maćko
  • Lokalizacja:Poznań
Offline

Napisano 30.03.2013 00:31

To zwiększ cl_forwardspeed to nie będziesz biegał szybciej na boki.
  • +
  • -
  • 0

#10 Gość_21977_*

  • Autor tematu
  • Gość

Reputacja: 0

Offline

Napisano 30.03.2013 01:37

Komendy cl_* są komendami gracza, więc podawanie ich w konfiguracji serwera nie ma większego sensu.
Odnośnie komend cl_forward/back_speed a cl_sidespeed (u klienta), jeśli ich wartości będą się różnić, to
chodzenie na "ukos" będzie mniej wydajne, innymi słowy, najlepsza konfiguracja "na skos" to taka, gdzie
cl_sidespeed jest takie samo, jak cl_forwardspeed i cl_backspeed. Nie ma też problemu, gdy są to wartości
"1000", gdyż liczy się iloczyn tych liczb w określaniu "wypadkowej" side i line speeda dla chodu "na skos".

#11 AztekHQS

    Banned

  • Zbanowany

Reputacja: 98
Zaawansowany

  • Postów:279
  • Lokalizacja:Polska
Offline

Napisano 30.03.2013 02:33

Można też ustawić 'stałą' prędkość gracza, grawitację itp FM_CmdStart
przykład:
#include <amxmodx>
#include <fakemeta>
#include <fun>

public plugin_init()
register_forward(FM_CmdStart, "CmdStart", 1);

public CmdStart(id) {
if(is_user_alive(id)) { // sprawdza czy gracz zyje
set_user_maxspeed(id, 400.0); // ustawia speed 400
set_user_gravity(id, 0.5); // ustawia 2x mniejsza grawitacje
}
return 2; // informuje metamod o zrobieniu czegos, wciaz wykonuje funkcje docelowa (w tym przypadku speed i grawitacja)
// i zwraca normalna wartosc
}

Najlepszy serwer JailBreak!
IP: 31.186.83.208:27043
Dołączona grafika

#12 K!113r

    Teraz to chyba Sławek kek

  • Power User

Reputacja: 387
Wszechpomocny

  • Postów:868
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 30.03.2013 13:11

Ham_CS_Player_ResetMaxSpeed wywołuje się przy zmianie prędkości, a FM_CmdStart raczej wywołuje się częściej (sam nie wiem kiedy dokładnie się wywołuje ale wiem, że częściej, różnie w necie piszą więc edytuje jak sam sobie sprawdzę :D )
  • +
  • -
  • 0

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować


#13 Jak się nazwać

    Wszechmogący

  • Power User

Reputacja: 169
Profesjonalista

  • Postów:617
  • Imię:a
  • Lokalizacja:a
Offline

Napisano 01.04.2013 16:57

Limit da radę usunąć (max speed 1000) za pomocą orpheu? Czy się mylę, jeżeli tak to na pewno przydałby się taki plugin tutaj ;)
  • +
  • -
  • 0
Pisze na zamówienie statystyki pod nvault. GG: 15600964

#14 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 03.04.2013 15:56

Limit ten jest raczej ustalany po stronie gracza, a nie serwera...
  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#15 Jak się nazwać

    Wszechmogący

  • Power User

Reputacja: 169
Profesjonalista

  • Postów:617
  • Imię:a
  • Lokalizacja:a
Offline

Napisano 03.04.2013 15:59

Maksymalna prędkość graczy jest ograniczona bezwzględnie:do 1000 przez HLDS

To miałem na myśli.
  • +
  • -
  • 0
Pisze na zamówienie statystyki pod nvault. GG: 15600964

#16 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 03.04.2013 23:31

Mi też o to samo chodzi... możesz próbować to przez orpheu rozwiązać, jednak sądzę, że limit prędkości jest nie tylko pilnowany przez serwer, ale też przez klienta gracza, więc zmiana na serwerze może nie pomóc.

Ale po co komu większa prędkość? :D
  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#17 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 03.05.2013 21:35

User Contributed Notes
Freeecode at hotmail dot com 	Jun-24-04 20:43:26

Note that the speed is reset once you change your weapon and on New Round. So the best way to keep the speed that you want is set it in the Weapon Event.
http://www.amxmodx.org/doc/index.html?page=source%2Ffunctions%2Ffun%2Fset_user_maxspeed.htm

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#18 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 03.05.2013 22:50

User Contributed Notes
Freeecode at hotmail dot com 	Jun-24-04 20:43:26

Note that the speed is reset once you change your weapon and on New Round. So the best way to keep the speed that you want is set it in the Weapon Event.
http://www.amxmodx.org/doc/index.html?page=source%2Ffunctions%2Ffun%2Fset_user_maxspeed.htm

I jak to się ma do tego tematu? Że ktoś napisał kiedyś (a nawet bardzo dawno temu, kiedy pewnie jeszcze nawet nie było "kanapki"), że prędkość jest resetowana i dlatego należy ją zmieniać w evencie weapon, to trzeba tak robić i kropka? Czasy się zmieniają i nie zawsze każdy ma rację.
  • +
  • -
  • 2

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#19 MAGNET

    SourceLearned ;)

  • Moderator

Reputacja: 661
Wszechmogący

  • Postów:1 535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Napisano 11.09.2013 17:41

A czy może takie coś by nie zadziałało??
public CurWeapon(id)
{
if(get_user_weapon(id) == CSW_KNIFE)
{
set_user_maxspeed(id, 1.0)
}
else
{
set_user_maxspeed(id, 1.0)
}
}
:P

  • +
  • -
  • 1

#20 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 11.09.2013 18:08

*
Popularny

public CurWeapon(id) { if(get_user_weapon(id) == CSW_KNIFE) { set_user_maxspeed(id, 1.0) } else { set_user_maxspeed(id, 1.0) } }


genialne twój kod:

Server: Gracz masz nóż?
Gracz: mam
Server: to bedziesz mial predkosc 1.0
Gracz2: A ja nie mam noża hahah
Server: ty tez bedziesz miec predkosc 1.0
  • +
  • -
  • 7
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D





Również z jednym lub większą ilością słów kluczowych: speedmaxspeed, prędkość, set_user_maxspeed

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych