PDA

Просмотр полной версии : [Вопрос] Не сохраняет аккаунты.



Trane911
02.06.2014, 00:10
Всем привет. Столкнулся с такой проблемой.
Переменные из 1 запроса сохраняет. Переменные из 2 запроса тоже сохраняет, а вот из 3 запроса уже не сохраняет. Как исправить?


stock SaveAccount ( playerid )
{
new float: health;
new float: armour;
GetPlayerHealth(playerid, Float:health);
GetPlayerArmour(playerid, Float:armour);
GetPlayerPos(playerid, PlayerInfo[playerid][pCurrentPos][0], PlayerInfo[playerid][pCurrentPos][1], PlayerInfo[playerid][pCurrentPos][2]);
new query [ 500 ] ;
format ( query, sizeof(query), "UPDATE `users` SET `Age` = '%d',\
`pAdmin` = '%d',\
`pLvL` = '%d',\
`pExp` = '%d',\
`pVirus` = '%d',\
`pZombie` = '%d',\
'pLeader' = '%d',\
`pMember` = '%d',\
`pStatus` = '%d',\
`pZLvL` = '%d',\
`pRep` = '%d',\
'pClLeader' = '%d',\
`pClMember` = '%d',\
`pClSkin` = '%d',\
`pSkin` = '%d',\
`pZSkin` = '%d',\
`pHp` = '%f', \
`pArmour` = '%f',\
`pZaraza` = '%d'\
WHERE `id` = '%d' LIMIT 1",
PlayerInfo [ playerid ] [ Age ],
PlayerInfo [ playerid ] [ pAdmin ],
PlayerInfo [ playerid ] [ pLvL ],
PlayerInfo [ playerid ] [ pExp ],
PlayerInfo [ playerid ] [ pVirus ],
PlayerInfo [ playerid ] [ pZombie ],
PlayerInfo [ playerid ] [ pLeader ],
PlayerInfo [ playerid ] [ pMember ],
PlayerInfo [ playerid ] [ pStatus ],
PlayerInfo [ playerid ] [ pZLvL ],
PlayerInfo [ playerid ] [ pRep ],
PlayerInfo [ playerid ] [ pClLeader ],
PlayerInfo [ playerid ] [ pClMember ],
PlayerInfo [ playerid ] [ pClSkin ],
PlayerInfo [ playerid ] [ pSkin ],
PlayerInfo [ playerid ] [ pZSkin ],
PlayerInfo [ playerid ] [ pHp ],
PlayerInfo [ playerid ] [ pArmour ],
PlayerInfo [ playerid ] [ pZaraza ],
PlayerInfo [ playerid ] [ ID ]) ;
mysql_function_query ( dbHandle, query, false, "", "" ) ;
for (new i = 0; i < 13; i++)
GetPlayerWeaponData(playerid, i, weapons[i][0], weapons[i][1]);
format ( query, sizeof(query), "UPDATE `users` SET \
`gun0` = '%d', `ammo0` = '%d',\
`gun1` = '%d', `ammo1` = '%d',\
`gun2` = '%d', `ammo2` = '%d',\
`gun3` = '%d', `ammo3` = '%d',\
`gun4` = '%d', `ammo4` = '%d',\
`gun5` = '%d', `ammo5` = '%d',\
`gun6` = '%d', `ammo6` = '%d',\
`gun7` = '%d', `ammo7` = '%d',\
`gun8` = '%d', `ammo8` = '%d',\
`gun9` = '%d', `ammo9` = '%d',\
`gun10` = '%d', `ammo10` = '%d',\
`gun11` = '%d', `ammo11` = '%d',\
`gun12` = '%d', `ammo12` = '%d'\
WHERE `id` = '%d' LIMIT 1",
weapons[0][0],
weapons[0][1],
weapons[1][0],
weapons[1][1],
weapons[2][0],
weapons[2][1],
weapons[3][0],
weapons[3][1],
weapons[4][0],
weapons[4][1],
weapons[5][0],
weapons[5][1],
weapons[6][0],
weapons[6][1],
weapons[7][0],
weapons[7][1],
weapons[8][0],
weapons[8][1],
weapons[9][0],
weapons[9][1],
weapons[10][0],
weapons[10][1],
weapons[11][0],
weapons[11][1],
weapons[12][0],
weapons[12][1],
PlayerInfo [ playerid ] [ ID ]) ;
mysql_function_query ( dbHandle, query, false, "", "" ) ;
format ( query, sizeof(query), "UPDATE `users` SET pVIP = '%d', \
`pZExp` = '%d',\
`pTWD` = '%d,'\
`Pos_x` = '%f',\
`Pos_y` = '%f',\
`Pos_z` = '%f',\
`pSex` = '%d'\
WHERE `id` = '%d' LIMIT 1",
PlayerInfo [ playerid ] [ pVIP],
PlayerInfo [ playerid ] [ pZExp],
PlayerInfo [ playerid ] [ pTWD ],
PlayerInfo [ playerid ] [ pCurrentPos ] [ 0 ],
PlayerInfo [ playerid ] [ pCurrentPos ] [ 1 ],
PlayerInfo [ playerid ] [ pCurrentPos ] [ 2 ],
PlayerInfo [ playerid ] [ pSex ],
PlayerInfo [ playerid ] [ ID ]) ;
mysql_function_query ( dbHandle, query, false, "", "" ) ;
return 1;
}

