Witajcie. Poszukuję pluginu, który będzie dawał VIPA najlepszemu graczowi po rozegraniu mapy. VIP ma działać tylko na następnej mapie.
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.
|
#1
Napisano 23.04.2015 23:52
#2
Napisano 24.04.2015 00:39
Pod jaki dokładnie plugin VIP'a ma to chodzić (sma)?
Ja bym na Twoim miejscu przerobił http://amxx.pl/topic...szy-gracz-mapy/ lub http://amxx.pl/topic...-player-on-map/ i dodał tam zapis danego gracza i tu do wyboru albo do users.ini z odpowiednią flagą(inną niż VIP kupny, ale czytaną jako VIP), albo do bazy sql. W zależności czy jesteś w posiadaniu takiej bazy. Na początku mapy wczytywanie takiego gracza i przyznanie mu VIP'a, po zakończeniu mapy usunięcie takiemu graczowi flagi/rekordu z sql(usunięcie VIP'a) i przypisanie nowego najlepszego gracza mapy.
Takiego pluginu jeszcze nie widziałem w necie, ponieważ musiałoby być ich trochę, bo VIP'a można dać na różne sposoby i na różne flagi.
Ja osobiście polecam zaopatrzyć się w bazę mysql, ponieważ wtedy mamy swobodę operacji na VIP'ach i nie tylko.
Zarzuć sma to popołudniu zobaczę co da się zrobić
Zapraszam na Ponad Granice
Pamiętaj! Nie pomagam na PW/GG chyba że odpłatnie.
Zanim do mnie napiszesz zastanów się 2 razy nad sensem swojej wypowiedzi.
Jeśli masz takowe zlecenie pisz GG:11351931
#3
Napisano 24.04.2015 00:55
proszę, oto kod .sma mojego vipa (robiony w VIP generatorze):
#include <amxmodx> #include <colorchat> #include <cstrike> #include <csx> #include <engine> #include <fun> #include <hamsandwich> #include <stripweapons> #define g_Buffer 1536 forward amxbans_admin_connect(id); new Array:g_Array, CsArmorType:armortype, bool:g_Vip[33], gRound=0, g_Hudmsg, 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", "12.3.0.2", "benio101 & speedkill"); register_event("HLTV", "event_new_round", "a", "1=0", "2=0"); register_logevent("GameCommencing", 2, "1=Game_Commencing"); RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1); register_event("DeathMsg", "DeathMsg", "a"); register_message(get_user_msgid("ScoreAttrib"), "VipStatus"); g_Array=ArrayCreate(64,32); for(new i;i<sizeof g_Langcmd;i++){ register_clcmd(g_Langcmd[i], "ShowVips"); } register_clcmd("say /vip", "ShowMotd"); set_task(30.0, "ShowAdv",.flags = "b"); g_Hudmsg=CreateHudSyncObj(); register_event("Damage", "damage", "b", "2!0", "3=0", "4!0"); register_message(get_user_msgid("SayText"),"handleSayText"); register_logevent("RoundEnd", 2, "1=Round_End"); } public client_authorized(id){ if(get_user_flags(id) & 524290 == 524290){ 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, "O luju! 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 menu_1_handler(id){ cs_set_user_armor(id, min(cs_get_user_armor(id,armortype)+110, 110), CS_ARMOR_VESTHELM); new henum=(user_has_weapon(id,CSW_HEGRENADE)?cs_get_user_bpammo(id,CSW_HEGRENADE):0); give_item(id, "weapon_hegrenade"); ++henum; new fbnum=(user_has_weapon(id,CSW_FLASHBANG)?cs_get_user_bpammo(id,CSW_FLASHBANG):0); give_item(id, "weapon_flashbang"); ++fbnum; cs_set_user_bpammo(id, CSW_FLASHBANG, 2); new sgnum=(user_has_weapon(id,CSW_SMOKEGRENADE)?cs_get_user_bpammo(id,CSW_SMOKEGRENADE):0); give_item(id, "weapon_smokegrenade"); ++sgnum; 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); StripWeapons(id, Primary); 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); } public menu_2_handler(id){ cs_set_user_armor(id, min(cs_get_user_armor(id,armortype)+110, 110), CS_ARMOR_VESTHELM); new henum=(user_has_weapon(id,CSW_HEGRENADE)?cs_get_user_bpammo(id,CSW_HEGRENADE):0); give_item(id, "weapon_hegrenade"); ++henum; new fbnum=(user_has_weapon(id,CSW_FLASHBANG)?cs_get_user_bpammo(id,CSW_FLASHBANG):0); give_item(id, "weapon_flashbang"); ++fbnum; cs_set_user_bpammo(id, CSW_FLASHBANG, 2); new sgnum=(user_has_weapon(id,CSW_SMOKEGRENADE)?cs_get_user_bpammo(id,CSW_SMOKEGRENADE):0); give_item(id, "weapon_smokegrenade"); ++sgnum; 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); StripWeapons(id, Primary); 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); } public menu_3_handler(id){ cs_set_user_armor(id, min(cs_get_user_armor(id,armortype)+110, 110), CS_ARMOR_VESTHELM); new henum=(user_has_weapon(id,CSW_HEGRENADE)?cs_get_user_bpammo(id,CSW_HEGRENADE):0); give_item(id, "weapon_hegrenade"); ++henum; new fbnum=(user_has_weapon(id,CSW_FLASHBANG)?cs_get_user_bpammo(id,CSW_FLASHBANG):0); give_item(id, "weapon_flashbang"); ++fbnum; cs_set_user_bpammo(id, CSW_FLASHBANG, 2); new sgnum=(user_has_weapon(id,CSW_SMOKEGRENADE)?cs_get_user_bpammo(id,CSW_SMOKEGRENADE):0); give_item(id, "weapon_smokegrenade"); ++sgnum; 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); StripWeapons(id, Primary); 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); } public event_new_round(){ ++gRound; } public GameCommencing(){ gRound=0; } public SpawnedEventPre(id){ if(g_Vip[id]){ if(is_user_alive(id)){ SpawnedEventPreVip(id); } } } public SpawnedEventPreVip(id){ if(gRound>=1){ if(gRound<=12){ if(get_user_team(id)==2){ give_item(id, "item_thighpack"); } } } show_vip_menu(id); } 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){ if(gRound>=1){ if(gRound<=12){ set_user_health(kid, min(get_user_health(kid)+(hs?10:5),130)); cs_set_user_money(kid, cs_get_user_money(kid)+(hs?500:300)); } } } 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,"\wAK47 + Deagle + Granaty","",0,menu_callback_handler); if(menu_callback(id, menu, ++num)==ITEM_ENABLED){ active=true; } menu_additem(menu,"\wM4A1 + Deagle + Granaty","",0,menu_callback_handler); if(menu_callback(id, menu, ++num)==ITEM_ENABLED){ active=true; } menu_additem(menu,"\wAWP + Deagle + 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,"\yWybierz zestaw broni"); menu_setprop(menu,MPROP_NUMBER_COLOR,"\r"); menu_display(id, menu); } else { menu_destroy(menu); } } public menu_callback(id, menu, item){ if(is_user_alive(id)){ if(gRound>=2){ if(gRound<=12){ 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(is_user_alive(id)){ if(gRound>=2){ if(gRound<=12){ if(item==0){ menu_1_handler(id); } if(item==1){ menu_2_handler(id); } if(item==2){ menu_3_handler(id); } } } } menu_destroy(menu); return PLUGIN_HANDLED; } 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 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); ShowVipsMotd(id); return PLUGIN_CONTINUE; } public ShowVipsMotd(id){ new Data[g_Buffer],Len,g_Name[64]; Len = formatex(Data[Len], g_Buffer - Len, "<html><body bgcolor=Black><br>"); Len += formatex(Data[Len], g_Buffer - Len, "<center><table frame=^"border^" width=^"600^" cellspacing=^"0^" bordercolor=#4A4344 style=^"color:#56A5EC;text-align:center;^">"); Len += formatex(Data[Len], g_Buffer- Len, "<tr><td><b>#</b></td><td><b>Nick</b></td></td></tr>"); new g_Size=ArraySize(g_Array); for(new i = 0; i < g_Size; i++){ ArrayGetString(g_Array, i, g_Name, charsmax(g_Name)); Len += formatex(Data[Len], g_Buffer - Len, "<tr>"); Len += formatex(Data[Len], g_Buffer - Len, "<td><font color=Red>%d</font></td>", i + 1); Len += formatex(Data[Len], g_Buffer - Len, "<td>%s</td>", g_Name); Len += formatex(Data[Len], g_Buffer - Len, "</tr>"); } Len += formatex(Data[Len],g_Buffer - Len,"</center></body></html>"); show_motd(id, Data, "Vipy Online"); } 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 ShowAdv(){ ColorChat(0, NORMAL, "[VIP]^x04 Chcesz dowiedziec sie co posiada vip ? Napisz na say'u /vip"); } 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[VIPEK]"; 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 bomb_planted(id){ if(is_user_alive(id) && g_Vip[id]){ cs_set_user_money(id,cs_get_user_money(id) + 350); } } public bomb_defused(id){ if(is_user_alive(id) && g_Vip[id]){ cs_set_user_money(id,cs_get_user_money(id) + 350); } } public plugin_cfg(){ maxPlayers=get_maxplayers(); } 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 amxbans_admin_connect(id){ client_authorized(id); }
Bazy mysql niestety nie posiadam.
#4
Napisano 24.04.2015 12:22
Proszę bardzo, powinno chodzić.
Zasada działania prosta, ze zmianą mapy usuwa starego "temp" vip'a (jeśli istnieje) i rejestruje najlepszego gracza mapy jako nowego. w pliku tempvip.ini
VIP z najlepszego gracza mapy jest dawany na nick.
Przetestuj i daj znać
Załączone pliki
Użytkownik DarkLink edytował ten post 24.04.2015 12:23
Zapraszam na Ponad Granice
Pamiętaj! Nie pomagam na PW/GG chyba że odpłatnie.
Zanim do mnie napiszesz zastanów się 2 razy nad sensem swojej wypowiedzi.
Jeśli masz takowe zlecenie pisz GG:11351931
#5
Napisano 24.04.2015 15:54
Czyli aktualny plugin musze wywalić i wgrać ten co mi zrobiłeś tak?
#6
Napisano 24.04.2015 15:56
Tak, zgadza się.
Zapraszam na Ponad Granice
Pamiętaj! Nie pomagam na PW/GG chyba że odpłatnie.
Zanim do mnie napiszesz zastanów się 2 razy nad sensem swojej wypowiedzi.
Jeśli masz takowe zlecenie pisz GG:11351931
#7
Napisano 24.04.2015 22:04
Niestety plugin nie działa, nie stworzyło mi nawet pliku tempvip.ini
#8
Napisano 25.04.2015 14:15
Sorry, mój błąd
Już działa, sprawdziłem
Załączone pliki
Zapraszam na Ponad Granice
Pamiętaj! Nie pomagam na PW/GG chyba że odpłatnie.
Zanim do mnie napiszesz zastanów się 2 razy nad sensem swojej wypowiedzi.
Jeśli masz takowe zlecenie pisz GG:11351931
#9
Napisano 25.04.2015 19:24
Wciąż mi nie działa, dalej nie tworzy pliku tempvip.ini
#10
Napisano 25.04.2015 20:13
Może, nie ma najlepszego gracza mapy? Oczywiste jest to, że musi ktoś mieć fragi i musi być chyba minimum 2 osoby na serwerze. Plik tempvip.ini tworzy się w cstrike/addons/amxmodx/configs/tempvip.ini i Tworzy on się tylko po wybraniu gracza przez plugin jako najlepszego gracza mapy. Po kolejnej zmianie mapy usuwa się i tworzy na nowo z nowym najlepszym graczem mapy jeśli takowy istnieje, jeśli nie ma go to nie sworzy pliku. Sam wgrałem u siebie na serwer by sprawdzić i działa bez zarzutów. Ew. możesz zmienić w linijce 51:
set_task(2.0, "koniecmapy", .flags="d");
tą "2" na inną liczbę, odpowiada ona za sprawdzenie najlepszego gracza mapy w ilości sekund przed końcem mapy.
Łopatologicznie, 2 sekundy przed zmianą mapy sprawdza najlepszego gracza, możliwe, że to za szybko dla Twojego serwera, ze względu na maszynę/konfigurację.
Zmień np. na 4 i zobacz. (.0 ma zostać za liczbą).
Zapraszam na Ponad Granice
Pamiętaj! Nie pomagam na PW/GG chyba że odpłatnie.
Zanim do mnie napiszesz zastanów się 2 razy nad sensem swojej wypowiedzi.
Jeśli masz takowe zlecenie pisz GG:11351931
#11
Napisano 25.04.2015 20:37
Dalej nie działa. A może to coś z flagami? U mnie VIP jest na flagę "t".
#12
Napisano 26.04.2015 14:07
To nie ma nic wspólnego z flagami, ponieważ tempvip (tak nazwijmy ten dodatek) działa na dodawanie nicku do tego pliku tempvip.ini i czytając z niego nick daje danemu graczowi vipa na jedną mapę. Na prawdę nie mam pojęcia czemu to Tobie nie działa. Powiedz jeszcze jak sprawdzasz jego działanie? Może wykonujesz jakiś błąd?
Zapraszam na Ponad Granice
Pamiętaj! Nie pomagam na PW/GG chyba że odpłatnie.
Zanim do mnie napiszesz zastanów się 2 razy nad sensem swojej wypowiedzi.
Jeśli masz takowe zlecenie pisz GG:11351931
#13
Napisano 26.04.2015 19:01
Wgrałem plugin prawidłowo, przez kilka map sprawdzałem czy najlepszy gracz dostanie VIPa, ale niestety nie dostał.
Również z jednym lub większą ilością słów kluczowych: nowy plugin
|
Nowy Plugin
[KOSZ] pluginNapisany przez Frodo1981, 25.02.2024 nowy plugin |
|
|||
Nowy Plugin
vip pbNapisany przez One ShooT, 04.02.2024 nowy plugin |
|
||||
Nowy Plugin
Admin menuNapisany przez stół z powyłamywanymi, 22.09.2022 nowy plugin |
|
||||
Nowy Plugin
Prośba o napisanie pluginuNapisany przez stół z powyłamywanymi, 15.08.2022 nowy plugin |
|
||||
Nowy Plugin
PLUGIN NA DRplugin Napisany przez bawarskagolonka123, 25.06.2021 nowy plugin |
|
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych