Poder de Agua?
#1

Hola soy yo otra vez, espero que esten bien, tengo una duda. He visto este codigo:

Код:
#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));
}
Que es para dar puсetazos de fuego, luego de escribir /fire. їExiste alguna posibilidad aunque sea la mas minima que en vez de fuego lance agua?

Agradezco sus respuestas.
Reply
#2

si, cambia el objeto del fuego por uno de agua. ---> 18742

saludos.

EDIT: ah... pero el tuyo no son objetos, son CreateExplosion.. deberas sacarlos a los CreateExplosion y crear el objeto en vez de la explosion.

Reply
#3

Oye amigo muchas gracias, y donde puedo ver mas objetos asi?
Reply
#4

Quote:
Originally Posted by scualito
Посмотреть сообщение
Oye amigo muchas gracias, y donde puedo ver mas objetos asi?
https://sampwiki.blast.hk/wiki/Objects_0...rticle_Effects
busca por water = agua
Reply
#5

No encuentro donde cambiarlo
Reply
#6

aca te dice un code mas entendible, el poder 2 ... kise hacer otra cosa y me salio eso :P XDD
pruebalo y editado a tu manera.

Saludos.


pawn Код:
/*
    * ## 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.
*/
Reply
#7

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
Reply
#8

Quote:
Originally Posted by scualito
Посмотреть сообщение
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
lo pimero no se puede, lo ke puedes hacer es colocarte la vida a un valor alto haciendote inmortal ya ke tardaran en bajarte la vida, utiliza SetPlayerHealth. https://sampwiki.blast.hk/wiki/SetPlayerHealth

y para lo segundo puede guierte con este comando:

pawn Код:
#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;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)