PDA

Просмотр полной версии : [Вопрос] Оружие



GoJIoBoJIoMkA
24.09.2017, 12:16
Всем привет!
У меня вот такая проблема,покупаю оружие в магазине пользуюсь им как положено всё норм, НО, когда перезайду на сервер количество патронов удваивается, жесть ваще ...
Проверил как будет после смерти,умираю оружие пропадает все хорошо,но тут же перезахожу на сервер оно снова на руках,в том же количестве что было до смерти,в добавок оно так же удвоилось!
Подскажите пожалуйста от куда надо начинать копать?
Спасибо за помощь добрые люди!!!

DeimoS
24.09.2017, 13:04
Начни с проверки того, где именно происходит удвоение патронов: при сохранении аккаунта или при его загрузке.

qwezert
25.09.2017, 11:44
Скорее всего у тебя так: В БД кол-во оружия не перезаписывается а сохраняется плюсом к старым значениям и при смерти персонажа ты должен либо запросом удалять все оружие либо при выходе игрока - проверять что у него на руках и сохранять это(если оружия нет - удалять из БД тоже)

GoJIoBoJIoMkA
28.09.2017, 15:32
Мне кажется,или проблема могла тут затаиться?


if(GetPVarInt(playerid, "GunLoading"))
{
for ( new i ; i < 13 ; i ++ )
{
if ( !PlayerInfo [ playerid ] [ pGun ] [ i ] || !PlayerInfo [ playerid ] [ pAmmo ] [ i ] ) continue ;
GivePlayerWeaponAC ( playerid, PlayerInfo [ playerid ] [ pGun ] [ i ], PlayerInfo [ playerid ] [ pAmmo ] [ i ] ) ;
}

new gun_string[56], ammo_string[56];

format ( gun_string, 56, "0,0,0,0,0,0,0,0,0,0,0,0,0");

format ( ammo_string, 56, "0,0,0,0,0,0,0,0,0,0,0,0,0");

string="";
mysql_format(connects, string, 256, "UPDATE `accounts` SET `p_guns` = '%s',`p_ammo` = '%s' WHERE `id` = '%i' LIMIT 1", gun_string, ammo_string, PlayerInfo [ playerid ] [ pID ] ) ;
mysql_empty(connects, string);
DeletePVar(playerid, "GunLoading");
}

vovandolg
29.09.2017, 13:04
А обязательно было форматировать нули с запятыми?))

DeimoS
29.09.2017, 14:11
Обязательно вообще хранить все данные в одном столбце? У вас что, лимит на таблицы в БД подходит к концу или что? Разве не было бы удобнее выделить отдельную таблицу, создав под каждый слот свой столбец? И получать информацию проще будет, и обновлять. Сами себе жизнь усложняете

ziggi
29.09.2017, 15:38
Обязательно вообще хранить все данные в одном столбце? У вас что, лимит на таблицы в БД подходит к концу или что? Разве не было бы удобнее выделить отдельную таблицу, создав под каждый слот свой столбец? И получать информацию проще будет, и обновлять. Сами себе жизнь усложняете

Да люди просто не умеют пользоваться базами данных, но пользуются ими, ибо модно.

DeimoS
29.09.2017, 17:02
Да люди просто не умеют пользоваться базами данных, но пользуются ими, ибо модно.

Y_Less как-то очень правильные слова сказал (http://forum.sa-mp.com/showpost.php?p=3050714&postcount=8) на эту тему:

I've always said that the SQL plugins are there for people who already know SQL, not as a learning aid for SQL. Databases CAN be faster, but just as with PAWN, making them so requires knowing more than just the very basics of the language (because it is a language - that's what the "L" means). Most people think that MySQL is a magic bullet where they click install and their mode instantly becomes amazing - that is just not the case. You need to understand about schema design, indexes, relations, constraints, and more.

If you want to learn the "Structured Query Language", then go ahead, but bear in mind that it is a whole other language, so as long as you have been learning PAWN for you could spend again on learning SQL.

GoJIoBoJIoMkA
30.09.2017, 17:33
А обязательно было форматировать нули с запятыми?))

Я вообще ни чего не форматировал,скопировал и вставил сюда,все что я там делал!

- - - Добавлено - - -


Обязательно вообще хранить все данные в одном столбце? У вас что, лимит на таблицы в БД подходит к концу или что? Разве не было бы удобнее выделить отдельную таблицу, создав под каждый слот свой столбец? И получать информацию проще будет, и обновлять. Сами себе жизнь усложняете

Дайте ссылочку на толковые мануалы об этом!

- - - Добавлено - - -


Да люди просто не умеют пользоваться базами данных, но пользуются ими, ибо модно.

Чем острить,помогли бы лучше...

DeimoS
30.09.2017, 18:04
Дайте ссылочку на толковые мануалы об этом!.

https://dev.mysql.com/doc/

Shayba
05.10.2017, 14:28
Добавь следующее в мод, это даст только то что после релога у персонажа вообще не будет оружия на руках,мало приятного конечно,но всё же оно не будет удваиваться!
В public OnPlayerSpawn

Set_Weapon(playerid);
И в конце мода создай сток

stock Set_Weapon(playerid)
{
ResetPlayerWeapons(playerid);
new Gun[13],Ammo[13];
for(new i;i < 13; i++)
{
if(PlayerInfo[playerid][pAmmo][i] > 0)
{
Gun[i] = PlayerInfo[playerid][pGun][i];
Ammo[i] = PlayerInfo[playerid][pAmmo][i];
PlayerInfo[playerid][pGun][i] = 0;
PlayerInfo[playerid][pAmmo][i] = 0;
GivePlayerWeaponAC(playerid,Gun[i],Ammo[i]);
}
}
return 1;
}
Переменные Gun и Ammo меняй на свои если у тебя не так!

GoJIoBoJIoMkA
09.10.2017, 17:52
Закрывайте тему!