←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Jak skorzystać z set_pev przy zmianie klaw...

Zablokowany

  • +
  • -
sNH. - zdjęcie sNH. 07.02.2014

Witam! Otóż mój problem polega na tym, że chciałem zrobić zamianę klawiszy kiedy gracz będzie żywy oraz nałożony na niego zostanie status.

 

Problem polega na tym, że korzystając z set_pev i pev_button funkcja nie działa. Ogólnie kod wygląda tak:

 

public client_PreThink(id){
if(ConfuseKeys[id] = true && 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 )
}
 
if(button & IN_RIGHT)
{
set_pev(id, pev_button, pev( id , pev_button ) |  IN_LEFT )
}
 
if(button & IN_FORWARD)
{
set_pev(id, pev_button, pev( id , pev_button ) |  IN_BACK )
}
 
if(button & IN_BACK)
{
set_pev(id, pev_button, pev( id , pev_button ) |  IN_FORWARD )
}
}
}
Odpowiedz

  • +
  • -
^Grzyboo - zdjęcie ^Grzyboo 07.02.2014

użyj CmdStart

set_uc(ucHandle, UC_Buttons, get_uc(ucHandle, UC_Buttons) | IN_RIGHT);

Użytkownik ^Grzyboo edytował ten post 07.02.2014 20:43
Odpowiedz

  • +
  • -
sNH. - zdjęcie sNH. 07.02.2014

Nie działa:
 
#include <amxmodx>
#include <engine>
#include <fakemeta>
 
public plugin_init()
{
register_plugin("Status Test","1.0","Admin.");
register_forward(FM_CmdStart, "CmdStart")
}
 
public CmdStart(id, ucHandle)
{
new button = get_uc(ucHandle, UC_Buttons);
 
if(button & IN_LEFT)
{
set_uc(ucHandle, UC_Buttons, get_uc(ucHandle, UC_Buttons) | IN_RIGHT);
}
}
 
Zrobiłem coś źle? :P
Odpowiedz

  • +
  • -
^Grzyboo - zdjęcie ^Grzyboo 07.02.2014

Ahh, przypomniało mi się, chyba nie można tego zrobić dla WSAD.

Odpowiedz

  • +
  • -
sNH. - zdjęcie sNH. 07.02.2014

Hm, jest jakiś inny sposób?

Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 07.02.2014

Zapominasz o negowaniu klawisza np. jeśli jest IN_LEFT dobrze że ustawiasz IN_RIGHT ale IN_LEFT trzeba "usunać" bardziej łopatologiczniej się nie da :P

Odpowiedz

  • +
  • -
sNH. - zdjęcie sNH. 07.02.2014

W set_pev kiedyś dawałeś na forum coś takiego

set_pev(id, pev_button, ( pev( id , pev_button ) |  IN_RIGHT ) & ~IN_LEFT )

 

To również mi nie działało. Mam spróbować "usuwanie" przy set_uc?

Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 08.02.2014

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

 

 

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

 

 

Tematy które mogą ci pomóc:

1. http://amxx.pl/topic...zycisku-myszki/

2. http://amxx.pl/topic...runku-u-gracza/

 

W 1. temacie jest również używane pev_oldbuttons, więc może warto do tego nawiązać. Jeżeli ciągle nie będzie działało to pozostaje wyznaczyć vektor z przeciwnym zwrotem. 

Odpowiedz

  • +
  • -
sNH. - zdjęcie sNH. 08.02.2014

Sprawdzałem wszelkie metody, lecz nic nie działa. Odnośnie wektorów, nie dają oczekiwanego efektu. 

 

Temat do zamknięcia, każdemu daję po + za chęci. Utworzę po prostu status na innej podstawie.

Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 08.02.2014

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Temat zamknięty na prośbę użytkownika.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany