Ehh kannst du über https://jsfiddle.net/ deinen Code teilen, wie das so aussieht?
Dann wäre es um einiges leichter dir zu helfen, da wir uns das dann besser vorstellen können und direkt deinen Code updaten können
Ehh kannst du über https://jsfiddle.net/ deinen Code teilen, wie das so aussieht?
Dann wäre es um einiges leichter dir zu helfen, da wir uns das dann besser vorstellen können und direkt deinen Code updaten können
Das geht so nicht, da du sonst eine 4 Dimensionale Variable benötigen würdest und das kann dieser Pawn-Compiler nicht.
Es gibt ein Update, der kann das.
Alternativ, musst du das in eine andere Variable tun, sowas wie:
new FrakRang[MAX_FRAKS][MAX_RÄNGE][MAX_RANG_LEN];
Ich will die Rangnamen nicht i Script definieren.
Ja...und jetzt?
Wenn du sagst, etwas geht nicht, dann beschreibe genau, was nicht geht, wo es geladen wird bzw wie es generell funktionieren sollte.
Einfach mit einem enum, kann man überhaupt nichts anfangen.
Wie kann ich machen das ich 14 Ränge hab so geht es nicht fraktion_Rang[14][50]
Du musst deine if-Abfragen vermutlich anpassen und dann einfach nur die Rangnamen ergänzen, dann sollte das funktionieren
Wenn dich nicht genau weißt, was...musst du leider dein System nochmal posten mit Rängen etc.
Jetzt werden alle als Offline angezeigt obwohl man Online ist und bei dem ersten in der Liste wird der Rang nicht angezeigt
Ahja, stimmt, machs mal so:
stock GetPlayerFromAdminName(const pName[])
{
new playerid,n[MAX_PLAYER_NAME] = "[ARP]";
strcat(n,pName),sscanf(n, "u", playerid);
return (playerid==INVALID_PLAYER_ID) ? GetPlayerIdFromName(pName) : playerid;
}
Und es wird kein Rang angezeigt?
Das liegt dann daran, dass er einen ungültigen besitzt?!
Welchen Wert hat denn der Rang in der DB, prüf das doch mit deinem Rang-System gegen.
Oh, gar nicht gesehen, dass das eine Variable ist
Dachte es wurde so gelöst:
#define SERVERTAG "ARP"
Dann vergiss meine "neue" Funktion und prüf einfach, ob ARP wirklich 1:1 gleich geschrieben ist.
pID = GetPlayerIdFromName(name);
Und du hast sicher diese Zeile durch:
pID = GetPlayerFromAdminName(name);
ersetzt?
Versuchs mal mit der Funktion:
Es funktioniert leider mit deiner Funktion auch nicht. @Kaliber
Kannst du mal den Command zeigen, mit dem du Aduty gehst?
Das gleiche kannst dir ja dann noch einmal für ein Motorrad Basteln, dann hast eine Funktion ohne Include.
So kann man das zwar lösen, aber eigentlich ist die Funktion nicht so gut.
Das liegt daran, dass:
Besser wäre es da mit switch zu arbeiten, was als Jump-Table fungiert.
Dort wird dann direkt hingesprungen oder nicht.
Immer O(1), anstatt O(n) und du hast nur eine Model Abfrage (wobei es schon sinnvoller wäre, das Modell im eigentlichen Code in einer Variable zu speichern und dann nur zu übergeben).
Code sähe dann so aus:
stock IsVehicleBoat(vehicleid)
{
switch(GetVehicleModel(vehicleid))
{
case 472, 473, 493, 495, 484, 430, 453, 452, 446, 454, 595: return 1;
}
return 0;
}
Eventuell noch 2 Dinge als Info:
1. Es ist nicht schlimm Includes zu inkludieren, wenn sie richtig geschrieben sind. Sprich überall stock oder defines verwendet wurden. Falls man diese dann nämlich nicht nutzt, werden alle Dinge die nicht benötigt werden vom Compiler ignoriert und es gelangt nix unerwünschtes in die .amx Datei.
2.
new Boat[] = { 472, 473, 493, 495, 484, 430, 453, 452, 446, 454, 595};
So denkt der Compiler, dass es sich hierbei um eine Variable handelt.
Sprich, dass eventuell später (während der Server läuft) noch Dinge geändert werden, was ja aber nicht der Fall ist.
Zeig ihm das, indem man es als const deklariert, dadurch kann der Compiler das besser optimieren.
stock const Boat[] = { 472, 473, 493, 495, 484, 430, 453, 452, 446, 454, 595};
@Allrounder18
Schreib es mal nur so:
public AdminList(playerid)
{
new string[700] = "{FFFFFF}Rang\t{FFFFFF}Name\t{FFFFFF}Onlinestatus",adminrang,name[MAX_PLAYER_NAME],pID,rows;
cache_get_row_count(rows);
for(new i; i<rows; i++)
{
cache_get_value_name_int(i,"Admin",adminrang);
if(adminrang < 3) continue;
cache_get_value_name(i,"Name",name,sizeof(name));
pID = GetPlayerIdFromName(name);
format(string, sizeof(string), "%s\n%s\t%s\t%s",string, GetAdminName(adminrang), name, GetPlayerStatus(pID));
}
ShowPlayerDialog(playerid, DIALOG_ADMINS, DIALOG_STYLE_TABLIST_HEADERS, "{FF0000}Austrian Roleplay {FFFFFF}- Team",string,"{FFFFFF}Abbrechen","");
return 1;
}
Alles anzeigen
In der Funktion GetPlayerStatus ändere mal die String-Größe von 500 auf 32.
Selbst 32 wäre noch zu groß, 16 würde da vollkommen ausreichen, musst die nicht immer so riesig machen xD
Und nutze da nicht GetPlayerIdFromName, sondern meine Funktion:
Was muss ich machen, wenn ich bei /admins angezeigt bekommen möchte , das der Admin Duty ist
Also folgendermaßen Projektleitung Allrounder18 Im Dienst. So sieht es im Dialog aus.
Ich habe wenn ich aduty bin ein [ARP] vor dem Namen stehn, dadurch kennt mein System dass ich online bin. Wie kann ich das fixen?
Was genau ist deine Frage?
Was genau geht denn nicht?
Wie sieht denn GetPlayerStatus aus?
Du beschreibst nur, was du machst, aber nicht, was du willst bzw was nicht geht...und wie es aktuell aussieht...
Okay, dann vermute ich mal, dass du eine falsche Version hast.
Du benötigst die 1.0 Version von der gta_sa.exe: https://gta-san-andreas-downgrade-patch.en.softonic.com/
Oder deine Installtion ist nicht clean
Den Kompatibiltätsmodus des Spiel mal auf Windows 7 stellen und dann noch einnmal ausprobieren.
(Das geht rechtsklick auf die gta_sa.exe > Eigenschaften > Kompatibilität und dann das halt auswählen).
Und dann noch einmal starten.
Wenn es immer noch nicht geht, mal erzwingen, dass es als Admin gestartet werden muss.
Wenn das immer noch nicht geht, mal Kompatibilität zurück stellen oder auf Win XP 3
Oder dann nur neuen Modus ohne Admin xD
Irgendwann kommt es zu einer Kombination, die funktioniert hahaha xD
Generell empfehle ich dir...deinstallier dein Antivir-Programm xD
Aber kannst es natürlich auch nur anders konfigurieren:
Alright figured it out go to your avast settings and there is an area where you can add exceptions settings>antivirus then you scroll down that menu and there is an area titled EXCLUSIONS where you can browse to your visual studio path ie. c:>john>documents>visualStudio2010>projects::: select your project path and it will add it to a list of scanning exceptions and you should be able to test run your files... worked well for me. I also disabled deep scan in the same menu due to a suggestion from another member
Schreib das mal so:
format(text[0], 152, "%s...", text[0]);
format(text[1], 152, "{FFFFFF}...%s", text[1]);
Musst halt noch ne Abfrage einbauen, ob das bei dem ME auch so sein soll oder nicht.
2. Was genau meinst du?
Na, was glaubst du warum der Code nicht funktioniert?
Weil die Code Logik zerstört ist.
Die Funktion SendClientToChat hingegen funktioniert, also nutze sie doch einfach.
mt violettfarben
Dann ändern sich doch nur die Farben.
Ja, klar kannst du es so machen, wie in deinem Beispiel
Es ginge auch noch anders, z.B. mit intelligentem shiften.
Da gibt es ein schönes Include: https://forum.sa-mp.com/showthread.php?p=4055845
Und sogar ein Beispiel für dein Problem: https://forum.sa-mp.com/showpo…a07&p=4079880&postcount=7
Aber kannst du ja entscheiden xD
Wieso machst du so einen Quatsch?
1. Hast du wieder alle Funktionen zerstört und alles darein gepackt.
2. Hast du die Logik zerstört und machst da kompletten Blödsinn.
Wieso nutzt du nicht wie vorher die Funktion die du schon hattest...
Da war doch alles korrekt, bis auf die Farben, aber das lag an deinen defines...
@Kaliber wie meint du das? Ich hab oben was reinedtiert.
Das hat nichts mit der Funktion zu tuen, die funktioniert einwandfrei.
Der Punkt ist, du nutzt in den Defines immer die selbe Farbe...
Überall nur 0x505050
R = 50
G = 50
B = 50
Nur die Alpha Werte änderst du, aber die haben keine Auswirkungen auf die Farbe.
Also ändere die R, G oder B Werte...
Schreib also zum Beispiel bei COLOR_FADE4B0B0B0 dann ist diese wesentlich heller.
Kannst ja mal mit den Werten rumspielen: https://html-color-codes.info/old/colorpicker.html
Hier die fehlenden Defines
Deine Defines sind falsch.
#define COLOR_FADE1 0x505050FF
#define COLOR_FADE2 0x50505095
#define COLOR_FADE3 0x50505060
#define COLOR_FADE4 0x50505032
Du veränderst nur den Alpha_Wert die Farbe selbst bleibt gleich.
Wie soll sich da also was ändern?
Musst die Farben selbst heller bzw dunkler machen, so wie du magst.
Habe das System Jetzt so und es ist immernoch wie oben beschrieben
Keine Ahnung, ich bin aktuell zu faul die Funktion selbst zu testen.
Kannst ja auch einfach sowas machen:
const Float:distance=5.0; //5m vor dem Blitzer wird er geblitzt
new Float:x = Blitzer[id][x] + distance * floatsin(-Blitzer[id][rotation], degrees);
new Float:y = Blitzer[id][y] + distance * floatcos(-Blitzer[id][rotation], degrees);
if(IsPlayerInRangeOfPoint(playerid,5.0,x,y,Blitzer[id][z]))
{
//Blitz
}
@Allrounder18
Ich hab nach mehr defines gefragt gehabt..lies nochmal genau..