Alles klar, danke trotzdem.
Weil ich gerne Server, Forum und TS Rechte gesynct hätte.
MfG
Alles klar, danke trotzdem.
Weil ich gerne Server, Forum und TS Rechte gesynct hätte.
MfG
Der zurück gegebene Status ist dann nicht 1. Wofür das steht bzw. was der Fehler ist, lässt sich hier leider nicht erkennen, da die Fehlermeldung nicht sehr aussagekräftig ist.
Hm okay, danke für die Info. Gäbe es noch eine andere Möglichkeit via Befehl jemand im Forum (btw. neueste WBB Version) rechte zu geben?
forward pWBB4_Callback(action, index, playerid, status, response[]);
public pWBB4_Callback(action, index, playerid, status, response[]) {
if ( action == pWBB4_ACTION_WBBADDTOGROUPS )
{
if ( status == 1 )
{
print("Gruppen erhalten!");
}
else
{
print("Leider ist ein Fehler aufgetreten :(");
}
}
return 1;
}
Alles anzeigen
Von hier kommt die Fehlermeldung.
Dann prüfe bitte nochmal genau wo die Warnung her kommt und poste den exakten Log.
Der Fehler ist nun weg, jedoch steht in der Konsole
Nicht sscanf, sondern die WBB Include.
Ah, da hab ich auch schon die neueste.
Danke, die sscanf ist die ganz neueste und nicht verändert. Auch mit der vorletzten sscanf Version geht es nicht.
Poste bitte die Funktion pWBB4_SendRequest.
stock pWBB4_SendRequest(action, postData[], playerid = 0, index = 0) {
new url[pWBB_URL_LENGTH];
format(url, pWBB_URL_LENGTH, #pWBB_URL"/samp.php?action=%d&playerid=%d&index=%d&key="#pWBB_CONNECT_KEY, action, playerid, index);
#if defined pWBB_DEBUG
printf("[pWBB4/HTTP Debug] URL: %s / Post: %s",url, postData);
#endif
return HTTP(action, HTTP_POST, url, postData, "pWBB4_Response");
}
Dann ist es mit Anführungszeichen richtig und der Fehler kommt aus der Funktion. Gehe bitte in die Include und poste die Funktion WBB_AddToGroups.
Dort wird vermutlich sscanf nur mit "s" anstatt "s[Länge]" genutzt, das muss dann angepasst werden.
stock WBB_AddToGroups(UserID, GroupIDs[], playerid = -1, index = 0) {
new str[pWBB_URL_LENGTH];
format(str,sizeof str, "a=%d&b=%s", UserID, pWBB4_urlencode(GroupIDs));
return pWBB4_SendRequest(pWBB4_ACTION_WBBADDTOGROUPS, str, playerid, index);
}
So steht es im Include
Ah, du hast die falsche Funktion gepostet. Bitte poste die Funktion WBB_AddToGroups.
So wie ich es oben gepostet hab ist hier nachzulesens.
Entferne die Anführungszeichen bei der 7, die Funktion erwartet einen Integer.
error 035: argument type mismatch (argument 2) kommt wenn ich die " beri der 7 wegmach.
Dann kannst du die ersten drei Zeilen des Befehls komplett entfernen und brauchst nur die letzte Zeile.
Du meinst so?
So kommt trotzdem der Fehler.
Ohne den " kommt argument type missmatch
Was willst du mit dem Befehl denn bezwecken? Du nutzt id gar nirgends, außer im Format, jedoch steht dort kein Platzhalter im String, sondern nur eine 7.
Daher ist der sscanf Befehl im Grunde unwirksam.
Die Warnung kommt daher, dass du eigentlich "s[4]" schreiben solltest. Aber wie gesagt, es ist so oder so unwirksam.
Moin,
ich möchte das man damit im Forum eine Benutzergruppe bekommt in dem Fall 7.
Guten Abend,
Ich bekomme bei folgenden Code den Error sscanf warning: Strings without a length are deprecated, please add a destination size.
ocmd:forum(playerid,params[])
{
new id[4];
if(sscanf(params,"i[4]",id);
format(string,sizeof(string),"7", id);
WBB_AddToGroups(3, "7", playerid, 1);
}
//WBB_AddToGroups(3, "7", playerid, 1);
forward pWBB4_Callback(action, index, playerid, status, response[]);
public pWBB4_Callback(action, index, playerid, status, response[]) {
if ( action == pWBB4_ACTION_WBBADDTOGROUPS )
{
if ( status == 1 )
{
print("Gruppen erhalten!");
}
else
{
print("Leider ist ein Fehler aufgetreten :(");
}
}
return 1;
}
Alles anzeigen
Der Fehler ist scheinbar irgendwo im ocmd Befehl. Ich benutze die neueste sscanf. Woran kann der Fehler liegen?
Danke im Voraus.
MfG
Alles anzeigenLiest du auch, was ich schreibe?
Offensichtlich verwendest du schon einmal pragma dynamic.
Lösch es mal überall raus und poste nochmal die Meldung...
//Edit:
Oder kann es sein, dass du eine pawn.cfg in deinem Pawno Ordner hast?
Wenn ja, lösche diese mal.
ich hab nirgends eins drin.
Edit: Nein, es ist keine pawn.cfg vorhanden.
das pragma dynamic hat den Fehler behoben, danke.
Das kommt wenn ich es mache wie du schreibst.
Header size: 7852 bytes
Code size: 375812 bytes
Data size: 5076500 bytes
Stack/heap size: 21906640 bytes; estimated max. usage: unknown, due to recursion
Total requirements:27366804 bytes
Header size: 7852 bytes
Code size: 375924 bytes
Data size: 5076500 bytes
Stack/heap size: 16384 bytes; estimated max. usage: unknown, due to recursion
Total requirements: 5476660 bytes
Hallo,
ich finde hier den Fehler nicht, in einem anderen Script wo die selbe Funktion und der selbe Dialog drin sind kommt der Fehler nicht. Ich habe an den Funktionen nichts geändert.
stock FormatNumber(geld, const szChar[] = ".")
{
new str[24],i;
valstr(str,geld),i=(geld > 0) ? strlen(str)-3 : strlen(str)-4;
for(; i>0; i-=3) strins(str,szChar,(geld > 0) ? i : i+1,sizeof(str));
return str;
}
case DIALOG_FRAKTION:
{
new string10[1400];
new fID = CharacterInfo[playerid][character_Fraktion];
if(!response)return 1;
format(string10,sizeof(string10),"{FFFFFF}Rang\t{FFFFFF}RangTag\t{FFFFFF}Gehalt\n%s\t%s\t%s\n%s\t%s\t%s\n%s\t%s\t%s\n%s\t%s\t%s\n%s\t%s\t%s\n%s\t%s\t%s\n%s\t%s\t%s\n%s\t%s\t%s\n%s\t%s\t%s\n%s\t%s\t%s\n%s\t%s\t%s\n%s\t%s\t%s",
FraktionDaten[fID][fraktion_Rang1],FraktionDaten[fID][fraktion_RangTag1],FormatNumber(FraktionDaten[fID][fraktion_Gehalt][0]),FraktionDaten[fID][fraktion_Rang2],FraktionDaten[fID][fraktion_RangTag2],FormatNumber(FraktionDaten[fID][fraktion_Gehalt][1]),FraktionDaten[fID][fraktion_Rang3],FraktionDaten[fID][fraktion_RangTag3],FormatNumber(FraktionDaten[fID][fraktion_Gehalt][2]),
FraktionDaten[fID][fraktion_Rang4],FraktionDaten[fID][fraktion_RangTag4],FormatNumber(FraktionDaten[fID][fraktion_Gehalt][3]),FraktionDaten[fID][fraktion_Rang5],FraktionDaten[fID][fraktion_RangTag5],FormatNumber(FraktionDaten[fID][fraktion_Gehalt][4]),FraktionDaten[fID][fraktion_Rang6],FraktionDaten[fID][fraktion_RangTag6],FormatNumber(FraktionDaten[fID][fraktion_Gehalt][5]),
FraktionDaten[fID][fraktion_Rang7],FraktionDaten[fID][fraktion_RangTag7],FormatNumber(FraktionDaten[fID][fraktion_Gehalt][6]),FraktionDaten[fID][fraktion_Rang8],FraktionDaten[fID][fraktion_RangTag8],FormatNumber(FraktionDaten[fID][fraktion_Gehalt][7]),FraktionDaten[fID][fraktion_Rang9],FraktionDaten[fID][fraktion_RangTag9],FormatNumber(FraktionDaten[fID][fraktion_Gehalt][8]),
FraktionDaten[fID][fraktion_Rang10],FraktionDaten[fID][fraktion_RangTag10],FormatNumber(FraktionDaten[fID][fraktion_Gehalt][9]),FraktionDaten[fID][fraktion_Rang11],FraktionDaten[fID][fraktion_RangTag11],FormatNumber(FraktionDaten[fID][fraktion_Gehalt][10]),FraktionDaten[fID][fraktion_Rang12],FraktionDaten[fID][fraktion_RangTag12],FormatNumber(FraktionDaten[fID][fraktion_Gehalt][11]));
ShowPlayerDialog(playerid, DIALOG_FRAKTION_BEARBEITEN, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Fraktion - Ränge", string10, "{FFFFFF}Weiter", "{FFFFFF}Zurück");
return 1;
}
Alles anzeigen
[debug] Run time error 3: "Stack/heap collision (insufficient stack size)"
[debug] Stack pointer (STK) is 0x4D7A24, heap pointer (HEA) is 0x4D7A1C
[debug] AMX backtrace:
[debug] #0 00020178 in FormatNumber (geld=0, szChar[]=@004a4640 ".") at C:\Users\Administrator\Desktop\Selfmade Roleplay\pawno\include\../include/core/allgemeines.inc:470
[debug] #1 0003f1fc in dialoge (playerid=0, dialogid=56, response=1, listitem=0, inputtext[]=@004d7584 "R") at C:\Users\Administrator\Desktop\Selfmade Roleplay\pawno\include\../include/core/dialoge.inc:524
[debug] #2 0005ba94 in public OnDialogResponse (playerid=0, dialogid=56, response=1, listitem=0, inputtext[]=@004d7584 "R") at selfmade.pwn:283
470 ist new str[24],i;
524 ist das format(string10
283 ist aloge(playerid, dialogid, response, listitem, inputtext);
Wo liegt der Fehler?
Danke im Voraus.
MfG
Allrounder18
Ja du Speicherst erst ab wenn jemand disconnected.
Ich würde es so machen, im enum parkfrakcar hinzufügen und nicht als PVar dann unter OnGameModeInit eine Schleife. Wenn
FrakFahrzeugInfo[id][parkfrakcar] = 0 ist dann soll er es abspeichern.
Wieso ongamemodeinit?
Ich habs mal bei ongamemodeexit versucht, es sieht aktuell so aus.
gamemodeexit()
{
new oldtime = GetTickCount(), id;
gettime(hour, minute, second);
getdate(year, month, day);
for(new id; id < sizeof(FrakFahrzeugInfo); id++) {
if(!FrakFahrzeugInfo[id][frakfahrzeug_Erstellt]) continue;
FrakFahrzeugSpeichern(id);
}
if(FrakFahrzeugInfo[id][frakfahrzeug_Parked] == 0)
{
SaveFrakFahrzeuge(id);
}
mysql_close(handle);
printf("[%02d:%02d:%02d - %02d.%02d.%d] SERVER » Speichervorgang wurde eingeleitet.",hour,minute,second,day,month,year);
printf("[%02d:%02d:%02d - %02d.%02d.%d] SERVER » Speichervorgang erfolgreich abgeschlossen.",hour,minute,second,day,month,year);
printf("[%02d:%02d:%02d - %02d.%02d.%d] SERVER » Server wird nun heruntergefahren.",hour,minute,second,day,month,year);
printf("[%02d:%02d:%02d - %02d.%02d.%d] SERVER » Server brauchte für das Runterfahren %i ms.",hour,minute,second,day,month,year,GetTickCount() - oldtime);
printf("[%02d:%02d:%02d - %02d.%02d.%d] SERVER » Callback 'OnGameModeExit' wurde ausgeführt.",hour,minute,second,day,month,year);
}
Alles anzeigen
Bei FrakfahrzeugSpiechern wird nur der tank etc abgespeichert aber keine Position.
Edit: Es sollte wie folgt sein:
Ich parke die Fahrzeuge mit Befehl, wenn der Server zb um 5 Uhr morgens automatisch neustartet sollten die Fahrzeuge dort spawnen wo ich sie mit dem Befehl geparkt habe. Wenn ich aber den Server manuell restarten muss sollten die geparkten Fahrzeuge dort spawnen wo sie zuletzt standen. Nehmen wir ne Ambulance, diese ist gerade unterwegs und der server muss restartet werden, dann soll diese dort spawnen wo sie vor dem restart stand und nicht dort wo sie mit dem Befehl geparkt wurde. Fahrzeuge die nicht mit dem Befehl geparkt wurden sollen natürlich auch dort spawnen wo sie vor dem restart standen, sei dieser automatisch oder manuell. Geht soetwas?
Edit2: Ich habs soweit, aber wie frag ich nun ab wann es zb 19 Uhr ist damit der Server automatisch neutstartet?
Wait.
Beim befehl Updatest du die Position.
Und wo verwendest du SaveFrakFahrzeuge()?
Das verwende ich bei onplayerdisconnect, ich hab aber das gefühl dass es zu ongamemodeexit gehört?
Moin,
ich habe einen Befehl zum Parken von Frakcars damit die Frakcars nach dem restart auch wieder dort spawnen wo sie geparkt sind, und ich möchte es machen, dass auch die Frakcars gesaved werden die nicht mit dem Befehl geparkt werden. Akutell ist es so, wenn ich nen Frakcar mit dem Befehl parke und dies dann aber weiterfahre spawnt es nach restart an der Stelle wo ich es davor abestellt habe und nicht dort wo ich es mit Befehl geparkt habe.
Hiermit werden die Frakcars geparkt und die Position in MYSQl geupdated.
ocmd:parkfrakcar(playerid)
{
if(CharacterInfo[playerid][character_Fraktion] == 0) return SendFehler(playerid, "Du musst dafür in einer Fraktion sein");
if(CharacterInfo[playerid][character_Rang] != 11 && CharacterInfo[playerid][character_Rang] != 12) return SendFehler(playerid, "Du musst dafür Co-/Leiter einer Fraktion sein");
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendFehler(playerid,"Du bist nicht der Fahrer eines Fahrzeuges");
new vID = GetPlayerVehicleID(playerid);
for(new id; id<sizeof(FrakFahrzeugInfo); id++)
{
if(FrakFahrzeugInfo[id][frakfahrzeug_Erstellt])
{
if(CharacterInfo[playerid][character_Fraktion] != FrakFahrzeugInfo[id][frakfahrzeug_Fraktion])continue; /*SendFehler(playerid, "Du bist nicht in der richtigen Fraktion");*/
if(vID != FrakFahrzeugInfo[id][frakfahrzeug_VehicleID])continue;
GetVehiclePos(vID, FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][0], FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][1], FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][2]);
GetVehicleZAngle(vID, FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][3]);
if(GetPVarInt(id,"parkfrakcar") == 0)
{
new query[200];
format(query,sizeof(query),"UPDATE `fraktionfahrzeuge` SET `parkx` = '%f',`parky` = '%f',`parkz` = '%f',`parkr` = '%f' WHERE `id` = '%d'",
FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][0],FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][1],FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][2],
FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][3],FrakFahrzeugInfo[id][frakfahrzeug_ID]);
mysql_tquery(handle,query);
SetPVarInt(id,"parkfrakcar",1);
return SendInfo(playerid,"Du hast das Fahrzeug erfolgreich umgeparkt");
}
}
}
return 1;
}
Alles anzeigen
Damit speichere ich die Frakcars ab die nicht mit Befehl geparkt wurden.
stock SaveFrakFahrzeuge(playerid)
{
new vID = GetPlayerVehicleID(playerid);
for(new id; id<sizeof(FrakFahrzeugInfo); id++)
{
if(FrakFahrzeugInfo[id][frakfahrzeug_Erstellt])
{
if(CharacterInfo[playerid][character_Fraktion] != FrakFahrzeugInfo[id][frakfahrzeug_Fraktion])continue; /*SendFehler(playerid, "Du bist nicht in der richtigen Fraktion");*/
if(vID != FrakFahrzeugInfo[id][frakfahrzeug_VehicleID])continue;
if(GetPVarInt(id,"parkfrakcar") == 0)
{
GetVehiclePos(vID, FrakFahrzeugInfo[id][frakfahrzeug_Spawn][0], FrakFahrzeugInfo[id][frakfahrzeug_Spawn][1], FrakFahrzeugInfo[id][frakfahrzeug_Spawn][2]);
GetVehicleZAngle(vID, FrakFahrzeugInfo[id][frakfahrzeug_Spawn][3]);
new query[200];
format(query,sizeof(query),"UPDATE `fraktionfahrzeuge` SET `x` = '%f',`y` = '%f',`z` = '%f',`r` = '%f' WHERE `id` = '%d'",
FrakFahrzeugInfo[id][frakfahrzeug_Spawn][0],FrakFahrzeugInfo[id][frakfahrzeug_Spawn][1],FrakFahrzeugInfo[id][frakfahrzeug_Spawn][2],
FrakFahrzeugInfo[id][frakfahrzeug_Spawn][3],FrakFahrzeugInfo[id][frakfahrzeug_ID]);
mysql_tquery(handle,query);
}
}
}
return 1;
}
Alles anzeigen
Das steht beim Laden der FrakCars.
if(GetPVarInt(id,"parkfrakcar") == 1)
{
FrakFahrzeugInfo[id][frakfahrzeug_VehicleID] = CreateVehicle(FrakFahrzeugInfo[id][frakfahrzeug_ModelID], FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][0], FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][1], FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][2], FrakFahrzeugInfo[id][frakfahrzeug_SpawnPark][3], FrakFahrzeugInfo[id][frakfahrzeug_Farbe][0], FrakFahrzeugInfo[id][frakfahrzeug_Farbe][1], -1, 1);
}
if(GetPVarInt(id,"parkfrakcar") == 0)
{
FrakFahrzeugInfo[id][frakfahrzeug_VehicleID] = CreateVehicle(FrakFahrzeugInfo[id][frakfahrzeug_ModelID], FrakFahrzeugInfo[id][frakfahrzeug_Spawn][0], FrakFahrzeugInfo[id][frakfahrzeug_Spawn][1], FrakFahrzeugInfo[id][frakfahrzeug_Spawn][2], FrakFahrzeugInfo[id][frakfahrzeug_Spawn][3], FrakFahrzeugInfo[id][frakfahrzeug_Farbe][0], FrakFahrzeugInfo[id][frakfahrzeug_Farbe][1], -1, 1);
}
Bei ResetPlayerVars steht das SaveFrakFahrzeuge drin, das ResetPlayerVars wird bei onplayerdisconnect aufgerufen.
Was muss ich ändern, damit das mit Befehl geparkte Fahrzeug auch dort respawnt wo ich es mit Befehl geparkt habe und nicht dort wo ich stand als der Server restartet hat?