Szerző Téma: 2 gyors kérdés  (Megtekintve 557 alkalommal)

2 gyors kérdés
« Dátum: 2017. Június 28. - 09:48:59 »
0 Show voters
Sziasztok, azt szeretném megkérdezni, hogy egy MAX_VALAMIK (Nem PLAYERSBŐL) hogyan tudok kiszedni egy VALAMI értéket, PL. MAX_HAZAK, HAZID?
 
A másik kérdésem az lenne, hogy a legtöbb animáció vagy csak többszöri beírás után  jön be, vagy csak a beíró látja.
 
Ezt, hogy lehetne megoldani? 

2 gyors kérdés
« Válasz #1 Dátum: 2017. Június 28. - 17:31:31 »
0 Show voters
Ha értékeket MAX_HAZAK vagy hasonló névvel definiálsz.
 
pl.
 

#define MAX_HAZAK 50

 
Akkor, úgyanúgy ha beírod valahova, akkor kifogja írni.
 

printf(\"Maximum létrehozható házak száma: %d\",MAX_HAZAK);

 
A konzolban azt fogja kiírni, hogy: \"Maximum létrehozható házak száma: 50\". A példa szerinti értékekkel.
 
 
 
A második kérdésre, a válasz, hogy a \"forcesysnc\" utolsó paramétert nézd meg. Wikin elég szépen le van írva, hogy mikor kinek mutatja. NPC, Player stb.
 
A többszöri beírás az maximum 2db-ot jelent. Ez pedig azért következik be, mert a speedje nem felel meg az animációnak, így megszakad vagy elsem kezdi.

2 gyors kérdés
« Válasz #2 Dátum: 2017. Június 29. - 01:19:35 »
0 Show voters
A második választ köszönöm. Az elsőben pedig: MAX_HAZAK már van. Én konkrétan egy ház IDjét szeretném. Úgyértve, hogy lekérdezni a ház IDjét amiben épp vagyok. 

2 gyors kérdés
« Válasz #3 Dátum: 2017. Június 29. - 10:22:09 »
0 Show voters
Azt Define-vel nemtudod megoldani, mivel annak az értékét nemtudod változtatni. Itt mindenféle esetben változó szükséges, PVar vagy Int, de az alap int változó ajánlott.
 

new currentHouse[MAX_PLAYERS];

 
Aztán ezt, egy parancsnál megváltoztatod.
 

CMD:enter(playerid)
{
for(new i = 0; i < MAX_HOUSE; i++}
    {
       if(IsPlayerInRangeOfPoint(playerid,2.0,houseInfo[i][hEnterX],houseInfo[i][hEnterY],houseInfo[i][hEnterZ])
        {
           currentHouse[playerid] = houseInfo[i][hID];
            SetPlayerPos(playerid,houseInfo[i][hExitX],houseInfo[i][hExitY],houseInfo[i][hExitZ]);
              SetPlayerVirtualWorld(playerid,houseInfo[i][hVirtual]);
            SetPlayerInterior(playerid,houseInfo[i][hInterior]);
        }                        
      }
return 1;
}

 
Aztán meg egy másik paranccsal lekérdezed.
 

CMD:hazinfo(playerid)
{
new string[128]; format(string,sizeof(string),\"A ház azonosítója, amelyben jelenleg tartózkodol: %d\",currentHouse[playerid]);
SendClientMessage(playerid,-1,string);
return 1;
}

 
Aztán ha kilép a házból megváltoztatod az értékét, vagy ha Disconnectel.
 

CMD:exit(playerid)
{
for(new i = 0; i < MAX_HOUSE; i++}
    {
       if(IsPlayerInRangeOfPoint(playerid,2.0,houseInfo[i][hExitX],houseInfo[i][hExitY],houseInfo[i][hExitZ])
        {
           currentHouse[playerid] = -1; // vagy (0), attól függ, hogy honnan kezdődnek a ház ID-k.
            SetPlayerPos(playerid,houseInfo[i][hEnterX],houseInfo[i][hEnterY],houseInfo[i][hEnterZ]);
              SetPlayerVirtualWorld(playerid,0);
            SetPlayerInterior(playerid,0);
        }                        
      }
return 1;
}
public OnPlayerDisconnect(playerid,reason)
{
// Reset player variables
currentHouse[playerid] = -1; // vagy (0), mint már említettem :D
return 1;
}

 
Azért kell nullázni, vagy beállítani más értéket, mivel hogyha lecsatlakozik, az Ő ID-jén lévő változókat, aki felcsatlakozik azzal az ID-vel ő fogja megkapni.
 
És ha mondjuk a pénzt mented le így, akkor az előző játékos pénzét, megkapja az aki felcsatlakozik :D
 
 
 
Remélem tudtam segíteni :D

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal