Bounty/Request: Adding Resource Stats to Survey Droid Mails (CLAIMED!)

XionicFire

New Member
Joined
May 23, 2017
Messages
46
Hi guys,

Me again, if anyone is interested we have another bounty up:

We hereby offer a bounty of $25 $75, to the first person that posts here (and we can successfuly replicate it) the code/file changes required to excecute this modification.

We are attempting to add stats to the email the survey droids send when deployed, ive already done most of the research and ive narrowed it to one file, i tried editing it but the original coder used a very complex (but efficient) virtual table array system, and that is way beyond my skills, my "decent" attempt failed miserably, but at least i know its a skill restriction not an actual imposibility

If anyone is willing to give it a go (or if you already did this on ur server and you wish to earn some easy cash) heres what ive got so far, im attaching the current modified file as much as i could figure it out, im also attaching the error log the server throws when trying to compile/build it.

Im sure one of you will take a quick look at it and figure it out in 2 seconds.

Thanks again!

Debug Log:
Code:
In file included from ../../../src/server/zone/managers/resource/InterplanetarySurveyImplementation.cpp:7:0:
../../../src/server/zone/managers/resource/InterplanetarySurveyTask.h: In member function ‘virtual void InterplanetarySurveyTask::run()’:
../../../src/server/zone/managers/resource/InterplanetarySurveyTask.h:40:56: error: no matching function for call to ‘server::zone::objects::resource::ResourceSpawn::getAttributeAndValue()’
    String attrib = resourceSpawn->getAttributeAndValue();
                                                        ^
../../../src/server/zone/managers/resource/InterplanetarySurveyTask.h:40:56: note: candidate is:
In file included from ../../../src/server/zone/managers/resource/resourcespawner/resourcemap/ResourceMap.h:14:0,
                 from ../../../src/server/zone/managers/resource/resourcespawner/ResourceSpawner.h:19,
                 from ../../../src/autogen/server/zone/managers/resource/ResourceManager.h:89,
                 from ../../../src/server/zone/managers/resource/InterplanetarySurveyTask.h:12,
                 from ../../../src/server/zone/managers/resource/InterplanetarySurveyImplementation.cpp:7:
../../../src/autogen/server/zone/objects/resource/ResourceSpawn.h:175:6: note: int server::zone::objects::resource::ResourceSpawn::getAttributeAndValue(sys::lang::String&, int)
  int getAttributeAndValue(String& attribute, int index);
      ^
../../../src/autogen/server/zone/objects/resource/ResourceSpawn.h:175:6: note:   candidate expects 2 arguments, 0 provided
In file included from ../../../src/server/zone/managers/resource/InterplanetarySurveyImplementation.cpp:7:0:
../../../src/server/zone/managers/resource/InterplanetarySurveyTask.h:64:35: error: ‘class sys::lang::String’ has no member named ‘get’
    Vector<String>* alist = attrib.get(attrib);
                                   ^
../../../src/server/zone/managers/resource/InterplanetarySurveyTask.h:71:12: error: ‘class sys::lang::String’ has no member named ‘put’
     attrib.put(attrib,alist);
            ^
../../../src/server/zone/managers/resource/InterplanetarySurveyTask.h:120:35: error: ‘attrib’ was not declared in this scope
      Vector<String>* attriblist = attrib.get(ResName);
                                   ^
In file included from ../../../src/server/zone/objects/player/sessions/InterplanetarySurveyDroidSessionImplementation.cpp:11:0:
../../../src/server/zone/managers/resource/InterplanetarySurveyTask.h: In member function ‘virtual void InterplanetarySurveyTask::run()’:
../../../src/server/zone/managers/resource/InterplanetarySurveyTask.h:40:56: error: no matching function for call to ‘server::zone::objects::resource::ResourceSpawn::getAttributeAndValue()’
    String attrib = resourceSpawn->getAttributeAndValue();
                                                        ^
../../../src/server/zone/managers/resource/InterplanetarySurveyTask.h:40:56: note: candidate is:
In file included from ../../../src/server/zone/managers/resource/resourcespawner/resourcemap/ResourceMap.h:14:0,
                 from ../../../src/server/zone/managers/resource/resourcespawner/ResourceSpawner.h:19,
                 from ../../../src/autogen/server/zone/managers/resource/ResourceManager.h:89,
                 from ../../../src/server/zone/objects/player/sessions/InterplanetarySurveyDroidSessionImplementation.cpp:2:
../../../src/autogen/server/zone/objects/resource/ResourceSpawn.h:175:6: note: int server::zone::objects::resource::ResourceSpawn::getAttributeAndValue(sys::lang::String&, int)
  int getAttributeAndValue(String& attribute, int index);
      ^
../../../src/autogen/server/zone/objects/resource/ResourceSpawn.h:175:6: note:   candidate expects 2 arguments, 0 provided
In file included from ../../../src/server/zone/objects/player/sessions/InterplanetarySurveyDroidSessionImplementation.cpp:11:0:
../../../src/server/zone/managers/resource/InterplanetarySurveyTask.h:64:35: error: ‘class sys::lang::String’ has no member named ‘get’
    Vector<String>* alist = attrib.get(attrib);
                                   ^
../../../src/server/zone/managers/resource/InterplanetarySurveyTask.h:71:12: error: ‘class sys::lang::String’ has no member named ‘put’
     attrib.put(attrib,alist);
            ^
../../../src/server/zone/managers/resource/InterplanetarySurveyTask.h:120:35: error: ‘attrib’ was not declared in this scope
      Vector<String>* attriblist = attrib.get(ResName);
                                   ^
Makefile:7988: recipe for target 'server/zone/managers/resource/InterplanetarySurveyImplementation.o' failed
make[3]: *** [server/zone/managers/resource/InterplanetarySurveyImplementation.o] Error 1
Makefile:7988: recipe for target 'server/zone/objects/player/sessions/InterplanetarySurveyDroidSessionImplementation.o' failed
make[3]: *** [server/zone/objects/player/sessions/InterplanetarySurveyDroidSessionImplementation.o] Error 1
make[3]: Target 'all' not remade because of errors.
make[3]: Leaving directory '/home/swgemu/workspace/Core3/MMOCoreORB/build/unix/src'
make[3]: Entering directory '/home/swgemu/workspace/Core3/MMOCoreORB/build/unix'
make[3]: Leaving directory '/home/swgemu/workspace/Core3/MMOCoreORB/build/unix'
Makefile:417: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/home/swgemu/workspace/Core3/MMOCoreORB/build/unix'
Makefile:357: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/home/swgemu/workspace/Core3/MMOCoreORB/build/unix'
Makefile:57: recipe for target 'build' failed
make: *** [build] Error 2
** BUILD FAILED **




InterplanetarySurveyTask.h
Code:
/*
 * InterplanetrySurveyTask.h
 *
 *  Created on: 6/8/2014
 *      Author: washu
 */

#ifndef INTERPLANETARYSURVERYTASK_H_
#define INTERPLANETARYSURVERYTASK_H_

#include "server/ServerCore.h"
#include "server/zone/managers/resource/ResourceManager.h"
#include "server/chat/ChatManager.h"
#include "server/zone/managers/stringid/StringIdManager.h"

class InterplanetarySurveyTask : public Task {
	ManagedReference<InterplanetarySurvey*> surveyData;

public:

	InterplanetarySurveyTask(InterplanetarySurvey* survey) {
		surveyData = survey;
	}

