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.
|
PLUGIN Vip z modelem
#1
Napisano 21.01.2014 11:11
Vip:
- Multijump 1
- Hp 125 czyli o 25 wiecej
- Losowe granaty 1
- Zwiekszone obrazenia o 2,5
- Dodatkowe pieniadze 300 nomrmalnie 500 hs
- Pokazuj vipy online na komendę
- Status Vip w tabeli punktów
- Informacje o vipie w motd ( komenda /vip )
- Przywitanie gdy vip wchodzi na serwer
- Prefix przed nickiem
- auto bh
Proszę o zrobienie czegos takiego, i bym prosil dokladny opis co i jak z tymi modelami, podam link poniewaz nie jestem na komputerze:
http://cs.gamebanana.com/skins/101584
#2
Napisano 21.01.2014 11:32
Kod Vip'a, wystarczy iż sobie skompilujesz, np. tutaj: http://amxx.pl/kompilator/
#include <amxmodx> #include <colorchat> #include <cstrike> #include <engine> #include <fakemeta> #include <fun> #include <hamsandwich> #define FL_ONGROUND (1<<9) #define FL_WATERJUMP (1<<11) #define IsPlayer(%1) (1<=%1<=maxPlayers) forward amxbans_admin_connect(id); new Array:g_Array, bool:g_Vip[33], ioid, maxPlayers, skoki[33]; 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_forward(FM_CmdStart, "CmdStartPre"); RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1); RegisterHam(Ham_TakeDamage, "player", "takeDamage", 0); 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"); 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); 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 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; set_user_health(id, get_user_health(id)+25); losoweGranaty(id, 1); new g_Model[64]; formatex(g_Model,charsmax(g_Model),"%s",get_user_team(id) == 1 ? "viptt" : "vipct"); cs_set_user_model(id,g_Model); } public losoweGranaty(id, losowe_granaty){ new henum=(user_has_weapon(id,CSW_HEGRENADE)?cs_get_user_bpammo(id,CSW_HEGRENADE):0); new fbnum=(user_has_weapon(id,CSW_FLASHBANG)?cs_get_user_bpammo(id,CSW_FLASHBANG):0); new sgnum=(user_has_weapon(id,CSW_SMOKEGRENADE)?cs_get_user_bpammo(id,CSW_SMOKEGRENADE):0); while(--losowe_granaty>=0){ new granat=random(3); switch(granat){ case 0:{ if(++henum>1){ cs_set_user_bpammo(id,CSW_HEGRENADE,cs_get_user_bpammo(id,CSW_HEGRENADE)+1); } else { give_item(id, "weapon_hegrenade"); } } case 1:{ if(++fbnum>2){ cs_set_user_bpammo(id,CSW_FLASHBANG,cs_get_user_bpammo(id,CSW_FLASHBANG)+1); } else { give_item(id, "weapon_flashbang"); } } case 2:{ if(++sgnum>1){ cs_set_user_bpammo(id,CSW_SMOKEGRENADE,cs_get_user_bpammo(id,CSW_SMOKEGRENADE)+1); } else { give_item(id, "weapon_smokegrenade"); } } } } } 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]))){ damage*=(100+2.5)/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){ cs_set_user_money(kid, cs_get_user_money(kid)+(hs?500:300)); } 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); 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 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 plugin_precache(){ precache_model("models/player/vipct/vipct.mdl"); precache_model("models/player/viptt/viptt.mdl"); } public client_PreThink(id){ if(g_Vip[id] && is_user_alive(id)){ client_PreThinkVip(id); } } public client_PreThinkVip(id){ entity_set_float(id, EV_FL_fuser2, 0.0); if(entity_get_int(id, EV_INT_button) & 2){ new flags = entity_get_int(id, EV_INT_flags); if(flags & FL_WATERJUMP || entity_get_int(id, EV_INT_waterlevel) >= 2 || !(flags & FL_ONGROUND)){ return PLUGIN_CONTINUE; } new Float:velocity[3]; entity_get_vector(id, EV_VEC_velocity, velocity); velocity[2] += 250.0; entity_set_vector(id, EV_VEC_velocity, velocity); entity_set_int(id, EV_INT_gaitsequence, 6); } return PLUGIN_CONTINUE; } public amxbans_admin_connect(id){ client_authorized(id); }
Vip jest na flage t. Co do modeli, to po pobraniu modelu, skopiuj go 2 razy. Nazwij je kolejno: vipct.mdl i viptt.mdl
Po nazwaniu, vipct.mdl wgraj do folderu models/player/vipct natomiast viptt.mdl wgraj do models/player/viptt (Prawdopodobnie nie masz tam folderów vipct i viptt, więc musisz zrobić je samemu).
To teraz przejdźmy do MOTD wyświetlającego się po wpisaniu /vip.
Jako iż załączniki nie działają, będziesz musiał sam sobie je zrobić. Wystarczy że na pulpicie zrobisz sobie plik vip.txt i wkleisz tam ten kod (Oczywiście, możesz edytować jego zawartość jak masz ochotę):
<head> <style type="text/css"> body{ background-color: #000000; font-family:Verdana,Tahoma; color: #FFFFFF; } </style> <meta http-equiv="Content-Type" content="text/html; charset=utf8"> </head> <body> <ul><font size="2" color="#E0A518"><b>Vip posiada :</b></font><br><br> <li type="square"><font size="1"> Multijumpy<br> 25 HP co rundę<br> 1 losowy granat<br> Zwiększone obrażenia z wszystkich broni<br> Dodatkowa kasa za zabójstwo ( 500 - HS | 300 - Normalne )<br> Napis VIP w tabeli wyników<br> VIP widoczny ba liście /vips<br> Prefix przed nickiem<br> Własny model<br> Auto Bunny Hop<br> Cena vipa: 11.07. </font></li></ul> </body>
Gdy już to zrobisz, plik vip.txt należy wgrać do podstawowego foldera serwera, czyli do cstrike.
Użytkownik LaKuL edytował ten post 21.01.2014 11:33
#3
Napisano 21.01.2014 11:50
#4
Napisano 21.01.2014 13:06
Użytkownik KsD edytował ten post 21.01.2014 13:08
#5
Napisano 21.01.2014 17:23
Jeśli plugin działa, to model także. Myślę iż temat do zamknięcia.
#6
Napisano 28.01.2014 18:25
Problem rozwiązany temat uważam do zamknięcia:)
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych