Okay..
I get this error everytime i buy a vehicle.
Everytime i buy a vehicle it wont save the vehicle in my mysql table and it gives me a bug. Which says i got 1 vehicle but it dosent show the stats of the vehicle even its supposed to. I noticed in my user table in my mysql it saves the vehicle in the user table but not in the ownedvehicle table.
Код:
stock OnOwnedVehicleInsert(vehid) { VehicleInfo[vehid][carID] = cache_insert_id(); return 1; } stock OnPlayerBuyCar(playerid, vehid, model, color1, color2, slot, Float:ParkX, Float:ParkY, Float:ParkZ, Float:ParkA, plate[], owner[]) { //====================================================================================== format(query, sizeof(query), "INSERT INTO `ownedvehicles` (model, color1, color2, parkx, parky, parkz, parka, plate, owner, owned, slot) VALUES (%d, %d, %d, %f, %f, %f, %f, '%s', '%s', %d, %d)", model, color1, color2, ParkX, ParkY, ParkZ, ParkA, plate, owner, 1, slot); mysql_function_query(dbHandle, query, true, "OnOwnedVehicleInsert", "%d", vehid); //====================================================================================== format(query, sizeof(query), "UPDATE `ownedvehicles` SET `alarm` = %d, `lock` = %d, `immob` = %d, `insurances` = %d, `destroys` = %d, `gps` = %d, `fuel` = %d, `registered` = %d, `broken` = %d WHERE `owner` = '%s' AND `slot` = %d", 0, 0, 0, 2, 0, 0, 50, 1, 0, GetName(playerid), slot); mysql_function_query(dbHandle, query, false, "", ""); //====================================================================================== format(query, sizeof(query), "UPDATE `ownedvehicles` SET `weapons` = '%s' WHERE `owner` = '%s' AND `slot` = %d", "0=0|0=0|0=0|0=0|0=0|0=0|0=0|0=0|0=0|0=0", GetName(playerid),slot); mysql_function_query(dbHandle, query, false, "", ""); //====================================================================================== format(query, sizeof(query), "UPDATE `ownedvehicles` SET `comp0` = %d, `comp1` = %d, `comp2` = %d, `comp3` = %d, `comp4` = %d, `comp5` = %d, `comp6` = %d WHERE `owner` = '%s' AND `slot` = %d", 0, 0, 0, 0, 0, 0, 0, GetName(playerid), slot); mysql_function_query(dbHandle, query, false, "", ""); //===================================================================================== format(query, sizeof(query), "UPDATE `ownedvehicles` SET `comp7` = %d, `comp8` = %d, `comp9` = %d, `comp10` = %d, `comp11` = %d, `comp12` = %d, `comp13` = %d, `paintjob` = %d WHERE `owner` = '%s' AND `slot` = %d", 0, 0, 0, 0, 0, 0, 0, 3, GetName(playerid), slot); mysql_function_query(dbHandle, query, false, "", ""); //===================================================================================== format(query, sizeof(query), "UPDATE `ownedvehicles` SET `radio` = %d, `tickets` = '%s', `dupkey` = %d, `comps` = %d WHERE `owner` = '%s' AND `slot` = %d", 0, "0|0|0|0|0|0|0|0|0|0", VehicleInfo[vehid][carDupKey], 0, GetName(playerid), slot); mysql_function_query(dbHandle, query, false, "", ""); //===================================================================================== format(query, sizeof(query), "UPDATE `ownedvehicles` SET `drugs` = '%s' WHERE `owner` = '%s' AND `slot` = %d", "0=0|0=0|0=0|0=0|0=0|0=0|0=0|0=0|0=0|0=0|0=0|0=0|0=0|0=0|0=0|0=0|0=0|0=0|0=0|0=0", GetName(playerid), slot); mysql_function_query(dbHandle, query, false, "", ""); //===================================================================================== format(query, sizeof(query), "UPDATE `users` SET `vehicles` = %d WHERE `name` = '%s'", PlayerInfo[playerid][pVehicles], GetName(playerid)); mysql_function_query(dbHandle, query, false, "", ""); //====================================================================================== if(slot == 1) { format(query, sizeof(query), "UPDATE `users` SET `veh1` = '%s' WHERE `name` = '%s'", VehicleNames[model-400], GetName(playerid)); format(PlayerVehicle[playerid][pVeh1], 128, "%s", VehicleNames[model-400]); mysql_function_query(dbHandle, query, false, "", ""); } else if(slot == 2) { format(query, sizeof(query), "UPDATE `users` SET `veh2` = '%s' WHERE `name` = '%s'", VehicleNames[model-400], GetName(playerid)); format(PlayerVehicle[playerid][pVeh2], 128, "%s", VehicleNames[model-400]); mysql_function_query(dbHandle, query, false, "", ""); } else if(slot == 3) { format(query, sizeof(query), "UPDATE `users` SET `veh3` = '%s' WHERE `name` = '%s'", VehicleNames[model-400], GetName(playerid)); format(PlayerVehicle[playerid][pVeh3], 128, "%s", VehicleNames[model-400]); mysql_function_query(dbHandle, query, false, "", ""); } //====================================================================================== return 1; } stock UpdateVehicleStatus(playerid, vehicle) { new slot = PlayerInfo[playerid][pVehSlot]; VehicleStatus[playerid][slot][carAlarm] = VehicleInfo[vehicle][carAlarm]; VehicleStatus[playerid][slot][carLock] = VehicleInfo[vehicle][carLock]; VehicleStatus[playerid][slot][carImmob] = VehicleInfo[vehicle][carImmob]; VehicleStatus[playerid][slot][carInsurances] = VehicleInfo[vehicle][carInsurances]; VehicleStatus[playerid][slot][carDestroyed] = VehicleInfo[vehicle][carDestroyed]; VehicleStatus[playerid][slot][carGps] = VehicleInfo[vehicle][carGps]; return 1; }
Короче не работает данный вариант. mysql_log вылазит
[19:31:21] [ERROR] mysql_tquery - callback parameter count does not match format specifier length
forward OnPlayerAccountCheckAdmin(playerid, player_name[], targetid); public OnPlayerAccountCheckAdmin(playerid, player_name[], targetid) { new account_id, level, rip[16], lip[16], rdata[16], donat, game_time, game_yesterday, afk_today, afk_yesterday, cash, bank; if(player_name[0] == '') { account_id = cache_get_field_content_int(0, "IDacc"), level = cache_get_field_content_int(0, "level"), cache_get_field_content(0, "Rip", rip, 16), cache_get_field_content(0, "Lip", lip, 16), cache_get_field_content(0, "datereg", rdata, 16), game_time = cache_get_field_content_int(0, "InGameT"), game_yesterday = cache_get_field_content_int(0, "InGameDay"), afk_today = cache_get_field_content_int(0, "AFKDay"), afk_yesterday = cache_get_field_content_int(0, "InAFKDay"), cash = cache_get_field_content_int(0, "money"), bank = cache_get_field_content_int(0, "Bank"); static const fmt_str[] = "Номер аккаунта:tt%dn Уровень:ttt%dn IP адресс (регис.):t%sn IP адресс (послед.):t%sn Дата регистрации:t%sn Донат:ttt%dnn В игре сегодня:t%sn В игре вчера:t%sn AFK сегодня:t%sn AFK вчера:t%snn Наличные:t%dn Осн.банк счёт:t%dn"; new str[sizeof fmt_str + 700]; format(str, sizeof(str), fmt_str, account_id, level, rip, lip, rdata, donat, game_time, game_yesterday, afk_today, afk_yesterday, cash, bank); ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, player_name, str, "Закрыть", ""); format(query, sizeof(query), "[A][GET] %s[%i] просматривает данные игрока %s", Player[playerid][pName], playerid, player_name); SendAdminMessage(COLOR_GREY, query); } else { account_id = cache_get_field_content_int(0, "IDacc"), level = cache_get_field_content_int(0, "level"), cache_get_field_content(0, "Rip", rip, 16), cache_get_field_content(0, "Lip", lip, 16), cache_get_field_content(0, "datereg", rdata, 16), game_time = cache_get_field_content_int(0, "InGameT"), game_yesterday = cache_get_field_content_int(0, "InGameDay"), afk_today = cache_get_field_content_int(0, "AFKDay"), afk_yesterday = cache_get_field_content_int(0, "InAFKDay"), cash = cache_get_field_content_int(0, "money"), bank = cache_get_field_content_int(0, "Bank"); static const fmt_str[] = "Номер аккаунта:tt%dn Уровень:ttt%dn IP адресс (регис.):t%sn IP адресс (послед.):t%sn Дата регистрации:t%sn Донат:ttt%dnn В игре сегодня:t%sn В игре вчера:t%sn AFK сегодня:t%sn AFK вчера:t%snn Наличные:t%dn Осн.банк счёт:t%dn"; new str[sizeof fmt_str + 700]; format(str, sizeof(str), fmt_str, account_id, level, rip, lip, rdata, donat, game_time, game_yesterday, afk_today, afk_yesterday, cash, bank); ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, player_name, str, "Закрыть", ""); format(query, sizeof(query), "[A][GET] %s[%i] просматривает данные игрока %s", Player[playerid][pName], playerid, player_name); SendAdminMessage(COLOR_GREY, query); } return 1; }
CMD:get(playerid, params[]) { if(Player[playerid][pAdmin] < 2) return 0; new string[144], pname[25]; if(!sscanf(params, "s[25]", pname)) { format(string, sizeof string, "SELECT * FROM `accounts` WHERE `name` = '%s'", pname); mysql_function_query(connect_mysql, string, true, "OnPlayerAccountCheckAdmin", "ds[25]d", playerid, pname, 0); } else if(!sscanf(params, "d", strval(pname))) { format(string, sizeof string, "SELECT * FROM `accounts` WHERE `name` = '%d'", pname); mysql_function_query(connect_mysql, string, true, "OnPlayerAccountCheckAdmin", "ds[25]d", playerid, '', pname); } else return SendClientMessage(playerid, COLOR_GREY, "Используйте /get [ник игрока или номер аккаунта]"); return 1; }
Что не так?
-
16.09.2015, 00:11
#1
Пользователь
sscanf warning
Здравствуйте. Летят варнинги в логи сервера при каждом использовании:
Код HTML:
sscanf warning: Format specifier does not match parameter count.
Как исправить?
PHP код:
if(text[0] == '!')
{
strdel(text,0,1);
if(strlen(text) == 0) return 0;
new sid = -1;
if(sscanf(text,"p< >d{s}",sid)) return 0;
if(!IsPlayerConnected(sid)) return 0;
new bool:sfp = false;
for(new i = 0; i < strlen(text); i++)
{
if(!sfp)
{
if(text[i] == ' ')
{
sfp = true;
strdel(text,0,i+1);
i = 0;
}
}
else
{
if(text[i] == ' ')
{
strdel(text,0,i+1);
i--;
}
else break;
}
}
if(strlen(text) == 0) return 0;
new sn[32],tn[32],stext[144];
GetPlayerName(playerid,sn,32);
GetPlayerName(sid,tn,32);
format(stext,144,"%s [%d]: {ffffff}%s, %s",sn, playerid, tn, text);
SendClientMessageToAll(GetPlayerColor(playerid),stext);
return 0;
}
-
16.09.2015, 00:53
#2
#define
PHP код:
if(sscanf(text,"p< >d{s}",sid)) return 0;
При использовании sscanf нужно устанавливать размер массива.
То есть:
PHP код:
if(sscanf(text,"p< >d{s[32]}",sid)) return 0;
Skype: vitya.saveliev
-
16.09.2015, 00:58
#3
Пользователь
Не помогло..
PHP код:
[01:57:45] [chat] [_TranE_]: !0 тест
[01:57:45] sscanf warning: Format specifier does not match parameter count.
[01:57:48] [chat] [_TranE_]: !0 тест
[01:57:48] sscanf warning: Format specifier does not match parameter count.
[01:57:49] [chat] [_TranE_]: !0 тест
[01:57:49] sscanf warning: Format specifier does not match parameter count.
[01:57:49] [chat] [_TranE_]: !0 тест
[01:57:49] sscanf warning: Format specifier does not match parameter count.
-
16.09.2015, 01:09
#4
#define
Вгляделся в код, немного не понял что делает эта сис-ма.. Но
PHP код:
if(sscanf(text,"p< >d{s}",sid)) return 0;
Зачем тебе два параметра, если массив один?
sid — ID игрока?
Попробуй так..PHP код:
if(sscanf(text,"d",sid)) return 0;
Skype: vitya.saveliev
-
Пользователь сказал cпасибо:
-
16.09.2015, 01:18
#5
Пользователь
Сообщение от #Vito
Вгляделся в код, немного не понял что делает эта сис-ма.. Но
PHP код:
if(sscanf(text,"p< >d{s}",sid)) return 0;
Зачем тебе два параметра, если массив один?
sid — ID игрока?
Попробуй так..PHP код:
if(sscanf(text,"d",sid)) return 0;
Спасибо, помогло, с меня +. Тему можно закрывать.
-
ОШИБКА — [00:21:57 04/25/19] [ERROR] mysql_tquery — callback parameter count does not match format specifier length (Query: «SELECT * FROM accounts WHERE name = ‘Enique_Guddi'»)
-
format(query, sizeof(query), «SELECT * FROM «TABLE_ACCOUNT» WHERE name = ‘%s'»,PlayerInfo[playerid][pSendername]);
-
mysql_tquery(mysql, query, «GetPassword», «ds[100]», playerid,inputtext);
-
function GetPassword(playerid,inputtext[100])
-
{
-
if(cache_get_row_count(mysql)>0)
-
{
-
new pass[100];
-
cache_get_field_content(0, «password», pass, mysql);
-
if(!strcmp(MD5_Hash(inputtext),pass, true))
-
{
-
format(query, sizeof(query), «SELECT * FROM «TABLE_ACCOUNT» WHERE name = ‘%s'»,PlayerInfo[playerid][pSendername]);
-
mysql_tquery(mysql, query, «GetPos», «d», playerid);
-
}
-
else
-
{
-
new logtires = 3 — PlayerLogTries[playerid];
-
PlayerLogTries[playerid]++;
-
if(PlayerLogTries[playerid] == 4)
-
{
-
SendClientMessage(playerid,CLIGHTRED,»Введите «/q» для выхода с сервера»);
-
Kick(playerid, FIX_FUNCTION, 1200);
-
return true;
-
}
-
static const fmt_str[] = «{F85A5A}Вы ввели неправельный пароль. Осталось: %i попыток вводаnnПри подборе пароля Вы будете заблокированы!»;
-
new str1[sizeof(fmt_str)+1];
-
format(str1, sizeof(str1), fmt_str,logtires);
-
ShowPlayerDialog(playerid, 7, DIALOG_STYLE_MSGBOX, «Ошибка», str1, «Назад»,»»);
-
}
-
}
-
else Kick(playerid, FIX_FUNCTION, 1200);
-
return 1;
-
}
Здравствуйте , собственно проблема в следующем, при «вырезки» системы из мода столкнулся с проблемой в логе сервера.
Звучит она так:
sscanf warning: Format specifier does not match parameter count.
А вот «паблик» с сохранением:
public LoadVeh()
{
new rows, fields;
cache_get_data(rows, fields);
if(rows)
{
for(new idx = 1; idx <= rows; idx++)
{
VInfo[idx][id] = cache_get_field(idx-1, «id», MYSQL_CONNECT);
VInfo[idx][vmodel] = cache_get_field(idx-1, «model», MYSQL_CONNECT);
VInfo[idx][vx] = cache_get_field(idx-1, «x», MYSQL_CONNECT);
VInfo[idx][vy] = cache_get_field(idx-1, «y», MYSQL_CONNECT);
VInfo[idx][vz] = cache_get_field(idx-1, «z», MYSQL_CONNECT);
VInfo[idx][vfa] = cache_get_field(idx-1, «fa», MYSQL_CONNECT);
VInfo[idx][vcolor1] = cache_get_field(idx-1, «color1», MYSQL_CONNECT);
VInfo[idx][vcolor2] = cache_get_field(idx-1, «color2», MYSQL_CONNECT);
VInfo[idx][vname] = cache_get_field(idx-1, «name», MYSQL_CONNECT);
VInfo[idx][vcost] = cache_get_field(idx-1, «cost», MYSQL_CONNECT);
VInfo[idx][vx1] = cache_get_field(idx-1, «xx», MYSQL_CONNECT);
VInfo[idx][vy1] = cache_get_field(idx-1, «yy», MYSQL_CONNECT);
VInfo[idx][vz1] = cache_get_field(idx-1, «zz», MYSQL_CONNECT);
VInfo[idx][vfa1] = cache_get_field(idx-1, «fafa», MYSQL_CONNECT);
VInfo[idx][vtunings] = cache_get_field(idx-1, «tuning», MYSQL_CONNECT);
VInfo[idx][vto] = cache_get_field(idx-1, «to», MYSQL_CONNECT);
VInfo[idx][vsvet] = cache_get_field(idx-1, «svet», MYSQL_CONNECT);
TOTALV++;
sscanf(VInfo[idx][vtunings], «p<,>a<i>[17]»,VInfo[idx][vtunings]);
if(!strcmp(VInfo[idx][vname],»None»,true))
{
VInfo[idx][vcar] = CreateVehicle(VInfo[idx][vmodel], VInfo[idx][vx1], VInfo[idx][vy1], VInfo[idx][vz1], VInfo[idx][vfa1], VInfo[idx][vcolor1], VInfo[idx][vcolor2], 172800);
static const fmt_string2[] = «{f7ae11}%s{FFFFFF}nЦена: {f7ae11}$%i»;
new str2[sizeof(fmt_string2)+64+10];
format(str2, sizeof(str2), fmt_string2,VehicleNameS[VInfo[idx][vmodel]-400],VInfo[idx][vcost]);
CarLable[idx] = Create3DTextLabel( str2, -1, 0.0, 0.0, 0.0, 10.0, 0, 1 );
Attach3DTextLabelToVehicle(CarLable[idx], VInfo[idx][vcar], 0.0, 0.0, 1.0);
}
else
{
if(floatround(VInfo[idx][vx]) == 0) VInfo[idx][vcar] = CreateVehicle(VInfo[idx][vmodel], VInfo[idx][vx1], VInfo[idx][vy1], VInfo[idx][vz1], VInfo[idx][vfa1], VInfo[idx][vcolor1], VInfo[idx][vcolor2], 172800);
else VInfo[idx][vcar] = CreateVehicle(VInfo[idx][vmodel], VInfo[idx][vx], VInfo[idx][vy], VInfo[idx][vz], VInfo[idx][vfa], VInfo[idx][vcolor1], VInfo[idx][vcolor2], 172800);
SetVehicleToRespawn(VInfo[idx][vcar]);
}
}
}
printf(» [LOAD]: Успешная загрузка ‘LoadVeh1’ — загружено %d», TOTALV);
mysql_free_result();
return true;
}
Я в Pawno программирование недавно (2 дня) и не знаю как решить проблему , но знаю что проблема в том что
кол-во параметров не сходится с кол-вом переменных.
Если кто то поможет решить эту проблему я буду очень благодарен тому человеку.
- Remove From My Forums
-
Question
-
User2056586890 posted
Hello,
I need to read data from an excel file and then insert that data into a sql database table.
I am using the following code for this purpose:public class TestClass : Accounting
{
public ArrayList objlist = new ArrayList();
public void O2Ireland ()
{
}
public void Insert_Data()
{
string ExcelFile = «»;
StringCollection objStr = new StringCollection();
DataSet ds = new DataSet();
// DataRow dr = new DataRow ();
// SqlHelper objSqlHelper = new SqlHelper();try
{
// SqlCommand comand = new SqlCommand ();ExcelFile = System.Configuration.ConfigurationManager.AppSettings[«ExcelFilePath»];
ExcelManager.GetSheetsNames(ExcelFile, ref objStr);
//string qury = «Select * from [» + objStr[0] + «] WHERE GSM IS NOT NULL;»;
string qury = «Select GSM,[Data Nat#] from [» + objStr[0] + «] WHERE GSM IS NOT NULL;»;
ExcelManager.ExecuteDataSet(ExcelFile,qury, ref ds);
string conn = System.Configuration.ConfigurationManager.AppSettings[«O2IConnectionString»];
string sp = System.Configuration.ConfigurationManager.AppSettings[«add_Accounting»];
//string str = Convert.ToString(SqlHelper.ExecuteScalar(conn, sp,ds.Tables[0] ));
// if (myDataReader[«EmployeeAge»] != System.DBNull.Value)
// TestClass obj_test = new TestClass();
foreach (DataRow dr in ds.Tables[0].Rows)
{
//if (dr.IsNull())
//{TestClass obj_test = new TestClass();
obj_test.CallingNumber = dr[«GSM»].ToString();
// obj_test.Raddate = dr[«Call1»].ToString();
obj_test.TotalData = Convert.ToInt32(dr[«Data Nat#»]);objlist.Add(obj_test);
//}}
string str = Convert.ToString(SqlHelper.ExecuteScalar(conn, sp, objlist[0]));
// string str = Convert.ToString(SqlHelper.ExecuteScalar(conn, sp,obj_test.CallingNumber,obj_test.TotalData));
// ExcelManager.ExecuteDataSet(ExcelFile, «Select * from [» + objStr[0] + «]», ref ds);
}
catch (Exception ex)
{
System.Diagnostics.Trace.Write(ex.StackTrace);
}it gives me the following error:
Parameter count does not match Parameter Value count.
help me pls, to sort out this issue.
Regards,
junior