	void run() {
		// Determine what planet and type, and pull results
		ManagedReference<ResourceManager*> rmanager = ServerCore::getZoneServer()->getResourceManager();
		Vector<ManagedReference<ResourceSpawn*> > resources;
		rmanager->getResourceListByType(resources, surveyData->getSurveyToolType(), surveyData->getPlanet());
		// format email and send
		ManagedReference<ResourceSpawn*> resourceSpawn;
		// We need to sort this by family name
		HashTable<String, Vector<String>* > mapped;
		HashTable<String, Vector<String>* > typeMap;
		for(int i=0;i<resources.size();i++) {
			resourceSpawn = resources.get(i);
			String family = resourceSpawn->getFamilyName();
			String type = resourceSpawn->getFinalClass();
			String name = resourceSpawn->getName();
			String attrib = resourceSpawn->getAttributeAndValue();
			// map type to family
			Vector<String>* list = typeMap.get(family);
			if (list != NULL) {
				if (!list->contains(type))
					list->add(type);
			} else {
				list = new Vector<String>();
				list->add(type);
				typeMap.put(family,list);
			}

			// map type to spawn name
			Vector<String>* mlist = mapped.get(type);
			if (mlist != NULL) {
				if (!mlist->contains(name))
					mlist->add(name);
			} else {
				mlist = new Vector<String>();
				mlist->add(name);
				mapped.put(type,mlist);
			}
			
			// map attributes to spawn name
			Vector<String>* alist = attrib.get(attrib);
			if (alist != NULL) {
				if (!alist->contains(name))
					alist->add(name);
			} else {
				alist = new Vector<String>();
				alist->add(name);
				attrib.put(attrib,alist);
			}
		}
		// Create Email:
		StringBuffer body;

		String sender = "interplanetary survey droid";
		Reference<StringIdManager* > stringIdManager = StringIdManager::instance();

		String planetName = surveyData->getPlanet();
		planetName[0] = toupper(planetName[0]);

		String sType = surveyData->getSurveyType();
		// Some override for untranslated names
		if (sType == "floral_resources") {
			sType = "Floral";
		}
		if (sType == "energy_renewable_unlimited_solar") {
			sType = "Solar";
		}
		if (sType == "energy_renewable_unlimited_wind") {
			sType = "Wind";
		}
		StringBuffer tBuff;
		char tmp = sType.charAt(0);
		tmp = toupper(tmp);
		tBuff.append(tmp);
		tBuff.append(sType.subString(1));
		String surveyType = tBuff.toString();
		UnicodeString subject(String("Interplanetary Survey: " + planetName  + " - " + surveyType));
		body << "Incoming planetary survey report...\n\n";
		body << "\\#pcontrast3 Planet: \\#pcontrast1 " << planetName <<"\n";
		body << "\\#pcontrast3 Resource Class: \\#pcontrast1 " << surveyType << "\n\n";
		body << "\\#pcontrast3 Resources located...\\#.\n\n";
		HashTableIterator<String, Vector<String>* > familyit = typeMap.iterator();
		// Get Family
		while(familyit.hasNext()) {
			String family = familyit.getNextKey();
			Vector<String>* tValues = typeMap.get(family);
			body << family << "\n";
			// Get Type
			for(int i=0;i<tValues->size();i++) {
				String sType = tValues->get(i);
				body << "\t" << sType << "\n";
				Vector<String>* namelist = mapped.get(sType);
				// Get Name
				for(int j=0;j<namelist->size();j++) {
					String ResName = namelist->get(j);
					body << "\t\t\\#pcontrast1 " << ResName << "\\#.\n";
					Vector<String>* attriblist = attrib.get(ResName);
					// Get Attributes
					for(int k=0;k<attriblist->size();k++) {
						String attribs = attriblist->get(j);
						body << "\t\t\\#pcontrast4 " << attribs << "\\#.\n";
					}
				}
			}
		}
		UnicodeString bodyString(body.toString());
		ManagedReference<ChatManager*> chat = ServerCore::getZoneServer()->getChatManager();
		chat->sendMail(sender, subject, bodyString, surveyData->getRequestor());
		// mark it as run and delete from the database
		surveyData->setExecuted(true);
		if (surveyData->isPersistent())
			ObjectManager::instance()->destroyObjectFromDatabase(surveyData->_getObjectID());
	}

};

#endif /* INTERPLANETARYSURVERYTASK_H_ */
 

Attachments

XionicFire

New Member
Joined
May 23, 2017
Messages
46
RE: Bounty/Request: Adding Resource Stats to Survey Droid Mails (PayPal)

Ook! so bumping this to a more handsome reward seems in order lol
 

Savage

New Member
Joined
Nov 28, 2016
Messages
17
RE: Bounty/Request: Adding Resource Stats to Survey Droid Mails (PayPal-INCREASED!)

We have that working on our server. Let me check with our other admin who created it to see if he wants to release it :)
 

XionicFire

New Member
Joined
May 23, 2017
Messages
46
This bounty has been claimed!, will post details of it along with relevant files and credit in a few moments!

Thanks everyone for looking!
 

XionicFire

New Member
Joined
May 23, 2017
Messages
46
Attached is the code to reproduce the mod

All credit for access to this mod goes to Sidious and Savage from SWG Rogue One http://www.swgrogueone.com/

We post it here in the spirit of sharing so that others may benefit from this mod as well
 

Attachments

jowwarr

New Member
Joined
Nov 7, 2015
Messages
13
Would the be some way of adding a density waypoint in with the resource stats data?
I'm guessing it may have something to do with the src/zone/objects/resource/SpawnDensityMap.

Here on earth, we fly aircraft to get initial magnetic readings, which then get explored further by exploration drilling to determine where full scale mining will take place (which then has grade control drilling done before production blast hole drilling before the excavators can move in). I would have thought this galaxy might have been a bit more adavanced.
Even if it was just a starting point, like "if density=30%, then x,y". Putting the max density of everything would be too much of an instawin button for those who deploy the ISD, but a nominal value (magnetic reading) would give you at least a direction to head leaving the staport to start your surveying (grade control) to find that spot to put your harvester (production blasting).
 
Top Bottom