Die Physik in GTA IV ist der Hammer, vom schadensmodel her find ich es erste Klasse + sehr gutem Detail,
wobei die Leistung dafür auch dem entsprechend sein muss
Beiträge von BlackFoX
-
-
Nach dem motto ich frag was, die Admins geben mir den Finger (etwas Hilfe) und ich möcht gleich die ganze Hand
und wenn dann nichts kommt werden Leute mit Pn's gebombert oder in ICQ genervt . Man kann zwar Hilfe erwarten aber nicht sofort.
Ich finde die Leute die sich beschweren sollten einen Tag selber den Adminposten übernehmen und schauen wie das so aussieht wenn man
in Pn's ertrinkt + Unnötige Spam posts und Kiddys die sich gegenseitig schlechte Wörter gegen den Kopf werfen .
Ich glaub seid Breadfish nicht mehr da ist meint sowieso nur noch jeder zu machen was er möchte und wie es ihm grad beliebt -
Poste mal deinen Save
-
Wenn nicht dann hast du evntl. iwas , was das betreten des Internet's auf deinem PC verhindert
-
stock LoadHouseInfo()
{
if(INI_Open("/Houses/haus.cfg"))
{
new loader[128];
for(new i=0;i<MAX_H;i++)
{
format(loader,sizeof(loader),"Exists_%d",i);
HouseInfo[i][Exists] = INI_ReadInt(loader);
format(loader,sizeof(loader),"Besitzer_%d",i);
INI_ReadString(HouseInfo[i][Besitzer],loader,MAX_PLAYER_NAME);
printf("Besitzer_%d : %s",i,HouseInfo[i][Besitzer]);
format(loader,sizeof(loader),"EnterX_%d",i);
HouseInfo[i][EnterX] = INI_ReadFloat(loader);
format(loader,sizeof(loader),"EnterY_%d",i);
HouseInfo[i][EnterY] = INI_ReadFloat(loader);
format(loader,sizeof(loader),"EnterZ_%d",i);
HouseInfo[i][EnterZ] = INI_ReadFloat(loader);
format(loader,sizeof(loader),"ExitX_%d",i);
HouseInfo[i][ExitX] = INI_ReadFloat(loader);
format(loader,sizeof(loader),"ExitY_%d",i);
HouseInfo[i][ExitY] = INI_ReadFloat(loader);
format(loader,sizeof(loader),"ExitZ_%d",i);
HouseInfo[i][ExitZ] = INI_ReadFloat(loader);
format(loader,sizeof(loader),"Locked_%d",i);
HouseInfo[i][Locked] = INI_ReadInt(loader);
format(loader,sizeof(loader),"Preis_%d",i);
HouseInfo[i][Preis] = INI_ReadInt(loader);
format(loader,sizeof(loader),"Level_%d",i);
HouseInfo[i][Level] = INI_ReadInt(loader);
format(loader,sizeof(loader),"Interior_%d",i);
HouseInfo[i][Interior] = INI_ReadInt(loader);
format(loader,sizeof(loader),"VirtualWorld_%d",i);
HouseInfo[i][VirtualWorld] = INI_ReadInt(loader);
format(loader,sizeof(loader),"Owned_%d",i);
HouseInfo[i][Owned] = INI_ReadInt(loader);
format(loader,sizeof(loader),"PickupID_%d",i);
HouseInfo[i][PickupID] = INI_ReadInt(loader);
if(HouseInfo[i][Exists])
{
if(HouseInfo[i][Owned] == 0)
{
HouseInfo[i][PickupID] = CreateStreamPickup(1273, 1, HouseInfo[i][EnterX],HouseInfo[i][EnterY],HouseInfo[i][EnterZ],PICKUP_RANGE);
CreateMapIcon(31,0,HouseInfo[i][EnterX],HouseInfo[i][EnterY],HouseInfo[i][EnterZ]);
}
else
{
HouseInfo[i][PickupID] = CreateStreamPickup(1239, 1, HouseInfo[i][EnterX],HouseInfo[i][EnterY],HouseInfo[i][EnterZ],PICKUP_RANGE);
CreateMapIcon(32,0,HouseInfo[i][EnterX],HouseInfo[i][EnterY],HouseInfo[i][EnterZ]);
}
Created_Houses++;
}
}
INI_Close();
}
return 1;
}Ich hab getan was ich konnte,, test es mal
-
Versuch mal die Maximale Größe festzulegen für den String
INI_ReadString(HouseInfo[i][Besitzer],loader,MAX_PLAYER_NAME);
-
Auf gtainside.de findest du Patches für das verändern des Spiels, außerdem gehen im mom. keine weiteren Hacks, aber es
gibt abhilfe durch Alice Ultimate , einfach mal Googlen , dort ist auch ein Car Spawner Beispiel dabei -
Du kannst den Textdraw für jeden Spieler erstellen , und in OnPlayerConnect schieben, und in OnPlayerDisconnect zerstören
das spart Resourcen, die Geld setzung musst du wenn du keine eigene Geld Funktion hast per Timer Aktualisieren,
ich hätte mir aber eigene Funktionen gebaut das spart wieder einen Timer und lag verursacher -
Vllt ist dein PC durch den Router gesperrt
-
Kavkus, sicher das in der Datei auf Slot 1 ein Besitzer vorhanden ist ? bzw. hast du das Haus richtig erstellt ?
-
Ja aber von Sa-mp aus , wird es als sogenannter Timer genutzt, les dir mal die Release Infos auf Sa-mp.com durch und
das Wiki im Bereich Callbacks -
stock SaveTankInfo()
{
fremove("/Tanken/tanken.cfg");
INI_Create("/Tanken/tanken.cfg");
if(INI_Open("/Tanken/tanken.cfg"))
{
new saver[128];
for(new i=0;i<MAX_T;i++)
{
if(TankInfo[i][Exists])
{
format(saver,sizeof(saver),"X_%d",i);
INI_WriteFloat(saver,TankInfo[i][X]);
format(saver,sizeof(saver),"Y_%d",i);
INI_WriteFloat(saver,TankInfo[i][Y]);
format(saver,sizeof(saver),"Z_%d",i);
INI_WriteFloat(saver,TankInfo[i][Z]);
format(saver,sizeof(saver),"Besitzer_%d",i);
INI_WriteString(saver,TankInfo[i][Besitzer]);
format(saver,sizeof(saver),"Preis_%d",i);
INI_WriteInt(saver,TankInfo[i][Preis]);
format(saver,sizeof(saver),"Lpreis_%d",i);
INI_WriteInt(saver,TankInfo[i][Lpreis]);
format(saver,sizeof(saver),"Inhalt_%d",i);
INI_WriteInt(saver,TankInfo[i][Inhalt]);
format(saver,sizeof(saver),"Owned_%d",i);
INI_WriteInt(saver,TankInfo[i][Owned]);
format(saver,sizeof(saver),"Exists_%d",i);
INI_WriteInt(saver,TankInfo[i][Exists]);
}
}
INI_Save();
INI_Close();
}
return 1;
}Du musst vorher abfragen ob sie exestieren
-
Ich meine das OnPlayerUpdate wie ein Timer immer wieder Reagiert und so ein laggen hervorrufen kann, OnPlayerUpdate
reagiert jede Millisekunde daher Updatet er die Datei jedesmal, das meinte ich damit -
Also beim Speichern vorher die schon vorhandene Datei löschen und neu zusammenstellen lassen, ist so am sichersten,
immer abfragen ob auch diese Tanke vom Admin/User erstellt wurde das heißt per extra key, keys die nicht exestieren geben
Automatisch 0 zurück also exestiert sie nicht -
Die tanken die du erstellt hast kannste löschen, du musst neue erstellen damit diese als erstellt markiert werden
stock LoadTankInfo()
{
if(INI_Open("/Tanken/tanken.cfg"))
{
for(new i=0;i<MAX_T;i++)
{
new loader[128];
format(loader,sizeof(loader),"Exists_%d",i);
TankInfo[i][Exists] = INI_ReadInt(loader);
if(TankInfo[i][Exists])
{
format(loader,sizeof(loader),"X_%d",i);
TankInfo[i][X] = INI_ReadFloat(loader);
format(loader,sizeof(loader),"Y_%d",i);
TankInfo[i][Y] = INI_ReadFloat(loader);
format(loader,sizeof(loader),"Z_%d",i);
TankInfo[i][Z] = INI_ReadFloat(loader);
format(loader,sizeof(loader),"Besitzer_%d",i);
INI_ReadString(TankInfo[i][Besitzer],loader,MAX_PLAYER_NAME);
format(loader,sizeof(loader),"Preis_%d",i);
TankInfo[i][Preis] = INI_ReadInt(loader);
format(loader,sizeof(loader),"Lpreis_%d",i);
TankInfo[i][Lpreis] = INI_ReadInt(loader);
format(loader,sizeof(loader),"Inhalt_%d",i);
TankInfo[i][Inhalt] = INI_ReadInt(loader);
format(loader,sizeof(loader),"Owned_%d",i);
TankInfo[i][Owned] = INI_ReadInt(loader);
Erstellte_Tanken++;
}
}
INI_Close();
}
return 1;
}Du musst vorher ,,exist´´ laden und dann abfragen
-
Ansonsten kannst du sie aus dem Heli rauswerfen und ihnen Fallschirme geben das wäre so ne alternative
-
if(TankInfo[exist])
{
// Laden
}
vorher musst du aber exist als Integer wert ladendieses ,,exist´´ setzt du auf 1 sobald du eine neue Tanke erstellst , beim Speichern muss genauso diese abfrage sein,
damit er weiss ob die Tankstelle eig. erstellt wurde, ansonsten führt das auf 0 Zurück und es kann sein das einiges nicht mehr Funktioniert. -
OnPlayerUpdate kannst du so nicht mehr verwenden, da diese Öffentliche Klasse zu einem kleinem Timer umgebaut wurde.
-
Man könnte dies folgendermaßen gestallten :
- Bei OnPlayerUpdate , den Spieler in Position des Helis setzen
- ihn mit etwas abstand vom Helikopter mit SetPlayerPos immer den z Minus nehmenDoch das problem besteht wieder darin die Landschaft zu berechnen , die Karte von Sa hat einen Koordinaten Umfang von -3000.00 bis 3000.0+
Also wird das unmöglich sein -
Denk Key das die Tanke exestiert setzt du am besten wenn du die Tanke erstellst, sonst lädt er ja bis MAX_T , da aber nicht alle exestieren werden,
und die Coords 0.0 und die Werte 0 oder Null String enthalten werden Tanken geladen die dann im Koordinaten Punkt 0.0 auf xyza erscheinen mit einem
Non Besitzer und keinem bestimmten Preis