Szerző Téma: Házrendszer  (Megtekintve 2 alkalommal)

Házrendszer
« Dátum: 2019. Április 06. - 22:27:16 »
0
Sziasztok
 
Ezt irja a ház rendszer amikor le akarom generálni.
 
error 029: invalid expression, assumed zero
 
Kód:
 
 
 

// [FS]Property-System by =>Sandra<=
// Magyarosítást és kisebb átalakításokat készítette: Adamo(adams94)
#include <a_samp>
#define MAX_PROPERTIES 100
#define MAX_PROPERTIES_PER_PLAYER 4
#define UNBUYABLETIME 15
#define ENABLE_LOGIN_SYSTEM 0
#define ENABLE_MAP_ICON_STREAMER 1
#define REGISTER_COMMAND \"/register\"
#define LOGIN_COMMAND \"/login\"
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];
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 += PropInfo[propid][PropEarning];
                        PlayerProps++;
                    }
                }
            }
        }
    }
    SetTimer(\"UpdateUnbuyableTime\", 60000, 1);
    #if ENABLE_MAP_ICON_STREAMER == 1
    SetTimer(\"MapIconStreamer\", 500, 1);
    #endif
    SetTimer(\"PropertyPayout\", 60000, 1);
    return 1;
}
public OnFilterScriptExit()
{
    SaveProperties();
    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 ENABLE_LOGIN_SYSTEM == 0
    if(PlayerProps[playerid] > 0)
    {
        new str[128];
        format(str, 128, \"Van %d házad. /myh ezzel a parancsal megnézheted.\", PlayerProps[playerid]);
        SendClientMessage(playerid, 0x99FF66AA, str);
    }
    #endif
    return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    return 1;
}
public OnPlayerText(playerid, text[])
{
    return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256],idx;)
    cmd = strtok(cmdtext, idx);
//------------------------------------------------------------------------------
    if(strcmp(cmd, \"/helphouse\", true)==0 || strcmp(cmd, \"/helph\", true)==0)
    {
        SendClientMessage(playerid, 0xFFFF00AA, \"|=========================================================|\");
        #if ENABLE_LOGIN_SYSTEM == 1
        format(str, 128, \"%s - Regisztráció, hogy legyenek saját házaid.\", REGISTER_COMMAND);
        SendClientMessage(playerid, 0x66CCFFAA, str);
        format(str, 128, \"%s - Bejelentkezés.\", LOGIN_COMMAND);
        SendClientMessage(playerid, 0x66CCFFAA, str);
        #endif
        SendClientMessage(playerid, 0x33AA33AA, \"/buyhouse, /buyh - Házvásárlás.\");
        SendClientMessage(playerid, 0x33AA33AA, \"/sellhouse, /sellh - Házeladás.\");
        SendClientMessage(playerid, 0x33AA33AA, \"/myhouse, /myh - Házaid megtekintése.\");
//        if(IsPlayerAdmin(playerid))
//        {
//            SendClientMessage(playerid, 0x66CCFFAA, \"/sellallproperties [Admin Only] ==>> To sell all properties for all players\");
//        }
        SendClientMessage(playerid, 0xFFFF00AA, \"|=========================================================|\");
        return 1;
    }
//------------------------------------------------------------------------------
    if(strcmp(cmd, \"/buyhouse\", true)==0 || strcmp(cmd, \"/buyh\", true)==0)
    {
        new str[128];
        #if ENABLE_LOGIN_SYSTEM == 1
        if(Logged[playerid] == 0)
        {
            format(str, 128, \"Elöbb jelentkezbe: %s\", LOGIN_COMMAND);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        #endif
        
        new propid = IsPlayerNearProperty(playerid);
        if(propid == -1)
        {
            SendClientMessage(playerid, 0xFF0000AA, \"Nincs ház a közelben!\");
            return 1;
        }
        if(PlayerProps[playerid] == MAX_PROPERTIES_PER_PLAYER)
        {
            format(str, 128, \"Neked már van %d házad, nem tudsz többet venni!!\", 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, \"Ez a ház már a tied!\");
                return 1;
            }
            else
            {
                if(PropInfo[propid][PropUnbuyableTime] > 0)
                {
                    format(str, 128, \"Ez a ház %s tulajdona!. Várj %d percet és elárverezik!\", PropInfo[propid][PropOwner], PropInfo[propid][PropUnbuyableTime]);
                    SendClientMessage(playerid, 0xFF0000AA, str);
                    return 1;
                }
            }
        }
        if(GetPlayerMoney(playerid) < PropInfo[propid][PropValue])
        {
            format(str, 128, \"Nincs elég pénzed!(%d$ szükséges!)\", 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]);
            format(str, 128, \"%s megvette a házad! \\\"%s\\\". Te 50százalék részvényt kaptál!(%d$)\", pName, PropInfo[propid][PropName], (PropInfo[propid][PropValue]/2));
            GivePlayerMoney(ownerid, (PropInfo[propid][PropValue]/2));
            SendClientMessage(ownerid, 0xFFFF00AA, str);
            PlayerProps[ownerid]--;
        }
        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, \"Megvetted ezt a házat: \\\"%s\\\".Ennyiért: %d$.\", PropInfo[propid][PropName], PropInfo[propid][PropValue]);
        SendClientMessage(playerid, 0xFFFF00AA, str);
        format(str, 128, \"%s megvette ezt a házat: \\\"%s\\\".\", pName, PropInfo[propid][PropName]);
        SendClientMessageToAllEx(playerid, 0xFFFF00AA, str);
        PlayerProps[playerid]++;
        return 1;
    }
//------------------------------------------------------------------------------
    if(strcmp(cmd, \"/sellhouse\", true) == 0 || strcmp(cmd, \"/sellh\", true) == 0)
    {
        new str[128];
        #if ENABLE_LOGIN_SYSTEM == 1
        if(Logged[playerid] == 0)
        {
            format(str, 128, \"Elöbb jelentkezbe: %s\", LOGIN_COMMAND);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        #endif
        new propid = IsPlayerNearProperty(playerid);
        if(propid == -1)
        {
            SendClientMessage(playerid, 0xFF0000AA, \"Nincs ház a közelben!\");
            return 1;
        }
        if(PropInfo[propid][PropIsBought] == 1)
        {
            new ownerid = GetPlayerID(PropInfo[propid][PropOwner]);
            if(ownerid != playerid)
            {
                SendClientMessage(playerid, 0xFF0000AA, \"Ez a ház nem a tied!\");
                return 1;
            }
        }
        new pName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pName, sizeof(pName));
        format(PropInfo[propid][PropOwner], MAX_PLAYER_NAME, \"Nobody\");
        PropInfo[propid][PropIsBought] = 0;
        PropInfo[propid][PropUnbuyableTime] = 0;
        GivePlayerMoney(playerid, (PropInfo[propid][PropValue]/2));
        format(str, 128, \"Eladtad ezt a házad: \\\"%s\\\", ennyiért: %d$\", PropInfo[propid][PropName], PropInfo[propid][PropValue]/2);
        SendClientMessage(playerid, 0xFFFF00AA, str);
        format(str, 128, \"%s eladta ezt a házat: \\\"%s\\\".\", pName, PropInfo[propid][PropName]);
        SendClientMessageToAllEx(playerid, 0xFFFF00AA, str);
        PlayerProps[playerid]--;
        EarningsForPlayer[playerid] -= PropInfo[propid][PropEarning];
        return 1;
    }
//------------------------------------------------------------------------------
    if(strcmp(cmd, \"/myhouse\", true) == 0 || strcmp(cmd, \"/myh\", true) == 0)
    {
        new str[128], ownerid;
        #if ENABLE_LOGIN_SYSTEM == 1
        if(Logged[playerid] == 0)
        {
            format(str, 128, \"Elöbb jelentkezbe: %s\", LOGIN_COMMAND);
            SendClientMessage(playerid, 0xFF0000AA, str);
            return 1;
        }
        #endif
        if(PlayerProps[playerid] == 0)
        {
            SendClientMessage(playerid, 0xFF0000AA, \"Nincs házad!\");
            return 1;
        }
        format(str, 128, \"|================ Van %d házad: =================|\", 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, \"Neve: \\\"%s\\\"   Értéke: %d$   Bevétel: %d$\", PropInfo[propid][PropName], PropInfo[propid][PropValue], PropInfo[propid][PropEarning]);
                     SendClientMessage(playerid, 0x99FF66AA, str);
                }
            }
        }
        SendClientMessage(playerid, 0x99FF66AA, \"|============================================|\");
        return 1;
    }
//------------------------------------------------------------------------------
    #if ENABLE_LOGIN_SYSTEM == 1
    if(strcmp(cmd, REGISTER_COMMAND, true) == 0)
    {
        new str[128];
        if(Logged[playerid] == 1) return SendClientMessage(playerid, 0xFF0000AA, \"Te már bevagy jelentkezve!\");
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            format(str, 128, \"%s <jelszó>\", REGISTER_COMMAND);
            SendClientMessage(playerid, 0xAFAFAFAA, str);
            return 1;
        }
//        if(strlen(tmp) < 5) return SendClientMessage(playerid, 0xFF9966AA, \"Password too short! At least 5 characters.\");
//        if(strlen(tmp) > 20) return SendClientMessage(playerid, 0xFF9966AA, \"Password too long! Max 20 characters.\");
        new pName[MAX_PLAYER_NAME], pass;
        GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
        pass = dini_Int(\"PropertySystem/PlayerAccounts.txt\", pName);
        if(pass == 0)
        {
            dini_IntSet(\"PropertySystem/PlayerAccounts.txt\", pName, encodepass(tmp));
            Logged[playerid] = 1;
            format(str, 128, \"Regisztráltál!. Mikor ujra jösz: \\\"%s %s\\\"\", LOGIN_COMMAND, tmp);
            SendClientMessage(playerid, 0x99FF66AA, str);
        }
        else
        {
            format(str, 128, \"Ez a név már regisztrált!\");
            SendClientMessage(playerid, 0xFF9966AA, str);
        }
        return 1;
    }
//------------------------------------------------------------------------------
    if(strcmp(cmd, LOGIN_COMMAND, true) == 0)
    {
        new str[128];
        if(Logged[playerid] == 1) return SendClientMessage(playerid, 0xFF0000AA, \"Te már bevagy jelentkezve!\");
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            format(str, 128, \"%s <jelszó>\", LOGIN_COMMAND);
            SendClientMessage(playerid, 0xAFAFAFAA, str);
            return 1;
        }
        new pName[MAX_PLAYER_NAME], pass;
        GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
        pass = dini_Int(\"PropertySystem/PlayerAccounts.txt\", pName);
        if(pass == 0)
        {
            format(str, 128, \"Te még nem regisztráltál! Regisztrálj: %s\", REGISTER_COMMAND);
            SendClientMessage(playerid, 0xFF0000AA, str);
        }
        else
        {
            if(pass == encodepass(tmp))
            {
                Logged[playerid] = 1;
                SendClientMessage(playerid, 0x99FF66AA, \"Bejelentkeztél! Tudsz házat venni és eladni!\");
            }
            else
            {
                SendClientMessage(playerid, 0xFF0000AA, \"Hibás jelszó!\");
            }
        }
        #if ENABLE_LOGIN_SYSTEM == 1
        if(PlayerProps[playerid] > 0)
        {
            format(str, 128, \"Van %d házad. /myh ezzel a parancsal megnézheted.\", PlayerProps[playerid]);
            SendClientMessage(playerid, 0x99FF66AA, str);
        }
        #endif
        return 1;
    }
    #endif
//------------------------------------------------------------------------------
    if(strcmp(cmd, \"/sellallproperties\", true)==0)
    {
//    if(IsPlayerAdmin(playerid))
//    {
    for(new propid; propid<PropertiesAmount; propid++)
    {
    format(PropInfo[propid][PropOwner], MAX_PLAYER_NAME, \"Nobody\");
    PropInfo[propid][PropIsBought] = 0;
    PropInfo[propid
« Utoljára szerkesztve: 2019. Április 20. - 20:32:23 írta ?????? »

Házrendszer
« Válasz #1 Dátum: 2019. Április 06. - 22:32:56 »
0
Kérem Segitsenek

Házrendszer
« Válasz #2 Dátum: 2019. Április 07. - 01:38:30 »
0



   
      (51) : error 023: array assignment must be simple assignment
   

[/quote]

EarningsForPlayer += PropInfo[propid][PropEarning];

 
Ezzel az a gond, hogy az EarningsForPlayer az tömb és te nem adsz meg konkrét indexet.
 

new EarningsForPlayer[MAX_PLAYERS];

 
Javítva:
 

EarningsForPlayer[i] += PropInfo[propid][PropEarning];

 
 
 
 
 
 
 



   
      (52) : error 022: must be lvalue (non-constant)
   

[/quote]

PlayerProps++;

 
Szintén ugyanaz a hiba, mint az elsőnél.
 
Javítva:
 

PlayerProps[i]++;

 
 
 
 
 
 
 



   
      (113) : error 029: invalid expression, assumed zero
   

[/quote]

new cmd[256],idx;)

 
Itt az a plusz zárójel \")\" gond
 
Javítva:
 

new cmd[256],idx;

 
 
 
 
 
 
 



   
      (371) : error 033: array must be indexed (variable \"PlayerProps\")
   

[/quote]

PlayerProps = 0;

 
Szintén az a gond ami az első kettőnél, hogy ez tömb és nem tömbként kezeled.
 
Javítva:
 

PlayerProps[i] = 0;

 
 
 
 
 
 
 



   
      (463) : error 033: array must be indexed (variable \"strsrc\")
   

[/quote]

if(strsrc==delimiter || i==strlen(strsrc)){

 
strsrc tömb amit megint nem úgy kezelsz! Továbbá a delimeter nálad int, ezt szerintem inkább char típusként add meg.
 

public split(const strsrc[], strdest[][], delimiter)

 
Javítás:
 

if(strsrc[i]==delimiter || i==strlen(strsrc)){

 
 
 
 
 
 
 



   
      (482) : warning 217: loose indentation
   

[/quote]
 
Itt csak simán nem megfelelően tabulálod be a sorokat, ez egy figyelmeztetés.
 
Javítani úgy tudod, hogy megfelelően tolod be a sorokat, vagy a kód elejére írhatsz egy ilyet is:
 

#pragma tabsize 0

 
De szerintem inkább csináld meg szépen a betördeléseket, hogy átláthatóbb és olvasható maradjon a kódod.
 
 
 
 
 
 
 



   
      (609) : error 033: array must be indexed (variable \"PlayerProps\")
   

[/quote]

if(PlayerProps > 0)

 
Lásd fentebb ismét.
 
Javítás:
 

if(PlayerProps[i] > 0)

 
 
 
 
 
 
 



   
      (611) : error 035: argument type mismatch (argument 2)
   

[/quote]

GivePlayerMoney(i, EarningsForPlayer);

 
Szintén a tömb kezeléshez kapcsolódik ez a hiba. A hiba azt írja, hogy nem megfelelő típust adtál át a függvénynek. Második paraméterként egész számot vár, te pedig egy tömböt adsz át azért, mert megint nem adsz indexet.
 
Javítás:
 

GivePlayerMoney(i, EarningsForPlayer[i]);

 
 
 
 
 
 
 
Továbbá azonnal feltűnt még 1 hiba amit kezdőként lehet nem vettél volna észre és egy kicsit vicces eredménye lett volna a kimenetelének.
 
612. sor
 

format(str, 64, \"Házaid bevétele: %d$\", EarningsForPlayer);

 
Te gondolom a játékosnak adott pénzt szeretnéd itt kiírni és nem a tömb tartalmát. A pawn a stringeket (szövegeket) tömbben tárolja és ez neki egy valid dolog, hogy \"2 szöveget összefűzöl\".
 
Javítás:
 

format(str, 64, \"Házaid bevétele: %d$\", EarningsForPlayer[i]);

 
 
 
 
 
A hibák javítása után nálam a kód fordítási hiba nélkül lefordul.

Házrendszer
« Válasz #3 Dátum: 2019. Április 19. - 22:57:10 »
0
Idézetet írta: ayalon2016 date=1554586036


   
      C:\\Users\\gyema\\OneDrive\\Asztali gép\\SAMP szerver\\pawno\\Properties.pwn(113) : error 029: invalid expression, assumed zero
   
   
       
   


Ilyenkor mivan XD?

Házrendszer
« Válasz #4 Dátum: 2019. Április 19. - 23:01:15 »
0
Már jó a zárójel volt a gond sorry amugy mindent köszönöm!
 
De azt megtudnád mondani vagy megtudnátok h a játékosokok minek tudnak több házat megvenni
 
?
 
Ja és még egy gotoh rendszert hozzá rakni nem tudnátok abba segiteni?
 
És szerver ujrainditás után nem menti le az adatokat.
 
 
« Utoljára szerkesztve: 2019. Április 19. - 23:57:07 írta ayalon2016 »

Házrendszer
« Válasz #5 Dátum: 2019. Április 20. - 00:06:37 »
0
Szia Az lenne  a kérdésem amikor megveszek egy házat nem menti le regiztrácio rendszer megy a házrendszerbe 
 
playeracount.txt elmenti accountomat playerinfo.txt vannak a házak amit ott lehet szerkeszteni csak ott a nevem helyett nobody van :(
 
Remélem tudsz segiteni ha nem tudsz akkor is reagálj pls.
« Utoljára szerkesztve: 2019. Április 20. - 01:07:41 írta ayalon2016 »

Házrendszer
« Válasz #6 Dátum: 2019. Április 21. - 20:45:17 »
0
Idézetet írta: ayalon2016 date=1555711275


   
      De azt megtudnád mondani vagy megtudnátok h a játékosokok minek tudnak több házat megvenni
   


Miért mi a gond a több házzal? a való életben is lehet több házad
 
 
 
Idézetet írta: ayalon2016 date=1555711275


   
      Ja és még egy gotoh rendszert hozzá rakni nem tudnátok abba segiteni?
   


előbb kezdj bele és utána kérj segítséget, ha elakadsz
 
abból tanulsz a legtöbbet, ha magadtól neki állsz és próbálkozol és több próbálkozás után amikor NINCS ötleted, akkor kérsz segítséget :)
 
 
 
Idézetet írta: ayalon2016 date=1555715197


   
      Szia Az lenne  a kérdésem amikor megveszek egy házat nem menti le regiztrácio rendszer megy a házrendszerbe 
   
   
      playeracount.txt elmenti accountomat playerinfo.txt vannak a házak amit ott lehet szerkeszteni csak ott a nevem helyett nobody van :(
   
   
      Remélem tudsz segiteni ha nem tudsz akkor is reagálj pls.
   


Nézd meg a mentés rendszer hogyan működik, mikor ment.

 

SimplePortal 2.3.7 © 2008-2020, SimplePortal