DeimoS
02.06.2014, 04:58
Смотреть логи MySQL, не?
И почему бы не сделать всё в 1 запрос?

underwoker
02.06.2014, 06:48
Размер массива маленький

new query [ 500 ] ;
Увеличь и проверь.

DeimoS
02.06.2014, 12:12
Размер массива маленький

new query [ 500 ] ;
Увеличь и проверь.

Третий запрос в разы меньше второго и первого. Массив тут не при чём.



Размер массива высчитайте самостоятельно, ибо я размера ваших ячеек не знаю

stock SaveAccount ( playerid )
{
new Float: health,
Float: armour,
query[/*Высчитать*/];

GetPlayerHealth(playerid, health);
GetPlayerArmour(playerid, armour);
GetPlayerPos(playerid, PlayerInfo[playerid][pCurrentPos][0], PlayerInfo[playerid][pCurrentPos][1], PlayerInfo[playerid][pCurrentPos][2]);
for (new i = 0; i < 13; i++) GetPlayerWeaponData(playerid, i, weapons[i][0], weapons[i][1]);

format(query, sizeof(query), "UPDATE `users` SET \
`Age` = '%d',\
`pAdmin` = '%d',\
`pLvL` = '%d',\
`pExp` = '%d',\
`pVirus` = '%d',\
`pZombie` = '%d',\
'pLeader' = '%d',\
`pMember` = '%d',\
`pStatus` = '%d',\
`pZLvL` = '%d',\
`pRep` = '%d',\
`pClLeader` = '%d',\
`pClMember` = '%d',\
`pClSkin` = '%d',\
`pSkin` = '%d',\
`pZSkin` = '%d',\
`pHp` = '%f', \
`pArmour` = '%f',\
`pZaraza` = '%d'",
PlayerInfo [ playerid ] [ Age ],
PlayerInfo [ playerid ] [ pAdmin ],
PlayerInfo [ playerid ] [ pLvL ],
PlayerInfo [ playerid ] [ pExp ],
PlayerInfo [ playerid ] [ pVirus ],
PlayerInfo [ playerid ] [ pZombie ],
PlayerInfo [ playerid ] [ pLeader ],
PlayerInfo [ playerid ] [ pMember ],
PlayerInfo [ playerid ] [ pStatus ],
PlayerInfo [ playerid ] [ pZLvL ],
PlayerInfo [ playerid ] [ pRep ],
PlayerInfo [ playerid ] [ pClLeader ],
PlayerInfo [ playerid ] [ pClMember ],
PlayerInfo [ playerid ] [ pClSkin ],
PlayerInfo [ playerid ] [ pSkin ],
PlayerInfo [ playerid ] [ pZSkin ],
PlayerInfo [ playerid ] [ pHp ],
PlayerInfo [ playerid ] [ pArmour ],
PlayerInfo [ playerid ] [ pZaraza ],
PlayerInfo [ playerid ] [ ID ]);

format(query, sizeof(query), "%s, \
`gun0` = '%d', `ammo0` = '%d',\
`gun1` = '%d', `ammo1` = '%d',\
`gun2` = '%d', `ammo2` = '%d',\
`gun3` = '%d', `ammo3` = '%d',\
`gun4` = '%d', `ammo4` = '%d',\
`gun5` = '%d', `ammo5` = '%d',\
`gun6` = '%d', `ammo6` = '%d',\
`gun7` = '%d', `ammo7` = '%d',\
`gun8` = '%d', `ammo8` = '%d',\
`gun9` = '%d', `ammo9` = '%d',\
`gun10` = '%d', `ammo10` = '%d',\
`gun11` = '%d', `ammo11` = '%d',\
`gun12` = '%d', `ammo12` = '%d'",query
weapons[0][0],
weapons[0][1],
weapons[1][0],
weapons[1][1],
weapons[2][0],
weapons[2][1],
weapons[3][0],
weapons[3][1],
weapons[4][0],
weapons[4][1],
weapons[5][0],
weapons[5][1],
weapons[6][0],
weapons[6][1],
weapons[7][0],
weapons[7][1],
weapons[8][0],
weapons[8][1],
weapons[9][0],
weapons[9][1],
weapons[10][0],
weapons[10][1],
weapons[11][0],
weapons[11][1],
weapons[12][0],
weapons[12][1]);
format (query, sizeof(query), "%s, \
`pVIP` = '%d', \
`pZExp` = '%d',\
`pTWD` = '%d,'\
`Pos_x` = '%f',\
`Pos_y` = '%f',\
`Pos_z` = '%f',\
`pSex` = '%d'\
WHERE `id` = '%d' LIMIT 1", query
PlayerInfo [ playerid ] [ pVIP],
PlayerInfo [ playerid ] [ pZExp],
PlayerInfo [ playerid ] [ pTWD ],
PlayerInfo [ playerid ] [ pCurrentPos ] [ 0 ],
PlayerInfo [ playerid ] [ pCurrentPos ] [ 1 ],
PlayerInfo [ playerid ] [ pCurrentPos ] [ 2 ],
PlayerInfo [ playerid ] [ pSex ],
PlayerInfo [ playerid ] [ ID ]);
mysql_function_query ( dbHandle, query, false, "", "" ) ;
return 1;
}

