Man soll sich zu dem Spieler porten können den man in Tab ausgewählt hat
Okay und was passiert, wenn du folgendes machst:
//Unter OnPlayerClickPlayer
new pID[5];
valstr(pID, clickedplayerid);
ocmd_gethere(playerid, pID);
Man soll sich zu dem Spieler porten können den man in Tab ausgewählt hat
Okay und was passiert, wenn du folgendes machst:
//Unter OnPlayerClickPlayer
new pID[5];
valstr(pID, clickedplayerid);
ocmd_gethere(playerid, pID);
also er gibt es nicht weiter richtig
Was gibt er nicht weiter?
Kannst du versuchen etwas ausführlicher und präziser und am besten immer verständlich mit Beispielen zu erläutern, was du vor hast?
Hellseher wurden leider von Breadfish.de gebannt, da diese hier zu leichtes Spiel hatten ![]()
will es mit einem Query lösen
Wenn du es so machst, wie ich es beschrieben habe, dann löst du es doch mit einem Query.
Deine Art ist nicht nur ein Query, sondern mehrere Sub-Querys, welche doch jeweils wieder als eigenständiges Query interpretiert werden.
Somit ist die Methode die ich vorschlage wesentlich performanter und besser für den Server ![]()
Nein, also überall static zu verwenden ist kompletter Quatsch, da du es dann genauso gut global deklarieren könntest.
static hat 2 Eigenschaften.
Wir sagen du hast folgende Funktion:
stock test()
{
static counter; //Wird Standardmäßig mit 0 initialisiert
printf("%d",++counter);
}
//Rufen wir das mal in einer main auf:
test(); //Gibt 1 aus
test(); //Gibt 2 aus
test(); //Gibt 3 aus
Alles anzeigen
Wir sehen also, der Wert wird gespeichert, wie bei einer globalen Variable, nur ist diese nur innerhalb der Funktion verfügbar.
Kann man machen, macht aber wie man sehen sollte nicht immer wirklich Sinn und kann bei falscher Anwendung zu schweren Fehlern führen! ![]()
hmm, ne an die session übergebe ich nur den usernamen nach login.
Dann selecte dir mit einem Query die Variablen die du brauchst und dann summere sie auf ![]()
Dann haste 1 Query...und nicht 4 ![]()
Ich rate dir davon ab strings global zu deklarieren die du in sub-Funktionen nutzt.
Wenn schnelle Änderungen im ns-ms Takt auftreten, kann es da zu erheblichen Fehlern / Überschreibungen kommen.
Zudem blockieren sie sehr viel Heap Speicher, dann kannst du weniger auf den Stack packen, der belegt wird, wenn du solche Strings in sub-Funktionen deklarierst, was dann schneller zu einer Heap/Stack Collission führen kann, wie man es in einigen Skripten heutzutage sieht.
Deklarier einfach in der Sub-Funktion einen String so klein wie es möglich ist und gut ist. Dieser wird ja nach beenden der Routine wieder vom Stack geschmissen. Der nimmt also nur kurz Platz weg wohingegen der im Heap reservierte Speicher permanent Platz einnimmt + die .amx größer macht + sehr Fehler anfällig sein kann ![]()
viel zu Rescourcen-Fressend
Inwiefern darf man das verstehen?
Wieso hast du überhaupt den String global deklariert?!
Versuchs mal so:
ocmd:adaclist(playerid)
{
if(!DarfPlayerCommand(playerid))return ErrorMsg(playerid,"Du kannst keine Befele nutzen.");
if(SpielerInfo[playerid][Job]!=4)return ErrorMsg(playerid,"Du bist kein Mitglied des ADAC's.");
new string[MAX_PLAYERS*MAX_PLAYER_NAME] = "Auftragsnummer\tName\tTelefon\n";
for(new i=GetPlayerPoolSize(); i!=-1; i--)
{
if(!IsPlayerEingeloggt(i) || willADAC[i]!=1)continue;
format(string,sizeof(string),"%s\n%i\t%s\t%d",string,i,SpielerName(i),SpielerInfo[i][HIN]);
}
if(strlen(string)==28)return ShowPlayerDialog(playerid,DIALOG_INFO,DIALOG_STYLE_MSGBOX,"ADAC - Auftragsliste","Es sind keine Aufträge vorhanden.","Ok","");
ShowPlayerDialog(playerid,DIALOG_INFO,DIALOG_STYLE_TABLIST_HEADERS,"ADAC-Auftragsliste",string,"Ok","");
return 1;
}
Alles anzeigen
Musst halt auch immer neu den String auf deinen alten String packen und nicht immer überschreiben, sonst wird dir natürlich immer nur der Letzte Spieler angezeigt ![]()
Doofe Frage, aber willst echt da immer so n verschachteltes Query an den Server senden?
Hast du seine Daten nicht eh schon in den Session Daten gespeichert?
Dann kannst nämlich einfach diese addieren...dann wäreste direkt fertig, anstatt da so einen Mist zu machen ![]()
Dann zeigt er mir diesen error an:
Schauen wir uns die Funktion doch einfach mal an:
native SetDynamicObjectMaterialText(STREAMER_TAG_OBJECT objectid, materialindex, const text[], materialsize = OBJECT_MATERIAL_SIZE_256x128, const fontface[] = "Arial", fontsize = 24, bold = 1, fontcolor = 0xFFFFFFFF, backcolor = 0, textalignment = 0);
Bedeutet der Materialindex und den Text musst du tauschen ![]()
SetDynamicObjectMaterialText(g_Object[858], 0, "CT - Raum 3", 90, "Arial", 20, 1, 0xFF000000, 0x0, 1);
Übrigens anstatt 0x0 kannst auch einfach 0 schreiben ![]()
Wir kennen nicht deine Tank Variable...
Aber theoretisch müsste das einfach sowas in der Art sein:
Tank[vehicleid] = 100;
Erstmal gecheckt ob mein PC an ist: http://ismycomputeron.com/
Da hab ich ja grad nochmal Glück gehabt ![]()
Magst mir deine TeamViewer Daten per PN senden?
Dann kann ich drüber schauen und hier posten, was der Fehler war ![]()
Oder du machst einen pastebin Link und packst da deinen ganzen Code rein, was dir lieber ist ![]()
Was ein schöner Code ![]()
Eventuell mal bisschen ordentlicher darstellen und die genauen Zeilen zeigen...ich sehe da kein #if
Probiers mal mit dem CCleaner ![]()
Der Name von dem Projekt irritiert aber wirklich
Bewerb dich mal xD
Reborn Reallife entstanden am 19.01.2017 sucht Unterstützung
@ReborN: Wie ich erstmal dachte, dass du jetzt n neues eigenes Projekt aufmachst hahaha xD
Echt? Darf ich erfahren wie?
Natürlich darfst du ![]()
Also um mal ein paar Fakten hier rauszuhauen ![]()
obj = CreateObject(18646,0,0,3,0,0,0);
SetObjectMaterial(obj,1,19947,"EnExMarkers","enexmarker4-4",0xFFFFFFFF);
Allerdings wird dann, das Objekt nicht leuchten ![]()
Wenn du also das Objekt dann leuchten lassen willst einfach ersetzen, durch das leuchten siehst man eh die eigentliche Objektfarbe nicht ![]()
Viel Erfolg ![]()
Unter OnPlayerRequestClass nutzt du [wiki]SetSpawnInfo[/wiki] und [wiki]SpawnPlayer[/wiki] ![]()
In SetSpawnInfo kannst du den Skin zuweisen ![]()
Kalcor ist Russe
Soweit ich weiß ist Kalcor Australier ![]()