// ====================================================================== // // ScriptMethodsGuild.cpp // // Copyright 2002 Sony Online Entertainment // // ====================================================================== #include "serverScript/FirstServerScript.h" #include "serverScript/JavaLibrary.h" #include "serverGame/CreatureObject.h" #include "serverGame/GuildInterface.h" #include "serverGame/GuildMemberInfo.h" #include "serverGame/GuildObject.h" #include "serverGame/ServerUniverse.h" #include "sharedGame/GuildRankDataTable.h" using namespace JNIWrappersNamespace; // ====================================================================== // ScriptMethodsGuildNamespace // ====================================================================== namespace ScriptMethodsGuildNamespace { bool install(); jint JNICALL getGuildId(JNIEnv *env, jobject self, jlong target); jintArray JNICALL getAllGuildIds(JNIEnv *env, jobject self); jlong JNICALL getMasterGuildObject(JNIEnv *env, jobject self); jintArray JNICALL getGuildsAtWarWith(JNIEnv *env, jobject self, jint guildId); jobject JNICALL getMasterGuildWarTableDictionary(JNIEnv * env, jobject self); jobject JNICALL getInactiveGuildWarTableDictionary(JNIEnv * env, jobject self); jint JNICALL findGuild(JNIEnv *env, jobject self, jstring name); jint JNICALL createGuild(JNIEnv *env, jobject self, jstring name, jstring abbrev); void JNICALL disbandGuild(JNIEnv *env, jobject self, jint guildId); jboolean JNICALL guildExists(JNIEnv *env, jobject self, jint guildId); jstring JNICALL guildGetName(JNIEnv *env, jobject self, jint guildId); jstring JNICALL guildGetAbbrev(JNIEnv *env, jobject self, jint guildId); jlong JNICALL guildGetLeader(JNIEnv *env, jobject self, jint guildId); jint JNICALL guildGetElectionPreviousEndTime(JNIEnv *env, jobject self, jint guildId); jint JNICALL guildGetElectionNextEndTime(JNIEnv *env, jobject self, jint guildId); jint JNICALL guildGetCurrentFaction(JNIEnv *env, jobject self, jint guildId); jint JNICALL guildGetPreviousFaction(JNIEnv *env, jobject self, jint guildId); jint JNICALL guildGetTimeLeftPreviousFaction(JNIEnv *env, jobject self, jint guildId); jstring JNICALL guildGetCurrentGcwDefenderRegion(JNIEnv *env, jobject self, jint guildId); jint JNICALL guildGetTimeJoinedCurrentGcwDefenderRegion(JNIEnv *env, jobject self, jint guildId); jstring JNICALL guildGetPreviousGcwDefenderRegion(JNIEnv *env, jobject self, jint guildId); jint JNICALL guildGetTimeLeftPreviousGcwDefenderRegion(JNIEnv *env, jobject self, jint guildId); jlongArray JNICALL guildGetMemberIds(JNIEnv *env, jobject self, jint guildId); jlongArray JNICALL guildGetMemberIdsWithPermissions(JNIEnv *env, jobject self, jint guildId, jint permissions); jint JNICALL guildGetCountMembersOnly(JNIEnv *env, jobject self, jint guildId); jint JNICALL guildGetCountSponsoredOnly(JNIEnv *env, jobject self, jint guildId); jint JNICALL guildGetCountMembersAndSponsored(JNIEnv *env, jobject self, jint guildId); jint JNICALL guildGetCountMembersGuildWarPvPEnabled(JNIEnv *env, jobject self, jint guildId); jstring JNICALL guildGetMemberName(JNIEnv *env, jobject self, jint guildId, jlong member); jstring JNICALL guildGetMemberProfession(JNIEnv *env, jobject self, jint guildId, jlong member); jint JNICALL guildGetMemberLevel(JNIEnv *env, jobject self, jint guildId, jlong member); jint JNICALL guildGetMemberPermissions(JNIEnv *env, jobject self, jint guildId, jlong member); jstring JNICALL guildGetMemberTitle(JNIEnv *env, jobject self, jint guildId, jlong member); jlong JNICALL guildGetMemberAllegiance(JNIEnv *env, jobject self, jint guildId, jlong member); jintArray JNICALL guildGetEnemies(JNIEnv *env, jobject self, jint guildId); void JNICALL guildRemoveMember(JNIEnv *env, jobject self, jint guildId, jlong member); void JNICALL guildAddCreatorMember(JNIEnv *env, jobject self, jint guildId, jlong member); void JNICALL guildAddSponsorMember(JNIEnv *env, jobject self, jint guildId, jlong member); void JNICALL guildSetMemberPermission(JNIEnv *env, jobject self, jint guildId, jlong member, jint permissions); void JNICALL guildSetMemberTitle(JNIEnv *env, jobject self, jint guildId, jlong member, jstring title); void JNICALL guildSetMemberAllegiance(JNIEnv *env, jobject self, jint guildId, jlong member, jlong allegiance); void JNICALL guildSetMemberPermissionAndAllegiance(JNIEnv *env, jobject self, jint guildId, jlong member, jint permissions, jlong allegiance); jobjectArray JNICALL guildGetAllRanks(JNIEnv *env, jobject self); jobjectArray JNICALL guildGetTitleForRank(JNIEnv *env, jobject self, jstring rank); jobjectArray JNICALL guildGetMemberRank(JNIEnv *env, jobject self, jint guildId, jlong member); jboolean JNICALL guildHasMemberRank(JNIEnv *env, jobject self, jint guildId, jlong member, jstring rank); void JNICALL guildAddMemberRank(JNIEnv *env, jobject self, jint guildId, jlong member, jstring rank); void JNICALL guildRemoveMemberRank(JNIEnv *env, jobject self, jint guildId, jlong member, jstring rank); void JNICALL guildSetLeader(JNIEnv *env, jobject self, jint guildId, jlong leader); void JNICALL guildSetElectionEndTime(JNIEnv *env, jobject self, jint guildId, jint electionPreviousEndTime, jint electionNextEndTime); void JNICALL guildSetFaction(JNIEnv *env, jobject self, jint guildId, jint factionId); void JNICALL guildSetGcwDefenderRegion(JNIEnv *env, jobject self, jint guildId, jstring gcwDefenderRegion); void JNICALL guildRemoveEnemy(JNIEnv *env, jobject self, jint guildId, jint enemyId); void JNICALL guildSetEnemy(JNIEnv *env, jobject self, jint guildId, jint enemyId); void JNICALL guildUpdateGuildWarKillTracking(JNIEnv *env, jobject self, jlong killer, jlong victim); jint JNICALL guildGetGuildWarKillCount(JNIEnv *env, jobject self, jint guildIdA, jint guildIdB); jint JNICALL guildGetGuildWarKillCountUpdateTime(JNIEnv *env, jobject self, jint guildIdA, jint guildIdB); void JNICALL guildSetName(JNIEnv *env, jobject self, jint guildId, jstring name); void JNICALL guildSetAbbrev(JNIEnv *env, jobject self, jint guildId, jstring abbrev); } //======================================================================== // install //======================================================================== bool ScriptMethodsGuildNamespace::install() { const JNINativeMethod NATIVES[] = { #define JF(a,b,c) {a,b,(void*)(ScriptMethodsGuildNamespace::c)} JF("_getGuildId", "(J)I", getGuildId), JF("getAllGuildIds", "()[I", getAllGuildIds), JF("_getMasterGuildObject", "()J", getMasterGuildObject), JF("findGuild", "(Ljava/lang/String;)I", findGuild), JF("createGuild", "(Ljava/lang/String;Ljava/lang/String;)I", createGuild), JF("disbandGuild", "(I)V", disbandGuild), JF("guildExists", "(I)Z", guildExists), JF("guildGetName", "(I)Ljava/lang/String;", guildGetName), JF("guildGetAbbrev", "(I)Ljava/lang/String;", guildGetAbbrev), JF("_guildGetLeader", "(I)J", guildGetLeader), JF("guildGetElectionPreviousEndTime", "(I)I", guildGetElectionPreviousEndTime), JF("guildGetElectionNextEndTime", "(I)I", guildGetElectionNextEndTime), JF("guildGetCurrentFaction", "(I)I", guildGetCurrentFaction), JF("guildGetPreviousFaction", "(I)I", guildGetPreviousFaction), JF("guildGetTimeLeftPreviousFaction", "(I)I", guildGetTimeLeftPreviousFaction), JF("guildGetCurrentGcwDefenderRegion", "(I)Ljava/lang/String;", guildGetCurrentGcwDefenderRegion), JF("guildGetTimeJoinedCurrentGcwDefenderRegion", "(I)I", guildGetTimeJoinedCurrentGcwDefenderRegion), JF("guildGetPreviousGcwDefenderRegion", "(I)Ljava/lang/String;", guildGetPreviousGcwDefenderRegion), JF("guildGetTimeLeftPreviousGcwDefenderRegion", "(I)I", guildGetTimeLeftPreviousGcwDefenderRegion), JF("_guildGetMemberIds", "(I)[J", guildGetMemberIds), JF("_guildGetMemberIdsWithPermissions", "(II)[J", guildGetMemberIdsWithPermissions), JF("guildGetCountMembersOnly", "(I)I", guildGetCountMembersOnly), JF("guildGetCountSponsoredOnly", "(I)I", guildGetCountSponsoredOnly), JF("guildGetCountMembersAndSponsored", "(I)I", guildGetCountMembersAndSponsored), JF("guildGetCountMembersGuildWarPvPEnabled", "(I)I", guildGetCountMembersGuildWarPvPEnabled), JF("_guildGetMemberName", "(IJ)Ljava/lang/String;", guildGetMemberName), JF("_guildGetMemberProfession", "(IJ)Ljava/lang/String;", guildGetMemberProfession), JF("_guildGetMemberLevel", "(IJ)I", guildGetMemberLevel), JF("_guildGetMemberPermissions", "(IJ)I", guildGetMemberPermissions), JF("_guildGetMemberTitle", "(IJ)Ljava/lang/String;", guildGetMemberTitle), JF("_guildGetMemberAllegiance", "(IJ)J", guildGetMemberAllegiance), JF("guildGetEnemies", "(I)[I", guildGetEnemies), JF("getGuildsAtWarWith", "(I)[I", getGuildsAtWarWith), JF("getMasterGuildWarTableDictionary", "()Lscript/dictionary;", getMasterGuildWarTableDictionary), JF("getInactiveGuildWarTableDictionary", "()Lscript/dictionary;", getInactiveGuildWarTableDictionary), JF("_guildRemoveMember", "(IJ)V", guildRemoveMember), JF("_guildAddCreatorMember", "(IJ)V", guildAddCreatorMember), JF("_guildAddSponsorMember", "(IJ)V", guildAddSponsorMember), JF("_guildSetMemberPermission", "(IJI)V", guildSetMemberPermission), JF("_guildSetMemberTitle", "(IJLjava/lang/String;)V", guildSetMemberTitle), JF("_guildSetMemberAllegiance", "(IJJ)V", guildSetMemberAllegiance), JF("_guildSetMemberPermissionAndAllegiance", "(IJIJ)V", guildSetMemberPermissionAndAllegiance), JF("guildGetAllRanks", "()[Ljava/lang/String;", guildGetAllRanks), JF("guildGetTitleForRank", "(Ljava/lang/String;)[Ljava/lang/String;", guildGetTitleForRank), JF("_guildGetMemberRank", "(IJ)[Ljava/lang/String;", guildGetMemberRank), JF("_guildHasMemberRank", "(IJLjava/lang/String;)Z", guildHasMemberRank), JF("_guildAddMemberRank", "(IJLjava/lang/String;)V", guildAddMemberRank), JF("_guildRemoveMemberRank", "(IJLjava/lang/String;)V", guildRemoveMemberRank), JF("_guildSetLeader", "(IJ)V", guildSetLeader), JF("guildSetElectionEndTime", "(III)V", guildSetElectionEndTime), JF("guildSetFaction", "(II)V", guildSetFaction), JF("guildSetGcwDefenderRegion", "(ILjava/lang/String;)V", guildSetGcwDefenderRegion), JF("guildRemoveEnemy", "(II)V", guildRemoveEnemy), JF("guildSetEnemy", "(II)V", guildSetEnemy), JF("_guildUpdateGuildWarKillTracking", "(JJ)V", guildUpdateGuildWarKillTracking), JF("guildGetGuildWarKillCount", "(II)I", guildGetGuildWarKillCount), JF("guildGetGuildWarKillCountUpdateTime", "(II)I", guildGetGuildWarKillCountUpdateTime), JF("guildSetName", "(ILjava/lang/String;)V", guildSetName), JF("guildSetAbbrev", "(ILjava/lang/String;)V", guildSetAbbrev), }; return JavaLibrary::registerNatives(NATIVES, sizeof(NATIVES)/sizeof(NATIVES[0])); } // ====================================================================== jint JNICALL ScriptMethodsGuildNamespace::getGuildId(JNIEnv *env, jobject self, jlong target) { CreatureObject *targetObj = 0; if (!JavaLibrary::getObject(target, targetObj)) { DEBUG_WARNING(true, ("JavaLibrary::getGuildId: called with invalid target")); return 0; } return targetObj->getGuildId(); } // ---------------------------------------------------------------------- jintArray JNICALL ScriptMethodsGuildNamespace::getAllGuildIds(JNIEnv *env, jobject self) { std::vector guildIds; GuildInterface::getAllGuildIds(guildIds); LocalIntArrayRefPtr ret = createNewIntArray(guildIds.size()); if (!guildIds.empty()) setIntArrayRegion(*ret, 0, guildIds.size(), reinterpret_cast(&guildIds[0])); return ret->getReturnValue(); } // ---------------------------------------------------------------------- jlong JNICALL ScriptMethodsGuildNamespace::getMasterGuildObject(JNIEnv *env, jobject self) { GuildObject *masterGuildObject = ServerUniverse::getInstance().getMasterGuildObject(); return masterGuildObject ? (masterGuildObject->getNetworkId()).getValue() : (NetworkId::cms_invalid).getValue(); } // ---------------------------------------------------------------------- jintArray JNICALL ScriptMethodsGuildNamespace::getGuildsAtWarWith(JNIEnv *env, jobject self, jint guildId) { std::vector const &enemies = GuildInterface::getGuildsAtWarWith(guildId); LocalIntArrayRefPtr ret = createNewIntArray(enemies.size()); if (!enemies.empty()) setIntArrayRegion(*ret, 0, enemies.size(), const_cast(reinterpret_cast(&enemies[0]))); return ret->getReturnValue(); } // ---------------------------------------------------------------------- jobject JNICALL ScriptMethodsGuildNamespace::getMasterGuildWarTableDictionary(JNIEnv * env, jobject self) { ScriptParams const * scriptParams = GuildInterface::getMasterGuildWarTableDictionary(); if (!scriptParams) return 0; JavaDictionaryPtr dictionary; JavaLibrary::instance()->convert(*scriptParams, dictionary); return dictionary->getReturnValue(); } // ---------------------------------------------------------------------- jobject JNICALL ScriptMethodsGuildNamespace::getInactiveGuildWarTableDictionary(JNIEnv * env, jobject self) { ScriptParams const * scriptParams = GuildInterface::getInactiveGuildWarTableDictionary(); if (!scriptParams) return 0; JavaDictionaryPtr dictionary; JavaLibrary::instance()->convert(*scriptParams, dictionary); return dictionary->getReturnValue(); } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::findGuild(JNIEnv *env, jobject self, jstring name) { JavaStringParam localNameStr(name); std::string nameStr; if (!JavaLibrary::convert(localNameStr, nameStr)) { DEBUG_WARNING(true, ("JavaLibrary::findGuild: invalid name")); return 0; } return GuildInterface::findGuild(nameStr); } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::createGuild(JNIEnv *env, jobject self, jstring name, jstring abbrev) { JavaStringParam localNameStr(name); std::string nameStr; if (!JavaLibrary::convert(localNameStr, nameStr)) { DEBUG_WARNING(true, ("JavaLibrary::createGuild: invalid name")); return 0; } JavaStringParam localAbbrevStr(abbrev); std::string abbrevStr; if (!JavaLibrary::convert(localAbbrevStr, abbrevStr)) { DEBUG_WARNING(true, ("JavaLibrary::createGuild: invalid abbrev")); return 0; } return GuildInterface::createGuild(nameStr, abbrevStr); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::disbandGuild(JNIEnv *env, jobject self, jint guildId) { GuildInterface::disbandGuild(guildId); } // ---------------------------------------------------------------------- jboolean JNICALL ScriptMethodsGuildNamespace::guildExists(JNIEnv *env, jobject self, jint guildId) { return GuildInterface::guildExists(guildId); } // ---------------------------------------------------------------------- jstring JNICALL ScriptMethodsGuildNamespace::guildGetName(JNIEnv *env, jobject self, jint guildId) { JavaString str(GuildInterface::getGuildName(guildId).c_str()); return str.getReturnValue(); } // ---------------------------------------------------------------------- jstring JNICALL ScriptMethodsGuildNamespace::guildGetAbbrev(JNIEnv *env, jobject self, jint guildId) { JavaString str(GuildInterface::getGuildAbbrev(guildId).c_str()); return str.getReturnValue(); } // ---------------------------------------------------------------------- jlong JNICALL ScriptMethodsGuildNamespace::guildGetLeader(JNIEnv *env, jobject self, jint guildId) { return (GuildInterface::getGuildLeaderId(guildId)).getValue(); } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::guildGetElectionPreviousEndTime(JNIEnv *env, jobject self, jint guildId) { return GuildInterface::getGuildElectionPreviousEndTime(guildId); } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::guildGetElectionNextEndTime(JNIEnv *env, jobject self, jint guildId) { return GuildInterface::getGuildElectionNextEndTime(guildId); } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::guildGetCurrentFaction(JNIEnv *env, jobject self, jint guildId) { return static_cast(GuildInterface::getGuildCurrentFaction(guildId)); } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::guildGetPreviousFaction(JNIEnv *env, jobject self, jint guildId) { return static_cast(GuildInterface::getGuildPreviousFaction(guildId)); } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::guildGetTimeLeftPreviousFaction(JNIEnv *env, jobject self, jint guildId) { return GuildInterface::getTimeLeftGuildPreviousFaction(guildId); } // ---------------------------------------------------------------------- jstring JNICALL ScriptMethodsGuildNamespace::guildGetCurrentGcwDefenderRegion(JNIEnv *env, jobject self, jint guildId) { JavaString str(GuildInterface::getGuildCurrentGcwDefenderRegion(guildId).c_str()); return str.getReturnValue(); } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::guildGetTimeJoinedCurrentGcwDefenderRegion(JNIEnv *env, jobject self, jint guildId) { return GuildInterface::getTimeJoinedGuildCurrentGcwDefenderRegion(guildId); } // ---------------------------------------------------------------------- jstring JNICALL ScriptMethodsGuildNamespace::guildGetPreviousGcwDefenderRegion(JNIEnv *env, jobject self, jint guildId) { JavaString str(GuildInterface::getGuildPreviousGcwDefenderRegion(guildId).c_str()); return str.getReturnValue(); } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::guildGetTimeLeftPreviousGcwDefenderRegion(JNIEnv *env, jobject self, jint guildId) { return GuildInterface::getTimeLeftGuildPreviousGcwDefenderRegion(guildId); } // ---------------------------------------------------------------------- jlongArray JNICALL ScriptMethodsGuildNamespace::guildGetMemberIds(JNIEnv *env, jobject self, jint guildId) { std::vector results; GuildInterface::getGuildMemberIds(guildId, results); LocalLongArrayRefPtr rv; if (ScriptConversion::convert(results, rv)) return rv->getReturnValue(); return 0; } // ---------------------------------------------------------------------- jlongArray JNICALL ScriptMethodsGuildNamespace::guildGetMemberIdsWithPermissions(JNIEnv *env, jobject self, jint guildId, jint permissions) { std::vector results; GuildInterface::getGuildMemberIdsWithPermissions(guildId, permissions, results); if (results.empty()) return 0; LocalLongArrayRefPtr rv; if (ScriptConversion::convert(results, rv)) return rv->getReturnValue(); return 0; } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::guildGetCountMembersOnly(JNIEnv *env, jobject self, jint guildId) { return GuildInterface::getGuildCountMembersOnly(guildId); } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::guildGetCountSponsoredOnly(JNIEnv *env, jobject self, jint guildId) { return GuildInterface::getGuildCountSponsoredOnly(guildId); } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::guildGetCountMembersAndSponsored(JNIEnv *env, jobject self, jint guildId) { return GuildInterface::getGuildCountMembersAndSponsored(guildId); } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::guildGetCountMembersGuildWarPvPEnabled(JNIEnv *env, jobject self, jint guildId) { return GuildInterface::getGuildCountMembersGuildWarPvPEnabled(guildId); } // ---------------------------------------------------------------------- jstring JNICALL ScriptMethodsGuildNamespace::guildGetMemberName(JNIEnv *env, jobject self, jint guildId, jlong member) { NetworkId memberId(member); GuildMemberInfo const *memberInfo = GuildInterface::getGuildMemberInfo(guildId, memberId); if (memberInfo) { JavaString str(memberInfo->m_name.c_str()); return str.getReturnValue(); } DEBUG_WARNING(true, ("JavaLibrary::guildGetMemberName called with invalid info (guildId=%d memberId=%s)", guildId, memberId.getValueString().c_str())); return 0; } // ---------------------------------------------------------------------- jstring JNICALL ScriptMethodsGuildNamespace::guildGetMemberProfession(JNIEnv *env, jobject self, jint guildId, jlong member) { NetworkId memberId(member); GuildMemberInfo const *memberInfo = GuildInterface::getGuildMemberInfo(guildId, memberId); if (memberInfo) { JavaString str(memberInfo->m_professionSkillTemplate.c_str()); return str.getReturnValue(); } DEBUG_WARNING(true, ("JavaLibrary::guildGetMemberProfession called with invalid info (guildId=%d memberId=%s)", guildId, memberId.getValueString().c_str())); return 0; } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::guildGetMemberLevel(JNIEnv *env, jobject self, jint guildId, jlong member) { NetworkId memberId(member); GuildMemberInfo const *memberInfo = GuildInterface::getGuildMemberInfo(guildId, memberId); if (memberInfo) return memberInfo->m_level; DEBUG_WARNING(true, ("JavaLibrary::guildGetMemberLevel called with invalid info (guildId=%d memberId=%s)", guildId, memberId.getValueString().c_str())); return 0; } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::guildGetMemberPermissions(JNIEnv *env, jobject self, jint guildId, jlong member) { NetworkId memberId(member); GuildMemberInfo const *memberInfo = GuildInterface::getGuildMemberInfo(guildId, memberId); if (memberInfo) return memberInfo->m_permissions; DEBUG_WARNING(true, ("JavaLibrary::guildGetMemberPermissions called with invalid info (guildId=%d memberId=%s)", guildId, memberId.getValueString().c_str())); return 0; } // ---------------------------------------------------------------------- jstring JNICALL ScriptMethodsGuildNamespace::guildGetMemberTitle(JNIEnv *env, jobject self, jint guildId, jlong member) { NetworkId memberId(member); GuildMemberInfo const *memberInfo = GuildInterface::getGuildMemberInfo(guildId, memberId); if (memberInfo) { JavaString str(memberInfo->m_title.c_str()); return str.getReturnValue(); } DEBUG_WARNING(true, ("JavaLibrary::guildGetMemberTitle called with invalid info (guildId=%d memberId=%s)", guildId, memberId.getValueString().c_str())); return 0; } // ---------------------------------------------------------------------- jlong JNICALL ScriptMethodsGuildNamespace::guildGetMemberAllegiance(JNIEnv *env, jobject self, jint guildId, jlong member) { NetworkId memberId(member); GuildMemberInfo const *memberInfo = GuildInterface::getGuildMemberInfo(guildId, memberId); if (memberInfo) return (memberInfo->m_allegiance).getValue(); DEBUG_WARNING(true, ("JavaLibrary::guildGetMemberAllegiance called with invalid info (guildId=%d memberId=%s)", guildId, memberId.getValueString().c_str())); return 0; } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildRemoveMember(JNIEnv *env, jobject self, jint guildId, jlong member) { NetworkId memberId(member); GuildInterface::removeGuildMember(guildId, memberId); } // ---------------------------------------------------------------------- jintArray JNICALL ScriptMethodsGuildNamespace::guildGetEnemies(JNIEnv *env, jobject self, jint guildId) { std::vector const &enemies = GuildInterface::getGuildEnemies(guildId); LocalIntArrayRefPtr ret = createNewIntArray(enemies.size()); if (!enemies.empty()) setIntArrayRegion(*ret, 0, enemies.size(), const_cast(reinterpret_cast(&enemies[0]))); return ret->getReturnValue(); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildSetLeader(JNIEnv *env, jobject self, jint guildId, jlong leader) { NetworkId leaderId(leader); GuildInterface::setGuildLeader(guildId, leaderId); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildSetElectionEndTime(JNIEnv *env, jobject self, jint guildId, jint electionPreviousEndTime, jint electionNextEndTime) { GuildInterface::setGuildElectionEndTime(guildId, electionPreviousEndTime, electionNextEndTime); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildSetFaction(JNIEnv *env, jobject self, jint guildId, jint factionId) { GuildInterface::setGuildFaction(guildId, static_cast(factionId)); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildSetGcwDefenderRegion(JNIEnv *env, jobject self, jint guildId, jstring gcwDefenderRegion) { JavaStringParam localGcwDefenderRegionStr(gcwDefenderRegion); std::string gcwDefenderRegionStr; if (JavaLibrary::convert(localGcwDefenderRegionStr, gcwDefenderRegionStr)) { if (!gcwDefenderRegionStr.empty()) { Pvp::GcwScoreCategory const * const gcwCategory = Pvp::getGcwScoreCategory(gcwDefenderRegionStr); if (!gcwCategory) { DEBUG_WARNING(true, ("JavaLibrary::guildSetGcwDefenderRegion: invalid GCW score category (%s)", gcwDefenderRegionStr.c_str())); return; } if (!gcwCategory->gcwRegionDefender) { DEBUG_WARNING(true, ("JavaLibrary::guildSetGcwDefenderRegion: GCW score category (%s) is not flagged as GcwRegionDefender", gcwDefenderRegionStr.c_str())); return; } } } else { gcwDefenderRegionStr.clear(); } GuildInterface::setGuildGcwDefenderRegion(guildId, gcwDefenderRegionStr); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildAddCreatorMember(JNIEnv *env, jobject self, jint guildId, jlong member) { NetworkId memberId(member); GuildInterface::addGuildCreatorMember(guildId, memberId); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildAddSponsorMember(JNIEnv *env, jobject self, jint guildId, jlong member) { NetworkId memberId(member); GuildInterface::addGuildSponsorMember(guildId, memberId); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildSetMemberPermission(JNIEnv *env, jobject self, jint guildId, jlong member, jint permissions) { NetworkId memberId(member); GuildInterface::setGuildMemberPermission(guildId, memberId, permissions); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildSetMemberTitle(JNIEnv *env, jobject self, jint guildId, jlong member, jstring title) { NetworkId memberId(member); JavaStringParam localTitleStr(title); std::string titleStr; if (!JavaLibrary::convert(localTitleStr, titleStr)) { DEBUG_WARNING(true, ("JavaLibrary::guildSetMemberTitle: invalid title")); return; } GuildInterface::setGuildMemberTitle(guildId, memberId, titleStr); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildSetMemberAllegiance(JNIEnv *env, jobject self, jint guildId, jlong member, jlong allegiance) { NetworkId memberId(member); NetworkId allegianceId(allegiance); GuildInterface::setGuildMemberAllegiance(guildId, memberId, allegianceId); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildSetMemberPermissionAndAllegiance(JNIEnv *env, jobject self, jint guildId, jlong member, jint permissions, jlong allegiance) { NetworkId memberId(member); NetworkId allegianceId(allegiance); GuildInterface::setGuildMemberPermissionAndAllegiance(guildId, memberId, permissions, allegianceId); } // ---------------------------------------------------------------------- jobjectArray JNICALL ScriptMethodsGuildNamespace::guildGetAllRanks(JNIEnv *env, jobject self) { std::vector const & ranks = GuildRankDataTable::getAllRanks(); if (ranks.empty()) return 0; int i = 0; LocalObjectArrayRefPtr valueArray = createNewObjectArray(ranks.size(), JavaLibrary::getClsString()); for (std::vector::const_iterator iter = ranks.begin(); iter != ranks.end(); ++iter) { JavaString jval((*iter)->name); setObjectArrayElement(*valueArray, i++, jval); } return valueArray->getReturnValue(); } // ---------------------------------------------------------------------- jobjectArray JNICALL ScriptMethodsGuildNamespace::guildGetTitleForRank(JNIEnv *env, jobject self, jstring rank) { JavaStringParam localRankStr(rank); std::string rankStr; if (!JavaLibrary::convert(localRankStr, rankStr)) { DEBUG_WARNING(true, ("JavaLibrary::guildGetTitleForRank: invalid rank")); return 0; } GuildRankDataTable::GuildRank const * rankInfo = GuildRankDataTable::getRank(rankStr); if (!rankInfo || rankInfo->titles.empty()) return 0; int i = 0; LocalObjectArrayRefPtr valueArray = createNewObjectArray(rankInfo->titles.size(), JavaLibrary::getClsString()); for (std::vector::const_iterator iter = rankInfo->titles.begin(); iter != rankInfo->titles.end(); ++iter) { JavaString jval(*iter); setObjectArrayElement(*valueArray, i++, jval); } return valueArray->getReturnValue(); } // ---------------------------------------------------------------------- jobjectArray JNICALL ScriptMethodsGuildNamespace::guildGetMemberRank(JNIEnv *env, jobject self, jint guildId, jlong member) { std::vector ranks; GuildInterface::getGuildMemberRank(guildId, NetworkId(static_cast(member)), ranks); if (ranks.empty()) return 0; int i = 0; LocalObjectArrayRefPtr valueArray = createNewObjectArray(ranks.size(), JavaLibrary::getClsString()); for (std::vector::const_iterator iter = ranks.begin(); iter != ranks.end(); ++iter) { JavaString jval(*iter); setObjectArrayElement(*valueArray, i++, jval); } return valueArray->getReturnValue(); } // ---------------------------------------------------------------------- jboolean JNICALL ScriptMethodsGuildNamespace::guildHasMemberRank(JNIEnv *env, jobject self, jint guildId, jlong member, jstring rank) { NetworkId memberId(member); JavaStringParam localRankStr(rank); std::string rankStr; if (!JavaLibrary::convert(localRankStr, rankStr)) { DEBUG_WARNING(true, ("JavaLibrary::guildHasMemberRank: invalid rank")); return JNI_FALSE; } return GuildInterface::hasGuildMemberRank(guildId, memberId, rankStr); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildAddMemberRank(JNIEnv *env, jobject self, jint guildId, jlong member, jstring rank) { NetworkId memberId(member); JavaStringParam localRankStr(rank); std::string rankStr; if (!JavaLibrary::convert(localRankStr, rankStr)) { DEBUG_WARNING(true, ("JavaLibrary::guildAddMemberRank: invalid rank")); return; } GuildInterface::addGuildMemberRank(guildId, memberId, rankStr); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildRemoveMemberRank(JNIEnv *env, jobject self, jint guildId, jlong member, jstring rank) { NetworkId memberId(member); JavaStringParam localRankStr(rank); std::string rankStr; if (!JavaLibrary::convert(localRankStr, rankStr)) { DEBUG_WARNING(true, ("JavaLibrary::guildRemoveMemberRank: invalid rank")); return; } GuildInterface::removeGuildMemberRank(guildId, memberId, rankStr); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildRemoveEnemy(JNIEnv *env, jobject self, jint guildId, jint enemyId) { GuildInterface::removeGuildEnemy(guildId, enemyId); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildSetEnemy(JNIEnv *env, jobject self, jint guildId, jint enemyId) { GuildInterface::setGuildEnemy(guildId, enemyId); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildUpdateGuildWarKillTracking(JNIEnv *env, jobject self, jlong killer, jlong victim) { CreatureObject const *killerObj = 0; if (!JavaLibrary::getObject(killer, killerObj)) return; CreatureObject const *victimObj = 0; if (!JavaLibrary::getObject(victim, victimObj)) return; if (killerObj && victimObj) GuildInterface::updateGuildWarKillTracking(*killerObj, *victimObj); } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::guildGetGuildWarKillCount(JNIEnv *env, jobject self, jint guildIdA, jint guildIdB) { return GuildInterface::getGuildEnemyKillInfo(guildIdA, guildIdB).first; } // ---------------------------------------------------------------------- jint JNICALL ScriptMethodsGuildNamespace::guildGetGuildWarKillCountUpdateTime(JNIEnv *env, jobject self, jint guildIdA, jint guildIdB) { return GuildInterface::getGuildEnemyKillInfo(guildIdA, guildIdB).second; } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildSetName(JNIEnv *env, jobject self, jint guildId, jstring name) { JavaStringParam localNewNameStr(name); std::string newNameStr; if (!JavaLibrary::convert(localNewNameStr, newNameStr)) { DEBUG_WARNING(true, ("JavaLibrary::guildSetName: invalid name")); return; } GuildInterface::setGuildName(guildId, newNameStr); } // ---------------------------------------------------------------------- void JNICALL ScriptMethodsGuildNamespace::guildSetAbbrev(JNIEnv *env, jobject self, jint guildId, jstring abbrev) { JavaStringParam localNewAbbrevStr(abbrev); std::string newAbbrevStr; if (!JavaLibrary::convert(localNewAbbrevStr, newAbbrevStr)) { DEBUG_WARNING(true, ("JavaLibrary::guildSetAbbrev: invalid abbrev")); return; } GuildInterface::setGuildAbbrev(guildId, newAbbrevStr); } // ======================================================================