SA-MP Forums Archive
Ayuda IMPORTANTE [Rep +] - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Ayuda IMPORTANTE [Rep +] (/showthread.php?tid=421025)



Ayuda IMPORTANTE [Rep +] - Strier - 07.03.2013

Eh bueh.. me hice un filterscript que al parecer esta bien.

Pero no funciona ;|.. aqui el code.

pawn Код:
#define FILTERSCRIPT

#include <a_samp>
#include <zcmd>





new Barret[MAX_PLAYERS];
new Text:BarretTD[MAX_PLAYERS];

public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print(" Barret .50 Caliber by strier loaded.");
    print("--------------------------------------\n");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        BarretTD[i] = TextDrawCreate(4.000000, 438.000000, " ");
        TextDrawBackgroundColor(BarretTD[i], 255);
        TextDrawFont(BarretTD[i], 2);
        TextDrawLetterSize(BarretTD[i], 0.250000, 1.000000);
        TextDrawColor(BarretTD[i], -1);
        TextDrawSetOutline(BarretTD[i], 1);
        TextDrawSetProportional(BarretTD[i], 1);
    }
    return 1;
}

public OnPlayerConnect(playerid)
{
    Barret[playerid] = 0;
    return 1;
}

public OnPlayerDisconnect(playerid)
{
    Barret[playerid] = 0;
    return 1;
}

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
    if(Barret[playerid] == 1)
    {
        if(issuerid != INVALID_PLAYER_ID && weaponid == 34)
        {
            new Float:px,Float:py,Float:pz, str[250], target[MAX_PLAYER_NAME], pName[MAX_PLAYER_NAME];
            GetPlayerName(playerid, pName, sizeof(pName));
            GetPlayerName(issuerid, target, sizeof(target));
            SetPlayerHealth(playerid, 0.0);
            GetPlayerPos(playerid, px, py, pz);
            CreateExplosion(px,py,pz, 1, 2.0);
            format(str, sizeof(str), "Player ~r~~h~%s ~w~has snipered ~r~~h~%s ~w~with caliber .50 barret!", pName, target);
            TextDrawSetString(BarretTD[playerid], str);
            TextDrawShowForAll(BarretTD[playerid]);
            SetTimer("Updater", 15000, true);
        }
    }
    return 1;
}

forward Updater();
public Updater()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        TextDrawHideForAll(BarretTD[i]);
    }
    return 1;
}

CMD:sniper(playerid, params[])
{
    GivePlayerWeapon(playerid, 34, 500);
    return 1;
}

CMD:enablebarret(playerid, params[])
{
    Barret[playerid] = 1;
    SendClientMessage(playerid, -1, "Barret enabled !");
    return 1;
}

CMD:disablebarret(playerid, params[])
{
    Barret[playerid] = 0;
    SendClientMessage(playerid, -1, "Barret disabled !");
    return 1;
}


public OnFilterScriptExit()
{
    return 1;
}



Respuesta: Ayuda IMPORTANTE [Rep +] - Parka - 07.03.2013

y exactamente que deberнa hacer eso ??


Respuesta: Ayuda IMPORTANTE [Rep +] - Strier - 07.03.2013

Bueno, cuando le pegas a alguien con sniper rifle, crea una explosion y le pone la vida en 0.


Respuesta: Ayuda IMPORTANTE [Rep +] - CrossOv3r - 07.03.2013

Por lo que veo el cуdigo esta todo bien. Intenta especificar mбs el problema. їNo sirve nada? їLa explosiуn falla? їQue cosa?


Respuesta: Ayuda IMPORTANTE [Rep +] - Strier - 07.03.2013

Bueno, al momento que pongo /enablebarret me da todo bien, se supone que en ese momento la variable tiene que funcionar, pero al dispararle a otro jugador el pierde la health normal que pierde con un tiro de sniper, osea no se crea la explosion, ni el textdrawstring.. :/

El otra vez tambien hice un filterscript, y solo funcionaba que se mandaba el showplayerdialog, pero lo que estaba dentro del dialog no funcionaba, cuando en realidad el code esta bien, ahi lo tengo aun.. creo que es un problema muy jodon...


Respuesta: Ayuda IMPORTANTE [Rep +] - EduGTA - 07.03.2013

Quote:
Originally Posted by Strier
Посмотреть сообщение
Bueno, al momento que pongo /enablebarret me da todo bien, se supone que en ese momento la variable tiene que funcionar, pero al dispararle a otro jugador el pierde la health normal que pierde con un tiro de sniper, osea no se crea la explosion, ni el textdrawstring.. :/
Ya entendн y ya vi tu error

Verбs, en el callback OnPlayerTakeDamage, existen los parбmetros playerid e issuerid.

playerid = El que recibiу daсo.
issuerid = El que hizo daсo.

En el callback pusiste "if(Barret[playerid] == 1)", lo que detecta si la persona que recibiу daсo tiene la variable en 1.

Lo correcto serнa "if(Barret[issuerid] == 1)"


pawn Код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
    if(Barret[issuerid] == 1)
    {
        if(issuerid != INVALID_PLAYER_ID && weaponid == 34)
        {
            new Float:px,Float:py,Float:pz, str[250], target[MAX_PLAYER_NAME], pName[MAX_PLAYER_NAME];
            GetPlayerName(playerid, pName, sizeof(pName));
            GetPlayerName(issuerid, target, sizeof(target));
            SetPlayerHealth(playerid, 0.0);
            GetPlayerPos(playerid, px, py, pz);
            CreateExplosion(px,py,pz, 1, 2.0);
            format(str, sizeof(str), "Player ~r~~h~%s ~w~has snipered ~r~~h~%s ~w~with caliber .50 barret!", pName, target);
            TextDrawSetString(BarretTD[playerid], str);
            TextDrawShowForAll(BarretTD[playerid]);
            SetTimer("Updater", 15000, true);
        }
    }
    return 1;
}



Respuesta: Ayuda IMPORTANTE [Rep +] - Strier - 07.03.2013

Tenias razon edugta, gracias te doy el rep al rato porque dice que no puedo xp