Wie hast du globalVar deklariert?
Beiträge von Jeffry
-
-
Füge bei deinem Befehl, nach dem CreateDynamicCP, das hier ein:
globalVar[playerid][0] = x1;
globalVar[playerid][1] = x2;
globalVar[playerid][2] = x3;
globalVar[inviteID[playerid]][0] = x1;
globalVar[inviteID[playerid]][1] = x2;
globalVar[inviteID[playerid]][2] = x3; -
Wie erstellst du die Textdraws?
-
Habe ich gerade gemacht, geht nicht.
Dann stimmen die Aussagen in den anderen Threads, es scheint damit nicht zu gehen.
Klar ich bräuchte eine PlayerID aber wenn ich dem ne ID zuweise und das anstelle setze würde das gehen?
Nein, mit Actoren geht das nicht.
Dann müsstest du sowas hier nutzen:
http://forum.sa-mp.com/showthread.php?t=428066
http://forum.sa-mp.com/showthread.php?t=355849 -
stock IsFracVehicle(vehicleid)
{
for(new i = 0; i < sizeof(fCar); i++) if(fCar[i][fcVID] == vehicleid) return 1;
return 0;
}wieso dynamic ?
Wenn er mehr als 2000 Fahrzeuge erstellen will, benötigt er einen Streamer, um diese dynamisch zu verteilen.
-
Wie erstellst du die Fraktionsfahrzeuge denn?
-
SetPlayerSkin(playerid, +1);
Zu
SetPlayerSkin(playerid, GetPlayerSkin(playerid)+1); -
Oh, beim Befehl:
ShowPlayerDialog(playerid, DIALOG_HELP, DIALOG_STYLE_MSGBOX, "Help-Artikel", msg, "Auswählen", "Abbrechen");
zu:
ShowPlayerDialog(playerid, DIALOG_HELP, DIALOG_STYLE_LISTBOX, "Help-Artikel", msg, "Auswählen", "Abbrechen"); -
format(query,sizeof(query),"INSERT INTO `Wantedlog` ( `BEAMTER`, `ZIELSPIELER`, `ANZAHL`, `GRUND`, `DATE`) VALUES('%s', '%s', '%i', '%s', '%s')",sInfo[playerid][spielername],sInfo[pID][spielername],wlevel, reason,msg);
-
Wie weg? Wohin wird er gesetzt?
Versuche mal, während er als Fahrer da sitzt den Befehl zu nutzen, mit dem du ihn auf Seat ID 1 setzt, ob er dann nach hinten gesetzt wird.
Falls das auch nicht geht, dann denke ich, dass es keine Möglichkeit gibt einen Standard-NPC als Beifahrer zu nutzen, wie es auch in den Threads aus dem englischen Forum besprochen wurde. -
Wie sieht dein Code von OnPlayerEnterDynamicCP aus?
-
Sorry, das ging beim Copy Paste unter, mein Fehler.
Der Checkpoint muss so aussehen:
bmxo[playerid] = CreateDynamicCP(x1,x2,x3,3,-1,-1,playerid,10000.0);//ZEILE: 127510
bmxo[inviteID[playerid]] = CreateDynamicCP(x1,x2,x3,3,-1,-1,inviteID[playerid],10000.0);//ZEILE: 127509Teste es dann nochmal.
-
Das passt soweit alles.
Habe ich jetzt bei PutPlayerInVehicle das richtig gesetzt?
Ja.
Eine letzte Möglichkeit fällt mir noch ein, versuch mal, den NPC neu aufzunehmen, als NPC im Fahrzeug und zwar als Fahrer. Sprich:
- Steige auf das Motorrad
- Starte die Aufnahme (in Fahrzeug-Aufnahme)
- Bleibe 30 Sekunden stehen
- Stoppe die Aufnahme
- Steige ab.
Dann versuche es mit dieser Aufnahme (kannst du ja gleich nennen und nur die alte Aufnahme ersetzen).
Versuche es dann mit dem aktuellen Code, ob er dann als Fahrer da sitzt. -
Das passt.
Der Fehler ist in OnDialogResponse, und zwar in der Zeile 3731. Kannst du diese mal posten, und etwas Code drum herum?Falls du den Code verändert hast, lass dir die Fehlermeldung mit der aktuellen Zeile nochmal ausgeben.
-
bmxo[playerid] = CreateDynamicCP(x1,x2,x3,3,-1,-1,playerid,10000.0);//ZEILE: 127510
bmxo[inviteID[playerid]] = CreateDynamicCP(checkpointgarbage[inviteID[playerid]],x1,x2,x3,3);//ZEILE: 127509
zu:
bmxo[playerid] = CreateDynamicCP(x1,x2,x3,3,-1,-1,playerid,10000.0);//ZEILE: 127510
bmxo[inviteID[playerid]] = CreateDynamicCP(x1,x2,x3,3,-1,-1,inviteID[playerid],10000.0);//ZEILE: 127509Außerdem solltest du es wirklich mit einem zweiten Spieler testen, sonst wird das bei den Tests nicht immer richtig klappen, da du zwei Checkpoints an der gleichen Position hast, aber nur einen Wert in der Variable, da playerid und inviteID[playerid] die gleiche ID haben.
Nutze dafür einen zweiten PC oder ein zweites Windows-Benutzerkonto (Benutzer wechseln, wenn du im Spiel bist, nicht abmelden).Teste es dann nochmal.
-
Der Bot sitzt aber nicht als Beifahrer...
Ich habe mal etwas herumgesucht, anscheinend geht das gar nicht.
http://forum.sa-mp.com/showthread.php?t=462856
http://forum.sa-mp.com/showthread.php?t=198206
http://forum.sa-mp.com/showthread.php?t=121468Versuche mal in dem Testbefehl die Seat-ID auf 0 zu setzen (Fahrer) und steige von dem Motorrad ab, bevor du den Befehl eingibst.
Sitzt er dann drauf? -
Gut, dann versuche den Dialog so:
#define DIALOG_HELPTEXT 2401
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DIALOG_HELP:
{
if(!response) return 1;
new str[256], msg[1024];
mysql_real_escape_string(inputtext, str);
format(str, sizeof(str), "SELECT helptext FROM helptabelle WHERE header = '%s';", str);
mysql_query(str);
mysql_store_result();
if(!mysql_num_rows()) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "*** Hilfe *** Leider gibt es dazu keinen passenden Treffer.");
mysql_fetch_row(msg);
mysql_fetch_field("helptext", msg);
for(new i=0; i<strlen(msg); i++) if(msg[i] == '~') msg[i] = '\n';
ShowPlayerDialog(playerid, DIALOG_HELPTEXT, DIALOG_STYLE_MSGBOX, "Help-Text", msg, "Ok", "");
mysql_free_result();
return 1;
}
}
return 0;
}Speichere den Helptext in der Datenbank so:
Dies ist ein Beispiel!~~Damit man gucken kann ob auch alles läuft, machen wir mal~einen Zeilenumbruch!Ein ~ steht für einen Zeilenumbruch. Dies kannst du auch ändern, falls du lieber ein anderes Zeichen nehmen willst. \n geht nicht, da dies als zwei Zeichen interpretiert wird. Könnte man zwar auch abfangen, ist aber umständlicher.
Der bisherige Code funktioniert.
Klappt es auch, wenn du mehrere Zeilen angezeigt bekommst, sprich Hilfe ID 1 hat den Tag "test" und ID 3 auch, mit zwei unterschiedlichen Überschriften?
-
Versuche den Befehl bitte mal so:
#define DIALOG_HELP 1403
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256], idx;
cmd = strtok(cmdtext, idx);
if(strcmp("/help", cmd, true) == 0)
{
new str[256], msg[1024];
str = strtok(cmdtext, idx);
if(!strlen(str)) return ShowHelp(playerid);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "*** Hilfe *** Suche Artikel... (Es sollte gleich ein Infotext angezeigt werden. Wenn nicht, probiere es zu einem späteren Ueitpunkt nochmal.)");
mysql_real_escape_string(str, str);
format(str, sizeof(str), "SELECT header FROM helptabelle WHERE tags LIKE '%%%s%%';", str);
mysql_query(str);
mysql_store_result();
if(!mysql_num_rows()) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "*** Hilfe *** Leider gibt es dazu keinen passenden Treffer.");
while(mysql_retrieve_row())
{
mysql_fetch_field_row(str,"header");
format(msg, sizeof(msg), "%s%s\n", msg, str);
}
ShowPlayerDialog(playerid, DIALOG_HELP, DIALOG_STYLE_MSGBOX, "Help-Artikel", msg, "Auswählen", "Abbrechen");
mysql_free_result();
return 1;
}
return 0;
}Im Query musst du das "helptabelle" an die Bezeichnung deiner Tabelle anpassen.
Ich habe es ohne Threaded Queries gemacht, da ich den Rest deines Codes nicht kenne und so Konflikte ausschließen kann.
Zeigt es dir die entsprechenden Header dann nach den gesuchten Tags an, sprich klappt das soweit?
-
Versuche es, wenn du so daneben stehst, mal mit diesem Befehl:
if(!strcmp(cmdtext, "/test", true))
{
new botname[MAX_PLAYER_NAME];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerNPC(i))
{
GetPlayerName(i, botname, sizeof(botname));
if(!strcmp(botname, "MotorradBeifahrer", true))
{
SetPlayerSkin(i, 1);
PutPlayerInVehicle(i, vFahrschulMotorrad, 1);
printf("TestBefehl: Setze %d auf Fahrzeug %d.", i, vFahrschulMotorrad);
return 1;
}
}
}
return 1;
}
Sitzt er dann drauf bzw. bekommt den Skin?Stimmt die vehicleid? (/dl)
-
Installiere dir dieses All-In-One-Package mit den benötigten Runtimes:
http://www.chip.de/downloads/A…ne-Runtimes_37449838.html