ADR
Forumregels
Dit forum is voor alle zinnige gesprekken buiten phpBB om. Discussies en gesprekken over interessante onderwerpen.
Een nieuw onderwerp moet..:
Dit forum is voor alle zinnige gesprekken buiten phpBB om. Discussies en gesprekken over interessante onderwerpen.
Een nieuw onderwerp moet..:
- uiteraard voldoen aan de algemene voorwaarden
- niet passen in de gewone supportfora
- interessante zijn voor het overgrote deel van onze gebruikers
- een neutrale of positieve ondertoon hebben
- anders zijn dan bestaande onderwerpen
ADR
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.
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.
- Carlo Claessen
- Berichten: 1280
- Lid geworden op: 02 jul 2005, 14:05
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
''Do not meddle in the affairs of wizards, for they are subtle and quick to anger. '' J.R.R Tolkien
- Carlo Claessen
- Berichten: 1280
- Lid geworden op: 02 jul 2005, 14:05
- Carlo Claessen
- Berichten: 1280
- Lid geworden op: 02 jul 2005, 14:05
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.
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.
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):
2. Progressief leveling-up-systeem
Edit: Fout in MOD verwijderd.
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']);
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
Laatst gewijzigd door Hans Kamp op 26 mar 2004, 18:45, 2 keer totaal gewijzigd.
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):
Misschien dat er iemand mij kan helpen met het bovenstaande probleem.
-----
Kans op geen geld MOD
-----
Herberekening kans om te raken:
De aanvals- en verdedigingskracht van monsters moeten worden aangepast.
- 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
-----
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
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.Pc 4 live schreef:jahen hoever staat het met je mod? echt ik denk wel dat het vet strak zal worden als gebruikers tegen elkaar kunnen vechten
![]()
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.