Cześć, Mam problem z połączeniem tego kodu wraz z osobnym pluginem freevip w nocy z tego tematu https://amxx.pl/topi...owy-vip-w-nocy/
Mianowicie Plugin raz przyznaje tego vipa po zmianie mapy raz nie przyznaje. Czasami wystarczy zrobić reconnect czasami nawet i to nie pomaga.
Próbowałem bawić się z timerami w client_authorized oraz w client_putinserver ale nic to nie daje.
Czy jesteście w stanie mi powiedzieć co pominąłem albo po prostu co zmienić w kodzie?
Męczę się z tym 3 dzień ale z racji na małą ilość czasu obecnie nie jestem w stanie za bardzo się w to zagłębić.
Oczywiście jest to vip z generatora + pare zmian prze ze mnie wprowadzonych (pewnie lipa i dziury ale mi działa
)
#include <amxmodx>
#include <cstrike>
#include <csx>
#include <engine>
#include <fun>
#include <hamsandwich>
#include <stripweapons>
new bool:g_Vip[33], gRound=0, g_Hudmsg, maxPlayers,
menu, weapon_id;
new bool:g_GameStarted;
new menu_id[33];
#define TASK_CLOSE_MENU 10000
new p_awp_limit_0_5, p_awp_limit_6_10, p_awp_limit_11_16, p_awp_limit_17_23, p_awp_limit_24_inf;
public plugin_init(){
register_plugin("VIP Ultimate", "12.3.0.3", "benio101 & speedkill");
RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1);
register_event("HLTV", "event_new_round", "a", "1=0", "2=0");
register_logevent("GameCommencing", 2, "1=Game_Commencing");
register_event("DeathMsg", "DeathMsg", "a");
register_message(get_user_msgid("ScoreAttrib"), "VipStatus");
register_message(get_user_msgid("SayText"),"handleSayText");
register_clcmd("say /vip", "show_vip_motd");
register_clcmd("say_team /vip", "show_vip_motd");
g_Hudmsg=CreateHudSyncObj();
register_logevent("RoundEnd", 2, "1=Round_End");
register_logevent("event_round_start", 2, "1=Round_Start");
p_awp_limit_0_5 = register_cvar("awp_limit_0_5", "0");
p_awp_limit_6_10 = register_cvar("awp_limit_6_10", "5");
p_awp_limit_11_16 = register_cvar("awp_limit_11_16", "5");
p_awp_limit_17_23 = register_cvar("awp_limit_17_23", "5");
p_awp_limit_24_inf = register_cvar("awp_limit_24_inf", "5");
}
public client_authorized(id){
if(get_user_flags(id) & 524288 == 524288){
client_authorized_vip(id);
}
}
public plugin_cfg(){
maxPlayers = get_maxplayers();
}
public client_connect(id) {
g_Vip[id] = false;
}
public show_vip_motd(id) {
show_motd(id, "vip.html", "Informacje o VIP");
}
public check_vip_flag(id){
if (get_user_flags(id) & ADMIN_LEVEL_H){
client_authorized_vip(id);
}
}
public client_putinserver(id){
set_task(1.0, "check_vip_flag", id);
}
public client_authorized_vip(id) {
if(is_user_connected(id) && g_Vip[id]) {
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, "V.I.P %s wbija na serwer!", g_Name);
if(is_user_alive(id)) {
SpawnedEventPreVip(id);
}
}
}
public client_disconnected(id) {
if(g_Vip[id]) {
g_Vip[id] = false;
}
remove_task(id + TASK_CLOSE_MENU);
remove_task(id);
if(menu_id[id]) {
menu_destroy(menu_id[id]);
menu_id[id] = 0;
}
}
public client_disconnect_vip(id){
g_Vip[id] = false;
}
public SpawnedEventPre(id){
if(g_Vip[id] && is_user_alive(id)){
SpawnedEventPreVip(id);
}
}
public SpawnedEventPreVip(id){
cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM);
give_item(id, "weapon_hegrenade");
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
give_item(id, "weapon_flashbang");
StripWeapons(id, Secondary);
give_item(id, "weapon_deagle");
give_item(id, "ammo_50ae");
weapon_id = find_ent_by_owner(-1, "weapon_deagle", id);
if (weapon_id) cs_set_weapon_ammo(weapon_id, 7);
cs_set_user_bpammo(id, CSW_DEAGLE, 35);
set_task(0.1, "show_vip_menu_delayed", id);
if (gRound >= 3){
give_item(id, "weapon_smokegrenade");
}
if (get_user_team(id) == 2){
give_item(id, "item_thighpack");
}
}
public show_vip_menu_delayed(id) {
if (is_user_alive(id)) {
show_vip_menu(id);
}
}
public event_new_round(){
++gRound;
}
public GameCommencing(){
gRound = 0;
g_GameStarted = false;
}
public event_round_start(){
if (!g_GameStarted) {
g_GameStarted = true;
gRound = 1;
} else {
gRound++;
}
}
public DeathMsg(){
new killer = read_data(1);
new victim = read_data(2);
if(is_user_alive(killer) && g_Vip[killer] && get_user_team(killer) != get_user_team(victim)){
DeathMsgVip(killer, victim, read_data(3));
}
}
public DeathMsgVip(kid, vid, hs){
set_user_health(kid, min(get_user_health(kid) + (hs ? 10 : 5), 100));
cs_set_user_money(kid, cs_get_user_money(kid) + (hs ? 500 : 300));
}
public RoundEnd(){
for(new i = 1; i <= maxPlayers; i++){
if(is_user_alive(i) && g_Vip[i]){
cs_set_user_money(i, cs_get_user_money(i) + 500);
}
}
}
public show_vip_menu(id) {
if (!is_user_alive(id)) return;
if (gRound < 3) return;
if (!menu_id[id]) {
set_task(20.0, "force_close_menu", id + TASK_CLOSE_MENU);
}
else {
return;
}
menu = menu_create("\rMenu VIPa", "menu_handler");
menu_additem(menu, "\wAK47 + DEAGLE");
menu_additem(menu, "\wM4A1 + DEAGLE");
menu_additem(menu, "\d(\w2000\y$\d) \wAWP + DEAGLE");
menu_additem(menu, "\d(\w2000\y$\d) \wKROWA + DEAGLE");
menu_additem(menu, "\wFAMAS + DEAGLE");
menu_additem(menu, "\wSCOUT + DEAGLE");
menu_setprop(menu, MPROP_EXITNAME, "Wyjscie");
menu_setprop(menu, MPROP_TITLE, "\r[\yMENU broni V.I.P'a\r]^n\r[\y20 sekund na wybor\r]^n\r[\yNasze forum: \r]");
menu_id[id] = menu;
menu_display(id, menu);
}
public force_close_menu(taskid) {
new id = taskid - TASK_CLOSE_MENU;
if (is_user_connected(id)) {
show_menu(id, 0, "^n", 1);
client_print(id, print_center, "Czas na wybor minal! Menu zostało zamkniete.");
if (menu_id[id]) {
menu_destroy(menu_id[id]);
menu_id[id] = 0;
}
}
}
public menu_handler(id, menu, item) {
if (!is_user_alive(id) || item == MENU_EXIT) {
close_vip_menu(id);
return PLUGIN_HANDLED;
}
if (gRound < 3) {
client_print(id, print_center, "Menu VIP dostępne od 3 rundy!");
close_vip_menu(id);
return PLUGIN_HANDLED;
}
switch (item) {
case 0: {
menu_1_handler(id);
close_vip_menu(id);
}
case 1: {
menu_2_handler(id);
close_vip_menu(id);
}
case 2: {
new money = cs_get_user_money(id);
if (money < 2000) {
client_print(id, print_center, "Nie masz 2000$ na AWP!");
menu_display(id, menu_id[id]);
}
else if (!canBuyAWP(id)) {
client_print(id, print_center, "Limit AWP w druzynie zostal osiagniety!");
menu_display(id, menu_id[id]);
}
else {
menu_3_handler(id);
cs_set_user_money(id, money - 2000, 1);
close_vip_menu(id);
}
}
case 3: {
new money = cs_get_user_money(id);
if (money < 2000) {
client_print(id, print_center, "Nie masz 2000$ na KROWE!");
menu_display(id, menu_id[id]);
}
else {
menu_4_handler(id);
cs_set_user_money(id, money - 2000, 1);
close_vip_menu(id);
}
}
case 4: {
menu_5_handler(id);
close_vip_menu(id);
}
case 5: {
menu_6_handler(id);
close_vip_menu(id);
}
}
return PLUGIN_HANDLED;
}
public close_vip_menu(id) {
if (menu_id[id]) {
show_menu(id, 0, "^n", 1);
menu_destroy(menu_id[id]);
menu_id[id] = 0;
remove_task(id + TASK_CLOSE_MENU);
}
}
public menu_2_handler(id){
StripWeapons(id, Primary);
give_item(id, "weapon_m4a1");
give_item(id, "ammo_556nato");
set_weapon_ammo(id, "weapon_m4a1", 30, CSW_M4A1, 90);
}
public menu_1_handler(id){
StripWeapons(id, Primary);
give_item(id, "weapon_ak47");
give_item(id, "ammo_762nato");
set_weapon_ammo(id, "weapon_ak47", 30, CSW_AK47, 90);
}
public menu_3_handler(id){
StripWeapons(id, Primary);
give_item(id, "weapon_awp");
give_item(id, "ammo_338magnum");
set_weapon_ammo(id, "weapon_awp", 10, CSW_AWP, 30);
}
public menu_5_handler(id){
StripWeapons(id, Primary);
give_item(id, "weapon_famas");
give_item(id, "ammo_556nato");
set_weapon_ammo(id, "weapon_famas", 25, CSW_FAMAS, 90);
}
public menu_4_handler(id){
StripWeapons(id, Primary);
give_item(id, "weapon_m249");
give_item(id, "ammo_556natobox");
set_weapon_ammo(id, "weapon_m249", 100, CSW_M249, 200);
}
public menu_6_handler(id){
StripWeapons(id, Primary);
give_item(id, "weapon_scout");
give_item(id, "ammo_762nato");
set_weapon_ammo(id, "weapon_scout", 10, CSW_SCOUT, 90);
}
stock set_weapon_ammo(id, const weapon[], clip, csw, bpammo){
weapon_id = find_ent_by_owner(-1, weapon, id);
if(weapon_id) cs_set_weapon_ammo(weapon_id, clip);
cs_set_user_bpammo(id, csw, bpammo);
}
public bool:canBuyAWP(const id){
new players[32], num;
get_players(players, num, "a");
new team = get_user_team(id);
new awpCount = 0;
for(new i = 0; i < num; i++){
new pid = players[i];
if(get_user_team(pid) == team && user_has_weapon(pid, CSW_AWP)){
awpCount++;
}
}
new limit = getDynamicAWPLimit();
return (awpCount < limit);
}
public getDynamicAWPLimit(){
new players[32], num;
get_players(players, num, "h");
if(num <= 5)
return get_pcvar_num(p_awp_limit_0_5);
else if(num <= 10)
return get_pcvar_num(p_awp_limit_6_10);
else if(num <= 16)
return get_pcvar_num(p_awp_limit_11_16);
else if(num <= 23)
return get_pcvar_num(p_awp_limit_17_23);
else if(num > 23)
return get_pcvar_num(p_awp_limit_24_inf);
return 0;
}
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 bomb_planted(id){
if(is_user_alive(id) && g_Vip[id]){
cs_set_user_money(id, cs_get_user_money(id) + 250);
}
}
public bomb_defused(id){
if(is_user_alive(id) && g_Vip[id]){
cs_set_user_money(id, cs_get_user_money(id) + 250);
}
}
public handleSayText(msgId,msgDest,msgEnt){
new id = get_msg_arg_int(1);
if(is_user_connected(id) && g_Vip[id]){
new szTmp[256],szTmp2[256];
get_msg_arg_string(2,szTmp, charsmax(szTmp))
new szPrefix[64] = "^x04[V.I.P]";
if(!equal(szTmp,"#Cstrike_Chat_All")){
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2)," ");
add(szTmp2,charsmax(szTmp2),szTmp);
}
else{
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 : %s2");
}
set_msg_arg_string(2,szTmp2);
}
return PLUGIN_CONTINUE;
}


Dodatki SourceMod












