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

Vip dla Zaawansowanych

Modyfikacja

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
2 odpowiedzi w tym temacie

#1 bula1100

    Życzliwy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:30
  • Lokalizacja:Chelm
Offline

Napisano 04.03.2013 00:21

Stworzylem sobie VIP'a i wszystko działa :) Chciałbym go jednak troszke zmodyfikować odnośnie swoich wymagań ale nie wiem czy jest to w ogóle możliwe gdyż sam miernie znam sie na edycji pluginów :)
Bardzo proszę tych bardziej zaawansowancyh o pomoc ;) Wystawiam Reputki :)

Plik SMA
#include <amxmodx>
#include <colorchat>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>

#define DMG_HE (1<<24)
#define IsPlayer(%1) (1<=%1<=maxPlayers)

forward amxbans_admin_connect(id);

new Array:g_Array, CsArmorType:armortype, bool:g_Vip[33], gRound=0, g_Hudmsg,
ioid, maxPlayers, menu, menu_callback_handler, weapon_id;

new const g_Langcmd[][]={"say /vips","say_team /vips","say /vipy","say_team /vipy"};

public plugin_init(){
	register_plugin("VIP Ultimate", "10.0.0.2", "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");
	RegisterHam(Ham_TakeDamage, "player", "takeDamage", 0);
	register_event("DeathMsg", "DeathMsg", "a");
	g_Array=ArrayCreate(64,32);
	for(new i;i<sizeof g_Langcmd;i++){
		register_clcmd(g_Langcmd[i], "ShowVips");
	}
	register_clcmd("say /vip", "ShowMotd");
	g_Hudmsg=CreateHudSyncObj();
	register_event("Damage", "damage", "b", "2!0", "3=0", "4!0");
	register_message(get_user_msgid("SayText"),"handleSayText");
}
public client_authorized(id){
	if(get_user_flags(id) & 524288 == 524288){
		client_authorized_vip(id);
	}
}
public client_authorized_vip(id){
	g_Vip[id]=true;
	new g_Name[64];
	get_user_name(id,g_Name,charsmax(g_Name));
	
	new g_Size = ArraySize(g_Array);
	new szName[64];
	
	for(new i = 0; i < g_Size; i++){
		ArrayGetString(g_Array, i, szName, charsmax(szName));
		
		if(equal(g_Name, szName)){
			return 0;
		}
	}
	ArrayPushString(g_Array,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);
	
	return PLUGIN_CONTINUE;
}
public client_disconnect(id){
	if(g_Vip[id]){
		client_disconnect_vip(id);
	}
}
public client_disconnect_vip(id){
	g_Vip[id]=false;
	new Name[64];
	get_user_name(id,Name,charsmax(Name));
	
	new g_Size = ArraySize(g_Array);
	new g_Name[64];
	
	for(new i = 0; i < g_Size; i++){
		ArrayGetString(g_Array, i, g_Name, charsmax(g_Name));
		
		if(equal(g_Name,Name)){
			ArrayDeleteItem(g_Array,i);
			break;
		}
	}
}
public SpawnedEventPre(id){
	if(g_Vip[id]){
		if(is_user_alive(id)){
			SpawnedEventPreVip(id);
		}
	}
}
public SpawnedEventPreVip(id){
	cs_set_user_armor(id, min(cs_get_user_armor(id,armortype)+100, 300), armortype);
	show_vip_menu(id);
	if(gRound>=5){
		cs_set_user_money(id, min(cs_get_user_money(id)+1000, 16000), 1);
	}
	if(get_user_team(id)==2){
		give_item(id, "item_thighpack");
	}
}
public event_new_round(){
	++gRound;
}
public GameCommencing(){
	gRound=0;
}
public plugin_cfg(){
	maxPlayers=get_maxplayers();
}
public takeDamage(this, idinflictor, idattacker, Float:damage, damagebits){
	if(((IsPlayer(idattacker) && is_user_connected(idattacker) && g_Vip[idattacker] && (ioid=idattacker)) ||
	(ioid=pev(idinflictor, pev_owner) && IsPlayer(ioid) && is_user_connected(ioid) && g_Vip[ioid]))){
		if(damagebits & DMG_HE){
			damage*=(100+15)/100;
		}
	}
}
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?40:20),100));
	cs_set_user_money(kid, cs_get_user_money(kid)+(hs?800:500));
}
public show_vip_menu(id){
	menu=menu_create("\rMenu VIPa","menu_handler");
	menu_callback_handler=menu_makecallback("menu_callback");
	new bool:active=false, num=-1;
	menu_additem(menu,"\wDeagle + AWP ( Granaty )","",0,menu_callback_handler);
	if(menu_callback(id, menu, ++num)==ITEM_ENABLED){
		active=true;
	}
	menu_additem(menu,"\wDeagle + AK47 ( Granaty )","",0,menu_callback_handler);
	if(menu_callback(id, menu, ++num)==ITEM_ENABLED){
		active=true;
	}
	menu_additem(menu,"\wDeagle + M4A1 ( Granaty )","",0,menu_callback_handler);
	if(menu_callback(id, menu, ++num)==ITEM_ENABLED){
		active=true;
	}
	if(active){
		menu_setprop(menu,MPROP_EXITNAME,"Wyjscie");
		menu_setprop(menu,MPROP_TITLE,"\yMenu Vipa");
		menu_setprop(menu,MPROP_NUMBER_COLOR,"\r");
		menu_display(id, menu);
	} else {
		menu_destroy(menu);
	}
}
public menu_callback(id, menu, item){
	if(gRound>=5){
		if(is_user_alive(id)){
			if(item==0){
				return ITEM_ENABLED;
			}
			if(item==1){
				return ITEM_ENABLED;
			}
			if(item==2){
				return ITEM_ENABLED;
			}
		}
	}
	return ITEM_DISABLED;
}
public menu_handler(id, menu, item){
	if(gRound>=5){
		if(is_user_alive(id)){
			if(item==0){
				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);
				give_item(id, "weapon_awp");
				give_item(id, "ammo_338magnum");
				weapon_id=find_ent_by_owner(-1, "weapon_awp", id);
				if(weapon_id)cs_set_weapon_ammo(weapon_id, 10);
				cs_set_user_bpammo(id, CSW_AWP, 30);
				give_item(id, "weapon_hegrenade");
				give_item(id, "weapon_flashbang");
				give_item(id, "weapon_flashbang");
				give_item(id, "weapon_smokegrenade");
			}
			if(item==1){
				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);
				give_item(id, "weapon_ak47");
				give_item(id, "ammo_762nato");
				weapon_id=find_ent_by_owner(-1, "weapon_ak47", id);
				if(weapon_id)cs_set_weapon_ammo(weapon_id, 30);
				cs_set_user_bpammo(id, CSW_AK47, 90);
				give_item(id, "weapon_hegrenade");
				give_item(id, "weapon_flashbang");
				give_item(id, "weapon_flashbang");
				give_item(id, "weapon_smokegrenade");
			}
			if(item==2){
				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);
				give_item(id, "weapon_m4a1");
				give_item(id, "ammo_556nato");
				weapon_id=find_ent_by_owner(-1, "weapon_m4a1", id);
				if(weapon_id)cs_set_weapon_ammo(weapon_id, 30);
				cs_set_user_bpammo(id, CSW_M4A1, 90);
				give_item(id, "weapon_hegrenade");
				give_item(id, "weapon_flashbang");
				give_item(id, "weapon_flashbang");
				give_item(id, "weapon_smokegrenade");
			}
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
public ShowVips(id){
	new g_Name[64],g_Message[192];
	
	new g_Size=ArraySize(g_Array);
	
	for(new i = 0; i < g_Size; i++){
		ArrayGetString(g_Array, i, g_Name, charsmax(g_Name));
		
		add(g_Message, charsmax(g_Message), g_Name);
		
		if(i == g_Size - 1){
			add(g_Message, charsmax(g_Message), ".");
		}
		else{
			add(g_Message, charsmax(g_Message), ", ");
		}
	}
	ColorChat(id,GREEN,"^x03Vipy ^x04na ^x03serwerze: ^x04%s", g_Message);
	return PLUGIN_CONTINUE;
}
public client_infochanged(id){
	if(g_Vip[id]){
		new szName[64];
		get_user_info(id,"name",szName,charsmax(szName));
		
		new Name[64];
		get_user_name(id,Name,charsmax(Name));
		
		if(!equal(szName,Name)){
			ArrayPushString(g_Array,szName);
			
			new g_Size=ArraySize(g_Array);
			new g_Name[64];
			for(new i = 0; i < g_Size; i++){
				ArrayGetString(g_Array, i, g_Name, charsmax(g_Name));
				
				if(equal(g_Name,Name)){
					ArrayDeleteItem(g_Array,i);
					break;
				}
			}
		}
	}
}
public plugin_end(){
	ArrayDestroy(g_Array);
}
public ShowMotd(id){
	show_motd(id, "vip.txt", "Informacje o vipie");
}
public damage(id){
	new attacker=get_user_attacker(id);
	new damage=read_data(2);
	
	if(g_Vip[id]){
		set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1);
		ShowSyncHudMsg(id, g_Hudmsg, "%i^n", damage);
	}
	if(is_user_connected(attacker) && g_Vip[attacker]){
		set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1);
		ShowSyncHudMsg(attacker, g_Hudmsg, "%i^n", damage);
	}
}
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[VIP]";
		
		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;
}
public amxbans_admin_connect(id){
	client_authorized(id);
}

