AMX Mod X - vše co potřebuješ k serveru
Prostor pro Vaši reklamu - napište nám

Pokročilé hledání





Všechny časy jsou v UTC


 [ Příspěvků: 3 ] 
Autor Zpráva
 Předmět příspěvku: Pomoct prosím
PříspěvekNapsal: úte 01. říj 2019 18:10:36 
Offline
AMXX Lama
AMXX Lama
Uživatelský avatar

Registrován: stř 22. kvě 2019 18:55:16
Příspěvky: 21
Poděkoval: 0 x
Obdržel poděkování: 0 x
Dobrý den, mám dva pluginy, jsou to tyto:
Spoiler:
#include <amxmodx>
#include <fakemeta>

#define PLUGIN "Admin Free Look"
#define VERSION "2.0"
#define AUTHOR "Jim"

#define ADMIN_ACCESS ADMIN_BAN //flag "d"

#define SPECT_KEYS MENU_KEY_1|MENU_KEY_2|MENU_KEY_5|MENU_KEY_6|MENU_KEY_0
#define CLASS_KEYS MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5

#define LINUXDIFF 5

#if cellbits == 32
#define OFFSET_TEAM 114
#else
#define OFFSET_TEAM 139
#endif

#define TEAM_T 1
#define TEAM_CT 2
#define TEAM_SPEC 3

new bool:g_roundend
new bool:g_corpse_made[33]
new bool:g_model_selected[33]
new g_team[33]
new g_maxplayers

stock bool:is_admin(id)
return g_team[id] && get_user_flags(id) & ADMIN_ACCESS ? true : false

stock bool:is_admin_dead(id)
return is_admin(id) && g_corpse_made[id] ? true : false

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_event("HLTV", "new_round", "a", "1=0", "2=0")
register_logevent("round_end", 2, "1=Round_End")
register_event("ClCorpse", "hook_corpse", "a", "12>0")
register_event("TeamInfo", "event_teaminfo", "a", "1>0")
register_event("TextMsg", "joined_a_team", "a", "1=1", "2=#Game_join_terrorist", "2=#Game_join_ct")

register_clcmd("jointeam", "join_spec_cmd")
register_clcmd("joinclass", "select_a_model")
register_menucmd(register_menuid("IG_Team_Select_Spect",1), SPECT_KEYS, "join_spec_menucmd")
register_menucmd(register_menuid("Terrorist_Select", 1), CLASS_KEYS, "select_a_model")
register_menucmd(register_menuid("CT_Select", 1), CLASS_KEYS, "select_a_model")

g_maxplayers = get_maxplayers()
}

public client_connect(id)
{
g_team[id] = 0
g_model_selected[id] = false
g_corpse_made[id] = false
}

public client_disconnect(id)
{
g_team[id] = 0
g_model_selected[id] = false
g_corpse_made[id] = false
}

public event_teaminfo()
{
new id = read_data(1)
new team[2]
read_data(2, team, 1)
switch(team[0])
{
case 'T': g_team[id] = TEAM_T
case 'C': g_team[id] = TEAM_CT
case 'S': g_team[id] = TEAM_SPEC
}
}

public stay_spec(id)
{
if(g_team[id] != TEAM_SPEC)
{
g_team[id] = TEAM_SPEC
message_begin(MSG_ALL, get_user_msgid("TeamInfo"))
write_byte(id)
write_string("SPECTATOR")
message_end()
}
}

public join_spec_cmd(id)
{
new argv[2]
read_argv(1, argv, 1)
if(argv[0] == '6')
stay_spec(id)
}

public join_spec_menucmd(id, key)
{
if(key == 5)
stay_spec(id)
}

public joined_a_team()
{
new name[32]
read_data(3, name, 31)
new id = get_user_index(name)
g_model_selected[id] = false
}

public select_a_model(id)
{
g_model_selected[id] = true
if(!g_roundend && is_admin(id))
set_task(1.0, "delay", id)
}

public delay(id)
{
if(g_team[id] && !is_user_alive(id))
{
g_corpse_made[id] = true
free_look(id)
}
}

