What's new

Skrypty & Kody [C++] - LUA doTransformItem

Status
Not open for further replies.

Oskar

Forum friend
Joined
Jan 24, 2009
Messages
2,256
Reaction score
331
Dobry. Znalaz?em t? funkcj? w sourcach:
PHP:
int32_t LuaScriptInterface::luaDoTransformItem(lua_State* L)
{
	//doTransformItem(uid, newId[, count/subType])
	int32_t count = -1;
	if(lua_gettop(L) > 2)
		count = popNumber(L);

	uint16_t newId = popNumber(L);
	uint32_t uid = popNumber(L);
	ScriptEnviroment* env = getEnv();

	Item* item = env->getItemByUID(uid);
	if(!item)
	{
		errorEx(getError(LUA_ERROR_ITEM_NOT_FOUND));
		lua_pushboolean(L, false);
		return 1;
	}

	const ItemType& it = Item::items[newId];
	if(it.stackable && count > 100)
		count = 100;

	Item* newItem = g_game.transformItem(item, newId, count);
	if(item->isRemoved())
		env->removeThing(uid);

	if(newItem && newItem != item)
		env->insertThing(uid, newItem);

	lua_pushboolean(L, true);
	return 1;
}
Ale cholera jasna on sprawdza uid itemu. A przy itemach, kt?re maj? ustawione aid, a uid pozostawione jest na "0" to podczas wykonywania eventu wywala b??d, ?e nie mo?e znale?? itemu. A gdy nadam mu uid, jakiekolwiek, to od razu skrypt dzia?a. Czy m?g?by kto? usun?? sprawdzanie uid?
 

Tibionauta

Advanced User
Joined
May 8, 2008
Messages
388
Reaction score
43
Odp: [C++] - LUA doTransformItem

Mo?na powiedzie?, ?e UID jest kluczem, dzi?ki kt?remu item mo?e by? znaleziony. Zauwa?, ?e w przypadku ActionID mo?e by? wi?cej ni? jeden przedmiot, kt?ry posiada to samo ActionID. Usuni?cie sprawdzanie UID, w przypadku jego nie zadeklarowania b?dzie wywo?ywa? crash. Amen.
 

Oskar

Forum friend
Joined
Jan 24, 2009
Messages
2,256
Reaction score
331
Odp: [C++] - LUA doTransformItem

To w jaki spos?b m?g?bym bezproblemowo wywo?ywa? Event, w kt?rym item z nadanym aid zostanie przemieniony w inny?
U?ywaj?c:
PHP:
addEvent(doTransformItem, math.random(5,10)*1000, item.uid, item.itemid)
Dla przedmiot?w z nadanym jakim? uid dzia?a normalnie, ale gdy item b?dzie mie? samo aid to wyskoczy b??d, ?e nie mo?e znale?? itemu. Czy znasz jak?? rad? na to?
 
Status
Not open for further replies.
Top