#include <a_samp>
/*POWER FIRE by BRICS*/
#define POWER_FIRE_ENABLED_TEXT "The power of fire enabled. Using the power-fire - punch"
#define ERROR_1 "You already have the power-fire"
#define MESS_1 "You do not own a power-fire"
#define FIRE_TIMER_INTERVAL 80
#define FIRE_POWER_SOUND 1039
#define FIRE_START_DIST 13.0
#define FIRE_FINAL_DIST 90.0
#define FIRE_NEXT_DIST 3.0
#define Explosion_Rad 5
#define Explosion_Type 1
#define FIRE_CMD "/fire"
#define PLAYER_DAMAGE_DIST 1.5
#define VEH_DAMAGE_DIST 4.0
/*Code*/
new S[MAX_PLAYERS] = -1;
new Fires[MAX_PLAYERS];
new Float: dist[MAX_PLAYERS]/* = 100.0*/;
new Timer[MAX_PLAYERS];
new Float: PEX[3][MAX_PLAYERS];
new Float: P[4][MAX_PLAYERS];
forward Fireman(playerid);
public OnFilterScriptInit()
{
print(" Fire-Power by BRICS loaded.");
for(new i; i < GetMaxPlayers(); i++)S[i] = -1;
return 1;
}
public OnFilterScriptExit()
{
for(new i; i < GetMaxPlayers(); i++)KillTimer(Timer[i]);
print(" Fire-Power by BRICS unloaded.");
return 1;
}
public OnPlayerConnect(playerid)
{
S[playerid] = -1;
Fires[playerid] = 0;
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(FIRE_CMD, cmdtext, true, 10) == 0)
{
if(S[playerid] > -1)return SendClientMessage(playerid,-1,ERROR_1);
S[playerid] = 1;
Fires[playerid] = 5;
SendClientMessage(playerid,-1,POWER_FIRE_ENABLED_TEXT);
return 1;
}
return 0;
}
public Fireman(playerid)
{
if(dist[playerid] >= FIRE_FINAL_DIST)
{
KillTimer(Timer[playerid]);
//dist[playerid] = 100.0;
if(Fires[playerid] == 0)
{
S[playerid] = -1;
SendClientMessage(playerid,-1,MESS_1);
return 1;
}
S[playerid] = 1;
return 1;
}
GetXYInFrontOfPoint(P[0][playerid],P[1][playerid], PEX[0][playerid], PEX[1][playerid], P[3][playerid], dist[playerid]);
CreateExplosion(PEX[0][playerid],PEX[1][playerid],P[2][playerid],Explosion_Type,Explosion_Rad);
for(new i; i < GetMaxPlayers(); i ++)
{
if(!IsPlayerConnected(i))continue;
if(GetPlayerDistanceFromPoint(i,PEX[0][playerid],PEX[1][playerid],P[2][playerid]) < PLAYER_DAMAGE_DIST)
{
new Float:hp;
GetPlayerHealth(i,hp);
if(hp <= 0)continue;
SetPlayerHealth(i,-1);
}
}
for(new v; v < MAX_VEHICLES; v ++)
{
if(GetVehicleDistanceFromPoint(v,PEX[0][playerid],PEX[1][playerid],P[2][playerid]) <= VEH_DAMAGE_DIST)SetVehicleHealth(v,0);
}
dist[playerid] += FIRE_NEXT_DIST;
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_FIRE)
{
if(GetPlayerWeapon(playerid) != 0)return 1;
if(S[playerid] == -1 ||S[playerid] == 0)return 1;
if(IsPlayerInAnyVehicle(playerid))return 1;
dist[playerid] = FIRE_START_DIST;
GetPlayerPos(playerid,P[0][playerid],P[1][playerid],P[2][playerid]);
GetPlayerFacingAngle(playerid,P[3][playerid]);
Timer[playerid] = SetTimerEx("Fireman",FIRE_TIMER_INTERVAL,1,"d",playerid);
S[playerid] = 0;
Fires[playerid] --;
PlayerPlaySound(playerid,FIRE_POWER_SOUND,0,0,0);
}
return 1;
}
stock GetXYInFrontOfPoint(Float:x, Float:y, &Float:x2, &Float:y2, Float:A, Float:distance)
{
x2 = x + (distance * floatsin(-A, degrees));
y2 = y + (distance * floatcos(-A, degrees));
}
/*
* ## LEASE ATENTAMENTE PARA NO CONVERTIRSE EN LAMMER!!.: :D ##
*
* Estи Simple FILTERSCRIPT esta hecho especialmente para http://www.forum.sa-mp.com
* NO Publicar estи FILTERSCRIPT en Otros foros de SA-MP y hacerse pasar por el creador del CODE.
*
* Codigo Creado Por OTACON
*
* CREDITOS:
* OTACON: Realizacion y Idea de creacion del code.
* TЩ: Modificacion libremente respetando lo mencionado ;).
*
* NOTA: Menos Creditos para los que me los critican.. JO'PUTAS! :D xD ;)
*
* Prohibido TOTALMENTE el Robo de Crйditos o la
* Publicaciуn de este FILTERSCRIPT sin Mi Permiso.
*/
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#define CALLBACK:%0(%1) forward%0(%1); public%0(%1)
#define pressed(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
#define released(%0) (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
#define EFECTO_GOLPE (1)
#define EFECTO_LINEA (2)
#define OBJETO_EFECTO_LINEA (18739)
#define OBJETO_EFECTO_GOLPE (18742)
#define DISTANCIA_OBJETO 5.0
new ObjetosEfectoGolpe,
ObjetosEfectoLinea[6],
bool:TiposEfectosActivos,
TiposEfectos;
CALLBACK: OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
if(pressed(KEY_FIRE) && GetPlayerState(playerid)==PLAYER_STATE_ONFOOT && TiposEfectosActivos==true) {
new Float:pos[4];
GetPlayerFacingAngle(playerid,pos[0]);
GetPlayerPos(playerid,pos[1],pos[2],pos[3]);
pos[1] = pos[1] + (DISTANCIA_OBJETO * floatsin(-pos[0], degrees));
pos[2] = pos[2] + (DISTANCIA_OBJETO * floatcos(-pos[0], degrees));
switch(TiposEfectos) {
case EFECTO_GOLPE: {
DestroyObject(ObjetosEfectoGolpe);
for(new index=0; index<6; index++) \
DestroyObject(ObjetosEfectoLinea[index]);
ObjetosEfectoGolpe=CreateObject(OBJETO_EFECTO_GOLPE, pos[1],pos[2],pos[3], 0.000,0.000,pos[0]);
}
case EFECTO_LINEA: {
DestroyObject(ObjetosEfectoGolpe);
for(new index=0; index<6; index++) \
DestroyObject(ObjetosEfectoLinea[index]);
ObjetosEfectoLinea[0]=CreateObject(OBJETO_EFECTO_LINEA, pos[1],pos[2],pos[3], 0.000,0.000,pos[0]);
ObjetosEfectoLinea[1]=CreateObject(OBJETO_EFECTO_LINEA, pos[1],pos[2],pos[3], 0.000,0.000,pos[0]);
ObjetosEfectoLinea[2]=CreateObject(OBJETO_EFECTO_LINEA, pos[1],pos[2],pos[3], 0.000,0.000,pos[0]);
ObjetosEfectoLinea[3]=CreateObject(OBJETO_EFECTO_LINEA, pos[1],pos[2],pos[3], 0.000,0.000,pos[0]);
ObjetosEfectoLinea[4]=CreateObject(OBJETO_EFECTO_LINEA, pos[1],pos[2],pos[3], 0.000,0.000,pos[0]);
}
}
}
if(released(KEY_FIRE) && GetPlayerState(playerid)==PLAYER_STATE_ONFOOT && TiposEfectosActivos==true || TiposEfectosActivos==false) {
switch(TiposEfectos) {
case EFECTO_GOLPE: {
DestroyObject(ObjetosEfectoGolpe);
for(new index=0; index<6; index++) \
DestroyObject(ObjetosEfectoLinea[index]);
}
case EFECTO_LINEA: {
DestroyObject(ObjetosEfectoGolpe);
for(new index=0; index<6; index++) \
DestroyObject(ObjetosEfectoLinea[index]);
}
}
} return true;
}
COMMAND:colocarefecto(playerid, params[]) {
if(!TiposEfectosActivos) return SendClientMessage(playerid,-1,"INFO: no se encuentra ningun efecto activado!.");
new texto[20], data[100];
if(GetPlayerState(playerid)!=PLAYER_STATE_ONFOOT) return false;
if(sscanf(params,"d",params[0])) return SendClientMessage(playerid,-1,"INFO: utiliza el comando /colocarefecto [opcion(1-EFECTO_GOLPE) (2-EFECTO_LINEA)]");
TiposEfectos=0;
TiposEfectos=params[0];
switch(TiposEfectos) {
case EFECTO_GOLPE: texto= "EFECTO_GOLPE";
case EFECTO_LINEA: texto= "EFECTO_LINEA"; }
format(data,sizeof(data),"INFO: haz colocado el efecto de puсo de agua: '%s'",texto);
SendClientMessage(playerid,-1,data);
return true;
}
COMMAND:activarefecto(playerid, params[]) {
switch(TiposEfectosActivos) {
case false: TiposEfectosActivos=true, SendClientMessage(playerid,-1,"INFO: efecto activado");
case true: TiposEfectosActivos=false, SendClientMessage(playerid,-1,"INFO: efecto desactivado"); }
return true;
}
/*
* ## LEASE ATENTAMENTE PARA NO CONVERTIRSE EN LAMMER!!.: :D ##
*
* Estи Simple FILTERSCRIPT esta hecho especialmente para http://www.forum.sa-mp.com
* NO Publicar estи FILTERSCRIPT en Otros foros de SA-MP y hacerse pasar por el creador del CODE.
*
* Codigo Creado Por OTACON
*
* CREDITOS:
* OTACON: Realizacion y Idea de creacion del code.
* TЩ: Modificacion libremente respetando lo mencionado ;).
*
* NOTA: Menos Creditos para los que me los critican.. JO'PUTAS! :D xD ;)
*
* Prohibido TOTALMENTE el Robo de Crйditos o la
* Publicaciуn de este FILTERSCRIPT sin Mi Permiso.
*/
|
Ahhh ya logre amigo muchas gracias antes de que te vayas o que se yo, guiame en 2 cositas mas xfa si no es mucha molestia, quiero saber si hay algun filter script para que nadie te pueda tocar, osea te traspasen y otro para hacer que aparezcan arboles asi como aparecen los carros... Pero que aparezcan arboles, no importa la cantidad amigo
|
#define ID_ARBOL (4444) //colocaselo tu...
#define MAX_ARBOLES (100)
new ObjetoArbol[MAX_ARBOLES},
ContandoArboles;
COMMAND:creararbol(playerid, params[]) {
if(ContandoArboles>MAX_ARBOLES-1) return false;
new Float:pos[4];
GetPlayerFacingAngle(playerid,pos[0]);
GetPlayerPos(playerid,pos[1],pos[2],pos[3]);
pos[1] = pos[1] + (5.0 * floatsin(-pos[0], degrees));
pos[2] = pos[2] + (5.0 * floatcos(-pos[0], degrees));
ContandoArboles++;
DestroyObject(ObjetoArbol[ContandoArboles});
ObjetoArbol[ContandoArboles}=CreateObject(ID_ARBOL, pos[1],pos[2],pos[3], 0.000,0.000,pos[0]);
return true;
}