Page 1 of 1
Aide programmation
Posted: 31 May 2005, 12:19
by Lordinaire
Voila je m'avance peut etre un peu, voir beaucoup, mais bon...
J'ai regardé les scripts de Dol cette après-midi et "il me semble" que ce ne soit pas si difficile que ca. Je m'explique :
Par exemple avec le script de Doulboulsiouf :
// Written by Doulbousiouf (27/11/2004) //
// //
// //
// //
using System;
using DOL.GS;
using System.Collections;
using DOL.GS.PacketHandler;
using DOL.GS.Effects;
using DOL.GS.Spells;
namespace DOL.GS.Scripts
{
/// <summary>
/// Represents an in-game GameHealer NPC
/// </summary>
[NPCGuildScript("Healer")]
public class GameHealer : GameMob
{
/// <summary>
/// Constructor
/// </summary>
public GameHealer() : base()
{
}
#region Examine/Interact Message
/// <summary>
/// Adds messages to ArrayList which are sent when object is targeted
/// </summary>
/// <param name="player">GamePlayer that is examining this object</param>
/// <returns>list with string messages</returns>
public override IList GetExamineMessages(GamePlayer player)
{
IList list = new ArrayList();
list.Add("You examine " + GetName(0, false) + ". " + GetPronoun(0, true) + " is " + GetAggroLevelString(player, false) + " and is a healer.");
return list;
}
public override bool Interact(GamePlayer player)
{
if(!base.Interact(player))
return false;
TurnTo(player.X,player.Y);
GameSpellEffect effect = SpellHandler.FindEffectOnTarget(player, "PveResurrectionIllness");
if(effect != null)
{
effect.Cancel(false);
player.Out.SendMessage(GetName(0, false)+" cure your resurrection sickness.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
}
return true;
}
#endregion Examine/Interact Message
}
}
Bon je comprends pas tout bien sur, mais à partir de scripts deja existant comme celui-ci et en bidouillant un peu je pense que certains peuvent arriver à faire des petits scripts qui allègeront le travail des vrais programeurs qui pourront se consacrer à d'autres travaux plus important.
Je répète ! Je n'ais jamais tésté d'en faire un mais si quelqu'un a une idée pour que je vois si j'y arrive je suis près à relever le defi
Pour finir , je pense que pas mal d'entre-nous ont de la bonne volonté donc pourquoi ne pas en faire profiter le serveur ?
Voila

Posted: 31 May 2005, 15:11
by Khyldrim
Bon ben si j'ai bien tout suivi c'est le script d'un PNJ healeur qui soigne une "resurrection illness" le seul problème c'est que je n'ai pas les bases pour le langage utilisé... J'ai des notions de C++ de JAVA et de Pascal (25h de théorie + 25h de TP niveau universitaire pour chaque langage), mais ici si je me souviens bien c'est du C#, si quelqu'un pouvait me dire si les notions prennent longtemps à apprendre, je pourrais me lancer dans l'étude du langage parce qu'en regardant le script de Doulbousiouf, je crois que la difficulté est à ma portée.
Posted: 31 May 2005, 15:41
by WitchKing
Pour faire court, C# et Java, même combat !
En détail, il y a des différences (delegate, syntaxe légèrement différente, ...) mais le passage de l'un à l'autre est très rapide.
Il existe de bons tutoriels sur le web; beaucoup d'entre eux sont en anglais.
Posted: 31 May 2005, 17:50
by duff
en gros
package = namespace
class = class
...
tout est pareille meme le .net framework est tres proche du framework java
Posted: 31 May 2005, 21:02
by Doulbousiouf
Il en manque un gros bout la, l'original donne plutot ca (et en effet c'est le code du healer) :
Code: Select all
// Written by Doulbousiouf (27/11/2004) //
// //
using System;
using System.Collections;
using DOL.GS.Effects;
using DOL.GS.PacketHandler;
using DOL.GS.Spells;
namespace DOL.GS.Scripts
{
/// <summary>
/// Represents an in-game GameHealer NPC
/// </summary>
[NPCGuildScript("Healer")]
public class GameHealer : GameMob
{
private const string CURRED_SPELL_TYPE = "PveResurrectionIllness";
private const string COST_BY_PTS = "cost";
private static readonly int[] prcRestore =
{
// http://www.silicondragon.com/Gaming/DAoC/Misc/XPs.htm
0,//0
0,//1
0,//2
0,//3
0,//4
0,//5
33,//6
53,//7
82,//8
125,//9
188,//10
278,//11
352,//12
443,//13
553,//14
688,//15
851,//16
1048,//17
1288,//18
1578,//19
1926,//20
2347,//21
2721,//22
3146,//23
3633,//24
4187,//25
4820,//26
5537,//27
6356,//28
7281,//29
8337,//30
9532,//31 - from logs
10886,//32 - from logs
12421,//33 - from logs
14161,//34
16131,//35
18360,//36 - recheck
19965,//37 - guessed
21857,//38
23821,//39
25928,//40 - guessed
28244,//41
30731,//42
33411,//43
36308,//44
39438,//45
42812,//46
46454,//47
50385,//48
54625,//49
59195,//50
};
/// <summary>
/// Constructor
/// </summary>
public GameHealer() : base()
{
}
#region Examine/Interact Message
/// <summary>
/// Adds messages to ArrayList which are sent when object is targeted
/// </summary>
/// <param name="player">GamePlayer that is examining this object</param>
/// <returns>list with string messages</returns>
public override IList GetExamineMessages(GamePlayer player)
{
IList list = new ArrayList();
list.Add("You examine " + GetName(0, false) + ". " + GetPronoun(0, true) + " is " + GetAggroLevelString(player, false) + " and is a healer.");
return list;
}
public override bool Interact(GamePlayer player)
{
if (!base.Interact(player))
return false;
TurnTo(player.X, player.Y);
GameSpellEffect effect = SpellHandler.FindEffectOnTarget(player, CURRED_SPELL_TYPE);
if (effect != null)
{
effect.Cancel(false);
player.Out.SendMessage(GetName(0, false) + " cure your resurrection sickness.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
}
if(player.TotalConstitutionLostAtDeath > 0)
{
int oneConCost = prcRestore[player.Level<prcRestore.Length?player.Level:prcRestore.Length-1];
player.TempProperties.setProperty(COST_BY_PTS, (long)oneConCost);
player.Out.SendCustomDialog("Recover your constitution will cost to you \n"+Money.GetString(player.TotalConstitutionLostAtDeath * (long)oneConCost)+".\nDo you accept?", new CustomDialogResponse(HealerDialogResponse));
}
else
{
player.Out.SendMessage("Your constitution is already fully restored!", eChatType.CT_System, eChatLoc.CL_SystemWindow);
}
return true;
}
protected void HealerDialogResponse(GamePlayer player, byte response)
{
if (WorldMgr.GetDistance(this, player) > WorldMgr.INTERACT_DISTANCE)
{
player.Out.SendMessage("You are too far away to speak with " + GetName(0, false) + ".", eChatType.CT_System, eChatLoc.CL_SystemWindow);
return;
}
if (response!=0x01) return; //declined
long cost = player.TempProperties.getLongProperty(COST_BY_PTS, 0);
player.TempProperties.removeProperty(COST_BY_PTS);
int restorePoints = (int)Math.Min(player.TotalConstitutionLostAtDeath, player.GetCurrentMoney() / cost);
if (restorePoints < 1)
restorePoints = 1; // at least one
long totalCost = restorePoints * cost;
if (player.RemoveMoney(totalCost))
{
player.TotalConstitutionLostAtDeath -= restorePoints;
player.Out.SendCharStatsUpdate();
}
else
{
player.Out.SendMessage("Need "+Money.GetString(totalCost)+" to restore "+restorePoints+" constitution points.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
}
return;
}
#endregion Examine/Interact Message
}
}
Pour ce qui est du passage de java a c# ca se fait tout seul, suffit juste d'un peu regarde le code et on comprend au bout de quelques minutes la totalite du language.
Si vous voulez aider y a de quoi faire, et surtout du cote des quetes ...
Posted: 01 Jun 2005, 08:22
by Lordinaire
Je dois pas avoir le meme alors (pourtant c'est de la même date).
Le mieux c'est de faire un serveur de test et d'essayer de faire des ptits bout de scripts je pense.
Je vais testé de faire ca et je reviendrai quand j'y arriverai

Posted: 01 Jun 2005, 13:23
by duff
le premier enleve just le mal de rez alros que le 2eme s ocupe aussi des points de constitution.
Posted: 03 Jun 2005, 18:47
by cønc
Bonjour
Malgré que je ne connaisse pas le C++ mais d'autre langages (C,VB,Java,php)
j'aimerait participé au développement d'Amtenael
Comme j'ai jamais vu a quoi ça peut ressemblée les scripts pour dol.
J'aimerait bien des informations alors si vous pouvez me MP
Merci
Posted: 03 Jun 2005, 21:35
by duff
je prefere repondre a la suite pour les eventuels autres programmeur passant par la.
Bon deja il te faut un environement de dev car notepad c est pas top.
pour cela, visual studio 2003(payant) est bien mais tu peux aussi utiliser sharpdevelop(gratuit).
Sinon pour le code en lui meme c est du charp(c#) .c est comme le java mais c est made in microsoft.( en gros 5ans de recule qui ajoute plein de petit truc et pique tout le reste a java)
Bref, pour commencer je te conceil comme dit plus haut , de telecharger les source de dol (autocvsbuild) ou par cvs.
et ensuite de comprendre puis modifier des scripts et enfin en cree des nouveau avant de t attaquer au noyau.
bref pour tout cela
www.dolserver.org -> documentation en anglais et puis le forum et l autocvs build aussi

Posted: 04 Jun 2005, 03:10
by Thanor
pour le code en lui meme c est du charp(c#)
Borland C#Builder ne peut pas faire l'affaire?
Posted: 04 Jun 2005, 07:41
by alex_speed
Oui, ca marche aussi et gratuit en plus

Posted: 04 Jun 2005, 10:40
by mimitoutplein
C'est trop joli toutes ces pitites écritures
Bennn, moi comme je m'y connais pas en prog, je vais me contenté d'encourager hein!

...jretourne a mes révisions de bac moi

...
Bonne chance all!!!