|
Bon voilà, normalement cela devrait marcher ainsi, je verrai avec Jaha pour faire des test .
Bon en gros j'ai fais ces fonctions pour aider ceux qui avaient le puma, mais aussi surtout au cas ou comme c'est une beta si bioware décide de changer les noms de leurs fonctions, cela sera plus simple pour ne pas remodifer tout le code .
Aussi sur le fait de rajouter des sécurités comme le dépassement des 32 caractères. J'ai aussi rajouté le fait que vous pouvez nommez 2 sauvegardes à l'identique ce que ne proposez pas bioware.
Pour ceux qui ne posséderont que la database, j'ai fais une bibliothèque pour mon module que je vous offre :
//*********************************** // fonct_dbbio // SCRIPT: FONCTIONS SECURITES POUR LA DATABASE BIOWARE // FAIT PAR RAT POUR MASKADO ET PAORN [url]http://paorn.nexusjdr.com[/url] //************************************ //*********************** // CONSTANTE //*********************** int MAX_CAR_VAR=31; //(32-1) Car On prend 1 obligatoirement pour pouvoir donner le mm nom a un int et un string etc... void MessageServerPAORN(string sText); //********************************************* // FONCTIONS REMODIFIES PAR RAT void SetPAORNInt(string var_name,int var_val,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID); void SetPAORNString(string var_name, string var_val,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID); void SetPAORNFloat(string var_name, float var_val,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID); void SetPAORNLoc(string var_name, location the_loc,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID ); void StorePAORNObj(string var_name, object oObject,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID ); void SetPAORNVec(string var_name, vector vVector,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID );
void DeletePAORNInt(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID ); void DeletePAORNString(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID); void DeletePAORNFloat(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID); void DeletePAORNLoc(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID); void DeletePAORNObj(string var_name,string ScampagnName="CONFIG_DB",object oOwner = OBJECT_INVALID,object oPC=OBJECT_INVALID); void DeletePAORNVec(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID); void DeletePAORNDB(string ScampagnName);
int GetPAORNInt(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID); string GetPAORNString(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID); float GetPAORNFloat(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID); location GetPAORNLoc(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID); object RetrievePAORNObj(string var_name,location lLoc,string ScampagnName="CONFIG_DB",object oOwner = OBJECT_INVALID,object oPC=OBJECT_INVALID); location GetPAORNVec(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID);
string StrReplace(string s1, string s2, string s3) { int nTemp; int nL = GetStringLength(s3); int nLength = GetStringLength(s1); string sTemp; string sR = "";
while ((nTemp = FindSubString(s3, s1)) >= 0) { sTemp = GetStringLeft(s3, nTemp); s3 = GetStringRight(s3, nL - nLength - nTemp); sR = sR + sTemp + s2; nL = GetStringLength(s3); } sR+=s3;
return sR; }
void MessageServerPAORN(string sText) { object oPC=GetFirstPC();
while (GetIsObjectValid(oPC)) { SendMessageToPC(oPC,"[SERVER] "+sText); oPC=GetNextPC(); }
}
// ******************************************** // // SET (WRITE) FUNCTIONS // ******************************************** //
void SetPAORNInt(string var_name,int var_val,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID) { if (GetStringLength(var_name)<=MAX_CAR_VAR) SetCampaignInt(ScampagnName,var_name+ "I",var_val,oPC); else MessageServerPAORN("Erreur de La fonction SetPAORNInt::Depassement des 32 caracteres du var_name"); }
void SetPAORNString(string var_name, string var_val,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID) { var_val=StrReplace("\n","°°",var_val); if (GetStringLength(var_name)<=MAX_CAR_VAR) SetCampaignString (ScampagnName,var_name+ "S",var_val,oPC); else MessageServerPAORN("Erreur de La fonction SetPAORNString::Depassement des 32 caracteres du var_name"); }
void SetPAORNFloat(string var_name, float var_val,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID) { if (GetStringLength(var_name)<=MAX_CAR_VAR) SetCampaignFloat(ScampagnName,var_name+ "F",var_val,oPC); else MessageServerPAORN("Erreur de La fonction SetPAORNFloat::Depassement des 32 caracteres du var_name");
}
void SetPAORNLoc(string var_name, location the_loc,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID ) { if (GetStringLength(var_name)<=MAX_CAR_VAR) SetCampaignLocation(ScampagnName,var_name + "L",the_loc,oPC); else MessageServerPAORN("Erreur de La fonction SetPAORNLoc::Depassement des 32 caracteres du var_name"); }
void StorePAORNObj(string var_name, object oObject,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID ) { if (GetStringLength(var_name)<=MAX_CAR_VAR) StoreCampaignObject(ScampagnName,var_name + "O",oObject,oPC); else MessageServerPAORN("Erreur de La fonction SetPAORNObj::Depassement des 32 caracteres du var_name"); }
void SetPAORNVec(string var_name, vector vVector,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID ) { if (GetStringLength(var_name)<=MAX_CAR_VAR) SetCampaignVector (ScampagnName,var_name + "V",vVector,oPC); else MessageServerPAORN("Erreur de La fonction SetPAORNVec::Depassement des 32 caracteres du var_name"); }
// ******************************************** // // DELETE (REMOVE) FUNCTIONS // ******************************************** //
void DeletePAORNInt(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID ) {
if (GetCampaignInt(ScampagnName,var_name+ "I",oPC)!=0) DeleteCampaignVariable(ScampagnName,var_name+ "I",oPC); else MessageServerPAORN("Erreur de La fonction DeletePAORNInt::Record non trouvé dans la Database"); }
void DeletePAORNString(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID) { if (GetCampaignString(ScampagnName,var_name+ "S",oPC)!="") DeleteCampaignVariable(ScampagnName,var_name+ "S",oPC); else MessageServerPAORN("Erreur de La fonction DeletePAORNString::Record non trouvé dans la Database");
}
void DeletePAORNFloat(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID) { if (GetCampaignFloat(ScampagnName,var_name+ "F",oPC)!=0.0f) DeleteCampaignVariable(ScampagnName,var_name+ "F",oPC); else MessageServerPAORN("Erreur de La fonction DeletePAORNloat::Record non trouvé dans la Database"); }
void DeletePAORNLoc(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID) { vector vVect=GetPositionFromLocation(GetCampaignLocation(ScampagnName,var_name+ "L",oPC)); float fAngle=VectorToAngle(vVect); if (fAngle!=0.0f) DeleteCampaignVariable(ScampagnName,var_name+ "L",oPC); else MessageServerPAORN("Erreur de La fonction DeletePAORNLoc::Record non trouvé dans la Database"); }
void DeletePAORNObj(string var_name,string ScampagnName="CONFIG_DB",object oOwner = OBJECT_INVALID,object oPC=OBJECT_INVALID) { ScampagnName,var_name+"O",lLoc,oOwner,oPC); DeleteCampaignVariable(ScampagnName,var_name+ "O",oPC); }
void DeletePAORNVec(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID) { vector vVect=GetCampaignVector(ScampagnName,var_name+ "V",oPC); float fAngle=VectorToAngle(vVect); if (fAngle!=0.0f) DeleteCampaignVariable(ScampagnName,var_name+ "V",oPC); else MessageServerPAORN("Erreur de La fonction DeletePAORNVec::Record non trouvé dans la Database"); }
void DeletePAORNDB(string ScampagnName) { DestroyCampaignDatabase(ScampagnName);
}
// ******************************************** // // GET (READ) FUNCTIONS // ******************************************** //
int GetPAORNInt(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID) { return GetCampaignInt(ScampagnName,var_name+ "I",oPC); }
string GetPAORNString(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID) { string retVal=GetCampaignString(ScampagnName,var_name+ "S",oPC); retVal=StrReplace("°°","\n",retVal); return retVal; }
float GetPAORNFloat(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID) { return GetCampaignFloat(ScampagnName,var_name+ "F",oPC) ; }
location GetPAORNLoc(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID) { return GetCampaignLocation(ScampagnName,var_name+ "L",oPC); }
object RetrievePAORNObj(string var_name,location lLoc,string ScampagnName="CONFIG_DB",object oOwner = OBJECT_INVALID,object oPC=OBJECT_INVALID) { return RetrieveCampaignObject(ScampagnName,var_name+ "O",lLoc,oOwner,oPC); }
vector GetPAORNVec(string var_name,string ScampagnName="CONFIG_DB",object oPC=OBJECT_INVALID) { return GetCampaignVector(ScampagnName,var_name+ "V",oPC); }
Pour ceux qui possèdent le PUMA et le système de Flag de Tyn :
#include "fonct_dbbio"
//*********************************** // PWUM_FUNCTIONS // NOM: pwum_functions // SCRIPT: Adaptation de la Bibliothque du PUMA pour la database de bioware // FAIT PAR RAT POUR MASKADO ET PAORN [url]http://paorn.nexusjdr.com[/url] //************************************ // ******************************************** // // FUNCTION DECLARATIONS // ******************************************** // void PWUMLocationTimer(float fTimerCount=0.0); void PWUMDateTimer(float fTimerCount=0.0); int GetOffsetGameDate(int iOffset=0); void SetPWUMInt(string var_name,int var_val,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID); void SetPWUMString(string var_name, string var_val,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID); void SetPWUMFloat(string var_name, float var_val,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID); void SetPWUMLocationC(string var_name, location the_loc,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID ); void SetPWUMCalendar(int iOffsetDate); void DeletePWUMInt(string var_name,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID ); void DeletePWUMString(string var_name,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID); void DeletePWUMFloat(string var_name,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID); void DeletePWUMLocation(string var_name,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID); int GetPWUMInt(string var_name,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID); string GetPWUMString(string var_name,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID); float GetPWUMFloat(string var_name,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID); location GetPWUMLocation(string var_name,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID); void ResumePCLocation(object oPC); void SetPCToSaveLocation(object oPC); void SetPCToNotSaveLocation(object oPC); //************************* // Appel des nouvelles fonctions //************************ //LES SET void SetBanqueOr(string var_name, int var_val,string ScampagnName="BANK_DB",object oPC=OBJECT_INVALID); void SetBanqueInv(string var_name,string var_val,string ScampagnName="BANK_DB",object oPC=OBJECT_INVALID); //LES GET int GetBanqueOr(string var_name,string ScampagnName="BANK_DB",object oPC=OBJECT_INVALID); string GetBanqueInv(string var_name,string ScampagnName="BANK_DB",object oPC=OBJECT_INVALID); // GESTION DES DELETE void DeleteBanqueOr(string var_name,string ScampagnName="BANK_DB",object oPC=OBJECT_INVALID); void DeleteBanqueInv(string var_name,string ScampagnName="BANK_DB",object oPC=OBJECT_INVALID); //************************** // Code pour PAORN //*************************** //************************* // Appel pour les Quetes //************************ //LES SET void SetQueteInt(string var_name, int var_val,string ScampagnName="QUETES_DB",object oPC=OBJECT_INVALID); void SetQueteStr(string var_name,string var_val,string ScampagnName="QUETES_DB",object oPC=OBJECT_INVALID); //LES GET int GetQueteInt(string var_name,string ScampagnName="QUETES_DB",object oPC=OBJECT_INVALID); string GetQueteStr(string var_name,string ScampagnName="QUETES_DB",object oPC=OBJECT_INVALID); // GESTION DES DELETE void DeleteQueteInt(string var_name,string ScampagnName="QUETES_DB",object oPC=OBJECT_INVALID); void DeleteQueteStr(string var_name,string ScampagnName="QUETES_DB",object oPC=OBJECT_INVALID);
// ******************************************** // // UTILITIES (used by functions below) // ******************************************** //
void PWUMLocationTimer(float fTimerCount=0.0) { object oPC = GetFirstPC(); string sPCLocation;
// Loop through each PC while (GetIsPC(oPC)) { // If PC is currently setup to save location if (GetLocalInt(oPC, "nSaveStatus") == 0) { // store the PC location sPCLocation = GetPCPlayerName(oPC) + GetName(oPC) + "Cur"; SetPWUMLocationC(sPCLocation, GetLocation(oPC)); SendMessageToPC(oPC, "** Votre position a ete sauvegarde **"); } oPC = GetNextPC(); }
/* If this is not a one-shot call, recall this script after the directed delay */ if (fTimerCount > 0.0) DelayCommand(fTimerCount, PWUMLocationTimer(fTimerCount)); }
void PWUMDateTimer(float fTimerCount=0.0) { SetPWUMInt("iPWUMDate", GetOffsetGameDate()); /* If this is not a one-shot call, recall this script after the directed delay */ if (fTimerCount > 0.0) DelayCommand(fTimerCount, PWUMDateTimer(fTimerCount)); }
int GetOffsetGameDate(int iOffset=0) { /* If a negative number was given then this variable does not automatically expire. */ if (iOffset < 0) return -1; else /* Otherwise, return the number of days from "0/0/0". Which means if a zero was sent, the variable expires at the end of the current game day.*/ { // Get the game calendar date int iYear=GetCalendarYear(); int iMonth=GetCalendarMonth(); int iDay=GetCalendarDay(); // Add to the appropriate integer until iOffset == 0 while (iOffset > 335) { iYear++; iOffset -= 336; } while (iOffset > 27) { iMonth++; iOffset -= 28; } while (iOffset > 0) { iDay++; iOffset--; } /* Now, if we have more than 28 days, roll the month, and if we have more than 12 months, roll the year - due to the way the year, month, and days were added above, it should be impossible to have more than 24 months or 56 days. */ if (iDay > 28) { iDay -= 28; iMonth++; } if (iMonth > 12) { iMonth -= 12; iYear++; } return iYear*336 + iMonth*28 + iDay; } }
// ******************************************** // // SET (WRITE) FUNCTIONS // ******************************************** // void SetPWUMInt(string var_name,int var_val,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID) {SetPAORNInt(var_name,var_val,ScampagnName,oPC); } void SetPWUMString(string var_name, string var_val,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID) { SetPAORNString(var_name,var_val,ScampagnName,oPC); } void SetPWUMFloat(string var_name, float var_val,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID) { SetPAORNFloat(var_name,var_val,ScampagnName,oPC); } void SetPWUMLocationC(string var_name, location the_loc,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID ) { SetPAORNLoc(var_name,the_loc,ScampagnName,oPC ); }
void SetPWUMCalendar(int iOffsetDate) { int iToday=GetOffsetGameDate(0); /* Only set the date if the saved date is after the start of the module. */ if (iOffsetDate > iToday) { // Get "zero" date int iYear=0; int iMonth=0; int iDay=0; // Add to the appropriate integer until iOffset == 0 while (iOffsetDate > 335) { iYear++; iOffsetDate -= 336; } while (iOffsetDate > 27) { iMonth++; iOffsetDate -= 28; } while (iOffsetDate > 1) { iDay++; iOffsetDate--; } /* Now, if we have more than 28 days, roll the month, and if we have more than 12 months, roll the year - due to the way the year, month, and days were added above, it should be impossible to have more than 24 months or 56 days. */ if (iDay > 28) { iDay -= 28; iMonth++; } if (iMonth > 12) { iMonth -= 12; iYear++; } SetCalendar(iYear, iMonth, iDay); } }
// ******************************************** // // DELETE (REMOVE) FUNCTIONS // ******************************************** // void DeletePWUMInt(string var_name,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID ) { DeletePAORNInt(var_name,ScampagnName,oPC); }
void DeletePWUMString(string var_name,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID) { DeletePAORNString(var_name,ScampagnName,oPC); }
void DeletePWUMFloat(string var_name,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID) { DeletePAORNFloat(var_name,ScampagnName,oPC); }
void DeletePWUMLocation(string var_name,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID) { DeletePAORNLoc(var_name,ScampagnName,oPC); }
// ******************************************** // // GET (READ) FUNCTIONS // ******************************************** // int GetPWUMInt(string var_name,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID) { return GetPAORNInt(var_name,ScampagnName,oPC); }
string GetPWUMString(string var_name,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID) { return GetPAORNString(var_name,ScampagnName,oPC); }
float GetPWUMFloat(string var_name,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID) { return GetPAORNFloat(var_name,ScampagnName,oPC); }
location GetPWUMLocation(string var_name,string ScampagnName="PUMA_DB",object oPC=OBJECT_INVALID) { return GetPAORNLoc(var_name,ScampagnName,oPC); }
// ******************************************** // // PC LOCATION FUNCTIONS // ******************************************** // void ResumePCLocation(object oPC) { if (!GetIsPC(oPC)) { return; //buh-bye }
AssignCommand(oPC, ActionWait(2.0)); //2.0 is long enough to account for most network lag
// effects can be added to go with this: string sPCLocation = GetPCPlayerName(oPC) + GetName(oPC) + "Cur";
AssignCommand(oPC, ActionJumpToLocation(GetPWUMLocation(sPCLocation)));
}
void SetPCToSaveLocation(object oPC) { if (!GetIsPC(oPC)) { return; //buh-bye }
SetLocalInt(oPC, "nSaveStatus", 0); //set to save }
void SetPCToNotSaveLocation(object oPC) { if (!GetIsPC(oPC)) { return; //buh-bye }
SetLocalInt(oPC, "nSaveStatus", 1); //set to not save }
//////////////////////////////////// // NOUVELLES FONCTIONS //// // FAIT PAR RAT POUR PUMA //// ///////////////////////////////// //***************************** // FONCTIONS BANQUE //*****************************
// GESTION DES SET
void SetBanqueOr(string var_name, int var_val,string ScampagnName="BANK_DB",object oPC=OBJECT_INVALID) { SetPWUMInt(var_name,var_val,ScampagnName,oPC); }
void SetBanqueInv(string var_name,string var_val,string ScampagnName="BANK_DB",object oPC=OBJECT_INVALID) { SetPWUMString(var_name,var_val,ScampagnName,oPC); }
// GESTION DES GET
int GetBanqueOr(string var_name,string ScampagnName="BANK_DB",object oPC=OBJECT_INVALID) { return GetPWUMInt(var_name,ScampagnName,oPC);
}
string GetBanqueInv(string var_name,string ScampagnName="BANK_DB",object oPC=OBJECT_INVALID) { return GetPWUMString(var_name,ScampagnName,oPC); }
// GESTION DES DELETE
void DeleteBanqueOr(string var_name,string ScampagnName="BANK_DB",object oPC=OBJECT_INVALID) { DeletePWUMInt(var_name,ScampagnName,oPC); }
void DeleteBanqueInv(string var_name,string ScampagnName="BANK_DB",object oPC=OBJECT_INVALID) { DeletePWUMString(var_name,ScampagnName,oPC); }
//////////////////////////////// // Code pour PAORN /// //////////////////////////////
//***************************** // FONCTIONS QUETES //*****************************
// GESTION DES SET
void SetQueteInt(string var_name, int var_val,string ScampagnName="QUETES_DB",object oPC=OBJECT_INVALID ) { SetPWUMInt(var_name,var_val,ScampagnName,oPC); }
void SetQueteStr(string var_name, string var_val,string ScampagnName="QUETES_DB",object oPC=OBJECT_INVALID) { SetPWUMString(var_name,var_val,ScampagnName,oPC); }
// GESTION DES GET
int GetQueteInt(string var_name,string ScampagnName="QUETES_DB",object oPC=OBJECT_INVALID) { return GetPWUMInt(var_name,ScampagnName,oPC);
}
string GetQueteStr(string var_name,string ScampagnName="QUETES_DB",object oPC=OBJECT_INVALID) { return GetPWUMString(var_name,ScampagnName,oPC); }
// GESTION DES DELETE
void DeleteQueteInt(string var_name,string ScampagnName="QUETES_DB",object oPC=OBJECT_INVALID) { DeletePWUMInt(var_name,ScampagnName,oPC); }
void DeleteQueteStr(string var_name,string ScampagnName="QUETES_DB",object oPC=OBJECT_INVALID) { DeletePWUMString(var_name,ScampagnName,oPC); }
|