[FilterScript] Sistema de daсos / fuerza (0.3z)
#1

Bueno, hace mбs de un aсo hice un sistema de daсos avanzado, el cual tiene el mismo funcionamiento que el de ahora, solo que antes lo hice mediante vectores y ahora lo ъnico que hice fue quitar los vectores y aprovechar el bodypart de la callback OnPlayerTakeDamage, y como me fui de SA-MP y de la programaciуn tambiйn, decido liberarlo, como ya dije, antes funcionaba bien con los vectores, aunque no tan preciso, y supongo que con esto de las bodypart es mбs que preciso.

Con respecto a la fuerza, hice un comando para darla y otra para ver la fuerza de cada uno, la ъnica forma de conseguirla es mediante el comando que hice, pero ustedes pueden crear un sistema que otorgue fuerza por hacer X cosa, yo en el GM de AM-RP habнa hecho que la fuerza se obtenga mediante el gimnasio, pero no lo apliquй la filterscript porque no quiero irme tanto de la idea.

Los daсos fнsicos, varнan segъn el arma utilizada, puede ser un arma blanca o un arma de fuego, con el tema de las armas blancas, el daсo va a variar segъn la fuerza del agresor y la zona en la que se produce el impacto, por ejemplo, al golpear con un bate en la cabeza y el agresor tiene mucha fuerza, se producirб un gran daсo. La ъnica arma blanca que mata de un solo impacto es la katana, y solo cuando se produce en la cabeza, sin importar la fuerza del agresor. Yendo al tema de las armas de fuego, lo que variarб serб el arma utilizada y tambiйn en la parte del cuerpo en la cual se efectъa el disparo, ademбs que al recibir un disparo se verб un textdraw rojo instantбneo, simulando un efecto de impacto. Con un disparo en la cabeza de cualquier arma de fuego, se produce la muerte instantбnea.

Cuando se golpea con la culata de un arma de fuego por acercamiento ('culatazo') se producirб un daсo variando la fuerza del agresor, como si fuese un arma blanca.

El sistema estб claramente ambientado para un roleplay, si se quiere usar lo de fuerza, tendrнan que (recomendablemente) colocar la variable Fuerza dentro del enum donde se almacena la informaciуn del jugador, y posteriormente incluir dicha variable en el guardado de datos, para que la fuerza quede fija. Gracias a esto nuevo de la sicronizaciуn ("anti-lag shoot"), el sistema puede ser aъn mбs realista. Otra cosa muy importante, si tienen un anticheat de vida / salud, tendrнan que usar su funciуn de establecer vida (si es que la tienen, que suele estar SetPlayerHealth y la variable de vida del jugador, la cual es asignada, y que se les aplica a ambas el mismo valor) o bien, asignar abajo de SetPlayerHealth la actualizaciуn de la variable de vida del jugador, y bueno, obviamente el guardado de vida, que todos los roleplay tienen.

Nota: Se recomienda descargar por mediafire, ya que incluye los includes que utilicй, pero si ya los tienen pueden usar el enlace de Pastebin / Paste2. Si no tienen los includes pero tampoco quiere usarlos simplemente sabrбn como quitar las funciones concernientes a los includes.

Descarga;
Mediafire
Pastebin
Paste2

Prуxima actualizaciуn;
- Optimizaciуn.
- Efectos secundarios (como por ejemplo un random de mareo al recibir un golpe con arma blanca) y una posibilidad de noqueo con ciertos tipos de armas blancas.
- Daсo por atropellamientos, choques automovilнsticos y caнdas.
- Variaciуn del daсo con armas de fuego segъn la distancia en la que se efectъa el disparo (mientras mбs cerca, mayor daсo).

Crйditos;
DeadSkyTkb (idea, cуdigo)
CaptainMacTavish (por el siguiente cуdigo que me aportу como base hace dos aсos):
pawn Код:
public OnPlayerConnect(playerid)
{
    SetPlayerTeam(playerid, 1); //para que al disparar no haya daсos, es decir, todos en un mismo equipo y el daсo es procesado server-side
    return 1;
}
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
    static Float:damage, Float:health, Float:armour;
    if(issuerid != INVALID_PLAYER_ID)
    {
        if(amount == 2.64)
        {
            damage = 60.0;
        }
        else
        {
            switch(weaponid)
            {
                case 31: damage = 40.0;
                case 34: damage = 200.0
        }
        GetPlayerHealth(playerid, health);
        GetPlayerArmour(playerid, armour);
        if(armour)
        {
            if(armour > damage) SetPlayerArmour(playerid, armour-damage);
            else
            {
                SetPlayerArmour(playerid, 0.0);
                armour = damage-armour;
                if(armour >= health) SetPlayerHealth(playerid, 0.0);
                else SetPlayerHealth(playerid, health-armour);
            }
        }
        else
        {
            if(health > damage) SetPlayerHealth(playerid, health-damage);
            else SetPlayerHealth(playerid, 0.0);
        }
    }
    return 1;
}
Reply
#2

Lindo . Aunque creo que retornando '0' el 'OnPlayerTakeDamage', los daсos no tendrбn efecto (creo creo creo).

+2.
Reply
#3

Gracias, tengo entendido que el sistema funciona, al menos siempre me funcionу, y lo ъnico que hice fue pasarlo a la 0.3z

No sй cuando haga lo de la actualizaciуn, tengo mбs ideas todavнa para perfeccionar el sistema, no solo las que puse en lo de actualizaciуn, pero bueno, no tengo tiempo, y ya mucho no me atrae SA-MP, asн que podrнa ser en dos meses por ahн.

Aclaro: Este sistema no es el mismo del GM de AM-RP que hicimos con JustBored, ya que el de ese GM me habнa quedado algo bugueado, luego lo pasй al FS y lo fui reparando y mejorando. Hago esta aclaraciуn por si alguien tiene el GM y lуgicamente sabe que el sistema ahн estб bugueado, y por ahн piensa que este sistema que publiquй no funciona, pero sн, funciona.
Reply
#4

Quote:
Originally Posted by EnzoMetlc
Посмотреть сообщение
Lindo . Aunque creo que retornando '0' el 'OnPlayerTakeDamage', los daсos no tendrбn efecto (creo creo creo).

+2.
Eso es correcto PERO este sistema requiere quй retorne 0 para quй no cause doble daсo y solo cause el daсo establecido n_n
Reply
#5

Claro, como dije, es totalmente funcional, y mбs ahora con esta nueva actualizaciуn de SA-MP, me gustarнa tener instalado el GTA y el SAMP para poder testear lo de la nueva sincronizaciуn, pero bueno.
Reply
#6

Todavнa sigue vivo mi cуdigo de hace 2 aсos xD.
Reply
#7

Quote:
Originally Posted by MugiwaraNoLuffy
Посмотреть сообщение
Todavнa sigue vivo mi cуdigo de hace 2 aсos xD.
O_O?.. tu eres CaptainMacTavish ? o por que dices tu codigo?
Reply
#8

No creo que sea йl, debe estar trolleando.
Reply
#9

Les dirй la verdad, yo soy ..
CaptainMacTavish
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)