Alles anzeigenNein, 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
[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
-
-
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);
-
Wenn ich ein Fahrzeug erstelle..
Beispiel: abc = Createvehicle...
Konkret:
cInfo[i][id_x] = SetVehicleNumberPlate(CreateVehicle(modelid,RandomCarDealer2Spawn[rand2][0],RandomCarDealer2Spawn[rand2][1],RandomCarDealer2Spawn[rand2][2],RandomCarDealer2Spawn[rand2][3],cInfo[i][carcolor1],cInfo[i][carcolor2],-1)," ");müsste dann nicht "abc" die neue Fahrzeug ID sein? Also zB 100, wenn es das 100ste Fahrzeug ist?
Frage ich "abc" ab, kommt 0 raus..
Wie kann ich die ID des fahrzeugsbekommen?
-
Frage ich "abc" ab, kommt 0 raus..
Das liegt daran, dass du den Wert von SetVehicleNumberPlate bekommst und nicht von CreateVehicle.
Kannst es so machen:
CSetVehicleNumberPlate(cInfo[i][id_x] = CreateVehicle(modelid,RandomCarDealer2Spawn[rand2][0],RandomCarDealer2Spawn[rand2][1],RandomCarDealer2Spawn[rand2][2],RandomCarDealer2Spawn[rand2][3],cInfo[i][carcolor1],cInfo[i][carcolor2],-1)," ");
Ja, keine Ahnung warum dir kein anderer antwortet oder du dein Problem nicht von Anfang an vernünftig artikulierst
Mach mal deine Funktion so:
Cpublic SetPlayerRandomCheckpoint(playerid) { new zufall = random(sizeof(RandomCheckpoint)); SetPlayerCheckpoint(playerid, RandomCheckpoint[zufall][0], RandomCheckpoint[zufall][1], RandomCheckpoint[zufall][2], 5); return zufall; }
Dann kannste nämlich sowas im Befehl machen:
C
Alles anzeigenocmd:biostart (playerid, params[]) { new r = SetPlayerRandomCheckpoint(playerid); switch(r) { case 0: { //Hier wäre jetzt Checkpoint 0, also UntersucheLaubgärungMüllcontainer } } return 1; }
Hoffe Richtung ist klar geworden
-
-
Habe auch wieder ein Problem.. Was muss ich mit dem string machen, wenn mehrere Autos Erstellt werden?(Nummernschild)
kann ich dem String ein MAX_VEHICLES zuweisen?!
Jedes Auto nach dem ersten bekommt immer "NULL"
public OnPlayerCarsLoad()
{
new num_fields,num_rows;
cache_get_data(num_rows,num_fields,dbhandle);
if(!num_rows)return 1;
for(new i=0; i<num_rows; i++)
{
new id=getFreeCarID();
cInfo[id][c_x]=cache_get_field_content_float(i,"x",dbhandle);
cInfo[id][c_y]=cache_get_field_content_float(i,"y",dbhandle);
cInfo[id][c_z]=cache_get_field_content_float(i,"z",dbhandle);
cInfo[id][c_r]=cache_get_field_content_float(i,"r",dbhandle);
cInfo[id][id_db]=cache_get_field_content_int(i,"ID",dbhandle);
new tmp_LicensePlate[16]; //funktioniert nur fürs erste
cache_get_field_content(id, "LicensePlate", tmp_LicensePlate, dbhandle);
strmid(cInfo[id][plate], tmp_LicensePlate, 0, sizeof(tmp_LicensePlate),sizeof(tmp_LicensePlate));
cInfo[id][id_x]=CreateVehicle(cInfo[id][carmodel],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],cInfo[id][carcolor1],cInfo[id][carcolor2],-1);
SetVehicleNumberPlate(cInfo[id][id_x],tmp_LicensePlate);
VehicleLinkID[cInfo[id][id_x]] = cInfo[id][id_db];
printf("cInfo id %d id_X %d linked to %d",id, cInfo[id][id_x],VehicleLinkID[cInfo[id][id_x]]);
VehicleIsSpawned[cInfo[id][id_db]] = 1;
}
return 1;
} -
Beim compilen stürtzt dieser auch ab.
Dann solltest du dem Grund dazu mal nachgehen, wenn er nicht complien kann, wirst du sonst auch nicht weiter kommen.
-
Wieso bekomme ich den String TAFEL1 nicht übertragen? TAFEL1 wird überschrieben aber nicht übertragen
format(TAFEL1, sizeof(TAFEL1), Werbetafeln[wtafelvar][wtafeltext]);
format(TAFEL2,sizeof(TAFEL2), Werbetafeln[wtafelvar][wtafeltext2]);
format(TAFEL3,sizeof(TAFEL3), Werbetafeln[wtafelvar][wtafeltext3]);
format(STRINGTAFEL, sizeof(STRINGTAFEL),"%s\n%s\n%s", Werbetafeln[wtafelvar][wtafeltext], Werbetafeln[wtafelvar][wtafeltext2], Werbetafeln[wtafelvar][wtafeltext3]);Ich gebe eigentlich 1/2/3 ein aber es wird immer "Hier könnte ihre Werbung stehen" ausgegeben.
Und das ist der Standarttext von Werbetafeln[wtafelvar][wtafeltext] -
Ich gebe eigentlich 1/2/3 ein aber es wird immer "Hier könnte ihre Werbung stehen" ausgegeben.
Wenn ich das richtig verstanden habe, hast du bei deinen Format's einfach nur die Parameter verdreht.
Der erste Parameter, ist der String, der verändert werden soll.Somit müsste es heißen format(Werbetafeln[wtafelvar][wtafeltext], sizeof(TAFEL1), TAFEL1);
(So wird TAFEL1 in Werbetafeln... geschrieben. -
-
Wie erstellt man nochmal die 3 Spaltigen Dialog_List Dialoge?
-
Wie erstellt man nochmal die 3 Spaltigen Dialog_List Dialoge?
Dazu gibt es im Wiki immer ein kleines Beispiel (Einfach nach ganz unten Scrollen, unter dem Bild ist der Code) -
Sorry, noch eine Frage
Wie sage ich dem Dialog, dass er die Texte untereinander Ordnen soll ? Ich habe beispiel 12 Sätze die im Dialog untereinander angezeigt werden sollen.
Hallo
Hallo
HalloAber alle mit einem String
format(string,sizeof(string),"%i. Information: %s\n",wtafel, Werbetafeln[wtafel][wtafelinfo]);
Dachte das \n bringt es Wird aber leider nur der aller letzte Satz angezeigtScreen:
-
Ansich ist das \n schon richtig, du bräuchtest nur noch eine Schleife, mit der Du das ganze immer wieder in den String schreibst.
Dann hast du das zum Beispiel so:Codenew string][256], var; for(new i = 1; i < 12; i++) { if(!var) format(string, sizeof(string), "{FFFFFF}Zeile Nr: %d\n", i); else format(string, sizeof(string), "%sZeile Nr: %d\n", string, i); var++; } ShowPlayerDialog(playerid, ..);
Die Geschichte mit den Farbcodes kannst du natürlich weg lassen, ich mag es nur nicht^^
-
Immer noch das selbe.. Habe meine vorhandene Schleife einfach behalten und deins angepasst.
for(new wtafel=0;wtafel<sizeof(Werbetafeln);wtafel++)
{
if(!var) format(string, sizeof(string), "%i. Information: %s\n",wtafel, Werbetafeln[wtafel][wtafelinfo]);
else format(string, sizeof(string), "%i. Information: %s\n",wtafel, Werbetafeln[wtafel][wtafelinfo]);
var++;
ShowPlayerDialog(playerid, DIALOG_WTAFELLIST, DIALOG_STYLE_LIST, "Wähle eine Werbetafel aus",string, "Auswählen", "Abbrechen");
}Schau mal, wie mache ich das dann bei OnDialogResponse? Habe ja dann nur 1 Listitem.. Kann ich das dann grad so lassen? In dem Listitem hat ja dann trotzdem jedes seinen individuellen Wert oder?
if(dialogid == DIALOG_WTAFELLIST)
{
if(response == 1)
{
if(listitem == 0)
{
}
}
if(response == 0)
{
}
} -
und deins angepasst.
Das war leider falsch, der Dialog darf nicht in der Schleife sein, sondern nach der Schleife
-
ändert nichts.
-
ändert nichts.
Grade gesehen, dass du das ganze ja doch nicht angepasst hast, schau dir nochmal meinen Beitrag an.
Du musst zu Anfang deinen alten String wieder nehmen, -
for(new wtafel=0;wtafel<sizeof(Werbetafeln);wtafel++)
{
if(!var) format(string, sizeof(string), "%i. Information:\n",wtafel);
else format(string, sizeof(string), "%s. Information: %i\n",Werbetafeln[wtafel][wtafelinfo], wtafel);
var++;
}
ShowPlayerDialog(playerid, DIALOG_WTAFELLIST, DIALOG_STYLE_LIST, "Wähle eine Werbetafel aus",string, "Auswählen", "Abbrechen");
return 1;Immer noch das gleiche
-
Immer noch das gleiche
Ist ja auch immer noch falsch^^
Hab da mal was gebastelt, ich nehme mal an das dieses wtafelinfo ein String ist.Codefor(new wtafel;wtafel < sizeof(Werbetafeln); wtafel++) { if(!var) format(string, sizeof(string), "%i. Information: %s.\n", wtafel, Werbetafeln[wtafel][wtafelinfo]); else format(string, sizeof(string), "%s%i. Information: %s\n", string, wtafel, Werbetafeln[wtafel][wtafelinfo]); var++; } ShowPlayerDialog(playerid, DIALOG_WTAFELLIST, DIALOG_STYLE_LIST, "Wähle eine Werbetafel aus",string, "Auswählen", "Abbrechen"); return 1;