[AJUDA] Sistema de Propriedade [URGENTE]
#1

Pessoal Eu tenho ese sistema de propriedae da sandra mais tem um bug
Mesmo eu nгo sendo dono da propriedade eu vo lah e dou /vender e vende

Codigo \/
pawn Код:
/*===================================================================================================*\
||===================================================================================================||
||                ________    ________    ___    _    ______     ______     ________                 ||
||          \    |   _____|  |  ____  |  |   \  | |  |   _  \   |  _   \   |  ____  |    /           ||
||  ======== \   |  |_____   | |____| |  | |\ \ | |  |  | |  |  | |_|  /   | |____| |   / ========   ||
||            |  | _____  |  |  ____  |  | | \ \| |  |  | |  |  |  _  \    |  ____  |  |             ||
||  ======== /    ______| |  | |    | |  | |  \ \ |  |  |_|  |  | |  \ \   | |    | |   \ ========   ||
||          /    |________|  |_|    |_|  |_|   \__|  |______/   |_|   \_|  |_|    |_|    \           ||
||                                                                                                   ||
||                                                                                                   ||
||                                        Property-Filterscript                                      ||
||                                      Traduзгo 1.0 Phoenix Encoderґs                               ||
||===================================================================================================||
||                           Criado em 5 de junho 2008 by =>Sandra<=                                 ||
||                                    Nгo remova os creditos   !!                                    ||
\*===================================================================================================*/

//luck.phoenix@hotmail.com participe de nossa equipe !!!
#include <a_samp>
#include <dini>

#define MAX_PROPERTIES 100
#define MAX_PROPERTIES_PER_PLAYER 20
#define UNBUYABLETIME 30  //If a propertie is bought, someone else have to wait this number of minutes before he/she can buy it.

#define ENABLE_LOGIN_SYSTEM 0
#define ENABLE_MAP_ICON_STREAMER 1

new PropertiesAmount;
new MP;
enum propinfo
{
    PropName[64],
    Float:PropX,
    Float:PropY,
    Float:PropZ,
    PropIsBought,
    PropUnbuyableTime,
    PropOwner[MAX_PLAYER_NAME],
    PropValue,
    PropEarning,
    PickupNr,
}
new PropInfo[MAX_PROPERTIES][propinfo]; //CarInfo
new PlayerProps[MAX_PLAYERS];
new EarningsForPlayer[MAX_PLAYERS];
new Logged[MAX_PLAYERS];

public OnFilterScriptInit()
{
    LoadProperties();
    MP = GetMaxPlayers();
    for(new i; i<MP; i++)
    {
        if(IsPlayerConnected(i))
        {
            new pName[MAX_PLAYER_NAME];
            GetPlayerName(i, pName, MAX_PLAYER_NAME);
            for(new propid; propid < PropertiesAmount; propid++)
            {
                if(PropInfo[propid][PropIsBought] == 1)
                {
                    if(strcmp(PropInfo[propid][PropOwner], pName, true)==0)
                    {
                        EarningsForPlayer[i] += PropInfo[propid][PropEarning];
                        PlayerProps[i]++;
                    }
                }
            }
        }
    }
    SetTimer("UpdateUnbuyableTime", 60000, 1);
    #if ENABLE_MAP_ICON_STREAMER == 1
    SetTimer("MapIconStreamer", 500, 1);
    #endif
    SetTimer("PropertyPayout", 20000, 1);
    print("-------------------------------------------------");
    print("Property-System by =>Sandra<= Carregado com sucesso!");
    print("-------------------------------------------------");
    return 1;
}

public OnFilterScriptExit()
{
    SaveProperties();
    print("Propriedades salvadas!");
    return 1;
}

public OnPlayerConnect(playerid)
{
    PlayerProps[playerid] = 0;
    Logged[playerid] = 0;
    EarningsForPlayer[playerid] = 0;
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
    for(new propid; propid < PropertiesAmount; propid++)
    {
        if(PropInfo[propid][PropIsBought] == 1)
        {
            if(strcmp(PropInfo[propid][PropOwner], pName, true)==0)
            {
                EarningsForPlayer[playerid] += PropInfo[propid][PropEarning];
                PlayerProps[playerid]++;
            }
        }
    }
    if(PlayerProps[playerid] > 0)
    {
        new str[128];
        format(str, 128, "Vocк tem atualmente %d propriedades. use: /minhasprops para saber as info de suas propriedades.", PlayerProps[playerid]);
        SendClientMessage(playerid, 0x99FF66AA, str);
    }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    return 1;
}

public OnPlayerText(playerid, text[])
{
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256], idx;
    //new tmp[256];
    cmd = strtok(cmdtext, idx);
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/ajudaprops", true)==0 || strcmp(cmd, "/prophelp", true)==0)
    {
        SendClientMessage(playerid, 0x6699FFAA, "|=========================================================|");
       // new str[128];
        SendClientMessage(playerid, 0x6699FFAA, "Comandos de Props:");
        SendClientMessage(playerid, 0x66CCFFAA, "/comprar >> para comprar uma propriedade.");
        SendClientMessage(playerid, 0x66CCFFAA, "/vender >> para vender sua propriedade.");
        SendClientMessage(playerid, 0x66CCFFAA, "/minhasprops >> Para ver as info de suas propriedades.");
        if(IsPlayerAdmin(playerid))
        {
            SendClientMessage(playerid, 0x66CCFFAA, "/vtodasprops [Admin cmd] ==>> para vender todas as props dos jogadores.");
        }
        SendClientMessage(playerid, 0x6699FFAA, "|=========================================================|");
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/comprar", true)==0 || strcmp(cmd, "/buyprop", true)==0)
    {
        new str[128];

        new propid = IsPlayerNearProperty(playerid);

        if(propid == -1)
        {
            SendClientMessage(playerid, 0xFF0000AA, "Vocк tem que estar mais perto da propriedade.");
            return 1;
        }
        if(PlayerProps[playerid] == MAX_PROPERTIES_PER_PLAYER)
        {
            format(str, 128, "Vocк ja tem %d propriedades, vocк nгo pode comprar mais propriedades!", PlayerProps[playerid]);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        if(PropInfo[propid][PropIsBought] == 1)
        {
            new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
            if(ownerid == playerid)
            {
                SendClientMessage(playerid, 0xFF0000AA, "Vocк ja й dono desta propriedade.");
                return 1;
            }
            else
            {
                if(PropInfo[propid][PropUnbuyableTime] > 0)
                {
                    format(str, 128, "Esta propriedade jб foi comprada por %s. Vocк vai ter que esperar %d minutos antes de compra-la novamente.", PropInfo[propid][PropOwner], PropInfo[propid][PropUnbuyableTime]);
                    SendClientMessage(playerid, 0xFF0000AA, str);
                    return 1;
                }
            }
        }
        if(GetPlayerMoney(playerid) < PropInfo[propid][PropValue])
        {
            format(str, 128, "Vocк nгo tem dinheiro suficiente para comprar esta propriedade! Vocк precisa de $%d", PropInfo[propid][PropValue]);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        new pName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pName, sizeof(pName));
        if(PropInfo[propid][PropIsBought] && PropInfo[propid][PropUnbuyableTime] == 0)
        {
            new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
            if(IsPlayerConnected(ownerid))
            {
            format(str, 128, "%s Comprou sua propriedade \"%s\". Vocк ganhou 50% do valor atual ($%d)", pName, PropInfo[propid][PropName], (PropInfo[propid][PropValue]/2));
            GivePlayerMoney(ownerid, (PropInfo[propid][PropValue]/2));
            SendClientMessage(ownerid, 0xFFFF00AA, str);
            PlayerProps[ownerid]--;
            }else{
            format(str, 128,"/ladmin/users/%s.sav",PropInfo[propid][PropOwner]);
            dini_IntSet(str,"Money",dini_Int(str,"Money")+PropInfo[propid][PropValue]/2);
            }
        }
        PropInfo[propid][PropOwner] = pName;
        PropInfo[propid][PropIsBought] = 1;
        PropInfo[propid][PropUnbuyableTime] = UNBUYABLETIME;
        EarningsForPlayer[playerid] += PropInfo[propid][PropEarning];
        GivePlayerMoney(playerid, (0-PropInfo[propid][PropValue]));
        format(str, 128, "Vocк comprou a propriedade de \"%s\" por $%d", PropInfo[propid][PropName], PropInfo[propid][PropValue]);
        SendClientMessage(playerid, 0xFFFF00AA, str);
        format(str, 128, "%s Comprou a propriedade \"%s\".", pName, PropInfo[propid][PropName]);
        SendClientMessageToAllEx(playerid, 0xFFFF00AA, str);
        PlayerProps[playerid]++;
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/vender", true) == 0 || strcmp(cmd, "/sellprop", true) == 0)
    {
        new str[128];
        new propid = IsPlayerNearProperty(playerid);
        if(propid == -1)
        {
            SendClientMessage(playerid, 0xFF0000AA, "Vocк precisa estar mais perto da propriedade.");
            return 1;
        }
    if(PropInfo[propid][PropIsBought] == 1)
        {
            new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
            if(ownerid != playerid)
            {
                SendClientMessage(playerid, 0xFF0000AA, "Vocк nгo possui esta propriedade!");
                return 1;
            }
        }
        new pName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pName, sizeof(pName));
        format(PropInfo[propid][PropOwner], MAX_PLAYER_NAME, "Ninguem");
        PropInfo[propid][PropIsBought] = 0;
        PropInfo[propid][PropUnbuyableTime] = 0;
        GivePlayerMoney(playerid, (PropInfo[propid][PropValue]/2));
        format(str, 128, "Vocк vendeu sua propriedade \"%s\" por 50% do valor atual: $%d", PropInfo[propid][PropName], PropInfo[propid][PropValue]/2);
        SendClientMessage(playerid, 0xFFFF00AA, str);
        format(str, 128, "%s vendeu a propriedade \"%s\".", pName, PropInfo[propid][PropName]);
        SendClientMessageToAllEx(playerid, 0xFFFF00AA, str);
        PlayerProps[playerid]--;
        EarningsForPlayer[playerid] -= PropInfo[propid][PropEarning];
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/minhasprops", true) == 0 || strcmp(cmd, "/myprops", true) == 0)
    {
        new str[128], ownerid;
        #if ENABLE_LOGIN_SYSTEM == 1
        if(Logged[playerid] == 0)
        {
            format(str, 128, "You have to login before you can buy or sell properties! Use: %s", LOGIN_COMMAND);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        #endif
        if(PlayerProps[playerid] == 0)
        {
            SendClientMessage(playerid, 0xFF0000AA, "Vocк nгo possui propriedades!");
            return 1;
        }
        format(str, 128, "|==================Suas %d propriedades: ==================|", PlayerProps[playerid]);
        SendClientMessage(playerid, 0x99FF66AA, str);
        for(new propid; propid < PropertiesAmount; propid++)
        {
            if(PropInfo[propid][PropIsBought] == 1)
            {
                ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
                if(ownerid == playerid)
                {
                    format(str, 128, ">> \"%s\"   Valor: $%d   Recebe: $%d Tempo: %d", PropInfo[propid][PropName], PropInfo[propid][PropValue], PropInfo[propid][PropEarning],PropInfo[propid][PropUnbuyableTime]);
                    SendClientMessage(playerid, 0x99FF66AA, str);
                }
            }
        }
        SendClientMessage(playerid, 0x99FF66AA, "|===========================================================|");
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/vtodasprops", true)==0)
    {
        if(IsPlayerAdmin(playerid))
        {
            for(new propid; propid<PropertiesAmount; propid++)
            {
                format(PropInfo[propid][PropOwner], MAX_PLAYER_NAME, "Ninguem");
                PropInfo[propid][PropIsBought] = 0;
                PropInfo[propid][PropUnbuyableTime] = 0;
            }
            for(new i; i<MAX_PLAYERS; i++)
            {
                if(IsPlayerConnected(i))
                {
                    PlayerProps[i] = 0;
                }
            }
            new str[128], pName[24];
            GetPlayerName(playerid, pName, 24);
            format(str, 128, "Admin %s vendeu todas as propriedades!", pName);
            SendClientMessageToAll(0xFFCC66AA, str);
        }
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    return 0;
}


public OnPlayerPickUpPickup(playerid, pickupid)
{
    new propid = -1;
    for(new id; id<MAX_PROPERTIES; id++)
    {
        if(PropInfo[id][PickupNr] == pickupid)
        {
            propid = id;
            break;
        }
    }
    if(propid != -1)
    {
        new str[128];
        format(str, 128, "~y~\"%s\"~n~~r~Valor: ~y~$%d~n~~r~Lucro: ~y~$%d~n~~r~Dono: ~y~%s", PropInfo[propid][PropName], PropInfo[propid][PropValue], PropInfo[propid][PropEarning], PropInfo[propid][PropOwner]);
        GameTextForPlayer(playerid, str, 6000, 3);
    }
    return 1;
}

stock LoadProperties()
{
    if(fexist("ladmin/Propriedades.txt"))
    {
        CountProperties();
        new Argument[9][70];
        new entry[256], BoughtProps;
        new File: propfile = fopen("ladmin/Propriedades.txt", io_read);
        if (propfile)
        {
            for(new id; id<PropertiesAmount; id++)
            {
                fread(propfile, entry);
                split(entry, Argument, ',');
                format(PropInfo[id][PropName], 64, "%s", Argument[0]);
                PropInfo[id][PropX] = floatstr(Argument[1]);
                PropInfo[id][PropY] = floatstr(Argument[2]);
                PropInfo[id][PropZ] = floatstr(Argument[3]);
                PropInfo[id][PropValue] = strval(Argument[4]);
                PropInfo[id][PropEarning] = strval(Argument[5]);
                format(PropInfo[id][PropOwner], MAX_PLAYER_NAME, "%s", Argument[6]);
                PropInfo[id][PropIsBought] = strval(Argument[7]);
                PropInfo[id][PropUnbuyableTime] = strval(Argument[8]);
                PropInfo[id][PickupNr] = CreatePickup(1273, 1, PropInfo[id][PropX], PropInfo[id][PropY], PropInfo[id][PropZ]);
                if(PropInfo[id][PropIsBought] == 1)
                {
                    BoughtProps++;
                }
            }
            fclose(propfile);
            printf("===================================");
            printf("||Foram localizadas %i propriedades||", PropertiesAmount);
            printf("||%i das propriedades possuem dono.||", BoughtProps);
            printf("===================================");
        }
    }
}

stock SaveProperties()
{
    new entry[256];
    new File: propfile = fopen("ladmin/Propriedades.txt", io_write);
    for(new id; id<PropertiesAmount; id++)
    {
        format(entry, 128, "%s,%.2f,%.2f,%.2f,%d,%d,%s,%d,%d \r\n",PropInfo[id][PropName], PropInfo[id][PropX], PropInfo[id][PropY], PropInfo[id][PropZ], PropInfo[id][PropValue], PropInfo[id][PropEarning], PropInfo[id][PropOwner], PropInfo[id][PropIsBought], PropInfo[id][PropUnbuyableTime]);
        fwrite(propfile, entry);
    }
    printf("Salvas %d Propiedades!", PropertiesAmount);
    fclose(propfile);
}

forward split(const strsrc[], strdest[][], delimiter);
public split(const strsrc[], strdest[][], delimiter)
{
    new i, li;
    new aNum;
    new len;
    while(i <= strlen(strsrc)){
        if(strsrc[i]==delimiter || i==strlen(strsrc)){
            len = strmid(strdest[aNum], strsrc, li, i, 128);
            strdest[aNum][len] = 0;
            li = i+1;
            aNum++;
        }
        i++;
    }
    return 1;
}

stock CountProperties()
{
    new entry[256];
    new File: propfile = fopen("ladmin/Propriedades.txt", io_read);
    while(fread(propfile, entry, 256))
    {
        PropertiesAmount++;
    }
    fclose(propfile);
}

forward IsPlayerNearProperty(playerid);
public IsPlayerNearProperty(playerid)
{
    new Float:Distance;
    for(new prop; prop<PropertiesAmount; prop++)
    {
        Distance = GetDistanceToProperty(playerid, prop);
        if(Distance < 1.0)
        {
            return prop;
        }
    }
    return -1;
}

forward Float:GetDistanceToProperty(playerid, Property);
public Float:GetDistanceToProperty(playerid, Property)
{
    new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
    GetPlayerPos(playerid,x1,y1,z1);
    x2 = PropInfo[Property][PropX];
    y2 = PropInfo[Property][PropY];
    z2 = PropInfo[Property][PropZ];
    return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}

stock GetPlayerID(const Name[])
{
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            new pName[MAX_PLAYER_NAME];
            GetPlayerName(i, pName, sizeof(pName));
            if(strcmp(Name, pName, true)==0)
            {
                return i;
            }
        }
    }
    return -1;
}

stock SendClientMessageToAllEx(exeption, color, const message[])
{
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(i != exeption)
            {
                SendClientMessage(i, color, message);
            }
        }
    }
}

forward UpdateUnbuyableTime();
public UpdateUnbuyableTime()
{
    for(new propid; propid<PropertiesAmount; propid++)
    {
        if(PropInfo[propid][PropIsBought] == 1)
        {
            if(PropInfo[propid][PropUnbuyableTime] > 0)
            {
                PropInfo[propid][PropUnbuyableTime]--;
            }
        }
    }
}

stock encodepass(buf[]) {
    new length=strlen(buf);
    new s1 = 1;
    new s2 = 0;
    new n;
    for (n=0; n<length; n++)
    {
       s1 = (s1 + buf[n]) % 65521;
       s2 = (s2 + s1)     % 65521;
    }
    return (s2 << 16) + s1;
}

forward MapIconStreamer();
public MapIconStreamer()
{
    for(new i; i<MP; i++)
    {
        if(IsPlayerConnected(i))
        {
            new Float:SmallestDistance = 99999.9;
            new CP, Float:OldDistance;
            for(new propid; propid<PropertiesAmount; propid++)
            {
                OldDistance = GetDistanceToProperty(i, propid);
                if(OldDistance < SmallestDistance)
                {
                    SmallestDistance = OldDistance;
                    CP = propid;
                }
            }
            RemovePlayerMapIcon(i, 31);
            if(PropInfo[CP][PropIsBought] == 1)
            {
                SetPlayerMapIcon(i, 31, PropInfo[CP][PropX], PropInfo[CP][PropY], PropInfo[CP][PropZ], 32, 0);
            }
            else
            {
                SetPlayerMapIcon(i, 31, PropInfo[CP][PropX], PropInfo[CP][PropY], PropInfo[CP][PropZ], 31, 0);
            }
        }
    }
}

forward PropertyPayout();
public PropertyPayout()
{
    new str[64];
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(PlayerProps[i] > 0)
            {
                GivePlayerMoney(i, EarningsForPlayer[i]);
                format(str, 64, "Vocк ganhou $%d de suas propriedades!", EarningsForPlayer[i]);
                SendClientMessage(i, 0xFFFF00AA, str);
            }
        }
    }
}
Por favor quem ajudar do +Rep
Reply
#2

