Jump to content
  • 0

pomoc [HELP] MySQL ukládání zbraní + munice


Adeer

Dotaz

Ahoj lidi,
už si téměř nevím rady tak se na Vás chci obrátit a poprosit Vás o pomoc. Už nějaký den se trápím s ukládáním zbraní do databáze, ale stále bez výsledku.
Vložím sem podstatnou část kódu ve kterém se to všechno odehrává, pokusy o uložení zbraní jsem odmazal protože to stejně nefungovalo.
Mělo by to fungovat tak že v databázi jsou sloupce weapon1, weapon1Ammo, weapon2, weapon2Ammo... až k posledním sloupcům.
Prosím tedy kohokoliv o radu jak tento problém vyřešit.
Děkuji. :)
 
//edit - Upraveno přidal jsem celý pwn.

Edited by Adeer
Spoiler
Link to comment
Share on other sites

11 odpovědí na tuto otázku

Recommended Posts

  • 0
  • Globální moderátor

Tu část si neměl odmazávat, protože nám takhle v podstatě neposkytuješ nic, ten problém nemůžeme pak vyřešit :d

Link to comment
Share on other sites

  • 0

Tu část si neměl odmazávat, protože nám takhle v podstatě neposkytuješ nic, ten problém nemůžeme pak vyřešit :d

 

Upraveno hodil jsem sem celý kód :)

Akorád jsem nevěděl jak použít spoiler, jelikož je to trochu delší. :-/

Link to comment
Share on other sites

  • 0
  • Globální moderátor

No já jsem chtěl spíše vidět část kódu s ukládáním weaps, který si údajně smazal. Zkus znova napsat ukládání weaps a pak ho sem postni ať máme nějaký záchytný bod. V podstatě teď po nás chceš abychom na bázi tvého ukládání/načítání pro tebe napsali ukládání a načítání zbraní

Link to comment
Share on other sites

  • 0

No já jsem chtěl spíše vidět část kódu s ukládáním weaps, který si údajně smazal. Zkus znova napsat ukládání weaps a pak ho sem postni ať máme nějaký záchytný bod. V podstatě teď po nás chceš abychom na bázi tvého ukládání/načítání pro tebe napsali ukládání a načítání zbraní

 

Měl jsem to takhle, ale to je kravina dokonce to něšlo ani skompilovat, měl jsem ještě jednu verzi a ta taky nefungovala, zkusim vzpomenout jak byla ta druhá verze ale ta bude taky k ničemu podle mě.

Upravil jsem původní kód.

Tak přikládám druhou verzi co šla vykompilovat, ale do logu mysql vyhodí tento error

[13:24:38] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `ID` = 3' at line 1

Edited by Adeer
Link to comment
Share on other sites

  • 0
  • Globální moderátor

"UPDATE `account` SET `Wanted` = %d, `Skin` = %d, `Kill` = %d, `Death` = %d,`Weapon1` = %d,`Weapon1Ammo` = %d, WHERE `ID` = %d",

 

správně:

 

"UPDATE `account` SET `Wanted` = %d, `Skin` = %d, `Kill` = %d, `Death` = %d,`Weapon1` = %d,`Weapon1Ammo` = %d WHERE `ID` = %d",

 

 

 

 

edit: 

Jinak si nejsem jistý, jestli je zrovna ideální zjišťovat údaje o zbraních takhle v Disconnectu, mám pocit, že tehdy je vše už vynulované

Edited by HighPrint
Link to comment
Share on other sites

  • 0

Díky, té čárky jsem si nevšiml, každopádně to zbraně neukládá, nevím tedy jestli to je opravdu v tom že je to v disconnectu, ale například kill, wanted.. to ukládá

 

zkoušel jsem načítat zbraně při loginu (ručně do tabulky doplnit zbraň s municí) zda je chyba opravdu v DC publicu, ale když zadám do

publicu OnAccountLoad

 

Weapon1        [playerid] = cache_get_field_content_int  (0, "Weapon1" );
Weapon1Ammo    [playerid] = cache_get_field_content_int  (0, "Weapon1Ammo" );

 

tedy takhle

public OnAccountLoad(playerid)
{
	Wanted         [playerid] = cache_get_field_content_int  (0, "Wanted");
	Skin           [playerid] = cache_get_field_content_int  (0, "Skin"  );
	Kill           [playerid] = cache_get_field_content_int  (0, "Kill"  );
	Death          [playerid] = cache_get_field_content_int  (0, "Death" );
	Weapon1        [playerid] = cache_get_field_content_int  (0, "Weapon1" );
	Weapon1Ammo    [playerid] = cache_get_field_content_int  (0, "Weapon1Ammo" );
	return true;
}

tak to vyhází errory

error 028: invalid subscript (not an array or too many subscripts): "Weapon1"
warning 215: expression has no effect
error 001: expected token: ";", but found "]"
error 029: invalid expression, assumed zero
fatal error 107: too many error messages on one line

 

Link to comment
Share on other sites

  • 0

Možná jsi měl na mysli:

 

WeaponInfo[playerid][Weapon1] = ...

WeaponInfo[playerid][Weapon1Ammo]

 

Tak jsem to zkusil a stále bez výsledku, když doplním ručne ID zbraně tak to po odhlášení z DB změní na nulu. Tak tedy netuším kde je zakopanej pes...

 

Aktualizoval jsem pwn v prvním příspěvku.

Link to comment
Share on other sites

  • 0
  • Globální moderátor

No prvním problémem je, že ty údaje sice načítáš do proměnných, ale nikde je nepředáváš (GivePlayerWeapon).

 

Až tohle vyřešíš tak bude pak chyba ještě v disconnectu s GetPlayerWeaponData... budeš muset jinak konstantě zjišťovat hráčovi zbraně (OnPlayerWeaponShot, OnPlayerDeath), vlastní funkce na giveWeaps/disarm...

 

obecně se toho musí vyřešit více – např různý spectate (tam se pak musí taky zbraně ukládat aby dostal správnej amount při spawnu)

 

Možná existuje lepší způsob, žádný mě ale bohužel nenapadá.

Edited by HighPrint
Link to comment
Share on other sites

  • 0

pozri, keď je nejaký problém, skús ho riešiť sám

 

dám ti menší návod...

 

nefunguje mi niečo - bum, nahádžem printy s číslami a sledujem log, zistím kde sa kód zadrhne - opravím

niečo mi hádže nesprávne hodnoty - bum, nahádžem printf a zistím aké hodnoty to v ktorej časti kódu priradí - opravím

 

skús si vždy spraviť takúto analýzu svojho kódu, samozrejme nie každý problém vyriešiš sám, ale nám potom dokážeš krásne povedať, neukladá mi zbrane, kód zbehne do konca celý, ale výstupné hodnoty pre zbrane sú 0, prečo? a mi ti povieme že v disconnecte budú zbrane vždy 0 pretože hráč sa už nenachádza v hre alebo také niečo...

 

PS: toto bol len príklad - v pawne už dlhšie nepracujem takže neviem čo presne sa dá vrátiť pri disconnecte, každopádne byť tebou tak si skusím tu metodu s printf a vrátim si zbrane + ammo

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...