Was meinst du? Es geht doch um den Kompiliervorgang, nicht? Der hat erst mal nichts mit dem Plugin zu tun.
Beiträge von Jeffry
-
-
switch(IsPlayerAAdminR(i))
Zu
if(!IsPlayerConnected(i)) continue;
switch(PlayerInfo[i][pAdmin]) -
Nutze die mysql_static.so die im Downloadpaket dabei ist, anstatt der mysql.so.
-
Du kannst ja auch mal einen print an die Stelle setzen um zu prüfen ob das SendClientMessage überhaupt aufgerufen wird.
Falls nicht, vergleiche die Werte von LogInfo[i][l_akte_name] und tmp per print vor der Abfrage, ob es da überhaupt eine Übereinstimmung gibt. -
Die Errors zwecks nicht definiertem "mysql_query" kann ich nicht nachstellen.
Ich habe die pawno.exe in deinem Ordner geöffnet und deinen Gamemode ausgewählt und direkt ohne Änderungen kompiliert.
Ausgabe:
Kopiere dir gegebenenfalls mal den ganzen Ordner auf deinen Desktop, lösche den alten Ordner und öffne dann die pawno.exe und den Gamemode aus dem neuen Ordner.
-
Versuche es so:
1.)
Einen Timer erstellen, der alle 10 Sekunden aufgerufen wird (OnGameModeInit):
SetTimer("CheckTrailers", 10000, true);2.)
Der Timer:
forward CheckTrailers();
public CheckTrailers()
{
static checked[MAX_VEHICLES] = {-2,...}, Float:x[MAX_VEHICLES], Float:y[MAX_VEHICLES], Float:z[MAX_VEHICLES];
new model, Float:tmpx, Float:tmpy, Float:tmpz;
//Schleife durch alle Fahrzeuge
for(new i = 1; i < MAX_VEHICLES; i++)
{
model = GetVehicleModel(i);
switch(model)
{
//Wenn Trailer
case 435,450 /*weitere hier*/ :
{
GetVehiclePos(i, tmpx, tmpy, tmpz);
if(tmpx != x[i] || tmpy != y[i] || tmpz != z[i])
{
//Trailer steht nicht mehr an der Position vom letzten Timeraufruf
//(-2 = neu erstellt bzw. respawnt / -1 = am Spawn / 0 = wird bewegt / >0 = steht nicht am Spawn, aber steht)
if(checked[i] == -2) checked[i] = -1;
checked[i] = 0;
}
else
{
//Trailer steht noch an der gleichen Position
if(checked[i] != -1)
{
checked[i]++;
if(checked[i] > 5)
{
//Trailer steht eine Minute lang an der gleichen Position und hat kein Fahrzeug
if(GetTrailerVehicle(i) == -1)
{
//Respawn
SetVehicleToRespawn(i);
checked[i] = -2;
}
}
}
}
x[i] = tmpx;
y[i] = tmpy;
z[i] = tmpz;
}
}
}
return 1;
}3.) Die GetTrailerVehicle Funktion:
stock GetTrailerVehicle(trailerid)
{
for(new i = 1; i < MAX_VEHICLES; i++)
{
if(GetVehicleTrailer(i) == trailerid) return i;
}
return -1;
} -
Dann müsstest du es so machen:
if(LogInfo[i][l_akte_name] == ReturnUser(tmp))
zu:
if(!strcmp(LogInfo[i][l_akte_name], tmp,true))
(Ganzer Name eingeben)Oder so:
if(ReturnUser(LogInfo[i][l_akte_name]) == pID)
Das würde allerdings nur mit Spielern klappen, die online sind. -
MAX_PLAYER_NAME+1
Kleiner Tipp: Das +1 ist nicht notwendig (EOS spielt hier keine Rolle).
https://wiki.sa-mp.com/wiki/GetPlayerNameZitatThe length of the string that should be stored. Recommended to be 'MAX_PLAYER_NAME'.
-
Bräuchte mal den Stock
Hier noch eine etwas kompaktere Variante, die ich mal erstellt habe (Geburtsdatum aus String Speichern) :
new stock g_days_m[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
stock IsValidDate(input[], &day, &month, &year) //©Jeffry
{
new date[12];
strcat(date, input);
if(!date[9] || date[10]) return 0;
for(new i=0; i<10; i++) if(!(date[i] >= '0' && date[i] <= '9' || date[i] == '.')) return 0;
day = 10*(date[0]-48)+(date[1]-48);
month = 10*(date[3]-48)+(date[4]-48);
year = 1000*(date[6]-48)+100*(date[7]-48)+10*(date[8]-48)+(date[9]-48);
if(year < 1000 || year > 9999 || month < 1 || month > 12 || day < 1) return 0;
if(month == 2)
{
if(day > 28 && (year % 4 != 0 || (year % 100 == 0 && year % 400 != 0))) return 0;
}
else if(day > g_days_m[month-1]) return 0;
return 1;
} -
Steht in LogInfo[i][l_akte_name] der Name des Users, oder dessen ID?
-
Kürze str1 auf 145, mehr kann SendClientMessage nicht anzeigen (oder nutze einen Dialog).
Entferne außerdem das return 1 nach SendClientMessage, falls ein Spieler mehrere Zeilen hat. -
hier sind die errors und ein Paar Zeilen
Schicke mir bitte mal den ganzen Server Ordner, dann schaue ich mir das morgen mal an.
-
Weißt du vllt die ID von dieser Holz Tribühne?
Das ist die ID 3819.
-
(Also diesen Licht Kegel)
Möglicherweise 957? Was anderes würde mir spontan nicht einfallen.

-
https://wiki.sa-mp.com/wiki/Update3DTextLabelText
Die Parameter sind: Text3D:id, color, text[]
Ändere es also zu:
Update3DTextLabelText(SBizzInfo[i][labelID],COLOR_WHITE,string4);
(labelID = Rückgabe von Create3DTextLabel, ggf. im enum anlegen)Entsprechend für die anderen Update3DTextLabelText's.
-
Nein, du musst den Code, den du im Filterscript hast, an die entsprechenden Stellen im Gamemode einfügen.
Über CallRemoteFunction könnte man das zwar auch machen, das empfiehlt sich aber nicht.Füge einfach das was im Filterscript bei OnPlayerCommandText steht in den Gamemode in OnPlayerCommandText ein (entsprechend auch für alles andere).
-
Tribühne von diesem Baseball Stadion in LV...
Objekt IDs 3452 und 3453.
-
Du musst dann die beiden Befehle in das OnPlayerCommandText deines Gamemodes einfügen, vor dem letzten return, oder direkt als ersten Befehl.
-
Dann musst du den Code in deinen Gamemode einbauen, anstatt in einen Filterscript, wenn dort PlayerInfo deklariert ist.
Ansonsten musst du anstatt PlayerInfo den Variablennamen nutzen, den du für deine Statistiken nutzt.
-
Kannst du bitte mal die Deklaration von "PlayerInfo" posten (also das "new PlayerInfo ..." und das enum dazu), und sagen, ich welcher Zeile der Code anfängt?
Oder hast du gar kein "new PlayerInfo" im Code?