Ich nutze für sowas mehreren Lappis.
Nur als Tipp.
es reicht auch ein sandbox tool oder eine vm.
Dann kann man samp 2x starten ![]()
Ich nutze für sowas mehreren Lappis.
Nur als Tipp.
es reicht auch ein sandbox tool oder eine vm.
Dann kann man samp 2x starten ![]()
Wie kann ich das machen das ich den Rang in einer der 4 Veralter Spalten setze und wenn zb in der ersten Spalte er den Rang 4 schon hat dass ich diesen in keienr anderen vergeben kann?
z.B. so:
#define MAX_VERWALTER 4
#define ExistVerwalter(%0) (Verwalter[%0][0]!=EOS)
new Verwalter[MAX_VERWALTER][MAX_PLAYER_NAME];
new id;
if(ExistVerwalter(id)) return SCM(playerid,-1,"Ein verwalter existiert bereits!");
format(Verwalter[id],MAX_PLAYER_NAME, GetName(pID)); //Setzt den Verwalter
Alles anzeigen
Ist das eventuell zu aufwaendig umzusetzen?
Kannst es so machen:
FinishedGame()
{
new scoreTable[MAX_PLAYERS][2], idx, counter;
for(new i = GetPlayerPoolSize(); i!=-1; i--)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
scoreTable[i][0] = playerdataInfo[i][pKills];
scoreTable[i][1] = i;
counter++;
}
SortDeepArray(scoreTable, 0, .order = SORT_DESC);
new scorestring[512], minutes,seconds;
minutes = totaltime / 60;
seconds = seconds % 60;
format(scorestring,sizeof(scorestring),"Duration of the game: %d:%d",minutes,seconds);
for(new i,pID; i<counter; i++)
{
pID = scoreTable[i][1];
format(scorestring,sizeof(scorestring),"%s\n%d. Place: %d",scorestring,(i+1),playerdataInfo[pID][pKills]);
}
ShowPlayerDialog(playerid, 1234, DIALOG_STYLE_MSGBOX, "Scoreboard",scorestring, "", "");
SetTimer("GMX",15000,false);
return 1;
}
Alles anzeigen
//edit2: Habe gerade mal eine andere strcpy Funktion direkt im Script implementiert, aber auch dann schmiert der Compiler ab. Wird vielleicht irgendwas aus den YSI Bibliotheken genutzt was ich nicht weiss?
Check dein Skript evtl mal auf Klammerfehler.
Ansonsten kann es gut sein, dass ysi Probleme macht, bin mir grad gar nicht sicher, ob du dafür inzwischen schon den Zeex Compiler verwenden musst...
Probiere sie mal als new stock zu deklarieren ![]()
Du kannst das so schreiben:
stock CountTeams()
{
new count;
for(new i; i<TEAMSIZE; i++) if(GetTeamPlayerCount(i) > 0) count++;
return count;
}
stock TeamsAlive(bool:value)
{
if(CountTeams() != 1) return 1;
static const teams[][] = {
FIRST_TEAM_COLOR_TAG,
SECOND_TEAM_COLOR_TAG,
THIRD_TEAM_COLOR_TAG,
FOURTH_TEAM_COLOR_TAG,
FIFTH_TEAM_COLOR_TAG,
SIXTH_TEAM_COLOR_TAG
};
new string[128];
format(string,sizeof(string),"SERVER: All remaining teams have been wiped. Team %s {FFFFFF}has won the game!",teams[TeamsAlive(true)]);
for(new i=GetPlayerPoolSize(); i!=-1; i--)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
SendClientMessage(i,-1,string),
printf(string),
ResetPlayerData(i);
}
FinishedGame();
return i;
}
Alles anzeigen
Weiß nicht, was du mit der value als Parameter vor hast.
Es ist besser vor der Schleife einmal den String zu formatieren, ansonsten wird er bei jedem durchlauf formatiert, das ist ja ineffizient.
TeamsAlive(true) gibt hoffentlich 0 als ersten Index zurück ![]()
Mit einem Objekt Editor kann man das auch ganz einfach machen.
Man brauch ja immer nur bestimmte Punkte ![]()
Ah.. okay, also wäre es dann im Prinzip egal welchen Wert ich aus dem Array zur Initialisierung wähle?
Naja, theoretisch, aber der Wert aus dem 0ten Index bietet sich ja an, weil du dann die Schleife einfach ab 1 starten lassen kannst.
Alle anderen Werte bieten sich nicht so an, könntest natürlich auch den letzten Wert nehmen und die Schleife rückwärts laufen lassen... ![]()
Wieso nimmst du denn in der diff minus des ersten Wertes sprich
Damit ich direkt einen sinnvollen Initialisierungswert habe.
Sonst könnte mein Wert ja das Ergebnis verfälschen und so ist man sicher, dass der Median auch in dem Array ist und nicht der Startwert.
habe das jetzt so gelöst, zumindest funktioniert das bei mir:
In der Aufgabe steht, man darf das Array nicht sortieren ![]()
Das klingt nach einer interessanten Aufgabe ![]()
Also ich hätte eine Idee wie man es machen kann, ob das die Beste ist, sei mal dahin gestellt.
Du kannst einfach alle Werte aus dem Array summieren.
So danach berechnest du den Mittelwert:
So und jetzt prüfst du einfach, welches Element am nähsten dran ist:
die ID 174. Beim erneuten Ausführen (weiteres Fahrzeug wird hinzugefügt) würde man ja wieder auf die 174 kommen.
Das ist ja der Witz an seiner Tabelle, egal wie er da was hinzufügt, alle anderen Zahlen darunter müssen sich natürlich um 1 erhöhen.
Dadurch wurde eben nicht 174 wieder rauskommen, sondern 175.
Eigene Tabelle für jedes Land habe ich auch dem Entwickler gesagt jedoch findet er es zu viel arbeit und wäre zu aufwendig in C#, jedoch bin ich erst seit kurzem im Entwickler-Team und bin halt für die Website und Datenbank zuständig, somit auch für die neuen Fahrzeuge eintragen, also eigene Länder war auch mein Plan, jedoch wollte er es halt nicht.
Dann frage ihn doch, wie er sich das vorstellt, mit dem hinzufügen von Autos ![]()
Wie wurde es denn bisher gemacht, das kannst du doch dann einfach ermitteln ![]()
Du hast n Array mit den Namen. ("Schweiz", "Niederlande", ...)
Und wenn du der Schweiz ein Auto hinzufügen willst, suchst du nach der Nummer von den Niederlanden und rechnest -1 und fügst da einfach das Auto ein.
Wobei es natürlich wesentlich sinniger gewesen wäre, für jedes Land eine eigene Tabelle anzulegen ![]()
Dann müsste ich ja fast mein ganzes Script umändern.
Die Objekte hat man doch alle meistens an einer Position.
Dann ersetzen einfach von CreateObject zu CreateDynamicObject. Das sind 3 Klicks..
Kann man da nicht was anderes machen, oder woran liegt es allgemein, das auf einmal Commands mit CreateObject nicht funktionieren sowie normale Mapping sind nicht mehr da...
CreateObject hat ein Limit, dafür wurde ja CreateDynamicObject erschaffen, um dieses Limit zu umgehen.
Nutzt du nur CreateObject, kannst du nur 1000 Objekte verwenden, danach werden halt auch keine mehr erschaffen.
Deshalb gilt um das Limit zu "umgehen" CreateDynamicObject verwenden.
Das sagt er aus:
Das sieht so aus, als ob der MySQL-Server gar nicht an ist?!
Warum verwendest du eig so eine alte MySQL Version?
Es konnte keine Verbindung zur Datenbank hergestellt werden!
Also irgendwas stimmt da nicht.
Steht was im MySQL Log?
Die Daten sind vermutlich falsch.
Check mal die Ip, den benutzer..etc pp
Dieses Objekt ist auf beiden Seiten eingekerbt.
Das müsste 2960 sein ![]()
Hat da jemand eine Lösung?
Nutze überall (außer für Fußböden) CreateDynamicObject.
mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS)
Kannst du mal zeigen, wie die defines dafür aussehen?
Joa, so könnte man es machen, aber ich möcht auch Personen mehr als 2 Verwalterränge geben, und dies wären wohl zu viele Spalten.
Erkläre doch etwas genauer, was du vor hast.
Du kannst auch einfach, wenn du eine Haus-Tabelle hast, dort eine Spalter Hausverwalter machen und dann dort den Namen (oder besser die ID) des Nutzers eintragen, der der Verwalter ist.
Das nennt man einen JOIN.
Weil wenn ich makeadmin xy 7 mach udn er aber schon 6 ist wird doch pberschrieben oder?
Deshalb sage ich doch mach 2 Spalten.
In die eine kommt die 7 und in die Andere in diesem Fall die 6 und fertig ![]()
Was spricht dagegen einfach eine neue Spalte zu machen?
hast du da n Lösung für ich bitte?
Naja, was genau speicherst du denn da?
Nur, dass er das ist oder auch dann die ID von dem Haus und dem Biz?
Am Einfachsten ist es natürlich, einfach noch eine Spalte einzufügen...
Theoretisch könntest du auch eine Zahl vergeben, wie z.B.
0 = Er ist nichts
1 = Er ist Hausverwalter
2 = Er ist Bizverwalter
3 = Er ist beides
Pawno is just a simple editor for SA-MP pawn scripts. There is no reason it would need to be updated with a new pawn version in the server.