Beschwer dich bei Rockstar Die haben so ein Limit gesetzt
Beiträge von Templer
-
-
Naja, keine Ahnung wie es von Samp her gefixxt wurde mit dem Crash von maximalen Objekten, deswegen halte dich an die Limits
-
Weil Objekte andere Höhenunterschiede hat als Spieler. Ich weiß leider jetzt ohne Screenshot nicht wie weit vom Boden entfernt aber ich schätze mal 2, also erstze das unter dcmd_spa
sp[playerid][gMaxSperre] = CreateObject(1459, x, y, floatdiv(z, 2.0), 0.6, 0.0, 0.0);
-
Also eigentlich sollte dies schon funktionieren, weil ich es so auch getestet habe.
Das hier abändern:
new gMaxSperre;
new sp[MAX_PLAYERS][MAX_STRASSENSPERRE+1]; //Somit werden die Straßensperren vom Spieler nach der Reihe abgebautdcmd_spa(playerid,params[])
{
#pragma unused params
if(gMaxSperre == MAX_STRASSENSPERRE) return SendClientMessage(playerid, blau, "Es wurden bereits genug Straßensperren aufgebaut! Baue welche ab!");
new name[MAX_PLAYER_NAME], s[128];
new Float:x, Float:y, Float:z;
GetPlayerName(playerid,name,sizeof(name));
GetPlayerPos(playerid, x, y, z);
format(s,sizeof(s),"acc/%s.ini",name);
new jobid = dini_Int(s, "job");
new admin = dini_Int(s, "admin");
if(jobid == 1 || jobid == 2 || jobid == 3 || jobid == 4 || jobid == 15 || admin == 2)
{
gMaxSperre++;
sp[playerid][gMaxSperre] = CreateObject(1459, x, y, z, 0.6, 0.0, 0.0);
SendClientMessage(playerid, blau, "Strassenspeere aufgebaut.");
}
return 1;
}
dcmd_spw(playerid,params[])
{
#pragma unused params
new name[MAX_PLAYER_NAME], s[128];
GetPlayerName(playerid,name,sizeof(name));
format(s,sizeof(s),"acc/%s.ini",name);
new jobid = dini_Int(s, "job");
new admin = dini_Int(s, "admin");
if(jobid == 1 || jobid == 2 || jobid == 3 || jobid == 4 || jobid == 15 || admin == 2)
{
DestroyObject(sp[playerid][gMaxSperre]);
SendClientMessage(playerid, blau, "Strassenspeere abgebaut.");
gMaxSperre--;
}
return 1;
} -
Viel Spaß
new string[128] = "Hallo breadfish, ich bin Robdeflop", sub[128] = "bin";
new find = strfind(string, sub, false);
if(find == -1) return printf("Substring '%s' nicht gefunden!", sub);
strdel(string, find, find+strlen(sub));
strins(string, "heiße", find);
printf("Ausgabe: %s", string); -
-
Das Server Neustart sind die Weg, keine Sorge. Schaden kann es den Server bestimmt ned, da du 254 ungestreamte Objekte haben kannst
http://wiki.sa-mp.com/wiki/Limits
ZitatGlobal Objects 254
-
-
http://wiki.sa-mp.com/wiki/Limits
Samp hat ja Limits und bei überschreitung führt es zu einem ClientenCarsh, jedoch haben Streamer eine kleine Sicherung eingebaut die verhindern, dass Sie mehr als so und so viele Objekte einem Spieler in einer Distanz zeigen.
Per-Player Objects 254
Bedeutet das jeder Spieler max. 254 Objekte sehen kann (Natürlich kann er noch 10-20 mehr sehen, jedoch fällt dies dann unter nervenden Client Crashes!)In Einsteins Objekt Streamer gibt es in der Include oben eine Definition
#define MAX_STREAM_AT_SAME_TIME 142
diesen Wert kannst du ohne nachzudenken ruhig auf 250 setzen, dann sind nicht all zuviele Objekte weg ^^. -
Sollte verständlich sein:
#define MAX_STRASSENSPERRE (4) //Wieviele Straßensperren maximal erlaubt sindnew gMaxSperre = 0;
dcmd_spa(playerid,params[])
{
#pragma unused params
if(gMaxSperre == MAX_STRASSENSPERRE) return SendClientMessage(playerid, blau, "Es wurden bereits genug Straßensperren aufgebaut! Baue welche ab!");
new name[MAX_PLAYER_NAME], s[128];
new Float:x, Float:y, Float:z;
GetPlayerName(playerid,name,sizeof(name));
GetPlayerPos(playerid, x, y, z);
format(s,sizeof(s),"acc/%s.ini",name);
new jobid = dini_Int(s, "job");
new admin = dini_Int(s, "admin");
if(jobid == 1 || jobid == 2 || jobid == 3 || jobid == 4 || jobid == 15 || admin == 2)
{
sp[playerid] = CreateObject(1459, x, y, z, 0.0, 0.0);
SendClientMessage(playerid, blau, "Strassenspeere aufgebaut.");
gMaxSperre++;
}
return 1;
} -
nein, ich mache keine Dienstleistungen an fremden Scripts. Ich helfe den Leuten nur im Forum und zeige Ihnen wie es richtig funktionieren würde.
-
Ersetze folgende Zeile mit dem hier:
sp[playerid] = CreateObject(1459, x, y, z, 0.0, 0.0, 0.0);
hast einfach die Rotation in der Z Achse vergessen, also das 3te 0.0
-
ist der Ordner 'Biz' (Groß-/Kleinschreibung Beachten!) im Ordner scriptfiles vorhanden bzw. die Datei im Ordner Biz die Datei 'OiltTransBiz.ini' vorhanden?
-
Nütze es so:
new rtext[256];
if(Player[playerid][vip] == 1) rtext = "Premium";
else rtext = "Nein";
format(string3, sizeof(string3),"[Premium: %s]", rtext);
SendClientMessage(playerid, COLOR_YELLOW2, string3); -
Ist das ein Ratespiel ? Ich meine, im Code oben ist alles in Ordnung, also die Antwort zu deiner Frage: Es passt alles.
Edit:// Wenn es wirklich unter OnPlayerEnterVehicle ist, dann funktioniert GetPlayerVehicleID(playerid) nicht, sondern nütze anstatt von tmp die Variable vehicleid und lösche das
new tmp = GetPlayerVehicleID(playerid); -
ne hab kein ICQ, jedoch habe ich es eh so schön erklärt.
-
Also dcmd_evict gehört außerhalb von OnPlayerCommandText zB:
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(evict, strlen("evict"), cmdtext);
return 1;
}
dcmd_evict(playerid,params[]) { // This needs to be intergrated with your players .ini account
#pragma unused params
if(IsPlayerConnected(playerid)){
new giveplayerid;
if(sscanf(params, "i", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /evict [id]");
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "The given player does not exist");for(new h = 0; h <= MAX_HOUSES; h++){
if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])){
if(strcmp(HouseInfo[h][hName],GetName(playerid), false ) == 0){
if(PlayerInfo[giveplayerid][pHouse] != h) return SendClientMessage(playerid, COLOR_WHITE, ".:: [ERROR]: This player is not renting your house.");
PlayerInfo[giveplayerid][pHouse] = -1; PlayerUpdate(giveplayerid);
SendFormattedMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You have evicted %s[%d] from your house.", GetName(giveplayerid), giveplayerid);
} else return SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You are not the owner of this house.");
} } }
return true;
}und schick mal 3 Zeilen von oben und unten der Nummer 1584
-
also du fügst unter OnPlayerCommandText folgendes ein:
dcmd(evict, strlen("evict"), cmdtext);
dann ersetzt du überall wo du return 1 true; geschrieben hast um in return 1;, also das true weg!
dann ersetzt du bitte auch diesen Code:
dcmd_exit(playerid,params[]) {
#pragma unused params
if(IsPlayerConnected(playerid)){
for(new h = 0; h <= MAX_HOUSES; h++){
if(PlayerToPoint(PTP_RADIUS, playerid, HousesCoords[HouseInfo[h][hLevel]][0], HousesCoords[HouseInfo[h][hLevel]][1], HousesCoords[HouseInfo[h][hLevel]][2])){
SetPlayerPos(playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ]);
SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid, 0);
} } }
return 1;
}und schickst nebenbei uns die Zeilen 2069 und 2080. Anonsten auch die Errors und Warnings
-
Mambo, du kannst dort kein playerid schreiben...
Ändere also die Zeile wo der Error ist um in:
new bool:pFirstLog[MAX_PLAYERS;];
und dann dort wo sich der Spieler registriert machst du das:
pFirstLog[playerid] = true;
und wenn er mit dem Tutorial oder sonstwas fertig ist oder sich zum zweiten mal Einloggt machst du:
pFirstLog[playerid] = false;Wenn ich es richtig verstanden habe, aber wofür willste es ansonsten genau nützen?
-
Schick mal die Befehle dcmd_enter, dcmd_exit und dcmd_evict. Die anderne zwei Warnings hast du neu eingebaut und ich dir jetzt nicht so sagen kann was du falsch gemacht hast, weil ich ned weiß was überhaupt geschehen ist.