What's new

Inne Updateskills

Czopeq

Advanced User
Joined
Jun 29, 2015
Messages
191
Reaction score
6
Hello, pr?buj? zrobi? co? takiego:
Po zalogowaniu baza danych aktualizuje si? i gracz dostaje dodatkowego skilla np. axe, a po wylogowaniu go traci... A w praktyce to wygl?da tak, ?e gracz si? loguje baza danych si? aktualizuj?, ale za p??no, bo w bazie danych jest 11axe, ale w grze jest 10... pr?bowa?em to zrobi? w c++, ale po ka?dym przelogowaniu gracz dostawa? +1axe... A nie wiem jak w c++ zrobi? aktualizacj? bazy po wylogowaniu :/

Tak to wygl?da w c++
Code:
	query.str("");
	query << "SELECT `skillid`, `value`, `bonus`, `count`, (value + bonus) FROM `player_skills` WHERE `player_id` = " << player->getGUID();
	if((result = db->storeQuery(query.str())))
	{
		//now iterate over the skills
		do
		{
			int16_t skillId = result->getDataInt("skillid");
			if(skillId < SKILL_FIRST || skillId > SKILL_LAST)
				continue;
			
			uint32_t skillLevel = result->getDataInt("value");
			uint32_t Bonusik = result->getDataInt("(value + bonus)");
			uint64_t nextSkillCount = player->vocation->getReqSkillTries(
				skillId, skillLevel + 1), skillCount = result->getDataLong("count");
			if(skillCount > nextSkillCount)
				skillCount = 0;
			
			player->skills[skillId][SKILL_LEVEL] = Bonusik;
			player->skills[skillId][SKILL_TRIES] = skillCount;
			player->skills[skillId][SKILL_PERCENT] = Player::getPercentLevel(skillCount, nextSkillCount);
		}
		while(result->next());
		result->free();
	}

A tak w lua po zalogowaniu i wylogowaniu:
[LUA]function onLogin(cid) --- OnLogout(cid)
db.query("UPDATE `player_skills` SET `value` = (value + bonus) WHERE `player_id` = "..getPlayerGUID(cid).."")
return true
end[/LUA]
Kto? co?? ja ju? nie mam pomys??w :c
 

Spellejk

Active User
Joined
Apr 3, 2016
Messages
83
Reaction score
2
Odp: Updateskills

Jesli chodzi o baze danych to postac musi byc wylogowana zeby cokolwiek sie zmienilo. Czyli najpierw musi zmienic a pozniej zalogowac tylko pytanie skad bedzie wiadomo ze wlasnie teraz ktos chce sie zalogowac.
Mozna by tez zrobic ze jak sie zaloguje to go wyloguje, zmieni w bazie i sie zaloguje znow ale to bedzie petla bo jak wyloguje to ma mu odjac.

Po za tym masz funkcje doPlayerAddSkill lub cos takiego. A po wylogowaniu przez baze zabierac 1 skill
 

Czopeq

Advanced User
Joined
Jun 29, 2015
Messages
191
Reaction score
6
Odp: Updateskills

Przerobi?em skrypt i teraz.. da si? jako? przechowa? id gracza, ?eby po wylogowaniu wykona?a si? funkcja?
[LUA]
function onUse(cid, item, fromPosition, itemEx, toPosition)
oRemoveCreature(cid)
db.query("UPDATE `player_skills` SET `value` = `(value - bonus)` WHERE `player_id` = "..getPlayerGUID(cid).."")
end
[/LUA]
musi by? w tej kolejno?ci, bo inaczej baza nie zaaktualizuje si? prawid?owo, jak to przerobi?? :D

---------- Tre?? dodana o 04:10 ----------

Dobra poradzi?em sobie jako? :eek:
o dziwo wystarczy?o zrobi? co? takiego:
[LUA]
function onUse(cid, item, fromPosition, itemEx, toPosition)
local pid = getPlayerGUID(cid)
oRemoveCreature(cid)
db.query("UPDATE `player_skills` SET `value` = `(value - bonus)` WHERE `player_id` = "..pid)
end
[/LUA]

//temat do zamkni?cia
 
Top