Tenta
pawn Код:
/*===================================================================================================*\
||===================================================================================================||
||                ________    ________    ___    _    ______     ______     ________                 ||
||          \    |   _____|  |  ____  |  |   \  | |  |   _  \   |  _   \   |  ____  |    /           ||
||  ======== \   |  |_____   | |____| |  | |\ \ | |  |  | |  |  | |_|  /   | |____| |   / ========   ||
||            |  | _____  |  |  ____  |  | | \ \| |  |  | |  |  |  _  \    |  ____  |  |             ||
||  ======== /    ______| |  | |    | |  | |  \ \ |  |  |_|  |  | |  \ \   | |    | |   \ ========   ||
||          /    |________|  |_|    |_|  |_|   \__|  |______/   |_|   \_|  |_|    |_|    \           ||
||                                                                                                   ||
||                                                                                                   ||
||                                        Property-Filterscript                                      ||
||                                      Traduзгo 1.0 Phoenix Encoderґs                               ||
||===================================================================================================||
||                           Criado em 5 de junho 2008 by =>Sandra<=                                 ||
||                                    Nгo remova os creditos   !!                                    ||
\*===================================================================================================*/

//luck.phoenix@hotmail.com participe de nossa equipe !!!
#include <a_samp>
#include <dini>

#define MAX_PROPERTIES 100
#define MAX_PROPERTIES_PER_PLAYER 20
#define UNBUYABLETIME 30  //If a propertie is bought, someone else have to wait this number of minutes before he/she can buy it.

#define ENABLE_LOGIN_SYSTEM 0
#define ENABLE_MAP_ICON_STREAMER 1

new PropertiesAmount;
new MP;
enum propinfo
{
    PropName[64],
    Float:PropX,
    Float:PropY,
    Float:PropZ,
    PropIsBought,
    PropUnbuyableTime,
    PropOwner[MAX_PLAYER_NAME],
    PropValue,
    PropEarning,
    PickupNr,
}
new PropInfo[MAX_PROPERTIES][propinfo]; //CarInfo
new PlayerProps[MAX_PLAYERS];
new EarningsForPlayer[MAX_PLAYERS];
new Logged[MAX_PLAYERS];

public OnFilterScriptInit()
{
    LoadProperties();
    MP = GetMaxPlayers();
    for(new i; i<MP; i++)
    {
        if(IsPlayerConnected(i))
        {
            new pName[MAX_PLAYER_NAME];
            GetPlayerName(i, pName, MAX_PLAYER_NAME);
            for(new propid; propid < PropertiesAmount; propid++)
            {
                if(PropInfo[propid][PropIsBought] == 1)
                {
                    if(strcmp(PropInfo[propid][PropOwner], pName, true)==0)
                    {
                        EarningsForPlayer[i] += PropInfo[propid][PropEarning];
                        PlayerProps[i]++;
                    }
                }
            }
        }
    }
    SetTimer("UpdateUnbuyableTime", 60000, 1);
    #if ENABLE_MAP_ICON_STREAMER == 1
    SetTimer("MapIconStreamer", 500, 1);
    #endif
    SetTimer("PropertyPayout", 20000, 1);
    print("-------------------------------------------------");
    print("Property-System by =>Sandra<= Carregado com sucesso!");
    print("-------------------------------------------------");
    return 1;
}

public OnFilterScriptExit()
{
    SaveProperties();
    print("Propriedades salvadas!");
    return 1;
}

public OnPlayerConnect(playerid)
{
    PlayerProps[playerid] = 0;
    Logged[playerid] = 0;
    EarningsForPlayer[playerid] = 0;
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
    for(new propid; propid < PropertiesAmount; propid++)
    {
        if(PropInfo[propid][PropIsBought] == 1)
        {
            if(strcmp(PropInfo[propid][PropOwner], pName, true)==0)
            {
                EarningsForPlayer[playerid] += PropInfo[propid][PropEarning];
                PlayerProps[playerid]++;
            }
        }
    }
    if(PlayerProps[playerid] > 0)
    {
        new str[128];
        format(str, 128, "Vocк tem atualmente %d propriedades. use: /minhasprops para saber as info de suas propriedades.", PlayerProps[playerid]);
        SendClientMessage(playerid, 0x99FF66AA, str);
    }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    return 1;
}

