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
Modyfikacja

Plugin podobny do amx_spec

Modyfikacja

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
3 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.08.2012 22:40

Cześć :)
Prosiłbym kogoś, aby przerobił istniejący plugin amx_spec (znany również jako invisible spectator).
Chodzi o to, żeby po wpisaniu amx_spec przenosiło daną osobę na speca i od razu "maskowało" jej obecność na spectatorze, ponownie wpisanie tej komendy wrzuca admina z powrotem do teamu, w którym był.
Jeśli jest to nie możliwe albo trudniejsze do zrobienia, aby amx_spec działał w obie strony, to możecie dodać komendę amx_back, żeby wrócić do teamu - jak wam łatwiej :)

Oczywiście tak jak zawsze - będą plusy +++

Żeby obyło się bez szukania daje sma w temacie:

#include <amxmodx>
#include <fakemeta>

#if AMXX_VERSION_NUM < 180
#define charsmax(%1) sizeof(%1) - 1
#endif

#define MAX_PLAYERS 32

#define DEAD_FLAG (1<<0)

#define OFFSET_TEAM 114

enum {
CS_TEAM_UNASSIGNED,
CS_TEAM_T,
CS_TEAM_CT,
CS_TEAM_SPECTATOR
}

new bool:g_roundend
new pcvar_percent
new g_invisible[MAX_PLAYERS+1][2]
new gmsgScoreAttrib, gmsgTeamInfo

public plugin_init() {
register_plugin("Invisible Spectator", "0.2", "ConnorMcLeod")
// Spolszczone by Mafia amxx.pl
pcvar_percent = register_cvar("amx_inv_dead_percent", "40")

register_clcmd("amx_spec", "make_invis")

gmsgScoreAttrib = get_user_msgid("ScoreAttrib")
gmsgTeamInfo = get_user_msgid("TeamInfo")

register_message( gmsgScoreAttrib, "msg_ScoreAttrib")
register_message( gmsgTeamInfo, "msg_TeamInfo")

register_event("HLTV", "eNewRound", "a", "1=0", "2=0")
register_logevent("eRoundEnd", 2, "1=Round_End")
register_event("ResetHUD", "eResetHUD", "be")
register_event("DeathMsg", "eDeathMsg", "a")
}

public make_invis(id) {
if( !(get_user_flags(id) & ADMIN_RCON) )
return PLUGIN_CONTINUE

if(g_invisible[id][0])
{
client_print(id, print_console, "Obecny status - Widzialny")
g_invisible[id][0] = 0
return PLUGIN_HANDLED
}

if( is_user_alive(id) )
{
client_print(id, print_console, "Musisz wejsc na specta aby uzyc komendy !")
return PLUGIN_HANDLED
}

g_invisible[id][0] = 1
client_print(id, print_console, "Obecny status - Niewidzialny.")

new team = get_pdata_int(id, OFFSET_TEAM)
if( CS_TEAM_T <= team <= CS_TEAM_CT )
{
g_invisible[id][1] = team
set_pdata_int(id, OFFSET_TEAM, CS_TEAM_SPECTATOR)
}
else
{
new players[MAX_PLAYERS], tnum, ctnum
get_players(players, tnum, "e", "TERRORIST")
get_players(players, ctnum, "e", "CT")
g_invisible[id][1] = ctnum > tnum ? 1 : 2
}

send_ScoreAttrib(id, 0)

new teamname[12]
switch( g_invisible[id][1] )
{
case 1:formatex(teamname, charsmax(teamname), "TERRORIST")
case 2:formatex(teamname, charsmax(teamname), "CT")
}
send_TeamInfo(id, teamname)

return PLUGIN_HANDLED
}

public eDeathMsg() {
if(g_roundend)
return

new players[MAX_PLAYERS], dead, inum, player, Float:percent = get_pcvar_float(pcvar_percent) / 100.0
get_players(players, dead, "bh")
get_players(players, inum, "h")

if( float(dead) / float(inum) < percent)
return

for(new i; i < inum; i++)
{
player = players[i]
if( g_invisible[player][0] )
send_ScoreAttrib(player, DEAD_FLAG)
}
}

public eNewRound() {
g_roundend = false
new players[MAX_PLAYERS], inum, player
get_players(players, inum)
for(new i; i < inum; i++)
{
player = players[i]
if( g_invisible[player][0] )
send_ScoreAttrib(player, 0)
}
}

public eRoundEnd() {
g_roundend = true
new players[MAX_PLAYERS], inum, player
get_players(players, inum)
for(new i; i < inum; i++)
{
player = players[i]
if( g_invisible[player][0] )
send_ScoreAttrib(player, DEAD_FLAG)
}
}

public eResetHUD(id) {
if( g_invisible[id][0] )
g_invisible[id][0] = 0
}

// Doesn't seem to work so set flag to 0 at NewRound event.
public msg_ScoreAttrib(msg_type, msg_dest, target) {
if(!g_invisible[get_msg_arg_int(1)][0])
return PLUGIN_CONTINUE

new flags = get_msg_arg_int(2)
if(flags & DEAD_FLAG)
set_msg_arg_int(2, 0, flags & ~DEAD_FLAG)

return PLUGIN_CONTINUE
}

public msg_TeamInfo(msg_type, msg_dest, target) {
new id = get_msg_arg_int(1)
if(!g_invisible[id][0])
return PLUGIN_CONTINUE

new teamname[12]
get_msg_arg_string(2, teamname, charsmax(teamname))
if( g_invisible[id][1] == CS_TEAM_T && strcmp(teamname, "TERRORIST") != 0 )
set_msg_arg_string(2, "TERRORIST")
else if( g_invisible[id][1] == CS_TEAM_CT && strcmp(teamname, "CT") != 0 )
set_msg_arg_string(2, "CT")

return PLUGIN_CONTINUE
}

send_ScoreAttrib(id, flags)
{
message_begin(MSG_ALL, gmsgScoreAttrib, _, 0)
write_byte(id)
write_byte(flags)
message_end()
}

send_TeamInfo(id, teamname[])
{
message_begin(MSG_ALL, gmsgTeamInfo, _, 0)
write_byte(id)
write_string(teamname)
message_end()
}

Użytkownik `NN edytował ten post 22.08.2012 22:41

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

#2 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

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

Napisano 24.08.2012 12:03

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

#3 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

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

Napisano 26.08.2012 11:18

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

#4 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

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

Napisano 28.08.2012 16:44

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





Również z jednym lub większą ilością słów kluczowych: Modyfikacja

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

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