Co Vip Aktualnie Posiada :
1. 500$ za Killa i 800$ za HS
2. 20HP za Killa i 40HP za HS
3. Free Defusal Kit
4. Specjalne przywitanie przy wejsciu na serwer
5. Zwiększenie o 15% obrażeń z HE
6. Free Armor + Helm
7. Free 1k$ od 5 rundy
8. Od 5 rundy 3 zestawy broni
* Deagle + AWP ( Granaty )
* Deagle + Ak47 ( Granaty )
* Deagle + M4A1 ( Granaty )

proszę o zmiany :
1. Menu broni oraz 1k$ dodstajemy od 5 rundy aczkolwiek uwzglednia w tym rozgrzewke w ktorej wlasciwie liczba rund jest losowa ( kinfe rozgrzewka 60 sekund ) bo zalezy od tego ile rund zdazymy rozegrac.
Chcialbym aby Menu broni i 1k$ bylo od 3 rundy nie uwzgledniajac rozgrzewki
2. Aby wyjśc z Menu VIpa trzeba nacisnac 0, a chcialbym zeby samo wygasalo po 20 sekundach
3. Tutaj juz bardziej zaawansowane ;) Chcialbym Inne Funkcje Dla inncyh Map
  • Aktualny VIP dzialajacy na kazdej mapie z wylaczeniem tych co wymienie nizej
  • Na mapach :
