Ouhh...ehh
Wie hast du das denn alles deklariert? ![]()
Ouhh...ehh
Wie hast du das denn alles deklariert? ![]()
Du lädst das falsch..dass muss so aussehen:
cache_get_field_content(0, "IP", sInfo[playerid][sIP]);
sInfo[playerid][sBargeld] = cache_get_field_content_int(0, "Bargeld");
sInfo[playerid][sLevel] = cache_get_field_content_int(0, "Level");
sInfo[playerid][sGeschlecht] = cache_get_field_content_int(0, "Geschlecht");
sInfo[playerid][sSkin] = cache_get_field_content_int(0, "Skin");
Es gab keinen Fehler, weil man optional das connection Handle da angeben kann ![]()
Es würde auch sowas reichen:
stock GetRandomPlayer()
{
new list[MAX_PLAYERS],idx;
for(new i=GetPlayerPoolSize(); i!=-1; i--)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
list[idx++] = i;
}
return (!idx) ? INVALID_PLAYER_ID : list[random(idx)];
}
//Nutzung:
new id = GetRandomPlayer();
if(id == INVALID_PLAYER_ID) return 1; //Hier ist kein Spieler online!
SetContract(id, 1000); //Beispiel Code
Alles anzeigen
Schreibweise etwas kompliziert
Makros sind nice ![]()
//Hier paar Makros:
#define LoopTextDraws(%0,%1,%2) new __@tmp=_:(%2);for(new %0=_:(%1); (%0) < __@tmp; (%0)++)
//Und zur Deklaration:
new PlayerText:x = CreatePlayerTextDraw(..); //Es reicht hier nur x zu nutzen
//Unter das erste TextDraw:
LoginTextDraw[playerid][0] = x;
//Unter das letzte TextDraw:
LoginTextDraw[playerid][1] = x;
//Loop:
LoopTextDraws(textid, LoginTextDraw[playerid][0], LoginTextDraw[playerid][1])
{
PlayerTextDrawHide(playerid, PlayerText:textid);
}
//Oder mit PVars:
#define LoopTextDraws(%0,%1,%2,%3) new __@tmp=GetPVarInt(%0,%3);for(new %1=GetPVarInt(%0,%2); (%1) < __@tmp; (%1)++)
#define SetPointer(%0,%1,%2) SetPVarInt(%0,%1,_:(%2))
#define DeletePointer(%0,%1) DeletePVar(%0,%1)
//zur Deklaration:
new PlayerText:x = CreatePlayerTextDraw(..); //Es reicht hier nur x zu nutzen
//Unter das erste TextDraw:
SetPointer(playerid, "Start", x);
//Unter das letzte TextDraw:
SetPointer(playerid, "Ende", x);
LoopTextDraws(playerid, textid, "Start", "Ende")
{
PlayerTextDrawHide(playerid, PlayerText:textid);
PlayerTextDrawDestroy(playerid, PlayerText:textid);
}
DeletePointer(playerid, "Start");
DeletePointer(playerid, "Ende");
Alles anzeigen
Hahah xD
Aber ist okay, dein Skript ![]()
So:
for(new i; i <sizeof(LoginTextDraw[]); i++)
Wenn du einen kleinen Performanz hinweis magst:
Weißt du, du erstellst (deklarierst) hier ein global Array.
Das wird im Heap reserviert.
[MAX_PLAYERS][33];
Mal angenommen MAX_PLAYERS sind 500.
Dann würdest du hier 500*33*4 Bytes = 66000 Bytes = 64.45KiloBytes
in der .amx reservieren nur um ein paar TextDraw ids zu speichern.
Also ich fände das nicht gerade sehr schön xD
Besonders wenn du noch mehr TextDraws hast..reservierst du da hunderte KiloBytes an speicher...für nix xD
Ein trick wäre...die Nutzung von "Pointers".
1. Möglichkeit:
new PlayerText:LoginTextDraw[MAX_PLAYERS][2]; //Sind 4000 Bytes..aber besser als 66000 xD
new PlayerText:x = LoginTextDraw[playerid][0] = CreatePlayerTextDraw(...); //Hier beim ersten
TextDrawPlayerTextDrawSetXX(x, true); //Nutzen dann hier mit x
x = CreatePlayerTextDraw(...); //Hier einfach auf x zuweisen und die ID nutzen (bei allen)
PlayerTextDrawSetXX(x, true); //Nutzen dann hier mit x
//und ganz zum schluss:
LoginTextDraw[playerid][1] = x; //Jetzt weißt du..wo es anfängt und aufhört
//Loop würde z.B. so aussehen:
new len = _:LoginTextDraw[playerid][1]+1;
for(new textid=_:LoginTextDraw[playerid][0]; textid<len; textid++)
{
PlayerTextDrawHide(playerid, PlayerText:textid);
}
Alles anzeigen
2. Möglichkeit:
Nutzung von 2 PVars.
Sieht genau gleich aus..nur mit Set & Get nutzen.
Dann kann man auch, z.B. wenn es nur um den Login geht...DeletePVar & PlayerTextDrawDestroy machen und verbrauchst nun so 0 Speicher ![]()
Fazit:
Würdest du Möglichkeit 1 nutzen, dann würdest du bei 100000 Iterationen...dir ca 2ms sparen. Allerdings würdest du immernoch jede Menge Speicher reservieren. Allerdings kannst du nun abwegen ob dir 2ms CPU wichtiger sind...oder ein Speicherverbrauch von 0 Bytes
Dann klammer mal die header Zeile aus..und printe dir mal, was er dir so ausgibt..als namen...als query..und und und ![]()
Kann man mit Count nicht die Zeile auslesen?
Nein..hast du meinen Code dir mal angeschaut? ![]()
Habe doch das Query und die Abfrage mit dem rowCount angepasst ![]()
...kannst mal n Bild von deiner Tabellenstruktur machen? ![]()
Oh, du hattest Auhority geschrieben..muss aber Authority heißen ![]()
Die Funktion kannste vereinfachen:
public settime(playerid)
{
new string[16];
gettime(string[0], string[1], string[2]);
format(string,sizeof(string),"%02d:%02d:%02d",string[0],string[1],string[2]);
TextDrawSetString(Time, string);
}
Für jeden Spieler das einzeln zu setzen macht btw keinen Sinn...kannst das direkt nur für das TextDraw setzen, das wird dann für die einzelnen Spieler automatisch angezeigt ![]()
Zudem wenn er zu langsam zählt, liegt das an dem Timer-Interval, ders zu groß ![]()
Heißt dein Feld in der Datenbank wirklich [Name] oder doch eher nur Name ? ![]()
$lsu_username = $_SESSION['User'];
$stmt = $conn->prepare("SELECT * FROM $db_Account WHERE `Name` = :name");
$stmt->execute(array(':name' => $lsu_username));
$row = $stmt->fetch();
if ($stmt->rowCount() == 1)
{
$AdminLevel = $row['Auhority'];// <- AdminLevel
}
else
{
session_destroy();
header("Location: index.php");
}
Alles anzeigen
...nutzt du denn einen "CMD Prozessor", wenn ja welchen..hast du noch andere Includes..wo dieser Callback drinnen ist?
Lade eventuell mal crashdetect und probiere mal aus, was der so ausspuckt ![]()
Die anderen Funktionieren (sofern die Befehle funktionieren) wie z.B. der /help-Dialog
Keine Ahnung..was du damit aussagen willst.
Aber an dem Code den du geschrieben hast..ist nichts falsch ![]()
Der Fehler muss also woanders liegen...
Also nicht mal beim IE hats bei mir n doppelten border..
Vielleicht machste mal n screen und markierst was du meinst xD
Fehler code der MySQL Log:
AUTO_INCREMENT bedeutet, dass er automatisch das Feld erhöht..aber das geht nur bei Integern, nicht bei Strings...
Also das ist fehl am Platz ![]()
Sobald ich diesen code drin hab, funktioniert kein Command mehr
Denke nicht, dass es an dem Callback liegt...das sieht so eigentlich richtig aus...
Wie haste denn DIALOG_PLAYERCLICK definiert? ![]()
Suche eine Glas und die Stein Texture darunter ( Wand ) die in etwar so ist wie unten auf dem Bild:
Na dann, auf gehts: https://textures.xyin.ws/?page=textures
Als Keyword, für Glas: glas und für die Wand: brick
Achtung, das System spinnt!!! ![]()