Das mit den Laggs kann daran liegen das du die Map 2-3 mal drin hast und dadurch der Streamer extrem beansprucht wird und deshalb es auch wie du es beschrieben hast Laggt
Beiträge von Bluescreen
-
-
Nun es ist so, wenn du das bei ca. 30 Variablen machst, dann sendest du 30 Querys an die Datenbank, sprich 30x eine Verbindung zu der Datenbank aufbauen...so nur 1x...Ich habe jetzt keinen Test gemacht, aber auf jeden Fall ist es Ressourcen schonender und schneller
mfg.
Ich danke dir für die Antwort jetzt weiß ich was ich an meinem Script optimieren kann -
Naja, sowas z.B. :
mysql_query("INSERT INTO `user` (`Name`,`Passwort`) VALUES ('Kaliber','wüsstestegerne')");
1 Query für 2 Sachen und kannst natürlich auch 1 Query für 50 Sachen machen
mfg.
auch wenn die Frage jetzt Blöd klingt um wie viel ms schneller ist diese Funktion als setint? -
Nach ein wenig Suchen müsste er sie schon Finden können, den soviele Türen gibt es jetzt nicht wirklich in gta
-
Stell dich in die unmittelbare nähe der Tür und Speicher die Koordinaten mit /save und Entferne es dann manuell mit
RemoveBuildingForPlayer(playerid, modelid, Float:fX, Float:fY, Float:fZ, Float:fRadius)
Du müsstest halt den Radius so einstellen das er nicht die Umgebung gleich mitentfernt, dann müsste es auch ohne Editor gehen -
Ich weis nicht wie man sowas erstellt Sorry.
Was weißt du den nicht wie du was erstellst? -
Das ist wenn man es weiß einfach zu Scripten,
if(!strcmp(cmdtext, "/equip", true))
{
if(IsPlayerInRangeOfPoint(playerid, X, Y, Z))//Der Punkt wo er sein muss
{
if(SpielerInfo[playerid][Team] == 1)//z.b. Yakuza musst aber die Abfrage auf deine anpassen!!
{
GivePlayerWeapon(playerid,24,50);//Eine Deagle mit 50 Schuss
GivePlayerMoney(playerid, -180);//Die 180$ die abgezogen werden sollen
}
}
return 1;
}
Den Rest müsstest du selbst hinbekommen und um die Waffen IDs zu bekommen: http://wiki.sa-mp.com/wiki/Weapons
Der Code müsste funktionieren, garantiere es aber nicht da ich es jetzt aus dem Kopf geschrieben habe -
Wie Speicherst du es den bei OnPlayerDisconnect?
Vielleicht hast du es ja dort anderst -
Mach die Schleife bei deinem Restart Command, den OnGameModeExit wird aufgerufen wenn kein Spieler mehr auf dem Server ist, soweit ich es weiß, die Schleife unter den /restart Command Packen und dann Probieren:
for(new i = 0; i < GetMaxPlayers(); i++)
{
SaveAccount(i);
} -
In einem Array ist es am einfachsten, musst halt die ganzen Autos einzelnd Definieren, so gibst du jedem einen individuellen Tank:
new TankSize[211] = {
65, //Landstalker (400)
40, //Bravura (401)
...
}
Und um es zu verwenden musst du es so benutzen:TankSize[GetVehicleModel(car)-400])
Die -400 deshalb da der Array ja bei Null anfängt, hoffe du verstehst was ich meine -
Änder mal die Stock's so um:
stock LoadFraktDaten()
{
new FrakDatei[64];
format(FrakDatei,sizeof(FrakDatei),"Fraktion/FraktionDaten.txt");
if(!dini_Exists(FrakDatei))
{
dini_Create(FrakDatei);
}
else
{
FraktionInfo[LSPD][fKasse]=dini_Int(FrakDatei,"LSPD_Kasse");
FraktionInfo[LSPD][fArmour]=dini_Int(FrakDatei,"LSPD_Armour");
FraktionInfo[Medic][fKasse]=dini_Int(FrakDatei,"Medic_Kasse");
FraktionInfo[Army][fKasse]=dini_Int(FrakDatei,"Army_Kasse");
FraktionInfo[Army][fArmour]=dini_Int(FrakDatei,"Army_Armour");
FraktionInfo[ADAC][fKasse]=dini_Int(FrakDatei,"ADAC_Kasse");
FraktionInfo[Trucker][fKasse]=dini_Int(FrakDatei,"Trucker_Kasse");
FraktionInfo[CNN][fKasse]=dini_Int(FrakDatei,"CNN_Kasse");
}
return 1;
}stock SaveFrakDaten()
{
new FrakDatei[64];
format(FrakDatei,sizeof(FrakDatei),"Fraktion/FraktionDaten.txt");
dini_IntSet(FrakDatei,"LSPD_Kasse",FraktionInfo[LSPD][fKasse]);
dini_IntSet(FrakDatei,"LSPD_Armour",FraktionInfo[LSPD][fArmour]);
dini_IntSet(FrakDatei,"Medic_Kasse",FraktionInfo[Medic][fKasse]);
dini_IntSet(FrakDatei,"Army_Kasse",FraktionInfo[Army][fKasse]);
dini_IntSet(FrakDatei,"Army_Armour",FraktionInfo[Army][fArmour]);
dini_IntSet(FrakDatei,"ADAC_Kasse",FraktionInfo[ADAC][fKasse]);
dini_IntSet(FrakDatei,"Trucker_Kasse",FraktionInfo[Trucker][fKasse]);
dini_IntSet(FrakDatei,"CNN_Kasse",FraktionInfo[CNN][fKasse]);
return 1;
}Und jetzt sag bitte noch wo du überall "SaveFrakDaten" und "LoadFrakDaten" aufrufst
-
Danke Schonmal, Brauche noch 50Cent PSC Rest ...
LG
Das habe ich gemacht - da hieß es: Sie müssen einen SA:MP4You-Webspace benützen, um auf die Datenbank zugreifen zu können.
Also der Support macht da auch nix.Mit freundlichen Grüßen
[GP]Saitek | Timo
Wann war es denn?
Habe es bei nem' Kumpel vor einer Woche beantragt sie haben's sofort Freigeschaltet.. -
Danke Schonmal, Brauche noch 50Cent PSC Rest ...
LG
Du könntest aber auch einfach den Support anschreiben und sie bitten das sie den Externen Zugriff von dem und dem Webspace auf deine Datenbank zulassen sollen, anstatt extra einen Webspace zu Bestellen. -
Du musst
new Text3D:label;
Gloabl Deklarieren:new Text3D:labe[MAX_PLAYERS];
und dann anstatt:Delete3DTextLabel(label);
das hinmachen:Delete3DTextLabel(label[playerid]);
und beinew Text3D:label = Create3DTextLabel("Scripter",Orange,x,y,z,40.0,0);
das hinmachen:label[playerid] = Create3DTextLabel("Scripter",Orange,x,y,z,40.0,0);
So müsste es dann komplett funktionieren. -
Also dafür würde mir nur zwei Sachen einfallen und zwar:
SpawnPlayer(playerid);
http://wiki.sa-mp.com/wiki/SpawnPlayerund
ForceClassSelection(playerid);
http://wiki.sa-mp.com/wiki/ForceClassSelectionvielleicht ist es das was du suchst/brauchst.
-
Du musst ihm schon Sagen von wem du die Fraktions ID haben willst:
stock GetFraktionsName(playerid)
{
new string[64];
if (sSpieler[playerid][Fraktion] == 0) string = ("Zivilist");
if (sSpieler[playerid][Fraktion] == 1) string = ("LSPD");
if (sSpieler[playerid][Fraktion] == 2) string = ("FBI");
if (sSpieler[playerid][Fraktion] == 2) string = ("Bundeswehr");
if (sSpieler[playerid][Fraktion] == 2) string = ("Sanitäter");
if (sSpieler[playerid][Fraktion] == 2) string = ("Russische Mafia");
if (sSpieler[playerid][Fraktion] == 2) string = ("Hitman");
return string;
} -
Ganz oben eine Globale Variable:
new Admincar;
Dein Befehl:
ocmd:newcar(playerid,params[])
{
new Float:vehx,Float:vehy,Float:vehz;
new vehid,cc1,cc2;
if(sscanf(params,"iii",vehid,cc1,cc2))return SendClientMessage(playerid, GELB,"INFO: /newcar [ID] [FARBE 1] [FARBE 2]");
if(IsPlayerAdmin(playerid))
{
GetPlayerPos(playerid,vehx,vehy,vehz);
Admincar = CreateVehicle(vehid,vehx,vehy,vehz,3,cc1,cc2,-1);
SetVehicleNumberPlate(vehicle,SpielerName(playerid));
PutPlayerInVehicle(playerid, vehicle, 0);
}
else
{
SendClientMessage(playerid,ROT,"Du bist leider kein Admin!");
}
return 1;
}
Und dann bei OnVehicleDeath:DestroyVehicle(Admincar);
-
Du erstellst z.b. ein enum
enum PInfo
{
PayDayGeld
}
new Spieler[MAX_PLAYERS][PInfo];
Folgendes machst du dorthin wenn der Spieler das Geld normalerweise bekommt wenn er die Linie zu Ende Gefahren hat:Spieler[playerid][PayDayGeld] += Geld;
Dann bekommt er jedes mal das Geld dazu gezählt, beim PayDay musst du es nur noch mit einem String auslesen und dann ausgeben wie viel er bekommt und ihm das Geld dazu geben, wichtig ist aber das du das PayDayGeld nach dem PayDay wieder auf null setzt:
Spieler[playerid][PayDayGeld = 0;
Sonst bekommt er nach einigen PayDay's eine menge Geld (xD) -
Du brauchst einen Public der vom Timer aufgerufen wird:
public Tor1()
{
MoveObject(tor1,-2246.1001000, 2208.6999500, 12.2000000,5);
return 1;
}
und
if(IsPlayerInRangeOfPoint(playerid, 25.0, -2253.3000500, 2207.1001000, 12.1000000))
{
MoveObject(tor1,-2246.1001000, 2208.6999500, 12.2000000-10,5);
SetTimer("Tor1", 5000,0);
SendClientMessage(playerid, 0x0F9C00FF, "Du hast das Tor für 5 Sekunden geöffnet");
return 1;
}
das gleiche machst du mit dem anderen tor -
Es liegt nicht daran du musst auf der reihenfolge achten ist da was verrutscht, kann es nicht richtig weitergeben an den enum das sollst du mal prüfen wenn das auch nicht klappt dann nutz die cache funktion von den r7 plugin
Das Problem ist aber das er ist überhaupt nichts setzt, und theoretisch sollte er ja min. bei 2 Variablen etwas setzen aber er setzt überhaupt nicht, und könntest du mir vielleicht ein Beispiel für die Cache Funktion zeigen dein bei dem Tutorial verstehe ich als Anfänger nicht wirklich etwas.