aim_map2
Wszystkie funkcje zawarte w VIpe lecz w Menu Broni tylko i wylacznie
- Deagle + Ak47
- Deagle + M4A1
aim_map
Wszystkie funkcje zawarte w VIpe lecz w Menu Broni tylko i wylacznie
- Deagle + Ak47
- Deagle + M4A1
- Deagle + AWP
aim_map_usp
Wszystkie funkcje zawarte w VIpe lecz w Menu Broni tylko i wylacznie
- Deagle
- USP
- Glock
- Dual
awp_india + aim_awp + awp+map
Wszystkie funkcje zawarte w VIpe lecz w Menu Broni tylko i wylacznie
- Deagle + AWP
- Deagle + Scout

Użytkownik bula1100 edytował ten post 04.03.2013 00:31

  • +
  • -
  • 0

#2 O'Zone

    Wszechobecny

  • Użytkownik

Reputacja: 594
Wszechwiedzący

  • Postów:409
  • Steam:steam
Offline

Napisano 04.03.2013 16:36

1. Menu broni oraz 1k$ dodstajemy od 5 rundy aczkolwiek uwzglednia w tym rozgrzewke w ktorej wlasciwie liczba rund jest losowa ( kinfe rozgrzewka 60 sekund ) bo zalezy od tego ile rund zdazymy rozegrac.
Chcialbym aby Menu broni i 1k$ bylo od 3 rundy nie uwzgledniajac rozgrzewki

