Tut mir leid wenn ich mich evtl etwas dumm anstelle, aber ich werde aus dem Wikieintrag nicht ganz schlau...
http://wiki.sa-mp.com/wiki/MySQL#mysql_fetch_row_format
//Edit: Habs jetzt doch alleine hinbekommen
Tut mir leid wenn ich mich evtl etwas dumm anstelle, aber ich werde aus dem Wikieintrag nicht ganz schlau...
http://wiki.sa-mp.com/wiki/MySQL#mysql_fetch_row_format
//Edit: Habs jetzt doch alleine hinbekommen
Hallo,
mein Problem ist, dass ich gerade versuche meinen Server auf MySQL umzustellen.
Das einzige Problem ist, wie der Titel bereits sagt ab dem Befehl mysql_get_field() der Server abstürtzt.
PAWN-Code:
public OnPlayerConnect(playerid)
{
if(IsPlayerNPC(playerid))return 1;
new query[512], data[512];
format(query, sizeof(query), "SELECT * FROM `user` WHERE `name` = '%s'", SpielerName(playerid));
mysql_query(query);
mysql_store_result();
if(mysql_num_rows() == 0) Kick(playerid);
mysql_get_field("banned", data); // Hier ist Zeile 406, welche Crashdetect auch angibt(glaube ich) ==> [15:33:54] [debug] #1 0000896c in public OnPlayerConnect (playerid=0) at free.p:407
printf("nach get field");
if(strval(data) == 1)
{
new dialog_text[1024], msg[256], Name[256], Grund[256], Zeit[256], Dauer[256];
mysql_get_field("ban_admin", data);
format(Name, sizeof(Name), "%s", data);
mysql_get_field("ban_grund", data);
format(Grund, sizeof(Grund), "%s", data);
mysql_get_field("ban_zeit", data);
format(Zeit, sizeof(Zeit), "%s", data);
mysql_get_field("ban_dauer", data);
format(Dauer, sizeof(Dauer), "%s", data);
mysql_free_result();
format(msg, sizeof(msg), "{FFFFFF}Admin: {AAAAAA}%s\n{FFFFFF}Grund: {AAAAAA}%s\n{FFFFFF}Zeitpunkt: {AAAAAA}%s\n{FFFFFF}Dauer: {AAAAAA}%s", Name, Grund, Zeit, Dauer);
format(dialog_text, sizeof(dialog_text), "{FFFFFF}Dein Account {EA1616}%s{FFFFFF} ist auf diesem Server gesperrt!\nEtwas weiter unten findest du alle wichtigen Informationen über deine Accountsperre.\nWenn du meinst, dass dein Account zu Unrecht gebannt wurde, wende dich bitte an einen Administrator. \n\n%s", SpielerName(playerid), msg);
ShowPlayerDialog(playerid, DIALOG_BAN, DIALOG_STYLE_MSGBOX, "LPFreaks11 Freeroam - Account gesperrt!", dialog_text, "Schließen", "");
SetTimerEx("KickPlayer", 1000, 0, "i", playerid);
return 1;
}
MySQL Debug Datei:
[15:33:32] ---------------------------
[15:33:32] MySQL Debugging activated (05/18/13)
[15:33:32] ---------------------------
[15:33:32]
[15:33:32] >> mysql_connect( )
[15:33:32] CMySQLHandler::CMySQLHandler() - constructor called.
[15:33:32] CMySQLHandler::CMySQLHandler() - Connecting to "localhost" | DB: "samp2637_server" | Username: "samp2637" ...
[15:33:32] CMySQLHandler::Connect() - Connection was successful.
[15:33:32] CMySQLHandler::Connect() - Auto-Reconnect has been enabled.
[15:33:54] >> mysql_real_escape_string( Connection handle: 1 )
[15:33:54] CMySQLHandler::EscapeString(Andre); - Escaped 5 characters to Andre.
[15:33:54] >> mysql_query( Connection handle: 1 )
[15:33:54] CMySQLHandler::Query(SELECT * FROM `user` WHERE `name` = 'Andre') - Successfully executed.
[15:33:54] >> mysql_store_result( Connection handle: 1 )
[15:33:54] CMySQLHandler::StoreResult() - Result was stored.
[15:33:54] >> mysql_num_rows( Connection handle: 1 )
[15:33:54] CMySQLHandler::NumRows() - Returned 1 row(s)
[15:33:54] >> mysql_fetch_field_row( Connection handle: 1 )
Alles anzeigen
Und auchnoch der Serverlog mit Crashdetect...
SA-MP Dedicated Server
----------------------
v0.3x, (C)2005-2013 SA-MP Team
[15:33:32]
[15:33:32] Server Plugins
[15:33:32] --------------
[15:33:32] Loading plugin: crashdetect.so
[15:33:32] crashdetect v4.8.4 is OK.
[15:33:32] Loaded.
[15:33:32] Loading plugin: mysql_r6.so
[15:33:32]
> MySQL plugin R6 successfully loaded.
[15:33:32] Loaded.
[15:33:32] Loaded 2 plugins.
[15:33:32]
[15:33:32] Filterscripts
[15:33:32] ---------------
[15:33:32] Loading filterscript 'wbb_connect.amx'...
[15:33:32]
=== WBB_Connect: ===
WBB_Connect v. 2.0
was successfully loaded!
Copyright (c) by Hauke Marquardt
====================
[15:33:32] Loading filterscript 'Report-System.amx'...
[15:33:32]
[15:33:32]
[15:33:32] ========== Report-System by John.Parker ==========
[15:33:32] # #
[15:33:32] # Das Filterscript wurde erfolgreich geladen! #
[15:33:32] # #
[15:33:32] ==================================================
[15:33:32]
[15:33:32]
[15:33:32] Loaded 2 filterscripts.
[15:33:32]
----------------------------------
[15:33:32] FreeRoam by LPFreaks11
[15:33:32] ----------------------------------
[15:33:32] •••
[15:33:32] Number of vehicle models: 17
[15:33:32]
=== WBB_Connect: ===
WBB_Connect v. 2.0 successfully initialized
====================
[15:33:54] Incoming connection: 217.83.132.187:63261
[15:33:54] [join] Andre has joined the server (0:217.83.132.187)
[15:33:54] [debug] Server crashed while executing free.amx
[15:33:54] [debug] AMX backtrace:
[15:33:54] [debug] #0 native mysql_fetch_field_row () [f736de20] from mysql_r6.so
[15:33:54] [debug] #1 0000896c in public OnPlayerConnect (playerid=0) at free.p:407
[15:33:54] [debug] System backtrace:
[15:33:54] [debug] #0 f75240f3 in _ZN10StackTraceC1EPv () from plugins/crashdetect.so
[15:33:54] [debug] #1 f751bb61 in _ZN11crashdetect20PrintSystemBacktraceEPv () from plugins/crashdetect.so
[15:33:54] [debug] #2 f751e405 in _ZN11crashdetect15SystemExceptionEPv () from plugins/crashdetect.so
[15:33:54] [debug] #3 f7523c42 in ?? () from plugins/crashdetect.so
[15:33:54] [debug] #4 f77d6400 in ?? ()
[15:33:54] [debug] #5 f7368fe1 in _ZN13CMySQLHandler10FetchFieldESs () from plugins/mysql_r6.so
[15:33:54] [debug] #6 f736dea0 in _ZN7Natives23n_mysql_fetch_field_rowEP6tagAMXPi () from plugins/mysql_r6.so
[15:33:54] [debug] #7 08093c94 in ?? () from ./samp7777_2637
[15:33:54] [debug] #8 f751e9d5 in _ZN11crashdetect13DoAmxCallbackEiPiS0_ () from plugins/crashdetect.so
[15:33:54] [debug] #9 f75221ca in ?? () from plugins/crashdetect.so
[15:33:54] [debug] #10 f7526136 in amx_Exec () from plugins/crashdetect.so
[15:33:54] [debug] #11 f751e8b4 in _ZN11crashdetect9DoAmxExecEPii () from plugins/crashdetect.so
[15:33:54] [debug] #12 f7522203 in ?? () from plugins/crashdetect.so
[15:33:54] [debug] #13 080acdd9 in ?? () from ./samp7777_2637
[15:33:54] [debug] #14 080c4bdf in ?? () from ./samp7777_2637
[15:33:54] [debug] #15 080bbb9c in ?? () from ./samp7777_2637
[15:33:54] [debug] #16 08071ae8 in ?? () from ./samp7777_2637
[15:33:54] [debug] #17 08071be2 in ?? () from ./samp7777_2637
[15:33:54] [debug] #18 0807ba00 in ?? () from ./samp7777_2637
[15:33:54] [debug] #19 080b59ad in ?? () from ./samp7777_2637
[15:33:54] [debug] #20 080b5b42 in ?? () from ./samp7777_2637
[15:33:54] [debug] #21 080b1453 in ?? () from ./samp7777_2637
[15:33:54] [debug] #22 f7549ca6 in __libc_start_main () from /lib32/libc.so.6
[15:33:54] [debug] #23 0804b521 in ?? () from ./samp7777_2637
Alles anzeigen
PS: Ich kann selber auch PHP scripten und da verwende ich immer mysql_fetch_object()...
Link zum Plugin: Hier
(Ich verwendet Version R6.)
Dank, danke, danke!!!
Das Programm hat was gefunden, aber ich sehe da keinen Fehler...
MISSING BRACKET: The } bracket on line 34338 does not have a pair!
Und die Zeilen Dazu hier Zeile 171:
public CustomPickups()
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new string[256];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
GetPlayerPos(i, oldposx, oldposy, oldposz);
new tmpcar = GetPlayerVehicleID(i);
if(oldposx!=0.0 && oldposy!=0.0 && oldposz!=0.0)
{
for(new h = 0; h < sizeof(SBizzInfo); h++)
{
if(IsATruck(tmpcar) && IsPlayerInRangeOfPoint(i,10.0, SBizzInfo[h][sbEntranceX], SBizzInfo[h][sbEntranceY], SBizzInfo[h][sbEntranceZ]))
{
format(string, sizeof(string), "~w~%s~n~~r~Benoetigte Produkte~w~: %d~n~~y~Produktpreis: ~w~: $%d~n~~g~: ~w~Preis: $%d",SBizzInfo[h][sbMessage],(SBizzInfo[h][sbMaxProducts]-SBizzInfo[h][sbProducts]),SBizzInfo[h][sbPriceProd],SBizzInfo[h][sbTill]);
GameTextForPlayer(i, string, 5000, 3);
return 1;
}
if(IsPlayerInRangeOfPoint(i,3.0, SBizzInfo[h][sbEntranceX], SBizzInfo[h][sbEntranceY], SBizzInfo[h][sbEntranceZ]))
{
if(SBizzInfo[h][sbOwned] == 1)
{
format(string, sizeof(string), "~w~%s~w~~n~Inhaber: %s~n~Teilhaber: %s~n~Eintrittspreis: ~g~$%d ~w~Level : %d ~n~Benutze /enter zum betreten",SBizzInfo[h][sbMessage],SBizzInfo[h][sbOwner],SBizzInfo[h][sbExtortion],SBizzInfo[h][sbEntranceCost],SBizzInfo[h][sbLevelNeeded]);
}
else
{
format(string, sizeof(string), "~w~%s~w~~n~Dieses Business ist zu verkaufen~n~Preis ~g~$%d ~w~Level : %d ~n~Benutze /buybiz um das Biz zu kaufen",SBizzInfo[h][sbMessage],SBizzInfo[h][sbBuyPrice],SBizzInfo[h][sbLevelNeeded]);
}
GameTextForPlayer(i, string, 5000, 3);
return 1;
}
}
for(new h = 0; h < sizeof(HouseInfo); h++)
{
if(IsPlayerInRangeOfPoint(i,2.0, HouseInfo[h][hEntrancex], HouseInfo[h][hEntrancey], HouseInfo[h][hEntrancez]))
{
if(HouseInfo[h][hOwned] == 1)
{
if(HouseInfo[h][hRentabil] == 0)
{
format(string, sizeof(string), "~w~Dieses Haus gehoert: ~n~%s~n~Level : %d",HouseInfo[h][hOwner],HouseInfo[h][hLevel]);
}
else
{
format(string, sizeof(string), "~w~Dieses Haus gehoert: ~n~%s~n~Miete: $%d Level : %d~n~Benutze /einmieten, um ein Zimmer zu mieten",HouseInfo[h][hOwner],HouseInfo[h][hRent],HouseInfo[h][hLevel]);
}
GameTextForPlayer(i, string, 5000, 3);
return 1;
}
else
{
format(string, sizeof(string), "~w~Dieses Haus ist zu Verkaufen~n~Beschreibung: %s ~n~Preis: ~g~$%d~n~~w~ Level: %d~n~Benutze /kaufhaus um es zu kaufen",HouseInfo[h][hDiscription],HouseInfo[h][hValue],HouseInfo[h][hLevel]);
}
GameTextForPlayer(i, string, 5000, 3);
return 1;
}
}
for(new h = 0; h < sizeof(BizzInfo); h++)
{
if(IsATruck(tmpcar) && IsPlayerInRangeOfPoint(i,10.0, BizzInfo[h][bEntranceX], BizzInfo[h][bEntranceY], BizzInfo[h][bEntranceZ]))
{
format(string, sizeof(string), "~w~%s~n~~r~Benoetigte Produkte~w~: %d~n~~y~Produktpreis: ~w~: $%d~n~~g~Preis: ~w~: $%d",BizzInfo[h][bMessage],(BizzInfo[h][bMaxProducts]-BizzInfo[h][bProducts]),BizzInfo[h][bPriceProd],BizzInfo[h][bTill]);
GameTextForPlayer(i, string, 5000, 3);
return 1;
}
if(IsPlayerInRangeOfPoint(i,2.0, BizzInfo[h][bEntranceX], BizzInfo[h][bEntranceY], BizzInfo[h][bEntranceZ]))
{
if(BizzInfo[h][bOwned] == 1)
{
format(string, sizeof(string), "~w~%s~w~~n~Inhaber: %s~n~Teilhaber: %s~n~Eintrittspreis: ~g~$%d ~w~Level: %d ~n~Benutze /enter zum betreten",BizzInfo[h][bMessage],BizzInfo[h][bOwner],BizzInfo[h][bExtortion],BizzInfo[h][bEntranceCost],BizzInfo[h][bLevelNeeded]);
}
else
{
format(string, sizeof(string), "~w~%s~w~~n~Dieses Business ist zu verkaufen~n~Preis: ~g~$%d ~w~Level: %d ~n~Benutze /buybiz um das Biz zu kaufen",BizzInfo[h][bMessage],BizzInfo[h][bBuyPrice],BizzInfo[h][bLevelNeeded]);
}
GameTextForPlayer(i, string, 5000, 3);
return 1;
}
}
}
if(PlayerToPoint(3.0,i,1106.8654,-311.5620,73.9922))
{
if(OrderReady[i] > 0)
{
switch (OrderReady[i])
{
case 1:
{
GivePlayerWeapon(i, 24, 50); GivePlayerWeapon(i, 29, 500); GivePlayerWeapon(i, 25, 50); GivePlayerWeapon(i, 4, 1);
GivePlayerMoney(i, - 5000);
SendClientMessage(i, COLOR_LIGHTBLUE, "* Du hast dein bestelltes Paket aufgenommen.");
}
case 2:
{
GivePlayerWeapon(i, 24, 50); GivePlayerWeapon(i, 29, 500); GivePlayerWeapon(i, 25, 50); GivePlayerWeapon(i, 31, 500); GivePlayerWeapon(i, 4, 1);
GivePlayerMoney(i, - 6000);
SendClientMessage(i, COLOR_LIGHTBLUE, "* Du hast dein bestelltes Paket aufgenommen.");
}
case 3:
{
GivePlayerWeapon(i, 24, 50); GivePlayerWeapon(i, 29, 500); GivePlayerWeapon(i, 25, 50); GivePlayerWeapon(i, 30, 500); GivePlayerWeapon(i, 4, 1);
GivePlayerMoney(i, - 6000);
SendClientMessage(i, COLOR_LIGHTBLUE, "* Du hast dein bestelltes Paket aufgenommen.");
}
case 4:
{
GivePlayerWeapon(i, 24, 50); GivePlayerWeapon(i, 29, 500); GivePlayerWeapon(i, 25, 50); GivePlayerWeapon(i, 31, 500); GivePlayerWeapon(i, 4, 1); GivePlayerWeapon(i, 34, 20);
GivePlayerMoney(i, - 8000);
SendClientMessage(i, COLOR_LIGHTBLUE, "* Du hast dein bestelltes Paket aufgenommen.");
}
case 5:
{
GivePlayerWeapon(i, 24, 50); GivePlayerWeapon(i, 29, 500); GivePlayerWeapon(i, 25, 50); GivePlayerWeapon(i, 30, 500); GivePlayerWeapon(i, 4, 1); GivePlayerWeapon(i, 34, 20);
GivePlayerMoney(i, - 8000);
SendClientMessage(i, COLOR_LIGHTBLUE, "* Du hast dein bestelltes Paket aufgenommen.");
}
case 6:
{
GivePlayerWeapon(i, 24, 50); GivePlayerWeapon(i, 29, 500); GivePlayerWeapon(i, 25, 50); GivePlayerWeapon(i, 31, 500); GivePlayerWeapon(i, 4, 1); GivePlayerWeapon(i, 34, 20);
GivePlayerMoney(i, - 8500);
SendClientMessage(i, COLOR_LIGHTBLUE, "* Du hast dein bestelltes Paket aufgenommen.");
}
case 7:
{
GivePlayerWeapon(i, 24, 50); GivePlayerWeapon(i, 29, 500); GivePlayerWeapon(i, 25, 50); GivePlayerWeapon(i, 30, 500); GivePlayerWeapon(i, 4, 1); GivePlayerWeapon(i, 34, 20);
GivePlayerMoney(i, - 8500);
SendClientMessage(i, COLOR_LIGHTBLUE, "* Du hast dein bestelltes Paket aufgenommen.");
}
}
OrderReady[i] = 0;
}
}
else if (PlayerToPoint(3, i,1968.2108,-2183.2483,13.5469))
{
GameTextForPlayer(i, "~w~/pilotduty", 3000, 5);
}
else if (PlayerToPoint(3, i,-1543.9429,-441.2145,6.0000))
{
GameTextForPlayer(i, "~w~/pilotduty", 3000, 5);
}
else if (PlayerToPoint(3, i,1710.3821,1617.7876,10.0267))
{
GameTextForPlayer(i, "~w~/pilotduty", 3000, 5);
}
else if (PlayerToPoint(3, i,362.2523,173.7867,1008.3828))
{
GameTextForPlayer(i, "~w~/perso", 3000, 5);
}
else if (PlayerToPoint(3, i,1015.2818,-1557.7249,14.8594))
{
GameTextForPlayer(i, "~w~/jobs", 3000, 5);
}
else if (PlayerToPoint(3, i,1386.6113,-1011.2413,-11.8717))
{
GameTextForPlayer(i, "~w~/robbank", 3000, 5);
}
else if (PlayerToPoint(3, i,2127.7224,-2275.5686,20.6719))
{
GameTextForPlayer(i, "~w~/bombekaufen [$2000]", 3000, 5);
}
else if (PlayerToPoint(3, i,2144.0903,1636.4803,993.5761))
{
GameTextForPlayer(i, "~w~/ausrauben", 3000, 5);
}
else if (PlayerToPoint(6, i,362.2523,173.7867,1008.3828) || PlayerToPoint(6, i,1432.1356,-997.8254,1639.7911) || PlayerToPoint(6, i,1438.3418,-997.8278,1639.7911))
{
SendClientMessage(i,COLOR_WHITE,"Guten Tag, wie kann ich ihnen helfen?");
}
----> else if (PlayerToPoint(3, i,1713.9574,-1781.2777,13.6274)) // Zeile 38334
{
GameTextForPlayer(i, "~w~/arrest", 3000, 5);
}
else if (PlayerToPoint(3, i,1720.3134,-1793.5381,17.7050))
{
GameTextForPlayer(i, "~w~/hacken", 3000, 5);
}
else if (PlayerToPoint(6, i,1460.0698,-1567.2166,13.5469))
{
GameTextForPlayer(i, "~w~/parken", 3000, 5);
}
else if (PlayerToPoint(6, i,376.5046,-67.8453,1001.5151))
{
GameTextForPlayer(i, "~w~/essen", 3000, 5);
}
else if(PlayerToPoint(6.0, i, -2236.3406, 130.1587, 1035.414))
{
GameTextForPlayer(i, "~w~/technik", 3000, 5);
}
else if (PlayerToPoint(6, i,-2026.7048,-114.3421,1035.1719))
{
GameTextForPlayer(i, "~w~/autoschein", 3000, 5);
}
}
}
return 1;
}
Alles anzeigen
Das habe ich vllt. vergessen zu sagen... ich programmiere das ganze Script in PAWNO und genau der compiler schmiert mir dabei ab!
Die Sache mit Notepad war nur um die Klammern zu zählen, weil ich in einem Beitrag gelesen habe, dass das dazu führen kann und wie sich gezeigt hat ist genau das mein Problem...
Also, ich mache es mal kurz....
Ich habe ein 42k Godfather-Script. Ich habe schon sehr viel bearbeitet und es hat auch alles wunderbar funktioniert.
Nun habe ich aber irgendwo einen Fehler gemacht und eine einfache "}" oder "{" zu viel/zu wenig. (Notepadd++ --> Zeichen zählen lassen --> "{" = 9278 und "}" = 9279)
Das währe an sich ja kein Problem... F5 drücken und der Compiler sagt wo!
Naja, so einfach ist das leider nicht... Denn der Compiler schmiert bei der ganzen Sache einfach ab und da ich keine 2 Tage Zeit und Lust habe ALLE Klammern zu überprüfen wollte ich fragen, ob es eine Möglichkeit gibt andres herauszufinden wo der Fehler liegt.
ich würde mich riesig freuen, wenn ihr da ein Programm, etc. kennt, welches meine "Ansprüche" erfüllt.
MfG NotifierMan