-
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!
-
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
-
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:
-
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];
}
-
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! :)