Mensajes: 32
Temas: 15
Registro en: May 2020
Reputación:
0
Código PHP: if (model[9] == 'h' && model[10] == 'e') { if (g_DrugBomb[owner] > 0 && !zp_get_user_zombie(owner)) { g_DrugBomb[owner]--; set_rendering(entity, kRenderFxGlowShell, g_GlowColor[0], g_GlowColor[1], g_GlowColor[2], kRenderNormal, 16); message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_BEAMFOLLOW); write_short(entity); write_short(g_TrailSpr); write_byte(30); write_byte(10); write_byte(g_GlowColor[0]); write_byte(g_GlowColor[1]); write_byte(g_GlowColor[2]); write_byte(200); message_end(); set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_DRUG); engfunc(EngFunc_SetModel, entity, W_Model); //entity_set_model(entity, W_Model); return FMRES_SUPERCEDE; } }
Código PHP: L 06/07/2022 - 01:28:39: [AMXX] Run time error 5: memory access L 06/07/2022 - 01:28:39: [AMXX] [0] px_extra_human_drug.sma::fw_SetModel (line 289)
Mensajes: 248
Temas: 12
Registro en: Nov 2013
Reputación:
1
09/06/2022, 09:55 PM
(Última modificación: 09/06/2022, 10:00 PM por 3mcy daimon't. Edited 1 time in total.)
asi lo tengo yo y funciona perfecto, compara y edita y si aun no te sirve es otra funcion que te genera el problema
Código PHP: if (bbc_granadas[pev(entity, pev_owner)][DROGA]) { fm_set_rendering(entity, kRenderFxGlowShell, 250, 0, 250, kRenderNormal, 16); message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BEAMFOLLOW) write_short(entity) write_short(g_trail) write_byte(10) write_byte(10) write_byte(250) write_byte(0) write_byte(250) write_byte(200) message_end() set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_DROGA) entity_set_model(entity, "models/bb_chile/w_droga.mdl") return FMRES_SUPERCEDE; }
puedes mirar tambien los plugin de bomba droga que hay por el foro, si aun asi te falla tendras que dejar todo el code para ver bien y poder ayudarte
Mensajes: 32
Temas: 15
Registro en: May 2020
Reputación:
0
Código PHP: #include <amxmodx> #include <cstrike> #include <engine> #include <fakemeta> #include <fun> #include <hamsandwich> #include <private/px_zombie_escape>
new const NOMBRE[] = "[PX] Extra: DRUG BOMB"; new const VERSION[] = "1.0"; new const CREADOR[] = "BhK-";
new const Prefix[] = "^4[PX]";
new const Name_Item[] = "Bomba de Droga";
const PEV_NADE_TYPE = pev_flTimeStepSound; const NADE_TYPE_DRUG = 5678;
const Float:NADE_EXPLOSION_RADIUS = 240.0;
const UNIT_SECOND = (1<<12);
const OFFSET_PDATA = 2; const OFFSET_LINUX_WEAPONS = 4; const OFFSET_WEAPON_OWNER = 41;
new g_TrailSpr, g_exploSpr, g_exploSpr2; new g_ItemID; new g_msgScreenFade, g_msgScreenShake, g_msgAmmoPickup; new g_EndRound;
new g_IsAlive[33]; new g_DrugBomb[33]; new g_HasDrug[33]; new g_GlowColorId[33][3]; new g_FX_RenderId[33]; new g_RenderModeId[33]; new g_AmountId[33];
const MAX_TEXT = 20; new g_Message_Print[MAX_TEXT]; new g_GlowColor[3];
new g_pcvar_DrugLastZombie; new g_pcvar_DrugNemesis; new g_pcvar_DrugTime; new g_pcvar_DrugDamage; new g_pcvar_Drug_Attack; new g_pcvar_DrugLimit; new g_pcvar_Print; new g_pcvar_Message; new g_pcvar_GlowColor; new g_pcvar_ScreenFade; new g_pcvar_ScreenShake;
new g_DrugLastZombie, g_DrugNemesis, g_DrugTime, g_DrugDamage, g_Drug_Attack, g_DrugLimit, g_Print, g_ScreenFade, g_ScreenShake;
/*****************************************************/ /* CUSTOMIZATION */ /*****************************************************/
new const V_Model[] = "models/px_escape/weapons/v_drug_grenade.mdl"; new const P_Model[] = "models/px_escape/weapons/p_drug_grenade.mdl"; new const W_Model[] = "models/px_escape/weapons/w_drug_grenade.mdl"; new const Sprite_Grenade_Trail[] = "sprites/laserbeam.spr"; new const Sprite_Grenade_Explode[] = "sprites/shockwave.spr"; new const Sprite_Grenade_Particles[] = "sprites/tflare.spr";
new const Grenade_DrugBomb[][] = { "px_escape/grenade_infect.wav" }; new const Zombie_Pain[][] = { "px_escape/gameplay/zombi_hurt_01.wav", "px_escape/gameplay/zombi_hurt_02.wav" };
new const Sound_Buyammo[] = "items/9mmclip1.wav";
const Item_Cost = 30;
#define TASK_DRUG 789123 #define ID_DRUG (taskID - TASK_DRUG)
/*****************************************************/ /* END CUSTOMIZATION */ /*****************************************************/ public plugin_precache() { new i; g_TrailSpr = precache_model(Sprite_Grenade_Trail); g_exploSpr = precache_model(Sprite_Grenade_Explode); g_exploSpr2 = precache_model(Sprite_Grenade_Particles); precache_model(V_Model); precache_model(W_Model); precache_model(P_Model); for (i = 0; i < sizeof(Grenade_DrugBomb); ++i) { precache_sound(Grenade_DrugBomb[i]); } for (i = 0; i < sizeof(Zombie_Pain); ++i) { precache_sound(Zombie_Pain[i]); } precache_sound(Sound_Buyammo); }
public plugin_init() { register_plugin(NOMBRE, VERSION, CREADOR); RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1); RegisterHam(Ham_Killed, "player", "fw_PlayerKilled"); RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade"); RegisterHam(Ham_Item_Deploy, "weapon_hegrenade", "fw_Item_Deploy_Post", 1); register_forward(FM_SetModel, "fw_SetModel"); register_forward(FM_CmdStart, "fw_CmdStart"); register_event("HLTV", "event_round_start", "a", "1=0", "2=0"); register_logevent("logevent_round_end", 2, "1=Round_End"); g_ItemID = px_register_extra_item(Name_Item, Item_Cost, ZP_TEAM_HUMAN); g_pcvar_DrugLastZombie = register_cvar("zp_drug_lastzm", "1"); // Activa/desactiva la posibilidad de drogar al ultimo zombie vivo [0 = No || 1 = Si][Defecto 0] g_pcvar_DrugNemesis = register_cvar("zp_drug_nemesis", "1"); // Activa/desactiva la posibilidad de drogar a los Nemesis [0 = No || 1 = Si][Defecto 0] g_pcvar_DrugTime = register_cvar("zp_drug_time", "8"); // Cantidad de veces que drogara a la victima [Defecto 8] g_pcvar_DrugDamage = register_cvar("zp_drug_damage", "0"); // Define un porcentaje de danio que le sacara del total de vida que posea la victima [Defecto 7] g_pcvar_Drug_Attack = register_cvar("zp_drug_attack", "0"); // Define la posibilidad de atacar mientras estas drogado [0 = Sí || 1 = No ataca || 2 = Le saca el Knife][Defecto 2] g_pcvar_DrugLimit = register_cvar("zp_drug_limit", "1"); // Define un limite de compra de bomba, hasta que se agoten [Defecto 3] g_pcvar_Print = register_cvar("zp_print_dhud", "1"); // Elige el estilo del mensaje que aparecera en pantalla [0 = DHUD || 1 = Print Center][Defecto 1] g_pcvar_Message = register_cvar("zp_message_print", "Você está drogado")// Mensaje que aparecera en pantalla [Defecto "ESTAS DROGADO"] g_pcvar_GlowColor = register_cvar("zp_glow_color", "0 250 180"); // Elige el color del trail y glow de la bomba. Ejemplo amx_glow_color "255 255 255" (Color blanco) g_pcvar_ScreenFade = register_cvar("zp_screenfade", "1"); // Activa/desactiva el efecto ScreenFade [0 = No || 1 = Si][Defecto 1] g_pcvar_ScreenShake = register_cvar("zp_screenshake", "1"); // Activa/desactiva el efecto ScreenShake [0 = No || 1 = Si][Defecto 1] g_msgAmmoPickup = get_user_msgid("AmmoPickup"); g_msgScreenFade = get_user_msgid("ScreenFade"); g_msgScreenShake = get_user_msgid("ScreenShake"); loadCVARs(); }
public event_round_start() { g_EndRound = false; loadCVARs(); } public logevent_round_end() { g_EndRound = true; }
loadCVARs() { // Color de trail y glow de la bomba (CVAR "amx_print_dhud") new szColors[20]; new szRed[4]; new szGreen[4]; new szBlue[4]; get_pcvar_string(g_pcvar_GlowColor, szColors, charsmax(szColors)); parse(szColors, szRed, charsmax(szRed), szGreen, charsmax(szGreen), szBlue, charsmax(szBlue)); g_GlowColor[0] = clamp(str_to_num(szRed), 0, 255); g_GlowColor[1] = clamp(str_to_num(szGreen), 0, 255); g_GlowColor[2] = clamp(str_to_num(szBlue), 0, 255); // Mensaje que aparecera en pantalla (CVAR "amx_message_print") new szMessage[MAX_TEXT]; get_pcvar_string(g_pcvar_Message, szMessage, charsmax(szMessage)); g_Message_Print = szMessage; // Revisar MAX_TEXT // Guardo 9 CVARs g_DrugLastZombie = get_pcvar_num(g_pcvar_DrugLastZombie); g_DrugNemesis = get_pcvar_num(g_pcvar_DrugNemesis); g_DrugTime = get_pcvar_num(g_pcvar_DrugTime); g_DrugDamage = get_pcvar_num(g_pcvar_DrugDamage); g_Drug_Attack = get_pcvar_num(g_pcvar_Drug_Attack); g_DrugLimit = get_pcvar_num(g_pcvar_DrugLimit); g_Print = get_pcvar_num(g_pcvar_Print); g_ScreenFade = get_pcvar_num(g_pcvar_ScreenFade); g_ScreenShake = get_pcvar_num(g_pcvar_ScreenShake); }
public client_disconnected(id) { remove_task(id+TASK_DRUG); }
public zp_extra_item_selected(Player, ItemID) { if (ItemID == g_ItemID) { if (g_DrugBomb[Player] >= g_DrugLimit) { client_print_color(Player, print_team_default, "%s ^1Você só pode carregar %d ^4%s ^1equipada%s", Prefix, g_DrugLimit, Name_Item, g_DrugLimit == 1 ? "" : "s"); return ZP_PLUGIN_HANDLED; } new weaponbp; weaponbp = cs_get_user_bpammo(Player, CSW_HEGRENADE); g_DrugBomb[Player]++; if (!user_has_weapon(Player, CSW_HEGRENADE)) { give_item(Player, "weapon_hegrenade"); } else { cs_set_user_bpammo(Player, CSW_HEGRENADE, weaponbp + 1); message_begin(MSG_ONE_UNRELIABLE, g_msgAmmoPickup, _, Player); write_byte(1); write_byte(1); message_end(); emit_sound(Player, CHAN_ITEM, Sound_Buyammo, 1.0, ATTN_NORM, 0, PITCH_NORM); } //client_print_color(Player, print_team_default, "%s ^1Você comprou uma ^4%s", Prefix, Name_Item); } return PLUGIN_HANDLED; }
public fw_CmdStart(id, handle) { if (!g_IsAlive[id]) { return; } static iButton; iButton = get_uc(handle, UC_Buttons); if (g_HasDrug[id] > 0 && g_Drug_Attack == 1) { if (iButton & IN_ATTACK || iButton & IN_ATTACK2) { set_uc(handle, UC_Buttons, (iButton & ~IN_ATTACK & ~IN_ATTACK2)); } } }
public fw_PlayerSpawn_Post(id) { if (!is_user_alive(id)) { return; } g_IsAlive[id] = true; g_HasDrug[id] = 0; g_GlowColorId[id][0] = 0; remove_task(id+TASK_DRUG); }
public fw_PlayerKilled(victim, attacker, shouldgib) { g_IsAlive[victim] = false; g_DrugBomb[victim] = false; g_HasDrug[victim] = 0; g_GlowColorId[victim][0] = 0; if (task_exists(victim+TASK_DRUG)) { remove_task(victim+TASK_DRUG); set_rendering(victim); } }
public fw_ThinkGrenade(entity) { if (!pev_valid(entity)) { return HAM_IGNORED; } static Float:dmgtime, Float:current_time; pev(entity, pev_dmgtime, dmgtime); current_time = get_gametime(); if (dmgtime > current_time) { return HAM_IGNORED; } if (pev(entity, PEV_NADE_TYPE) == NADE_TYPE_DRUG) { Drug_Explode(entity); return HAM_SUPERCEDE; } return HAM_IGNORED; }
public fw_SetModel(entity, const model[]) { static Float:dmgtime; pev(entity, pev_dmgtime, dmgtime); if (dmgtime == 0.0) { return FMRES_IGNORED; } static owner; owner = pev(entity, pev_owner); //if (equal(model, "models/he_", 10)) /*if (model[9] == 'h' && model[10] == 'e') { if (g_DrugBomb[owner] > 0 && !zp_get_user_zombie(owner)) { g_DrugBomb[owner]--; set_rendering(entity, kRenderFxGlowShell, g_GlowColor[0], g_GlowColor[1], g_GlowColor[2], kRenderNormal, 16); message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_BEAMFOLLOW); write_short(entity); write_short(g_TrailSpr); write_byte(30); write_byte(10); write_byte(g_GlowColor[0]); write_byte(g_GlowColor[1]); write_byte(g_GlowColor[2]); write_byte(200); message_end(); set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_DRUG); engfunc(EngFunc_SetModel, entity, W_Model); //entity_set_model(entity, W_Model); return FMRES_SUPERCEDE; } }*/
if (bbc_granadas[pev(entity, pev_owner)][DROGA]) { fm_set_rendering(entity, kRenderFxGlowShell, 250, 0, 250, kRenderNormal, 16); message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BEAMFOLLOW) write_short(entity) write_short(g_trail) write_byte(10) write_byte(10) write_byte(250) write_byte(0) write_byte(250) write_byte(200) message_end() set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_DROGA) entity_set_model(entity, "models/bb_chile/w_droga.mdl") return FMRES_SUPERCEDE; } return FMRES_IGNORED; }
public fw_Item_Deploy_Post(__weaponEnt) { if(!pev_valid(__weaponEnt)) { return; } static id; id = fm_get_weapon_ent_owner(__weaponEnt); if(!pev_valid(id) || g_DrugBomb[id] < 1 || zp_get_user_zombie(id)) { return; } entity_set_string(id, EV_SZ_viewmodel, V_Model); entity_set_string(id, EV_SZ_weaponmodel, P_Model); }
/*****************************************************/ /* OTRAS FUNCIONES */ /*****************************************************/ public Drug_Explode(entity) { static Float:originF[3]; pev(entity, pev_origin, originF);
create_blast(originF); emit_sound(entity, CHAN_WEAPON, Grenade_DrugBomb[random_num(0, charsmax(Grenade_DrugBomb))], 1.0, ATTN_NORM, 0, PITCH_NORM); static victim; victim = -1; while ((victim = find_ent_in_sphere(victim, originF, NADE_EXPLOSION_RADIUS)) != 0) { Check_Victim(victim); } remove_entity(entity); }
public Check_Victim(victim) { if (!is_user_alive(victim) || !zp_get_user_zombie(victim) || g_EndRound) { return; } if ((zp_get_user_last_zombie(victim) && g_DrugLastZombie < 1) || (zp_get_user_nemesis(victim) && g_DrugNemesis < 1)) { return; } g_HasDrug[victim] += g_DrugTime; if (g_Drug_Attack == 2) { strip_user_weapons(victim); } if (!task_exists(victim+TASK_DRUG)) { set_task(0.7, "Effect_Drug", victim+TASK_DRUG, _, _, "b"); // Fix Bug para no ocacionar cruces entre renderizados. if (g_GlowColorId[victim][0] <= 0) { get_rendering(victim, g_FX_RenderId[victim], g_GlowColorId[victim][0], g_GlowColorId[victim][1], g_GlowColorId[victim][2], g_RenderModeId[victim], g_AmountId[victim]); } set_rendering(victim, kRenderFxGlowShell, g_GlowColor[0], g_GlowColor[1], g_GlowColor[2], kRenderNormal, 25); } }
public Effect_Drug(taskID) { if (g_EndRound || g_HasDrug[ID_DRUG] < 1 || !is_user_alive(ID_DRUG) || !zp_get_user_zombie(ID_DRUG) || (zp_get_user_last_zombie(ID_DRUG) && g_DrugLastZombie < 1) || (zp_get_user_nemesis(ID_DRUG) && g_DrugNemesis < 1)) { remove_task(taskID); g_HasDrug[ID_DRUG] = 0; set_rendering(ID_DRUG, g_FX_RenderId[ID_DRUG], g_GlowColorId[ID_DRUG][0], g_GlowColorId[ID_DRUG][1], g_GlowColorId[ID_DRUG][2], g_RenderModeId[ID_DRUG], g_AmountId[ID_DRUG]); g_GlowColorId[ID_DRUG][0] = 0; if (!user_has_weapon(ID_DRUG, CSW_KNIFE)) { give_item(ID_DRUG, "weapon_knife"); } return; } if (g_Print > 0) { set_dhudmessage(random_num(50, 200), random_num(50, 200), random_num(50, 200), -1.0, 0.40, 0, 0.0, 0.2, 0.2, 0.2); show_dhudmessage(ID_DRUG, "%s!", g_Message_Print); } else { client_print(ID_DRUG, print_center, "%s!", g_Message_Print); } if (g_DrugDamage) { static health, damage; health = get_user_health(ID_DRUG); damage = g_DrugDamage; if (health > 0 && (health * damage / 100)) { set_user_health(ID_DRUG, health - (health * damage / 100)); emit_sound(ID_DRUG, CHAN_WEAPON, Zombie_Pain[random_num(0, charsmax(Zombie_Pain))], 1.0, ATTN_NORM, 0, PITCH_NORM); } } if (g_ScreenFade > 0) { message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, ID_DRUG); write_short(UNIT_SECOND); write_short(0); write_short(0x0000); write_byte(random_num(50, 200)); write_byte(random_num(50, 200)); write_byte(random_num(50, 200)); write_byte(230); message_end(); } if (g_ScreenShake > 0) { message_begin(MSG_ONE_UNRELIABLE, g_msgScreenShake, _, ID_DRUG); write_short(UNIT_SECOND * random_num(3, 6)); write_short(UNIT_SECOND * random_num(2, 5)); write_short(UNIT_SECOND * random_num(10, 15)); message_end(); } static Float:vecDrug[3]; vecDrug[0] = random_float(-10.0, 150.0); vecDrug[1] = random_float(20.0, 200.0); vecDrug[2] = random_float(30.0, 250.0); entity_set_vector(ID_DRUG, EV_VEC_punchangle, vecDrug); g_HasDrug[ID_DRUG]--; }
create_blast(const Float:originF[3]) { engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0); write_byte(TE_BEAMCYLINDER); engfunc(EngFunc_WriteCoord, originF[0]); engfunc(EngFunc_WriteCoord, originF[1]); engfunc(EngFunc_WriteCoord, originF[2]); engfunc(EngFunc_WriteCoord, originF[0]); engfunc(EngFunc_WriteCoord, originF[1]); engfunc(EngFunc_WriteCoord, originF[2]+385.0); write_short(g_exploSpr); write_byte(0); write_byte(0); write_byte(4); write_byte(60); write_byte(0); write_byte(g_GlowColor[0]); write_byte(g_GlowColor[1]); write_byte(g_GlowColor[2]); write_byte(200); write_byte(0); message_end(); engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0); write_byte(TE_BEAMCYLINDER); engfunc(EngFunc_WriteCoord, originF[0]); engfunc(EngFunc_WriteCoord, originF[1]); engfunc(EngFunc_WriteCoord, originF[2]); engfunc(EngFunc_WriteCoord, originF[0]); engfunc(EngFunc_WriteCoord, originF[1]); engfunc(EngFunc_WriteCoord, originF[2]+470.0); write_short(g_exploSpr); write_byte(0); write_byte(0); write_byte(4); write_byte(60); write_byte(0); write_byte(g_GlowColor[0]); write_byte(g_GlowColor[1]); write_byte(g_GlowColor[2]); write_byte(200); write_byte(0); message_end(); engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0); write_byte(TE_BEAMCYLINDER); engfunc(EngFunc_WriteCoord, originF[0]); engfunc(EngFunc_WriteCoord, originF[1]); engfunc(EngFunc_WriteCoord, originF[2]); engfunc(EngFunc_WriteCoord, originF[0]); engfunc(EngFunc_WriteCoord, originF[1]); engfunc(EngFunc_WriteCoord, originF[2]+555.0); write_short(g_exploSpr); write_byte(0); write_byte(0); write_byte(4); write_byte(60); write_byte(0); write_byte(g_GlowColor[0]); write_byte(g_GlowColor[1]); write_byte(g_GlowColor[2]); write_byte(200); write_byte(0); message_end(); engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0); write_byte(TE_SPRITETRAIL); engfunc(EngFunc_WriteCoord, originF[0]); engfunc(EngFunc_WriteCoord, originF[1]); engfunc(EngFunc_WriteCoord, originF[2]); engfunc(EngFunc_WriteCoord, originF[0]); engfunc(EngFunc_WriteCoord, originF[1]); engfunc(EngFunc_WriteCoord, originF[2]); write_short(g_exploSpr2); write_byte(80); write_byte(8); write_byte(2); write_byte(random_num(50, 90)); write_byte(random_num(60, 100)); message_end(); }
/*****************************************************/ /* STOCKS */ /*****************************************************/ stock fm_get_weapon_ent_owner(ent) { if (pev_valid(ent) != OFFSET_PDATA) { return -1; } return get_pdata_cbase(ent, OFFSET_WEAPON_OWNER, OFFSET_LINUX_WEAPONS); } stock get_rendering(Index, &FX, &R, &G, &B, &Render, &Amount) { FX = entity_get_int(Index, EV_INT_renderfx); new Float:RenderColor[3]; entity_get_vector(Index, EV_VEC_rendercolor, RenderColor); R = floatround(RenderColor[0]); G = floatround(RenderColor[1]); B = floatround(RenderColor[2]); Render = entity_get_int(Index, EV_INT_rendermode); Amount = floatround(entity_get_float(Index, EV_FL_renderamt)); return 1; }
cambiar privado/px_zombie_escape.inc a zombieplague.inc
px_register_extra_item a zp_register_extra_item
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
new const CREADOR[] = "BhK-";
ni tu te la crees
Mensajes: 395
Temas: 48
Registro en: Oct 2018
Reputación:
6
12/06/2022, 06:32 PM
(Última modificación: 12/06/2022, 06:32 PM por [E]manuelitop15. Edited 1 time in total.)
(12/06/2022, 03:00 PM)ksm200 escribió: Código PHP: #include <private/px_zombie_escape>
new const NOMBRE[] = "[PX] Extra: DRUG BOMB"; new const VERSION[] = "1.0"; new const CREADOR[] = "BhK-";
rathina é fhilo da p...
___________________________________
SI NECESITAS UN PLUGIN TE LO HAGO $$$
COMUNICATE A MI DISCORD: emanuelitop15
Mensajes: 130
Temas: 56
Registro en: Mar 2021
Reputación:
0
como harian para que al comprarse furia el efecto desaparezca? existe una native en el zp para determinar cuando existe la furia? es el nodamage?
Mensajes: 248
Temas: 12
Registro en: Nov 2013
Reputación:
1
13/06/2022, 01:31 AM
(Última modificación: 13/06/2022, 01:44 AM por 3mcy daimon't. Edited 3 times in total.)
(12/06/2022, 03:00 PM)ksm200 escribió: Código PHP: #include <amxmodx> #include <cstrike> #include <engine> #include <fakemeta> #include <fun> #include <hamsandwich> #include <private/px_zombie_escape>
new const NOMBRE[] = "[PX] Extra: DRUG BOMB"; new const VERSION[] = "1.0"; new const CREADOR[] = "BhK-";
new const Prefix[] = "^4[PX]";
new const Name_Item[] = "Bomba de Droga";
const PEV_NADE_TYPE = pev_flTimeStepSound; const NADE_TYPE_DRUG = 5678;
const Float:NADE_EXPLOSION_RADIUS = 240.0;
const UNIT_SECOND = (1<<12);
const OFFSET_PDATA = 2; const OFFSET_LINUX_WEAPONS = 4; const OFFSET_WEAPON_OWNER = 41;
new g_TrailSpr, g_exploSpr, g_exploSpr2; new g_ItemID; new g_msgScreenFade, g_msgScreenShake, g_msgAmmoPickup; new g_EndRound;
new g_IsAlive[33]; new g_DrugBomb[33]; new g_HasDrug[33]; new g_GlowColorId[33][3]; new g_FX_RenderId[33]; new g_RenderModeId[33]; new g_AmountId[33];
const MAX_TEXT = 20; new g_Message_Print[MAX_TEXT]; new g_GlowColor[3];
new g_pcvar_DrugLastZombie; new g_pcvar_DrugNemesis; new g_pcvar_DrugTime; new g_pcvar_DrugDamage; new g_pcvar_Drug_Attack; new g_pcvar_DrugLimit; new g_pcvar_Print; new g_pcvar_Message; new g_pcvar_GlowColor; new g_pcvar_ScreenFade; new g_pcvar_ScreenShake;
new g_DrugLastZombie, g_DrugNemesis, g_DrugTime, g_DrugDamage, g_Drug_Attack, g_DrugLimit, g_Print, g_ScreenFade, g_ScreenShake;
/*****************************************************/ /* CUSTOMIZATION */ /*****************************************************/
new const V_Model[] = "models/px_escape/weapons/v_drug_grenade.mdl"; new const P_Model[] = "models/px_escape/weapons/p_drug_grenade.mdl"; new const W_Model[] = "models/px_escape/weapons/w_drug_grenade.mdl"; new const Sprite_Grenade_Trail[] = "sprites/laserbeam.spr"; new const Sprite_Grenade_Explode[] = "sprites/shockwave.spr"; new const Sprite_Grenade_Particles[] = "sprites/tflare.spr";
new const Grenade_DrugBomb[][] = { "px_escape/grenade_infect.wav" }; new const Zombie_Pain[][] = { "px_escape/gameplay/zombi_hurt_01.wav", "px_escape/gameplay/zombi_hurt_02.wav" };
new const Sound_Buyammo[] = "items/9mmclip1.wav";
const Item_Cost = 30;
#define TASK_DRUG 789123 #define ID_DRUG (taskID - TASK_DRUG)
/*****************************************************/ /* END CUSTOMIZATION */ /*****************************************************/ public plugin_precache() { new i; g_TrailSpr = precache_model(Sprite_Grenade_Trail); g_exploSpr = precache_model(Sprite_Grenade_Explode); g_exploSpr2 = precache_model(Sprite_Grenade_Particles); precache_model(V_Model); precache_model(W_Model); precache_model(P_Model); for (i = 0; i < sizeof(Grenade_DrugBomb); ++i) { precache_sound(Grenade_DrugBomb[i]); } for (i = 0; i < sizeof(Zombie_Pain); ++i) { precache_sound(Zombie_Pain[i]); } precache_sound(Sound_Buyammo); }
public plugin_init() { register_plugin(NOMBRE, VERSION, CREADOR); RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1); RegisterHam(Ham_Killed, "player", "fw_PlayerKilled"); RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade"); RegisterHam(Ham_Item_Deploy, "weapon_hegrenade", "fw_Item_Deploy_Post", 1); register_forward(FM_SetModel, "fw_SetModel"); register_forward(FM_CmdStart, "fw_CmdStart"); register_event("HLTV", "event_round_start", "a", "1=0", "2=0"); register_logevent("logevent_round_end", 2, "1=Round_End"); g_ItemID = px_register_extra_item(Name_Item, Item_Cost, ZP_TEAM_HUMAN); g_pcvar_DrugLastZombie = register_cvar("zp_drug_lastzm", "1"); // Activa/desactiva la posibilidad de drogar al ultimo zombie vivo [0 = No || 1 = Si][Defecto 0] g_pcvar_DrugNemesis = register_cvar("zp_drug_nemesis", "1"); // Activa/desactiva la posibilidad de drogar a los Nemesis [0 = No || 1 = Si][Defecto 0] g_pcvar_DrugTime = register_cvar("zp_drug_time", "8"); // Cantidad de veces que drogara a la victima [Defecto 8] g_pcvar_DrugDamage = register_cvar("zp_drug_damage", "0"); // Define un porcentaje de danio que le sacara del total de vida que posea la victima [Defecto 7] g_pcvar_Drug_Attack = register_cvar("zp_drug_attack", "0"); // Define la posibilidad de atacar mientras estas drogado [0 = Sí || 1 = No ataca || 2 = Le saca el Knife][Defecto 2] g_pcvar_DrugLimit = register_cvar("zp_drug_limit", "1"); // Define un limite de compra de bomba, hasta que se agoten [Defecto 3] g_pcvar_Print = register_cvar("zp_print_dhud", "1"); // Elige el estilo del mensaje que aparecera en pantalla [0 = DHUD || 1 = Print Center][Defecto 1] g_pcvar_Message = register_cvar("zp_message_print", "Você está drogado")// Mensaje que aparecera en pantalla [Defecto "ESTAS DROGADO"] g_pcvar_GlowColor = register_cvar("zp_glow_color", "0 250 180"); // Elige el color del trail y glow de la bomba. Ejemplo amx_glow_color "255 255 255" (Color blanco) g_pcvar_ScreenFade = register_cvar("zp_screenfade", "1"); // Activa/desactiva el efecto ScreenFade [0 = No || 1 = Si][Defecto 1] g_pcvar_ScreenShake = register_cvar("zp_screenshake", "1"); // Activa/desactiva el efecto ScreenShake [0 = No || 1 = Si][Defecto 1] g_msgAmmoPickup = get_user_msgid("AmmoPickup"); g_msgScreenFade = get_user_msgid("ScreenFade"); g_msgScreenShake = get_user_msgid("ScreenShake"); loadCVARs(); }
public event_round_start() { g_EndRound = false; loadCVARs(); } public logevent_round_end() { g_EndRound = true; }
loadCVARs() { // Color de trail y glow de la bomba (CVAR "amx_print_dhud") new szColors[20]; new szRed[4]; new szGreen[4]; new szBlue[4]; get_pcvar_string(g_pcvar_GlowColor, szColors, charsmax(szColors)); parse(szColors, szRed, charsmax(szRed), szGreen, charsmax(szGreen), szBlue, charsmax(szBlue)); g_GlowColor[0] = clamp(str_to_num(szRed), 0, 255); g_GlowColor[1] = clamp(str_to_num(szGreen), 0, 255); g_GlowColor[2] = clamp(str_to_num(szBlue), 0, 255); // Mensaje que aparecera en pantalla (CVAR "amx_message_print") new szMessage[MAX_TEXT]; get_pcvar_string(g_pcvar_Message, szMessage, charsmax(szMessage)); g_Message_Print = szMessage; // Revisar MAX_TEXT // Guardo 9 CVARs g_DrugLastZombie = get_pcvar_num(g_pcvar_DrugLastZombie); g_DrugNemesis = get_pcvar_num(g_pcvar_DrugNemesis); g_DrugTime = get_pcvar_num(g_pcvar_DrugTime); g_DrugDamage = get_pcvar_num(g_pcvar_DrugDamage); g_Drug_Attack = get_pcvar_num(g_pcvar_Drug_Attack); g_DrugLimit = get_pcvar_num(g_pcvar_DrugLimit); g_Print = get_pcvar_num(g_pcvar_Print); g_ScreenFade = get_pcvar_num(g_pcvar_ScreenFade); g_ScreenShake = get_pcvar_num(g_pcvar_ScreenShake); }
public client_disconnected(id) { remove_task(id+TASK_DRUG); }
public zp_extra_item_selected(Player, ItemID) { if (ItemID == g_ItemID) { if (g_DrugBomb[Player] >= g_DrugLimit) { client_print_color(Player, print_team_default, "%s ^1Você só pode carregar %d ^4%s ^1equipada%s", Prefix, g_DrugLimit, Name_Item, g_DrugLimit == 1 ? "" : "s"); return ZP_PLUGIN_HANDLED; } new weaponbp; weaponbp = cs_get_user_bpammo(Player, CSW_HEGRENADE); g_DrugBomb[Player]++; if (!user_has_weapon(Player, CSW_HEGRENADE)) { give_item(Player, "weapon_hegrenade"); } else { cs_set_user_bpammo(Player, CSW_HEGRENADE, weaponbp + 1); message_begin(MSG_ONE_UNRELIABLE, g_msgAmmoPickup, _, Player); write_byte(1); write_byte(1); message_end(); emit_sound(Player, CHAN_ITEM, Sound_Buyammo, 1.0, ATTN_NORM, 0, PITCH_NORM); } //client_print_color(Player, print_team_default, "%s ^1Você comprou uma ^4%s", Prefix, Name_Item); } return PLUGIN_HANDLED; }
public fw_CmdStart(id, handle) { if (!g_IsAlive[id]) { return; } static iButton; iButton = get_uc(handle, UC_Buttons); if (g_HasDrug[id] > 0 && g_Drug_Attack == 1) { if (iButton & IN_ATTACK || iButton & IN_ATTACK2) { set_uc(handle, UC_Buttons, (iButton & ~IN_ATTACK & ~IN_ATTACK2)); } } }
public fw_PlayerSpawn_Post(id) { if (!is_user_alive(id)) { return; } g_IsAlive[id] = true; g_HasDrug[id] = 0; g_GlowColorId[id][0] = 0; remove_task(id+TASK_DRUG); }
public fw_PlayerKilled(victim, attacker, shouldgib) { g_IsAlive[victim] = false; g_DrugBomb[victim] = false; g_HasDrug[victim] = 0; g_GlowColorId[victim][0] = 0; if (task_exists(victim+TASK_DRUG)) { remove_task(victim+TASK_DRUG); set_rendering(victim); } }
public fw_ThinkGrenade(entity) { if (!pev_valid(entity)) { return HAM_IGNORED; } static Float:dmgtime, Float:current_time; pev(entity, pev_dmgtime, dmgtime); current_time = get_gametime(); if (dmgtime > current_time) { return HAM_IGNORED; } if (pev(entity, PEV_NADE_TYPE) == NADE_TYPE_DRUG) { Drug_Explode(entity); return HAM_SUPERCEDE; } return HAM_IGNORED; }
public fw_SetModel(entity, const model[]) { static Float:dmgtime; pev(entity, pev_dmgtime, dmgtime); if (dmgtime == 0.0) { return FMRES_IGNORED; } static owner; owner = pev(entity, pev_owner); //if (equal(model, "models/he_", 10)) /*if (model[9] == 'h' && model[10] == 'e') { if (g_DrugBomb[owner] > 0 && !zp_get_user_zombie(owner)) { g_DrugBomb[owner]--; set_rendering(entity, kRenderFxGlowShell, g_GlowColor[0], g_GlowColor[1], g_GlowColor[2], kRenderNormal, 16); message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_BEAMFOLLOW); write_short(entity); write_short(g_TrailSpr); write_byte(30); write_byte(10); write_byte(g_GlowColor[0]); write_byte(g_GlowColor[1]); write_byte(g_GlowColor[2]); write_byte(200); message_end(); set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_DRUG); engfunc(EngFunc_SetModel, entity, W_Model); //entity_set_model(entity, W_Model); return FMRES_SUPERCEDE; } }*/
if (bbc_granadas[pev(entity, pev_owner)][DROGA]) { fm_set_rendering(entity, kRenderFxGlowShell, 250, 0, 250, kRenderNormal, 16); message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BEAMFOLLOW) write_short(entity) write_short(g_trail) write_byte(10) write_byte(10) write_byte(250) write_byte(0) write_byte(250) write_byte(200) message_end() set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_DROGA) entity_set_model(entity, "models/bb_chile/w_droga.mdl") return FMRES_SUPERCEDE; } return FMRES_IGNORED; }
public fw_Item_Deploy_Post(__weaponEnt) { if(!pev_valid(__weaponEnt)) { return; } static id; id = fm_get_weapon_ent_owner(__weaponEnt); if(!pev_valid(id) || g_DrugBomb[id] < 1 || zp_get_user_zombie(id)) { return; } entity_set_string(id, EV_SZ_viewmodel, V_Model); entity_set_string(id, EV_SZ_weaponmodel, P_Model); }
/*****************************************************/ /* OTRAS FUNCIONES */ /*****************************************************/ public Drug_Explode(entity) { static Float:originF[3]; pev(entity, pev_origin, originF);
create_blast(originF); emit_sound(entity, CHAN_WEAPON, Grenade_DrugBomb[random_num(0, charsmax(Grenade_DrugBomb))], 1.0, ATTN_NORM, 0, PITCH_NORM); static victim; victim = -1; while ((victim = find_ent_in_sphere(victim, originF, NADE_EXPLOSION_RADIUS)) != 0) { Check_Victim(victim); } remove_entity(entity); }
public Check_Victim(victim) { if (!is_user_alive(victim) || !zp_get_user_zombie(victim) || g_EndRound) { return; } if ((zp_get_user_last_zombie(victim) && g_DrugLastZombie < 1) || (zp_get_user_nemesis(victim) && g_DrugNemesis < 1)) { return; } g_HasDrug[victim] += g_DrugTime; if (g_Drug_Attack == 2) { strip_user_weapons(victim); } if (!task_exists(victim+TASK_DRUG)) { set_task(0.7, "Effect_Drug", victim+TASK_DRUG, _, _, "b"); // Fix Bug para no ocacionar cruces entre renderizados. if (g_GlowColorId[victim][0] <= 0) { get_rendering(victim, g_FX_RenderId[victim], g_GlowColorId[victim][0], g_GlowColorId[victim][1], g_GlowColorId[victim][2], g_RenderModeId[victim], g_AmountId[victim]); } set_rendering(victim, kRenderFxGlowShell, g_GlowColor[0], g_GlowColor[1], g_GlowColor[2], kRenderNormal, 25); } }
public Effect_Drug(taskID) { if (g_EndRound || g_HasDrug[ID_DRUG] < 1 || !is_user_alive(ID_DRUG) || !zp_get_user_zombie(ID_DRUG) || (zp_get_user_last_zombie(ID_DRUG) && g_DrugLastZombie < 1) || (zp_get_user_nemesis(ID_DRUG) && g_DrugNemesis < 1)) { remove_task(taskID); g_HasDrug[ID_DRUG] = 0; set_rendering(ID_DRUG, g_FX_RenderId[ID_DRUG], g_GlowColorId[ID_DRUG][0], g_GlowColorId[ID_DRUG][1], g_GlowColorId[ID_DRUG][2], g_RenderModeId[ID_DRUG], g_AmountId[ID_DRUG]); g_GlowColorId[ID_DRUG][0] = 0; if (!user_has_weapon(ID_DRUG, CSW_KNIFE)) { give_item(ID_DRUG, "weapon_knife"); } return; } if (g_Print > 0) { set_dhudmessage(random_num(50, 200), random_num(50, 200), random_num(50, 200), -1.0, 0.40, 0, 0.0, 0.2, 0.2, 0.2); show_dhudmessage(ID_DRUG, "%s!", g_Message_Print); } else { client_print(ID_DRUG, print_center, "%s!", g_Message_Print); } if (g_DrugDamage) { static health, damage; health = get_user_health(ID_DRUG); damage = g_DrugDamage; if (health > 0 && (health * damage / 100)) { set_user_health(ID_DRUG, health - (health * damage / 100)); emit_sound(ID_DRUG, CHAN_WEAPON, Zombie_Pain[random_num(0, charsmax(Zombie_Pain))], 1.0, ATTN_NORM, 0, PITCH_NORM); } } if (g_ScreenFade > 0) { message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, ID_DRUG); write_short(UNIT_SECOND); write_short(0); write_short(0x0000); write_byte(random_num(50, 200)); write_byte(random_num(50, 200)); write_byte(random_num(50, 200)); write_byte(230); message_end(); } if (g_ScreenShake > 0) { message_begin(MSG_ONE_UNRELIABLE, g_msgScreenShake, _, ID_DRUG); write_short(UNIT_SECOND * random_num(3, 6)); write_short(UNIT_SECOND * random_num(2, 5)); write_short(UNIT_SECOND * random_num(10, 15)); message_end(); } static Float:vecDrug[3]; vecDrug[0] = random_float(-10.0, 150.0); vecDrug[1] = random_float(20.0, 200.0); vecDrug[2] = random_float(30.0, 250.0); entity_set_vector(ID_DRUG, EV_VEC_punchangle, vecDrug); g_HasDrug[ID_DRUG]--; }
create_blast(const Float:originF[3]) { engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0); write_byte(TE_BEAMCYLINDER); engfunc(EngFunc_WriteCoord, originF[0]); engfunc(EngFunc_WriteCoord, originF[1]); engfunc(EngFunc_WriteCoord, originF[2]); engfunc(EngFunc_WriteCoord, originF[0]); engfunc(EngFunc_WriteCoord, originF[1]); engfunc(EngFunc_WriteCoord, originF[2]+385.0); write_short(g_exploSpr); write_byte(0); write_byte(0); write_byte(4); write_byte(60); write_byte(0); write_byte(g_GlowColor[0]); write_byte(g_GlowColor[1]); write_byte(g_GlowColor[2]); write_byte(200); write_byte(0); message_end(); engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0); write_byte(TE_BEAMCYLINDER); engfunc(EngFunc_WriteCoord, originF[0]); engfunc(EngFunc_WriteCoord, originF[1]); engfunc(EngFunc_WriteCoord, originF[2]); engfunc(EngFunc_WriteCoord, originF[0]); engfunc(EngFunc_WriteCoord, originF[1]); engfunc(EngFunc_WriteCoord, originF[2]+470.0); write_short(g_exploSpr); write_byte(0); write_byte(0); write_byte(4); write_byte(60); write_byte(0); write_byte(g_GlowColor[0]); write_byte(g_GlowColor[1]); write_byte(g_GlowColor[2]); write_byte(200); write_byte(0); message_end(); engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0); write_byte(TE_BEAMCYLINDER); engfunc(EngFunc_WriteCoord, originF[0]); engfunc(EngFunc_WriteCoord, originF[1]); engfunc(EngFunc_WriteCoord, originF[2]); engfunc(EngFunc_WriteCoord, originF[0]); engfunc(EngFunc_WriteCoord, originF[1]); engfunc(EngFunc_WriteCoord, originF[2]+555.0); write_short(g_exploSpr); write_byte(0); write_byte(0); write_byte(4); write_byte(60); write_byte(0); write_byte(g_GlowColor[0]); write_byte(g_GlowColor[1]); write_byte(g_GlowColor[2]); write_byte(200); write_byte(0); message_end(); engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0); write_byte(TE_SPRITETRAIL); engfunc(EngFunc_WriteCoord, originF[0]); engfunc(EngFunc_WriteCoord, originF[1]); engfunc(EngFunc_WriteCoord, originF[2]); engfunc(EngFunc_WriteCoord, originF[0]); engfunc(EngFunc_WriteCoord, originF[1]); engfunc(EngFunc_WriteCoord, originF[2]); write_short(g_exploSpr2); write_byte(80); write_byte(8); write_byte(2); write_byte(random_num(50, 90)); write_byte(random_num(60, 100)); message_end(); }
/*****************************************************/ /* STOCKS */ /*****************************************************/ stock fm_get_weapon_ent_owner(ent) { if (pev_valid(ent) != OFFSET_PDATA) { return -1; } return get_pdata_cbase(ent, OFFSET_WEAPON_OWNER, OFFSET_LINUX_WEAPONS); } stock get_rendering(Index, &FX, &R, &G, &B, &Render, &Amount) { FX = entity_get_int(Index, EV_INT_renderfx); new Float:RenderColor[3]; entity_get_vector(Index, EV_VEC_rendercolor, RenderColor); R = floatround(RenderColor[0]); G = floatround(RenderColor[1]); B = floatround(RenderColor[2]); Render = entity_get_int(Index, EV_INT_rendermode); Amount = floatround(entity_get_float(Index, EV_FL_renderamt)); return 1; }
cambiar privado/px_zombie_escape.inc a zombieplague.inc
px_register_extra_item a zp_register_extra_item
te voy a decir 3 cosas en buena bro...
la primera: se nota que no tienes idea de lo que haces, solo te di un ejemplo, tu debes adaptar tal como te pase no sirve.
la segunda: empieza por cosas mas faciles como primero que nada conocer los conceptos basicos del pawn
y 3 era (dejando de lado lo del autor): me sangraron los ojos al ver ese plugin...
EDIT: para mas encima nisiquiera copiaste y pegaste bien ese codigo, te falta agregarle funciones, en fin un asco...
aqui esta el original de federicomb; (el que publicaste tu es una copia asquerosa)
https://amxmodx-es.com/Thread-Bomba-de-droga
compara el plugin de ese post con el "tuyo" y edita para que funcione mas no podemos hacer por ti.
Mensajes: 2,600
Temas: 33
Registro en: Oct 2013
Reputación:
36
13/06/2022, 06:38 AM
(Última modificación: 13/06/2022, 06:38 AM por RauliTop.)
(12/06/2022, 06:36 PM)aramayo123 escribió: como harian para que al comprarse furia el efecto desaparezca? existe una native en el zp para determinar cuando existe la furia? es el nodamage?
Sí, pero la native no te va a servir de nada ahí.
Lo que necesitarías es una forward.
Tendrás que usar la forward que tiene de compra de items y chequear que el item sea la furia
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
|