[C++][Funkcja Lua] setPlayerExpRate(cid, rate)

 
Tibia.net.pl

Wróć   Tibia.net.pl > OpenTibia > Skrypty - pozostałe > C++

#2 event Tibia.net.pl: Kończymy rozgrzewkę! (Start - Sobota, godz. 17:00) Big meeting (22 listopada, Poznań)


  Tibia.net.pl (#?)
[C++][Funkcja Lua] setPlayerExpRate(cid, rate)

Dyskusja dotycząca tematu [C++][Funkcja Lua] setPlayerExpRate(cid, rate), który znajduje się w kategorii Skrypty - pozostałe (Pomoc oraz inne skrypty związane z OT.), na forum C++ (Wszystko, co związane z kompilowaniem.). Treść: Skrypt by Umby Ok, zaczynajmy. W player.cpp Ponizej: Kod: idleTime = 0; Dodaj: Kod: expRate = 1; Znajdz: Kod: return (result ... Na Tibia.net.pl znajdziesz dokończenie tematu [C++][Funkcja Lua] setPlayerExpRate(cid, rate)



Odpowiedz
 
01-09-2008, 13:57  
Fanatyk
 
Użytkownik schikell na Tibia.net.pl

[C++][Funkcja Lua] setPlayerExpRate(cid, rate)


Skrypt by Umby

Ok, zaczynajmy.

W player.cpp

Ponizej:

Kod:
idleTime = 0;
Dodaj:

Kod:
expRate = 1;
Znajdz:

Kod:
return (result * g_config.getNumber(ConfigManager::RATE_EXPERIENCE) );
I zamien na:

Kod:
return ((result * g_config.getNumber(ConfigManager::RATE_EXPERIENCE)) * expRate);
Na koncu player.cpp

Dodaj:

Kod:
void Player::changePlayerExpRate(uint32_t rate)
{
	expRate = rate;
}

Teraz w player.h

Ponizej:

Kod:
void resetIdleTime() {idleTime = 0;}
Dodaj:

Kod:
uint32_t getExpRate() const {return expRate;}
void changePlayerExpRate(uint32_t rate);
Ponizej:

Kod:
int32_t idleTime;
Dodaj:

Kod:
uint32_t expRate;
W creature.cpp znajdz:

Kod:
return attacker->getPlayer() ? ((uint64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_game.getExperienceStage(attacker->getPlayer()->getLevel()))) : ((uint64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE) ));
I zamien to na:

Kod:
return attacker->getPlayer() ? (((uint64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_game.getExperienceStage(attacker->getPlayer()->getLevel()))) * attacker->getPlayer()->getExpRate()) : ((uint64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE)));
W luascript.cpp

Ponizej:

Kod:
lua_register(m_luaState, "escapeString", LuaScriptInterface::luaEscapeString);
Dodaj:

Kod:
lua_register(m_luaState, "setPlayerExpRate", LuaScriptInterface::luaSetPlayerExpRate);
Na samym dole luascript.cpp

Dodaj:

Kod:
int LuaScriptInterface::luaSetPlayerExpRate(lua_State *L)
{    
    uint32_t rate = popNumber(L);                    
    uint32_t cid = popNumber(L);            	
    ScriptEnviroment* env = getScriptEnv();	    
    Player* player = env->getPlayerByUID(cid);	       
       if(player){    
			player->changePlayerExpRate(rate);
            lua_pushnumber(L, LUA_ERROR);
       }    
       else{       
           reportErrorFunc(getErrorDesc(LUA_ERROR_PLAYER_NOT_FOUND));
           lua_pushnumber(L, LUA_ERROR);
       }       
    return 1;
}
Oraz w luascript.h

Ponizej:

Kod:
static int32_t luaEscapeString(lua_State* L);
Dodaj:

Kod:
static int32_t luaSetPlayerExpRate(lua_State* L);
-- Jak to dziala ?

Jest to funkcja ktora mozy expRate.

-- Przykladowe zastosowanie

data/movements/scripts/exp.lua

Kod:
function onEquip(cid, item)
        setPlayerExpRate(cid, 4)
end
function onDeEquip(cid, item)
 	setPlayerExpRate(cid, 1)
end
data/movements/movements.xml

Kod:
	<movevent event="Equip" itemid="2179" slot="ring" function="onEquipItem" script="exp.lua"/>
	<movevent event="DeEquip" itemid="2179" slot="ring" function="onDeEquipItem" script="exp.lua"/>
ID 2179 jest to Gold Ring

Po dodaniu wyzej wymienionego przykladowego skryptu. Jezeli masz exp na serwerze x35 skrypt pomnozy to przez 4. Czyli 35*4= 140 exp. Oczywiscie po zalozeniu Gold Ringa.
 


17-09-2008, 02:17  
Elf
Maniak

Odp: [C++][Funkcja Lua] setPlayerExpRate(cid, rate)


OBS: Jest to inny kod niż ten, który się znajduje w TFSie.
 


Odpowiedz

Narzędzia tematu
Wygląd

Podobne wątki

Rate od lvl - więc mam silnik pod 8.31 i pytanie polega na tym jak zrobić takie cós. 1-50 rate 500 50-100 rate 200 100-150 rate 100 150-200 rate 50 ... ... DIVING, 15-11-2008 [SCRIPT] Od danego levela mniejszy rate exp - Witam szukam pod roznymi haslami i na google i tutaj i nie moge znalesc scrytpu ze naprzyklad mam na servie rate exp x 50 to zeby od 100 levela... driX, 28-10-2008 [8.10] [problem z lua] mlvl rate - Moje Config Lua Wygląda tak: -------- config.lua -------- -- Evolution 8.1 By Deans Team. -- Config file for OTServ --... Malowany, 10-10-2008 [8.1][XML] Evolution by Sentil ExP Rate - Pmocy nie działa mi exp rate zmieniam na 40 a jak zabije np. rata to 75 expa tak jak 15 ... moj stages.xml wyglada tak prosze o pomoc ...<dam... adamigo, 01-10-2008 Exp, skill, loot, m lvl rate ! - Witam. Mam taki problem, wchodze do config.lua edytuje exp,skill,loot rate. ale to nic nie daje, OTS pod tibie 8.0. Fragment config.lua... DiabliK, 24-07-2008


Tibia.net.pl: C++ (Wszystko, co związane z kompilowaniem.)
Temat: [C++][Funkcja Lua] setPlayerExpRate(cid, rate) Skrypt by Umby Ok, zaczynajmy. W player.cpp Ponizej: Kod: idleTime [...]


Zanim spytasz w temacie - wpadnij tu! - Aleq (0) 17-11-2008 16:25 Auto balance team 7.6 - Pawcio. (0) 17-11-2008 15:03 Devland 8.1 HELP! - Mzikos (2) 15-11-2008 10:03 [-8.1] Priv NPC by Aragorn - Aragornkk (3) Wczoraj 17:32 Sucre evolution [8.0] - jinn (0) 31-10-2008 16:41 [C++] GM pisze zawsze na czerwono - schikell (1) 05-10-2008 10:34 [C++] Komenda /giveskill - schikell (3) 30-09-2008 21:00 [7.6] - mati504 (0) 29-09-2008 20:28 [8.2+]Attack speed - fabian766 (0) 21-09-2008 12:21 [8.21] C++ Pomoc - God Tyran (1) 19-09-2008 21:03


Czasy w strefie GMT +1. Teraz jest 16:52.




Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.2.0 © 2008, Crawlability, Inc.