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
 

Zdjęcie

Zmiana klawiszy kierunku u gracza


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

#1 Filip1512

    Wszechmogący

  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 22.09.2012 20:00

Cześć,
wpadłem na pomysł, żeby do mojej ruletki wprowadzić jeszcze bonus - zmianę kierunków chodzenia u gracza tj.
- gdy gracz chce isc w lewo, to idzie w prawo
- gdy chce isc w prawo, to idzie w lewo
- gdy chce isc do przodu, idzie do tylu
- jak chce isc do tylu, to idzie do przodu

Lecz to co zrobiłem - nie działa.
Chciałem również, aby po zdobyciu tego bonusu pisało "jestes pijany i placisz 10% wiecej czyli "TU KASA", lecz to też niedziała.

Co zrobiłem?

Zadeklarowałem:

new bool:pijak;


W jednym z bonusów dodałem tak:

case 6: {
new mandat = get_cvar_num("kasa_bonus")*0.1
ColorChat(id, GREY, "Jestes pijany i placisz dodatkowy mandat 10%% czyli %d $", mandat)
cs_get_user_money(id)-get_cvar_num("kasa_bonus")*1.1
pijak = true;
}


I tutaj podczas kompilowania wyskakuje mi blad

Warning: Tag mismatch on line 174


Ok, no to teraz cała funkcja "pijaka". Chciałem spróbować w ten sposób, ale niestety nie działa i nic nie zmienia (tak jak by tego nie było):

public client_PreThink(id){
if(pijak == true && is_user_alive(id)){
new button = get_user_button(id)

switch(button){
case IN_LEFT: set_pev(id, pev_button, IN_RIGHT)
case IN_RIGHT: set_pev(id, pev_button, IN_LEFT)
case IN_FORWARD: set_pev(id, pev_button, IN_BACK)
case IN_BACK: set_pev(id, pev_button, IN_FORWARD)
}
}
}

Użytkownik `NN edytował ten post 22.09.2012 20:00

  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#2 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 22.09.2012 20:09

Kasę nie wydaje się w groszach/centach - musi to być okrągła liczba czyli daj floatround(ilosc kasy*0.1) a i tak btw - jak jedna osoba wylosyuje pijaka wszyscy go bd mieli ;)
  • +
  • -
  • 1

#3 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 22.09.2012 20:15

Ok floatround użyte i już nie ma błędu :)
Moja prośba brzmi - pomógłbyś mi z tym pijakiem ?:) Pierwszy raz bawię się w pevami i nie za bardzo znam też tego składnię..

//edit
przy pijaku już dodałem wszędzie [id], [33] itd.

Użytkownik `NN edytował ten post 22.09.2012 20:16

  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#4 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 22.09.2012 20:22

case IN_LEFT: set_pev(id, pev_button, IN_RIGHT)
					    case IN_RIGHT: set_pev(id, pev_button, IN_LEFT)
					    case IN_FORWARD: set_pev(id, pev_button, IN_BACK)
					    case IN_BACK: set_pev(id, pev_button, IN_FORWARD)

w tym miejscu ustawiasz mu guzik wciśnięty co nie? Więc Dobrze było by gdybyś usuwał mu wcześniej wciśnięty (bo jest sytuacja że jak klika prawo to jednocześnie klika w lewo i Gracz stoi :P)

case IN_RIGHT:
{
	    set_pev(id, pev_button,~IN_RIGHT)
	    set_pev(id, pev_button, IN_LEFT)
}

coś takiego (z guzikiem Prawo) powinno załatwić sprawe (aczkolwiek mogę się mylić) . Teraz według tego zrób reszte.
  • +
  • -
  • 1

#5 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 22.09.2012 20:25

A mogę, a raczej muszę spytać - tylda przed IN_RIGHT oznacza "klawisz wciśnięty", a bez tyldy "klawisz na który się zmieni", dobrze rozumiem?
  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#6 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 22.09.2012 20:34

Otóż tego pewny nie jestem - na kodach innych widziałem ^^, oznacza to że z szeregu wciśniętych klawiszy usuwamy ten IN_RIGHT i ustawiamy że ma wciśnięty Lewy. ;)
  • +
  • -
  • 0

#7 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 22.09.2012 21:02

public client_PreThink(id){
if(pijak[id] == true && is_user_alive(id)){
new button = get_user_button(id)

switch(button){
case IN_LEFT: {
set_pev(id, pev_button,~IN_LEFT)
set_pev(id, pev_button, IN_RIGHT)
}
case IN_RIGHT: {
set_pev(id, pev_button, ~IN_RIGHT)
set_pev(id, pev_button, IN_LEFT)
}

case IN_FORWARD: {
set_pev(id, pev_button, ~IN_FORWARD)
set_pev(id, pev_button, IN_BACK)
}
case IN_BACK: {
set_pev(id, pev_button, ~IN_BACK)
set_pev(id, pev_button, IN_FORWARD)
}
}
}
}


Zrobiłem tak, lecz nie działa, normalnie chodzę.

http://amxx.pl/topic...trzenia-gracza/

Znalazłem pewien temat, czy byłbyś w stanie na jego podstawie coś wykombinować ?:P

