Problem z teleportem pod bindem
slowly 01.09.2010
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:
Za all odpowiedzi bardzo dziękuje. Z góry pozdro, Slowly
@@EDIT:
Refresh...
Użytkownik slowly edytował ten post 03.09.2010 17:26
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
Ortega
03.09.2010
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;
slowly 03.09.2010
Dzięki, zaraz sprawdze.
PS. A i ten event nowej rundy ma wtedy wyglądać tak?
1254 - DemageTake1[i]=1
1255 - count_jumps(i)
Wszystkie bledy w publicu roundstart
@@EDIT:
Dodałem:
@@EDIT:
Refresh!
@@EDIT:
Odpowie ktoś?
Użytkownik slowly edytował ten post 05.09.2010 14:40
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
false
06.09.2010
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 ?
slowly 07.09.2010
Czyli ma to być coś takiego?
@@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
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
slowly 09.09.2010
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...
false
09.09.2010
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
slowly 10.09.2010
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...
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...