[Script] Besoin d'un conseil/avis

Répondre
Partager Rechercher
Bonjour.

Voilà, j'aimerais utiliser la base de données de Bioware pour stocker points de vies et location de mes joueurs. J'ai donc fait ce script mais ne pouvant le tester en ligne avec plusieurs joueurs et étant débutant en script j'aimerai un avis sur ce script, voire même quelques corrections si nécessaire (et j'ai bien peur que ça soit le cas )


- Mis dans l'événement OnUserDefined du module :

Code PHP:

void main()
{
    
int nUser GetUserDefinedEventNumber();
    if(
nUser == 700)
    {
     
object oPc;
     
oPc GetFirstPC();
     if (
oPc != OBJECT_INVALID)
      {
       
location lPc;
       
int nPc;
       
lPc GetLocation(oPc);
       
nPc GetCurrentHitPoints(oPc);
       
SetCampaignLocation("SAUVEGARDE""location"lPcoPc);
       
SetCampaignInt("SAUVEGARDE""test"1oPc);
       
SetCampaignInt("SAUVEGARDE""hitpoints"nPcoPc);
       
oPc GetNextPC();
       while (
oPc != OBJECT_INVALID)
        {
         
lPc GetLocation(oPc);
         
nPc GetCurrentHitPoints(oPc);
         
SetCampaignLocation("SAUVEGARDE""location"lPcoPc);
         
SetCampaignInt("SAUVEGARDE""test"1oPc);
         
SetCampaignInt("SAUVEGARDE""hitpoints"nPcoPc);
         
oPc GetNextPC();
        }
      }
     
DelayCommand(60.0SignalEvent(OBJECT_SELFEventUserDefined(700)));
    }


- Mis dans l'événement OnModuleLoad du module :

Code PHP:

void main()
{
 
SignalEvent(OBJECT_SELFEventUserDefined(700));


- Mis dans l'événement OnClientEnter du module :

Code PHP:

void main()
{
 
object oPc;
 
location lPc;
 
int nPcnTestnCurrentHpnMaxHpnDamageAmount;
 
effect eSoineDamage;
 
oPc GetEnteringObject();
 
lPc GetCampaignLocation("SAUVEGARDE""location"oPc);
 
nTest GetCampaignInt("SAUVEGARDE""test"oPc);
 
nPc GetCampaignInt("SAUVEGARDE""hitpoints"oPc);
 
nCurrentHp GetCurrentHitPoints(oPc);
 
nMaxHp GetMaxHitPoints(oPc);

 if (
nTest != 0)
  {
   
eSoin EffectHeal(nMaxHp);
   
ApplyEffectToObject(DURATION_TYPE_INSTANTeSoin,oPc);
   
nDamageAmount = (nMaxHp nPc);
   
eDamage EffectDamage(nDamageAmountDAMAGE_TYPE_MAGICALDAMAGE_POWER_NORMAL);
   
ApplyEffectToObject(DURATION_TYPE_INSTANTeDamage,oPc);
   
AssignCommand(oPcActionJumpToLocation(lPc));
  }


Edit : Mis à jour avec sauvegarde des points de vie, seule la sauvegarde de la position ne fonctionne toujours pas, je vais m'y atteler encore et encore
Ben d'abord je demande vérification pour les locations, si ce que j'ai fait est juste, je reprend le même principe pour les points de vie, avec un entier à la place d'une location. Mais je ne vois pas l'intérêt de le faire pour l'instant, je préfère que des personnes ayant un bon niveau en scripting me confirme que la syntaxe est bonne. Quiche powaaa ici
y a un ';' après une '}' dans le premier script, y a des variables locales inutiles et le DelayCommand() il aime pas mais bon c'est pas crucial non plus...
Y a un test inutile dans le OnClientEnter, par contre tu vérifie pas s'il faudrait pas plutôt le soigner plutôt que de lui faire mal.

Maintenant le plus embêtant : je ne sais pas quel est le résultat si on demande une variable location qui existe pas avec un GetCampaignLocation(), je sais qu'avec un GetLocalLocation() ça plante le script (je crois, à vérifier) donc le plus prudent serait peut-être de vérifier si nPC est différent de 0 avant d'essayer de récupérer la location et de la rétablir.


Ah oui j'oubliai : Utilise plutôt JumpToLocation() plutôt que son équivalent en Action*(), c'est plus sûr.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés