Szerző Téma: Házrendszer probléma (Rupert)  (Megtekintve 939 alkalommal)

Házrendszer probléma (Rupert)
« Dátum: 2013. július 04. - 22:55:44 »
0 Show voters
Hali, nem akar mûködni az alábbi kis módosítás amivel kiegészítettem a scriptet.  :no:
Lényege annyi lenne, hogy ha van háza az illetõnek és feljön szeróra, beírja /spawn és ott fog pl. halál után lespawnolni.
 
CMD:spawn(playerid, params[])
{
    if(GetPVarInt(playerid,\"haz_spawn\") == 0) return SetPVarInt(playerid, \"haz_spawn\", 1), SCM(playerid, COLOR_LORANGE, \"Ház spawn bekapcsolva.\");
    if(GetPVarInt(playerid,\"haz_spawn\") == 1) return SetPVarInt(playerid, \"haz_spawn\", 0), SCM(playerid, COLOR_GREY, \"Ház spawn kikapcsolva.\");
    return 1;
}
public OnPlayerSpawn(playerid)
{
    new hazacska = MelyikHaz(playerid);
    if(hazacska)
    {
        if(GetPVarInt(playerid,\"haz_spawn\") == 1)
        {
            SetPlayerPos(playerid, hInfo[hazacska][kX], hInfo[hazacska][kY], hInfo[hazacska][kZ]);
            SetPlayerInterior(playerid, hInfo[hazacska][interior]); SetPlayerVirtualWorld(playerid, hInfo[hazacska][iD]);
            hazban[playerid] = 1; mhazban[playerid] = hInfo[hazacska][iD];
            kx[playerid] = hInfo[hazacska][X]; ky[playerid] = hInfo[hazacska][Y]; kz[playerid] = hInfo[hazacska][Z];
        }
    }
    return 1;
}

 
Ha így hagyom a scriptet nem csinál semmit spawnoláskor.
Ha kiszedem az if(hazacska) -t akkor bebugol, és nem a ház pozícióhoz hanem valami farmra rakja a playert.
Ez pedig a \'MelyikHaz\' visszacsatolás:
(benne volt alapból)
 
stock MelyikHaz(playerid)
{
    for(new i;i<MAX_HOUSES;i++)
    {
        if(IsPlayerInRangeOfPoint(playerid, 1.0, hInfo[X], hInfo[Y], hInfo[Z])) return i;
    }
    return -1;
}

 
Már mindent próbáltam és nem sikerül.  :confused:
Köszönöm!
« Utoljára szerkesztve: 2013. július 04. - 23:06:37 írta takehun »

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
Házrendszer probléma (Rupert)
« Válasz #1 Dátum: 2013. július 04. - 23:46:42 »
0 Show voters
Megcsinálom én neked, de a játékosnak ugye lehet több háza, szóval az jó lenne, ha:
- a játékos beírja: /spawn [házid]
- a kiválasztott házid-t lekérem, ha nem a tulaj hibával térek vissza
- ellenkezõ esetben beállítjuk a játékos spawnolási helyének az adott házat

Házrendszer probléma (Rupert)
« Válasz #2 Dátum: 2013. július 05. - 00:56:10 »
0 Show voters
Remekül hangzik!
Ezzel az spawnolási dologgal már egész nap szopok...
Egyszerûen nem jövök rá miért nem kéri le a hInfo adatokat, amit ugye betölt a LoadHouse(id) alatt a szeró indulásakor.  :wall:
« Utoljára szerkesztve: 2013. július 05. - 01:03:07 írta takehun »

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
Házrendszer probléma (Rupert)
« Válasz #3 Dátum: 2013. július 05. - 01:20:40 »
+1 Show voters
Nem teszteltem, azt hiszem így jó. Egyébként nem tudom mit akartál kezdeni a MelyikHaz függvénnyel, mert az a legközelebbi ház ID-jét kéri le...
 

CMD:spawn(playerid, params[])
{
new hid, nme[MAX_PLAYER_NAME];
GetPlayerName(playerid, nme, sizeof(nme));
if(sscanf(params, \"d\", hid)) return SCM(playerid, -1, \"Használat: /spawn [ház ID], kikapcsoláshoz /spawn -1\");
if(!strcmp(hInfo[hid][Owner], nme, true))
{
    if(hid != -1)
{
   SetPVarInt(playerid, \"haz_spawn\", hid);
   SCM(playerid, COLOR_LORANGE, \"Ház spawn bekapcsolva.\");
}
    else
{
   SetPVarInt(playerid, \"haz_spawn\", -1);
   SCM(playerid, COLOR_GREY, \"Ház spawn kikapcsolva.\");
}
}
else return SCM(playerid, -1, \"Ez a ház nem a tiéd!\");
return 1;
}

 
OnPlayerSpawn alá:
 

if(GetPVarInt(playerid, \"haz_spawn\") > -1)
{
    new hid = GetPVarInt(playerid, \"haz_spawn\");
    SetPlayerPos(playerid, hInfo[hid][kX], hInfo[hid][kY], hInfo[hid][kZ]);
        SetPlayerInterior(playerid, hInfo[hid][interior]);
SetPlayerVirtualWorld(playerid, hInfo[hid][iD]);
        hazban[playerid] = 1;
mhazban[playerid] = hInfo[hid][iD];
        kx[playerid] = hInfo[hid][X];
ky[playerid] = hInfo[hid][Y];
kz[playerid] = hInfo[hid][Z];
}
« Utoljára szerkesztve: 2013. július 05. - 01:22:46 írta Rupert »

Házrendszer probléma (Rupert)
« Válasz #4 Dátum: 2013. július 05. - 14:10:26 »
0 Show voters
A házat sajnos nem észleli, hogy kié (folyton ki-be lehet kapcsolni) illetve az interior és virtualworld értéket nem állítja át. A SetPlayerPos mûködik. :unsure:
Szerk.: na megoldottam nagyjából, ez a része mûködik:
 
CMD:spawn(playerid, params[])
{
    new hid, id;
    if(sscanf(params, \"d\", hid)) return SCM(playerid, COLOR_GREY, \"Használat: /spawn [ház ID], kikapcsoláshoz /spawn 0\");
    hInfo[id][iD] = hid;
    if(hid == 0) return SetPVarInt(playerid, \"haz_spawn\", 0), SCM(playerid, COLOR_GREY, \"Ház spawn kikapcsolva.\");
    if(id == hInfo[hid][Owner])
    {
        SCM(playerid, COLOR_RED, \"Ez a ház nem a tiéd!\");
    } else {
        SetPVarInt(playerid, \"haz_spawn\", hid), SCM(playerid, COLOR_LORANGE, \"Ház spawn bekapcsolva.\");
    }
    return 1;
}

 
...az interior-virtualworld értéket meg a style-hoz próbálom kötni, hogy mûködjön. Kösz a segítséget! :)
« Utoljára szerkesztve: 2013. július 05. - 17:22:26 írta takehun »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal