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
 

Wklejka 1qdyg3ci9ykkg dodana przez Kawon, 08.04.2013 22:24
Typ:



1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <cstrike>
 
new const nazwa[]   = "Współczesny Saper";
new const opis[]    = "Posiada miny laserowe i darmowy defuser";
new const bronie    = (1<<CSW_FIVESEVEN)|(1<<CSW_FAMAS);
new const zdrowie   = 0;
new const kondycja  = 40;
new const inteligencja = 0;
new const wytrzymalosc = 50;
 
public plugin_init()
{
    register_plugin(nazwa, "1.0", "amxx.pl");
 
    cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
}
 
public cod_class_enabled(id)
{
    cs_set_user_defuse(id, 1);
 
{
public cod_class_enabled(id)
}
#if defined BIOHAZARD_SUPPORT
    #include <biohazard>
#endif
 
#if defined UL_MONEY_SUPPORT
    #include <money_ul>
#endif
 
 
#if AMXX_VERSION_NUM < 180
    #assert AMX Mod X v1.8.0 or greater library required!
#endif
 
#if defined BIOHAZARD_SUPPORT
    #define PLUGIN "LTM for BIOHAZARD"
    #define VERSION "+1.4"
#else
    #define PLUGIN "Laser/Tripmine Entity"
    #define VERSION "2.3"
#endif
#define AUTHOR "SandStriker"
 
#define RemoveEntity(%1)    engfunc(EngFunc_RemoveEntity,%1)
//#define ACCESSLEVEL        ADMIN_LEVEL_H
#define TASK_PLANT        15100
#define TASK_RESET        15500
#define TASK_RELEASE        15900
 
#define LASERMINE_TEAM        pev_iuser1//EV_INT_iuser1
#define LASERMINE_OWNER        pev_iuser2 //EV_INT_iuser3
#define LASERMINE_STEP        pev_iuser3
#define LASERMINE_HITING    pev_iuser4
#define LASERMINE_COUNT        pev_fuser1
 
#define LASERMINE_POWERUP    pev_fuser2
#define LASERMINE_BEAMTHINK    pev_fuser3
 
#define LASERMINE_BEAMENDPOINT    pev_vuser1
#define MAX_MINES        10
#define MODE_LASERMINE        0
#define OFFSET_TEAM         114
#define OFFSET_MONEY        115
#define OFFSET_DEATH         444
 
#define cs_get_user_team(%1)        CsTeams:get_offset_value(%1,OFFSET_TEAM)
#define cs_get_user_deaths(%1)        get_offset_value(%1,OFFSET_DEATH)
#define cs_get_user_money(%1)        get_offset_value(%1,OFFSET_MONEY)
#define cs_set_user_money(%1,%2)    set_offset_value(%1,OFFSET_MONEY,%2)
 
 
enum CsTeams {
    CS_TEAM_UNASSIGNED = 0,
    CS_TEAM_T = 1,
    CS_TEAM_CT = 2,
    CS_TEAM_SPECTATOR = 3
};
 
enum tripmine_e {
    TRIPMINE_IDLE1 = 0,
    TRIPMINE_IDLE2,
    TRIPMINE_ARM1,
    TRIPMINE_ARM2,
    TRIPMINE_FIDGET,
    TRIPMINE_HOLSTER,
    TRIPMINE_DRAW,
    TRIPMINE_WORLD,
    TRIPMINE_GROUND,
};
 
enum
{
    POWERUP_THINK,
    BEAMBREAK_THINK,
    EXPLOSE_THINK
};
 
enum
{
    POWERUP_SOUND,
    ACTIVATE_SOUND,
    STOP_SOUND
};
 
new const
    ENT_MODELS[]    = "models/v_tripmine.mdl",
    ENT_SOUND1[]    = "weapons/mine_deploy.wav",
    ENT_SOUND2[]    = "weapons/mine_charge.wav",
    ENT_SOUND3[]    = "weapons/mine_activate.wav",
    ENT_SOUND4[]    = "debris/beamstart9.wav",
    ENT_SOUND5[]    = "items/gunpickup2.wav",
    ENT_SOUND6[]    = "debris/bustglass1.wav",
    ENT_SOUND7[]    = "debris/bustglass2.wav",
    ENT_SPRITE1[]     = "sprites/laserbeam.spr",
    ENT_SPRITE2[]     = "sprites/zerogxplode.spr";
 
new const
    ENT_CLASS_NAME[]    = "lasermine",
    //ENT_CLASS_NAME2[]    = "info_target",
    ENT_CLASS_NAME3[]    = "func_breakable";
 
new const
#if defined BIOHAZARD_SUPPORT
    CHATTAG[]         = "[BioLaser]",
#else
    CHATTAG[]         = "[Lasermine]",
#endif
    //STR_MINEDETNATED[]     = "Your mine has detonated.",
    //STR_MINEDETNATED2[]    = "detonated your mine.",
    STR_NOTACTIVE[]     = "Lasermines are not currently active.",
    STR_DONTHAVEMINE[]    = "You don't have lasermine.",
    //STR_CANTDEPLOY[]    = "Your team can't deploying lasermine!",
    STR_MAXDEPLOY[]        = "Maximum mines have been deployed.",
    STR_MANYPPL[]        = "Too many ppl on your team...",
    STR_PLANTWALL[]        = "You must plant the lasermine on a wall!",
    STR_REF[]        = "Refer to a lasermine rule with this server. say 'lasermine'",
#if defined BIOHAZARD_SUPPORT    
    STR_CBT[]        = "Your Zombie! Can't buy and deploying lasermine!",
#else
    STR_CBT[]        = "Your Team Can't buy and deploying lasermine!",
#endif
    STR_DELAY[]        = "You can deploying lasermine in after",
    STR_SECONDS[]        = "seconds.",
    STR_STATE[]        = "LaserMines Ammo:",
    STR_NOACCESS[]        = "You can't access, this command.";
 
new g_EntMine;
new beam, boom
new
    g_LENABLE,g_LFMONEY,g_LDMG,
    g_LTMAX,g_LHEALTH,g_LMODE,g_LRADIUS,g_LRDMG,g_LFF,g_LCBT;
new
    g_LDELAY,/*g_LTHINK,*/g_LVISIBLE,
    g_LSTAMMO,g_LACCESS,g_LGLOW,g_LDMGMODE,g_LCLMODE,g_LCBRIGHT,g_LDSEC;
 
new g_dcount[33],g_nowtime,g_MaxPL
new bool:g_settinglaser[33]
new g_msgDeathMsg,g_msgScoreInfo,g_msgDamage,g_msgStatusText,g_msgMoney;
new Float:plspeed[33]
new plsetting[33]
new g_havemine[33];
new g_deployed[33];
 
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR);
 
    cod_register_class("Mina Laserowa", "Dostajesz LW min laserowych", 1, 3);
 
 
    register_clcmd("+dellaser","ReturnLaserMine_Progress");
       register_clcmd("-dellaser","StopReturnLaserMine");
 
#if defined BIOHAZARD_SUPPORT
    g_LENABLE    = register_cvar("bio_ltm","1");
    g_LACCESS    = register_cvar("bio_ltm_acs","0");          //0 all, 1 admin
    g_LMODE        = register_cvar("bio_ltm_mode","0");         //0 lasermine, 1 tripmine
    g_LAMMO        = register_cvar("bio_ltm_ammo","2");
    g_LDMG        = register_cvar("bio_ltm_dmg","60");        //laser hit dmg
    g_LCOST        = register_cvar("bio_ltm_cost","2500");
    g_LFMONEY    = register_cvar("bio_ltm_fragmoney","300");
    g_LHEALTH    = register_cvar("bio_ltm_health","500");
    g_LTMAX        = register_cvar("bio_ltm_teammax","10");
    g_LRADIUS    = register_cvar("bio_ltm_radius","320.0");
    g_LRDMG        = register_cvar("bio_ltm_rdmg","100");         //radius damage
    g_LFF        = register_cvar("bio_ltm_ff","0");
    g_LCBT        = register_cvar("bio_ltm_cbt","ALL");
    g_LBUYMODE    = register_cvar("bio_ltm_buymode","1");
    g_LDELAY    = register_cvar("bio_ltm_delay","15");
    //g_LTHINK = register_cvar("bio_ltm_think","0.01");
    g_LVISIBLE    = register_cvar("bio_ltm_line","1");
    g_LGLOW        = register_cvar("bio_ltm_glow","0");
    g_LCBRIGHT    = register_cvar("bio_ltm_bright","255");    //laser line brightness.
    g_LCLMODE    = register_cvar("bio_ltm_color","0");        //0 is team color,1 is green
    g_LDMGMODE    = register_cvar("bio_ltm_ldmgmode","0");     //0 - frame dmg, 1 - once dmg, 2 - 1 second dmg
    g_LDSEC        = register_cvar("bio_ltm_ldmgseconds","1");    //mode 2 only, damage / seconds. default 1 (sec)
    g_LSTAMMO    = register_cvar("bio_ltm_startammo","1");
    g_LCMDMODE    = register_cvar("bio_ltm_cmdmode","0");        //0 is +USE key, 1 is bind, 2 is each.
