hallo ich mal wieder
hallo ich hab mal ne frage wie kann ich eine virtualword setzten für häuser aus der Property in gff denn ich will über 500 häuser machen
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Also erstmal will ich wissen ob die häuser in einem Interior sind. Und wen dan in welchem und ob alle in dem selben sind...
Naja du kannst es auf jedenfall endweder so machen:
if (GetPlayerInterior(playerid) == Inzerior ID)
{oder du machst es mit:
Hier musste dan nur ein viereck ums haus machen...
if (IsPlayerInArea(i, gößter X, kleinster X, größter Y, kleinster Y)
{stock IsPlayerInArea(playerid, Float:max_x, Float:min_x, Float:max_y, Float:min_y)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X <= max_x && X >= min_x && Y <= max_y && Y >= min_y) return 1;
return 0;
} -
also ich habe die standart häuser von gf aber wenn ich ja noch nen haus machen nehme ich ja ein interior doppelt deswegen will ich die virtuale world machen damit sie so gesehn in unterschiedlichen interiors sind
-
Dan kann ich dir nur die 2. Variante forschlagen...
Hier musste dan nur ein viereck ums haus machen...
//ganz oben
forward HausTimer();
new bool:SpielerHaus[MAX_PLAYERS];//public OnGameModeInit() {
SetTimer("HausTimer",500,1);//Der Timer
public HausTimer()
{
for (new i=0; i<GetMaxPlayers(); i++) if (IsPlayerConnected(i))
{
if (IsPlayerInArea(i, größter X, kleinster X, größter Y, kleinster Y) && SpielerHaus[i] == false)
{
SpielerHaus[i] = true;
SetPlayerVirtualWorld(i, WeltID);
SetVehicleVirtualWorld(GetPlayerVehicleID(i), WeltID);
}
else if (!IsPlayerInArea(i, größter X, kleinster X, größter Y, kleinster Y) && SpielerHaus[i] == true)
{
SpielerHaus[i] = false;
SetPlayerVirtualWorld(i, 0);
SetVehicleVirtualWorld(GetPlayerVehicleID(i), 0);
}
}
}//Das kommt ganz unten hin
stock IsPlayerInArea(playerid, Float:max_x, Float:min_x, Float:max_y, Float:min_y)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X <= max_x && X >= min_x && Y <= max_y && Y >= min_y) return 1;
return 0;
}Versuch es einfach mal so...
Naja du musst praktisch in den Timer dan jedes haus prüfen...
if (IsPlayerInArea(i, größter X, kleinster X, größter Y, kleinster Y)... -
aber was bring t das den
ich muss die virtuale welt eines hauses sezten können -
Es prüft ob du dich bei einem bestimmten Haus befindest wen ja dan wechselst du die virtuelle welt wen nein bleibste in der virtuellen welt 0...
Gucks dir doch erstmal an ...
-
aber es soll nur in dem inertior die virtuale welt gesetzt werden nicht an dem haus
-
Das kommt ja ganz auf die kordinaten ein die du eingiebst!
Am besten du kombinierst einfach beide möglichkeiten! Du prüfst nach int und wen spieler in nem int ist kommt der timer der die position prüft!
//ganz oben
forward HausTimer();
new bool:SpielerHaus[MAX_PLAYERS];//public OnGameModeInit() {
SetTimer("HausTimer",500,1);//Der Timer
public HausTimer()
{
for (new i=0; i<GetMaxPlayers(); i++) if (IsPlayerConnected(i))
{
if (IsPlayerInArea(i, größter X, kleinster X, größter Y, kleinster Y) && SpielerHaus[i] == false)
{
if (GetPlayerInterior(playerid) == Interior ID in dem das Haus ist) {
SpielerHaus[i] = true;
SetPlayerVirtualWorld(i, WeltID);
SetVehicleVirtualWorld(GetPlayerVehicleID(i), WeltID); }
}
else if (!IsPlayerInArea(i, größter X, kleinster X, größter Y, kleinster Y) && SpielerHaus[i] == true)
{
if (GetPlayerInterior(playerid) == 0) {
SpielerHaus[i] = false;
SetPlayerVirtualWorld(i, 0);
SetVehicleVirtualWorld(GetPlayerVehicleID(i), 0); }
}
}
}//Das kommt ganz unten hin
stock IsPlayerInArea(playerid, Float:max_x, Float:min_x, Float:max_y, Float:min_y)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X <= max_x && X >= min_x && Y <= max_y && Y >= min_y) return 1;
return 0;
}Versuchs eben so
-
kann man nicht igrendiw die property.cdg ändern das man ka irgendwo noch virual word macht????
also so
public LoadProperty()
{
new arrCoords[29][64];
new strFromFile2[256];
new File: file = fopen("property.cfg", io_read);
if (file)
{
new idx;
while (idx < sizeof(HouseInfo))
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, ',');
HouseInfo[idx][hEntrancex] = floatstr(arrCoords[0]);
HouseInfo[idx][hEntrancey] = floatstr(arrCoords[1]);
HouseInfo[idx][hEntrancez] = floatstr(arrCoords[2]);
HouseInfo[idx][hExitx] = floatstr(arrCoords[3]);
HouseInfo[idx][hExity] = floatstr(arrCoords[4]);
HouseInfo[idx][hExitz] = floatstr(arrCoords[5]);
HouseInfo[idx][hHealthx] = strval(arrCoords[6]);
HouseInfo[idx][hHealthy] = strval(arrCoords[7]);
HouseInfo[idx][hHealthz] = strval(arrCoords[8]);
HouseInfo[idx][hArmourx] = strval(arrCoords[9]);
HouseInfo[idx][hArmoury] = strval(arrCoords[10]);
HouseInfo[idx][hArmourz] = strval(arrCoords[11]);
//printf("HouseInfo hEntrancez %f",HouseInfo[idx][hEntrancez]);
strmid(HouseInfo[idx][hOwner], arrCoords[12], 0, strlen(arrCoords[12]), 255);
strmid(HouseInfo[idx][hDiscription], arrCoords[13], 0, strlen(arrCoords[13]), 255);
HouseInfo[idx][hValue] = strval(arrCoords[14]);
HouseInfo[idx][hHel] = strval(arrCoords[15]);
HouseInfo[idx][hArm] = strval(arrCoords[16]);
HouseInfo[idx][hInt] = strval(arrCoords[17]);
HouseInfo[idx][hLock] = strval(arrCoords[18]);
HouseInfo[idx][hOwned] = strval(arrCoords[19]);
HouseInfo[idx][hRooms] = strval(arrCoords[20]);
HouseInfo[idx][hRent] = strval(arrCoords[21]);
HouseInfo[idx][hRentabil] = strval(arrCoords[22]);
HouseInfo[idx][hTakings] = strval(arrCoords[23]);
HouseInfo[idx][hVec] = strval(arrCoords[24]);
if(HouseInfo[idx][hVec] == 457)
{
HouseInfo[idx][hVec] = 411;
}
HouseInfo[idx][hVcol1] = strval(arrCoords[25]);
HouseInfo[idx][hVcol2] = strval(arrCoords[26]);
HouseInfo[idx][hDate] = strval(arrCoords[27]);
HouseInfo[idx][hLevel] = strval(arrCoords[28]);
printf("HouseInfo:%d Owner:%s hTakings %d hVec %d",idx,HouseInfo[idx][hOwner],HouseInfo[idx][hTakings],HouseInfo[idx][hVec]);
idx++;
}
fclose(file);
}
return 1;
}das ist normal
public LoadProperty()
{
new arrCoords[29][64];
new strFromFile2[256];
new File: file = fopen("property.cfg", io_read);
if (file)
{
new idx;
while (idx < sizeof(HouseInfo))
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, ',');
HouseInfo[idx][hEntrancex] = floatstr(arrCoords[0]);
HouseInfo[idx][hEntrancey] = floatstr(arrCoords[1]);
HouseInfo[idx][hEntrancez] = floatstr(arrCoords[2]);
HouseInfo[idx][hExitx] = floatstr(arrCoords[3]);
HouseInfo[idx][hExity] = floatstr(arrCoords[4]);
HouseInfo[idx][hExitz] = floatstr(arrCoords[5]);
HouseInfo[idx][hHealthx] = strval(arrCoords[6]);
HouseInfo[idx][hHealthy] = strval(arrCoords[7]);
HouseInfo[idx][hHealthz] = strval(arrCoords[8]);
HouseInfo[idx][hArmourx] = strval(arrCoords[9]);
HouseInfo[idx][hArmoury] = strval(arrCoords[10]);
HouseInfo[idx][hArmourz] = strval(arrCoords[11]);
//printf("HouseInfo hEntrancez %f",HouseInfo[idx][hEntrancez]);
strmid(HouseInfo[idx][hOwner], arrCoords[12], 0, strlen(arrCoords[12]), 255);
strmid(HouseInfo[idx][hDiscription], arrCoords[13], 0, strlen(arrCoords[13]), 255);
HouseInfo[idx][hValue] = strval(arrCoords[14]);
HouseInfo[idx][hHel] = strval(arrCoords[15]);
HouseInfo[idx][hArm] = strval(arrCoords[16]);
HouseInfo[idx][hInt] = strval(arrCoords[17]);
HouseInfo[idx][hvirtualworld]=strval(arrCoords[18]);
HouseInfo[idx][hLock] = strval(arrCoords[19]);
HouseInfo[idx][hOwned] = strval(arrCoords[20]);
HouseInfo[idx][hRooms] = strval(arrCoords[21]);
HouseInfo[idx][hRent] = strval(arrCoords[22]);
HouseInfo[idx][hRentabil] = strval(arrCoords[23]);
HouseInfo[idx][hTakings] = strval(arrCoords[24]);
HouseInfo[idx][hVec] = strval(arrCoords[25]);
if(HouseInfo[idx][hVec] == 457)
{
HouseInfo[idx][hVec] = 411;
}
HouseInfo[idx][hVcol1] = strval(arrCoords[26]);
HouseInfo[idx][hVcol2] = strval(arrCoords[27]);
HouseInfo[idx][hDate] = strval(arrCoords[28]);
HouseInfo[idx][hLevel] = strval(arrCoords[29]);
printf("HouseInfo:%d Owner:%s hTakings %d hVec %d",idx,HouseInfo[idx][hOwner],HouseInfo[idx][hTakings],HouseInfo[idx][hVec]);
idx++;
}
fclose(file);
}
return 1;
}
enum hInfo
{
Float:hEntrancex,
Float:hEntrancey,
Float:hEntrancez,
Float:hExitx,
Float:hExity,
Float:hExitz,
hHealthx,
hHealthy,
hHealthz,
hArmourx,
hArmoury,
hArmourz,
hOwner[MAX_PLAYER_NAME],
hDiscription[MAX_PLAYER_NAME],
hValue,
hHel,
hArm,
hInt,
hvirtualworld,//halt das es definiert ist
hLock,
hOwned,
hRooms,
hRent,
hRentabil,
hTakings,
hVec,
hVcol1,
hVcol2,
hDate,
hLevel,
};if(house !=255)
{
if(SpawnChange[playerid]) //If 1, then you get to your house, else spawn somewhere else
{
SetPlayerToTeamColor(playerid);
SetPlayerInterior(playerid,HouseInfo[house][hInt]);
SetPlayerPos(playerid, HouseInfo[house][hExitx], HouseInfo[house][hExity],HouseInfo[house][hExitz]); // Warp the player
PlayerInfo[playerid][pLocal] = house;
PlayerInfo[playerid][pInt] = HouseInfo[house][hInt];
return 1;
}
}hier auch was ändern?
public OnPropUpdate()
{
new idx;
new File: file2;
while (idx < sizeof(HouseInfo))
{
new coordsstring[256];
format(coordsstring, sizeof(coordsstring), "%f,%f,%f,%f,%f,%f,%d,%d,%d,%d,%d,%d,%s,%s,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
HouseInfo[idx][hEntrancex],
HouseInfo[idx][hEntrancey],
HouseInfo[idx][hEntrancez],
HouseInfo[idx][hExitx],
HouseInfo[idx][hExity],
HouseInfo[idx][hExitz],
HouseInfo[idx][hHealthx],
HouseInfo[idx][hHealthy],
HouseInfo[idx][hHealthz],
HouseInfo[idx][hArmourx],
HouseInfo[idx][hArmoury],
HouseInfo[idx][hArmourz],
HouseInfo[idx][hOwner],
HouseInfo[idx][hDiscription],
HouseInfo[idx][hValue],
HouseInfo[idx][hHel],
HouseInfo[idx][hArm],
HouseInfo[idx][hInt],
HouseInfo[idx][hLock],
HouseInfo[idx][hOwned],
HouseInfo[idx][hRooms],
HouseInfo[idx][hRent],
HouseInfo[idx][hRentabil],
HouseInfo[idx][hTakings],
HouseInfo[idx][hVec],
HouseInfo[idx][hVcol1],
HouseInfo[idx][hVcol2],
HouseInfo[idx][hDate],
HouseInfo[idx][hLevel]);
if(idx == 0)
{
file2 = fopen("property.cfg", io_write);
}
else
{
file2 = fopen("property.cfg", io_append);
}
fwrite(file2, coordsstring);
idx++;
fclose(file2);
}und hier?und dann halt bei dem enter und buyhouse usw
-
würde das gehen?
-
@ Threadstarter
GFF = Godfather = In den Godfather Bereich hier im Forum!
@ SkaterDenis
wenn man keine Ahnung hat einfach mal ...
@ Threadstarter ²
Foren Suche,Wiki,Denken,Selbermachen und einfach ausprobieren statt zu Fragen! -
sag doch einfach ob es geht
-
Was hab ich gesacht? Probiers doch einfach aus wenns nicht geht hast halt was falsch gemacht,musste dir halt die logischen vorgänge mal selbst überlegen
-
1. Habe auch erst später gecheckt das er GFF hat...
2. Ich dachte er wollte genau das wissen! Da brauchst du nicht gleich mit so nen Spruch ankommen!
3. Ich schätze mal dafür ist das forum doch da! Das man mal jemand fragen kann der einem vileicht helfen kann! Wen mans alleine schaffen würde würde man ja nicht Fragen!!! -
ich habs probiert aber sobald ich ein neues haus mach sind alle häuser bizze weg
-
Du brauchst nichts beim enum adden,wenn der spieler ein hausbetritt setzt du die virtuellewelt auf die hausid (also einfach die variabel i in den schleifen benutzen/behandeln wie die hausid)
Auf diese weise brauch man keine VirtuelleWelt adden da die HäuserID's eh einzigartig sind überschneiden sie sich nicht.
Verstanden? -
ne
-
So schwer ist das doch nicht... Du benutzt die hausid auch als Virtuellewelt,so brauchst du nichts adden und kannst trotzdem so viele häuser machen wie du willst.
OnPlayerLogin:
Spoiler anzeigen
if(house !=255)
{
if(SpawnChange[playerid]) //If 1, then you get to your house, else spawn somewhere else
{
SetPlayerToTeamColor(playerid);
SetPlayerInterior(playerid,HouseInfo[house][hInt]);
SetPlayerVirtualWorld(playerid,house);//weil "house" hier die ID ist
SetPlayerPos(playerid, HouseInfo[house][hExitx], HouseInfo[house][hExity],HouseInfo[house][hExitz]); // Warp the player
PlayerInfo[playerid][pLocal] = house;
PlayerInfo[playerid][pInt] = HouseInfo[house][hInt];
return 1;
}
}Dann SuFu im Script (STRG+F) nach "hInt" un überall wo man in häuser teleportiert wird bzw wo sic hdas interior ändernt(wie hier z.B)
SetPlayerInterior(playerid,HouseInfo[i][hInt]);
//das adden:
SetPlayerVirtualWorld(playerid,i);//weil i die Variabel der HouseID ist
Und so weiter und so weiter... -
C:\Dokumente und Einstellungen\Timo v.D\Desktop\Gta Server1\gamemodes\GFF (1).pwn(16516) : error 017: undefined symbol "i"
4 stück von denen -
Denk doch mal nach du kannst nicht immer i nehmen wenn da was anderes für benutzt wird wie z.B house oder so das musste dann übernehmen
-