#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;
}