public OnPlayerText(playerid, text[])
{
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256], idx;
    //new tmp[256];
    cmd = strtok(cmdtext, idx);
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/ajudaprops", true)==0 || strcmp(cmd, "/prophelp", true)==0)
    {
        SendClientMessage(playerid, 0x6699FFAA, "|=========================================================|");
       // new str[128];
        SendClientMessage(playerid, 0x6699FFAA, "Comandos de Props:");
        SendClientMessage(playerid, 0x66CCFFAA, "/comprar >> para comprar uma propriedade.");
        SendClientMessage(playerid, 0x66CCFFAA, "/vender >> para vender sua propriedade.");
        SendClientMessage(playerid, 0x66CCFFAA, "/minhasprops >> Para ver as info de suas propriedades.");
        if(IsPlayerAdmin(playerid))
        {
            SendClientMessage(playerid, 0x66CCFFAA, "/vtodasprops [Admin cmd] ==>> para vender todas as props dos jogadores.");
        }
        SendClientMessage(playerid, 0x6699FFAA, "|=========================================================|");
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/comprar", true)==0 || strcmp(cmd, "/buyprop", true)==0)
    {
        new str[128];

        new propid = IsPlayerNearProperty(playerid);

        if(propid == -1)
        {
            SendClientMessage(playerid, 0xFF0000AA, "Vocк tem que estar mais perto da propriedade.");
            return 1;
        }
        if(PlayerProps[playerid] == MAX_PROPERTIES_PER_PLAYER)
        {
            format(str, 128, "Vocк ja tem %d propriedades, vocк nгo pode comprar mais propriedades!", PlayerProps[playerid]);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        if(PropInfo[propid][PropIsBought] == 1)
        {
            new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
            if(ownerid == playerid)
            {
                SendClientMessage(playerid, 0xFF0000AA, "Vocк ja й dono desta propriedade.");
                return 1;
            }
            else
            {
                if(PropInfo[propid][PropUnbuyableTime] > 0)
                {
                    format(str, 128, "Esta propriedade jб foi comprada por %s. Vocк vai ter que esperar %d minutos antes de compra-la novamente.", PropInfo[propid][PropOwner], PropInfo[propid][PropUnbuyableTime]);
                    SendClientMessage(playerid, 0xFF0000AA, str);
                    return 1;
                }
            }
        }
        if(GetPlayerMoney(playerid) < PropInfo[propid][PropValue])
        {
            format(str, 128, "Vocк nгo tem dinheiro suficiente para comprar esta propriedade! Vocк precisa de $%d", PropInfo[propid][PropValue]);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        new pName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pName, sizeof(pName));
        if(PropInfo[propid][PropIsBought] && PropInfo[propid][PropUnbuyableTime] == 0)
        {
            new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
            if(IsPlayerConnected(ownerid))
            {
            format(str, 128, "%s Comprou sua propriedade \"%s\". Vocк ganhou 50% do valor atual ($%d)", pName, PropInfo[propid][PropName], (PropInfo[propid][PropValue]/2));
            GivePlayerMoney(ownerid, (PropInfo[propid][PropValue]/2));
            SendClientMessage(ownerid, 0xFFFF00AA, str);
            PlayerProps[ownerid]--;
            }else{
            format(str, 128,"/ladmin/users/%s.sav",PropInfo[propid][PropOwner]);
            dini_IntSet(str,"Money",dini_Int(str,"Money")+PropInfo[propid][PropValue]/2);
            }
        }
        PropInfo[propid][PropOwner] = pName;
        PropInfo[propid][PropIsBought] = 1;
        PropInfo[propid][PropUnbuyableTime] = UNBUYABLETIME;
        EarningsForPlayer[playerid] += PropInfo[propid][PropEarning];
        GivePlayerMoney(playerid, (0-PropInfo[propid][PropValue]));
        format(str, 128, "Vocк comprou a propriedade de \"%s\" por $%d", PropInfo[propid][PropName], PropInfo[propid][PropValue]);
        SendClientMessage(playerid, 0xFFFF00AA, str);
        format(str, 128, "%s Comprou a propriedade \"%s\".", pName, PropInfo[propid][PropName]);
        SendClientMessageToAllEx(playerid, 0xFFFF00AA, str);
        PlayerProps[playerid]++;
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/vender", true) == 0 || strcmp(cmd, "/sellprop", true) == 0)
    {
        new str[128];
        new propid = IsPlayerNearProperty(playerid);
        if(propid == -1)
        {
            SendClientMessage(playerid, 0xFF0000AA, "Vocк precisa estar mais perto da propriedade.");
            return 1;
        }
    if(PropInfo[propid][PropIsBought] == 1)
        {
            new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
            if(ownerid != playerid)
            {
                SendClientMessage(playerid, 0xFF0000AA, "Vocк nгo possui esta propriedade!");
                return 1;
            }
        }
        if(PropInfo[propid][PropIsBought] && PropInfo[propid][PropUnbuyableTime] == 1)
        {
        new pName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pName, sizeof(pName));
        format(PropInfo[propid][PropOwner], MAX_PLAYER_NAME, "Ninguem");
        PropInfo[propid][PropIsBought] = 0;
        PropInfo[propid][PropUnbuyableTime] = 0;
        GivePlayerMoney(playerid, (PropInfo[propid][PropValue]/2));
        format(str, 128, "Vocк vendeu sua propriedade \"%s\" por 50% do valor atual: $%d", PropInfo[propid][PropName], PropInfo[propid][PropValue]/2);
        SendClientMessage(playerid, 0xFFFF00AA, str);
        format(str, 128, "%s vendeu a propriedade \"%s\".", pName, PropInfo[propid][PropName]);
        SendClientMessageToAllEx(playerid, 0xFFFF00AA, str);
        PlayerProps[playerid]--;
        EarningsForPlayer[playerid] -= PropInfo[propid][PropEarning];
        } else
        {
        SendClientMessage(playerid, -1, "Vocк nгo й dono desta propriedade!");
        }
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/minhasprops", true) == 0 || strcmp(cmd, "/myprops", true) == 0)
    {
        new str[128], ownerid;
        #if ENABLE_LOGIN_SYSTEM == 1
        if(Logged[playerid] == 0)
        {
            format(str, 128, "You have to login before you can buy or sell properties! Use: %s", LOGIN_COMMAND);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        #endif
        if(PlayerProps[playerid] == 0)
        {
            SendClientMessage(playerid, 0xFF0000AA, "Vocк nгo possui propriedades!");
            return 1;
        }
        format(str, 128, "|==================Suas %d propriedades: ==================|", PlayerProps[playerid]);
        SendClientMessage(playerid, 0x99FF66AA, str);
        for(new propid; propid < PropertiesAmount; propid++)
        {
            if(PropInfo[propid][PropIsBought] == 1)
            {
                ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
                if(ownerid == playerid)
                {
                    format(str, 128, ">> \"%s\"   Valor: $%d   Recebe: $%d Tempo: %d", PropInfo[propid][PropName], PropInfo[propid][PropValue], PropInfo[propid][PropEarning],PropInfo[propid][PropUnbuyableTime]);
                    SendClientMessage(playerid, 0x99FF66AA, str);
                }
            }
        }
        SendClientMessage(playerid, 0x99FF66AA, "|===========================================================|");
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/vtodasprops", true)==0)
    {
        if(IsPlayerAdmin(playerid))
        {
            for(new propid; propid<PropertiesAmount; propid++)
            {
                format(PropInfo[propid][PropOwner], MAX_PLAYER_NAME, "Ninguem");
                PropInfo[propid][PropIsBought] = 0;
                PropInfo[propid][PropUnbuyableTime] = 0;
            }
            for(new i; i<MAX_PLAYERS; i++)
            {
                if(IsPlayerConnected(i))
                {
                    PlayerProps[i] = 0;
                }
            }
            new str[128], pName[24];
            GetPlayerName(playerid, pName, 24);
            format(str, 128, "Admin %s vendeu todas as propriedades!", pName);
            SendClientMessageToAll(0xFFCC66AA, str);
        }
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    return 0;
}


public OnPlayerPickUpPickup(playerid, pickupid)
{
    new propid = -1;
    for(new id; id<MAX_PROPERTIES; id++)
    {
        if(PropInfo[id][PickupNr] == pickupid)
        {
            propid = id;
            break;
        }
    }
    if(propid != -1)
    {
        new str[128];
        format(str, 128, "~y~\"%s\"~n~~r~Valor: ~y~$%d~n~~r~Lucro: ~y~$%d~n~~r~Dono: ~y~%s", PropInfo[propid][PropName], PropInfo[propid][PropValue], PropInfo[propid][PropEarning], PropInfo[propid][PropOwner]);
        GameTextForPlayer(playerid, str, 6000, 3);
    }
    return 1;
}

stock LoadProperties()
{
    if(fexist("ladmin/Propriedades.txt"))
    {
        CountProperties();
        new Argument[9][70];
        new entry[256], BoughtProps;
        new File: propfile = fopen("ladmin/Propriedades.txt", io_read);
        if (propfile)
        {
            for(new id; id<PropertiesAmount; id++)
            {
                fread(propfile, entry);
                split(entry, Argument, ',');
                format(PropInfo[id][PropName], 64, "%s", Argument[0]);
                PropInfo[id][PropX] = floatstr(Argument[1]);
                PropInfo[id][PropY] = floatstr(Argument[2]);
                PropInfo[id][PropZ] = floatstr(Argument[3]);
                PropInfo[id][PropValue] = strval(Argument[4]);
                PropInfo[id][PropEarning] = strval(Argument[5]);
                format(PropInfo[id][PropOwner], MAX_PLAYER_NAME, "%s", Argument[6]);
                PropInfo[id][PropIsBought] = strval(Argument[7]);
                PropInfo[id][PropUnbuyableTime] = strval(Argument[8]);
                PropInfo[id][PickupNr] = CreatePickup(1273, 1, PropInfo[id][PropX], PropInfo[id][PropY], PropInfo[id][PropZ]);
                if(PropInfo[id][PropIsBought] == 1)
                {
                    BoughtProps++;
                }
            }
            fclose(propfile);
            printf("===================================");
            printf("||Foram localizadas %i propriedades||", PropertiesAmount);
            printf("||%i das propriedades possuem dono.||", BoughtProps);
            printf("===================================");
        }
    }
}

stock SaveProperties()
{
    new entry[256];
    new File: propfile = fopen("ladmin/Propriedades.txt", io_write);
    for(new id; id<PropertiesAmount; id++)
    {
        format(entry, 128, "%s,%.2f,%.2f,%.2f,%d,%d,%s,%d,%d \r\n",PropInfo[id][PropName], PropInfo[id][PropX], PropInfo[id][PropY], PropInfo[id][PropZ], PropInfo[id][PropValue], PropInfo[id][PropEarning], PropInfo[id][PropOwner], PropInfo[id][PropIsBought], PropInfo[id][PropUnbuyableTime]);
        fwrite(propfile, entry);
    }
    printf("Salvas %d Propiedades!", PropertiesAmount);
    fclose(propfile);
}

forward split(const strsrc[], strdest[][], delimiter);
public split(const strsrc[], strdest[][], delimiter)
{
    new i, li;
    new aNum;
    new len;
    while(i <= strlen(strsrc)){
        if(strsrc[i]==delimiter || i==strlen(strsrc)){
            len = strmid(strdest[aNum], strsrc, li, i, 128);
            strdest[aNum][len] = 0;
            li = i+1;
            aNum++;
        }
        i++;
    }
    return 1;
}

stock CountProperties()
{
    new entry[256];
    new File: propfile = fopen("ladmin/Propriedades.txt", io_read);
    while(fread(propfile, entry, 256))
    {
        PropertiesAmount++;
    }
    fclose(propfile);
}

forward IsPlayerNearProperty(playerid);
public IsPlayerNearProperty(playerid)
{
    new Float:Distance;
    for(new prop; prop<PropertiesAmount; prop++)
    {
        Distance = GetDistanceToProperty(playerid, prop);
        if(Distance < 1.0)
        {
            return prop;
        }
    }
    return -1;
}

forward Float:GetDistanceToProperty(playerid, Property);
public Float:GetDistanceToProperty(playerid, Property)
{
    new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
    GetPlayerPos(playerid,x1,y1,z1);
    x2 = PropInfo[Property][PropX];
    y2 = PropInfo[Property][PropY];
    z2 = PropInfo[Property][PropZ];
    return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}

stock GetPlayerID(const Name[])
{
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            new pName[MAX_PLAYER_NAME];
            GetPlayerName(i, pName, sizeof(pName));
            if(strcmp(Name, pName, true)==0)
            {
                return i;
            }
        }
    }
    return -1;
}

stock SendClientMessageToAllEx(exeption, color, const message[])
{
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(i != exeption)
            {
                SendClientMessage(i, color, message);
            }
        }
    }
}

forward UpdateUnbuyableTime();
public UpdateUnbuyableTime()
{
    for(new propid; propid<PropertiesAmount; propid++)
    {
        if(PropInfo[propid][PropIsBought] == 1)
        {
            if(PropInfo[propid][PropUnbuyableTime] > 0)
            {
                PropInfo[propid][PropUnbuyableTime]--;
            }
        }
    }
}

stock encodepass(buf[]) {
    new length=strlen(buf);
    new s1 = 1;
    new s2 = 0;
    new n;
    for (n=0; n<length; n++)
    {
       s1 = (s1 + buf[n]) % 65521;
       s2 = (s2 + s1)     % 65521;
    }
    return (s2 << 16) + s1;
}

forward MapIconStreamer();
public MapIconStreamer()
{
    for(new i; i<MP; i++)
    {
        if(IsPlayerConnected(i))
        {
            new Float:SmallestDistance = 99999.9;
            new CP, Float:OldDistance;
            for(new propid; propid<PropertiesAmount; propid++)
            {
                OldDistance = GetDistanceToProperty(i, propid);
                if(OldDistance < SmallestDistance)
                {
                    SmallestDistance = OldDistance;
                    CP = propid;
                }
            }
            RemovePlayerMapIcon(i, 31);
            if(PropInfo[CP][PropIsBought] == 1)
            {
                SetPlayerMapIcon(i, 31, PropInfo[CP][PropX], PropInfo[CP][PropY], PropInfo[CP][PropZ], 32, 0);
            }
            else
            {
                SetPlayerMapIcon(i, 31, PropInfo[CP][PropX], PropInfo[CP][PropY], PropInfo[CP][PropZ], 31, 0);
            }
        }
    }
}

forward PropertyPayout();
public PropertyPayout()
{
    new str[64];
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(PlayerProps[i] > 0)
            {
                GivePlayerMoney(i, EarningsForPlayer[i]);
                format(str, 64, "Vocк ganhou $%d de suas propriedades!", EarningsForPlayer[i]);
                SendClientMessage(i, 0xFFFF00AA, str);
            }
        }
    }
}
Reply
#3

