Pagina 1 van 2

ADR

Geplaatst: 22 mar 2004, 21:24
door Hans Kamp
Ik weet dat mensen hier niet zo wild zijn van Advanced Dungeons & Rabbits, maar wie is er mee vertrouwd?

Ik heb op dit moment niet direct een probleem, maar ik wou weten wie het (naast mij) geïnstalleerd hebben, en welke wijzigingen ze daar hebben aangebracht.

Geplaatst: 23 mar 2004, 01:22
door Carlo Claessen
ik nog wel, maar ik stap over op zaraths mods, deze is verreweg van status veilig, er zitten nogal wat lekken in maar hij werkt wel rond zaterdag of zondag ga ik de adr versie verwijderen dus roep maar, oh ja, ik heb ook de vertaling liggen dus

Geplaatst: 23 mar 2004, 07:14
door Hans Kamp
Heb je een voorbeeldforum met die mod?

Geplaatst: 23 mar 2004, 12:22
door Carlo Claessen
heb je de link gepbed

wil de site nog voor mezelf houden

Geplaatst: 23 mar 2004, 12:27
door DraGonX
carloclaessen schreef:heb je de link gepbed

wil de site nog voor mezelf houden
Ik heb de mod ook die H.K. bedoelt maar bij mij wilt ie ook niet goed werken (helaas) :cry:

Geplaatst: 23 mar 2004, 12:52
door Carlo Claessen
ook jij hebt de link via pb gekregen

Geplaatst: 23 mar 2004, 15:53
door DraGonX
Ik heb mij geregistreed maar ik met het nog actieveren dus doe ik vanaaf wel even :thumb:

Geplaatst: 25 mar 2004, 09:58
door Hans Kamp
Ik ben niet helemaal tevreden over de ADR-MOD.

Wat ik veranderd heb is:
- de kosten voor genezen (heal) en herrijzen (resurrect). Dat is afhankelijk van het aantal hitpoints en niet langer van het karakter-level;
- upleveling-systeem. De hoeveelheid experience die je nodig hebt voor een nieuw karakter-level neemt per karakter-level toe. De hoeveelheid experience om van level 1 naar level 2 te gaan is drastisch verlaagd.

Wat ik wil veranderen is:
- er moet een kans zijn, dat verslagen monsters items droppen, varierend van potions, items als armors, helms, gloves, etc.;
- er moet ook een kans zijn, dat verslagen monsters geen geld droppen;
- de items die winkels verkopen moeten bij bezoek gerandomiseerd worden;
- de kans dat de duurzaamheid (durability) van een wapen afneemt, gaat van 100 % (=altijd) naar 5 %, maar de maximum duurzaamheid gaat wel fors omlaag.

Geplaatst: 25 mar 2004, 12:14
door DraGonX
Je bent er 1 vergeten de leden tegen elkaar laten vechten :shock:

En TOP dat je er aan mee werkt !

Geplaatst: 25 mar 2004, 13:24
door Hans Kamp
Ja, daar hebben we het inderdaad over gehad... maar dat vergt wat meer en ingewikkelder programmeerwerk. De tabel phpbb_users moet dan met een waar/onwaar-veld worden uitgebreid, bijv. allows_pvp (PVP = Person Versus Person).

Het vergt ook nog veranderingen in het gebruikersprofiel en in het Administratiepaneel. Ik hoop dat ook voor elkaar te krijgen. De andere zaken die ik heb opgenoemd zijn volgens mij vrij eenvoudig te programmeren. Omdat ik nog niet ervaren ben, vind ik het vrij eng om het Administratiepaneel en het gebruikersprofiel te herprogrammeren. :(

Ik kan wel zeggen welke wijzigingen ik zelf heb toegepast (het voldoet misschien niet aan de werkelijke mod-eisen):

1. Kosten genezen en herrijzen afhankelijk maken van hitpoints (niet van karakterlevel):

Code: Selecteer alles

#
# OPEN
#
adr_temple.php
#
# FIND
#
$heal_price = ceil( $adr_general['temple_heal_cost'] * $adr_char['character_level'] );
$resurrect_price = ceil( $adr_general['temple_resurrect_cost'] * $adr_char['character_level'] );
#
# REPLACE WITH
#
$sql = "SELECT character_hp,
			character_mp, 
			character_hp_max, 
			character_mp_max FROM " . ADR_CHARACTERS_TABLE . " WHERE character_id = $user_id";
if ( !($result=$db->sql_query($sql)))
{
	message_die(GENERAL_ERROR , 'Can not read user database');
}
$info = $db->sql_fetchrow($result);
$hitpoints_to_heal = $info['character_hp_max'] - $info['character_hp'];
$heal_price = ceil($adr_general['temple_heal_cost'] * $hitpoints_to_heal);
$resurrect_price = ceil($adr_general['temple_resurrect_cost'] * $info['character_hp_max']);

2. Progressief leveling-up-systeem

Code: Selecteer alles

#
# OPEN
#
adr/includes/adr_functions_stats.php
#
# FIND
#
function adr_seek_levelup($user_id)
#
# ADD BEFORE
#
// Begin ProgExpReq MOD
function adr_calc($lvl, $base_xp)
{
	return $base_xp * $lvl * ($lvl + 1) / 2;
}

function adr_calc_exp_req($user_id)
{
	global $db;

	$sql = "SELECT cl.class_update_xp_req, c.character_level FROM " . ADR_CHARACTERS_TABLE . " c, " . ADR_CLASSES_TABLE . " cl
		WHERE cl.class_id = c.character_class
		AND c.character_id = $user_id";

	if (!($result = $db->sql_query($sql) ))
	{
		message_die(GENERAL_ERROR, 'Could not check user experience',"", __LINE__, __FILE__, $sql);
	}
	$level = $db->sql_fetchrow($result);
	return adr_calc($level["character_level"], $level["class_update_xp_req"]);
}

// Eind ProgExpReq MOD
#
# FIND
#
	if ( $level['character_xp'] >= $level['class_update_xp_req'] )
	{
		$level_up = TRUE;
	}
#
# REPLACE WITH
#
// Begin ProgExpReq MOD

	$xp_req = adr_calc_exp_req($user_id);

	if ( ($level['character_xp'] >= $xp_req) && ($xp_req > 0))
	{
		$level_up = TRUE;
	}
// Eind ProgExpReq MOD
#
# FIND
#
	if ( ( $level['character_xp'] < $level['class_update_xp_req'] ) && $from == 'character_page' )
	{
		exit;
	}
#
# REPLACE WITH
#
// Begin ProgExpReq MOD
	if ( $level['character_xp'] < adr_calc_exp_req($user_id) && $from == 'character_page' )
	{
		exit;
	}
// End ProgExpReq MOD
#
# FIND
#
	$xp_req = intval($level['class_update_xp_req']);
#
# REPLACE WITH
#
// Begin ProgExpReq MOD
	$xp_req = intval(adr_calc_exp_req($user_id));
// End ProgExpReq MOD

#
# OPEN
#
adr_character.php
#
# FIND
#
	$exp_percent_width = floor(( $row['character_xp'] / $row['class_update_xp_req']) * 300 );
#
# REPLACE WITH
#
// Begin ProgExpReq MOD
	$xp_req = adr_calc_exp_req($searchid);
	if ($xp_req == 0)
		$exp_percent_width = floor(( $row['character_xp'] / $row['class_update_xp_req']) * 300 );
	else
		$exp_percent_width = floor(( $row['character_xp'] / adr_calc_exp_req($searchid)) * 300 );

// Eind ProgExpReq MOD
#
# FIND
#
		'EXP_MAX' => $row['class_update_xp_req'],
#
# REPLACE WITH
#
// Begin ProgExpReq MOD
		'EXP_MAX' => adr_calc_exp_req($searchid),
// Eind ProgExpReq MOD

# SAVE ALL, UPLOAD ALL
Edit: Fout in MOD verwijderd.

Geplaatst: 26 mar 2004, 11:17
door DraGonX
Thx ik ga in het weekend eff checken !

Geplaatst: 26 mar 2004, 12:07
door Hans Kamp
Het komend weekend zal ik werken aan:
- de kans dat de duurzaamheid (durability) van een wapen afneemt, gaat van 100 % (=altijd) naar 5 %, maar de maximum duurzaamheid gaat wel fors omlaag.
De durability van:
- een wapen gaat alleen omlaag (kans 5%) als een aanval op de tegenstander (monster) door het karakter succes heeft;
- handschoenen, armor, helm, schild, etc. gaat alleen omlaag (kans 5%, wel onafhankelijk van elkaar) als een aanval op het karakter door het monster succes heeft;
- ringen en amuleten gaat alleen omlaag als er sprake is van regeneratie van mana en hitpoints (kans 100%).

Als dat klaar is, kom ik met de volgende MODs.

Ik denk dat dit topic verplaatst moet worden naar phpBB Modifications -> MOD Ontwikkeling.

Misschien dat een moderator dat wil/kan beoordelen...

-----

De durability MOD (waar ik overigens een probleem mee heb):

Code: Selecteer alles

#
# OPEN
#
adr/includes/adr_global.php
#
# FIND
#
function adr_previous( $lang_key , $direct , $nav='' )
#
# ADD BEFORE
#
// Begin BetterDurSys MOD
function adr_chance_to_reduce_dur($item, $user_id)
{
	$dice = rand(0, 99);
	if ($dice < 5)
	{
		adr_use_item($item, $user_id);
	}
}
// End BetterDurSys MOD
#
# OPEN
#
adr_battle.php
#
# FIND
#
		adr_use_item($armor , $user_id);
#
# REMOVE
#

#
# FIND
#
		adr_use_item($buckler , $user_id);
#
# REMOVE
#

#
# FIND
#
		adr_use_item($gloves , $user_id);
#
# REMOVE
#

#
# FIND
#
		adr_use_item($helm , $user_id);
#
# REMOVE
#

#
# FIND
#
		adr_use_item($amulet , $user_id);
#
# REMOVE
#

#
# FIND
#
		adr_use_item($ring , $user_id);
#
# REMOVE
#

#
# FIND
#
			$power = ( $item['item_type_use'] == 6 ) ? ( $item['item_power'] * 3 ) : ( $item['item_power'] * 2 );
#
# ADD AFTER
#
// Begin Better DurSys MOD
//			adr_use_item($weap , $user_id);
// Eind Better DurSys MOD

#
# FIND
#
			$battle_message .= sprintf($lang['Adr_battle_attack_success'] , $damage ).'<br />' ;
#
# ADD AFTER
#
// Begin Better DurSys MOD
			adr_chance_to_reduce_dur($weap, $user_id);
// Eind Better DurSys MOD

#
# FIND
#
			$battle_message .= sprintf($lang['Adr_battle_opponent_attack_success'] , $damage );
#
# ADD AFTER
#
// Begin Better DurSys MOD

// Dit gedeelte werkt niet. De variabelen $armor, $buckler, $helm, $gloves worden niet vastgehouden, alleen aan het begin van het gevecht

//			adr_chance_to_reduce_dur($weap, $user_id);
			echo "Chance to Reduce!";

			$armor = intval($HTTP_POST_VARS['item_armor']);
			$buckler = intval($HTTP_POST_VARS['item_buckler']);
			$helm = intval($HTTP_POST_VARS['item_helm']);
			$gloves = intval($HTTP_POST_VARS['item_gloves']);
			
			adr_chance_to_reduce_dur($armor, $user_id);
			adr_chance_to_reduce_dur($buckler, $user_id);
			adr_chance_to_reduce_dur($gloves, $user_id);
			adr_chance_to_reduce_dur($helm, $user_id);
// Eind Better DurSys MOD
Misschien dat er iemand mij kan helpen met het bovenstaande probleem.

-----

Kans op geen geld MOD

Code: Selecteer alles

#
# OPEN
#
adr_battle.php
#
# FIND
#
		$reward = rand ( $adr_general['battle_base_reward_min'] , $adr_general['battle_base_reward_max'] );
		if (( $monster['monster_level'] - $challenger['character_level'] ) > 1 )
		{
			$reward = floor( ( ( $monster['monster_level'] - $challenger['character_level'] ) * $adr_general['battle_base_reward_modifier'] ) / 100 );
		}
#
# ADD BEFORE
#
// Begin NoMoney MOD
		if (rand(0, 99) < 40)
			$nomoney = 1;
// End NoMoney MOD
#
# REPLACE (fragment after previous FIND) WITH
#
// Begin NoMoney MOD

		// Get the money earned
		if ($nomoney)
			$reward = 0;
		else
		{

			$reward = rand ( $adr_general['battle_base_reward_min'] , $adr_general['battle_base_reward_max'] );
			if (( $monster['monster_level'] - $challenger['character_level'] ) > 1 )
			{
				$reward = floor( ( ( $monster['monster_level'] - $challenger['character_level'] ) * $adr_general['battle_base_reward_modifier'] ) / 100 );
			}
		}
// End NoMoney MOD

#
# FIND
#
		$message = sprintf($lang['Adr_battle_won'] , $exp , $reward , $board_config['points_name'] );
#
# REPLACE WITH
#
// Begin NoMoney MOD
		if ($nomoney)
			$message = sprintf($lang['Adr_battle_won_exp_only'], $exp, $board_config['points_name'] );
		else
			$message = sprintf($lang['Adr_battle_won'] , $exp , $reward , $board_config['points_name'] );
// End NoMoney MOD
#
# OPEN
#
adr/language/lang_english/lang_adr.php
#
# FIND
#
	$lang['Adr_battle_won']='Je wint het gevecht! Je verdient %s experience en %s %s';
#
# ADD AFTER
#
// Begin NoMoney MOD
	$lang['Adr_battle_won_exp_only']='Je wint het gevecht! Je verdient %s experience, maar geen %s';
// End NoMoney MOD
# SAVE ALL, UPLOAD ALL
-----

Herberekening kans om te raken:

Code: Selecteer alles

#
# SQL
#
ALTER TABLE `phpbb_adr_battle_list` ADD `battle_challenger_level` INT NOT NULL AFTER `battle_challenger_id` ;
ALTER TABLE `phpbb_adr_battle_list` ADD `battle_opponent_level` INT NOT NULL AFTER `battle_opponent_id` ;

#
# FIND
#
	$sql = "INSERT INTO " . ADR_BATTLE_LIST_TABLE . " 
		( battle_type , battle_turn ,  battle_result , battle_text , battle_challenger_id , battle_challenger_hp , battle_challenger_mp , battle_challenger_att , battle_challenger_def , battle_opponent_id , battle_opponent_hp , battle_opponent_mp , battle_opponent_att , battle_opponent_def )
		VALUES ( 1 , $turn , 0 , '' , $user_id , $hp , $mp , $att , $def , $monster_id , $monster_base_hp , 0 , $monster_base_att , $monster_base_def )";
#
# REPLACE WITH
#
// Begin ChanceToHit MOD
	$sql = "INSERT INTO " . ADR_BATTLE_LIST_TABLE . " 
		( battle_type , battle_turn ,  battle_result , battle_text , battle_challenger_id , battle_challenger_hp , battle_challenger_mp , battle_challenger_att , battle_challenger_def , battle_opponent_id , battle_opponent_hp , battle_opponent_mp , battle_opponent_att , battle_opponent_def, battle_challenger_level, battle_opponent_level )
		VALUES ( 1 , $turn , 0 , '' , $user_id , $hp , $mp , $att , $def , $monster_id , $monster_base_hp , 0 , $monster_base_att , $monster_base_def, $level, $monster_level )";
// Eind ChanceToHit MOD
#
# FIND first occurrence of
		if ( (( ( $diff + $dice ) > 10 ) && $dice != 0 ) || $dice == 20 )
# REPLACE WITH
// Begin ChanceToHit MOD
		$char_ar = $bat['battle_challenger_att'];
		$char_def = $bat['battle_challenger_def'];
		$char_level = $bat['battle_challenger_level'];

		$monster_ar = $bat['battle_opponent_att'];
		$monster_def = $bat['battle_opponent_def'];
		$monster_level = $bat['battle_opponent_level'];

		$chance = adr_chance_to_hit($char_ar, $char_def, $char_level, $monster_ar, $monster_def, $monster_level);
		if (rand(0, 99) < $chance)
// Eind ChanceToHit MOD

#
# FIND second occurence of
		if ( (( ( $diff + $dice ) > 10 ) && $dice != 0 ) || $dice == 20 )
#
# REPLACE WITH
#
// Begin ChanceToHit MOD
		$char_ar = $bat['battle_challenger_att'];
		$char_def = $bat['battle_challenger_def'];
		$char_level = $bat['battle_challenger_level'];

		$monster_ar = $bat['battle_opponent_att'];
		$monster_def = $bat['battle_opponent_def'];
		$monster_level = $bat['battle_opponent_level'];

		$chance = adr_chance_to_hit($monster_ar, $monster_def, $monster_level, $char_ar, $char_def, $char_level);
		if (rand(0, 99) < $chance)
// Eind ChanceToHit MOD
#
# OPEN
#
adr/includes/adr_global.php
#
# FIND
#
// The following functions are used on every page of the mod , so they are always defined
#
# AFTER, ADD
#
// Begin ChanceToHit MOD
function adr_chance_to_hit($att_ar, $att_def, $att_lvl, $def_ar, $def_def, $def_lvl)
{
	$res = 100 * ($att_ar / ($att_ar + $def_def)) * 2 * ($att_lvl / ($att_lvl + $def_lvl));

	if ($res < 5)
		$res = 5;
	if ($res > 95)
		$res = 95;

	return $res;
}
// Eind ChanceToHit MOD
De aanvals- en verdedigingskracht van monsters moeten worden aangepast.

Geplaatst: 28 mar 2004, 20:44
door Nick V
heeft iemand misschien een nederlandse vertaling voor me liggen ik heb deze mod ookal een tijdje amar sommige dingen weet ik echt niet hoe ik ze in ut neds moet doen, ben ook blij dat amper iemand van deze mod gehoord heeft *fluistert* :bier:

Geplaatst: 28 mar 2004, 20:48
door V!ncent
ik vind het wel leuk dat je dit doet :) maar deze mod is toch alleen nog maar in beta te verkrijgen :)

