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 teleportem pod bindem


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

#1 slowly

    Wszechwidzący

  • Zbanowany

Reputacja: 14
Początkujący

  • Postów:270
  • Steam:steam
  • Lokalizacja:Warszawa
Offline

Napisano 01.09.2010 17:48

Witam.
Chciałem, aby klasa Nekromanta mogła używać teleportu na respa raz na rundę pod specjalnym bindem: bind "klawisz" "nekromanta". W tym celu poczyniłem kilka rzeczy, lecz cały czas mi to nie działa.

Dodałem coś takiego do mojego sma:
public check_nekromanta(id)
{
	if (player_class[id] == Nekromanta) Tspawn(id)
	return PLUGIN_HANDLED
}
I potem zarejstrowałem komendę:
register_clcmd("nekromanta","check_nekromanta")
Ale jest problem. A dokładniej, gdy binduje sobie klawisz poprzez konsolę, a następnie chcę go użyć wyskakuje mi informacja:
Nieznana komenda "nekromanta"
Niżej też zamieszczam funkcję od teleportu:
public Tspawn(id) {
        new client = id - TASK_TELEPORT;
        
        new CsTeams:iTeam;
        iTeam = cs_get_user_team( client );
        
        new iSpawnOrigin[3];
        new Float:fSpawnAngle[3];
        
        new ent;
        ent = -1;
        
        switch( iTeam ) {
                case CS_TEAM_T:
                {
                        while( ( ent = find_ent_by_class( ent, "info_player_deathmatch" ) ) != 0 ) {
                                if( !pev_valid( ent ) )
                                        break;
                        }
                        get_user_origin( ent, iSpawnOrigin );
                }
                case CS_TEAM_CT:
                {
                        while( ( ent = find_ent_by_class( ent, "info_player_start" ) ) != 0 ) {
                                if( !pev_valid( ent ) )
                                        break;
                        }
                        get_user_origin( ent, iSpawnOrigin );
                }
                case CS_TEAM_SPECTATOR:
                {
                        return;
                }
        }
        
        if( !is_user_alive( client ) )
                return;
        
        new Float:fSpawnOrigin[3];
        fSpawnOrigin[0] = iSpawnOrigin[0] + 0.0;
        fSpawnOrigin[1] = iSpawnOrigin[1] + 0.0;
        fSpawnOrigin[2] = iSpawnOrigin[2] + 0.0;        
        
        entity_set_vector( client, EV_VEC_origin, fSpawnOrigin );
        entity_set_int( client, EV_INT_fixangle, 1 );
        entity_set_vector( client, EV_VEC_angles, fSpawnAngle );
        
        hudmsg(id,2.0,"Teleportowales sie na resp");
        
        TeleportMSG( client );
        
}

TeleportMSG( client ) {
        new fNewSpawnOrigin[3];
        get_user_origin( client, fNewSpawnOrigin, 2 );
        
        message_begin( MSG_BROADCAST, SVC_TEMPENTITY, { 0, 0, 0 }, client ) 
        write_byte( TE_TELEPORT ) 
        write_coord( fNewSpawnOrigin[0] ) 
        write_coord( fNewSpawnOrigin[1] ) 
        write_coord( fNewSpawnOrigin[2] )
        message_end( )
        
}
Prosiłbym Was również o poprawienie tego kodu tak, aby można było teleportu używać raz na rundę...
Za all odpowiedzi bardzo dziękuje. Z góry pozdro, Slowly

@@EDIT:
Refresh...

Użytkownik slowly edytował ten post 03.09.2010 17:26


#2 Ortega

    mów mi Orti

  • Power User

Reputacja: 363
Wszechpomocny

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

Napisano 03.09.2010 17:50

register_clcmd

->
register_concmd


Żeby mógł użyć tylko raz.
globalnie
new iTel_use[33];

