So war es gemeint:
public OnVehicleStreamIn(vehicleid, forplayerid)
{
if(vehicleid == vFahrschulMotorrad)
{
if(IsPlayerNPC(forplayerid))
{
new botname[MAX_PLAYER_NAME];
GetPlayerName(forplayerid, botname, sizeof(botname));
if(!strcmp(botname, "MotorradBeifahrer", true))
{
SetPlayerSkin(forplayerid, 1);
PutPlayerInVehicle(forplayerid, vFahrschulMotorrad, 1);
}
}
}
return 1;
}
Beiträge von Jeffry
-
-
Wenn du es vor-definierst, dann kannst du es so machen:
new test[][][testEnum] = { //hier ist der Fehler.
{1, "NULL", 0},
{2, "NULL", 0},
{3, "NULL", 0},
{4, "NULL", 0},
{5, "NULL", 0}
};Alternativ so:
new test[5][3][testEnum] = { //hier ist der Fehler.
{1, "NULL", 0},
{2, "NULL", 0},
{3, "NULL", 0},
{4, "NULL", 0},
{5, "NULL", 0}
};Das ist aber beides 1:1 identisch.
-
PlayerText zu Text.
-
Versuche es so:
ocmd:name(playerid, params[])
{
new str[64], name[MAX_PLAYER_NAME];
if(!strlen(params)) return SendClientMessage(playerid, -1, "Tippe: /name [Suchbegriff]");
if(!IsNumeric(params))
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, name, MAX_PLAYER_NAME))
{
if(strfind(name, params, true) != -1)
{
format(str, sizeof(str), "ID: %d | Spielername: %s", i, name);
SendClientMessage(playerid, -1, str);
}
}
}
if(!strlen(str)) SendClientMessage(playerid, 0xFF0000FF, "Kein Spieler gefunden.");
}
else
{
new pID = strval(params);
if(GetPlayerName(pID, name, MAX_PLAYER_NAME))
{
format(str, sizeof(str), "ID: %d | Spielername: %s", pID, name);
SendClientMessage(playerid, -1, str);
}
else SendClientMessage(playerid, 0xFF0000FF, "Diese ID ist nicht online.");
}
return 1;
}Mit IsNumeric:
stock IsNumeric(const string[])
{
for (new i = 0, j = strlen(string); i < j; i++)
{
if (string[i] > '9' || string[i] < '0') return 0;
}
return 1;
} -
Füge den Code-Teil von OnPlayerSpawn zusätzlich bei OnVehicleStreamIn ein, nach der Prüfung ob vehicleid die vFahrschulMotorrad ist.
-
Ja, genau so.
Zwecks der Warnung, mein Fehler, es muss so aussehen:
new Text3D:Adminlabel[MAX_PLAYERS] = {Text3D:-1,...}; -
Floats funktionieren zum Teil nicht immer korrekt.
Versuche es mit: https://wiki.sa-mp.com/wiki/Floatadd -
Den Code von OnPlayerEnterVehicle solltest du nach OnPlayerStateChange mit PLAYER_STATE_DRIVER packen, sonst kommt es zu Fehlern, wenn der Spieler mehrmals "Einsteigen" drückt, bzw. sich beim Einsteigen bewegt und nicht einsteigt.
Ändere dann außerdem:
vFahrschulMotorrad = GetVehicleModel(vehicleid);
zu:
vFahrschulMotorrad = GetPlayerVehicleID(playerid); -
Das Problem lässt sich an dem Code so nicht nachvollziehen, das passt soweit.
Es ist aber zu empfehlen, die Variablen zurückzusetzen, da es ein Label mit der ID 0 geben kann, sprich:
new Text3D:Adminlabel[MAX_PLAYERS] = {Text3D:-1,...};
Und nach jedem Delete:
Adminlabel[playerid] = Text3D:-1; -
Das wird nicht klappen, da strcmp nur eindeutige Übereinstimmungen findet, also immer nur den Spieler selbst.
Versuche es so:
ocmd:name(playerid, params[])
{
new str[64], name[MAX_PLAYER_NAME];
if(!strlen(params)) return SendClientMessage(playerid, -1, "Tippe: /name [Suchbegriff]");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, name, MAX_PLAYER_NAME))
{
if(strfind(name, params, true) != -1)
{
format(str, sizeof(str), "ID: %d | Spielername: %s", i, name);
SendClientMessage(playerid, -1, str);
}
}
}
return 1;
} -
@Jeffry Liest der Editor auch als txt Datei ? Weil des ist eine pawn.cfg.txt
Nein, das würde er nicht erkennen, danke für die Nachfrage. Wenn das der Fall ist, dann geht es natürlich nicht, auf die Bezeichnung hinten habe ich nicht geschaut.
Es muss eine cfg Datei sein. Textdokument erstellen und speichern unter pawn.cfg.
-
Natürlich.
Starte dann den Server wieder und reproduziere den Fehler. Poste die dann erscheinende Meldung nochmal, eventuell, wenn du es siehst, die entsprechende Zeile Code dazu (bzw. ein paar Zeilen).
-
stock isPlayerAdmin()
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(sInfo[i][alevel] >= 1) return 1;
}
}
return 0;
}if(!isPlayerAdmin()) format(string, sizeof(string),"{FF0000}Es ist kein Admin online!");
Die Bezeichnung der Funktion ist allerdings nicht ganz sprechend. Besser wäre: isAnyPlayerAdmin.
-
Eine Frage habe ich, muss ich für den Bot einen Account erstellen, sprich ihn in die Datenbank einsetzen?
Nein, das kannst du überspringen lassen, wie du es eingestellt hast.
Der steht aber immernoch beim Spawn... Er will einfach nicht als Beifahrer sitzen...
Setzt du den NPC bei OnPlayerSpawn in das Fahrzeug?
-
Wie sieht dein Code bei der Änderung jetzt aus? Poste bitte die aktuelle Version.
-
-
Das passt.
Wird dir etwas im MySQL Log ausgegeben, wenn du die ATM anlegst, bzw. deren Position veränderst?Wenn nein, dann schalte bitte mal den Debug Modus an, je nach Plugin:
mysql_debug(1);
oder:
mysql_log(LOG_ALL);
Und poste dann, was dir dort ausgegeben wird. -
format(query, sizeof(query), "UPDATE atm SET a_x = '%f', a_y = '%f', a_z = '%f' WHERE id = '%d'", fX, fY, fZ, aInfo[id][a_id]);
Heißt deine Primary Key Spalte in der Tabelle "atm" auch "id"? Das solltest du sonst natürlich anpassen, auf deinen Bezeichner. -
Füge vor updateAtm(id); bei OnPlayerEditObject das hier ein, damit die Koordinaten übertragen werden und das Label geändert wird:
aInfo[id][a_x] = fX;
aInfo[id][a_y] = fY;
aInfo[id][a_z] = fZ;Bein OnAtmsLoad, nach updateAtm(id);:
aInfo[id][a_objectID] = CreateObject(2942, aInfo[id][a_x], aInfo[id][a_y], aInfo[id][a_z], 0.0, 0.0, 96.0);Eventuell solltest du auch die Rotationen speichern, sofern die geändert werden.
-
[19:35:46] [debug] #0 native fwrite () from samp1337_5211
Scheint als greifst du mit fwrite auf eine Datei zu, die nicht existiert. Wo genau das ist kann dem Log nicht entnommen werden.
Erstelle in deinem /pawno/ Ordner bitte mal eine Datei "pawn.cfg" und schreibe dort "-d3" rein (ohne Anführungszeichen).
Dann öffne die /pawno/pawno.exe und öffne über "Öffnen" deinen Code und kompiliere ihn.Starte dann den Server wieder und reproduziere den Fehler. Poste die dann erscheinende Meldung nochmal, eventuell, wenn du es siehst, die entsprechende Zeile Code dazu (bzw. ein paar Zeilen).