Ist es möglich, von einer Gang Zone die exakte Mitte ausgeben zu lassen, bzw zu berechnen?
new Float:X = minx + (maxx - minx) / 2.0,
Float:Y = miny + (maxy - miny) / 2.0;
Für die Z Koordinate müsstest du dann MapAndreas benutzen.
Ist es möglich, von einer Gang Zone die exakte Mitte ausgeben zu lassen, bzw zu berechnen?
new Float:X = minx + (maxx - minx) / 2.0,
Float:Y = miny + (maxy - miny) / 2.0;
Für die Z Koordinate müsstest du dann MapAndreas benutzen.
Hi,
habe meinen Ban Befehl jetzt so gemacht:
ocmd:ban(playerid, params[])
{
new pID, string[128], reason[64];
if(sscanf(params, "us", pID, reason)) return SendClientMessage(playerid, COLOR_GREY, "Befehl: /ban [Name/Spieler-ID] [Grund]");
if(PlayerInfo[pID][pLoggedIn] == 0) return NOT_CON
if(!isAdmin(playerid, 2)) return ADM_ERROR
format(string, sizeof(string), "AdmCMD: Admin %s hat %s vom Server gebannt. Grund: %s", SpielerName(playerid), SpielerName(pID), reason);
SendClientMessageToAll(COLOR_DARKRED, string);
SetTimerEx("KickTimer", 250, false, "i", pID);
PlayerInfo[pID][pBanned] = 1;
PlayerInfo[pID][pReason] = reason;
// PlayerInfo[pID][pBannedBy] = SpielerName(playerid);
return 1;
}
Wenn ich dann In-Game jemanden banne, bspw. mit dem Grund test wird in der Datebank 116 abgespeichert... Wieso? ![]()
Du musst den Grund formatieren.
format(PlayerInfo[pID][pReason], 64, reason);
denke weil du in der Datenbank %d statt %s verwendest?
Du musst den Grund formatieren.
format(PlayerInfo[pID][pReason], 64, reason);
Funktioniert trotzdem nicht:/
Zeig mal deine Speicher-/Ladefunktion dazu.
Zeig mal deine Speicher-/Ladefunktion dazu.
stock SaveUserStats(playerid){if(!PlayerInfo[playerid][pLoggedIn]) return 1;new query[256];mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', kills = '%d', deaths = '%d', skinid = '%d', banned = '%d', reason = '%d', adminlevel = '%d' WHERE id = '%d'",PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][pSkinid], PlayerInfo[playerid][pBanned], PlayerInfo[playerid][pReason], PlayerInfo[playerid][adminlevel], PlayerInfo[playerid][p_id]);mysql_pquery(handle, query);return 1;}
//Edit: Hab es gefixxt, hab anstatt %s %d geschrieben ![]()
Hallo!
Wie kann man es Scripten, dass wenn ich einen runden Tacho habe sich die Tachonadel zu der Zahl bewegt so schnell wie das Fahrzeug fährt? Wie bekomme ich auf das Textdraw diese Striche bei den Zahlen, damit die so schräg sind?
MfG
Wie kann man es Scripten, dass wenn ich einen runden Tacho habe sich die Tachonadel zu der Zahl bewegt so schnell wie das Fahrzeug fährt?
Du musst die Geschwindigkeit in einen Winkel ausgehend vom Startwinkel berechnen. Stelle dir dabei einen Kreis vor.
Dann ist 0 km/h z.B. bei 40 Grad, wenn man davon ausgeht, dass 0 Grad unten ist. 100 km/h ist dann bei 180 Grad und 200 km/h bei 320 Grad.
Entsprechend hast du 1,4 Grad pro 1 km/h. Je nach Maximalgeschwindigkeit können das natürlich andere Werte sein.
Dann rechnest du die Punkte auf deiner Kreisbahn aus, mittels Winkel und Radius des Tachos.
Siehe dazu hier: https://www-user.tu-chemnitz.d…phics/theorie/dg_ber.html
In der Regel ist 0 Grad ganz oben, daher müsste bei der Rechnung +/- 180 Grad Modulo 360 gemacht werden, dass das stimmt. Sprich 0 km/h wäre bei 220 Grad und 100 km/h bei 0 Grad, etc.
Natürlich müsste man mehrere Kreisbahnen mit unterschiedlichen Radien haben, um eine Nadel darzustellen.
Die Textdraws der Nadel müssen immer wieder gelöscht und an die neue Position auf dem Kreis gesetzt werden.
Wie bekomme ich auf das Textdraw diese Striche bei den Zahlen, damit die so schräg sind?
Mit den Zeichen, die dir zur Verfügung stehen in Textdraws.
Einfallen würden mir da spontan: / \ - | _
Mit etwas Verzerren über die Schriftgröße kann man das sicher recht gut hinbekommen.
Weißt jemand zufällig die Bezeichnung für die Taste 2 ? Kein Numpad.
sa-mp.com ist leider down
sa-mp.com ist leider down
Dafür gibts doch n Web-Archiv ![]()
https://web.archive.org/web/20…ki.sa-mp.com:80/wiki/Keys
Ist ja nicht so, dass es uns an Speicherplatz mangelt ![]()
Wie setzte ich einen string auf ein Enum?
So bspw:
PlayerInfo[playerid][pFunktionName] = "fname";
Hey,
ich hätte eine Frage, vlt könnt ihr mir das ja erklären.
ocmd:getstats(playerid, params[]){
new nachricht[128], pPlayer, name_pID[128];
GetPlayerName(pPlayer, name_pID, MAX_PLAYER_NAME);
if (sscanf(params, "ui",pPlayer))return SendClientMessage(playerid,COLOR_WHITE, "[hilfe] /getstats [ID]");
floatdiv(sInfo[pPlayer][Kills], sInfo[pPlayer][Tode]);
format(nachricht,sizeof(nachricht),"Name: %s\nLevel: %d\nGeld: %d$\nAdminrang: %s\nKills: %i\nTode: %i\nK/D: %.2f",name_pID,GetPlayerScore(pPlayer),GetPlayerMoney(pPlayer),GetAdminRangName(pPlayer),sInfo[pPlayer][Kills],sInfo[pPlayer][Tode],floatdiv(sInfo[pPlayer][Kills], sInfo[pPlayer][Tode]));
ShowPlayerDialog(playerid, DIALOG_GETSTATS, DIALOG_STYLE_MSGBOX, "Stats",nachricht, "Schließen", "");
return 1;
}
Hier funktioniert alles, außer der Name, ich weiß nicht wieso, aber der Name der angezeigt wird ist immer der von ID 0.
Kann mir jemand erklären weshalb, wieso oder warum
?
Wahrscheinlich irgendein kleiner Fehler, aber ich finde ihn irgendwie nicht..
Danke für die Hilfe im Voraus ![]()
Wie setzte ich einen string auf ein Enum?
So bspw:
PlayerInfo[playerid][pFunktionName] = "fname";
Das kannst du genau so machen...
Falls es nicht geht...zeige uns Code und erkläre was du vor hast ![]()
Kann mir jemand erklären weshalb, wieso oder warum ?
Das liegt daran, dass pPlayer immer 0 ist, sobald GetPlayerName aufgerufen wird, da du das vor dem sscanf aufrufst und erst ab dem sscanf aber pPlayer einen Wert zugewiesen bekommt ![]()
Die Lösung, einfach GetPlayerName unter das sscanf packen ![]()
Das kannst du genau so machen...Falls es nicht geht...zeige uns Code und erkläre was du vor hast
Das liegt daran, dass pPlayer immer 0 ist, sobald GetPlayerName aufgerufen wird, da du das vor dem sscanf aufrufst und erst ab dem sscanf aber pPlayer einen Wert zugewiesen bekommt
![]()
Die Lösung, einfach GetPlayerName unter das sscanf packen![]()
(16929) : error 047: array sizes do not match, or destination array is too smal
enum pInfo
{ // so sieht der anfang vom enum aus
pFunktionName[MAX_PLAYER_NAME] ( IM ENUM)
Habs schon mit n paar größen probiert (512 z.B)
(16929) : error 047: array sizes do not match, or destination array is too smal
enum pInfo
{ // so sieht der anfang vom enum aus
pFunktionName[MAX_PLAYER_NAME] ( IM ENUM)
Habs schon mit n paar größen probiert (512 z.B)
Bitte unterlasse Vollzitate, das ist unnötig.
Desweiteren, zeig doch mal ganz genau wie du die Variable von dem enum deklariert hast und dann wie du den string deklariert hast, den du zuweisen willst und dann wie du es zuweist ![]()
Gib doch einfach ein wenig von deinem Code preis...oder sollen wir das alles erraten?! ![]()
Desweiteren, zeig doch mal ganz genau wie du die Variable von dem enum deklariert hast und dann wie du den string deklariert hast, den du zuweisen willst und dann wie du es zuweist
Gib doch einfach ein wenig von deinem Code preis...oder sollen wir das alles erraten?!
Also eigentlich möchte ich nur einen Namen auf pFunktionName[MAX_PLAYER_NAME] setzen
enum pInfo
{
pFunktionName[MAX_PLAYER_NAME]
};
und dieser soll dann gespeichert werden per mysql (das hab ich schon gemacht, da gibts auch kein problem)
PlayerInfo[playerid][pFunktionName] = "namebeispiel";
Wenn nicht ohne einen string geht, dann halt den wert von
PlayerInfo[playerid][pFunktionName]
auf einen bestimmten string setzen (den ich noch nicht habe)
PlayerInfo[playerid][pFunktionName] = "namebeispiel";
zu:
format(PlayerInfo[playerid][pFunktionName], MAX_PLAYER_NAME, "namebeispiel");
oder:
PlayerInfo[playerid][pFunktionName] = '\0';
strcat(PlayerInfo[playerid][pFunktionName], "namebeispiel", MAX_PLAYER_NAME);
Was dir lieber ist.
auf einen bestimmten string setzen (den ich noch nicht habe)
Du bekommst doch einen Fehler, zeig uns doch einfach mal die Zeile, wie du es bis jetzt machst.
und das new PlayerInfo würde ich gern noch sehen
zu:
Das mit dem strcat ist ein richtig schlechter Ratschlag, denn sobald das 2x aufgerufen werden sollte...hat der das 2x da drinnen stehen.
und format ist ultra lahm, wieso nicht einfach durch eine direkte Zuweisung lösen.
Nur in den seltensten Fällen ist format nötig.
Du bekommst doch einen Fehler, zeig uns doch einfach mal die Zeile, wie du es bis jetzt machst.und das new PlayerInfo würde ich gern noch sehen
new PlayerInfo[MAX_PLAYERS][pInfo];
Ja und das ist der error:
error 047: array sizes do not match, or destination array is too small
Fehlerzeile: PlayerInfo[playerid][pFunktionName] = "namebeispiel";
zu:strcat(PlayerInfo[playerid][pFunktionName], "namebeispiel", MAX_PLAYER_NAME);
oder:
format(PlayerInfo[playerid][pFunktionName], MAX_PLAYER_NAME, "namebeispiel");
Was dir lieber ist.
Wird das Enum dann auch Global gesetzt im Script also kann ichs dann auch abspeichern und
in nem anderen public verwenden ?