Poste bitte mal deine KillFrakCar Funktion, sowie die GetVehicleName Funktion.
Beiträge von Jeffry
-
-
Du fügst das Query nirgends zusammen.
Schreibe es so:
stock SavePlayer(playerid)
{
if(!IsPlayerConnected(playerid) || IsPlayerNPC(playerid))return 0;
new query[1500], sname[MAX_PLAYER_NAME];
GetPlayerName(playerid,sname,sizeof(sname));
PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid), PlayerInfo[playerid][pLevel] = GetPlayerScore(playerid);
format(query,sizeof query,"UPDATE `spieler` SET `Level`='%d', `Admin`='%d', `DonateRank`='%d', `Reg`='%d', `Sex`='%d', `Age`='%d', `Origin`='%d', `CK`='%d', `Muted`='%d', `Exp`='%d' , `Cash`='%d', `Account`='%d', `Crimes`='%d'",
PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][pReg],PlayerInfo[playerid][pSex],PlayerInfo[playerid][pAge],PlayerInfo[playerid][pOrigin],PlayerInfo[playerid][pCK],PlayerInfo[playerid][pMuted],PlayerInfo[playerid][pExp],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pAccount],PlayerInfo[playerid][pCrimes]);
format(query,sizeof query,"%s,`Arrested`='%d', `WantedDeaths`='%d', `PhoneBook`='%d', `LottoNr`='%d', `Job`='%d', `PayCheck`='%d'",
query,PlayerInfo[playerid][pArrested],PlayerInfo[playerid][pWantedDeaths],PlayerInfo[playerid][pPhoneBook],PlayerInfo[playerid][pLottoNr],PlayerInfo[playerid][pJob],PlayerInfo[playerid][pPayCheck]);
format(query,sizeof query,"%s,`HeadValue`='%d',`Jailed`='%d',`JailTime`='%d',`GangJailed`='%d',`Mauled`='%d',`Mats`='%d',`Drugs`='%d',`Leader`='%d',`Member`='%d',`FMember`='%d',`Rank`='%d',`Health`='%.2f',`SHealth`='%.2f'",
query,PlayerInfo[playerid][pHeadValue],PlayerInfo[playerid][pJailed],PlayerInfo[playerid][pJailTime],PlayerInfo[playerid][pGangJailed],PlayerInfo[playerid][pMauled],PlayerInfo[playerid][pMats],PlayerInfo[playerid][pDrugs],PlayerInfo[playerid][pLeader],PlayerInfo[playerid][pMember],PlayerInfo[playerid][pFMember],PlayerInfo[playerid][pRank],PlayerInfo[playerid][pHealth],PlayerInfo[playerid][pSHealth]);
format(query,sizeof query,"%s,`Int`='%d',`Local`='%d',`Team`='%d',`Model`='%d',`Pnumber`='%d'",
query,PlayerInfo[playerid][pInt],PlayerInfo[playerid][pLocal],PlayerInfo[playerid][pTeam],PlayerInfo[playerid][pModel],PlayerInfo[playerid][pPnumber]),
format(query,sizeof query,"%s,`Phousekey`='%d',`Pbiskey`='%d',`CarLic`='%d',`NewLic`='%d',`FlyLic`='%d',`Pos_x`='%.4f',`Pos_y`='%.4f',`Pos_z`='%.4f',`BoatLic`='%d',`FishLic`='%d',`GunLic`='%d',`LKWLic`='%d',`RollerLic`='%d',`MotoLic`='%d',`Zig`='%d',`ZigSucht`='%d'",
query,PlayerInfo[playerid][pPhousekey],PlayerInfo[playerid][pPbiskey],PlayerInfo[playerid][pCarLic],PlayerInfo[playerid][pNewLic],PlayerInfo[playerid][pFlyLic],PlayerInfo[playerid][pPos_x],PlayerInfo[playerid][pPos_y],PlayerInfo[playerid][pPos_z],PlayerInfo[playerid][pBoatLic],PlayerInfo[playerid][pFishLic],PlayerInfo[playerid][pGunLic],PlayerInfo[playerid][pLKWLic],PlayerInfo[playerid][pRollerLic],PlayerInfo[playerid][pMotoLic],PlayerInfo[playerid][pZig],PlayerInfo[playerid][pZigSucht]);
format(query,sizeof query,"%s,`Mulltime`='%d',`PayDay`='%d',`PayDayHad`='%d',`AlcoholPerk`='%d',`Warns`='%d',`Adjustable`='%d',`Fuel`='%d',`Married`='%d',`MarriedTo`='%s',`InvDrugs`='%d'",
query,PlayerInfo[playerid][pMulltime],PlayerInfo[playerid][pPayDay],PlayerInfo[playerid][pPayDayHad],PlayerInfo[playerid][pAlcoholPerk],PlayerInfo[playerid][pWarns],PlayerInfo[playerid][pAdjustable],PlayerInfo[playerid][pFuel],PlayerInfo[playerid][pMarried],PlayerInfo[playerid][pMarriedTo],PlayerInfo[playerid][pInvDrugs]);
format(query,sizeof query,"%s,`InvMats`='%d',`Roadblock`='%d',`PlayMinutes`='%d',`GesamtMinutes`='%d',`MinutesSinceLogin`='%d',`MinutesSinceAn`='%d'",
query,PlayerInfo[playerid][pInvMats],PlayerInfo[playerid][pRoadblock],PlayerInfo[playerid][pPlayMinutes],PlayerInfo[playerid][pGesamtMinutes],PlayerInfo[playerid][pMinutesSinceLogin],PlayerInfo[playerid][pMinutesSinceAn]);
format(query,sizeof query,"%s,`HandyGeld`='%d',`HandyVer`='%d',`UhrID`='%d',`HandyID`='%d',`OwnPerso`='%d',`OwnAntrag`='%d',`PersoStop`='%d',`Gehalt`='%d',`FrakSperre`='%d',`BoxMats`='%d',`BoxDrugs`='%d',`Tot`='%d',`Meldung`='%d',`Ptankekey`='%d'",
query,PlayerInfo[playerid][pHandyGeld],PlayerInfo[playerid][pHandyVer],PlayerInfo[playerid][pUhrID],PlayerInfo[playerid][pHandyID],PlayerInfo[playerid][pOwnPerso],PlayerInfo[playerid][pOwnAntrag],PlayerInfo[playerid][pPersoStop],PlayerInfo[playerid][pGehalt],PlayerInfo[playerid][pFrakSperre],PlayerInfo[playerid][pBoxMats],PlayerInfo[playerid][pBoxDrugs],PlayerInfo[playerid][pTot],PlayerInfo[playerid][pMeldung],PlayerInfo[playerid][pPtankekey]);
format(query,sizeof query,"%s,`Gesperrt`='%d',`Contract`='%d',`Notruf`='%d',`Navi`='%d',`Skin`='%d',`Sprengstoff`='%d',`Hotel`='%d',`TutorialLevel`='%d',`Wohnung`='%d',`JobGehalt`='%d',`BusSkill`='%d' WHERE `Name`='%s'",
query,PlayerInfo[playerid][pGesperrt],PlayerInfo[playerid][pContract],PlayerInfo[playerid][pNotruf],PlayerInfo[playerid][pNavi],PlayerInfo[playerid][pSkin],PlayerInfo[playerid][pSprengstoff],PlayerInfo[playerid][pHotel],PlayerInfo[playerid][pTutorialLevel],PlayerInfo[playerid][pWohnung],PlayerInfo[playerid][pJobGehalt],PlayerInfo[playerid][pBusSkill],sname);
printf("Die Speicherung für %s wurde aufgerufen!",sname),print(query);
mysql_query(query);
strdel(query,0,sizeof(query));
return 1;
}Wenn es nicht geht, poste bitte den Log und den print der kommt.
-
Im Ansatz schonmal richtig, aber eine Kleinigkeit fehlt.
Schreibe es so:stock my_fread(File:f, str[], size = sizeof str, bool:pack = false)
{
if(f) return fread(f, str, size, pack);
else return 1;
}#if defined _HOOK_fread
#undef fread
#else
#define _HOOK_fread
#endif
#define fread my_fread -
Suche die Id hiervon:
Objekt ID: 19197 / 19198 -
Schau mal, das ist nicht die gleiche Meldung. Jetzt ist es fclose.

Also, das hier auch einfügen:
stock my_fclose(File:f)
{
if(f) return fclose(f);
else return 1;
}#if defined _HOOK_fclose
#undef fclose
#else
#define _HOOK_fclose
#endif
#define fclose my_fcloseEinfach nach dem anderen eingefügten Code einfügen. Das macht genau das gleiche, nur eben für fclose.
EDIT:
DeaN Hunter: Alles klar, sag dann Bescheid. Danke
-
Ok.
Dann teste es mal so:
ocmd:enter(playerid,params[])
{
if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
for(new i=0; i<sizeof(bdInfo); i++)
{
print("DEBUG: bdInfo wurde aufgerufen");
printf("IsPlayerInRangeOfPoint(playerid,2,bdInfo[%i][bd_x],bdInfo[%i][bd_y],bdInfo[%i][bd_z]",i,i,i);
if(!IsPlayerInRangeOfPoint(playerid,2,bdInfo[i][bd_x],bdInfo[i][bd_y],bdInfo[i][bd_z]))continue;
SetPVarInt(playerid,"EnterBuiID",i);
new b = bdInfo[i][bdID];
for(new x = 0; x < sizeof(bsInfo); x++)
{
printf("b_id von %d: %d", x, bsInfo[x][b_id]);
if(bsInfo[x][b_id] == b)
{
b = x;
break;
}
}
printf("BusinessID: %i | ShopID: %i | Produkte %i",b,bsInfo[b][b_id],bsInfo[b][b_prods]);
if(bsInfo[b][b_prods] < 1)return SCM(playerid,COLOR_GRAU,"Das Lager vom Business ist zurzeit Leer.");
SetPlayerPos(playerid,bsInfo[b][ib_x],bsInfo[b][ib_y],bsInfo[b][ib_z]);
SetPlayerInterior(playerid,bsInfo[b][b_interior]);
SetPlayerVirtualWorld(playerid,b);
return 1;
}
for(new i=0; i<sizeof(hInfo); i++)
{
if(!hInfo[i][db_id])continue;
if(hInfo[i][i_x] == 0.0)continue;
if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][hx],hInfo[i][hy],hInfo[i][hz]))continue;
if(hInfo[i][h_lock] == 1)
{
if(!strcmp(hInfo[i][h_besitzer],SpielerName(playerid),true))
{
SetPlayerPos(playerid,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]);
SetPlayerInterior(playerid,hInfo[i][h_interior]);
SetPlayerVirtualWorld(playerid,i);
return 1;
}
return GameTextForPlayer(playerid,"~r~Abgeschlossen",1000,1);
}
else if(hInfo[i][h_lock] == 0)
{
SetPlayerPos(playerid,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]);
SetPlayerInterior(playerid,hInfo[i][h_interior]);
SetPlayerVirtualWorld(playerid,i);
}
return 1;
}
return 1;
} -
-
Alternativ könntest du deinen Code debuggen und schauen wie weit es geprintet wird.
Oder du lässt dir mal, falls es hier geht, die Zeilen mit crashdetect ausgeben: http://forum.sa-mp.com/showpost.php?p=1253632&postcount=7Wieso hast du denn jetzt plötzlich darin Fehler? Hast du den stock von mir da drin eingefügt? Du sollst es wirklich nur im Roleplay.pwn einfügen, sonst nirgends.
-
Haha

Also, damit keine Fehler passieren:
stock my_fwrite(File:f, str[])
{
if(f) return fwrite(f, str);
else return 1;
}#if defined _HOOK_fwrite
#undef fwrite
#else
#define _HOOK_fwrite
#endif
#define fwrite my_fwriteDas einfach in deinem Gamemode unter den #include's einfügen. Dann geht es.
-
Füge unter deinen Includes das hier ein:
new PDCars[30]; -
Nein, du sollst es einfach unter den Includes in deinem Gamemode einfügen.
Also einfach
#include <a_samp>
#include <alle anderen...>//Hier einfügen
-
Kannst du das bitte richtig posten, sodass nicht alles in einer Zeile steht?
Nutze dafür den Quellcode Reiter über der Schriftart. -
Was?

Ich kann das bei mir ohne Probleme kompilieren, es funktioniert auch. Ich habe es selbst mal verwendet um einen Fehler zu verhindern, bis ich ihn gefunden hatte.
Kannst es ja auch mal so schreiben:
stock my_fwrite(File: handle, const string[])
{
if(handle) return fwrite(handle, string);
else return 1;
}Der Hook bleibt gleich. Geht es dann?
-
Ok, dann teste es mal so:
ocmd:enter(playerid,params[])
{
if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
for(new i=0; i<sizeof(bdInfo); i++)
{
print("DEBUG: bdInfo wurde aufgerufen");
printf("IsPlayerInRangeOfPoint(playerid,2,bdInfo[%i][bd_x],bdInfo[%i][bd_y],bdInfo[%i][bd_z]",i,i,i);
if(!IsPlayerInRangeOfPoint(playerid,2,bdInfo[i][bd_x],bdInfo[i][bd_y],bdInfo[i][bd_z]))continue;
SetPVarInt(playerid,"EnterBuiID",i);
new b = bdInfo[i][bdID];
printf("BusinessID: %i | ShopID: %i | Produkte %i",b,bsInfo[b][b_id],bsInfo[b][b_prods]);
if(bsInfo[b][b_prods] < 1)return SCM(playerid,COLOR_GRAU,"Das Lager vom Business ist zurzeit Leer.");
SetPlayerPos(playerid,bsInfo[b][ib_x],bsInfo[b][ib_y],bsInfo[b][ib_z]);
SetPlayerInterior(playerid,bsInfo[b][b_interior]);
SetPlayerVirtualWorld(playerid,b);
return 1;
}
for(new i=0; i<sizeof(hInfo); i++)
{
if(!hInfo[i][db_id])continue;
if(hInfo[i][i_x] == 0.0)continue;
if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][hx],hInfo[i][hy],hInfo[i][hz]))continue;
if(hInfo[i][h_lock] == 1)
{
if(!strcmp(hInfo[i][h_besitzer],SpielerName(playerid),true))
{
SetPlayerPos(playerid,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]);
SetPlayerInterior(playerid,hInfo[i][h_interior]);
SetPlayerVirtualWorld(playerid,i);
return 1;
}
return GameTextForPlayer(playerid,"~r~Abgeschlossen",1000,1);
}
else if(hInfo[i][h_lock] == 0)
{
SetPlayerPos(playerid,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]);
SetPlayerInterior(playerid,hInfo[i][h_interior]);
SetPlayerVirtualWorld(playerid,i);
}
return 1;
}
return 1;
}Wenn es nicht geht, was sagt der Log?
-
Wie sieht der Code aus?
-
Das weiß ich nicht, daher die Funktion, die fängt das ab.
-
fwrite ()
Du versuchst in eine Datei zu schreiben die nicht existiert.Füge das unter den Includes ein, dann sollte das Problem nicht mehr auftreten:
stock my_fwrite(File:f, str[])
{
if(f) return fwrite(f, str);
else return 1;
}#if defined _HOOK_fwrite
#undef fwrite
#else
#define _HOOK_fwrite
#endif
#define fwrite my_fwrite -
Füge mal das crashdetect Plugin ein und poste dann den Server Log.
-
Dann liegt es vielleicht da dran, dass den Code eine alte Version haben will. Nutze mal die hier:
http://forum.sa-mp.com/showthread.php?t=120013 -
Nein, das kann ich dir nicht sagen, da ich deinen Code nicht erraten kann.
So wie du ein "pLevel" hast, hast du doch sicher auch irgendwas in der Art "pRespekt", oder nicht? Poste ggf. mal das enum, das zur Variable Spieler gehört.