Wo werden die erstellt und davon den COde, da du wohl die LetterSize nicht erhöht hast o.ä.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
InfoText[playerid] = CreatePlayerTextDraw(playerid, 1.411764, 138.833435, "");
PlayerTextDrawLetterSize(playerid, InfoText[playerid], 0.148352, 0.911666);
PlayerTextDrawTextSize(playerid, InfoText[playerid], 2.500000, 0.000000);
PlayerTextDrawAlignment(playerid, InfoText[playerid], 1);
PlayerTextDrawColor(playerid, InfoText[playerid], -1);
PlayerTextDrawSetShadow(playerid, InfoText[playerid], 0);
PlayerTextDrawSetOutline(playerid, InfoText[playerid], 1);
PlayerTextDrawBackgroundColor(playerid, InfoText[playerid], 51);
PlayerTextDrawFont(playerid, InfoText[playerid], 2);
PlayerTextDrawSetProportional(playerid, InfoText[playerid], 1);Das ist der Textdraw mit dem Text
-
Hey, ich würde gerne ein System machen, bei dem mit dem Start eines Jobs, zufällige Checkpoints gesetzt werden, dies funktioniert auch sehr gut.
Dennoch möchte ich das für jeden Checkpoint, eine entsprechende Aufgabe im Chat angezeigt wird.
Also im Prinzip, wenn random der Checkpoint 1 kommt soll im Chat kommen: Checkpoint 1, bei 2 dann 2, bei 3...Wie stelle ich dies nun am geschicktesten an?
Code
Alles anzeigenforward SetPlayerRandomCheckpoint(playerid); new Float:RandomCheckpoint[17][3] = { {2515.0454,2316.4885,10.8203}, //UntersucheLaubgärungMüllcontainer {1407.1766,2524.6057,10.8203}, //HaushaltUnbekannteInsekten {984.8681,2343.7520,11.4688}, //HaushaltUnbekannteInsekten2 {967.0012,2160.6521,10.8203}, //KotspurenMitStarkÄtzendemGeruch {1374.5887,1019.9580,10.8203}, //OutletladenUnbekannteInsekten {1732.8197,969.3489,10.8203}, //UntersucheLaubgärungMüllcontainer {2209.0166,648.2036,11.1599}, //HaushaltVorgartenbefall {2351.5557,521.8698,1.9426}, //WasserprobeAnFlussNehmen {2879.7158,911.6075,10.7500}, //LeblosesTierInContainer {2639.7925,1111.1702,10.9609}, //TankunfallUmweltgefahrFestellen {2491.2285,918.5364,11.0234}, //KircheStarkerVerwesungsgeruchBeerdigung {2515.3318,1552.8425,11.0883}, //WasserprobeAnSchwimmbecken {2424.1697,1922.0651,6.0156}, //LeblosesTierUnterGitterAufBaustelle {1785.6367,2072.3672,10.8715}, //VorgartenbefallFeuerwehr {2103.8335,1870.0767,10.8866}, //WasserprobeAnBrunnen {2109.7749,1677.5789,10.8203}, //WasserprobeAnBrunnen2 {1755.5306,688.9796,10.8203} //UntersucheLaubgärung }; ocmd:biostart (playerid, params[]) { SetPlayerRandomCheckpoint(playerid); return 1; } public SetPlayerRandomCheckpoint(playerid) { new zufall = random(sizeof(RandomCheckpoint)); SetPlayerCheckpoint(playerid, RandomCheckpoint[zufall][0], RandomCheckpoint[zufall][1], RandomCheckpoint[zufall][2], 5); return 1; }Vielen Dank!
-
Hey,
kann mir wer helfen? Bin noch nicht so ganz durchgedrungen mit MySQL. Mir wird gelegentlich dabei geholfen, jedenfalls wollte ich fragen was am folgenden Code falsch ist:
Code
Alles anzeigenocmd:setname(playerid, params[]) { new pid, nName[25], string[128], query[128], log[256]; if (!IsPlayerOnline(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht eingeloggt."); if (!CheckAdmin(playerid, 6)) return 1; if (sscanf(params, "us[25]", pid, nName)) return SendClientMessage(playerid, COLOR_GREY, "Verwende: /setname <Spieler> <Neuer Name>"); if (!IsPlayerOnline(pid)) return SendClientMessage(playerid, COLOR_GREY, "Dieser Spieler ist nicht online."); mysql_format(dbhandle, query, sizeof(query), "SELECT `name`, `ID` FROM `accounts` WHERE `name`='%e';", pid); new Cache:result = mysql_query(dbhandle, query); cache_set_active(result); new count; cache_get_row_count(count); if (count) { cache_unset_active(), cache_delete(result); SendClientMessage(playerid, COLOR_GREY, "Der Name existiert bereits."); } else { SetPlayerName(pid, nName); format (string, sizeof(string), "%s hat %s den Namen geändert. Neuer Name: %s", FullName(playerid), FullName(pid), nName); SendAdminMessage(COLOR_DARKBLUE, string); format (string, sizeof(string), "* %s hat deinen Namen zu %s geändert.", FullName(playerid), nName); SendClientMessage(pid, COLOR_LIGHTBLUE, string); cache_unset_active(), cache_delete(result); mysql_format(dbhandle, string, sizeof(string), "UPDATE `accounts` SET `name` = '%e', `oldname` = '%e' WHERE `ID` = '%d'", nName, FullName(pid), Player[pid][iID]); mysql_tquery(dbhandle, string, "", ""); format(log, sizeof(log), "/setname %s -> %s (Neu: %s)", FullName(playerid), FullName(pid), nName); AddLog("log_admin.txt", log); } return 1; }
Sofern der Name in der Tabelle gefunden wird, sollte man diesen Namen nicht setzen können, klappt aber nicht so ganz.
Beispiel: Ich heiße Alex auf dem Server, jedoch gibt es schon einen Günther. Ich möchte mich Günther nennen, was ich auch per diesem Befehl dann kann.
Es wird also nicht geblockt, wenn dieser Name schon existiert.Thx 4 Help.
-
@noahschnapp Entferne mal das Semikolon. Wenn das nicht funktioniert, führ den Query mal manuell bei phpMyAdmin o.ä. aus und schaue, was du als Rückgabe erhältst (Meldung).
-
Wie stelle ich dies nun am geschicktesten an?
Also du musst irgendwie setzen, dass er jetzt auf dieser Route ist.
Also zum Beispiel mit einem PVar oder global mit einem Player Array.
Da du nur anzeigen willst im wie vielten Checkpoint der Spieler ist, kannst du das dann einfach hochzählen:
Ich zeige es mal mit einem PVar:
C
Alles anzeigen//Im biostart Befehl: SetPVarInt(playerid,"bio_route",1); //Unter OnPlayerEnterCheckpoint if(GetPVarType(playerid,"bio_route") != PLAYER_VARTYPE_NONE) { new r = GetPVarInt(playerid,"bio_route"); if(r == 10) //10 = wie viele Checkpoints ihm random angezeigt werden sollen { //Wenn du es nicht darüber hast: DisablePlayerCheckpoint(playerid); GameTextForPlayer(playerid,"~r~~h~~h~Route beendet!",5000,5); DeletePVar(playerid,"bio_route"); return 1; } new str[32]; format(str,sizeof(str),"~g~~h~~h~Checkpoint %d",r); GameTextForPlayer(playerid,str,5000,5); //Oder hier eben SCM(playerid,farbe,str); SetPlayerRandomCheckpoint(playerid); SetPVarInt(playerid,"bio_route",r+1); return 1; } -
Wieso wird der Text so komisch angezeigt? Sonst wurde er immer richtig angezeigt, habe nur einen neuen schöneren Textdraw gemacht.
PlayerTextDrawTextSize(playerid, InfoText[playerid], 2.500000, 0.000000);
Erhöhe das 2.5 auf 50.0 oder so.
-
Alles anzeigen
Also du musst irgendwie setzen, dass er jetzt auf dieser Route ist.
Also zum Beispiel mit einem PVar oder global mit einem Player Array.Da du nur anzeigen willst im wie vielten Checkpoint der Spieler ist, kannst du das dann einfach hochzählen:
Ich zeige es mal mit einem PVar:
C
Alles anzeigen//Im biostart Befehl: SetPVarInt(playerid,"bio_route",1); //Unter OnPlayerEnterCheckpoint if(GetPVarType(playerid,"bio_route") != PLAYER_VARTYPE_NONE) { new r = GetPVarInt(playerid,"bio_route"); if(r == 10) //10 = wie viele Checkpoints ihm random angezeigt werden sollen { //Wenn du es nicht darüber hast: DisablePlayerCheckpoint(playerid); GameTextForPlayer(playerid,"~r~~h~~h~Route beendet!",5000,5); DeletePVar(playerid,"bio_route"); return 1; } new str[32]; format(str,sizeof(str),"~g~~h~~h~Checkpoint %d",r); GameTextForPlayer(playerid,str,5000,5); //Oder hier eben SCM(playerid,farbe,str); SetPlayerRandomCheckpoint(playerid); SetPVarInt(playerid,"bio_route",r+1); return 1; }
Nein, so meine ich das nicht
Wenn der Spieler den Job beginnt, dann bekommt er einen zufälligen Checkpoint, jeder Checkpoint ist eine andere Aufgabe, z.B an einem soll er eine Wasserprobe nehmen, am anderen eine Bodenprobe oder so etwas.
Sprich, CP 1 ist z.B bodenprobe, cp2 eine wasserprobe,
Dann soll er angezeigt bekommen, wenn random der cp1 kommt, sendclientmessage(.......“nimm eine bodenprobe“)
Bei cp2, sendclientmessage(.......“wasserprobe“)Sodass jeder Checkpoint eine Aufgabe hat, welche dem spieler gezeigt wird, wenn der checkpoint erscheint.
Hoffe es ist verständlich

-
Syntax Problem aber wo ?
[17:48:54] [ERROR] error #1064 while executing query "UPDATE Accounts SET Pos_X = '708.469849', Pos_Y = '389.677765', Pos_Z = '1023.593933', Pos_R = '198.637726', Interior = '0', VirtuelleWorld = '1', Skin = '6', Admin = '6', Fraktion = '0', Rang = '6', Level = '2', Money = '45', Perso = '0',Alter = '18', Geburtstag = '05.12.1998', Geschlecht = '2', Bank = '0', Persot = '1509814432' WHERE ID = '4'": You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Alter = '18', Geburtstag = '05.12.1998', Geschlecht = '2', Bank = '0', Persot = ' at line 1
-
Syntax Problem aber wo ?
Alter ist ein Keyword, also musst du es escapen: `Alter`
-
Achso ok Danke
Gibt es eine Liste wo alle Keywords aufgeführt sind ? -
Gibt es eine Liste wo alle Keywords aufgeführt sind ?
-
Problem: Möchte von einem Input Dialog 3 Zeilen Textdraw ausfüllen. Für jede Zeile öffnet sich ein neues Dialogfenster.
Am Ende möchte ich es in einer MSG Box anzeigen lassen(zur kontrolle) also hab ich versucht den Inputtext in einem string zu speichern aber das klappt irgendwie 0^^Oben im Script hab ich natürlich
new werbung1[60];und für den Dialogcode
if(dialogid==DIALOG_WERBUNG)
{
if(!response)return SendClientMessage(playerid, error, "Du hast den Vorgang abgebrochen.");
if(response)
{
if(strval(inputtext) >60 )return ShowPlayerDialog(playerid,DIALOG_WERBUNG,DIALOG_STYLE_INPUT,"Werbung","Bitte fülle die erste Zeile mit Werbung!\nmax. 60 Zeichen verwendbar!","Weiter","Abbrechen");
werbung1 = strval(inputtext);
ShowPlayerDialog(playerid,DIALOG_WERBUNG2,DIALOG_STYLE_INPUT,"Werbung","Bitte fülle die erste Zeile mit Werbung!\nmax. 60 Zeichen verwendbar!","Weiter","Abbrechen");
return 1;
}
}Dann gibt er mit den Error ?
C:\Users\ENEF\Desktop\SA-MP\samp037_svr_R2-1-1_win32\gamemodes\newrl.pwn(5570) : error 033: array must be indexed (variable "werbung1") -
strval konvertiert einen String in einen Integer.
Du willst aber keinen Integer, sondern den String logischerweise behalten, also musst du ihn 1:1 übertragen:
werbung1 = strval(inputtext);
Also anstatt dieser Zeile, folgendes:
format(werbung1,sizeof(werbung1), inputtext);
-
Danke hat funktioniert! Nun ein neues Problem.
Möchte ja die 3 Zeilen vorher kontrollieren und in einer MSGBOX anzeigen lassen.
Ich dachte es wäre so eine gute Option, jedoch bekomme ich 1 Warn, Debugg Meldungen und das Dialog öffnet sich nicht.Debug:
Warn: C:\Users\ENEF\Desktop\SA-MP\samp037_svr_R2-1-1_win32\gamemodes\newrl.pwn(5596) : warning 202: number of arguments does not match definitionCode:
ShowPlayerDialog(playerid,DIALOG_WERBUNGMSG,DIALOG_STYLE_MSGBOX,stringwerbung,"Weiter","Abbrechen");//Warn
format(stringwerbung, sizeof(stringwerbung),"%s\n%s\n%s",werbung1, werbung2, werbung3); -
1. Es fehlt der Titel vom Dialog, vor dem stringwerbung pack ein "Werbung", davor.
2. Du formatierst stringwerbung nachdem du es nutzt?! Das ist ein bisschen dämlich

-
Beides garnicht aufgefallen
Wird Zeit schlafen zugehen, danke für deine Hilfe ! -
Alles anzeigen
Nein, so meine ich das nicht

Wenn der Spieler den Job beginnt, dann bekommt er einen zufälligen Checkpoint, jeder Checkpoint ist eine andere Aufgabe, z.B an einem soll er eine Wasserprobe nehmen, am anderen eine Bodenprobe oder so etwas.
Sprich, CP 1 ist z.B bodenprobe, cp2 eine wasserprobe,
Dann soll er angezeigt bekommen, wenn random der cp1 kommt, sendclientmessage(.......“nimm eine bodenprobe“)
Bei cp2, sendclientmessage(.......“wasserprobe“)Sodass jeder Checkpoint eine Aufgabe hat, welche dem spieler gezeigt wird, wenn der checkpoint erscheint.
Hoffe es ist verständlich

-
Guten Nachmittag, hab da eine Frage an euch ...

Dialog wird ausgeführt, aber der "Public OnUserLogin" wird nicht richtig aufgerufen, weißt du die Lösung, zufällig ?
Die Nachrichten aus dem Public zB werden mir gar nicht im Chat Geschrieben, bin am Verzweilen ...
Auch die Prints werden alle in der Konsole angezeigt...
Das sagt die LOG bzw. logs -> plugins -> mysql
[11:38:43] [INFO] query "SELECT * FROM `Accounts` WHERE `Spielername` = '2Fast4YouDE' AND `Passwort` = 'test'" successfully executed within 0.255 milliseconds
[11:38:43] [INFO] Executing callback 'OnUserLogin' with 1 parameter...
[11:38:43] [INFO] Callback successfully executed.
case DIALOG_LOGIN:
{
if(response)
{
//if (!(MIN_LENGTH_PASSWORD <= strlen(inputtext) <= MAX_LENGTH_PASSWORD))
if(strlen(inputtext) <= 3)
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login Überschrift", ""#FARBE_WEISS"Trage dein Passwort ein!\n\nInfo: Das Passwort muss aus 4-24 Zeichen bestehen!", "Bestätigen", "Abbrechen");
PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
}
else
{
strdel(query, 0, 512);
mysql_format(Handle, query, sizeof(query), "SELECT * FROM `Accounts` WHERE `Spielername` = '%e' AND `Passwort` = '%e'", sInfo[playerid][sName], inputtext);
mysql_pquery(Handle, query, "OnUserLogin", "d", "playerid");
PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
}
return 1;
}
}
forward OnUserLogin(playerid);
public OnUserLogin(playerid)
{
print("1");
new rows;
cache_get_row_count(rows);
print("2");
if(rows != 1)
{
// Falsches Passwort
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login Überschrift", ""#FARBE_WEISS"Trage dein Passwort ein!\n\nInfo: Das Passwort muss aus 4-24 Zeichen bestehen!", "Bestätigen", "Abbrechen");
PlayerPlaySound(playerid, 1085, 0.00, 0.00, 0.00);
SendClientMessage(playerid, -1, "Falsches PW");
print("3");
}
else
{
print("4");
SendClientMessage(playerid, -1, "Positiv");
for(new i = 0; i < sizeof(vRP_Login[]); i++)
{
PlayerTextDrawHide(playerid, vRP_Login[playerid][i]);
PlayerTextDrawDestroy(playerid, vRP_Login[playerid][i]);
}
print("5");cache_get_value_name_int(0, "Skin", sInfo[playerid][sSkin]);
cache_get_value_name_int(0, "Geschlecht", sInfo[playerid][sGeschlecht]);
cache_get_value_name_int(0, "Geburtstag", sInfo[playerid][sGeburtstag]);
print("6");cache_get_value_name_float(0, "PosX", sInfo[playerid][sSpawnX]);
cache_get_value_name_float(0, "PosY", sInfo[playerid][sSpawnY]);
cache_get_value_name_float(0, "PosZ", sInfo[playerid][sSpawnZ]);
cache_get_value_name_float(0, "PosA", sInfo[playerid][sSpawnA]);
print("7");TogglePlayerSpectating(playerid, false);
SetPlayerPos(playerid, sInfo[playerid][sSpawnX], sInfo[playerid][sSpawnY], sInfo[playerid][sSpawnX]);
SetPlayerFacingAngle(playerid, sInfo[playerid][sSpawnA]);
SetCameraBehindPlayer(playerid);
print("8");sInfo[playerid][sEingeloggt] = true;
}
return 1;
}MfG.
-
mysql_pquery(Handle, query, "OnUserLogin", "d", "playerid");
zu
mysql_pquery(Handle, query, "OnUserLogin", "d", playerid);
