Nicht unbedingt, wenn der Code erst gar nicht aufgerufen wird. Es wäre besser, wenn du das ganze Callback postest, vor allem weil wir es wahrscheinlich mal debuggen müssen.
Beiträge von Jeffry
-
-
Also du entfernst die Sirene bei OnPlayerExitVehicle und fragst warum die Sirene beim aussteigen weg geht? Hä?

Poste bitte dein OnPlayerExitVehicle, dann schauen wir mal, ob man das raus machen kann. -
Sicher, dass das alles ist?
Poste bitte dein OnPlayerSpawn. -
stock CutIntoLines(string[]) //©Jeffry
{
new tmp[1024], find, len;
strcat(tmp, string);
while((find = strfind(tmp, "\n")) != -1) strdel(tmp, find, find+1);
len = strlen(tmp);
for(new i=30; i<len; i+=31) strins(tmp, "\n", i);
return tmp;
}Versuche es damit.
In SetObjectMaterialText schreibst du an die Stelle des Textes
CutIntoLines(inputtext)
hin. -
Das nicht direkt, nein. Aber der Spieler kann da selbst mit \n einen Zeilenumbruch schreiben.
Oder willst du den Umbruch erzwingen und dem Spieler keine Möglichkeit geben, einen zu machen? -
Poste bitte die entsprechenden Codes dazu, sprich wo du den Skin zuweist, den er haben soll, wo du ihm ihn nach dem Login bzw am Spawn gibst und alles was sonst noch dazu gehört.
-
Nutze SendBigMessage anstatt SendClientMessage.
Unten im Gamemode einfügen:
stock SendBigMessage(playerid,color,string[]) //©Jeffry
{
if(strlen(string) < 128) return SendClientMessage(playerid,color,string);
new buffer[131],tmp[1024];
strcat(tmp, string);
while(tmp[0] != EOS)
{
strmid(buffer,tmp,0,127);
strdel(tmp,0,127);
if(tmp[0] != EOS) strcat(buffer,"...");
SendClientMessage(playerid,color,buffer);
}
return 1;
}Wenn du wirklich nur 30 Zeichen anzeigen willst, pro SendClientMessage, ändere 128 zu 31, 127 zu 30 und 131 zu 34.
Wenn du die Punkte nicht haben willst, dann entferne die Zeile:
if(tmp[0] != EOS) strcat(buffer,"..."); -
Ein MD5 ist 32 Zeichen lang.
Ändere das in der Struktur zu 33 anstatt 25, dann geht es (musst dich natürlich neu registrieren). -
Naja, das ist ja auch irgendwie logisch, dass das nicht geht.
Du hast jetzt oben in der Variable eine neue Dimension eingefügt, damit, dass ein Spieler mehrere Fahrzeuge haben kann, aber du hast keinen einzigen deiner Codes verändert. Das kann nicht klappen.Du musst natürlich dort wo du zuvor Carlist ohne Keys hattest, das so abändern, dass es für den entsprechenden Key, bzw. für alle Keys, gemacht wird.
Die Funktion sähe dann so aus:
GetPlayerFromCarlistCar(carid, &pid, &slot)
{
for(new i=0; i<sizeof(Carlist); i++)
{
for(new j=0; j<sizeof(Carlist[]); j++)
{
if(Carlist[i][j][Carid]==carid)
{
pid = i;
slot = j;
return 1;
}
}
}
return -1;
}Natürlich musst du dann auch alle Codes die diese Funktion verwenden umschreiben, da du ja jetzt Besitzer UND Slot brauchst.
Beim OnPlayerConnect musst du mit einer Schleife durch alle Keys gehen.
-
Das sieht soweit alles gut aus, bis auf dass kein Result zurück kommt.
Was steht denn in deiner Tabelle bei "password"? Kannst du von den Daten und von der Struktur der Tabelle mal einen Screenshot machen? -
Füge das hier zum Register stock hinzu:
format(PlayerInfo[playerid][pPass],128,password); -
Mache bitte einen Thread auf und poste dort den Code nochmal, zusammen mit dem MySQL Debug Log, der kommt, wenn du dich einloggst.
Wie du den an machst siehst du hier: Tipps: Scripting-Probleme richtig erklären (Kapitel 1.4)Warum einen Thread? Weil MySQL Debugging keine kleine Frage ist.
-
Ok, das stimmt so. Dann ist es aber komisch, dass das Passwort leer ist.
Sicher, dass du nur an den geposteten Stellen was auf "Passwort" in die Datei schreibst, und sonst nirgends?Ändere mal:
dini_Set(Player,"Passwort",password);
zu:
dini_Set(Player,"Passwort",password);
printf("Setze Passwort zu: '%s'", password);Dann poste was im Server Log steht, wenn du dich registrierst.
Und poste deine SavePlayer Funktion.
-
Poste doch bitte was in der Datei steht und deinen Code. Mein Code war ernst gemeint, das klappt auch, wenn du es richtig machst.
-
Poste bitte die beiden Zeilen (507 & 666).
-
Deine query Variable ist möglicherweise zu klein.
-
Registriere dich mal neu.
Dann poste was in der Datei steht und poste nochmal deinen Register-Stock wie er jetzt aussieht. -
TogglePlayerSpectating(playerid, 1);
-
if(TutTime[i])
{
TutTime[i]++;
if(TutTime[i] == 6)
{
SetPlayerPos(i,1479.1464,-1754.0496,33.4297);
SetPlayerFacingAngle(i,357.8764);
SetPlayerCameraPos(i,1482.5554,-1713.1638,36.7771);
SetPlayerCameraLookAt(i,1482.1392,-1746.0701,25.7670);
SetPlayerVirtualWorld(i,(i+1));
for(new s=0; s<10; s++) SendClientMessage(i,Farbe_Schwarz," ");
TextDrawHideForPlayer(i, IntroBox);
TextDrawHideForPlayer(i, Projektleitung);
TextDrawHideForPlayer(i, ProjektLeiterName);
PlayerTextDrawSetString(i,Tutorialdraw[i][1],"(Tutorial) - Zivispawn");
PlayerTextDrawSetString(i,Tutorialdraw[i][2],"Dies ist der Zivispawn unseres Servers~n~Hier Spawnst du wenn du dich einloggst~n~Jedoch kannst du dich in ein Haus einmieten~n~sodass du dort Spawnen kannst mit /spawnchange");
for(new s=0;s<4;s++) PlayerTextDrawShow(i,Tutorialdraw[i][s]);
}
else if(TutTime[i] == 20)
{
SetPlayerPos(i,2122.5210,-1146.8610,30.7632);
SetPlayerFacingAngle(i,359.3494);
SetPlayerCameraPos(i,2128.5413,-1112.7592,42.8372);
SetPlayerCameraLookAt(i,2129.6411,-1142.0074,25.0423);
SetPlayerVirtualWorld(i,(i+1));
for(new s=0; s<10; s++) SendClientMessage(i,Farbe_Schwarz," ");
PlayerTextDrawSetString(i,Tutorialdraw[i][1],"(Tutorial) - Fraktionen");
PlayerTextDrawSetString(i,Tutorialdraw[i][2],"Auf unserem Server gibt es X Fraktionen.~n~Ab Level 2 kannst du einer Gang/Mafia beitreten.~n~und ab Level 3 Staatsfraktionen.~n~Du kannst in diesem Forum bewerben www.folgt.de");
for(new s=0;s<4;s++) PlayerTextDrawShow(i,Tutorialdraw[i][s]);
}
else if(TutTime[i] == 28)
{
SetPlayerPos(i,1460.4634,-1019.1107,48.1359);
SetPlayerFacingAngle(i,181.6645);
SetPlayerCameraPos(i,1461.5790,-1042.0156,24.2842);
SetPlayerCameraLookAt(i,1462.4208,-1011.1050,30.0120);
SetPlayerVirtualWorld(i,(i+1));
for(new s=0; s<10; s++) SendClientMessage(i,Farbe_Schwarz," ");
PlayerTextDrawSetString(i,Tutorialdraw[i][1],"(Tutorial) - Autohaeuser");
PlayerTextDrawSetString(i,Tutorialdraw[i][2],"Wir besitzen X Autohaeuser.~n~Wir empfehlen dir das Guenstige Autohaus als erstes zu besuchen.~n~um dir einen Anfangs Wagen zuzulegen.~n~Wie du dort hingelangst? /navi");
for(new s=0;s<4;s++) PlayerTextDrawShow(i,Tutorialdraw[i][s]);
}
else if(TutTime[i] == 46)
{
SetPlayerPos(i,1413.2452,-1640.2640,38.3088);
SetPlayerFacingAngle(i,268.4439);
SetPlayerCameraPos(i,1442.6525,-1624.4379,60.0615);
SetPlayerVirtualWorld(i,(i+1));
SetPlayerCameraLookAt(i,1489.9127,-1677.9097,15.6762);
for(new s=0; s<10; s++) SendClientMessage(i,Farbe_Schwarz," ");
PlayerTextDrawSetString(i,Tutorialdraw[i][1],"(Tutorial) - Was kann ich zuerst tun?");
PlayerTextDrawSetString(i,Tutorialdraw[i][2],"- Perso beantragen.~n~- Job zulegen.~n~- Fuehrerschein absolvieren~n~- Anfangs Wagen zulegen.");
for(new s=0;s<4;s++) PlayerTextDrawShow(i,Tutorialdraw[i][s]);
}
else if(TutTime[i] >= 60)
{
for(new s=0; s<10; s++) SendClientMessage(i,Farbe_Schwarz," ");
for(new s=0;s<4;s++) PlayerTextDrawHide(i,Tutorialdraw[i][s]);
SendClientMessage(i,Farbe_Gelb,"Tutorial geschafft!");
SendClientMessage(i,Farbe_Weiß,"Dein Account wurde erfolgreich angelegt.");
SendClientMessage(i,Farbe_Weiß,"Viel Spaß, fotze.");
SetPlayerCheckpoint(i,1481.1222,-1765.4866,18.7958,2.5);
PlayerPlaySound(i,1188,0.0,0.0,0.0);
TutTime[i] = 0;
TutStep[i] = 1;
SpielerInfo[i][sTutorial] = 1;
GivePlayerMoney(i,50000+random(1000));
SpielerInfo[i][sBank] = 20000+random(20000);
format(Text,sizeof(Text),"Wir haben einen Neuen Spieler: %s",SpielerInfo[i][sName]);
SendClientMessageToAll(Farbe_Rot,Text);
ShowPlayerDialog(i, DIALOG_Startbonus, DIALOG_STYLE_LIST, "Ende des Tutorials...", "Startbonus 10.000 $\nFührerschein\nStartlevel 5","Auswählen","-");
StopAudioStreamForPlayer(i);
SetPlayerSpawn(i);
}
}EDIT:
Synchron: Kopiere dir den Code nochmal, ich dachte du hattest das schon geändert.
-
Lass dir hier mal die Anzahl der Zeilen ausgeben, die selektiert worden sind:
cache_get_data(rows,fields);
zu:
cache_get_data(rows,fields);
printf("rows: %d max: %d", rows, sizeof(FrakInfo));Und poste dazu bitte einen Screenshot aus der Datenbank mit den Daten die du selektierst.