To nie jest duży problem, wystarczy dodać zerowanie liczby rund przy restarcie w vipie lub ewentualnie w samym pluginie rozgrzewki wyłączanie vipa na czas jej trwania.

2. Aby wyjśc z Menu VIpa trzeba nacisnac 0, a chcialbym zeby samo wygasalo po 20 sekundach

Hmm.. set_task w połączeniu z menu_destroy.

3. Tutaj juz bardziej zaawansowane Chcialbym Inne Funkcje Dla inncyh Map
Aktualny VIP dzialajacy na kazdej mapie z wylaczeniem tych co wymienie nizej
Na mapach :
aim_map2
Wszystkie funkcje zawarte w VIpe lecz w Menu Broni tylko i wylacznie
- Deagle + Ak47
- Deagle + M4A1
aim_map
Wszystkie funkcje zawarte w VIpe lecz w Menu Broni tylko i wylacznie
- Deagle + Ak47
- Deagle + M4A1
- Deagle + AWP
aim_map_usp
Wszystkie funkcje zawarte w VIpe lecz w Menu Broni tylko i wylacznie
- Deagle
- USP
- Glock
- Dual
awp_india + aim_awp + awp+map
Wszystkie funkcje zawarte w VIpe lecz w Menu Broni tylko i wylacznie
- Deagle + AWP
- Deagle + Scout

Tutaj to ostro namieszałeś, ale też da się zrobić. Trzeba zastosować sprawdzanie mapy i dla każdej wywoływać wybrane menu lub wybrane funkcje z menu (kwestia upodobania :D).

Podejmę się tego wyzwania i spróbuję go zrobić :P

Użytkownik O'Zone edytował ten post 04.03.2013 16:51

  • +
  • -
  • 0
Pomogłem? Daj Dołączona grafika

#3 O'Zone

    Wszechobecny

  • Użytkownik

Reputacja: 594
Wszechwiedzący

  • Postów:409
  • Steam:steam
Offline

Napisano 04.03.2013 20:07

Popracowałem, popracowałem i zrobiłem :D
Oczywiście nie obyło się bez wpadki - przez godzinę 4 razy przerabiałem plugin zastanawiając się czemu nie wyświetla się menu, kiedy olśniło mnie, że wyświetla się dopiero od 3 rundy.
Menu broni dopasowane do map jak i jego znikanie po 20 sekundach na pewno działa, bo sprawdziłem je na własnym serwerze. Nie wiem jednak, czy działa wyzerowanie liczby rund po resecie, ponieważ nie mam na serwerze rozgrzewki. Dodatkowo menu broni na tych mapach, które wymieniłeś działa od pierwszej rundy, a na pozostałych od trzeciej (skoro bronie i tak są dostępne, to nie widzę sensu, żeby trzeba było czekać na menu). Dodałem także czyszczenie broni przed dodaniem ich z menu, by nie wystąpił bug z podwójnymi broniami jednej klasy.

Załączone pliki


  • +
  • -
  • 0
Pomogłem? Daj Dołączona grafika





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