merhabalar bende bir drop uçağı plugini var ama dropların içinden item vermiyor ve eklenti aktif olduğu zaman bazı pluginleri bozuyor bunu nasıl düzeltebiliriz ?
Konu
Kutudan çıkması için 20 özellik ekledim.
Bazı pluginleri bozuyor demişsiniz, detay verir misiniz ?
Bazı pluginleri bozuyor demişsiniz, detay verir misiniz ?
PHP Kod:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <cstrike>
#include <fun>
#include <xs>
#define PLUGIN "Liberation War : Air Supply"
#define VERSION "1.0"
#define AUTHOR "Sneaky.amxx"
// Config
#define SUPPLYBOX_TEAM CS_TEAM_CT | CS_TEAM_T
#define AIRPLANE_CLASSNAME "Sneaky_airline"
#define SUPPLYBOX_CLASSNAME "Sneaky_box"
// Resources
#define AIRPLANE_MODEL "models/sorpack/Supply_Airplane.mdl"
#define SUPPLY_MODEL "models/sorpack/Supply_Parachute.mdl"
#define PACKAGE_MODEL "models/sorpack/Supply_Package.mdl"
new const Airplane_Sound[] = "sorpack/airsupply/Supply_Airplane.wav"
// Task
#define TASK_AIRPLANE 410151
/// Spawn System
new const SPAWNS_URL[] = "%s/airsupply/%s.sneakyamxx"
const MAX_SPAWNS = 128
new g_spawns[MAX_SPAWNS][3], g_spawns2[MAX_SPAWNS][3], g_total_spawns
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_think(AIRPLANE_CLASSNAME, "fw_Airplane_Think")
register_think(SUPPLYBOX_CLASSNAME, "fw_Supplybox_Think")
register_touch(SUPPLYBOX_CLASSNAME, "*", "fw_Supplybox_Touch")
register_clcmd("AS_Spawn", "Spawn_Editor")
register_clcmd("AS_NoClip", "Spawn_Editor_NoClip")
register_clcmd("say /test", "Test")
}
public plugin_precache()
{
precache_model(AIRPLANE_MODEL)
precache_model(SUPPLY_MODEL)
precache_model(PACKAGE_MODEL)
precache_sound(Airplane_Sound)
}
public plugin_cfg()
{
spawn_load()
}
public Spawn_Editor(id) spawn_main(id)
public Spawn_Editor_NoClip(id)
{
if(!is_user_alive(id))
return
if(!get_user_noclip(id)) set_user_noclip(id, 1)
else set_user_noclip(id, 0)
}
public Test(id)
{
AirSupply_Clear() // Usually called in 'New Round' Event
Airplane_Appear() // Call whenever you want the packages
}
public AirSupply_Clear()
{
remove_task(TASK_AIRPLANE)
remove_entity_name(AIRPLANE_CLASSNAME)
remove_entity_name(SUPPLYBOX_CLASSNAME)
}
public Airplane_Appear()
{
PlaySound(0, Airplane_Sound)
set_task(3.5, "Create_Airplane", TASK_AIRPLANE)
}
public Create_Airplane()
{
if(!g_total_spawns) return
static Random; Random = random(g_total_spawns)
static Float:Start[3]; IVecFVec(g_spawns[Random], Start)
static Float:Target[3]; IVecFVec(g_spawns2[Random], Target)
static Airplane; Airplane = create_entity("info_target")
set_pev(Airplane, pev_classname, AIRPLANE_CLASSNAME)
engfunc(EngFunc_SetModel, Airplane, AIRPLANE_MODEL)
engfunc(EngFunc_SetSize, Airplane, Float:{-1.0,-1.0,-1.0}, Float:{1.0,1.0,1.0})
set_pev(Airplane, pev_solid, SOLID_TRIGGER)
set_pev(Airplane, pev_movetype, MOVETYPE_FLY)
set_pev(Airplane, pev_iuser1, Random)
engfunc(EngFunc_SetOrigin, Airplane, Start)
set_pev(Airplane, pev_rendermode, kRenderTransAlpha)
set_pev(Airplane, pev_renderfx, kRenderFxNone)
set_pev(Airplane, pev_renderamt, 0.0)
set_pev(Airplane, pev_vuser1, Start)
set_pev(Airplane, pev_vuser2, Target)
Aim_To2(Airplane, Target)
Set_EntAnim(Airplane, 1, 1.0, 0)
set_pev(Airplane, pev_fuser2, random_float(0.1, 0.5))
set_pev(Airplane, pev_nextthink, get_gametime() + 0.1)
}
public fw_Airplane_Think(Ent)
{
if(!pev_valid(Ent))
return
static Float:Start[3], Float:End[3], Float:Now[3]
pev(Ent, pev_vuser1, Start)
pev(Ent, pev_vuser2, End)
pev(Ent, pev_origin, Now)
if(get_distance_f(Start, Now) < 360.0)
{
static Float:RenderAmt; pev(Ent, pev_renderamt, RenderAmt)
if(RenderAmt < 250.0)
{
RenderAmt += 17.5
if(RenderAmt > 250.0) RenderAmt = 255.0
set_pev(Ent, pev_renderamt, RenderAmt)
}
}
if(get_distance_f(Now, End) > 360.0)
{
hook_ent2(Ent, End, 2000.0)
} else {
hook_ent2(Ent, End, 1000.0)
static Float:RenderAmt; pev(Ent, pev_renderamt, RenderAmt)
if(RenderAmt > 0.0)
{
RenderAmt -= 10.0
if(RenderAmt < 0.0) RenderAmt = 0.0
set_pev(Ent, pev_renderamt, RenderAmt)
} else {
remove_entity(Ent)
return
}
}
static Float:Time; pev(Ent, pev_fuser1, Time)
static Float:Delay; pev(Ent, pev_fuser2, Delay)
if(get_gametime() - Delay > Time)
{
Create_Supplybox(Now)
Time = get_gametime()
set_pev(Ent, pev_fuser1, Time)
set_pev(Ent, pev_fuser2, random_float(0.1, 0.4))
}
set_pev(Ent, pev_nextthink, get_gametime() + 0.01)
}
public Create_Supplybox(Float:Origin[3])
{
static Supply; Supply = create_entity("info_target")
set_pev(Supply, pev_classname, SUPPLYBOX_CLASSNAME)
engfunc(EngFunc_SetModel, Supply, SUPPLY_MODEL)
engfunc(EngFunc_SetSize, Supply, Float:{-3.0,-3.0,-3.0}, Float:{3.0,3.0,3.0})
set_pev(Supply, pev_solid, SOLID_TRIGGER)
set_pev(Supply, pev_movetype, MOVETYPE_TOSS)
set_pev(Supply, pev_angles, {90.0, 0.0, 0.0})
set_pev(Supply, pev_gravity, 0.5)
static Float:Velocity[3]
Velocity[0] = random_float(-100.0, 100.0)
Velocity[1] = random_float(-100.0, 100.0)
engfunc(EngFunc_SetOrigin, Supply, Origin)
set_pev(Supply, pev_velocity, Velocity)
Set_EntAnim(Supply, 0, 1.0, 0)
set_pev(Supply, pev_nextthink, get_gametime() + 0.01)
}
public fw_Supplybox_Think(Ent)
{
if(!pev_valid(Ent))
return
static Float:Velocity[3]; pev(Ent, pev_velocity, Velocity)
if(!vector_length(Velocity))
{
pev(Ent, pev_angles, Velocity)
if(Velocity[0] > 0.0)
{
Velocity[0] -= 10.0
if(Velocity[0] < 0.0)
{
Velocity[0] = 0.0
}
set_pev(Ent, pev_angles, Velocity)
if(!Velocity[0]) engfunc(EngFunc_SetModel, Ent, PACKAGE_MODEL)
}
}
set_pev(Ent, pev_nextthink, get_gametime() + 0.1)
}
public fw_Supplybox_Touch(Ent, id)
{
if(!pev_valid(Ent))
return FMRES_IGNORED
if(!is_user_alive(id) || !(cs_get_user_team(id) & SUPPLYBOX_TEAM))
return FMRES_IGNORED
// Effect & Sound
//emit_sound(Id, CHAN_VOICE, SupplyBox_PickupSounds[random_num(0, sizeof(SupplyBox_PickupSounds) - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
SupplyBox_GiveItem(id)
engfunc(EngFunc_RemoveEntity, Ent)
return FMRES_IGNORED
}
public SupplyBox_GiveItem(const id)
{
new iRandomNum = random_num(1, 20);
switch(iRandomNum)
{
case 1: give_item(id, "weapon_ak47");
case 2: give_item(id, "weapon_m4a1");
case 3: give_item(id, "weapon_awp");
case 4: give_item(id, "weapon_deagle");
case 5: give_item(id, "weapon_usp");
case 6: set_user_health(id, get_user_health(id) + 25);
case 7: set_user_health(id, get_user_health(id) + 50);
case 8: cs_set_user_armor(id, cs_get_user_armor(id) + 50, CS_ARMOR_VESTHELM);
case 9: cs_set_user_armor(id, cs_get_user_armor(id) + 100, CS_ARMOR_VESTHELM);
case 10: set_user_gravity(id, 0.5);
case 11: set_user_gravity(id, 1.5);
case 12: set_user_maxspeed(id, 1.2);
case 13: set_user_maxspeed(id, 0.8);
case 14: give_item(id, "weapon_scout");
case 15: give_item(id, "weapon_mp5navy");
case 16: give_item(id, "weapon_p90");
case 17: give_item(id, "weapon_galil");
case 18: give_item(id, "weapon_famas");
case 19: give_item(id, "weapon_hegrenade");
case 20: give_item(id, "weapon_flashbang");
}
}
public Aim_To2(iEnt, Float:vTargetOrigin[3])
{
if(!pev_valid(iEnt))
return
static Float:Vec[3], Float:Angles[3]
pev(iEnt, pev_origin, Vec)
Vec[0] = vTargetOrigin[0] - Vec[0]
Vec[1] = vTargetOrigin[1] - Vec[1]
Vec[2] = vTargetOrigin[2] - Vec[2]
engfunc(EngFunc_VecToAngles, Vec, Angles)
//Angles[0] = Angles[2] = 0.0
set_pev(iEnt, pev_v_angle, Angles)
set_pev(iEnt, pev_angles, Angles)
}
public Set_EntAnim(ent, anim, Float:framerate, resetframe)
{
if(!pev_valid(ent))
return
if(!resetframe)
{
if(pev(ent, pev_sequence) != anim)
{
set_pev(ent, pev_animtime, get_gametime())
set_pev(ent, pev_framerate, framerate)
set_pev(ent, pev_sequence, anim)
}
} else {
set_pev(ent, pev_animtime, get_gametime())
set_pev(ent, pev_framerate, framerate)
set_pev(ent, pev_sequence, anim)
}
}
public hook_ent2(ent, Float:VicOrigin[3], Float:speed)
{
if(!pev_valid(ent))
return
static Float:fl_Velocity[3], Float:EntOrigin[3], Float:distance_f, Float:fl_Time
pev(ent, pev_origin, EntOrigin)
distance_f = get_distance_f(EntOrigin, VicOrigin)
fl_Time = distance_f / speed
fl_Velocity[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
fl_Velocity[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
set_pev(ent, pev_velocity, fl_Velocity)
}
public PlaySound(id, const sound[])
{
if(equal(sound[strlen(sound)-4], ".mp3")) client_cmd(id, "mp3 play ^"sound/%s^"", sound)
else client_cmd(id, "spk ^"%s^"", sound)
}
//######################################################################
// SPAWNS POINTS
//######################################################################
// ===================== SPAWN MAIN MENU =====================
public spawn_main(id)
{
// create menu
new title[64], item_name[5][64]
format(title, charsmax(title), "[AirSupply] Spawn Editor (%i/%i)", g_total_spawns, MAX_SPAWNS)
format(item_name[0], 63, "Add Path")
format(item_name[2], 63, "Save Path")
//format(item_name[3], 63, "Load Path")
//format(item_name[4], 63, "Delete Path")
new mHandleID = menu_create(title, "spawn_main_handler")
menu_additem(mHandleID, item_name[0], "add", 0)
menu_additem(mHandleID, item_name[2], "save", 0)
//menu_additem(mHandleID, item_name[3], "load", 0)
//menu_additem(mHandleID, item_name[4], "del", 0)
menu_display(id, mHandleID, 0)
}
public spawn_main_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
// destroy menu
menu_destroy(menu)
// show menu main
return;
}
new itemid[32], itemname[32], access
menu_item_getinfo(menu, item, access, itemid, charsmax(itemid), itemname, charsmax(itemname), access)
menu_destroy(menu)
if (equal(itemid, "add"))
{
spawn_create(id)
return;
}
else if (equal(itemid, "save")) spawn_save()
//else if (equal(itemid, "load")) spawn_load()
//else if (equal(itemid, "del")) spawn_del(1)
// show main menu
spawn_main(id)
}
// ===================== spawn create =====================
public spawn_create(id)
{
// create menu
new title[64], item_name[3][64]
format(title, charsmax(title), "[AirSupply] Path Adding (%i/%i)", g_total_spawns, MAX_SPAWNS)
format(item_name[0], 63, "Add Start")
format(item_name[1], 63, "Add End")
//format(item_name[2], 63, "Delete")
new mHandleID = menu_create(title, "spawn_create_handler")
menu_additem(mHandleID, item_name[0], "add", 0)
menu_additem(mHandleID, item_name[1], "add_boss", 0)
//menu_additem(mHandleID, item_name[2], "del", 0)
menu_display(id, mHandleID, 0)
}
public spawn_create_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
// destroy menu
menu_destroy(menu)
// show menu main
spawn_main(id)
return;
}
new itemid[32], itemname[32], access
menu_item_getinfo(menu, item, access, itemid, charsmax(itemid), itemname, charsmax(itemname), access)
menu_destroy(menu)
if (equali(itemid, "add")) spawn_create_add(id)
else if (equali(itemid, "add_boss")) spawn_create_add(id, 1)
//else if (equali(itemid, "del")) spawn_del()
// return menu create spawns
spawn_create(id)
return;
}
spawn_create_add(id, end=0)
{
// check max points
if (g_total_spawns>=MAX_SPAWNS)
{
new message[128]
format(message, charsmax(message), ">x04[AirSupply] >x01Max spawn = %i", MAX_SPAWNS)
color_saytext(id, message)
return;
}
// add current points
new Float:originF[3], origin[3]
pev(id, pev_origin, originF)
origin[0] = floatround(originF[0])
origin[1] = floatround(originF[1])
origin[2] = floatround(originF[2])
if (!is_point(origin) || !spawn_check_dist(originF))
{
new message[128]
format(message, charsmax(message), ">x04[AirSupply] >x01Too closer...")
color_saytext(id, message)
return;
}
if(!end)
{
g_spawns[g_total_spawns][0] = origin[0]
g_spawns[g_total_spawns][1] = origin[1]
g_spawns[g_total_spawns][2] = origin[2]
} else {
g_spawns2[g_total_spawns][0] = origin[0]
g_spawns2[g_total_spawns][1] = origin[1]
g_spawns2[g_total_spawns][2] = origin[2]
g_total_spawns ++
}
}
// ===================== spawn save =====================
spawn_save()
{
// check total
if (!g_total_spawns)
{
new message[128]
format(message, charsmax(message), ">x04[AirSupply] >x01No spawn found")
color_saytext(0, message)
return;
}
// get url file
new cfgdir[32], mapname[32], urlfile[64]
get_configsdir(cfgdir, charsmax(cfgdir))
get_mapname(mapname, charsmax(mapname))
formatex(urlfile, charsmax(urlfile), SPAWNS_URL, cfgdir, mapname)
// save file
if (file_exists(urlfile)) delete_file(urlfile)
new lineset[128]
for (new i=0; i<g_total_spawns; i++)
{
if (!g_spawns[i][0] && !g_spawns[i][1] && !g_spawns[i][2] && !g_spawns2[i][0] && !g_spawns2[i][1] && !g_spawns2[i][2]) break;
format(lineset, charsmax(lineset), "%i %i %i %i %i %i", g_spawns[i][0], g_spawns[i][1], g_spawns[i][2], g_spawns2[i][0], g_spawns2[i][1], g_spawns2[i][2])
write_file(urlfile, lineset, i)
}
// show notice
new message[128]
format(message, charsmax(message), ">x04[AirSupply] >x01Save Completed")
color_saytext(0, message)
}
// ===================== spawn load =====================
spawn_load()
{
// Check for spawns points of the current map
new cfgdir[32], mapname[32], filepath[100], linedata[64], point[6], smallpoint[3]
get_configsdir(cfgdir, charsmax(cfgdir))
get_mapname(mapname, charsmax(mapname))
formatex(filepath, charsmax(filepath), SPAWNS_URL, cfgdir, mapname)
// check file exit
if (!file_exists(filepath))
{
//new message[128]
//format(message, charsmax(message), ">x04[AirSupply] >x01File doesnt exist (%s)", filepath)
//color_saytext(0, message)
return;
}
// first reset value
reset_spawn()
// Load spawns points
new file = fopen(filepath,"rt"), row[6][6]
while (file && !feof(file))
{
fgets(file, linedata, charsmax(linedata))
// invalid spawn
if(!linedata[0] || str_count(linedata,' ') < 2) continue;
// get spawn point data
parse(linedata,row[0],5,row[1],5,row[2],5,row[3],5,row[4],5,row[5],5)
// set spawnst
point[0] = smallpoint[0] = str_to_num(row[0])
point[1] = smallpoint[1] = str_to_num(row[1])
point[2] = smallpoint[2] = str_to_num(row[2])
point[3] = str_to_num(row[3])
point[4] = str_to_num(row[4])
point[5] = str_to_num(row[5])
if (is_point(smallpoint))
{
g_spawns[g_total_spawns][0] = point[0]
g_spawns[g_total_spawns][1] = point[1]
g_spawns[g_total_spawns][2] = point[2]
g_spawns2[g_total_spawns][0] = point[3]
g_spawns2[g_total_spawns][1] = point[4]
g_spawns2[g_total_spawns][2] = point[5]
// increase spawn count
g_total_spawns ++
if (g_total_spawns>=MAX_SPAWNS) break;
}
}
if (file) fclose(file)
// notice
if (g_total_spawns)
{
//new message[128]
//format(message, charsmax(message), ">x04[AirSupply] >x01Load Completed (%i)", g_total_spawns)
//color_saytext(0, message)
}
}
// ===================== other function =====================
spawn_check_dist(Float:origin[3], point=-1)
{
new Float:originE[3], Float:origin1[3], Float:origin2[3]
for (new i=0; i<g_total_spawns; i++)
{
if (i==point) continue;
originE[0] = float(g_spawns[i][0])
originE[1] = float(g_spawns[i][1])
originE[2] = float(g_spawns[i][2])
// xoy
origin1 = origin
origin2 = originE
origin1[2] = origin2[2] = 0.0
if (vector_distance(origin1, origin2)<=2*16.0)
{
// oz
origin1 = origin
origin2 = originE
origin1[0] = origin2[0] = origin1[1] = origin2[1] = 0.0
if (vector_distance(origin1, origin2)<=100.0) return 0;
}
}
return 1;
}
color_saytext(player, const message[], any:...)
{
new text[256]
format(text, charsmax(text), "%s",message)
format(text, charsmax(text), "%s",check_text(text))
new dest
if (player) dest = MSG_ONE
else dest = MSG_ALL
message_begin(dest, get_user_msgid("SayText"), {0,0,0}, player)
write_byte(1)
write_string(text)
message_end()
}
is_point(point[3])
{
if (!point[0] && !point[1] && !point[2]) return 0
return 1
}
reset_spawn(t=0)
{
for (new s=0; s<MAX_SPAWNS; s++)
{
for (new i=0; i<3; i++)
{
g_spawns[s][i] = 0
}
}
if (!t) g_total_spawns = 0
}
check_text(text1[])
{
new text[256]
format(text, charsmax(text), "%s", text1)
replace_all(text, charsmax(text), ">x04", "^x04")
replace_all(text, charsmax(text), ">x03", "^x03")
replace_all(text, charsmax(text), ">x01", "^x01")
return text
}
str_count(const str[], searchchar)
{
new count, i, len = strlen(str)
for (i = 0; i <= len; i++)
{
if(str[i] == searchchar)
count++
}
return count;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1042\\ f0\\ fs16 \n\\ par }
*/
Steam: Tıkla
(05-01-2025, 15:01)PlateN1453 Adlı Kullanıcıdan Alıntı: mesela lr attığımız zaman elimize silah falan gelmiyorEklentide başka eklentileri bozucak bir şey göremedim tekrar kontrol edin.
Gördüğüm bazı sorunlar var bunlara dikkat edin;
Kod:
register_clcmd("AS_Spawn", "Spawn_Editor")
register_clcmd("AS_NoClip", "Spawn_Editor_NoClip")
register_clcmd("say /test", "Test")
Steam: Tıkla
(05-01-2025, 15:05)Lynchk Adlı Kullanıcıdan Alıntı:bu komutları sadece rcon yetkisi olarak ayarlayabilirmiyiz peki ?(05-01-2025, 15:01)PlateN1453 Adlı Kullanıcıdan Alıntı: mesela lr attığımız zaman elimize silah falan gelmiyorEklentide başka eklentileri bozucak bir şey göremedim tekrar kontrol edin.
Gördüğüm bazı sorunlar var bunlara dikkat edin;
Bu komutları herkes kullanabiliyor.Kod:register_clcmd("AS_Spawn", "Spawn_Editor")
register_clcmd("AS_NoClip", "Spawn_Editor_NoClip")
register_clcmd("say /test", "Test")
(05-01-2025, 15:06)PlateN1453 Adlı Kullanıcıdan Alıntı: bu komutları sadece rcon yetkisi olarak ayarlayabilirmiyiz peki ?
PHP Kod:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <cstrike>
#include <fun>
#include <xs>
#define PLUGIN "Liberation War : Air Supply"
#define VERSION "1.0"
#define AUTHOR "Sneaky.amxx"
// Config
#define SUPPLYBOX_TEAM CS_TEAM_CT | CS_TEAM_T
#define AIRPLANE_CLASSNAME "Sneaky_airline"
#define SUPPLYBOX_CLASSNAME "Sneaky_box"
// Resources
#define AIRPLANE_MODEL "models/sorpack/Supply_Airplane.mdl"
#define SUPPLY_MODEL "models/sorpack/Supply_Parachute.mdl"
#define PACKAGE_MODEL "models/sorpack/Supply_Package.mdl"
new const Airplane_Sound[] = "sorpack/airsupply/Supply_Airplane.wav"
// Task
#define TASK_AIRPLANE 410151
/// Spawn System
new const SPAWNS_URL[] = "%s/airsupply/%s.sneakyamxx"
const MAX_SPAWNS = 128
new g_spawns[MAX_SPAWNS][3], g_spawns2[MAX_SPAWNS][3], g_total_spawns
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_think(AIRPLANE_CLASSNAME, "fw_Airplane_Think")
register_think(SUPPLYBOX_CLASSNAME, "fw_Supplybox_Think")
register_touch(SUPPLYBOX_CLASSNAME, "*", "fw_Supplybox_Touch")
register_clcmd("AS_Spawn", "Spawn_Editor")
register_clcmd("AS_NoClip", "Spawn_Editor_NoClip")
register_clcmd("say /test", "Test")
}
public plugin_precache()
{
precache_model(AIRPLANE_MODEL)
precache_model(SUPPLY_MODEL)
precache_model(PACKAGE_MODEL)
precache_sound(Airplane_Sound)
}
public plugin_cfg()
{
spawn_load()
}
public Spawn_Editor(id) {
if(get_user_flags(id) & ADMIN_RCON) {
spawn_main(id)
}
}
public Spawn_Editor_NoClip(id)
{
if(!is_user_alive(id) || ~get_user_flags(id) & ADMIN_RCON)
return
if(!get_user_noclip(id)) set_user_noclip(id, 1)
else set_user_noclip(id, 0)
}
public Test(id) {
if(get_user_flags(id) & ADMIN_RCON) {
AirSupply_Clear() // Usually called in 'New Round' Event
Airplane_Appear() // Call whenever you want the packages
}
}
public AirSupply_Clear()
{
remove_task(TASK_AIRPLANE)
remove_entity_name(AIRPLANE_CLASSNAME)
remove_entity_name(SUPPLYBOX_CLASSNAME)
}
public Airplane_Appear()
{
PlaySound(0, Airplane_Sound)
set_task(3.5, "Create_Airplane", TASK_AIRPLANE)
}
public Create_Airplane()
{
if(!g_total_spawns) return
static Random; Random = random(g_total_spawns)
static Float:Start[3]; IVecFVec(g_spawns[Random], Start)
static Float:Target[3]; IVecFVec(g_spawns2[Random], Target)
static Airplane; Airplane = create_entity("info_target")
set_pev(Airplane, pev_classname, AIRPLANE_CLASSNAME)
engfunc(EngFunc_SetModel, Airplane, AIRPLANE_MODEL)
engfunc(EngFunc_SetSize, Airplane, Float:{-1.0,-1.0,-1.0}, Float:{1.0,1.0,1.0})
set_pev(Airplane, pev_solid, SOLID_TRIGGER)
set_pev(Airplane, pev_movetype, MOVETYPE_FLY)
set_pev(Airplane, pev_iuser1, Random)
engfunc(EngFunc_SetOrigin, Airplane, Start)
set_pev(Airplane, pev_rendermode, kRenderTransAlpha)
set_pev(Airplane, pev_renderfx, kRenderFxNone)
set_pev(Airplane, pev_renderamt, 0.0)
set_pev(Airplane, pev_vuser1, Start)
set_pev(Airplane, pev_vuser2, Target)
Aim_To2(Airplane, Target)
Set_EntAnim(Airplane, 1, 1.0, 0)
set_pev(Airplane, pev_fuser2, random_float(0.1, 0.5))
set_pev(Airplane, pev_nextthink, get_gametime() + 0.1)
}
public fw_Airplane_Think(Ent)
{
if(!pev_valid(Ent))
return
static Float:Start[3], Float:End[3], Float:Now[3]
pev(Ent, pev_vuser1, Start)
pev(Ent, pev_vuser2, End)
pev(Ent, pev_origin, Now)
if(get_distance_f(Start, Now) < 360.0)
{
static Float:RenderAmt; pev(Ent, pev_renderamt, RenderAmt)
if(RenderAmt < 250.0)
{
RenderAmt += 17.5
if(RenderAmt > 250.0) RenderAmt = 255.0
set_pev(Ent, pev_renderamt, RenderAmt)
}
}
if(get_distance_f(Now, End) > 360.0)
{
hook_ent2(Ent, End, 2000.0)
} else {
hook_ent2(Ent, End, 1000.0)
static Float:RenderAmt; pev(Ent, pev_renderamt, RenderAmt)
if(RenderAmt > 0.0)
{
RenderAmt -= 10.0
if(RenderAmt < 0.0) RenderAmt = 0.0
set_pev(Ent, pev_renderamt, RenderAmt)
} else {
remove_entity(Ent)
return
}
}
static Float:Time; pev(Ent, pev_fuser1, Time)
static Float:Delay; pev(Ent, pev_fuser2, Delay)
if(get_gametime() - Delay > Time)
{
Create_Supplybox(Now)
Time = get_gametime()
set_pev(Ent, pev_fuser1, Time)
set_pev(Ent, pev_fuser2, random_float(0.1, 0.4))
}
set_pev(Ent, pev_nextthink, get_gametime() + 0.01)
}
public Create_Supplybox(Float:Origin[3])
{
static Supply; Supply = create_entity("info_target")
set_pev(Supply, pev_classname, SUPPLYBOX_CLASSNAME)
engfunc(EngFunc_SetModel, Supply, SUPPLY_MODEL)
engfunc(EngFunc_SetSize, Supply, Float:{-3.0,-3.0,-3.0}, Float:{3.0,3.0,3.0})
set_pev(Supply, pev_solid, SOLID_TRIGGER)
set_pev(Supply, pev_movetype, MOVETYPE_TOSS)
set_pev(Supply, pev_angles, {90.0, 0.0, 0.0})
set_pev(Supply, pev_gravity, 0.5)
static Float:Velocity[3]
Velocity[0] = random_float(-100.0, 100.0)
Velocity[1] = random_float(-100.0, 100.0)
engfunc(EngFunc_SetOrigin, Supply, Origin)
set_pev(Supply, pev_velocity, Velocity)
Set_EntAnim(Supply, 0, 1.0, 0)
set_pev(Supply, pev_nextthink, get_gametime() + 0.01)
}
public fw_Supplybox_Think(Ent)
{
if(!pev_valid(Ent))
return
static Float:Velocity[3]; pev(Ent, pev_velocity, Velocity)
if(!vector_length(Velocity))
{
pev(Ent, pev_angles, Velocity)
if(Velocity[0] > 0.0)
{
Velocity[0] -= 10.0
if(Velocity[0] < 0.0)
{
Velocity[0] = 0.0
}
set_pev(Ent, pev_angles, Velocity)
if(!Velocity[0]) engfunc(EngFunc_SetModel, Ent, PACKAGE_MODEL)
}
}
set_pev(Ent, pev_nextthink, get_gametime() + 0.1)
}
public fw_Supplybox_Touch(Ent, id)
{
if(!pev_valid(Ent))
return FMRES_IGNORED
if(!is_user_alive(id) || !(cs_get_user_team(id) & SUPPLYBOX_TEAM))
return FMRES_IGNORED
// Effect & Sound
//emit_sound(Id, CHAN_VOICE, SupplyBox_PickupSounds[random_num(0, sizeof(SupplyBox_PickupSounds) - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
SupplyBox_GiveItem(id)
engfunc(EngFunc_RemoveEntity, Ent)
return FMRES_IGNORED
}
public SupplyBox_GiveItem(const id)
{
new iRandomNum = random_num(1, 20);
switch(iRandomNum)
{
case 1: give_item(id, "weapon_ak47");
case 2: give_item(id, "weapon_m4a1");
case 3: give_item(id, "weapon_awp");
case 4: give_item(id, "weapon_deagle");
case 5: give_item(id, "weapon_usp");
case 6: set_user_health(id, get_user_health(id) + 25);
case 7: set_user_health(id, get_user_health(id) + 50);
case 8: cs_set_user_armor(id, cs_get_user_armor(id) + 50, CS_ARMOR_VESTHELM);
case 9: cs_set_user_armor(id, cs_get_user_armor(id) + 100, CS_ARMOR_VESTHELM);
case 10: set_user_gravity(id, 0.5);
case 11: set_user_gravity(id, 1.5);
case 12: set_user_maxspeed(id, 1.2);
case 13: set_user_maxspeed(id, 0.8);
case 14: give_item(id, "weapon_scout");
case 15: give_item(id, "weapon_mp5navy");
case 16: give_item(id, "weapon_p90");
case 17: give_item(id, "weapon_galil");
case 18: give_item(id, "weapon_famas");
case 19: give_item(id, "weapon_hegrenade");
case 20: give_item(id, "weapon_flashbang");
}
}
public Aim_To2(iEnt, Float:vTargetOrigin[3])
{
if(!pev_valid(iEnt))
return
static Float:Vec[3], Float:Angles[3]
pev(iEnt, pev_origin, Vec)
Vec[0] = vTargetOrigin[0] - Vec[0]
Vec[1] = vTargetOrigin[1] - Vec[1]
Vec[2] = vTargetOrigin[2] - Vec[2]
engfunc(EngFunc_VecToAngles, Vec, Angles)
//Angles[0] = Angles[2] = 0.0
set_pev(iEnt, pev_v_angle, Angles)
set_pev(iEnt, pev_angles, Angles)
}
public Set_EntAnim(ent, anim, Float:framerate, resetframe)
{
if(!pev_valid(ent))
return
if(!resetframe)
{
if(pev(ent, pev_sequence) != anim)
{
set_pev(ent, pev_animtime, get_gametime())
set_pev(ent, pev_framerate, framerate)
set_pev(ent, pev_sequence, anim)
}
} else {
set_pev(ent, pev_animtime, get_gametime())
set_pev(ent, pev_framerate, framerate)
set_pev(ent, pev_sequence, anim)
}
}
public hook_ent2(ent, Float:VicOrigin[3], Float:speed)
{
if(!pev_valid(ent))
return
static Float:fl_Velocity[3], Float:EntOrigin[3], Float:distance_f, Float:fl_Time
pev(ent, pev_origin, EntOrigin)
distance_f = get_distance_f(EntOrigin, VicOrigin)
fl_Time = distance_f / speed
fl_Velocity[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
fl_Velocity[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
set_pev(ent, pev_velocity, fl_Velocity)
}
public PlaySound(id, const sound[])
{
if(equal(sound[strlen(sound)-4], ".mp3")) client_cmd(id, "mp3 play ^"sound/%s^"", sound)
else client_cmd(id, "spk ^"%s^"", sound)
}
//######################################################################
// SPAWNS POINTS
//######################################################################
// ===================== SPAWN MAIN MENU =====================
public spawn_main(id)
{
// create menu
new title[64], item_name[5][64]
format(title, charsmax(title), "[AirSupply] Spawn Editor (%i/%i)", g_total_spawns, MAX_SPAWNS)
format(item_name[0], 63, "Add Path")
format(item_name[2], 63, "Save Path")
//format(item_name[3], 63, "Load Path")
//format(item_name[4], 63, "Delete Path")
new mHandleID = menu_create(title, "spawn_main_handler")
menu_additem(mHandleID, item_name[0], "add", 0)
menu_additem(mHandleID, item_name[2], "save", 0)
//menu_additem(mHandleID, item_name[3], "load", 0)
//menu_additem(mHandleID, item_name[4], "del", 0)
menu_display(id, mHandleID, 0)
}
public spawn_main_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
// destroy menu
menu_destroy(menu)
// show menu main
return;
}
new itemid[32], itemname[32], access
menu_item_getinfo(menu, item, access, itemid, charsmax(itemid), itemname, charsmax(itemname), access)
menu_destroy(menu)
if (equal(itemid, "add"))
{
spawn_create(id)
return;
}
else if (equal(itemid, "save")) spawn_save()
//else if (equal(itemid, "load")) spawn_load()
//else if (equal(itemid, "del")) spawn_del(1)
// show main menu
spawn_main(id)
}
// ===================== spawn create =====================
public spawn_create(id)
{
// create menu
new title[64], item_name[3][64]
format(title, charsmax(title), "[AirSupply] Path Adding (%i/%i)", g_total_spawns, MAX_SPAWNS)
format(item_name[0], 63, "Add Start")
format(item_name[1], 63, "Add End")
//format(item_name[2], 63, "Delete")
new mHandleID = menu_create(title, "spawn_create_handler")
menu_additem(mHandleID, item_name[0], "add", 0)
menu_additem(mHandleID, item_name[1], "add_boss", 0)
//menu_additem(mHandleID, item_name[2], "del", 0)
menu_display(id, mHandleID, 0)
}
public spawn_create_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
// destroy menu
menu_destroy(menu)
// show menu main
spawn_main(id)
return;
}
new itemid[32], itemname[32], access
menu_item_getinfo(menu, item, access, itemid, charsmax(itemid), itemname, charsmax(itemname), access)
menu_destroy(menu)
if (equali(itemid, "add")) spawn_create_add(id)
else if (equali(itemid, "add_boss")) spawn_create_add(id, 1)
//else if (equali(itemid, "del")) spawn_del()
// return menu create spawns
spawn_create(id)
return;
}
spawn_create_add(id, end=0)
{
// check max points
if (g_total_spawns>=MAX_SPAWNS)
{
new message[128]
format(message, charsmax(message), ">x04[AirSupply] >x01Max spawn = %i", MAX_SPAWNS)
color_saytext(id, message)
return;
}
// add current points
new Float:originF[3], origin[3]
pev(id, pev_origin, originF)
origin[0] = floatround(originF[0])
origin[1] = floatround(originF[1])
origin[2] = floatround(originF[2])
if (!is_point(origin) || !spawn_check_dist(originF))
{
new message[128]
format(message, charsmax(message), ">x04[AirSupply] >x01Too closer...")
color_saytext(id, message)
return;
}
if(!end)
{
g_spawns[g_total_spawns][0] = origin[0]
g_spawns[g_total_spawns][1] = origin[1]
g_spawns[g_total_spawns][2] = origin[2]
} else {
g_spawns2[g_total_spawns][0] = origin[0]
g_spawns2[g_total_spawns][1] = origin[1]
g_spawns2[g_total_spawns][2] = origin[2]
g_total_spawns ++
}
}
// ===================== spawn save =====================
spawn_save()
{
// check total
if (!g_total_spawns)
{
new message[128]
format(message, charsmax(message), ">x04[AirSupply] >x01No spawn found")
color_saytext(0, message)
return;
}
// get url file
new cfgdir[32], mapname[32], urlfile[64]
get_configsdir(cfgdir, charsmax(cfgdir))
get_mapname(mapname, charsmax(mapname))
formatex(urlfile, charsmax(urlfile), SPAWNS_URL, cfgdir, mapname)
// save file
if (file_exists(urlfile)) delete_file(urlfile)
new lineset[128]
for (new i=0; i<g_total_spawns; i++)
{
if (!g_spawns[i][0] && !g_spawns[i][1] && !g_spawns[i][2] && !g_spawns2[i][0] && !g_spawns2[i][1] && !g_spawns2[i][2]) break;
format(lineset, charsmax(lineset), "%i %i %i %i %i %i", g_spawns[i][0], g_spawns[i][1], g_spawns[i][2], g_spawns2[i][0], g_spawns2[i][1], g_spawns2[i][2])
write_file(urlfile, lineset, i)
}
// show notice
new message[128]
format(message, charsmax(message), ">x04[AirSupply] >x01Save Completed")
color_saytext(0, message)
}
// ===================== spawn load =====================
spawn_load()
{
// Check for spawns points of the current map
new cfgdir[32], mapname[32], filepath[100], linedata[64], point[6], smallpoint[3]
get_configsdir(cfgdir, charsmax(cfgdir))
get_mapname(mapname, charsmax(mapname))
formatex(filepath, charsmax(filepath), SPAWNS_URL, cfgdir, mapname)
// check file exit
if (!file_exists(filepath))
{
//new message[128]
//format(message, charsmax(message), ">x04[AirSupply] >x01File doesnt exist (%s)", filepath)
//color_saytext(0, message)
return;
}
// first reset value
reset_spawn()
// Load spawns points
new file = fopen(filepath,"rt"), row[6][6]
while (file && !feof(file))
{
fgets(file, linedata, charsmax(linedata))
// invalid spawn
if(!linedata[0] || str_count(linedata,' ') < 2) continue;
// get spawn point data
parse(linedata,row[0],5,row[1],5,row[2],5,row[3],5,row[4],5,row[5],5)
// set spawnst
point[0] = smallpoint[0] = str_to_num(row[0])
point[1] = smallpoint[1] = str_to_num(row[1])
point[2] = smallpoint[2] = str_to_num(row[2])
point[3] = str_to_num(row[3])
point[4] = str_to_num(row[4])
point[5] = str_to_num(row[5])
if (is_point(smallpoint))
{
g_spawns[g_total_spawns][0] = point[0]
g_spawns[g_total_spawns][1] = point[1]
g_spawns[g_total_spawns][2] = point[2]
g_spawns2[g_total_spawns][0] = point[3]
g_spawns2[g_total_spawns][1] = point[4]
g_spawns2[g_total_spawns][2] = point[5]
// increase spawn count
g_total_spawns ++
if (g_total_spawns>=MAX_SPAWNS) break;
}
}
if (file) fclose(file)
// notice
if (g_total_spawns)
{
//new message[128]
//format(message, charsmax(message), ">x04[AirSupply] >x01Load Completed (%i)", g_total_spawns)
//color_saytext(0, message)
}
}
// ===================== other function =====================
spawn_check_dist(Float:origin[3], point=-1)
{
new Float:originE[3], Float:origin1[3], Float:origin2[3]
for (new i=0; i<g_total_spawns; i++)
{
if (i==point) continue;
originE[0] = float(g_spawns[i][0])
originE[1] = float(g_spawns[i][1])
originE[2] = float(g_spawns[i][2])
// xoy
origin1 = origin
origin2 = originE
origin1[2] = origin2[2] = 0.0
if (vector_distance(origin1, origin2)<=2*16.0)
{
// oz
origin1 = origin
origin2 = originE
origin1[0] = origin2[0] = origin1[1] = origin2[1] = 0.0
if (vector_distance(origin1, origin2)<=100.0) return 0;
}
}
return 1;
}
color_saytext(player, const message[], any:...)
{
new text[256]
format(text, charsmax(text), "%s",message)
format(text, charsmax(text), "%s",check_text(text))
new dest
if (player) dest = MSG_ONE
else dest = MSG_ALL
message_begin(dest, get_user_msgid("SayText"), {0,0,0}, player)
write_byte(1)
write_string(text)
message_end()
}
is_point(point[3])
{
if (!point[0] && !point[1] && !point[2]) return 0
return 1
}
reset_spawn(t=0)
{
for (new s=0; s<MAX_SPAWNS; s++)
{
for (new i=0; i<3; i++)
{
g_spawns[s][i] = 0
}
}
if (!t) g_total_spawns = 0
}
check_text(text1[])
{
new text[256]
format(text, charsmax(text), "%s", text1)
replace_all(text, charsmax(text), ">x04", "^x04")
replace_all(text, charsmax(text), ">x03", "^x03")
replace_all(text, charsmax(text), ">x01", "^x01")
return text
}
str_count(const str[], searchchar)
{
new count, i, len = strlen(str)
for (i = 0; i <= len; i++)
{
if(str[i] == searchchar)
count++
}
return count;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1042\\ f0\\ fs16 \n\\ par }
*/
Steam: Tıkla
bu arada denedim kutuların üstüne geliyorum item vermiyor ve takılı kalıyor hareket edemiyorum
(05-01-2025, 15:09)PlateN1453 Adlı Kullanıcıdan Alıntı: bu arada denedim kutuların üstüne geliyorum item vermiyor ve takılı kalıyor hareket edemiyorumafedersin tekrar denedim ve düzeldi teşekkür ederim
Son Düzenleme: 05-01-2025, 15:11, Düzenleyen: PlateN1453.
(05-01-2025, 15:09)PlateN1453 Adlı Kullanıcıdan Alıntı: bu arada denedim kutuların üstüne geliyorum item vermiyor ve takılı kalıyor hareket edemiyorumRica ederim, konunuz çözüldüyse üst kısımdan bildirebilirsiniz.
afedersin tekrar denedim ve düzeldi teşekkür ederim
Steam: Tıkla
(05-01-2025, 15:16)Lynchk Adlı Kullanıcıdan Alıntı:bir şey daha rica edebilirmiyim ? her oyun başladığında nasıl aktif edebiliriz bunu ?(05-01-2025, 15:09)PlateN1453 Adlı Kullanıcıdan Alıntı: bu arada denedim kutuların üstüne geliyorum item vermiyor ve takılı kalıyor hareket edemiyorumRica ederim, konunuz çözüldüyse üst kısımdan bildirebilirsiniz.
afedersin tekrar denedim ve düzeldi teşekkür ederim
Deneyin;
PHP Kod:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <cstrike>
#include <fun>
#include <xs>
#define PLUGIN "Liberation War : Air Supply"
#define VERSION "1.0"
#define AUTHOR "Sneaky.amxx"
// Config
#define SUPPLYBOX_TEAM CS_TEAM_CT | CS_TEAM_T
#define AIRPLANE_CLASSNAME "Sneaky_airline"
#define SUPPLYBOX_CLASSNAME "Sneaky_box"
// Resources
#define AIRPLANE_MODEL "models/sorpack/Supply_Airplane.mdl"
#define SUPPLY_MODEL "models/sorpack/Supply_Parachute.mdl"
#define PACKAGE_MODEL "models/sorpack/Supply_Package.mdl"
new const Airplane_Sound[] = "sorpack/airsupply/Supply_Airplane.wav"
// Task
#define TASK_AIRPLANE 410151
/// Spawn System
new const SPAWNS_URL[] = "%s/airsupply/%s.sneakyamxx"
const MAX_SPAWNS = 128
new g_spawns[MAX_SPAWNS][3], g_spawns2[MAX_SPAWNS][3], g_total_spawns
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_think(AIRPLANE_CLASSNAME, "fw_Airplane_Think")
register_think(SUPPLYBOX_CLASSNAME, "fw_Supplybox_Think")
register_touch(SUPPLYBOX_CLASSNAME, "*", "fw_Supplybox_Touch")
register_event("HLTV", "RoundRestart", "a", "1=0", "2=0");
register_clcmd("AS_Spawn", "Spawn_Editor")
register_clcmd("AS_NoClip", "Spawn_Editor_NoClip")
register_clcmd("say /test", "Test")
}
public plugin_precache()
{
precache_model(AIRPLANE_MODEL)
precache_model(SUPPLY_MODEL)
precache_model(PACKAGE_MODEL)
precache_sound(Airplane_Sound)
}
public plugin_cfg()
{
spawn_load()
}
public Spawn_Editor(id) {
if(get_user_flags(id) & ADMIN_RCON) {
spawn_main(id)
}
}
public Spawn_Editor_NoClip(id)
{
if(!is_user_alive(id) || ~get_user_flags(id) & ADMIN_RCON)
return
if(!get_user_noclip(id)) set_user_noclip(id, 1)
else set_user_noclip(id, 0)
}
public RoundRestart() {
AirSupply_Clear() // Usually called in 'New Round' Event
Airplane_Appear() // Call whenever you want the packages
}
public Test(id) {
if(get_user_flags(id) & ADMIN_RCON) {
AirSupply_Clear() // Usually called in 'New Round' Event
Airplane_Appear() // Call whenever you want the packages
}
}
public AirSupply_Clear()
{
remove_task(TASK_AIRPLANE)
remove_entity_name(AIRPLANE_CLASSNAME)
remove_entity_name(SUPPLYBOX_CLASSNAME)
}
public Airplane_Appear()
{
PlaySound(0, Airplane_Sound)
set_task(3.5, "Create_Airplane", TASK_AIRPLANE)
}
public Create_Airplane()
{
if(!g_total_spawns) return
static Random; Random = random(g_total_spawns)
static Float:Start[3]; IVecFVec(g_spawns[Random], Start)
static Float:Target[3]; IVecFVec(g_spawns2[Random], Target)
static Airplane; Airplane = create_entity("info_target")
set_pev(Airplane, pev_classname, AIRPLANE_CLASSNAME)
engfunc(EngFunc_SetModel, Airplane, AIRPLANE_MODEL)
engfunc(EngFunc_SetSize, Airplane, Float:{-1.0,-1.0,-1.0}, Float:{1.0,1.0,1.0})
set_pev(Airplane, pev_solid, SOLID_TRIGGER)
set_pev(Airplane, pev_movetype, MOVETYPE_FLY)
set_pev(Airplane, pev_iuser1, Random)
engfunc(EngFunc_SetOrigin, Airplane, Start)
set_pev(Airplane, pev_rendermode, kRenderTransAlpha)
set_pev(Airplane, pev_renderfx, kRenderFxNone)
set_pev(Airplane, pev_renderamt, 0.0)
set_pev(Airplane, pev_vuser1, Start)
set_pev(Airplane, pev_vuser2, Target)
Aim_To2(Airplane, Target)
Set_EntAnim(Airplane, 1, 1.0, 0)
set_pev(Airplane, pev_fuser2, random_float(0.1, 0.5))
set_pev(Airplane, pev_nextthink, get_gametime() + 0.1)
}
public fw_Airplane_Think(Ent)
{
if(!pev_valid(Ent))
return
static Float:Start[3], Float:End[3], Float:Now[3]
pev(Ent, pev_vuser1, Start)
pev(Ent, pev_vuser2, End)
pev(Ent, pev_origin, Now)
if(get_distance_f(Start, Now) < 360.0)
{
static Float:RenderAmt; pev(Ent, pev_renderamt, RenderAmt)
if(RenderAmt < 250.0)
{
RenderAmt += 17.5
if(RenderAmt > 250.0) RenderAmt = 255.0
set_pev(Ent, pev_renderamt, RenderAmt)
}
}
if(get_distance_f(Now, End) > 360.0)
{
hook_ent2(Ent, End, 2000.0)
} else {
hook_ent2(Ent, End, 1000.0)
static Float:RenderAmt; pev(Ent, pev_renderamt, RenderAmt)
if(RenderAmt > 0.0)
{
RenderAmt -= 10.0
if(RenderAmt < 0.0) RenderAmt = 0.0
set_pev(Ent, pev_renderamt, RenderAmt)
} else {
remove_entity(Ent)
return
}
}
static Float:Time; pev(Ent, pev_fuser1, Time)
static Float:Delay; pev(Ent, pev_fuser2, Delay)
if(get_gametime() - Delay > Time)
{
Create_Supplybox(Now)
Time = get_gametime()
set_pev(Ent, pev_fuser1, Time)
set_pev(Ent, pev_fuser2, random_float(0.1, 0.4))
}
set_pev(Ent, pev_nextthink, get_gametime() + 0.01)
}
public Create_Supplybox(Float:Origin[3])
{
static Supply; Supply = create_entity("info_target")
set_pev(Supply, pev_classname, SUPPLYBOX_CLASSNAME)
engfunc(EngFunc_SetModel, Supply, SUPPLY_MODEL)
engfunc(EngFunc_SetSize, Supply, Float:{-3.0,-3.0,-3.0}, Float:{3.0,3.0,3.0})
set_pev(Supply, pev_solid, SOLID_TRIGGER)
set_pev(Supply, pev_movetype, MOVETYPE_TOSS)
set_pev(Supply, pev_angles, {90.0, 0.0, 0.0})
set_pev(Supply, pev_gravity, 0.5)
static Float:Velocity[3]
Velocity[0] = random_float(-100.0, 100.0)
Velocity[1] = random_float(-100.0, 100.0)
engfunc(EngFunc_SetOrigin, Supply, Origin)
set_pev(Supply, pev_velocity, Velocity)
Set_EntAnim(Supply, 0, 1.0, 0)
set_pev(Supply, pev_nextthink, get_gametime() + 0.01)
}
public fw_Supplybox_Think(Ent)
{
if(!pev_valid(Ent))
return
static Float:Velocity[3]; pev(Ent, pev_velocity, Velocity)
if(!vector_length(Velocity))
{
pev(Ent, pev_angles, Velocity)
if(Velocity[0] > 0.0)
{
Velocity[0] -= 10.0
if(Velocity[0] < 0.0)
{
Velocity[0] = 0.0
}
set_pev(Ent, pev_angles, Velocity)
if(!Velocity[0]) engfunc(EngFunc_SetModel, Ent, PACKAGE_MODEL)
}
}
set_pev(Ent, pev_nextthink, get_gametime() + 0.1)
}
public fw_Supplybox_Touch(Ent, id)
{
if(!pev_valid(Ent))
return FMRES_IGNORED
if(!is_user_alive(id) || !(cs_get_user_team(id) & SUPPLYBOX_TEAM))
return FMRES_IGNORED
// Effect & Sound
//emit_sound(Id, CHAN_VOICE, SupplyBox_PickupSounds[random_num(0, sizeof(SupplyBox_PickupSounds) - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
SupplyBox_GiveItem(id)
engfunc(EngFunc_RemoveEntity, Ent)
return FMRES_IGNORED
}
public SupplyBox_GiveItem(const id)
{
new iRandomNum = random_num(1, 20);
switch(iRandomNum)
{
case 1: give_item(id, "weapon_ak47");
case 2: give_item(id, "weapon_m4a1");
case 3: give_item(id, "weapon_awp");
case 4: give_item(id, "weapon_deagle");
case 5: give_item(id, "weapon_usp");
case 6: set_user_health(id, get_user_health(id) + 25);
case 7: set_user_health(id, get_user_health(id) + 50);
case 8: cs_set_user_armor(id, cs_get_user_armor(id) + 50, CS_ARMOR_VESTHELM);
case 9: cs_set_user_armor(id, cs_get_user_armor(id) + 100, CS_ARMOR_VESTHELM);
case 10: set_user_gravity(id, 0.5);
case 11: set_user_gravity(id, 1.5);
case 12: set_user_maxspeed(id, 1.2);
case 13: set_user_maxspeed(id, 0.8);
case 14: give_item(id, "weapon_scout");
case 15: give_item(id, "weapon_mp5navy");
case 16: give_item(id, "weapon_p90");
case 17: give_item(id, "weapon_galil");
case 18: give_item(id, "weapon_famas");
case 19: give_item(id, "weapon_hegrenade");
case 20: give_item(id, "weapon_flashbang");
}
}
public Aim_To2(iEnt, Float:vTargetOrigin[3])
{
if(!pev_valid(iEnt))
return
static Float:Vec[3], Float:Angles[3]
pev(iEnt, pev_origin, Vec)
Vec[0] = vTargetOrigin[0] - Vec[0]
Vec[1] = vTargetOrigin[1] - Vec[1]
Vec[2] = vTargetOrigin[2] - Vec[2]
engfunc(EngFunc_VecToAngles, Vec, Angles)
//Angles[0] = Angles[2] = 0.0
set_pev(iEnt, pev_v_angle, Angles)
set_pev(iEnt, pev_angles, Angles)
}
public Set_EntAnim(ent, anim, Float:framerate, resetframe)
{
if(!pev_valid(ent))
return
if(!resetframe)
{
if(pev(ent, pev_sequence) != anim)
{
set_pev(ent, pev_animtime, get_gametime())
set_pev(ent, pev_framerate, framerate)
set_pev(ent, pev_sequence, anim)
}
} else {
set_pev(ent, pev_animtime, get_gametime())
set_pev(ent, pev_framerate, framerate)
set_pev(ent, pev_sequence, anim)
}
}
public hook_ent2(ent, Float:VicOrigin[3], Float:speed)
{
if(!pev_valid(ent))
return
static Float:fl_Velocity[3], Float:EntOrigin[3], Float:distance_f, Float:fl_Time
pev(ent, pev_origin, EntOrigin)
distance_f = get_distance_f(EntOrigin, VicOrigin)
fl_Time = distance_f / speed
fl_Velocity[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
fl_Velocity[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
set_pev(ent, pev_velocity, fl_Velocity)
}
public PlaySound(id, const sound[])
{
if(equal(sound[strlen(sound)-4], ".mp3")) client_cmd(id, "mp3 play ^"sound/%s^"", sound)
else client_cmd(id, "spk ^"%s^"", sound)
}
//######################################################################
// SPAWNS POINTS
//######################################################################
// ===================== SPAWN MAIN MENU =====================
public spawn_main(id)
{
// create menu
new title[64], item_name[5][64]
format(title, charsmax(title), "[AirSupply] Spawn Editor (%i/%i)", g_total_spawns, MAX_SPAWNS)
format(item_name[0], 63, "Add Path")
format(item_name[2], 63, "Save Path")
//format(item_name[3], 63, "Load Path")
//format(item_name[4], 63, "Delete Path")
new mHandleID = menu_create(title, "spawn_main_handler")
menu_additem(mHandleID, item_name[0], "add", 0)
menu_additem(mHandleID, item_name[2], "save", 0)
//menu_additem(mHandleID, item_name[3], "load", 0)
//menu_additem(mHandleID, item_name[4], "del", 0)
menu_display(id, mHandleID, 0)
}
public spawn_main_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
// destroy menu
menu_destroy(menu)
// show menu main
return;
}
new itemid[32], itemname[32], access
menu_item_getinfo(menu, item, access, itemid, charsmax(itemid), itemname, charsmax(itemname), access)
menu_destroy(menu)
if (equal(itemid, "add"))
{
spawn_create(id)
return;
}
else if (equal(itemid, "save")) spawn_save()
//else if (equal(itemid, "load")) spawn_load()
//else if (equal(itemid, "del")) spawn_del(1)
// show main menu
spawn_main(id)
}
// ===================== spawn create =====================
public spawn_create(id)
{
// create menu
new title[64], item_name[3][64]
format(title, charsmax(title), "[AirSupply] Path Adding (%i/%i)", g_total_spawns, MAX_SPAWNS)
format(item_name[0], 63, "Add Start")
format(item_name[1], 63, "Add End")
//format(item_name[2], 63, "Delete")
new mHandleID = menu_create(title, "spawn_create_handler")
menu_additem(mHandleID, item_name[0], "add", 0)
menu_additem(mHandleID, item_name[1], "add_boss", 0)
//menu_additem(mHandleID, item_name[2], "del", 0)
menu_display(id, mHandleID, 0)
}
public spawn_create_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
// destroy menu
menu_destroy(menu)
// show menu main
spawn_main(id)
return;
}
new itemid[32], itemname[32], access
menu_item_getinfo(menu, item, access, itemid, charsmax(itemid), itemname, charsmax(itemname), access)
menu_destroy(menu)
if (equali(itemid, "add")) spawn_create_add(id)
else if (equali(itemid, "add_boss")) spawn_create_add(id, 1)
//else if (equali(itemid, "del")) spawn_del()
// return menu create spawns
spawn_create(id)
return;
}
spawn_create_add(id, end=0)
{
// check max points
if (g_total_spawns>=MAX_SPAWNS)
{
new message[128]
format(message, charsmax(message), ">x04[AirSupply] >x01Max spawn = %i", MAX_SPAWNS)
color_saytext(id, message)
return;
}
// add current points
new Float:originF[3], origin[3]
pev(id, pev_origin, originF)
origin[0] = floatround(originF[0])
origin[1] = floatround(originF[1])
origin[2] = floatround(originF[2])
if (!is_point(origin) || !spawn_check_dist(originF))
{
new message[128]
format(message, charsmax(message), ">x04[AirSupply] >x01Too closer...")
color_saytext(id, message)
return;
}
if(!end)
{
g_spawns[g_total_spawns][0] = origin[0]
g_spawns[g_total_spawns][1] = origin[1]
g_spawns[g_total_spawns][2] = origin[2]
} else {
g_spawns2[g_total_spawns][0] = origin[0]
g_spawns2[g_total_spawns][1] = origin[1]
g_spawns2[g_total_spawns][2] = origin[2]
g_total_spawns ++
}
}
// ===================== spawn save =====================
spawn_save()
{
// check total
if (!g_total_spawns)
{
new message[128]
format(message, charsmax(message), ">x04[AirSupply] >x01No spawn found")
color_saytext(0, message)
return;
}
// get url file
new cfgdir[32], mapname[32], urlfile[64]
get_configsdir(cfgdir, charsmax(cfgdir))
get_mapname(mapname, charsmax(mapname))
formatex(urlfile, charsmax(urlfile), SPAWNS_URL, cfgdir, mapname)
// save file
if (file_exists(urlfile)) delete_file(urlfile)
new lineset[128]
for (new i=0; i<g_total_spawns; i++)
{
if (!g_spawns[i][0] && !g_spawns[i][1] && !g_spawns[i][2] && !g_spawns2[i][0] && !g_spawns2[i][1] && !g_spawns2[i][2]) break;
format(lineset, charsmax(lineset), "%i %i %i %i %i %i", g_spawns[i][0], g_spawns[i][1], g_spawns[i][2], g_spawns2[i][0], g_spawns2[i][1], g_spawns2[i][2])
write_file(urlfile, lineset, i)
}
// show notice
new message[128]
format(message, charsmax(message), ">x04[AirSupply] >x01Save Completed")
color_saytext(0, message)
}
// ===================== spawn load =====================
spawn_load()
{
// Check for spawns points of the current map
new cfgdir[32], mapname[32], filepath[100], linedata[64], point[6], smallpoint[3]
get_configsdir(cfgdir, charsmax(cfgdir))
get_mapname(mapname, charsmax(mapname))
formatex(filepath, charsmax(filepath), SPAWNS_URL, cfgdir, mapname)
// check file exit
if (!file_exists(filepath))
{
//new message[128]
//format(message, charsmax(message), ">x04[AirSupply] >x01File doesnt exist (%s)", filepath)
//color_saytext(0, message)
return;
}
// first reset value
reset_spawn()
// Load spawns points
new file = fopen(filepath,"rt"), row[6][6]
while (file && !feof(file))
{
fgets(file, linedata, charsmax(linedata))
// invalid spawn
if(!linedata[0] || str_count(linedata,' ') < 2) continue;
// get spawn point data
parse(linedata,row[0],5,row[1],5,row[2],5,row[3],5,row[4],5,row[5],5)
// set spawnst
point[0] = smallpoint[0] = str_to_num(row[0])
point[1] = smallpoint[1] = str_to_num(row[1])
point[2] = smallpoint[2] = str_to_num(row[2])
point[3] = str_to_num(row[3])
point[4] = str_to_num(row[4])
point[5] = str_to_num(row[5])
if (is_point(smallpoint))
{
g_spawns[g_total_spawns][0] = point[0]
g_spawns[g_total_spawns][1] = point[1]
g_spawns[g_total_spawns][2] = point[2]
g_spawns2[g_total_spawns][0] = point[3]
g_spawns2[g_total_spawns][1] = point[4]
g_spawns2[g_total_spawns][2] = point[5]
// increase spawn count
g_total_spawns ++
if (g_total_spawns>=MAX_SPAWNS) break;
}
}
if (file) fclose(file)
// notice
if (g_total_spawns)
{
//new message[128]
//format(message, charsmax(message), ">x04[AirSupply] >x01Load Completed (%i)", g_total_spawns)
//color_saytext(0, message)
}
}
// ===================== other function =====================
spawn_check_dist(Float:origin[3], point=-1)
{
new Float:originE[3], Float:origin1[3], Float:origin2[3]
for (new i=0; i<g_total_spawns; i++)
{
if (i==point) continue;
originE[0] = float(g_spawns[i][0])
originE[1] = float(g_spawns[i][1])
originE[2] = float(g_spawns[i][2])
// xoy
origin1 = origin
origin2 = originE
origin1[2] = origin2[2] = 0.0
if (vector_distance(origin1, origin2)<=2*16.0)
{
// oz
origin1 = origin
origin2 = originE
origin1[0] = origin2[0] = origin1[1] = origin2[1] = 0.0
if (vector_distance(origin1, origin2)<=100.0) return 0;
}
}
return 1;
}
color_saytext(player, const message[], any:...)
{
new text[256]
format(text, charsmax(text), "%s",message)
format(text, charsmax(text), "%s",check_text(text))
new dest
if (player) dest = MSG_ONE
else dest = MSG_ALL
message_begin(dest, get_user_msgid("SayText"), {0,0,0}, player)
write_byte(1)
write_string(text)
message_end()
}
is_point(point[3])
{
if (!point[0] && !point[1] && !point[2]) return 0
return 1
}
reset_spawn(t=0)
{
for (new s=0; s<MAX_SPAWNS; s++)
{
for (new i=0; i<3; i++)
{
g_spawns[s][i] = 0
}
}
if (!t) g_total_spawns = 0
}
check_text(text1[])
{
new text[256]
format(text, charsmax(text), "%s", text1)
replace_all(text, charsmax(text), ">x04", "^x04")
replace_all(text, charsmax(text), ">x03", "^x03")
replace_all(text, charsmax(text), ">x01", "^x01")
return text
}
str_count(const str[], searchchar)
{
new count, i, len = strlen(str)
for (i = 0; i <= len; i++)
{
if(str[i] == searchchar)
count++
}
return count;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1042\\ f0\\ fs16 \n\\ par }
*/
Steam: Tıkla
Benzer Konular
Yorum
19.718
Okunma
10-01-2023, 20:21
Yorum
24.265
Okunma
02-05-2022, 12:03
Yorum
27.025
Okunma
31-10-2021, 13:58