#else
    g_LENABLE    = register_cvar("amx_ltm","1");
    g_LACCESS    = register_cvar("amx_ltm_acs","0");          //0 all, 1 admin
    g_LMODE        = register_cvar("amx_ltm_mode","1");         //0 lasermine, 1 tripmine
    g_LDMG        = register_cvar("amx_ltm_dmg","60");         //laser hit dmg
    g_LFMONEY    = register_cvar("amx_ltm_fragmoney","300");
    g_LHEALTH    = register_cvar("amx_ltm_health","500");
    g_LTMAX        = register_cvar("amx_ltm_teammax","10");
    g_LRADIUS    = register_cvar("amx_ltm_radius","320.0");
    g_LRDMG        = register_cvar("amx_ltm_rdmg","100");        //radius damage
    g_LFF        = register_cvar("amx_ltm_ff","0");
    g_LCBT        = register_cvar("amx_ltm_cbt","ALL");
    g_LDELAY    = register_cvar("amx_ltm_delay","15");
    //g_LTHINK = register_cvar("amx_ltm_think","0.01")
    g_LVISIBLE    = register_cvar("amx_ltm_line","1");
    g_LGLOW        = register_cvar("amx_ltm_glow","0");
    g_LCBRIGHT    = register_cvar("amx_ltm_bright","255");    //laser line brightness.
    g_LCLMODE    = register_cvar("amx_ltm_color","0");         //0 is team color,1 is green
    g_LDMGMODE    = register_cvar("amx_ltm_ldmgmode","0");     //0 - frame dmg, 1 - once dmg, 2 - 1 second dmg
    g_LDSEC        = register_cvar("amx_ltm_ldmgseconds","1");    //mode 2 only, damage / seconds. default 1 (sec)
    g_LSTAMMO    = register_cvar("amx_ltm_startammo","1");        //0 is +USE key, 1 is bind, 2 is each.
#endif
    register_event("DeathMsg", "DeathEvent", "a");
     register_event("CurWeapon", "standing", "be", "1=1");
    register_event("ResetHUD", "delaycount", "a");
    register_event("ResetHUD", "newround", "b");
    register_event("Damage","CutDeploy_onDamage","b");
    g_msgDeathMsg     = get_user_msgid("DeathMsg");
    g_msgScoreInfo    = get_user_msgid("ScoreInfo");
    g_msgDamage     = get_user_msgid("Damage");
    g_msgStatusText = get_user_msgid("StatusText");
    g_msgMoney    = get_user_msgid("Money");
    // -- Forward.
    register_forward(FM_Think, "ltm_Think" );
    register_forward(FM_PlayerPostThink, "ltm_PostThink" );
}
 
public cod_class_enabled(id, wartosc)
{
    newround(id);
}
 
public cod_class_disabled(id)
    wartosc_perku[id] = 0;
 
public cod_class_used_used(id)
{    
    if(!g_settinglaser[id])
        CreateLaserMine_Progress(id);
    else
        StopCreateLaserMine(id);
}
 
public plugin_precache()
{
    precache_sound(ENT_SOUND1);
    precache_sound(ENT_SOUND2);
    precache_sound(ENT_SOUND3);
    precache_sound(ENT_SOUND4);
    precache_sound(ENT_SOUND5);
    precache_sound(ENT_SOUND6);
    precache_sound(ENT_SOUND7);
    precache_model(ENT_MODELS);
    beam = precache_model(ENT_SPRITE1);
    boom = precache_model(ENT_SPRITE2);
 
    return PLUGIN_CONTINUE;
}
 
public plugin_modules()
{
    require_module("fakemeta");
    require_module("cstrike");
    //require_module("fun")
}
 
public plugin_cfg()
{
    g_EntMine = engfunc(EngFunc_AllocString,ENT_CLASS_NAME3);
    arrayset(g_havemine,0,sizeof(g_havemine));
    arrayset(g_deployed,0,sizeof(g_deployed));
    g_MaxPL = get_maxplayers();
 
    new file[64]; get_localinfo("amxx_configsdir",file,63);
#if defined BIOHAZARD_SUPPORT
    format(file, 63, "%s/bhltm_cvars.cfg", file);
#else
    format(file, 63, "%s/ltm_cvars.cfg", file);
#endif
    if(file_exists(file)) server_cmd("exec %s", file), server_exec();
 
}
 
public delaycount(id)
{
    g_dcount[id] = floatround(get_gametime());
}
 
bool:CheckTime(id)
{
    g_nowtime = floatround(get_gametime()) - g_dcount[id];
    if(g_nowtime >= get_pcvar_num(g_LDELAY))
        return true;
    return false;
}
 
