[Another little help? :D] Sistema de Propiedades
#1

Hola gente!
Bueno, actualmente estoy usando un sistema de propiedades creado por algun autor que no se quien es, porque el FS lo descargue de un post que decia "no estan los creditos porque un amigo los borro".

Bueno, mi problema es que si yo compro una propiedad ya comprada por otro user, crashea el servidor.

El codigo del comando /comprar es este:
pawn Код:
if(strcmp(cmd, "/comprar", true) == 0) {
        new property=999;

        if(IsPlayerInCheckpoint(playerid)) {
            switch (playerCheckpoint[playerid]) {
                case CP_ALAHAM:{
                    property = P_ALAHAM;
                }
                case CP_DIDERSACHS:{
                    property = P_DIDERSACHS;
                }
                case CP_BAR:{
                    property = P_BAR;
                }
                case CP_HAIRSTUD:{
                    property = P_HAIRSTUD;
                }
                case CP_ZIP:{
                    property = P_ZIP;
                }
                case CP_BINCO:{
                    property = P_BINCO;
                }
                case CP_TATOO:{
                    property = P_TATOO;
                }
                case CP_GOLF:{
                    property = P_GOLF;
                }
                case CP_WANG:{
                    property = P_WANG;
                }
                case CP_HOTEL:{
                    property = P_HOTEL;
                }
                case CP_OTTOS:{
                    property = P_OTTOS;
                }
                case CP_DRAGON:{
                    property = P_DRAGON;
                }
                case CP_CALIGULA:{
                    property = P_CALIGULA;
                }
                case CP_SEXSHOP:{
                    property = P_SEXSHOP;
                }
                case CP_CATHAY:{
                    property = P_CATHAY;
                }
                case CP_VERONA:{
                    property = P_VERONA;
                }
                case CP_ZERORC:{
                    property = P_ZERORC;
                }
                case CP_JIZZYS:{
                    property = P_JIZZYS;
                }
                case CP_PIRAMID:{
                    property = P_PIRAMID;
                }
            }

            if(property==999) {
                SendClientMessage(playerid, COLOR_YELLOW, "Necesitas estar en el checkpoint de la propiedad para comprarla!");
                return 1;
            }

//          property--;

            if(GetPlayerMoney(playerid) < propertyValues[property]) {
                SendClientMessage(playerid, COLOR_RED, "No tienes dinero suficiente para comprar esta propiedad.");
                return 1;
            }
            if(propertyOwner[property]==playerid) {
                SendClientMessage(playerid, COLOR_RED, "Eres dueсo de esta propiedad.");
                return 1;
            }

            if(propertyOwner[property] < 999)
            {
                GetPlayerName(playerid, giveplayer, sizeof(giveplayer));
                GivePlayerMoney(propertyOwner[property], propertyValues[property]);
                format (string, sizeof(string), "Tu propiedad, %s, fue comprada por %s (id: %d).", propertyNames[property], giveplayer, playerid);
                SendClientMessage(propertyOwner[property], COLOR_RED, string);
            }

            GivePlayerMoney(playerid, -propertyValues[property]);

            propertyOwner[property] = playerid;
            propiedad[playerid] = property;

            format(string, sizeof(string), "Compraste la propiedad %s!", propertyNames[property]);
            SendClientMessage(playerid, COLOR_GREEN, string);

        } else {
            SendClientMessage(playerid, COLOR_YELLOW, "Necesitas estar en el checkpoint de la propiedad para comprarla!");
            return 1;
        }


        return 1;
    }
Se que quizas esta un poco desordenado, yo lo unico que hice fue traducirlo y arreglar algunos bugs.
Si alguien pudiera ayudarme, taria wenito.
Gracias
Reply
#2

Perdon por el doble post, pero nadie me contesto y realmente necesito ayuda con esto :_ .
No se me ocurre nada, pareciera estar todo bien en el codigo :S.
Reply
#3

No le encontrй ningun bug al cуdigo, pero el problema puede deberse al tamaсo de los arrays
( new propertyOwner[tamaсo]; ), para saber donde estб el problema comenta parte del cуdigo
pawn Код:
/*
            if(propertyOwner[property] < 999)
            {
                GetPlayerName(playerid, giveplayer, sizeof(giveplayer));
                GivePlayerMoney(propertyOwner[property], propertyValues[property]);
                format (string, sizeof(string), "Tu propiedad, %s, fue comprada por %s (id: %d).", propertyNames[property], giveplayer, playerid);
                SendClientMessage(propertyOwner[property], COLOR_RED, string);
            }
*/
si comentando esa parte no crashea el problema no es ahi, luego comenta otra parte para encontrar donde estб el bug
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)