Tenta... nгo sei se й mas nгo custa kk, tentei ajudar

pawn Код:
/*===================================================================================================*\
||===================================================================================================||
||                ________    ________    ___    _    ______     ______     ________                 ||
||          \    |   _____|  |  ____  |  |   \  | |  |   _  \   |  _   \   |  ____  |    /           ||
||  ======== \   |  |_____   | |____| |  | |\ \ | |  |  | |  |  | |_|  /   | |____| |   / ========   ||
||            |  | _____  |  |  ____  |  | | \ \| |  |  | |  |  |  _  \    |  ____  |  |             ||
||  ======== /    ______| |  | |    | |  | |  \ \ |  |  |_|  |  | |  \ \   | |    | |   \ ========   ||
||          /    |________|  |_|    |_|  |_|   \__|  |______/   |_|   \_|  |_|    |_|    \           ||
||                                                                                                   ||
||                                                                                                   ||
||                                        Property-Filterscript                                      ||
||                                      Traduзгo 1.0 Phoenix Encoderґs                               ||
||===================================================================================================||
||                           Criado em 5 de junho 2008 by =>Sandra<=                                 ||
||                                    Nгo remova os creditos   !!                                    ||
\*===================================================================================================*/

//luck.phoenix@hotmail.com participe de nossa equipe !!!
#include <a_samp>
#include <dini>

#define MAX_PROPERTIES 100
#define MAX_PROPERTIES_PER_PLAYER 20
#define UNBUYABLETIME 30  //If a propertie is bought, someone else have to wait this number of minutes before he/she can buy it.

#define ENABLE_LOGIN_SYSTEM 0
#define ENABLE_MAP_ICON_STREAMER 1

new PropertiesAmount;
new MP;
enum propinfo
{
    PropName[64],
    Float:PropX,
    Float:PropY,
    Float:PropZ,
    PropIsBought,
    PropUnbuyableTime,
    PropOwner[MAX_PLAYER_NAME],
    PropValue,
    PropEarning,
    PickupNr,
}
new PropInfo[MAX_PROPERTIES][propinfo]; //CarInfo
new PlayerProps[MAX_PLAYERS];
new EarningsForPlayer[MAX_PLAYERS];
new Logged[MAX_PLAYERS];

public OnFilterScriptInit()
{
    LoadProperties();
    MP = GetMaxPlayers();
    for(new i; i<MP; i++)
    {
        if(IsPlayerConnected(i))
        {
            new pName[MAX_PLAYER_NAME];
            GetPlayerName(i, pName, MAX_PLAYER_NAME);
            for(new propid; propid < PropertiesAmount; propid++)
            {
                if(PropInfo[propid][PropIsBought] == 1)
                {
                    if(strcmp(PropInfo[propid][PropOwner], pName, true)==0)
                    {
                        EarningsForPlayer[i] += PropInfo[propid][PropEarning];
                        PlayerProps[i]++;
                    }
                }
            }
        }
    }
    SetTimer("UpdateUnbuyableTime", 60000, 1);
    #if ENABLE_MAP_ICON_STREAMER == 1
    SetTimer("MapIconStreamer", 500, 1);
    #endif
    SetTimer("PropertyPayout", 20000, 1);
    print("-------------------------------------------------");
    print("Property-System by =>Sandra<= Carregado com sucesso!");
    print("-------------------------------------------------");
    return 1;
}

public OnFilterScriptExit()
{
    SaveProperties();
    print("Propriedades salvadas!");
    return 1;
}

public OnPlayerConnect(playerid)
{
    PlayerProps[playerid] = 0;
    Logged[playerid] = 0;
    EarningsForPlayer[playerid] = 0;
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
    for(new propid; propid < PropertiesAmount; propid++)
    {
        if(PropInfo[propid][PropIsBought] == 1)
        {
            if(strcmp(PropInfo[propid][PropOwner], pName, true)==0)
            {
                EarningsForPlayer[playerid] += PropInfo[propid][PropEarning];
                PlayerProps[playerid]++;
            }
        }
    }
    if(PlayerProps[playerid] > 0)
    {
        new str[128];
        format(str, 128, "Vocк tem atualmente %d propriedades. use: /minhasprops para saber as info de suas propriedades.", PlayerProps[playerid]);
        SendClientMessage(playerid, 0x99FF66AA, str);
    }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    return 1;
}

