[Duda]PlayerToPlayer?
#1

Hola gente!

El titulo no estб bien, ya que luego agregue lo del Payday. La idea era que fuera "[Dudas]2 Dudas ", pero no lo cambio JAJAJAJAJAJA

Bueno, estoy tratando de hacer un sistema de Payday cada una hora, pero no estoy muy seguro de si el cуdigo estб bien.
Se los dejo, espero que me puedan decir que esta horrible y que me digan como arreglarlo,
pawn Код:
public Payday(playerid)
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        pInfo2[i][Exp] = pInfo2[i][Exp] + 1;
        if(pInfo[playerid][Nivel] < 1)
        {
            if(pInfo2[playerid][Exp] >= 15)
            {
                pInfo2[playerid][Exp] = 0;
                pInfo[playerid][Nivel] ++;
                SendClientMessage(playerid, COLOR_LIGHTGREEN, "[Info]Subiste un nivel! Ahora eres nivel 2");
            }
        }
       
        else if(pInfo[playerid][Nivel] < 2)
        {
            if(pInfo2[playerid][Exp] >= 30)
            {
                pInfo2[playerid][Exp] = 0;
                pInfo[playerid][Nivel] ++;
                SendClientMessage(playerid, COLOR_LIGHTGREEN, "[Info]Subiste un nivel! Ahora eres nivel 3");
            }
        }
       
        else if(pInfo[playerid][Nivel] < 3)
        {
            if(pInfo2[playerid][Exp] >= 60)
            {
                pInfo2[playerid][Exp] = 0;
                pInfo[playerid][Nivel] ++;
                SendClientMessage(playerid, COLOR_LIGHTGREEN, "[Info]Subiste un nivel! Ahora eres nivel 4");
            }
        }
       
        else if(pInfo[playerid][Nivel] < 4)
        {
            if(pInfo2[playerid][Exp] >= 90)
            {
                pInfo2[playerid][Exp] = 0;
                pInfo[playerid][Nivel] ++;
                SendClientMessage(playerid, COLOR_LIGHTGREEN, "[Info]Subiste un nivel! Ahora eres nivel 5");
            }
        }
       
        else if(pInfo[playerid][Nivel] < 5)
        {
            if(pInfo2[playerid][Exp] >= 120)
            {
                pInfo2[playerid][Exp] = 0;
                pInfo[playerid][Nivel] ++;
                SendClientMessage(playerid, COLOR_LIGHTGREEN, "[Info]Subiste un nivel! Ahora eres nivel 6");
            }
        }
       
        else if(pInfo[playerid][Nivel] < 6)
        {
            if(pInfo2[playerid][Exp] >= 150)
            {
                pInfo2[playerid][Exp] = 0;
                pInfo[playerid][Nivel] ++;
                SendClientMessage(playerid, COLOR_LIGHTGREEN, "[Info]Subiste un nivel! Ahora eres nivel 7");
            }
        }
       
        else if(pInfo[playerid][Nivel] < 7)
        {
            if(pInfo2[playerid][Exp] >= 180)
            {
                pInfo2[playerid][Exp] = 0;
                pInfo[playerid][Nivel] ++;
                SendClientMessage(playerid, COLOR_LIGHTGREEN, "[Info]Subiste un nivel! Ahora eres nivel 8");
            }
        }
       
        else if(pInfo[playerid][Nivel] < 8)
        {
            if(pInfo2[playerid][Exp] >= 210)
            {
                pInfo2[playerid][Exp] = 0;
                pInfo[playerid][Nivel] ++;
                SendClientMessage(playerid, COLOR_LIGHTGREEN, "[Info]Subiste un nivel! Ahora eres nivel 9");
            }
        }
       
        else if(pInfo[playerid][Nivel] < 9)
        {
            if(pInfo2[playerid][Exp] >= 240)
            {
                pInfo2[playerid][Exp] = 0;
                pInfo[playerid][Nivel] ++;
                SendClientMessage(playerid, COLOR_LIGHTGREEN, "[Info]Subiste un nivel! Ahora eres nivel 10");
            }
        }
        SendClientMessage(i, COLOR_LIGHTGREEN, "[Payday]Recibiste 1 de experiencia por el Payday!");
        SetPlayerScore(playerid, pInfo[playerid][Nivel]);
    }
    return 1;
}
Si, se que parecen exagerados los niveles de experiencia necesarios, pero creanme que van a llegar rapido xD.