underwoker
02.06.2014, 12:36
Зачем так извращаться, strcat удобнее.

Trane911
02.06.2014, 15:30
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(208) : warning 217: loose indentation
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(243) : warning 217: loose indentation
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(243 -- 244) : error 001: expected token: ",", but found "-identifier-"
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244) : warning 217: loose indentation
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 245) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 246) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 247) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 248) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 249) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 250) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 251) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 252) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 253) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 254) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 255) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 256) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 257) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 258) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 259) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 260) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 261) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 262) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 263) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 264) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 265) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 266) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 267) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 268) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(244 -- 269) : warning 215: expression has no effect
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(269) : error 001: expected token: ";", but found ")"
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(269) : warning 217: loose indentation
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(269) : error 029: invalid expression, assumed zero
C:\Users\Ìàêñèì\Desktop\SAMP\Field Game\ñåðâåð\gamemodes\fgame.pwn(269) : fatal error 107: too many error messages on one line

DeimoS
02.06.2014, 16:18
Зачем так извращаться, strcat удобнее.

Эмм, и чем же? Строк больше, но смысл тот же. Просто непривычно... Но это не значит, что способ неудобен.




Автор, я дал лишь пример. Вы сами должны были подогнать код под себя. Ну хотя ладно, вот вам готовый код.