public OnPlayerText(playerid, text[])
{
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256], idx;
    //new tmp[256];
    cmd = strtok(cmdtext, idx);
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/ajudaprops", true)==0 || strcmp(cmd, "/prophelp", true)==0)
    {
        SendClientMessage(playerid, 0x6699FFAA, "|=========================================================|");
       // new str[128];
        SendClientMessage(playerid, 0x6699FFAA, "Comandos de Props:");
        SendClientMessage(playerid, 0x66CCFFAA, "/comprar >> para comprar uma propriedade.");
        SendClientMessage(playerid, 0x66CCFFAA, "/vender >> para vender sua propriedade.");
        SendClientMessage(playerid, 0x66CCFFAA, "/minhasprops >> Para ver as info de suas propriedades.");
        if(IsPlayerAdmin(playerid))
        {
            SendClientMessage(playerid, 0x66CCFFAA, "/vtodasprops [Admin cmd] ==>> para vender todas as props dos jogadores.");
        }
        SendClientMessage(playerid, 0x6699FFAA, "|=========================================================|");
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/comprar", true)==0 || strcmp(cmd, "/buyprop", true)==0)
    {
        new str[128];

        new propid = IsPlayerNearProperty(playerid);

        if(propid == -1)
        {
            SendClientMessage(playerid, 0xFF0000AA, "Vocк tem que estar mais perto da propriedade.");
            return 1;
        }
        if(PlayerProps[playerid] == MAX_PROPERTIES_PER_PLAYER)
        {
            format(str, 128, "Vocк ja tem %d propriedades, vocк nгo pode comprar mais propriedades!", PlayerProps[playerid]);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        if(PropInfo[propid][PropIsBought] == 1)
        {
            new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
            if(ownerid == playerid)
            {
                SendClientMessage(playerid, 0xFF0000AA, "Vocк ja й dono desta propriedade.");
                return 1;
            }
            else
            {
                if(PropInfo[propid][PropUnbuyableTime] > 0)
                {
                    format(str, 128, "Esta propriedade jб foi comprada por %s. Vocк vai ter que esperar %d minutos antes de compra-la novamente.", PropInfo[propid][PropOwner], PropInfo[propid][PropUnbuyableTime]);
                    SendClientMessage(playerid, 0xFF0000AA, str);
                    return 1;
                }
            }
        }
        if(GetPlayerMoney(playerid) < PropInfo[propid][PropValue])
        {
            format(str, 128, "Vocк nгo tem dinheiro suficiente para comprar esta propriedade! Vocк precisa de $%d", PropInfo[propid][PropValue]);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        new pName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pName, sizeof(pName));
        if(PropInfo[propid][PropIsBought] && PropInfo[propid][PropUnbuyableTime] == 0)
        {
            new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
            if(IsPlayerConnected(ownerid))
            {
            format(str, 128, "%s Comprou sua propriedade \"%s\". Vocк ganhou 50% do valor atual ($%d)", pName, PropInfo[propid][PropName], (PropInfo[propid][PropValue]/2));
            GivePlayerMoney(ownerid, (PropInfo[propid][PropValue]/2));
            SendClientMessage(ownerid, 0xFFFF00AA, str);
            PlayerProps[ownerid]--;
            }else{
            format(str, 128,"/ladmin/users/%s.sav",PropInfo[propid][PropOwner]);
            dini_IntSet(str,"Money",dini_Int(str,"Money")+PropInfo[propid][PropValue]/2);
            }
        }
        PropInfo[propid][PropOwner] = pName;
        PropInfo[propid][PropIsBought] = 1;
        PropInfo[propid][PropUnbuyableTime] = UNBUYABLETIME;
        EarningsForPlayer[playerid] += PropInfo[propid][PropEarning];
        GivePlayerMoney(playerid, (0-PropInfo[propid][PropValue]));
        format(str, 128, "Vocк comprou a propriedade de \"%s\" por $%d", PropInfo[propid][PropName], PropInfo[propid][PropValue]);
        SendClientMessage(playerid, 0xFFFF00AA, str);
        format(str, 128, "%s Comprou a propriedade \"%s\".", pName, PropInfo[propid][PropName]);
        SendClientMessageToAllEx(playerid, 0xFFFF00AA, str);
        PlayerProps[playerid]++;
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/vender", true) == 0 || strcmp(cmd, "/sellprop", true) == 0)
    {
        new str[128];
        new propid = IsPlayerNearProperty(playerid);
        if(propid == -1)
        {
            SendClientMessage(playerid, 0xFF0000AA, "Vocк precisa estar mais perto da propriedade.");
            return 1;
        }
    if(PropInfo[propid][PropIsBought] == 1)
        {
            new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
            if(ownerid != Player[playerid])
            {
                SendClientMessage(playerid, 0xFF0000AA, "Vocк nгo possui esta propriedade!");
                return 1;
            }
        }
        new pName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pName, sizeof(pName));
        format(PropInfo[propid][PropOwner], MAX_PLAYER_NAME, "Ninguem");
        PropInfo[propid][PropIsBought] = 0;
        PropInfo[propid][PropUnbuyableTime] = 0;
        GivePlayerMoney(playerid, (PropInfo[propid][PropValue]/2));
        format(str, 128, "Vocк vendeu sua propriedade \"%s\" por 50% do valor atual: $%d", PropInfo[propid][PropName], PropInfo[propid][PropValue]/2);
        SendClientMessage(playerid, 0xFFFF00AA, str);
        format(str, 128, "%s vendeu a propriedade \"%s\".", pName, PropInfo[propid][PropName]);
        SendClientMessageToAllEx(playerid, 0xFFFF00AA, str);
        PlayerProps[playerid]--;
        EarningsForPlayer[playerid] -= PropInfo[propid][PropEarning];
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/minhasprops", true) == 0 || strcmp(cmd, "/myprops", true) == 0)
    {
        new str[128], ownerid;
        #if ENABLE_LOGIN_SYSTEM == 1
        if(Logged[playerid] == 0)
        {
            format(str, 128, "You have to login before you can buy or sell properties! Use: %s", LOGIN_COMMAND);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        #endif
        if(PlayerProps[playerid] == 0)
        {
            SendClientMessage(playerid, 0xFF0000AA, "Vocк nгo possui propriedades!");
            return 1;
        }
        format(str, 128, "|==================Suas %d propriedades: ==================|", PlayerProps[playerid]);
        SendClientMessage(playerid, 0x99FF66AA, str);
        for(new propid; propid < PropertiesAmount; propid++)
        {
            if(PropInfo[propid][PropIsBought] == 1)
            {
                ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
                if(ownerid == playerid)
                {
                    format(str, 128, ">> \"%s\"   Valor: $%d   Recebe: $%d Tempo: %d", PropInfo[propid][PropName], PropInfo[propid][PropValue], PropInfo[propid][PropEarning],PropInfo[propid][PropUnbuyableTime]);
                    SendClientMessage(playerid, 0x99FF66AA, str);
                }
            }
        }
        SendClientMessage(playerid, 0x99FF66AA, "|===========================================================|");
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/vtodasprops", true)==0)
    {
        if(IsPlayerAdmin(playerid))
        {
            for(new propid; propid<PropertiesAmount; propid++)
            {
                format(PropInfo[propid][PropOwner], MAX_PLAYER_NAME, "Ninguem");
                PropInfo[propid][PropIsBought] = 0;
                PropInfo[propid][PropUnbuyableTime] = 0;
            }
            for(new i; i<MAX_PLAYERS; i++)
            {
                if(IsPlayerConnected(i))
                {
                    PlayerProps[i] = 0;
                }
            }
            new str[128], pName[24];
            GetPlayerName(playerid, pName, 24);
            format(str, 128, "Admin %s vendeu todas as propriedades!", pName);
            SendClientMessageToAll(0xFFCC66AA, str);
        }
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    return 0;
}


public OnPlayerPickUpPickup(playerid, pickupid)
{
    new propid = -1;
    for(new id; id<MAX_PROPERTIES; id++)
    {
        if(PropInfo[id][PickupNr] == pickupid)
        {
            propid = id;
            break;
        }
    }
    if(propid != -1)
    {
        new str[128];
        format(str, 128, "~y~\"%s\"~n~~r~Valor: ~y~$%d~n~~r~Lucro: ~y~$%d~n~~r~Dono: ~y~%s", PropInfo[propid][PropName], PropInfo[propid][PropValue], PropInfo[propid][PropEarning], PropInfo[propid][PropOwner]);
        GameTextForPlayer(playerid, str, 6000, 3);
    }
    return 1;
}

stock LoadProperties()
{
    if(fexist("ladmin/Propriedades.txt"))
    {
        CountProperties();
        new Argument[9][70];
        new entry[256], BoughtProps;
        new File: propfile = fopen("ladmin/Propriedades.txt", io_read);
        if (propfile)
        {
            for(new id; id<PropertiesAmount; id++)
            {
                fread(propfile, entry);
                split(entry, Argument, ',');
                format(PropInfo[id][PropName], 64, "%s", Argument[0]);
                PropInfo[id][PropX] = floatstr(Argument[1]);
                PropInfo[id][PropY] = floatstr(Argument[2]);
                PropInfo[id][PropZ] = floatstr(Argument[3]);
                PropInfo[id][PropValue] = strval(Argument[4]);
                PropInfo[id][PropEarning] = strval(Argument[5]);
                format(PropInfo[id][PropOwner], MAX_PLAYER_NAME, "%s", Argument[6]);
                PropInfo[id][PropIsBought] = strval(Argument[7]);
                PropInfo[id][PropUnbuyableTime] = strval(Argument[8]);
                PropInfo[id][PickupNr] = CreatePickup(1273, 1, PropInfo[id][PropX], PropInfo[id][PropY], PropInfo[id][PropZ]);
                if(PropInfo[id][PropIsBought] == 1)
                {
                    BoughtProps++;
                }
            }
            fclose(propfile);
            printf("===================================");
            printf("||Foram localizadas %i propriedades||", PropertiesAmount);
            printf("||%i das propriedades possuem dono.||", BoughtProps);
            printf("===================================");
        }
    }
}

stock SaveProperties()
{
    new entry[256];
    new File: propfile = fopen("ladmin/Propriedades.txt", io_write);
    for(new id; id<PropertiesAmount; id++)
    {
        format(entry, 128, "%s,%.2f,%.2f,%.2f,%d,%d,%s,%d,%d \r\n",PropInfo[id][PropName], PropInfo[id][PropX], PropInfo[id][PropY], PropInfo[id][PropZ], PropInfo[id][PropValue], PropInfo[id][PropEarning], PropInfo[id][PropOwner], PropInfo[id][PropIsBought], PropInfo[id][PropUnbuyableTime]);
        fwrite(propfile, entry);
    }
    printf("Salvas %d Propiedades!", PropertiesAmount);
    fclose(propfile);
}

forward split(const strsrc[], strdest[][], delimiter);
public split(const strsrc[], strdest[][], delimiter)
{
    new i, li;
    new aNum;
    new len;
    while(i <= strlen(strsrc)){
        if(strsrc[i]==delimiter || i==strlen(strsrc)){
            len = strmid(strdest[aNum], strsrc, li, i, 128);
            strdest[aNum][len] = 0;
            li = i+1;
            aNum++;
        }
        i++;
    }
    return 1;
}

stock CountProperties()
{
    new entry[256];
    new File: propfile = fopen("ladmin/Propriedades.txt", io_read);
    while(fread(propfile, entry, 256))
    {
        PropertiesAmount++;
    }
    fclose(propfile);
}

forward IsPlayerNearProperty(playerid);
public IsPlayerNearProperty(playerid)
{
    new Float:Distance;
    for(new prop; prop<PropertiesAmount; prop++)
    {
        Distance = GetDistanceToProperty(playerid, prop);
        if(Distance < 1.0)
        {
            return prop;
        }
    }
    return -1;
}

forward Float:GetDistanceToProperty(playerid, Property);
public Float:GetDistanceToProperty(playerid, Property)
{
    new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
    GetPlayerPos(playerid,x1,y1,z1);
    x2 = PropInfo[Property][PropX];
    y2 = PropInfo[Property][PropY];
    z2 = PropInfo[Property][PropZ];
    return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}

stock GetPlayerID(const Name[])
{
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            new pName[MAX_PLAYER_NAME];
            GetPlayerName(i, pName, sizeof(pName));
            if(strcmp(Name, pName, true)==0)
            {
                return i;
            }
        }
    }
    return -1;
}

stock SendClientMessageToAllEx(exeption, color, const message[])
{
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(i != exeption)
            {
                SendClientMessage(i, color, message);
            }
        }
    }
}

forward UpdateUnbuyableTime();
public UpdateUnbuyableTime()
{
    for(new propid; propid<PropertiesAmount; propid++)
    {
        if(PropInfo[propid][PropIsBought] == 1)
        {
            if(PropInfo[propid][PropUnbuyableTime] > 0)
            {
                PropInfo[propid][PropUnbuyableTime]--;
            }
        }
    }
}

stock encodepass(buf[]) {
    new length=strlen(buf);
    new s1 = 1;
    new s2 = 0;
    new n;
    for (n=0; n<length; n++)
    {
       s1 = (s1 + buf[n]) % 65521;
       s2 = (s2 + s1)     % 65521;
    }
    return (s2 << 16) + s1;
}

forward MapIconStreamer();
public MapIconStreamer()
{
    for(new i; i<MP; i++)
    {
        if(IsPlayerConnected(i))
        {
            new Float:SmallestDistance = 99999.9;
            new CP, Float:OldDistance;
            for(new propid; propid<PropertiesAmount; propid++)
            {
                OldDistance = GetDistanceToProperty(i, propid);
                if(OldDistance < SmallestDistance)
                {
                    SmallestDistance = OldDistance;
                    CP = propid;
                }
            }
            RemovePlayerMapIcon(i, 31);
            if(PropInfo[CP][PropIsBought] == 1)
            {
                SetPlayerMapIcon(i, 31, PropInfo[CP][PropX], PropInfo[CP][PropY], PropInfo[CP][PropZ], 32, 0);
            }
            else
            {
                SetPlayerMapIcon(i, 31, PropInfo[CP][PropX], PropInfo[CP][PropY], PropInfo[CP][PropZ], 31, 0);
            }
        }
    }
}

forward PropertyPayout();
public PropertyPayout()
{
    new str[64];
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(PlayerProps[i] > 0)
            {
                GivePlayerMoney(i, EarningsForPlayer[i]);
                format(str, 64, "Vocк ganhou $%d de suas propriedades!", EarningsForPlayer[i]);
                SendClientMessage(i, 0xFFFF00AA, str);
            }
        }
    }
}
Reply
#4

Justyfi o teu deu erro
Miqueias o teu deu certo mais ai quando eu compro a propriedade e dou /vender aparese q с sou dono :@
Reply
#5

Vкr agora
pawn Код:
/*===================================================================================================*\
||===================================================================================================||
||                ________    ________    ___    _    ______     ______     ________                 ||
||          \    |   _____|  |  ____  |  |   \  | |  |   _  \   |  _   \   |  ____  |    /           ||
||  ======== \   |  |_____   | |____| |  | |\ \ | |  |  | |  |  | |_|  /   | |____| |   / ========   ||
||            |  | _____  |  |  ____  |  | | \ \| |  |  | |  |  |  _  \    |  ____  |  |             ||
||  ======== /    ______| |  | |    | |  | |  \ \ |  |  |_|  |  | |  \ \   | |    | |   \ ========   ||
||          /    |________|  |_|    |_|  |_|   \__|  |______/   |_|   \_|  |_|    |_|    \           ||
||                                                                                                   ||
||                                                                                                   ||
||                                        Property-Filterscript                                      ||
||                                      Traduзгo 1.0 Phoenix Encoderґs                               ||
||===================================================================================================||
||                           Criado em 5 de junho 2008 by =>Sandra<=                                 ||
||                                    Nгo remova os creditos   !!                                    ||
\*===================================================================================================*/

//luck.phoenix@hotmail.com participe de nossa equipe !!!
#include <a_samp>
#include <dini>

#define MAX_PROPERTIES 100
#define MAX_PROPERTIES_PER_PLAYER 20
#define UNBUYABLETIME 30  //If a propertie is bought, someone else have to wait this number of minutes before he/she can buy it.

#define ENABLE_LOGIN_SYSTEM 0
#define ENABLE_MAP_ICON_STREAMER 1

new PropertiesAmount;
new MP;
enum propinfo
{
    PropName[64],
    Float:PropX,
    Float:PropY,
    Float:PropZ,
    PropIsBought,
    PropUnbuyableTime,
    PropOwner[MAX_PLAYER_NAME],
    PropValue,
    PropEarning,
    PickupNr,
}
new PropInfo[MAX_PROPERTIES][propinfo]; //CarInfo
new PlayerProps[MAX_PLAYERS];
new EarningsForPlayer[MAX_PLAYERS];
new Logged[MAX_PLAYERS];

public OnFilterScriptInit()
{
    LoadProperties();
    MP = GetMaxPlayers();
    for(new i; i<MP; i++)
    {
        if(IsPlayerConnected(i))
        {
            new pName[MAX_PLAYER_NAME];
            GetPlayerName(i, pName, MAX_PLAYER_NAME);
            for(new propid; propid < PropertiesAmount; propid++)
            {
                if(PropInfo[propid][PropIsBought] == 1)
                {
                    if(strcmp(PropInfo[propid][PropOwner], pName, true)==0)
                    {
                        EarningsForPlayer[i] += PropInfo[propid][PropEarning];
                        PlayerProps[i]++;
                    }
                }
            }
        }
    }
    SetTimer("UpdateUnbuyableTime", 60000, 1);
    #if ENABLE_MAP_ICON_STREAMER == 1
    SetTimer("MapIconStreamer", 500, 1);
    #endif
    SetTimer("PropertyPayout", 20000, 1);
    print("-------------------------------------------------");
    print("Property-System by =>Sandra<= Carregado com sucesso!");
    print("-------------------------------------------------");
    return 1;
}

