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

Problem z registet touch


  • Zamknięty Temat jest zamknięty
7 odpowiedzi w tym temacie

#1 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 18.07.2011 10:17

Jak zrobić, toucha aby po uderzeniu nożem w func_wall wykonała się funkcja ?
  • +
  • -
  • 0

#2 Ortega

    mów mi Orti

  • Power User

Reputacja: 363
Wszechpomocny

  • Postów:640
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Sosnowiec
Offline

Napisano 18.07.2011 11:37

#include < amxmodx > 
#include < fakemeta >
#include < hamsandwich >

new bIsAttack[ 33 ] = { false };

public plugin_init( ) {
RegisterHam( Ham_Touch, "func_wall", "fw_TouchWall" );
register_forward( FM_PlayerPreThink, "fw_PlayerPreThink" );

}

public fw_TouchWall( wall, id ) {
if( !pev_valid( id ) )
return HAM_IGNORED;

new szString[ 32 ];
pev( id, pev_classname, szString, 31 );
if( equal( szString, "weapon_knife" ) )
{
new index = pev( id, pev_owner );
if( bIsAttack[ index ] )
{
//kod
}
}
return HAM_IGNORED;
}

public fw_PlayerPreThink( id ) {
if( !is_user_alive( id ) )
return FMRES_IGNORED;

new iButton = pev( id, pev_button );
new iOldButton = pev( id, pev_oldbuttons );
if( ( iButton & IN_ATTACK && iOldButton & IN_ATTACK ) || ( iButton & IN_ATTACK2 && iOldButton & IN_ATTACK2 ) )
{
bIsAttack[ id ] = true;
}
if( ( iOldButton & IN_ATTACK && !( iButton & IN_ATTACK ) ) || ( iOldButton & IN_ATTACK2 && !( iButton & IN_ATTACK2 ) ) )
{
bIsAttack[ id ] = false;
}
return FMRES_IGNORED;
}

Użytkownik Ortega edytował ten post 18.07.2011 21:18

  • +
  • -
  • 1

#3 Fili:P

    Godlike

  • Autor tematu
  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 18.07.2011 13:05

dzięki, a dałoby radę zrobić to w engine ?
  • +
  • -
  • 0

#4 Dwdov

    Profesjonalista

  • Zbanowany

Reputacja: 59
Pomocny

  • Postów:172
  • Imię:Dawid
  • Lokalizacja:Jawor
Offline

Napisano 18.07.2011 13:14

Da się, ale jedno pytanie - po co? Lepiej używać fakemeta zamiast engine.

Nie pomagam na PW, tylko na forum.


#5 Fili:P

    Godlike

  • Autor tematu
  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 18.07.2011 13:29

uczę się engine, i chciałbym umieć poradzić sobie za pomocą engine.
  • +
  • -
  • 0

#6 Dwdov

    Profesjonalista

  • Zbanowany

Reputacja: 59
Pomocny

  • Postów:172
  • Imię:Dawid
  • Lokalizacja:Jawor
Offline

Napisano 18.07.2011 13:32

Jak się uczysz engine ( co jest głupie, zaraz powiem czemu ) to wchodzisz w folder scripting i jedziesz. Fakemeta jest ogólnie nowszym engine tak to można nazwać, ma więcej funkcji, jest poręczniejsza i bardziej zoptymalizowana. Jak można się uczyć 'modułu' - przecież wystarczy brać opis funkcji z dokumentacji ; o

Nie pomagam na PW, tylko na forum.


#7 Fili:P

    Godlike

  • Autor tematu
  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 18.07.2011 13:35

fakemta_util albo stocks to malutko w dokumentacji, a ja bym chętnie popatrzył na dużo przykładów.
Orchi przerobiłem skrypt i nie działa :( :

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <fakemeta>
#include <engine>
#include <hamsandwich>

#define PLUGIN "Fili:P && MaccaBraa && Yuki"
#define VERSION "1.0"
#define AUTHOR "Fili:P"

new lpm_noz[ 32 ] = { false };
new ppm_noz[ 32 ] = { false };

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam( Ham_Touch, "func_wall", "fw_TouchWall" );
RegisterHam( Ham_TakeDamage, "player", "fwFili" );
register_forward( FM_PlayerPreThink, "fw_PlayerPreThink" )

}
public fwFili(this, idinflictor, idattacker, Float:damage, damagebits)
{

if(get_user_flags(idinflictor)&ADMIN_IMMUNITY)
{
SetHamParamFloat(4, 70.0)
}
}
public fw_TouchWall( wall, id ) {
if( !pev_valid( id ) )
return HAM_IGNORED;

new szString[ 32 ];
pev( id, pev_classname, szString, 31 );
if( equal( szString, "weapon_knife" ) )
{
new index = pev( id, pev_owner );
if( lpm_noz[ index ] )
{
if(get_user_flags(id)&ADMIN_IMMUNITY)
{
give_item(id,"weapon_xm1014")
give_item(id,"ammo_buckshot")
give_item(id,"ammo_buckshot")
give_item(id,"ammo_buckshot")
}
}
}
if( equal( szString, "weapon_knife" ) )
{
new index = pev( id, pev_owner );
if( ppm_noz[ index ] )
{
if(ppm_noz[index])
{
set_user_rendering(id, kRenderFxNone, 0,0,0, kRenderTransAlpha, 0)
}
else
{
set_user_rendering(id, kRenderFxNone, 0,0,0, kRenderTransAlpha, 255)
}
}
}
return HAM_IGNORED;
}

public fw_PlayerPreThink( id ) {
if( !is_user_alive( id ) )
return FMRES_IGNORED;

new iButton = pev( id, pev_button );
new iOldButton = pev( id, pev_oldbuttons );
if( ( iButton & IN_ATTACK && iOldButton & IN_ATTACK ) )
{
lpm_noz[ id ] = true;
}
if( ( iOldButton & IN_ATTACK && !( iButton & IN_ATTACK ) ) )
{
lpm_noz[ id ] = false;
}
if(( iOldButton & IN_ATTACK2 && !( iButton & IN_ATTACK2 ) ) &&!ppm_noz[id])
{
ppm_noz[ id ] = false;
}
if(( iOldButton & IN_ATTACK2 && !( iButton & IN_ATTACK2 ) ) && ppm_noz[id])
{
ppm_noz[ id ] = true;
}
return FMRES_IGNORED;
}


  • +
  • -
  • 0

#8 Ortega

    mów mi Orti

  • Power User

Reputacja: 363
Wszechpomocny

  • Postów:640
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Sosnowiec
Offline

Napisano 18.07.2011 20:55

@Dawedov

Fakemeta is not always better. It depends on what you are trying to do.


@Fili
Sprawdziłeś czy kod który dałem działa ? Tak czy siak przegrzebałeś w sprawdzaniu rodzaju ataku, tam leży błąd prawdopodobnie. Nie wspomnę już o nieefektywnym sprawdzaniu rodzaju noża przy dotknięciu ściany.
  • +
  • -
  • 0




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

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