stock SaveAccount ( playerid )
{
new Float: health,
Float: armour,
query[/*Высчитать*/];

GetPlayerHealth(playerid, health);
GetPlayerArmour(playerid, armour);
GetPlayerPos(playerid, PlayerInfo[playerid][pCurrentPos][0], PlayerInfo[playerid][pCurrentPos][1], PlayerInfo[playerid][pCurrentPos][2]);
for (new i = 0; i < 13; i++) GetPlayerWeaponData(playerid, i, weapons[i][0], weapons[i][1]);

format(query, sizeof(query), "UPDATE `users` SET \
`Age` = '%d', `pAdmin` = '%d', `pLvL` = '%d', `pExp` = '%d',\
`pVirus` = '%d', `pZombie` = '%d', `pLeader` = '%d', `pMember` = '%d',\
`pStatus` = '%d', `pZLvL` = '%d', `pRep` = '%d', `pClLeader` = '%d',\
`pClMember` = '%d', `pClSkin` = '%d', `pSkin` = '%d', `pZSkin` = '%d',\
`pHp` = '%f', `pArmour` = '%f', `pZaraza` = '%d'",
PlayerInfo [ playerid ] [ Age ],
PlayerInfo [ playerid ] [ pAdmin ],
PlayerInfo [ playerid ] [ pLvL ],
PlayerInfo [ playerid ] [ pExp ],
PlayerInfo [ playerid ] [ pVirus ],
PlayerInfo [ playerid ] [ pZombie ],
PlayerInfo [ playerid ] [ pLeader ],
PlayerInfo [ playerid ] [ pMember ],
PlayerInfo [ playerid ] [ pStatus ],
PlayerInfo [ playerid ] [ pZLvL ],
PlayerInfo [ playerid ] [ pRep ],
PlayerInfo [ playerid ] [ pClLeader ],
PlayerInfo [ playerid ] [ pClMember ],
PlayerInfo [ playerid ] [ pClSkin ],
PlayerInfo [ playerid ] [ pSkin ],
PlayerInfo [ playerid ] [ pZSkin ],
PlayerInfo [ playerid ] [ pHp ],
PlayerInfo [ playerid ] [ pArmour ],
PlayerInfo [ playerid ] [ pZaraza ],
PlayerInfo [ playerid ] [ ID ]);

format(query, sizeof(query), "%s, \
`gun0` = '%d', `ammo0` = '%d',\
`gun1` = '%d', `ammo1` = '%d',\
`gun2` = '%d', `ammo2` = '%d',\
`gun3` = '%d', `ammo3` = '%d',\
`gun4` = '%d', `ammo4` = '%d',\
`gun5` = '%d', `ammo5` = '%d',\
`gun6` = '%d', `ammo6` = '%d',\
`gun7` = '%d', `ammo7` = '%d',\
`gun8` = '%d', `ammo8` = '%d',\
`gun9` = '%d', `ammo9` = '%d',\
`gun10` = '%d', `ammo10` = '%d',\
`gun11` = '%d', `ammo11` = '%d',\
`gun12` = '%d', `ammo12` = '%d'", query,
weapons[0][0], weapons[0][1],
weapons[1][0], weapons[1][1],
weapons[2][0], weapons[2][1],
weapons[3][0], weapons[3][1],
weapons[4][0], weapons[4][1],
weapons[5][0], weapons[5][1],
weapons[6][0], weapons[6][1],
weapons[7][0], weapons[7][1],
weapons[8][0], weapons[8][1],
weapons[9][0], weapons[9][1],
weapons[10][0], weapons[10][1],
weapons[11][0], weapons[11][1],
weapons[12][0], weapons[12][1]);

format (query, sizeof(query), "%s, \
`pVIP` = '%d', `pZExp` = '%d',\
`pTWD` = '%d,' `Pos_x` = '%f',\
`Pos_y` = '%f', `Pos_z` = '%f',\
`pSex` = '%d'\
WHERE `id` = '%d' LIMIT 1", query,
PlayerInfo [ playerid ] [ pVIP],
PlayerInfo [ playerid ] [ pZExp],
PlayerInfo [ playerid ] [ pTWD ],
PlayerInfo [ playerid ] [ pCurrentPos ] [ 0 ],
PlayerInfo [ playerid ] [ pCurrentPos ] [ 1 ],
PlayerInfo [ playerid ] [ pCurrentPos ] [ 2 ],
PlayerInfo [ playerid ] [ pSex ],
PlayerInfo [ playerid ] [ ID ]);
mysql_function_query ( dbHandle, query, false, "", "");
return 1;
}

Trane911
02.06.2014, 17:06
Теперь даже оружие не сохраняется.
Ничего не сохраняется.

DeimoS
02.06.2014, 17:56
Теперь даже оружие не сохраняется.
Ничего не сохраняется.

Так вы достаточно ячеек под запрос выделили хоть? -_- Запрос то длинный. Какое значение установили?

Trane911
02.06.2014, 18:31
2000

Vincent_Alonso
02.06.2014, 19:22
Посмотри в Базе Данных все значения.И в INSERT INTO всё хорошо пересмотри,на все ли столбцы есть значения.

DeimoS
02.06.2014, 20:41
После

mysql_function_query ( dbHandle, query, false, "", "");
поставьте

printf("\n\n%s\n\n",query);
и логи сюда (все пароли затрите только)

Trane911
02.06.2014, 21:41
Вроде решил эту проблему.
Просто взял старую версию регистрации и все, там все нормально. :wacko:

Trane911
02.06.2014, 23:00
Всем привет!
При регистрации. Когда игрок уже заспавнился, он почему-то тпшится на центр Грув Стрит и в руках либо бутылка, либо сигарета.
Если игрок умрет, то спавнится нормально, там где надо. Почему такое может быть?