the one where you type !ri in chat and you see what your team is researching i am sure it is somewhere on these forums but i cant find it. Would some help point me in the right direction. Thank you
It is G4TC-only, based on the Empires Eventscripts extension which is free (google is your friend) -> code one yourself
Thing is i dont know how to code and im not sure how interested my scripters really are in our new Empires server. Ill try though D: to get it to work. Also thank you
Lol i found it on sourcemod this isnt just for g4tc it is on sourcemod page http://forums.alliedmods.net/showthread.php?p=797999
That is the Viper server one, coded by the more share-friendly viper people. They are completely unconnected (Viper had this before it was under the G4TC group)
Ah it is easily edited from sm_researchinfo to sm_ri just change the first cmd and then recompile. I thought the who concept belonged to viper so i was shocked to find it on sourcemod.
No, Nachos had their own version before the G4TC version was created.(I think at least, what counts here is that it isnt G4TC exclusive.) Nope, that's the version I made for nachos. So even more unconnected. Also, !ri was not included in that because as i said before, i think i made it before G4TC made theirs and also made the !ri command popular. Had i known it would be that much more popular than !researchinfo, i would have made it that instead.
Neither !ri or !researchinfo is exclusive to any server. There are plugins and other ways to add chat commands to any server. For instances, in G4TC you can type !kill to suicide and !ri for the short version, ELC also has this. Chat commands are not hard to make and are very easily done. I wasn't able to find it but there's a plugin along the lines of chat commands or chat triggers. It allows you to do anything you want basically.
This may clear things up a bit: Before VIPER joined g4tc and before I used sourcemod I was using Beetlesmod admin mod, which had addsaytrigger options. So what I did was I made theowningones !reasearchinfo into an addsaytrigger for !ri using Beetlesmod. So when we were typing !ri in VIPER it was actually triggering theowningones !researchinfo command from his plugin. I do not think g4tc had their script at this time, but I could be wrong. It would be nice if SM had an addsaytigger plugin and a small map vote plugin, meaning when the server had less than 15 people it would trigger a mapvote that contains only smaller maps *hint *hint ;-)
I have researched small map vote plugins and there are none in Sourcemod..same as addsaytriggers plugins for SM. If you know where I can find them please let me know, because I have not found any.
thank you I have seen that plugin but it appears to be abandoned by its dev and from what I have read the plugin gets several different type of errors, so I do not know if it will work on empires or not.
viper that is quite possible it is a plugin that on a certains amount of ppl only has certain maps avaliable. If you are interested i vaguely remember it from sourcemod. Ill look it up for you and see if anything useful pops up. this is the best i could find but i dont think it works the way you would want. http://forums.alliedmods.net/showthread.php?p=599464 wait i just realized kane already gave the link to the same plugin >< lol
Here, I suppose I can share things, too. Code: #include <sourcemod> #include <sdktools> #pragma semicolon 1 new Handle:ResearchNames; // Holds a trie of numbers -> names for the individual research items new BECurrentResearchI; // Holds the index (integer, 0 to 50) of what BE is currently researching new BEResearchTimeleftI; // Holds the number of seconds until BE's research completes new NFCurrentResearchI; // Holds the index (integer, 0 to 50) of what NF is currently researching new NFResearchTimeleftI; // Holds the number of seconds until NF's research completes public Plugin:myinfo = { name = "JPL Research Info", author = "Phroggie", description = "JPLs researchinfo plugin", version = "1.0.0.4", url = "http://www.empiresjpl.com/" } GetCurrentResearch() { new maxents = GetMaxEntities(); decl String:classname[64]; new ent = 0; for(new i = 0; i <= maxents; i++){ if(IsValidEntity(i)){ GetEntityNetClass(i, classname, sizeof(classname)); if(StrEqual(classname, "CResearchResource")){ ent = i; break; } } } if(IsValidEntity(ent)) { new item = FindSendPropOffs("CResearchResource", "m_iResearchItem_IMP"); BECurrentResearchI = GetEntData(ent, item, 4); item = FindSendPropOffs("CResearchResource", "m_iResearchItem_NF"); NFCurrentResearchI = GetEntData(ent, item, 4); } } GetResearchTime() { new maxents = GetMaxEntities(); new ent = 0; decl String:classname[64]; for (new i=0; i <= maxents; i++) { if(IsValidEntity(i)) { GetEntityNetClass(i, classname, sizeof(classname)); if (StrEqual(classname, "CResearchResource")) { ent = i; break; } } } if(IsValidEntity(ent)) { new item = FindSendPropOffs("CResearchResource", "m_iResearchTime_NF"); NFResearchTimeleftI = GetEntData(ent, item, 4); item = FindSendPropOffs("CResearchResource", "m_iResearchTime_IMP"); BEResearchTimeleftI = GetEntData(ent, item, 4); } } public OnPluginStart() { BECurrentResearchI = 0; BEResearchTimeleftI = 0; NFCurrentResearchI = 0; NFResearchTimeleftI = 0; ResearchNames = CreateTrie(); SetTrieString(ResearchNames, "0", "None", true); SetTrieString(ResearchNames, "1", "Physics", true); SetTrieString(ResearchNames, "2", "Superheated Material Physics", true); SetTrieString(ResearchNames, "3", "Plasma Cannon Projectile", true); SetTrieString(ResearchNames, "4", "Plasma Bullet Projectile", true); SetTrieString(ResearchNames, "5", "Projectile Physics", true); SetTrieString(ResearchNames, "6", "Reflective Armor", true); SetTrieString(ResearchNames, "7", "Extended Range Cannon", true); SetTrieString(ResearchNames, "8", "Heavy Caliber Machine Gun", true); SetTrieString(ResearchNames, "9", "Nuclear Fission", true); SetTrieString(ResearchNames, "10", "Fission Reactor", true); SetTrieString(ResearchNames, "11", "HIT Warhead", true); SetTrieString(ResearchNames, "12", "Chemistry", true); SetTrieString(ResearchNames, "13", "Improved Flagration Compounds", true); SetTrieString(ResearchNames, "14", "Explosive Tipped Bullets", true); SetTrieString(ResearchNames, "15", "Improved Detonation Compounds", true); SetTrieString(ResearchNames, "16", "Upgraded Grenades", true); SetTrieString(ResearchNames, "17", "Explosive Shells", true); SetTrieString(ResearchNames, "18", "Improved Warhead Compounds", true); SetTrieString(ResearchNames, "19", "Upgraded Missile Warhead", true); SetTrieString(ResearchNames, "20", "Upgraded Grenadier RPG", true); SetTrieString(ResearchNames, "21", "Advanced Grenadier RPG", true); SetTrieString(ResearchNames, "22", "Improved Heat Transfer Fluids", true); SetTrieString(ResearchNames, "23", "Advanced Coolant Engine", true); SetTrieString(ResearchNames, "24", "Absorbant Armor", true); SetTrieString(ResearchNames, "25", "Mechenical Engineering", true); SetTrieString(ResearchNames, "26", "Advanced Personnel Deployment", true); SetTrieString(ResearchNames, "27", "Upgraded Chassis", true); SetTrieString(ResearchNames, "28", "Medium Tank Chassis", true); SetTrieString(ResearchNames, "29", "Artillery Tank Chassis", true); SetTrieString(ResearchNames, "30", "Advanced Chassis", true); SetTrieString(ResearchNames, "31", "Heavy Tank Chassis", true); SetTrieString(ResearchNames, "32", "Advanced Machining", true); SetTrieString(ResearchNames, "33", "Composite Armor", true); SetTrieString(ResearchNames, "34", "Gas Turbine Engine", true); SetTrieString(ResearchNames, "35", "Electrical Engineering", true); SetTrieString(ResearchNames, "36", "Advanced Magnet Research", true); SetTrieString(ResearchNames, "37", "Rail Gun", true); SetTrieString(ResearchNames, "38", "3 Phase Electric Motor", true); SetTrieString(ResearchNames, "39", "Reactive Armor", true); SetTrieString(ResearchNames, "40", "Tracking Systems", true); SetTrieString(ResearchNames, "41", "Homing Missiles", true); SetTrieString(ResearchNames, "42", "Guided Missiles", true); SetTrieString(ResearchNames, "43", "Upgraded Turrets Lvl 2", true); SetTrieString(ResearchNames, "44", "Upgraded Turrets Lvl 3", true); SetTrieString(ResearchNames, "45", "Biology", true); SetTrieString(ResearchNames, "46", "Regenerative Armor", true); SetTrieString(ResearchNames, "47", "Bio Diesel Engine", true); SetTrieString(ResearchNames, "48", "Biological Weaponry", true); SetTrieString(ResearchNames, "49", "Biological Warhead", true); SetTrieString(ResearchNames, "50", "Biological Projectile", true); /* 50 is currently (2.24d) the highest research node. if anyone sees a 51, let phroggie know to update this. */ SetTrieString(ResearchNames, "51", "Phroggie is a pimp: 51", true); SetTrieString(ResearchNames, "52", "Phroggie is a pimp: 52", true); SetTrieString(ResearchNames, "53", "Phroggie is a pimp: 53", true); RegConsoleCmd("sm_researchinfo", Info, "Get info on your teams research"); RegConsoleCmd("sm_ri", Info, "Get info on your teams research. Alias of sm_researchinfo."); } public Action:Info(client,args) { decl String:nfResearchK[64]; // Trie key for NF Research. Is string of NFCurrentResearchI decl String:nfResearchV[64]; // Trie string. Is plaintext of current research decl String:nfResearchS[128]; // Output formatted string of NF's research. decl String:beResearchK[64]; decl String:beResearchV[64]; decl String:beResearchS[128]; if (client < 0) { return Plugin_Handled; } GetCurrentResearch(); GetResearchTime(); // TODO: Will this explode if NFCurrentResearchI or BECurrentResearchI is an insane number? /* pull NF's research info and parse it out */ IntToString(NFCurrentResearchI, nfResearchK, sizeof(nfResearchK)); GetTrieString(ResearchNames, nfResearchK, nfResearchV, sizeof(nfResearchV)); if (NFCurrentResearchI > 0) { Format(nfResearchS, sizeof(nfResearchS), "Current Research: %s, %i seconds.", nfResearchV, NFResearchTimeleftI); } else { Format(nfResearchS, sizeof(nfResearchS), "Current Research: NONE."); } /* pull BE's research info and parse it out */ IntToString(BECurrentResearchI, beResearchK, sizeof(beResearchK)); GetTrieString(ResearchNames, beResearchK, beResearchV, sizeof(beResearchV)); if (BECurrentResearchI > 0) { Format(beResearchS, sizeof(beResearchS), "Current Research: %s, %i seconds.", beResearchV, BEResearchTimeleftI); } else { Format(beResearchS, sizeof(beResearchS), "Current Research: NONE."); } if (client == 0) { // server console PrintToConsole(client, "jpl_researchinfo: NF %s", nfResearchS); PrintToConsole(client, "jpl_researchinfo, BE %s", beResearchS); } else { new Team = GetClientTeam(client); if (Team == 2) { // Northern Faction PrintToConsole(client, "jpl_researchinfo: %s", nfResearchS); PrintToChat(client, "%s", nfResearchS); } else if (Team == 3) { // Brenodi Empire PrintToConsole(client, "jpl_researchinfo: %s", beResearchS); PrintToChat(client, "%s", beResearchS); } else { // Spectator or something horribly wrong PrintToConsole(client, "jpl_researchinfo: Join a team to see current research."); PrintToChat(client, "Join a team to see current research."); } } return Plugin_Handled; }
Hi i just looked at all this and its way over my head. Can anyone help me out here. I just want to be able to type !ri or !researchinfo in chat and there you have it i dont understand compling and everything else has somebody got the files that i could just put in the correct folder please? kind regards Craig.
The !researchinfo plugin is at the sourcemod.net website, as for !ri (sam plugin differet trigger) you'll need a trigger plugin and setup your own trigger system. As for that, good luck.