Geplaatst: 29 mar 2004, 12:49
door DraGonX
Pc 4 live schreef:ik vind het wel leuk dat je dit doet :) maar deze mod is toch alleen nog maar in beta te verkrijgen :)
Ja helaas wel :cry:

Geplaatst: 29 mar 2004, 15:04
door Hans Kamp
Ik neem aan dat jullie het over de originele ADR mod hebben, en niet over de modjes die ik hierboven gaf?

Geplaatst: 29 mar 2004, 15:41
door V!ncent
jah :) en hoever staat het met je mod? echt ik denk wel dat het vet strak zal worden als gebruikers tegen elkaar kunnen vechten ;) :P

Geplaatst: 29 mar 2004, 19:18
door Nick V
ja ech wel 8) alleen ik ga wel de ''steal'' functie uitzetten anders is het in 1 uurtje saai :?

Geplaatst: 29 mar 2004, 19:18
door Nick V
ja ech wel 8) alleen ik ga wel de ''steal'' functie uitzetten anders is het in 1 uurtje saai :?

Geplaatst: 30 mar 2004, 07:54
door Hans Kamp
Pc 4 live schreef:jah :) en hoever staat het met je mod? echt ik denk wel dat het vet strak zal worden als gebruikers tegen elkaar kunnen vechten ;) :P
Ik vrees dat ik wat meer ervaring moet hebben in het programmeren van MODs. Ik weet bijvoorbeeld niet goed hoe je een Administratiepaneel en een profielpaneel wijzigt. De gebruiker die aangevallen wordt, moet toestemming geven. Ik denk dat er een tweede vereiste moet zijn: de gebruiker moet zijn ingelogd.

Ten tweede heb ik nog een probleem met de durability van verdedigingsitems (helm, harnas, handschoenen, schild, etc.) Waarschijnlijk ligt de oplossing in de uitbreiding van de battle-tabel (waarin ik het karakterlevel en het monsterlevel heb opgeslagen).

Het eerstvolgende dat ik waarschijnlijk implementeer is het droppen van goedkope items door monsters, en het kopen en vinden van items die tijdelijk je karaktereigenschappen en -vaardigheden veranderen.