public OnFilterScriptExit()
{
    SaveProperties();
    print("Propriedades salvadas!");
    return 1;
}

public OnPlayerConnect(playerid)
{
    PlayerProps[playerid] = 0;
    Logged[playerid] = 0;
    EarningsForPlayer[playerid] = 0;
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
    for(new propid; propid < PropertiesAmount; propid++)
    {
        if(PropInfo[propid][PropIsBought] == 1)
        {
            if(strcmp(PropInfo[propid][PropOwner], pName, true)==0)
            {
                EarningsForPlayer[playerid] += PropInfo[propid][PropEarning];
                PlayerProps[playerid]++;
            }
        }
    }
    if(PlayerProps[playerid] > 0)
    {
        new str[128];
        format(str, 128, "Vocк tem atualmente %d propriedades. use: /minhasprops para saber as info de suas propriedades.", PlayerProps[playerid]);
        SendClientMessage(playerid, 0x99FF66AA, str);
    }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    return 1;
}

public OnPlayerText(playerid, text[])
{
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256], idx;
    //new tmp[256];
    cmd = strtok(cmdtext, idx);
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/ajudaprops", true)==0 || strcmp(cmd, "/prophelp", true)==0)
    {
        SendClientMessage(playerid, 0x6699FFAA, "|=========================================================|");
       // new str[128];
        SendClientMessage(playerid, 0x6699FFAA, "Comandos de Props:");
        SendClientMessage(playerid, 0x66CCFFAA, "/comprar >> para comprar uma propriedade.");
        SendClientMessage(playerid, 0x66CCFFAA, "/vender >> para vender sua propriedade.");
        SendClientMessage(playerid, 0x66CCFFAA, "/minhasprops >> Para ver as info de suas propriedades.");
        if(IsPlayerAdmin(playerid))
        {
            SendClientMessage(playerid, 0x66CCFFAA, "/vtodasprops [Admin cmd] ==>> para vender todas as props dos jogadores.");
        }
        SendClientMessage(playerid, 0x6699FFAA, "|=========================================================|");
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/comprar", true)==0 || strcmp(cmd, "/buyprop", true)==0)
    {
        new str[128];

        new propid = IsPlayerNearProperty(playerid);

        if(propid == -1)
        {
            SendClientMessage(playerid, 0xFF0000AA, "Vocк tem que estar mais perto da propriedade.");
            return 1;
        }
        if(PlayerProps[playerid] == MAX_PROPERTIES_PER_PLAYER)
        {
            format(str, 128, "Vocк ja tem %d propriedades, vocк nгo pode comprar mais propriedades!", PlayerProps[playerid]);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        if(PropInfo[propid][PropIsBought] == 1)
        {
            new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
            if(ownerid == playerid)
            {
                SendClientMessage(playerid, 0xFF0000AA, "Vocк ja й dono desta propriedade.");
                return 1;
            }
            else
            {
                if(PropInfo[propid][PropUnbuyableTime] > 0)
                {
                    format(str, 128, "Esta propriedade jб foi comprada por %s. Vocк vai ter que esperar %d minutos antes de compra-la novamente.", PropInfo[propid][PropOwner], PropInfo[propid][PropUnbuyableTime]);
                    SendClientMessage(playerid, 0xFF0000AA, str);
                    return 1;
                }
            }
        }
        if(GetPlayerMoney(playerid) < PropInfo[propid][PropValue])
        {
            format(str, 128, "Vocк nгo tem dinheiro suficiente para comprar esta propriedade! Vocк precisa de $%d", PropInfo[propid][PropValue]);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        new pName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pName, sizeof(pName));
        if(PropInfo[propid][PropIsBought] && PropInfo[propid][PropUnbuyableTime] == 0)
        {
            new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
            if(IsPlayerConnected(ownerid))
            {
            format(str, 128, "%s Comprou sua propriedade \"%s\". Vocк ganhou 50% do valor atual ($%d)", pName, PropInfo[propid][PropName], (PropInfo[propid][PropValue]/2));
            GivePlayerMoney(ownerid, (PropInfo[propid][PropValue]/2));
            SendClientMessage(ownerid, 0xFFFF00AA, str);
            PlayerProps[ownerid]--;
            }else{
            format(str, 128,"/ladmin/users/%s.sav",PropInfo[propid][PropOwner]);
            dini_IntSet(str,"Money",dini_Int(str,"Money")+PropInfo[propid][PropValue]/2);
            }
        }
        PropInfo[propid][PropOwner] = pName;
        PropInfo[propid][PropIsBought] = 1;
        PropInfo[propid][PropUnbuyableTime] = UNBUYABLETIME;
        EarningsForPlayer[playerid] += PropInfo[propid][PropEarning];
        GivePlayerMoney(playerid, (0-PropInfo[propid][PropValue]));
        format(str, 128, "Vocк comprou a propriedade de \"%s\" por $%d", PropInfo[propid][PropName], PropInfo[propid][PropValue]);
        SendClientMessage(playerid, 0xFFFF00AA, str);
        format(str, 128, "%s Comprou a propriedade \"%s\".", pName, PropInfo[propid][PropName]);
        SendClientMessageToAllEx(playerid, 0xFFFF00AA, str);
        PlayerProps[playerid]++;
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/vender", true) == 0 || strcmp(cmd, "/sellprop", true) == 0)
    {
        new str[128];
        new propid = IsPlayerNearProperty(playerid);
        if(propid == -1)
        {
            SendClientMessage(playerid, 0xFF0000AA, "Vocк precisa estar mais perto da propriedade.");
            return 1;
        }
    if(PropInfo[propid][PropIsBought] == 1)
        {
            new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
            if(ownerid != playerid)
            {
                SendClientMessage(playerid, 0xFF0000AA, "Vocк nгo possui esta propriedade!");
                return 1;
            }
        }
        if(PropInfo[propid][PropIsBought] && PropInfo[propid][PropUnbuyableTime] == 0)
        {
        new pName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pName, sizeof(pName));
        format(PropInfo[propid][PropOwner], MAX_PLAYER_NAME, "Ninguem");
        PropInfo[propid][PropIsBought] = 0;
        PropInfo[propid][PropUnbuyableTime] = 0;
        GivePlayerMoney(playerid, (PropInfo[propid][PropValue]/2));
        format(str, 128, "Vocк vendeu sua propriedade \"%s\" por 50% do valor atual: $%d", PropInfo[propid][PropName], PropInfo[propid][PropValue]/2);
        SendClientMessage(playerid, 0xFFFF00AA, str);
        format(str, 128, "%s vendeu a propriedade \"%s\".", pName, PropInfo[propid][PropName]);
        SendClientMessageToAllEx(playerid, 0xFFFF00AA, str);
        PlayerProps[playerid]--;
        EarningsForPlayer[playerid] -= PropInfo[propid][PropEarning];
        } else
        {
        SendClientMessage(playerid, -1, "Vocк nгo й dono desta propriedade!");
        }
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/minhasprops", true) == 0 || strcmp(cmd, "/myprops", true) == 0)
    {
        new str[128], ownerid;
        #if ENABLE_LOGIN_SYSTEM == 1
        if(Logged[playerid] == 0)
        {
            format(str, 128, "You have to login before you can buy or sell properties! Use: %s", LOGIN_COMMAND);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        #endif
        if(PlayerProps[playerid] == 0)
        {
            SendClientMessage(playerid, 0xFF0000AA, "Vocк nгo possui propriedades!");
            return 1;
        }
        format(str, 128, "|==================Suas %d propriedades: ==================|", PlayerProps[playerid]);
        SendClientMessage(playerid, 0x99FF66AA, str);
        for(new propid; propid < PropertiesAmount; propid++)
        {
            if(PropInfo[propid][PropIsBought] == 1)
            {
                ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
                if(ownerid == playerid)
                {
                    format(str, 128, ">> \"%s\"   Valor: $%d   Recebe: $%d Tempo: %d", PropInfo[propid][PropName], PropInfo[propid][PropValue], PropInfo[propid][PropEarning],PropInfo[propid][PropUnbuyableTime]);
                    SendClientMessage(playerid, 0x99FF66AA, str);
                }
            }
        }
        SendClientMessage(playerid, 0x99FF66AA, "|===========================================================|");
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/vtodasprops", true)==0)
    {
        if(IsPlayerAdmin(playerid))
        {
            for(new propid; propid<PropertiesAmount; propid++)
            {
                format(PropInfo[propid][PropOwner], MAX_PLAYER_NAME, "Ninguem");
                PropInfo[propid][PropIsBought] = 0;
                PropInfo[propid][PropUnbuyableTime] = 0;
            }
            for(new i; i<MAX_PLAYERS; i++)
            {
                if(IsPlayerConnected(i))
                {
                    PlayerProps[i] = 0;
                }
            }
            new str[128], pName[24];
            GetPlayerName(playerid, pName, 24);
            format(str, 128, "Admin %s vendeu todas as propriedades!", pName);
            SendClientMessageToAll(0xFFCC66AA, str);
        }
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    return 0;
}


public OnPlayerPickUpPickup(playerid, pickupid)
{
    new propid = -1;
    for(new id; id<MAX_PROPERTIES; id++)
    {
        if(PropInfo[id][PickupNr] == pickupid)
        {
            propid = id;
            break;
        }
    }
    if(propid != -1)
    {
        new str[128];
        format(str, 128, "~y~\"%s\"~n~~r~Valor: ~y~$%d~n~~r~Lucro: ~y~$%d~n~~r~Dono: ~y~%s", PropInfo[propid][PropName], PropInfo[propid][PropValue], PropInfo[propid][PropEarning], PropInfo[propid][PropOwner]);
        GameTextForPlayer(playerid, str, 6000, 3);
    }
    return 1;
}

stock LoadProperties()
{
    if(fexist("ladmin/Propriedades.txt"))
    {
        CountProperties();
        new Argument[9][70];
        new entry[256], BoughtProps;
        new File: propfile = fopen("ladmin/Propriedades.txt", io_read);
        if (propfile)
        {
            for(new id; id<PropertiesAmount; id++)
            {
                fread(propfile, entry);
                split(entry, Argument, ',');
                format(PropInfo[id][PropName], 64, "%s", Argument[0]);
                PropInfo[id][PropX] = floatstr(Argument[1]);
                PropInfo[id][PropY] = floatstr(Argument[2]);
                PropInfo[id][PropZ] = floatstr(Argument[3]);
                PropInfo[id][PropValue] = strval(Argument[4]);
                PropInfo[id][PropEarning] = strval(Argument[5]);
                format(PropInfo[id][PropOwner], MAX_PLAYER_NAME, "%s", Argument[6]);
                PropInfo[id][PropIsBought] = strval(Argument[7]);
                PropInfo[id][PropUnbuyableTime] = strval(Argument[8]);
                PropInfo[id][PickupNr] = CreatePickup(1273, 1, PropInfo[id][PropX], PropInfo[id][PropY], PropInfo[id][PropZ]);
                if(PropInfo[id][PropIsBought] == 1)
                {
                    BoughtProps++;
                }
            }
            fclose(propfile);
            printf("===================================");
            printf("||Foram localizadas %i propriedades||", PropertiesAmount);
            printf("||%i das propriedades possuem dono.||", BoughtProps);
            printf("===================================");
        }
    }
}

stock SaveProperties()
{
    new entry[256];
    new File: propfile = fopen("ladmin/Propriedades.txt", io_write);
    for(new id; id<PropertiesAmount; id++)
    {
        format(entry, 128, "%s,%.2f,%.2f,%.2f,%d,%d,%s,%d,%d \r\n",PropInfo[id][PropName], PropInfo[id][PropX], PropInfo[id][PropY], PropInfo[id][PropZ], PropInfo[id][PropValue], PropInfo[id][PropEarning], PropInfo[id][PropOwner], PropInfo[id][PropIsBought], PropInfo[id][PropUnbuyableTime]);
        fwrite(propfile, entry);
    }
    printf("Salvas %d Propiedades!", PropertiesAmount);
    fclose(propfile);
}

forward split(const strsrc[], strdest[][], delimiter);
public split(const strsrc[], strdest[][], delimiter)
{
    new i, li;
    new aNum;
    new len;
    while(i <= strlen(strsrc)){
        if(strsrc[i]==delimiter || i==strlen(strsrc)){
            len = strmid(strdest[aNum], strsrc, li, i, 128);
            strdest[aNum][len] = 0;
            li = i+1;
            aNum++;
        }
        i++;
    }
    return 1;
}

stock CountProperties()
{
    new entry[256];
    new File: propfile = fopen("ladmin/Propriedades.txt", io_read);
    while(fread(propfile, entry, 256))
    {
        PropertiesAmount++;
    }
    fclose(propfile);
}

forward IsPlayerNearProperty(playerid);
public IsPlayerNearProperty(playerid)
{
    new Float:Distance;
    for(new prop; prop<PropertiesAmount; prop++)
    {
        Distance = GetDistanceToProperty(playerid, prop);
        if(Distance < 1.0)
        {
            return prop;
        }
    }
    return -1;
}

forward Float:GetDistanceToProperty(playerid, Property);
public Float:GetDistanceToProperty(playerid, Property)
{
    new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
    GetPlayerPos(playerid,x1,y1,z1);
    x2 = PropInfo[Property][PropX];
    y2 = PropInfo[Property][PropY];
    z2 = PropInfo[Property][PropZ];
    return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}

stock GetPlayerID(const Name[])
{
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            new pName[MAX_PLAYER_NAME];
            GetPlayerName(i, pName, sizeof(pName));
            if(strcmp(Name, pName, true)==0)
            {
                return i;
            }
        }
    }
    return -1;
}

stock SendClientMessageToAllEx(exeption, color, const message[])
{
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(i != exeption)
            {
                SendClientMessage(i, color, message);
            }
        }
    }
}

forward UpdateUnbuyableTime();
public UpdateUnbuyableTime()
{
    for(new propid; propid<PropertiesAmount; propid++)
    {
        if(PropInfo[propid][PropIsBought] == 1)
        {
            if(PropInfo[propid][PropUnbuyableTime] > 0)
            {
                PropInfo[propid][PropUnbuyableTime]--;
            }
        }
    }
}

stock encodepass(buf[]) {
    new length=strlen(buf);
    new s1 = 1;
    new s2 = 0;
    new n;
    for (n=0; n<length; n++)
    {
       s1 = (s1 + buf[n]) % 65521;
       s2 = (s2 + s1)     % 65521;
    }
    return (s2 << 16) + s1;
}

forward MapIconStreamer();
public MapIconStreamer()
{
    for(new i; i<MP; i++)
    {
        if(IsPlayerConnected(i))
        {
            new Float:SmallestDistance = 99999.9;
            new CP, Float:OldDistance;
            for(new propid; propid<PropertiesAmount; propid++)
            {
                OldDistance = GetDistanceToProperty(i, propid);
                if(OldDistance < SmallestDistance)
                {
                    SmallestDistance = OldDistance;
                    CP = propid;
                }
            }
            RemovePlayerMapIcon(i, 31);
            if(PropInfo[CP][PropIsBought] == 1)
            {
                SetPlayerMapIcon(i, 31, PropInfo[CP][PropX], PropInfo[CP][PropY], PropInfo[CP][PropZ], 32, 0);
            }
            else
            {
                SetPlayerMapIcon(i, 31, PropInfo[CP][PropX], PropInfo[CP][PropY], PropInfo[CP][PropZ], 31, 0);
            }
        }
    }
}

forward PropertyPayout();
public PropertyPayout()
{
    new str[64];
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(PlayerProps[i] > 0)
            {
                GivePlayerMoney(i, EarningsForPlayer[i]);
                format(str, 64, "Vocк ganhou $%d de suas propriedades!", EarningsForPlayer[i]);
                SendClientMessage(i, 0xFFFF00AA, str);
            }
        }
    }
}
Reply
#6