Użytkownik `NN edytował ten post 22.09.2012 21:02

  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#8 radim

    Godlike

  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 23.09.2012 08:52

Może zamiast switcha i case, użyj warunku:
if(button & IN_LEFT)
set_pev(id, pev_button, IN_RIGHT)

  • +
  • -
  • 0

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !


#9 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 23.09.2012 10:22

Tzn. coś takiego?


public client_PreThink(id){
if(pijak[id] == true && is_user_alive(id)){
new button = get_user_button(id)

if(button & IN_LEFT)
set_pev(id, pev_button, IN_RIGHT)

if(button & IN_RIGHT)
set_pev(id, pev_button, IN_LEFT)

if(button & IN_FORWARD)
set_pev(id, pev_button, IN_BACK)

if(button & IN_BACK)
set_pev(id, pev_button, IN_FORWARD)
}
}


To nie działa :( Spróbowałem również zamiast & to == - rezultat ten sam.
Tak przy okazji - jaka jest różnica między & a && ?

Użytkownik `NN edytował ten post 23.09.2012 10:35

  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#10 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 23.09.2012 10:44

tak też sprawdzałeś?

public client_PreThink(id){

if(pijak[id] && is_user_alive(id))

{

  new button = get_user_button(id)

 

  if(button & IN_LEFT)

  {

   set_pev(id, pev_button, IN_RIGHT)

   set_pev(id, pev_button, ~IN_LEFT)

  }

 

  if(button & IN_RIGHT)

  {

   set_pev(id, pev_button, IN_LEFT)

   set_pev(id, pev_button, ~IN_RIGHT)

  }

 

  if(button & IN_FORWARD)

  {

   set_pev(id, pev_button, IN_BACK)

   set_pev(id, pev_button, ~IN_FORWARD)

  }

 

  if(button & IN_BACK)

  {

   set_pev(id, pev_button, IN_FORWARD)

   set_pev(id, pev_button, ~IN_BACK)

  }

}

}


  • +
  • -
  • 1

#11 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 23.09.2012 11:25

No już coś zaczęło się dziać, a dokładniej tylko gdy klikam "w", to idzie mi normalnie do przodu, ale używa mouse1 mouse2 oraz +use.. Ważne, że już chociaż coś :P Na resztę klawiszy nie działa.

Użytkownik `NN edytował ten post 23.09.2012 11:26

  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#12 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 980
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 23.09.2012 11:28

pev_button to suma bitowa definicji klawiszy
np.

set_pev(id, pev_button, IN_FORWARD | IN_RIGHT )
czyli do przodu i w prawo

chociaż lepiej to robić tak

set_pev(id, pev_button, pev( id , pev_button ) | ( IN_FORWARD | IN_RIGHT ) )

u ciebie to będzie
set_pev(id, pev_button, ( pev( id , pev_button ) |  IN_RIGHT ) & ~IN_LEFT )

mógłbyś to też zrobić poprzez zmianę velocity tzn. velocity to wektor wiec wystarczy tylko przekształcić go na taki z tym samym kierunkiem ale przeciwnym zwrotem

Użytkownik DarkGL edytował ten post 23.09.2012 11:31

  • +
  • -
  • 2

#13 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 23.09.2012 11:32

Dark, a mógłbyś napisać całą tą funkcję? Lepiej by mi było to zrozumieć jak bym zobaczył całość...
  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#14 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 980
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 23.09.2012 12:38

Wyznaczanie wektora z przeciwnym zwrotem to pomnożenie jego składowych przez -1 w xs masz xs_vec_neg
  • +
  • -
  • 1

#15 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 23.09.2012 12:52

Chodziło mi bardziej o set_pev :)
  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#16 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 23.09.2012 18:03

Jak będzie wyglądać cały public client_PreThink poprzez użycie set_pev?
  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#17 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 23.09.2012 19:17

Można też przebindować klawisze gracza, trochę nienajlepszy pomysł, ale powinien działać, lecz na tym forum nie otrzymasz informacji jak to zrobić ;)
  • +
  • -
  • 0

DarkGL to mój autorytet.

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


#18 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 23.09.2012 22:29

Można też przebindować klawisze gracza, trochę nienajlepszy pomysł, ale powinien działać, lecz na tym forum nie otrzymasz informacji jak to zrobić ;)


Nawet nie chce, bo nie lubię ingerować w pliki/ustawienia graczy i jestem tego przeciwnikiem :)
  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#19 Zapalka

    Wszechwidzący

  • Użytkownik

Reputacja: 194
Profesjonalista

  • Postów:283
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Janów Lubelski
Offline

Napisano 25.09.2012 06:17

Sprawdź tak:
public client_PreThink(id){
if(pijak[id] && is_user_alive(id))
{
new button = get_user_button(id)

if(button & IN_LEFT)
{
set_pev(id, pev_button, ( pev( id , pev_button ) | IN_RIGHT ) & ~IN_LEFT )
}

if(button & IN_RIGHT)
{
set_pev(id, pev_button, ( pev( id , pev_button ) | IN_LEFT ) & ~IN_RIGHT )
}

if(button & IN_FORWARD)
{
set_pev(id, pev_button, ( pev( id , pev_button ) | IN_BACK ) & ~IN_FORWARD )
}

if(button & IN_BACK)
{
set_pev(id, pev_button, ( pev( id , pev_button ) | IN_FORWARD ) & ~IN_BACK )
}
}
}


Tak przy okazji - jaka jest różnica między & a && ?

&& - oraz, wykorzystuje się w różnego rodzaju warunkach.
& - zawiera, wykorzystuje się przy sprawdzaniu flag. Przykładowo pev_button może posiadać więcej niż jedną flagę, więc gdy damy & IN_BACK to sprawdza czy jest użyta ta flaga niezależnie od tego czy są jakieś inne zapisane.
  • +
  • -
  • 0
Zapraszam na http://zapalka.net.pl

#20 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 25.09.2012 14:49

Niestety, nie działa :/
  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!




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

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