Aide programmation

Ici, les rôles s’inversent : c’est vous qui proposez votre aide au staff pour améliorer le serveur. Attention, ici on ne demande pas, on propose !
Lordinaire
Maître Absolu
Posts: 1396
Joined: 11 Mar 2005, 09:19
Discord:

Aide programmation

Unread post 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 :wink:

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 :roll:
Khyldrim
Maître Absolu
Posts: 801
Joined: 04 Mar 2005, 17:45
Discord:

Unread post 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.
ImageImage
©Hermès: "On apprend le RP à un newbie, pas à un con".
User avatar
WitchKing
Petit Bill
Posts: 128
Joined: 21 Nov 2004, 20:29
Discord:

Unread post 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.
[DOL Dev Team member]
User avatar
duff
Billou
Posts: 232
Joined: 19 May 2004, 08:13
Discord:

Unread post by duff »

en gros
package = namespace
class = class
...
tout est pareille meme le .net framework est tres proche du framework java
Vive DOL vive DAOC
Image<-- j y etait a la 1ere mais aussi a la 2eme
Doulbousiouf
Maître Absolu
Posts: 1010
Joined: 23 Sep 2004, 17:42
Discord:

Unread post 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 ...
Image
Lordinaire
Maître Absolu
Posts: 1396
Joined: 11 Mar 2005, 09:19
Discord:

Unread post 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 :roll:
User avatar
duff
Billou
Posts: 232
Joined: 19 May 2004, 08:13
Discord:

Unread post by duff »

le premier enleve just le mal de rez alros que le 2eme s ocupe aussi des points de constitution.
Vive DOL vive DAOC
Image<-- j y etait a la 1ere mais aussi a la 2eme
cønc
Gros Nioubi
Posts: 3
Joined: 03 Jun 2005, 16:52
Discord:

Unread post 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
User avatar
duff
Billou
Posts: 232
Joined: 19 May 2004, 08:13
Discord:

Unread post 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 ;)
Vive DOL vive DAOC
Image<-- j y etait a la 1ere mais aussi a la 2eme
Thanor
Nioubi
Posts: 16
Joined: 27 Apr 2005, 19:00
Discord:

Unread post by Thanor »

pour le code en lui meme c est du charp(c#)
Borland C#Builder ne peut pas faire l'affaire?
alex_speed
Nioubi
Posts: 23
Joined: 29 Apr 2005, 23:01
Discord:

Unread post by alex_speed »

Oui, ca marche aussi et gratuit en plus :)
User avatar
mimitoutplein
Petit Bill
Posts: 152
Joined: 11 Dec 2004, 18:28
Discord:

Unread post by mimitoutplein »

C'est trop joli toutes ces pitites écritures :shock:
Bennn, moi comme je m'y connais pas en prog, je vais me contenté d'encourager hein! :D ...jretourne a mes révisions de bac moi :( ...

Bonne chance all!!!
une prune un jour, une prune toujours...

Peppintroispommes.
Image

Grand: Suzerain (sentinelle level 41 )
Post Reply