As requested
here
Requirements:
-----------------------------------------------------------------
- SDKHooks 2.0+
- If you are using one of these mod:
- Zombie:Reloaded r647+
- or
- Zombie:Riot
-----------------------------------------------------------------
Decription:
-----------------------------------------------------------------
- Plants a laser mine to the wall to kill players
-----------------------------------------------------------------
Console Variables:
-----------------------------------------------------------------
- ZombieMod:
- zr_lasermines_enable (zriot_lasermines_enable) - On/off switcher
- zr_lasermines_amount (zriot_lasermines_amount) - The amount to give laser mines to a player each spawn (only if buy mode is disabled, -1 = Infinity)
- zr_lasermines_maxamount (zriot_lasermines_maxamount) - The maximum amount of laser mines a player can carry. (0-Unlimited)
- zr_lasermines_damage (zriot_lasermines_damage) - The damage to deal to a player by the laser
- zr_lasermines_explode_damage (zriot_lasermines_explode_damage) - The damage to deal to a player when a laser mine breaks
- zr_lasermines_explode_radius (zriot_lasermines_explode_radius) - The radius of the explosion
- zr_lasermines_health (zriot_lasermines_health) - The laser mines health. 0 = never breaked
- zr_lasermines_activatetime (zriot_lasermines_activatetime) - The delay of laser mines' activation
- zr_lasermines_buymode (zriot_lasermines_buymode) - Enables buy mode. In this mode you will have to buy mines
- zr_lasermines_buyzone (zriot_lasermines_buyzone) - Whether a player have to stay in buy zone to buy mines
- zr_lasermines_price (zriot_lasermines_price) - The price of the laser mines
- zr_lasermines_color (zriot_lasermines_color) - The laser's color. Set by RGB
- zr_lasermines_allow_pickup (zriot_lasermines_allow_pickup) - Allow players to pickup their planted lasermines
- zr_lasermines_allow_friendly_pickup (zriot_lasermines_friendly_pickup) - Allow allies to pickup your planted lasermines
-----------------------------------------------------------------
- Public:
- sm_lasermines_enable - On/off switcher
- sm_lasermines_amount - The amount to give laser mines to a player each spawn (only if buy mode is disabled, -1 = Infinity)
- sm_lasermines_maxamount - The maximum amount of laser mines a player can carry. (0-Unlimited)
- sm_lasermines_damage - The damage to deal to a player by the laser
- sm_lasermines_explode_damage - The damage to deal to a player when a laser mine breaks
- sm_lasermines_explode_radius - The radius of the explosion
- sm_lasermines_health - The laser mines health. 0 = never breaked
- sm_lasermines_activatetime - The delay of laser mines' activation
- sm_lasermines_buymode - Enables buy mode. In this mode you will have to buy mines
- sm_lasermines_buyzone - Whether a player have to stay in buy zone to buy mines
- sm_lasermines_price - The price of the laser mines
- sm_lasermines_color_t - Terrorist's color. Set by RGB
- sm_lasermines_color_ct - Counter-Terrorist's color. Set by RGB
- sm_lasermines_allow_pickup - Allow players to pickup their planted lasermines
- sm_lasermines_allow_friendly_pickup - Allow players to pickup allies planted lasermines
- sm_lasermines_allow_enemy_pickup - Allow players to pickup enemys planted lasermines
Also public plugin obeys console variable mp_friendlyfire
-----------------------------------------------------------------
Translations available:
-----------------------------------------------------------------
-----------------------------------------------------------------
Console Commands:
-----------------------------------------------------------------
- sm_buylm <amount or nothing> - To buy mines
- sm_blm <amount or nothing> - To buy mines
- sm_bm <amount or nothing> - To buy mines
- sm_plantlm - To plant a laser mine
- sm_plm - To plant a laser mine
- sm_lm - To plant a laser mine
-----------------------------------------------------------------
For developers:
-----------------------------------------------------------------
Public plugin:
PHP Code:
/**
* Adds one or more remaining laser mines to the player
*
* @param client Client index to add to
* @param amount Amount of laser mines to add.
* @param uselimit Set to true to use the plugin limitation, false to ignore
* @return New amount of laser mines. 0 if no lasermines added and -1 if the player has unlimited lasermines
*/
native AddClientLasermines(client, amount = 1, bool:uselimit = true);
/**
* Sets the player's amount of the remaining laser mines
*
* @param client Client index to set to
* @param amount Amount of laser mines to set. Negative numbers to set to infinity, 0 - to remove all and positive number to set to the amount
* @param uselimit Set to true to use the plugin limitation, false to ignore
* @return true on success, false otherwise
*/
native bool:SetClientLasermines(client, amount, bool:uselimit = true);
/**
* Subtracts one or more remaining lasermines from the player
*
* @param client Client index to substract from
* @param amount Amount of laser mines to substract.
* @return new amount of laser mines
*/
native SubClientLasermines(client, amount = 1);
/**
* Returns number of remaining laser mines a player has.
*
* @param client Client index to get from
* @return number of remaining laser mines.
*/
native GetClientLasermines(client);
/**
* Foces a player to plant laser mine without substracting his amount. Does not call OnPlantLasermine
*
* @param client Client index to force to
* @param activation_delay The activation time
* @param explosion_damage Explosion damage
* @param explosion_radius Explosion radius
* @param health The laser mine's health. 0 = Unbreakable
* @param color The laser mine's color.
* @return true on success, false otherwise
*/
native bool:PlantClientLasermine(client, Float:activation_delay = 2.0, explosion_damage = 100, explosion_radius = 300, health = 0, color[3] = {255, 255, 255});
/**
* Clears the map from the player's laser mines
*
* @param client Client index to clear
* @noreturn
*/
native ClearMapClientLasermines(client);
/**
* Checks whether the entity is a lasermine
*
* @param entity Entity index to check
* @return True if the entity is a lasermine, false otherwise
*/
native bool:IsEntityLasermine(entity);
/**
* Gets client index by the lasermine
*
* @param client Entity index to get the owner for
* @return Client index or -1 if no client found
*/
native GetClientByLasermine(entity);
/**
* Sets client max amount of lasermines
*
* @param client Client index to set for
* @param amount The max amount to set
* @noreturn
*/
native SetClientMaxLasermines(client, amount);
/**
* Gets beam index by the lasermine
*
* @param client The lasermine index to get the beam for
* @return Beam index or -1 if no beam found
*/
native GetBeamByLasermine(entity);
/**
* Gets lasermine index by the beam
*
* @param client The beam index to get the lasermine for
* @return Lasermine index or -1 if no lasermine found
*/
native GetLasermineByBeam(entity);
/**
* Called when the player is about to buy a laser mine
*
* @param client Client index of the player who is buying a laser mine
* @param amount The amount of laser mines a player is going to buy. Set by reference
* @param price The laser mine price. Set by reference
* @return Plugin_Changed to apply new values, Plugin_Contninue to allow buy as is and >= Plugin_Handled to block the operation
*/
forward Action:OnPreBuyLasermine(client, &amount, &price);
/**
* Called when a player has bought a laser mine
*
* @param victim Client index of the player who has bought
* @param amount The amount of laser mines have been bought
* @param amount The sum of money the player cost
* @noreturn
*/
forward OnPostBuyLasermine(client, amount, sum);
/**
* Called when the player is about to plant a laser mine
*
* @param client Client index of the player
* @param act_delay Activation time. Set by reference
* @param explosion_damage Explosion damage. Set by reference
* @param explosion_radius Explosion radius. Set by reference
* @param health The laser mine's health. Set by reference
* @param color[3] The laser mine's color. Set by reference
* @return Plugin_Changed to apply new values, Plugin_Contninue to allow the planting as is and >= Plugin_Handled to block the planting
*/
forward Action:OnPlantLasermine(client, &Float:act_delay, &exp_damage, &exp_radius, &health, color[3]);
/**
* Called when the player planted a laser mine
*
* @param act_delay Activation time
* @param lasermine The lasermine index
* @param explosion_damage Explosion damage
* @param explosion_radius Explosion radius
* @param health The laser mine's health
* @param color[3] The laser mine's color
* @noreturn
*/
forward OnLaserminePlanted(client, lasermine, Float:act_delay, exp_damage, exp_radius, health, color[3]);
/**
* Called when the player is about to be hitted by a laser mine
*
* @param victim Client index of the player who is being hitted
* @param attacker The owner index of the laser mine. Set by reference
* @param beam The beam index which is going to inflict the victim. Set by reference
* @param lasermine The lasermine index which is going to inflict the victim. Set by reference
* @param damage Damage of the hit. Set by reference
* @return Plugin_Changed to apply new values, Plugin_Contninue to allow the hit as is and >= Plugin_Handled to block the hit
*/
forward Action:OnPreHitByLasermine(victim, &attacker, &beam, &lasermine, &damage);
/**
* Called when the player has been hitted by a laser mine
*
* @param victim Client index of the player who has been hitted
* @param attacker The owner index of the laser mine
* @param beam The beam index which has inflicted the victim
* @param lasermine The lasermine index which has inflicted the victim
* @param damage Damage of the hit
* @noreturn
*/
forward OnPostHitByLasermine(victim, attacker, beam, lasermine, damage);
/**
* Called when the player is about to pickup a lasermine
*
* @param client Client index of the player who is going to pickup
* @param lasermine Lasermine index which is being picked up
* @param owner The lasermine's owner index.
* @return Plugin_Contninue or Plugin_Changed to allow the pickup and Plugin_Handled or Plugin_Stop to block the pickup
*/
forward Action:OnPrePickupLasermine(client, lasermine, owner);
/**
* Called when the player has picked up a lasermine
*
* @param client Client index of the player who has picked up a lasermine
* @param lasermine Lasermine index which was picked up
* @param owner The lasermine's owner index
* @noeturn
*/
forward OnPostPickupLasermine(client, lasermine, owner);
Zombie:Reloaded plugin:
PHP Code:
/**
* Adds one or more remaining laser mines to the player
*
* @param client Client index to add to
* @param amount Amount of laser mines to add.
* @param uselimit Set to true to use the plugin limitation, false to ignore
* @return New amount of laser mines. 0 if no lasermines added and -1 if the player has unlimited lasermines
*/
native ZR_AddClientLasermines(client, amount = 1, bool:uselimit = true);
/**
* Sets the player's amount of the remaining laser mines
*
* @param client Client index to set to
* @param amount Amount of laser mines to set. Negative numbers to set to infinity, 0 - to remove all and positive number to set to the amount
* @param uselimit Set to true to use the plugin limitation, false to ignore
* @return true on success, false otherwise
*/
native bool:ZR_SetClientLasermines(client, amount, bool:uselimit = true);
/**
* Subtracts one or more remaining lasermines from the player
*
* @param client Client index to substract from
* @param amount Amount of laser mines to substract.
* @return new amount of laser mines
*/
native ZR_SubClientLasermines(client, amount = 1);
/**
* Returns number of remaining laser mines a player has.
*
* @param client Client index to get from
* @return number of remaining laser mines.
*/
native ZR_GetClientLasermines(client);
/**
* Foces a player to plant laser mine without substracting his amount. Does not call ZR_OnPlantLasermine
*
* @param client Client index to force to
* @param activation_delay The activation time
* @param explosion_damage Explosion damage
* @param explosion_radius Explosion radius
* @param health The laser mine's health. 0 = Unbreakable
* @param color The laser mine's color.
* @return true on success, false otherwise
*/
native bool:ZR_PlantClientLasermine(client, Float:activation_delay = 2.0, explosion_damage = 100, explosion_radius = 300, health = 0, color[3] = {255, 255, 255});
/**
* Clears the map from the player's laser mines
*
* @param client Client index to clear
* @noreturn
*/
native ZR_ClearMapClientLasermines(client);
/**
* Checks whether the entity is a lasermine
*
* @param entity Entity index to check
* @return True if the entity is a lasermine, false otherwise
*/
native bool:ZR_IsEntityLasermine(entity);
/**
* Gets client index by the lasermine
*
* @param client Entity index to get the owner for
* @return Client index or -1 if no client found
*/
native ZR_GetClientByLasermine(entity);
/**
* Sets client max amount of lasermines
*
* @param client Client index to set for
* @param amount The max amount to set
* @noreturn
*/
native ZR_SetClientMaxLasermines(client, amount);
/**
* Gets beam index by the lasermine
*
* @param client The lasermine index to get the beam for
* @return Beam index or -1 if no beam found
*/
native ZR_GetBeamByLasermine(entity);
/**
* Gets lasermine index by the beam
*
* @param client The beam index to get the lasermine for
* @return Lasermine index or -1 if no lasermine found
*/
native ZR_GetLasermineByBeam(entity);
/**
* Called when the player is about to buy a laser mine
*
* @param client Client index of the player who is buying a laser mine
* @param amount The amount of laser mines a player is going to buy. Set by reference
* @param price The laser mine price. Set by reference
* @return Plugin_Changed to apply new values, Plugin_Contninue to allow buy as is and >= Plugin_Handled to block the operation
*/
forward Action:ZR_OnPreBuyLasermine(client, &amount, &price);
/**
* Called when a player has bought a laser mine
*
* @param victim Client index of the player who has bought
* @param amount The amount of laser mines have been bought
* @param amount The sum of money the player cost
* @noreturn
*/
forward ZR_OnPostBuyLasermine(client, amount, sum);
/**
* Called when the player is about to plant a laser mine
*
* @param client Client index of the player
* @param act_delay Activation time. Set by reference
* @param explosion_damage Explosion damage. Set by reference
* @param explosion_radius Explosion radius. Set by reference
* @param health The laser mine's health. Set by reference
* @param color[3] The laser mine's color. Set by reference
* @return Plugin_Changed to apply new values, Plugin_Contninue to allow the planting as is and >= Plugin_Handled to block the planting
*/
forward Action:ZR_OnPlantLasermine(client, &Float:act_delay, &exp_damage, &exp_radius, &health, color[3]);
/**
* Called when the player planted a laser mine
*
* @param act_delay Activation time
* @param lasermine The lasermine index
* @param explosion_damage Explosion damage
* @param explosion_radius Explosion radius
* @param health The laser mine's health
* @param color[3] The laser mine's color
* @noreturn
*/
forward ZR_OnLaserminePlanted(client, lasermine, Float:act_delay, exp_damage, exp_radius, health, color[3]);
/**
* Called when the player is about to be hitted by a laser mine
*
* @param victim Client index of the player who is being hitted
* @param attacker The owner index of the laser mine. Set by reference
* @param beam The beam index which is going to inflict the victim. Set by reference
* @param lasermine The lasermine index which is going to inflict the victim. Set by reference
* @param damage Damage of the hit. Set by reference
* @return Plugin_Changed to apply new values, Plugin_Contninue to allow the hit as is and >= Plugin_Handled to block the hit
*/
forward Action:ZR_OnPreHitByLasermine(victim, &attacker, &beam, &lasermine, &damage);
/**
* Called when the player has been hitted by a laser mine
*
* @param victim Client index of the player who has been hitted
* @param attacker The owner index of the laser mine
* @param beam The beam index which has inflicted the victim
* @param lasermine The lasermine index which has inflicted the victim
* @param damage Damage of the hit
* @noreturn
*/
forward ZR_OnPostHitByLasermine(victim, attacker, beam, lasermine, damage);
/**
* Called when the player is about to pickup a lasermine
*
* @param client Client index of the player who is going to pickup
* @param lasermine Lasermine index which is being picked up
* @param owner The lasermine's owner index.
* @return Plugin_Contninue or Plugin_Changed to allow the pickup and Plugin_Handled or Plugin_Stop to block the pickup
*/
forward Action:ZR_OnPrePickupLasermine(client, lasermine, owner);
/**
* Called when the player has picked up a lasermine
*
* @param client Client index of the player who has picked up a lasermine
* @param lasermine Lasermine index which was picked up
* @param owner The lasermine's owner index
* @noeturn
*/
forward ZR_OnPostPickupLasermine(client, lasermine, owner);
Zombie Riot plugin:
PHP Code:
/**
* Adds one or more remaining laser mines to the player
*
* @param client Client index to add to
* @param amount Amount of laser mines to add.
* @param uselimit Set to true to use the plugin limitation, false to ignore
* @return New amount of laser mines. 0 if no lasermines added and -1 if the player has unlimited lasermines
*/
native ZRiot_AddClientLasermines(client, amount = 1, bool:uselimit = true);
/**
* Sets the player's amount of the remaining laser mines
*
* @param client Client index to set to
* @param amount Amount of laser mines to set. Negative numbers to set to infinity, 0 - to remove all and positive number to set to the amount
* @param uselimit Set to true to use the plugin limitation, false to ignore
* @return true on success, false otherwise
*/
native bool:ZRiot_SetClientLasermines(client, amount, bool:uselimit = true);
/**
* Subtracts one or more remaining lasermines from the player
*
* @param client Client index to substract from
* @param amount Amount of laser mines to substract.
* @return new amount of laser mines
*/
native ZRiot_SubClientLasermines(client, amount = 1);
/**
* Returns number of remaining laser mines a player has.
*
* @param client Client index to get from
* @return number of remaining laser mines.
*/
native ZRiot_GetClientLasermines(client);
/**
* Foces a player to plant laser mine without substracting his amount. Does not call ZRiot_OnPlantLasermine
*
* @param client Client index to force to
* @param activation_delay The activation time
* @param explosion_damage Explosion damage
* @param explosion_radius Explosion radius
* @param health The laser mine's health. 0 = Unbreakable
* @param color The laser mine's color.
* @return true on success, false otherwise
*/
native bool:ZRiot_PlantClientLasermine(client, Float:activation_delay = 2.0, explosion_damage = 100, explosion_radius = 300, health = 0, color[3] = {255, 255, 255});
/**
* Clears the map from the player's laser mines
*
* @param client Client index to clear
* @noreturn
*/
native ZRiot_ClearMapClientLasermines(client);
/**
* Checks whether the entity is a lasermine
*
* @param entity Entity index to check
* @return True if the entity is a lasermine, false otherwise
*/
native bool:ZRiot_IsEntityLasermine(entity);
/**
* Gets client index by the lasermine
*
* @param client Entity index to get the owner for
* @return Client index or -1 if no client found
*/
native ZRiot_GetClientByLasermine(entity);
/**
* Sets client max amount of lasermines
*
* @param client Client index to set for
* @param amount The max amount to set
* @noreturn
*/
native ZRiot_SetClientMaxLasermines(client, amount);
/**
* Gets beam index by the lasermine
*
* @param client The lasermine index to get the beam for
* @return Beam index or -1 if no beam found
*/
native ZRiot_GetBeamByLasermine(entity);
/**
* Gets lasermine index by the beam
*
* @param client The beam index to get the lasermine for
* @return Lasermine index or -1 if no lasermine found
*/
native ZRiot_GetLasermineByBeam(entity);
/**
* Called when the player is about to buy a laser mine
*
* @param client Client index of the player who is buying a laser mine
* @param amount The amount of laser mines a player is going to buy. Set by reference
* @param price The laser mine price. Set by reference
* @return Plugin_Changed to apply new values, Plugin_Contninue to allow buy as is and >= Plugin_Handled to block the operation
*/
forward Action:ZRiot_OnPreBuyLasermine(client, &amount, &price);
/**
* Called when a player has bought a laser mine
*
* @param victim Client index of the player who has bought
* @param amount The amount of laser mines have been bought
* @param amount The sum of money the player cost
* @noreturn
*/
forward ZRiot_OnPostBuyLasermine(client, amount, sum);
/**
* Called when the player is about to plant a laser mine
*
* @param client Client index of the player
* @param act_delay Activation time. Set by reference
* @param explosion_damage Explosion damage. Set by reference
* @param explosion_radius Explosion radius. Set by reference
* @param health The laser mine's health. Set by reference
* @param color[3] The laser mine's color. Set by reference
* @return Plugin_Changed to apply new values, Plugin_Contninue to allow the planting as is and >= Plugin_Handled to block the planting
*/
forward Action:ZRiot_OnPlantLasermine(client, &Float:act_delay, &exp_damage, &exp_radius, &health, color[3]);
/**
* Called when the player planted a laser mine
*
* @param act_delay Activation time
* @param lasermine The lasermine index
* @param explosion_damage Explosion damage
* @param explosion_radius Explosion radius
* @param health The laser mine's health
* @param color[3] The laser mine's color
* @noreturn
*/
forward ZRiot_OnLaserminePlanted(client, lasermine, Float:act_delay, exp_damage, exp_radius, health, color[3]);
/**
* Called when the player is about to be hitted by a laser mine
*
* @param victim Client index of the player who is being hitted
* @param attacker The owner index of the laser mine. Set by reference
* @param beam The beam index which is going to inflict the victim. Set by reference
* @param lasermine The lasermine index which is going to inflict the victim. Set by reference
* @param damage Damage of the hit. Set by reference
* @return Plugin_Changed to apply new values, Plugin_Contninue to allow the hit as is and >= Plugin_Handled to block the hit
*/
forward Action:ZRiot_OnPreHitByLasermine(victim, &attacker, &beam, &lasermine, &damage);
/**
* Called when the player has been hitted by a laser mine
*
* @param victim Client index of the player who has been hitted
* @param attacker The owner index of the laser mine
* @param beam The beam index which has inflicted the victim
* @param lasermine The lasermine index which has inflicted the victim
* @param damage Damage of the hit
* @noreturn
*/
forward ZRiot_OnPostHitByLasermine(victim, attacker, beam, lasermine, damage);
/**
* Called when the player is about to pickup a lasermine
*
* @param client Client index of the player who is going to pickup
* @param lasermine Lasermine index which is being picked up
* @param owner The lasermine's owner index.
* @return Plugin_Contninue or Plugin_Changed to allow the pickup and Plugin_Handled or Plugin_Stop to block the pickup
*/
forward Action:ZRiot_OnPrePickupLasermine(client, lasermine, owner);
/**
* Called when the player has picked up a lasermine
*
* @param client Client index of the player who has picked up a lasermine
* @param lasermine Lasermine index which was picked up
* @param owner The lasermine's owner index
* @noeturn
*/
forward ZRiot_OnPostPickupLasermine(client, lasermine, owner);
-----------------------------------------------------------------
Installation instruction:
-----------------------------------------------------------------
- Download the arhive with the prefix mod you are intending to play and extract to the sourcemod folder
- ZombieMod:
- Download zr_lasermines.txt and put it to the sourcemod/translations folder
Public:
- Download lasermines.phrases.txt and put it to the sourcemod/translations folder
-----------------------------------------------------------------
Changelog:
-----------------------------------------------------------------
ZombieMod:
Code:
Version 1.1
- Fixed the unbreakable mine function
- Added german translation
Version 1.2
- Added 2 new cvars zr_lasermines_explode_damage (zriot_lasermines_explode_damage) and zr_lasermines_explode_radius (zriot_lasermines_explode_damage)
- Added natives and forwards for developers
- Added hitting mines with a knife
Version 1.3
- Some fixes on natives and forwards
Version 1.4
- Added an ability to pickup lasermines
- Updated natives and forwards
- Added 2 new cvars for the pickup control
- Added new natives
- Added forwards for the pickup control
- Code cleanup
Version 1.4.1
Version 1.4.2
Public:
Code:
Version 1.1
- Added 2 new cvars sm_lasermines_explode_damage and sm_lasermines_explode_radius
- Added german translation
Version 1.2
- Fixed the unbreakable mine function
- Added natives and forwards for developers
- Added hitting mines with a knife
Version 1.3
- Some fixes on natives and forwards
Version 1.4
- Added an ability to pickup lasermines
- Updated natives and forwards
- Added 3 new cvars for the pickup control
- Added new natives
- Added forwards for the pickup control
- Code cleanup
Version 1.4.1
Version 1.4.2
-----------------------------------------------------------------
Modules:
-----------------------------------------------------------------
Lasermines Battery v1.1
Admin Lasermines
No Speed Loose
-----------------------------------------------------------------