mesmo erro manow
Reply
#7

Desculpa o double post mais alguem pode me ajuda й muuito urgente
Reply
#8

Calma vou vкr.

#EDIT
Vкr agora :/
pawn Код:
/*===================================================================================================*\
||===================================================================================================||
||                ________    ________    ___    _    ______     ______     ________                 ||
||          \    |   _____|  |  ____  |  |   \  | |  |   _  \   |  _   \   |  ____  |    /           ||
||  ======== \   |  |_____   | |____| |  | |\ \ | |  |  | |  |  | |_|  /   | |____| |   / ========   ||
||            |  | _____  |  |  ____  |  | | \ \| |  |  | |  |  |  _  \    |  ____  |  |             ||
||  ======== /    ______| |  | |    | |  | |  \ \ |  |  |_|  |  | |  \ \   | |    | |   \ ========   ||
||          /    |________|  |_|    |_|  |_|   \__|  |______/   |_|   \_|  |_|    |_|    \           ||
||                                                                                                   ||
||                                                                                                   ||
||                                        Property-Filterscript                                      ||
||                                      Traduзгo 1.0 Phoenix Encoderґs                               ||
||===================================================================================================||
||                           Criado em 5 de junho 2008 by =>Sandra<=                                 ||
||                                    Nгo remova os creditos   !!                                    ||
\*===================================================================================================*/

//luck.phoenix@hotmail.com participe de nossa equipe !!!
#include <a_samp>
#include <dini>

#define MAX_PROPERTIES 100
#define MAX_PROPERTIES_PER_PLAYER 20
#define UNBUYABLETIME 30  //If a propertie is bought, someone else have to wait this number of minutes before he/she can buy it.

#define ENABLE_LOGIN_SYSTEM 0
#define ENABLE_MAP_ICON_STREAMER 1

new PropertiesAmount;
new MP;
enum propinfo
{
    PropName[64],
    Float:PropX,
    Float:PropY,
    Float:PropZ,
    PropIsBought,
    PropUnbuyableTime,
    PropOwner[MAX_PLAYER_NAME],
    PropValue,
    PropEarning,
    PickupNr,
}
new PropInfo[MAX_PROPERTIES][propinfo]; //CarInfo
new PlayerProps[MAX_PLAYERS];
new EarningsForPlayer[MAX_PLAYERS];
new Logged[MAX_PLAYERS];

public OnFilterScriptInit()
{
    LoadProperties();
    MP = GetMaxPlayers();
    for(new i; i<MP; i++)
    {
        if(IsPlayerConnected(i))
        {
            new pName[MAX_PLAYER_NAME];
            GetPlayerName(i, pName, MAX_PLAYER_NAME);
            for(new propid; propid < PropertiesAmount; propid++)
            {
                if(PropInfo[propid][PropIsBought] == 1)
                {
                    if(strcmp(PropInfo[propid][PropOwner], pName, true)==0)
                    {
                        EarningsForPlayer[i] += PropInfo[propid][PropEarning];
                        PlayerProps[i]++;
                    }
                }
            }
        }
    }
    SetTimer("UpdateUnbuyableTime", 60000, 1);
    #if ENABLE_MAP_ICON_STREAMER == 1
    SetTimer("MapIconStreamer", 500, 1);
    #endif
    SetTimer("PropertyPayout", 20000, 1);
    print("-------------------------------------------------");
    print("Property-System by =>Sandra<= Carregado com sucesso!");
    print("-------------------------------------------------");
    return 1;
}

public OnFilterScriptExit()
{
    SaveProperties();
    print("Propriedades salvadas!");
    return 1;
}

public OnPlayerConnect(playerid)
{
    PlayerProps[playerid] = 0;
    Logged[playerid] = 0;
    EarningsForPlayer[playerid] = 0;
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
    for(new propid; propid < PropertiesAmount; propid++)
    {
        if(PropInfo[propid][PropIsBought] == 1)
        {
            if(strcmp(PropInfo[propid][PropOwner], pName, true)==0)
            {
                EarningsForPlayer[playerid] += PropInfo[propid][PropEarning];
                PlayerProps[playerid]++;
            }
        }
    }
    if(PlayerProps[playerid] > 0)
    {
        new str[128];
        format(str, 128, "Vocк tem atualmente %d propriedades. use: /minhasprops para saber as info de suas propriedades.", PlayerProps[playerid]);
        SendClientMessage(playerid, 0x99FF66AA, str);
    }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    return 1;
}

