[wiki]SendClientMessage[/wiki]
'color' ist ein Integer, deine Variable 'farbe' ist aber ein String.
#edit:
Weiß einer zufällig, wie ich einen 3DTextLabel außerhalb der Map (<-3000, >3000) anzeigen kann?
[wiki]SendClientMessage[/wiki]
'color' ist ein Integer, deine Variable 'farbe' ist aber ein String.
#edit:
Weiß einer zufällig, wie ich einen 3DTextLabel außerhalb der Map (<-3000, >3000) anzeigen kann?
Ne, wenn du eine Farbe möchtest, muss es (je nachdem) im RBG- (6 Stellen) oder RGBA-Format (8 Stellen) sein.
Ich habe vorhin meine Antwort editiert, aber hier nochmal. Du kannst einfach den Parameter "len" in der Funktion hinzufügen (damit es einfach bleibt).
stock IsHex(string[], bool:strict_0x = false, len = -1)
{
if(len != -1 && (strlen(string) != len)) return false;
if(strict_0x && (string[0] != '0' || string[1] != 'x')) return false;
for(new index = strict_0x ? 2 : 0; index < strlen(string); index++)
{
if((index == 0 && string[index] == '0') || (index == 1 && string[index] == 'x') || (string[index] >= '0' && string[index] <= '9') || (string[index] >= 'A' && string[index] <= 'F') || (string[index] >= 'a' && string[index] <= 'f')) continue;
else return false;
}
return true;
}
Alles anzeigen
Und deine Abfrage machst du dann einfach so (entweder len = 8 (RGB) oder len = 10 (RGBA))
0x123 ist ja auch eine Hexadezimale Zahl Geht ja von '0' bis 'F'
0x123 = 291
Wenn du eine bestimme Länge möchtest, musst du halt noch gleichzeitig mit [wiki]strlen[/wiki] arbeiten.
Sonst bau halt noch eine "len" Funktion rein
Für eine RGBA Farbe müsstest du dann (logischerweise) len = 10 angeben.
stock IsHex(string[], bool:strict_0x = false, len = -1)
{
if(len != -1 && (strlen(string) != len)) return false;
if(strict_0x && (string[0] != '0' || string[1] != 'x')) return false;
for(new index = strict_0x ? 2 : 0; index < strlen(string); index++)
{
if((index == 0 && string[index] == '0') || (index == 1 && string[index] == 'x') || (string[index] >= '0' && string[index] <= '9') || (string[index] >= 'A' && string[index] <= 'F') || (string[index] >= 'a' && string[index] <= 'f')) continue;
else return false;
}
return true;
}
Alles anzeigen
Das finde ich auch. Lieber das Rad neu erfinden, als das selbe zu machen, wie andere Server. Natürlich kann sich Beispiele und Ideen von anderen Servern nehmen, muss man sogar. Aber wenn ein kleiner Server das selbe Konzept hat, wie ein größerer Server, dann geht man wohl eher zum größeren Server. Man braucht vielleicht keine 1a Systeme oder glorreiche Ideen. Wäre gut, braucht man aber nicht. Aber dennoch muss sich der Server irgendwie von anderen unterscheiden. Wenn man den User fragt: "Warum spielst du auf dem Server?" - "Ja, weil er ..." - Zu 90% kann man daraufhin sagen: "Ja, aber das gibts ja auch auf dem Server 'x-beliebiger-server' und der hat doppelt so viele User"
Hallo,
SAMP ist nicht ausgestorben, LoG ( Life of German) am Tag ca. 190 Spieler drauf, auf RPG-CITY ( GTA - City ) sind auchtäglich ca. 210 Spieler online. Ich kann noch mehr Server aufzählen wo genug von genug Spieler drauf sind.
Fazit, von meiner Seite lohnt es sich noch ein Server aufzumachen.
Da stimme ich dir zu. Ich verstehe es, wenn Leute meinen, SAMP wäre ausgestorben, oder dass die Mühe keinen Sinn mehr macht. Ich denke größtenteils genauso.
Jedoch sieht man ja immer wieder. Ein (wie einige Leute es nennen) "08/15-Server" macht auf: Einige User kommen irgendwann Random auf dem Server. Einige davon spielen sogar einige Tage aktiv auf dem Server und bringen (ab und an) noch 1 - 2 Freunde mit. Dadurch hat man selbst auf einem "08/15-Server" wenn es hoch kommt 10 - 30 Spieler wovon ca. 6 - 12 gleichzeitig online sind. Gleichzeitig online sind nicht viele, aber registriert sind auch schon einige.
Was das Problem nun an den meisten Servern ist, dass es einfach eintönig, bzw. langweilig, auf dem Server ist. Es gibt einfach keinen Suchtfaktor in dem Spiel.
* Deathmatch Server: Man könnte ein Ranking-System machen (so CSGO like) und kann Ranglisten machen, wodurch man sich das Ziel setzen kann, der "beste" zu werden. Und man hat massig Möglichkeiten, so einen Server interessant und abwechslungsreich zu gestalten.
Genauso kann man das mit Race-Servern oder Minigame-Servern machen
* Reallife / Roleplay: Immer die selbe abgelutschte Sch*. Das einzige, was man "erreichen" kann, ist meistens, dass man sich ein dickes Auto kauft. Und man macht immer das selbe: Jobben, Fraktionsaktivitäten (Gangfight / Polizei) und in einigen seltenen Fällen mal ein eintöniges Event.
Für Reallife / Roleplay Server muss einfach mal ein neues Konzept her, welches dafür sorgt, dass man auch langzeitig Spaß auf dem Server haben kann. Und wenn dieses nicht vorhanden ist, dann wird aus dem Server in den meisten Fällen nicht.
Ich weiß nicht, ob der Text oben nun so Sinn ergibt, ich habe einfach drauf losgeschrieben. Aber ich hoffe, ihr versteht so einigermaßen, wie ich das meine
Vielleicht eine Erklärung für Dumme?
Was ist das? o.o
@Apokrate
Also der Code, den ich gesendet habe, der nimmt alle HEX Formate.
Sowohl FF8800 als auch 0xFF8800 wären gültig.
Hier nochmal eine Alternative. Einfach 'strict_0x' auf 'true' setzen, dann werden nur noch Hexadezimale Zahlen gewertet, welche auch mit '0x' anfangen.
Source Code + Test:
#include a_samp
main() {}
public OnGameModeInit()
{
printf("[strict=0] %b : %s",IsHex("0FF8FF", false),"0FF8FF");
printf("[strict=0] %b : %s",IsHex("AddC55", false),"AddC55");
printf("[strict=0] %b : %s",IsHex("0xFF8800FF", false),"0xFF8800FF");
printf("[strict=0] %b : %s",IsHex("AASDFASD", false),"AASDFASD");
printf("[strict=0] %b : %s",IsHex("x0FF", false),"x0FF");
print("====================");
printf("[strict=1] %b : %s",IsHex("0FF8FF", true),"0FF8FF");
printf("[strict=1] %b : %s",IsHex("AddC55", true),"AddC55");
printf("[strict=1] %b : %s",IsHex("0xFF8800FF", true),"0xFF8800FF");
printf("[strict=1] %b : %s",IsHex("AASDFASD", true),"AASDFASD");
printf("[strict=1] %b : %s",IsHex("x0FF", true),"x0FF");
/*
OUTPUT:
[20:52:08] [strict=0] 1 : 0FF8FF
[20:52:08] [strict=0] 1 : AddC55
[20:52:08] [strict=0] 1 : 0xFF8800FF
[20:52:08] [strict=0] 0 : AASDFASD
[20:52:08] [strict=0] 0 : x0FF
[20:52:08] ====================
[20:52:08] [strict=1] 0 : 0FF8FF
[20:52:08] [strict=1] 0 : AddC55
[20:52:08] [strict=1] 1 : 0xFF8800FF
[20:52:08] [strict=1] 0 : AASDFASD
[20:52:08] [strict=1] 0 : x0FF
*/
}
stock IsHex(string[], bool:strict_0x = false)
{
if(strict_0x && (string[0] != '0' || string[1] != 'x')) return false;
for(new index = strict_0x ? 2 : 0; index < strlen(string); index++)
{
if((index == 0 && string[index] == '0') || (index == 1 && string[index] == 'x') || (string[index] >= '0' && string[index] <= '9') || (string[index] >= 'A' && string[index] <= 'F') || (string[index] >= 'a' && string[index] <= 'f')) continue;
else return false;
}
return true;
}
Alles anzeigen
Du könntest ja eine Funktion bauen, ähnlich wie "isNumeric".
Also du willst doch "FF0088" "0x88FDA0" und solche Strings auslesen oder nicht?
#include a_samp
main() {}
public OnGameModeInit()
{
printf("%b : %s",IsHex("0FF8FF"),"0FF8FF");
printf("%b : %s",IsHex("AddC55"),"AddC55");
printf("%b : %s",IsHex("0xFF8800FF"),"0xFF8800FF");
printf("%b : %s",IsHex("AASDFASD"),"AASDFASD");
printf("%b : %s",IsHex("x0FF"),"x0FF");
/*
OUTPUT:
[18:43:23] 1 : 0FF8FF
[18:43:23] 1 : AddC55
[18:43:23] 1 : 0xFF8800FF
[18:43:23] 0 : AASDFASD
[18:43:23] 0 : x0FF
*/
}
stock IsHex(string[])
{
for(new index = 0; index < strlen(string); index++)
{
if((index == 0 && string[index] == '0') || (index == 1 && string[index] == 'x') || (string[index] >= '0' && string[index] <= '9') || (string[index] >= 'A' && string[index] <= 'F') || (string[index] >= 'a' && string[index] <= 'f')) continue;
else return false;
}
return true;
}
Alles anzeigen
Das ist eigentlich unmöglich. Selbst wenn die Datei beschädigt wäre, dann wäre das kein Problem.
Denn ich habe zuvor alle Serverdateien, sowie das Streamer-Plugin neu heruntergeladen (da ich mir der Version nicht sicher war).
Übrigens kann ich anscheinend generell keine Plugins einbinden. Ich habe eben als Test das MySQL Plugin R7 von BlueG eingefügt,
und dieses Plugin kann ich ebenfalls nicht laden.
Uncharted auf jeden Fall, da kann ich Nemesus zustimmen.
Was mMn noch reinkönnte, wäre "Rocket League" unter Sport.
Ich weiß ja nicht, ob viele Breadfish User das Spiel zocken, aber ich feiere das Spiel
Ja, mein Ordner heißt "plugins". Die Datei- und Ordnernamen sind alle richtig, da bin ich mir sicher. Und die *.cfg stimmt ebenfalls.
Vorher hat es ja funktioniert, bevor ich wieder (von Windows 10) auf Windows 7 gewechselt bin.
Microsoft visual C++ 2008 32 bit version installieren dann sollte es gehen
Ich habe Windows 7 nochmal neu installiert und habe nun soweit alle wichtigen Updates installiert (zumindest wird mir nun gesagt, dass es keine wichtigen Updates mehr gefunden werden).
Microsoft VC++ 2008 32 bit ist auch installiert, jedoch bekomme ich immer noch den selben Fehler beim Starten des Servers.
Warum fragst du vor der switch-Funktion ab, ob der Spieler Adminlevel 2 hat? Dann brauchst du die nächste Abfrage ja garnicht mehr, da es eh immer nur 2 sein würde. (Sollte wahrscheinlich >= statt == sein). Und bei bei deiner switch-Funktion hast du "playerid" statt "i" als SpielerID verwendet.
So müsste es dann auch funktionieren:
ocmd:admins(playerid,params[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPVarInt(i,"Adminlevel")>=2)
{
new string[123], aname[63];
switch(GetPVarInt(i,"Adminlevel"))
{
case 0:{aname="Bürger";}
case 1:{aname="VIP";}
case 2:{aname="Supporter";}
case 3:{aname="Moderator";}
case 4:{aname="SuperModerator";}
case 5:{aname="Admin";}
case 6:{aname="Owner";}
}
format(string,sizeof(string)," %* * Admin: %s",aname,SpielerName(i),playerid);
SendClientMessage(playerid,GRÜN,string);
}
}
}
Alles anzeigen
Guten Abend Leute,
ich habe vor einigen Tagen wieder ein Script von mir auf meinem Computer gefunden, und habe dann entschlossen, weiter daran zu arbeiten.
Ich habe zur Sicherheit nun nochmal alles aktualisiert gehabt - ich habe mir den Streamer und die Server-Dateien für SA:MP 0.3.7 heruntergeladen.
Nun starte ich den Server und sehe folgendes in der Konsole stehen:
----------
Loaded log file: "server_log.txt".
----------
SA-MP Dedicated Server
----------------------
v0.3.7, (C)2005-2015 SA-MP Team
[01:57:47] filterscripts = "" (string)
[01:57:47]
[01:57:47] Server Plugins
[01:57:47] --------------
[01:57:47] Loading plugin: streamer
[01:57:47] Failed.
[01:57:47] Loaded 0 plugins.
[01:57:47]
[01:57:47] Filterscripts
[01:57:47] ---------------
[01:57:47] Loaded 0 filterscripts.
[01:57:47] Script[gamemodes/demolition.amx]: Run time error 19: "File or function is not found"
[01:57:47] Number of vehicle models: 0
Alles anzeigen
Wie man sieht, konnte der Streamer nicht geladen werden. In meinem Server-Ordner habe ich jedoch den Ordner "plugins" angelegt und sowohl die streamer.dll als auch die *.so eingefügt.
Dann habe ich in meiner server.cfg die Zeile "plugins streamer" hinzugefügt. Alles so, wie es sich gehört. Jedoch frage ich mich, warum es so nun nicht funktioniert. Die demolition.amx ist auch vorhanden, daran liegt es nicht. Gestern funktionierte das Script und der Server noch. Dann habe ich Windows 7 neu installiert (da mich Win10 gestört hat), und danach ging es plötzlich nicht mehr.
Kann mir einer sagen, warum ich das Script nun nicht ausführen kann? (Blank-Script wird übrigens ohne weiteres ausgeführt)
Gruß,
Tusk
Ich nutze auch ausschließlich PayPal, wenn es zur Verfügung steht. Sichere und schnelle Variante zum Zahlen
Sonst halt eben paysafecard, aber das ist dann schon wieder zu unhandlich.
Ein "Punktesystem" ist sozusagen nur eine Variable, welche du, je nach Situation hochzählst.
Und dann nur noch abspeichern.
// GANZ OBEN
new StrafPunkte[MAX_PLAYERS];
// SPEED-ABFRAGE IRGENDWO IM SCRIPT
if(GetPlayerSpeed(playerid) > 120) {
SendClientMessage(playerid,-1,"Du bist schneller als 120 km/h gefahren. Das gibt einen Strafpunkt.");
StrafPunkte[playerid]++;
}
// ABFRAGE DER ANZAHL IRGENDWO IM SCRIPT
if(StrafPunkte[playerid] >= 10) {
SendClientMessage(playerid,-1,"Du hast 10 Strafpunkte. Dir wird dein Führerschein entzogen.");
DriverLicenseRemove(playerid);
StrafPunkte[playerid] = 0;
}
Alles anzeigen
Warum erstellst du nicht einfach über den Bots ein 3DTextLabel für jeden Spieler? ([wiki]CreatePlayer3DTextLabel[/wiki])
Dieser wird dann sowieso nur angezeigt, wenn du nah genug dran gehst. (Parameter: Float:DrawDistance)
Vom Effekt her wäre es doch genau das, was du suchst, oder etwa nicht?
mysql_fetch_field hat folgende Parameter: mysql_fetch_field(number, dest[], connectionHandle)
Ich denke, die Funktion, die du verwenden solltest, wäre mysql_fetch_field_row.
Denn dazu passen deine Parameter eher: mysql_fetch_field_row(string[], const fieldname[], connectionHandle)
Jedoch kann ich das alles nicht mit Gewissheit sagen, da ich keine Ahnung habe, welche MySQL Version du verwendest
Kann ja je nach dem unterschiedlich sein.