Otra cosa: Dejo el codigo que estoy usando para la mordida, no estoy seguro de que vaya a funcionar correctamente.

pawn Код:
else if(newkeys & KEY_SECONDARY_ATTACK)
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        new Float:Salud;
        GetPlayerPos(playerid, pX[playerid], pY[playerid], pZ[playerid]);
        if(!PlayerToPoint(5.0, i, pX[playerid], pY[playerid], pZ[playerid])) return 0;
        //if(pInfo2[i][Infectado] == 1) return 0;
        if(YaMordio[playerid] == 1) return 0;
       
        pInfo2[i][Infectado] = 1;
        pInfo2[playerid][Exp] = pInfo2[playerid][Exp] + 5;
        GetPlayerHealth(i, Salud);
        SetPlayerHealth(i, Salud-10);
        YaMordio[playerid] = 1;
        SetTimerEx("Mordida", 2000, false, "i", playerid);
    }
}
Eso por ahora, espero que me puedan ayudar ya que no tengo nadie para testear ahora xD,
Un abrazo gente, gracias!
Reply
#2

Contesten, gatos ¬.
No posta, necesito ayuda xD
Reply
#3

Saque esto del GF, te dejo las dos funciones, y un ejemplo en el comando /tazer.


pawn Код:
if(strcmp(cmd, "/tazer", true) ==0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(gTeam[playerid] == 2 || IsACop(playerid))
            {
                if(IsPlayerInAnyVehicle(playerid))
                {
                    SendClientMessage(playerid, COLOR_GREY, "   Cannot use this while being in the Car !");
                    return 1;
                }
                new suspect = GetClosestPlayer(playerid);
                if(IsPlayerConnected(suspect))
                {
                    if(PlayerCuffed[suspect] > 0)
                    {
                        SendClientMessage(playerid, COLOR_GREY, "   Player already Cuffed !");
                        return 1;
                    }
                    if(GetDistanceBetweenPlayers(playerid,suspect) < 5)
                    {
                        if(gTeam[suspect] == 2)
                        {
                            SendClientMessage(playerid, COLOR_GREY, "   Cannot Tazer Cops / FBI / National Guard !");
                            return 1;
                        }
                        if(IsPlayerInAnyVehicle(suspect))
                        {
                            SendClientMessage(playerid, COLOR_GREY, "   Suspect is in a Car, get him out first !");
                            return 1;
                        }
                        GetPlayerName(suspect, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        format(string, sizeof(string), "* You were Tazed by %s for 8 seconds.", sendername);
                        SendClientMessage(suspect, COLOR_LIGHTBLUE, string);
                        format(string, sizeof(string), "* You Tazed %s for 8 seconds.", giveplayer);
                        SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                        format(string, sizeof(string), "* %s shoots with his Tazer at %s, and tazed him.", sendername ,giveplayer);
                        ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                        GameTextForPlayer(suspect, "~r~Tazed", 2500, 3);
                        TogglePlayerControllable(suspect, 0);
                        PlayerCuffed[suspect] = 1;
                        PlayerCuffedTime[suspect] = 8;
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_GREY, "   No-one near you!");
                        return 1;
                    }
                }
            }
            else
            {
                SendClientMessage(playerid, COLOR_GREY, "   You are not a Cop / FBI / National Guard !");
            }
        }//not connected
        return 1;
    }
Tazer


y Las dos funciones..

pawn Код:
forward GetClosestPlayer(p1);
forward Float:GetDistanceBetweenPlayers(p1,p2);

public Float:GetDistanceBetweenPlayers(p1,p2)
{
    new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
    if(!IsPlayerConnected(p1) || !IsPlayerConnected(p2))
    {
        return -1.00;
    }
    GetPlayerPos(p1,x1,y1,z1);
    GetPlayerPos(p2,x2,y2,z2);
    return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}

public GetClosestPlayer(p1)
{
    new x,Float:dis,Float:dis2,player;
    player = -1;
    dis = 99999.99;
    for (x=0;x<MAX_PLAYERS;x++)
    {
        if(IsPlayerConnected(x))
        {
            if(x != p1)
            {
                dis2 = GetDistanceBetweenPlayers(x,p1);
                if(dis2 < dis && dis2 != -1.00)
                {
                    dis = dis2;
                    player = x;
                }
            }
        }
    }
    return player;
}
Eso serнa el "PlayerToPlayer", lo otro podes usar un timer global. Creo que eso queres, saludos.
Reply
#4

Gracias Sandman, me fueron de ayuda esas dos funciones.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)