Witam,
Jak wiadomo po aktualizacji Steam'a pojawił się problem z prefixem vipa, który powodował, że gracze bez vipa w momencie pisania na czacie mogli ujrzeć "s1 : s2"
Znalazłem na to rozwiązanie ale nie do końca... Fakt faktem, czat działa i każdy widzi wiadomości, tyle że każdy ma teraz prefix "VIP".
Mam pytanie czy da radę przerobić poniższy kod aby zwykły gracz nie miał prefixu lub miał po prostu prefix "GRACZ"?
KOD:
Spoiler
#include <amxmodx>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <colorchat>
#include <engine>
#include <cstrike>
#define is_valid_player(%1) (1 <= %1 <= 32)
#define flaga ADMIN_LEVEL_H
#define MENU_KEYS MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_0
#define MAX_WIELKOSC_OPISU 512
forward amxbans_admin_connect(id);
new bool:g_Vip[33], g_Hudmsg, skoki[33];
public plugin_init(){
register_plugin("VIP Zombie", "1.0","Play");
register_forward(FM_CmdStart, "CmdStartPre");
RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1);
register_message(get_user_msgid("ScoreAttrib"), "VipStatus");
register_message(get_user_msgid("SayText"),"handleSayText");
register_event("CurWeapon","CurWeapon","be", "1=1");
set_task(30.0, "ShowAdv",.flags = "b");
register_menucmd(register_menuid("ShowMenu"), MENU_KEYS, "Show_Handler");
register_clcmd("say /vip", "OpenMenu");
register_clcmd("say /vips", "OnlineVIP");
// Ham TakeDamage
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
register_forward(FM_CmdStart, "CmdStart");
g_Hudmsg = CreateHudSyncObj();
}
public client_authorized(id){
if(get_user_flags(id) & flaga){
client_authorized_vip(id);
}
}
public client_authorized_vip(id){
g_Vip[id]=true;
}
public client_disconnect(id){
if(g_Vip[id]){
client_disconnect_vip(id);
}
}
public client_disconnect_vip(id){
g_Vip[id]=false;
new g_Name[64];
get_user_name(id,g_Name,charsmax(g_Name));
set_hudmessage(24, 190, 220, 0.25, 0.2, 0, 6.0, 6.0);
ShowSyncHudMsg(0, g_Hudmsg, "Vip %s wbija na serwer !",g_Name);
}
public CmdStartPre(id, uc_handle){
if(g_Vip[id]){
if(is_user_alive(id)){
CmdStartPreVip(id, uc_handle);
}
}
}
public CmdStartPreVip(id, uc_handle){
new flags = pev(id, pev_flags);
if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & IN_JUMP) && skoki[id]>0){
--skoki[id];
new Float:velocity[3];
pev(id, pev_velocity,velocity);
velocity[2] = random_float(265.0,285.0);
set_pev(id,pev_velocity,velocity);
} else if(flags & FL_ONGROUND && skoki[id]!=-1){
skoki[id] = 1;
}
}
public SpawnedEventPre(id){
if(g_Vip[id]){
if(is_user_alive(id)){
SpawnedEventPreVip(id);
}
}
}
public SpawnedEventPreVip(id)
{
skoki[id] = 1;
cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
}
public OpenMenu(id)
{
show_menu(id, MENU_KEYS, "\yCo Otrzymuje VIP ?^n^n\r+\w 100 Pancerza [Co Runde]^n\r+\w 2x Wieksze Obrazenia^n\r+\w Zmniejszony Rozrzut^n\r+\w Przywitanie VIP'a^n\r+\w Rezerwacja Nicku i Slota^n\r+\w Dodatkowe klasy Zombie^n\r+\w Nowy Wyglad^n\r+\w Modele Broni (AK47 / M4A1)^n\r+\w Dodatkowy Skok^n\r+\w VIP nie jest objety sprawdzaniem pingu^n^n\wCena: \r11.07 zl^n^n\r1.\w Pokaz Vipow Online^n\r2.\w Jak kupic VIP'a ? - Poradnik^n^n^n\r0.\w Wyjdz", -1, "ShowMenu");
return PLUGIN_HANDLED;
}
public Show_Handler(id, key)
{
switch(key)
{
case 0: OnlineVIP(id)
case 1: ShowPoradnik(id)
}
return PLUGIN_HANDLED;
}
public OnlineVIP(id)
{
new menu = menu_create("Lista Vipow Online", "OnlineVIP_Handler");
new maxplayers = get_maxplayers();
new name[64];
new data[6];
for(new i=1; i<=maxplayers; i++)
{
if(!is_user_connected(i))
continue;
if(is_user_hltv(i) || is_user_bot(i))
continue;
num_to_str(i, data, 5);
get_user_name(i, name, 31);
new szItem[64], flags = get_user_flags(i);
if(!(flags & flaga))
continue;
if(flags & flaga)
format(szItem, 63, "\y[~VIP~]\w ");
add(szItem, 63, name);
menu_additem(menu, szItem, data); // dodajemy do menu gracza.
}
// Back - Next - Exit
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public OnlineVIP_Handler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
OnlineVIP(id)
return PLUGIN_CONTINUE
}
public ShowPoradnik(id)
{
new opis[1023]
format(opis, charsmax(opis), "\r1.\w Wpisz \y /sklepsms^n\r2.\w Wybierz usluge VIP'a i okres na jaki chcesz kupic.^n\r3.\w Wyslij sms na podany numer o podanej tresci.^n\r4.\w Wpisz kod zwrotny.^n\r5.\w Milej Gry :)");
new menu = menu_create(opis, "OpenMenu")
menu_additem(menu, "Wroc")
menu_display(id, menu)
return PLUGIN_CONTINUE;
}
public ShowAdv(){
ColorChat(0, NORMAL, "^x03[Resident Evil]^x04[VIP]^x01 Chcesz kupic vipa a nie wiesz co posiada ? Napisz na say'u^x04 /vip");
}
public plugin_precache(){
precache_model("models/zombie_plague/vip/v_m4a1.mdl");
precache_model("models/zombie_plague/vip/p_m4a1.mdl");
precache_model("models/zombie_plague/vip/v_ak47.mdl");
precache_model("models/zombie_plague/vip/p_ak47.mdl");
precache_model("models/player/default_anims/default_anims.mdl");
precache_model("models/player/default_anims/default_animsT.mdl");
}
public VipStatus(){
new id=get_msg_arg_int(1);
if(is_user_alive(id) && g_Vip[id]){
set_msg_arg_int(2, ARG_BYTE, get_msg_arg_int(2)|4);
}
}
public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
if ( is_valid_player( attacker ) && g_Vip[attacker] )
{
SetHamParamFloat(4, damage * 2.5 )
}
}
public CmdStart(id, uc_handle)
{
if(g_Vip[id] && get_uc(uc_handle, UC_Buttons) & IN_ATTACK)
{
new Float:punchangle[3]
pev(id, pev_punchangle, punchangle)
for(new i=0; i<3;i++)
punchangle[i]*=0.9;
set_pev(id, pev_punchangle, punchangle)
}
}
public handleSayText(msgId,msgDest,msgEnt){
new id = get_msg_arg_int(1);
if(is_user_connected(id) && g_Vip[id])
return PLUGIN_CONTINUE;
new szTmp[192], szTmp2[192];
get_msg_arg_string(2, szTmp, charsmax(szTmp));
new szPrefix[64] = "^x04[~VIP~]"; // Tutaj zmieniamy prefix VIP'a.
if(!equal(szTmp,"#Cstrike_Chat_All")){
add(szTmp2, charsmax(szTmp2), "^x01");
add(szTmp2, charsmax(szTmp2), szPrefix);
add(szTmp2, charsmax(szTmp2), " ");
add(szTmp2, charsmax(szTmp2), szTmp);
}
else
{
new szPlayerName[64];
get_user_name(id, szPlayerName, charsmax(szPlayerName));
get_msg_arg_string(4, szTmp, charsmax(szTmp));
set_msg_arg_string(4, "");
add(szTmp2, charsmax(szTmp2), "^x01");
add(szTmp2, charsmax(szTmp2), szPrefix);
add(szTmp2, charsmax(szTmp2), "^x03 ");
add(szTmp2, charsmax(szTmp2), szPlayerName);
add(szTmp2, charsmax(szTmp2), "^x01 : ");
add(szTmp2, charsmax(szTmp2), szTmp)
}
set_msg_arg_string(2, szTmp2);
return PLUGIN_CONTINUE;
}
public CurWeapon(id)
{
if(g_Vip[id])
{
if(is_user_alive(id))
{
new weapon = read_data(2);
if(weapon == CSW_M4A1)
{
entity_set_string(id, EV_SZ_viewmodel, "models/zombie_plague/vip/v_m4a1.mdl");
entity_set_string(id, EV_SZ_weaponmodel, "models/zombie_plague/vip/p_m4a1.mdl");
}
if(weapon == CSW_AK47)
{
entity_set_string(id, EV_SZ_viewmodel, "models/zombie_plague/vip/v_ak47.mdl");
entity_set_string(id, EV_SZ_weaponmodel, "models/zombie_plague/vip/p_ak47.mdl");
}
}
}
return PLUGIN_CONTINUE;
}
public amxbans_admin_connect(id){
client_authorized(id);
}
Pozdrawiam