public OnPlayerText(playerid, text[])
{
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256], idx;
    //new tmp[256];
    cmd = strtok(cmdtext, idx);
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/ajudaprops", true)==0 || strcmp(cmd, "/prophelp", true)==0)
    {
        SendClientMessage(playerid, 0x6699FFAA, "|=========================================================|");
       // new str[128];
        SendClientMessage(playerid, 0x6699FFAA, "Comandos de Props:");
        SendClientMessage(playerid, 0x66CCFFAA, "/comprar >> para comprar uma propriedade.");
        SendClientMessage(playerid, 0x66CCFFAA, "/vender >> para vender sua propriedade.");
        SendClientMessage(playerid, 0x66CCFFAA, "/minhasprops >> Para ver as info de suas propriedades.");
        if(IsPlayerAdmin(playerid))
        {
            SendClientMessage(playerid, 0x66CCFFAA, "/vtodasprops [Admin cmd] ==>> para vender todas as props dos jogadores.");
        }
        SendClientMessage(playerid, 0x6699FFAA, "|=========================================================|");
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/comprar", true)==0 || strcmp(cmd, "/buyprop", true)==0)
    {
        new str[128];

        new propid = IsPlayerNearProperty(playerid);

        if(propid == -1)
        {
            SendClientMessage(playerid, 0xFF0000AA, "Vocк tem que estar mais perto da propriedade.");
            return 1;
        }
        if(PlayerProps[playerid] == MAX_PROPERTIES_PER_PLAYER)
        {
            format(str, 128, "Vocк ja tem %d propriedades, vocк nгo pode comprar mais propriedades!", PlayerProps[playerid]);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        if(PropInfo[propid][PropIsBought] == 1)
        {
            new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
            if(ownerid == playerid)
            {
                SendClientMessage(playerid, 0xFF0000AA, "Vocк ja й dono desta propriedade.");
                return 1;
            }
            else
            {
                if(PropInfo[propid][PropUnbuyableTime] > 0)
                {
                    format(str, 128, "Esta propriedade jб foi comprada por %s. Vocк vai ter que esperar %d minutos antes de compra-la novamente.", PropInfo[propid][PropOwner], PropInfo[propid][PropUnbuyableTime]);
                    SendClientMessage(playerid, 0xFF0000AA, str);
                    return 1;
                }
            }
        }
        if(GetPlayerMoney(playerid) < PropInfo[propid][PropValue])
        {
            format(str, 128, "Vocк nгo tem dinheiro suficiente para comprar esta propriedade! Vocк precisa de $%d", PropInfo[propid][PropValue]);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        new pName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pName, sizeof(pName));
        if(PropInfo[propid][PropIsBought] && PropInfo[propid][PropUnbuyableTime] == 0)
        {
            new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
            if(IsPlayerConnected(ownerid))
            {
            format(str, 128, "%s Comprou sua propriedade \"%s\". Vocк ganhou 50% do valor atual ($%d)", pName, PropInfo[propid][PropName], (PropInfo[propid][PropValue]/2));
            GivePlayerMoney(ownerid, (PropInfo[propid][PropValue]/2));
            SendClientMessage(ownerid, 0xFFFF00AA, str);
            PlayerProps[ownerid]--;
            }else{
            format(str, 128,"/ladmin/users/%s.sav",PropInfo[propid][PropOwner]);
            dini_IntSet(str,"Money",dini_Int(str,"Money")+PropInfo[propid][PropValue]/2);
            }
        }
        PropInfo[propid][PropOwner] = pName;
        PropInfo[propid][PropIsBought] = 1;
        PropInfo[propid][PropUnbuyableTime] = UNBUYABLETIME;
        EarningsForPlayer[playerid] += PropInfo[propid][PropEarning];
        GivePlayerMoney(playerid, (0-PropInfo[propid][PropValue]));
        format(str, 128, "Vocк comprou a propriedade de \"%s\" por $%d", PropInfo[propid][PropName], PropInfo[propid][PropValue]);
        SendClientMessage(playerid, 0xFFFF00AA, str);
        format(str, 128, "%s Comprou a propriedade \"%s\".", pName, PropInfo[propid][PropName]);
        SendClientMessageToAllEx(playerid, 0xFFFF00AA, str);
        PlayerProps[playerid]++;
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/vender", true) == 0 || strcmp(cmd, "/sellprop", true) == 0)
    {
        new str[128];
        #if ENABLE_LOGIN_SYSTEM == 1
        if(Logged[playerid] == 0)
        {
            format(str, 128, "You have to login before you can buy or sell properties! Use: %s", LOGIN_COMMAND);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        #endif
        new propid = IsPlayerNearProperty(playerid);
        if(propid == -1)
        {
            SendClientMessage(playerid, 0xFF0000AA, "Vocк precisa estar mais perto da propriedade.");
            return 1;
        }
        if(PropInfo[propid][PropIsBought] == 1)
        {
            new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
            if(ownerid != playerid)
            {
                SendClientMessage(playerid, 0xFF0000AA, "Vocк nгo possui esta propriedade!");
                return 1;
            }
        }
        new pName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pName, sizeof(pName));
        format(PropInfo[propid][PropOwner], MAX_PLAYER_NAME, "Ninguem");
        PropInfo[propid][PropIsBought] = 0;
        PropInfo[propid][PropUnbuyableTime] = 0;
        GivePlayerMoney(playerid, (PropInfo[propid][PropValue]/2));
        format(str, 128, "Vocк vendeu sua propriedade \"%s\" por 50% do valor atual: $%d,-", PropInfo[propid][PropName], PropInfo[propid][PropValue]/2);
        SendClientMessage(playerid, 0xFFFF00AA, str);
        format(str, 128, "%s vendeu a propriedade \"%s\".", pName, PropInfo[propid][PropName]);
        SendClientMessageToAllEx(playerid, 0xFFFF00AA, str);
        PlayerProps[playerid]--;
        EarningsForPlayer[playerid] -= PropInfo[propid][PropEarning];
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/minhasprops", true) == 0 || strcmp(cmd, "/myprops", true) == 0)
    {
        new str[128], ownerid;
        #if ENABLE_LOGIN_SYSTEM == 1
        if(Logged[playerid] == 0)
        {
            format(str, 128, "You have to login before you can buy or sell properties! Use: %s", LOGIN_COMMAND);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        #endif
        if(PlayerProps[playerid] == 0)
        {
            SendClientMessage(playerid, 0xFF0000AA, "Vocк nгo possui propriedades!");
            return 1;
        }
        format(str, 128, "|==================Suas %d propriedades: ==================|", PlayerProps[playerid]);
        SendClientMessage(playerid, 0x99FF66AA, str);
        for(new propid; propid < PropertiesAmount; propid++)
        {
            if(PropInfo[propid][PropIsBought] == 1)
            {
                ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
                if(ownerid == playerid)
                {
                    format(str, 128, ">> \"%s\"   Valor: $%d   Recebe: $%d Tempo: %d", PropInfo[propid][PropName], PropInfo[propid][PropValue], PropInfo[propid][PropEarning],PropInfo[propid][PropUnbuyableTime]);
                    SendClientMessage(playerid, 0x99FF66AA, str);
                }
            }
        }
        SendClientMessage(playerid, 0x99FF66AA, "|===========================================================|");
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    if(strcmp(cmd, "/vtodasprops", true)==0)
    {
        if(IsPlayerAdmin(playerid))
        {
            for(new propid; propid<PropertiesAmount; propid++)
            {
                format(PropInfo[propid][PropOwner], MAX_PLAYER_NAME, "Ninguem");
                PropInfo[propid][PropIsBought] = 0;
                PropInfo[propid][PropUnbuyableTime] = 0;
            }
            for(new i; i<MAX_PLAYERS; i++)
            {
                if(IsPlayerConnected(i))
                {
                    PlayerProps[i] = 0;
                }
            }
            new str[128], pName[24];
            GetPlayerName(playerid, pName, 24);
            format(str, 128, "Admin %s vendeu todas as propriedades!", pName);
            SendClientMessageToAll(0xFFCC66AA, str);
        }
        return 1;
    }
    //================================================================================================================================
    //================================================================================================================================
    //================================================================================================================================
    return 0;
}


public OnPlayerPickUpPickup(playerid, pickupid)
{
    new propid = -1;
    for(new id; id<MAX_PROPERTIES; id++)
    {
        if(PropInfo[id][PickupNr] == pickupid)
        {
            propid = id;
            break;
        }
    }
    if(propid != -1)
    {
        new str[128];
        format(str, 128, "~y~\"%s\"~n~~r~Valor: ~y~$%d~n~~r~Lucro: ~y~$%d~n~~r~Dono: ~y~%s", PropInfo[propid][PropName], PropInfo[propid][PropValue], PropInfo[propid][PropEarning], PropInfo[propid][PropOwner]);
        GameTextForPlayer(playerid, str, 6000, 3);
    }
    return 1;
}

stock LoadProperties()
{
    if(fexist("ladmin/Propriedades.txt"))
    {
        CountProperties();
        new Argument[9][70];
        new entry[256], BoughtProps;
        new File: propfile = fopen("ladmin/Propriedades.txt", io_read);
        if (propfile)
        {
            for(new id; id<PropertiesAmount; id++)
            {
                fread(propfile, entry);
                split(entry, Argument, ',');
                format(PropInfo[id][PropName], 64, "%s", Argument[0]);
                PropInfo[id][PropX] = floatstr(Argument[1]);
                PropInfo[id][PropY] = floatstr(Argument[2]);
                PropInfo[id][PropZ] = floatstr(Argument[3]);
                PropInfo[id][PropValue] = strval(Argument[4]);
                PropInfo[id][PropEarning] = strval(Argument[5]);
                format(PropInfo[id][PropOwner], MAX_PLAYER_NAME, "%s", Argument[6]);
                PropInfo[id][PropIsBought] = strval(Argument[7]);
                PropInfo[id][PropUnbuyableTime] = strval(Argument[8]);
                PropInfo[id][PickupNr] = CreatePickup(1273, 1, PropInfo[id][PropX], PropInfo[id][PropY], PropInfo[id][PropZ]);
                if(PropInfo[id][PropIsBought] == 1)
                {
                    BoughtProps++;
                }
            }
            fclose(propfile);
            printf("===================================");
            printf("||Foram localizadas %i propriedades||", PropertiesAmount);
            printf("||%i das propriedades possuem dono.||", BoughtProps);
            printf("===================================");
        }
    }
}

stock SaveProperties()
{
    new entry[256];
    new File: propfile = fopen("ladmin/Propriedades.txt", io_write);
    for(new id; id<PropertiesAmount; id++)
    {
        format(entry, 128, "%s,%.2f,%.2f,%.2f,%d,%d,%s,%d,%d \r\n",PropInfo[id][PropName], PropInfo[id][PropX], PropInfo[id][PropY], PropInfo[id][PropZ], PropInfo[id][PropValue], PropInfo[id][PropEarning], PropInfo[id][PropOwner], PropInfo[id][PropIsBought], PropInfo[id][PropUnbuyableTime]);
        fwrite(propfile, entry);
    }
    printf("Salvas %d Propiedades!", PropertiesAmount);
    fclose(propfile);
}

forward split(const strsrc[], strdest[][], delimiter);
public split(const strsrc[], strdest[][], delimiter)
{
    new i, li;
    new aNum;
    new len;
    while(i <= strlen(strsrc)){
        if(strsrc[i]==delimiter || i==strlen(strsrc)){
            len = strmid(strdest[aNum], strsrc, li, i, 128);
            strdest[aNum][len] = 0;
            li = i+1;
            aNum++;
        }
        i++;
    }
    return 1;
}

stock CountProperties()
{
    new entry[256];
    new File: propfile = fopen("ladmin/Propriedades.txt", io_read);
    while(fread(propfile, entry, 256))
    {
        PropertiesAmount++;
    }
    fclose(propfile);
}

forward IsPlayerNearProperty(playerid);
public IsPlayerNearProperty(playerid)
{
    new Float:Distance;
    for(new prop; prop<PropertiesAmount; prop++)
    {
        Distance = GetDistanceToProperty(playerid, prop);
        if(Distance < 1.0)
        {
            return prop;
        }
    }
    return -1;
}

forward Float:GetDistanceToProperty(playerid, Property);
public Float:GetDistanceToProperty(playerid, Property)
{
    new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
    GetPlayerPos(playerid,x1,y1,z1);
    x2 = PropInfo[Property][PropX];
    y2 = PropInfo[Property][PropY];
    z2 = PropInfo[Property][PropZ];
    return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}

stock GetPlayerID(const Name[])
{
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            new pName[MAX_PLAYER_NAME];
            GetPlayerName(i, pName, sizeof(pName));
            if(strcmp(Name, pName, true)==0)
            {
                return i;
            }
        }
    }
    return -1;
}

stock SendClientMessageToAllEx(exeption, color, const message[])
{
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(i != exeption)
            {
                SendClientMessage(i, color, message);
            }
        }
    }
}

forward UpdateUnbuyableTime();
public UpdateUnbuyableTime()
{
    for(new propid; propid<PropertiesAmount; propid++)
    {
        if(PropInfo[propid][PropIsBought] == 1)
        {
            if(PropInfo[propid][PropUnbuyableTime] > 0)
            {
                PropInfo[propid][PropUnbuyableTime]--;
            }
        }
    }
}

stock encodepass(buf[]) {
    new length=strlen(buf);
    new s1 = 1;
    new s2 = 0;
    new n;
    for (n=0; n<length; n++)
    {
       s1 = (s1 + buf[n]) % 65521;
       s2 = (s2 + s1)     % 65521;
    }
    return (s2 << 16) + s1;
}

forward MapIconStreamer();
public MapIconStreamer()
{
    for(new i; i<MP; i++)
    {
        if(IsPlayerConnected(i))
        {
            new Float:SmallestDistance = 99999.9;
            new CP, Float:OldDistance;
            for(new propid; propid<PropertiesAmount; propid++)
            {
                OldDistance = GetDistanceToProperty(i, propid);
                if(OldDistance < SmallestDistance)
                {
                    SmallestDistance = OldDistance;
                    CP = propid;
                }
            }
            RemovePlayerMapIcon(i, 31);
            if(PropInfo[CP][PropIsBought] == 1)
            {
                SetPlayerMapIcon(i, 31, PropInfo[CP][PropX], PropInfo[CP][PropY], PropInfo[CP][PropZ], 32, 0);
            }
            else
            {
                SetPlayerMapIcon(i, 31, PropInfo[CP][PropX], PropInfo[CP][PropY], PropInfo[CP][PropZ], 31, 0);
            }
        }
    }
}

forward PropertyPayout();
public PropertyPayout()
{
    new str[64];
    for(new i; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(PlayerProps[i] > 0)
            {
                GivePlayerMoney(i, EarningsForPlayer[i]);
                format(str, 64, "Vocк ganhou $%d de suas propriedades!", EarningsForPlayer[i]);
                SendClientMessage(i, 0xFFFF00AA, str);
            }
        }
    }
}
Reply
#9

Agr ta igual o primeiro q eu postei sem ser o dono vende
Reply
#10

Adiciona isso no comando /comprar
pawn Код:
#if ENABLE_LOGIN_SYSTEM == 0
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)