public hook_corpse()
{
new id = read_data(12)
g_corpse_made[id] = true
if(!g_roundend && is_admin(id))
free_look(id)
}

public free_look(id)
{
if(!g_roundend && is_admin_dead(id) && g_model_selected[id])
set_pdata_int(id, OFFSET_TEAM, TEAM_SPEC, LINUXDIFF)
}

public round_end()
{
g_roundend = true
freelook_over()
}

public new_round()
{
g_roundend = false
freelook_over()
}

public freelook_over()
{
for(new id = 1; id <= g_maxplayers; id++)
{
if(is_admin_dead(id) && get_pdata_int(id, OFFSET_TEAM, LINUXDIFF) == TEAM_SPEC && g_team[id] != TEAM_SPEC)
set_pdata_int(id, OFFSET_TEAM, g_team[id], LINUXDIFF)
g_corpse_made[id] = false
}
}


Spoiler:
/* http://forums.alliedmods.net/showthread ... post551999
*
* Changelog
* added cvar amx_inv_dead_percent <value>
*
*/

#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")

pcvar_percent = register_cvar("amx_inv_dead_percent", "40")

register_clcmd("amx_spectate", "make_invis", ADMIN_RCON)

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, level) {
if( ~get_user_flags(id) & level )
return PLUGIN_CONTINUE

if(g_invisible[id][0])
{
client_print(id, print_console, "You're not invisible anymore")
g_invisible[id][0] = 0
return PLUGIN_HANDLED
}

if( is_user_alive(id) )
{
client_print(id, print_console, "You have to be dead first to be an invisible spectator !")
return PLUGIN_HANDLED
}

g_invisible[id][0] = 1
client_print(id, print_console, "You're now an invisible spectator")

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()
}

A u toho prvního, mě to vždy vrací zpátky do teamu tak, že jsem sice v teamu vidět, ale oživí mě to po kole , ale když použiji ten druhý plugin na to, aby mě to vidělo v teamu, ale nedávalo mě to zpátky, abych mohl třeba spectovat cheatra, tak mě to prostě furt vrací po kole a já furt musím psát "amx_spectate" Nevíte, jak nastavit ten druhý, aby mě nevracel? Nebo, jak jsem měl jenom ten druhý tak to nevracelo. A jak má oba, tak mě to furt vrací a nevím, jak to nastavit... Díky za pomoct.


Nahoru
  
 
 Předmět příspěvku: Re: Pomoct prosím
PříspěvekNapsal: ned 06. říj 2019 12:41:54 
Offline
AMXX Noob
AMXX Noob
Uživatelský avatar

Registrován: pát 02. úno 2018 12:26:27
Příspěvky: 67
Poděkoval: 9 x
Obdržel poděkování: 6 x
Prvý plugin je len pomôcka k tomu, aby si si mohol nastavit mp_forcechasecam (alebo tak nejak) na 2, normálny hráči budú môcť spectovať len teammate, ale admin všetkých.

Ten druhý plugin funguje na spôsobe takomto:

Hodíš sa do spectu cez menu a následne napíšeš do konzole amx_spectate, v TABe budeš vypadať že hráš, ale ty budeš v specte. Keď to budeš chcieť vypnúť napíšeš znova amx_spectate a pripojíš sa do teamu.


Nemáš zač. ;)


Nahoru
  
 
 Předmět příspěvku: Re: Pomoct prosím
PříspěvekNapsal: stř 09. říj 2019 5:36:34 
Offline
AMXX Lama
AMXX Lama
Uživatelský avatar

Registrován: stř 22. kvě 2019 18:55:16
Příspěvky: 21
Poděkoval: 0 x
Obdržel poděkování: 0 x
Ahoj, díky! Vyřešeno.


Nahoru
  
 
 [ Příspěvků: 3 ] 

Všechny časy jsou v UTC


Kdo je online

Uživatelé procházející toto fórum: CommonCrawl [Bot] a 0 návštevníků



Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Přejít na:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
All rights reserved 2007 - 2019 © by AMXMODX.cz, kopírování textů nebo grafických prvků z této stránky je bez souhlasu administrátora (jab.jab@seznam.cz) přísně zakázáno!


TOPlist