public CreateLaserMine_Progress(id)
{
 
    if (!CreateCheck(id))
        return PLUGIN_HANDLED;
    g_settinglaser[id] = true;
 
    message_begin( MSG_ONE, 108, {0,0,0}, id );
    write_byte(1);
    write_byte(0);
    message_end();
 
    set_task(1.2, "Spawn", (TASK_PLANT + id));
 
    return PLUGIN_HANDLED;
}
 
public ReturnLaserMine_Progress(id)
{
 
    if (!ReturnCheck(id))
        return PLUGIN_HANDLED;
    g_settinglaser[id] = true;
 
    message_begin( MSG_ONE, 108, {0,0,0}, id );
    write_byte(1);
    write_byte(0);
    message_end();
 
    set_task(1.2, "ReturnMine", (TASK_RELEASE + id));
 
 
    return PLUGIN_HANDLED;
}
 
public StopCreateLaserMine(id)
{
 
    DeleteTask(id);
    message_begin(MSG_ONE, 108, {0,0,0}, id);
    write_byte(0);
    write_byte(0);
    message_end();
 
    return PLUGIN_HANDLED;
}
 
public StopReturnLaserMine(id)
{
 
    DeleteTask(id);
    message_begin(MSG_ONE, 108, {0,0,0}, id);
    write_byte(0);
    write_byte(0);
    message_end();
 
    return PLUGIN_HANDLED;
}
 
public ReturnMine(id)
{
    id -= TASK_RELEASE;
    new tgt,body,Float:vo[3],Float:to[3];
    get_user_aiming(id,tgt,body);
    if(!pev_valid(tgt)) return;
    pev(id,pev_origin,vo);
    pev(tgt,pev_origin,to);
    if(get_distance_f(vo,to) > 70.0) return;
 
    new EntityName[32];
    pev(tgt, pev_classname, EntityName, 31);
    if(!equal(EntityName, ENT_CLASS_NAME)) return;
    if(pev(tgt,LASERMINE_OWNER) != id) return;
    RemoveEntity(tgt);
 
    g_havemine[id] ++;
    g_deployed[id] --;
    emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
    ShowAmmo(id)
 
    return;
}
 
public Spawn( id )
{
    id -= TASK_PLANT
    // motor
    new i_Ent = engfunc(EngFunc_CreateNamedEntity,g_EntMine);
    if(!i_Ent)
    {
        client_print(id,print_chat,"[Laesrmine Debug] Can't Create Entity");
        return PLUGIN_HANDLED_MAIN;
    }
    set_pev(i_Ent,pev_classname,ENT_CLASS_NAME);
 
    engfunc(EngFunc_SetModel,i_Ent,ENT_MODELS);
 
    set_pev(i_Ent,pev_solid,SOLID_NOT);
    set_pev(i_Ent,pev_movetype,MOVETYPE_FLY);
 
    set_pev(i_Ent,pev_frame,0);
    set_pev(i_Ent,pev_body,3);
    set_pev(i_Ent,pev_sequence,TRIPMINE_WORLD);
    set_pev(i_Ent,pev_framerate,0);
 
    set_pev(i_Ent,pev_takedamage,DAMAGE_YES);
 
    set_pev(i_Ent,pev_dmg,100.0);
    set_user_health(i_Ent,get_pcvar_num(g_LHEALTH));
    new Float:vOrigin[3];
    new    Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3],
        Float:vTraceEnd[3],Float:vEntAngles[3];
    pev( id, pev_origin, vOrigin );
    velocity_by_aim( id, 128, vTraceDirection );
    xs_vec_add( vTraceDirection, vOrigin, vTraceEnd );
 
    engfunc( EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0 );
 
    new Float:fFraction;
    get_tr2( 0, TR_flFraction, fFraction );
 
 
    // -- We hit something!
    if ( fFraction < 1.0 )
    {
        // -- Save results to be used later.
        get_tr2( 0, TR_vecEndPos, vTraceEnd );
        get_tr2( 0, TR_vecPlaneNormal, vNormal );
    }
 
 
    xs_vec_mul_scalar( vNormal, 8.0, vNormal );
    xs_vec_add( vTraceEnd, vNormal, vNewOrigin );
 
    engfunc(EngFunc_SetSize, i_Ent, Float:{ -4.0, -4.0, -4.0 }, Float:{ 4.0, 4.0, 4.0 } );
    engfunc(EngFunc_SetOrigin, i_Ent, vNewOrigin );
 
    // -- Rotate tripmine.
    vector_to_angle(vNormal,vEntAngles );
    set_pev(i_Ent,pev_angles,vEntAngles );
 
    // -- Calculate laser end origin.
    new Float:vBeamEnd[3], Float:vTracedBeamEnd[3];
 
    xs_vec_mul_scalar(vNormal, 8192.0, vNormal