w evencie nowej rundy dajesz pętlę for dla wszystkich graczy z resetowaniem czyli:
for( ... 
iTel_use[id] =0;


public Tspawn(id) {
if( iTel_use[id] == 1 ) {
hudmsg
return;
}

po hudmsg(id,2.0,"Teleportowales sie na resp");
daj
iTel_use[id] = 1;

  • +
  • -
  • 2

#3 slowly

    Wszechwidzący

  • Autor tematu
  • Zbanowany

Reputacja: 14
Początkujący

  • Postów:270
  • Steam:steam
  • Lokalizacja:Warszawa
Offline

Napisano 03.09.2010 18:21

Dzięki, zaraz sprawdze.

PS. A i ten event nowej rundy ma wtedy wyglądać tak?
public RoundStart(){
set_task(1.0, "set_tp", 9182)
for (new i=0; i < 33; i++)
iTel_use[i] =0;{
used_item[i] = false
DemageTake1[i]=1
count_jumps(i)
give_knife(i)
JumpsLeft[i]=JumpsMax[i]

if(player_class[i] == Nekromanta) g_haskit[i]=1
else g_haskit[i]=0
if(player_class[i] == Mefisto) c_jump[i]=3
else c_jump[i]=0
if(player_class[i] == Szkielet) c_jump[i]=2
else c_jump[i]=0
golden_bulet[i]=0
if(player_class[i] == Szaman){
	give_item(i, "weapon_m4a1")
	give_item(i,"ammo_556nato") 
	give_item(i,"ammo_556nato") 
	give_item(i,"ammo_556nato") 
}

if(player_class[i] == Ninja){
	give_item(i, "item_thighpack")
}

invisible_cast[i]=0	

lustrzany_pocisk[i]=0 	

ograniczenie_lowca[i] = 0

ograniczenie_andriel[i] = 0	

if(player_b_dajak[i] == 1)
fm_give_item(i, "weapon_ak47")

if(player_b_dajm4[i] == 1)
fm_give_item(i, "weapon_m4a1") 
	
if(player_b_kamizelka[i] == 1)
fm_give_item(i, "item_kevlar")
		
ultra_armor[i]=0
num_shild[i]=2+floatround(player_intelligence[i]/25.0,floatround_floor)
		
set_renderchange(i)
if(is_user_connected(i)&&player_item_id[i]==66)
{
	changeskin(i,0) 
}
}
	
kill_all_entity("throwing_knife")
	
Bot_Setup()		
ghost_check = false
check_class()
use_addtofullpack = false
}
Mam błędy przy kompilacji:
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team

dbmod.sma(1252) : error 029: invalid expression, assumed zero
dbmod.sma(1253) : error 017: undefined symbol "i"
dbmod.sma(1253 -- 1254) : warning 215: expression has no effect
dbmod.sma(1254) : error 017: undefined symbol "i"
dbmod.sma(1254 -- 1255) : warning 215: expression has no effect
dbmod.sma(1255) : error 017: undefined symbol "i"
dbmod.sma(1255) : fatal error 107: too many error messages on one line

Compilation aborted.
5 Errors.
Linijka 1253 - iTel_use[i] = 0{
1254 - DemageTake1[i]=1
1255 - count_jumps(i)

Wszystkie bledy w publicu roundstart

@@EDIT:
Dodałem:
iTel_use[i] =0;
Za pętlę i już się kompiluje, lecz dalej jest problem. Dokładniej w dalszym ciągu w konsoli pokazuje mi się informacja:
nieznana funkcja: nekromanta

@@EDIT:
Refresh!


@@EDIT:
Odpowie ktoś?

Użytkownik slowly edytował ten post 05.09.2010 14:40


#4 false

    Wszechmogący

  • Użytkownik

Reputacja: 53
Pomocny

  • Postów:652
  • Lokalizacja:z Polski
Offline

Napisano 06.09.2010 14:16

Dzięki, zaraz sprawdze.

PS. A i ten event nowej rundy ma wtedy wyglądać tak?

public RoundStart(){
set_task(1.0, "set_tp", 9182)
for (new i=0; i < 33; i++)
iTel_use[i] =0;{
used_item[i] = false
DemageTake1[i]=1
count_jumps(i)
give_knife(i)
JumpsLeft[i]=JumpsMax[i]

if(player_class[i] == Nekromanta) g_haskit[i]=1
else g_haskit[i]=0
if(player_class[i] == Mefisto) c_jump[i]=3
else c_jump[i]=0
if(player_class[i] == Szkielet) c_jump[i]=2
else c_jump[i]=0
golden_bulet[i]=0
if(player_class[i] == Szaman){
	give_item(i, "weapon_m4a1")
	give_item(i,"ammo_556nato") 
	give_item(i,"ammo_556nato") 
	give_item(i,"ammo_556nato") 
}

if(player_class[i] == Ninja){
	give_item(i, "item_thighpack")
}

invisible_cast[i]=0	

lustrzany_pocisk[i]=0 	

ograniczenie_lowca[i] = 0

ograniczenie_andriel[i] = 0	

if(player_b_dajak[i] == 1)
fm_give_item(i, "weapon_ak47")

if(player_b_dajm4[i] == 1)
fm_give_item(i, "weapon_m4a1") 
	
if(player_b_kamizelka[i] == 1)
fm_give_item(i, "item_kevlar")
		
ultra_armor[i]=0
num_shild[i]=2+floatround(player_intelligence[i]/25.0,floatround_floor)
		
set_renderchange(i)
if(is_user_connected(i)&&player_item_id[i]==66)
{
	changeskin(i,0) 
}
}
	
kill_all_entity("throwing_knife")
	
Bot_Setup()		
ghost_check = false
check_class()
use_addtofullpack = false
}
Mam błędy przy kompilacji:
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team

dbmod.sma(1252) : error 029: invalid expression, assumed zero
dbmod.sma(1253) : error 017: undefined symbol "i"
dbmod.sma(1253 -- 1254) : warning 215: expression has no effect
dbmod.sma(1254) : error 017: undefined symbol "i"
dbmod.sma(1254 -- 1255) : warning 215: expression has no effect
dbmod.sma(1255) : error 017: undefined symbol "i"
dbmod.sma(1255) : fatal error 107: too many error messages on one line

Compilation aborted.
5 Errors.
Linijka 1253 - iTel_use[i] = 0{
1254 - DemageTake1[i]=1
1255 - count_jumps(i)

Wszystkie bledy w publicu roundstart

@@EDIT:
Dodałem:
iTel_use[i] =0;
Za pętlę i już się kompiluje, lecz dalej jest problem. Dokładniej w dalszym ciągu w konsoli pokazuje mi się informacja:
nieznana funkcja: nekromanta

@@EDIT:
Refresh!


@@EDIT:
Odpowie ktoś?


a dales to :

register_concmd

zamiast clcmd ?
  • +
  • -
  • 0

#5 slowly

    Wszechwidzący

  • Autor tematu
  • Zbanowany

Reputacja: 14
Początkujący

  • Postów:270
  • Steam:steam
  • Lokalizacja:Warszawa
Offline

Napisano 06.09.2010 14:42

Tak, dodałem...

#6 Vertricus

    Godlike

  • Przyjaciel

Reputacja: 426
Wszechobecny

  • Postów:1 549
  • Lokalizacja:.
Offline

Napisano 07.09.2010 17:27

iTel_use[i] =0;
to daj za klamre :giggle:
  • +
  • -
  • 0

#7 slowly

    Wszechwidzący

  • Autor tematu
  • Zbanowany

Reputacja: 14
Początkujący

  • Postów:270
  • Steam:steam
  • Lokalizacja:Warszawa
Offline

Napisano 07.09.2010 18:20

Czyli ma to być coś takiego?
public RoundStart(){
set_task(1.0, "set_tp", 9182)
for (new i=0; i < 33; i++){
iTel_use[i]=0
used_item[i] = false
DemageTake1[i]=1
count_jumps(i)
give_knife(i)
JumpsLeft[i]=JumpsMax[i]

if(player_class[i] == Nekromanta) g_haskit[i]=1
else g_haskit[i]=0

golden_bulet[i]=0

if(player_class[i] == Szaman){
	give_item(i, "weapon_m4a1")
	give_item(i,"ammo_556nato") 
	give_item(i,"ammo_556nato") 
	give_item(i,"ammo_556nato") 
}

if(player_class[i] == Ninja){
	give_item(i, "item_thighpack")
}

invisible_cast[i]=0	

lustrzany_pocisk[i]=0 	

ograniczenie_lowca[i] = 0

ograniczenie_andriel[i] = 0	

if(player_b_dajak[i] == 1)
fm_give_item(i, "weapon_ak47")

if(player_b_dajm4[i] == 1)
fm_give_item(i, "weapon_m4a1") 
	
if(player_b_kamizelka[i] == 1)
fm_give_item(i, "item_kevlar")
		
ultra_armor[i]=0
num_shild[i]=2+floatround(player_intelligence[i]/25.0,floatround_floor)
		
set_renderchange(i)
if(is_user_connected(i)&&player_item_id[i]==66)
{
	changeskin(i,0) 
}
}
	
kill_all_entity("throwing_knife")
	
Bot_Setup()		
ghost_check = false
check_class()
use_addtofullpack = false
}

@@EDIT:
Cały czas nie działa :/

09 wrzesień 2010 - 16:55:
Odpowie ktoś?

Użytkownik slowly edytował ten post 07.09.2010 20:33


#8 false

    Wszechmogący

  • Użytkownik

Reputacja: 53
Pomocny

  • Postów:652
  • Lokalizacja:z Polski
Offline

Napisano 09.09.2010 18:37

Dales to za klamre w wybiorze klasy ? :]
Dales to w ogole klasie ? :]
  • +
  • -
  • 0

#9 slowly

    Wszechwidzący

  • Autor tematu
  • Zbanowany

Reputacja: 14
Początkujący

  • Postów:270
  • Steam:steam
  • Lokalizacja:Warszawa
Offline

Napisano 09.09.2010 18:40

Chyba lekko się nie orientujesz o co chodzi w tym temacie. Przypisywanie mocy klasie, a dodawanie mocy pod bindem dla klasy to dwie, zupełnie inne bajki...

#10 false

    Wszechmogący

  • Użytkownik

Reputacja: 53
Pomocny

  • Postów:652
  • Lokalizacja:z Polski
Offline

Napisano 09.09.2010 20:28

Chyba lekko się nie orientujesz o co chodzi w tym temacie. Przypisywanie mocy klasie, a dodawanie mocy pod bindem dla klasy to dwie, zupełnie inne bajki...


A no sory, nie wiedzialem w ktorym temacie pisze i bezsensownie nabilem sobie post

~Jak mozna to pls usuncie ten post i ten w gorze tez ;P
  • +
  • -
  • 0

#11 slowly

    Wszechwidzący

  • Autor tematu
  • Zbanowany

Reputacja: 14
Początkujący

  • Postów:270
  • Steam:steam
  • Lokalizacja:Warszawa
Offline

Napisano 10.09.2010 14:29

Refresh...

10 wrzesień 2010 - 16:57:
Refresh...

10 wrzesień 2010 - 20:54:
Refresh...

11 wrzesień 2010 - 08:15:
@@ EDIT:
Refresh...

11 wrzesień 2010 - 15:04:
Refresh...

12 wrzesień 2010 - 09:44:
Odpowie ktoś?

12 wrzesień 2010 - 15:51:
Refresh...




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

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