• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Programmer me->send<C++, lua>(works) && me->receive(your["IRL_gp"]);

ScorpionOT

uber n00b
Joined
Mar 28, 2015
Messages
417
Solutions
6
Reaction score
137
Hey! Howdy Do! Greetings! Hola! Bem vindo! Saudades! Bonjour! Konnichiwa! Hallo!​

ZUu9mkK.png

If you're looking for a person who can programatically generate things such as these:
  • Generic Fly System: generates cylinders where there are grounds placed and therein no tiles, allowing GM's or special creatures to glide through places where movement would normally not be allowed.
  • Shared Exp System: allows players to shared experience in battle from slain creatures, depending on level difference and other requirements/handicaps.
  • Unique spells and talkactions: perhaps what your server is missing is customizations to your spells, adding power, balance and harmony to how the combat mechanisms currently work. If that isn't the answer, maybe a few talkactions to liven up your server and create new dynamics are the answer.
  • Quests tuneups and fixes: ughh.. That single quest you've been struggling with or have been unable to work around. Do you know how it should already be working? Then, we have everything we need in order to provide a complete solution so that your players can have LOTS of fun!
  • Hildy! And a bunch more!
Let's get down to business, partner!
Working Rates: 15 USD/Hour (rates may vary)
tenor.gif


Disclaimer: Rates may vary. You should not act or rely on any of the information contained herein without considering first to seek professional help, that is, if your expectations are unrealistic and you are planning to set unfair demands or act inconsiderately, such as by terminating a contract suddenly, being unwilling to cooperate upon facing any kind of unexpected behaviour, which can, and will be solved, given that you are patient, willing, and able to allow your demands to be met and attend to the perseverance of your server's custom implementations. Remember there is always a solution to any of life's issues and given time, and a proper premeditation, anything is possible. Wishful thanks are regarded to those who read thus far. Any custom systems of more complexity are open to discussion.
 
Last edited:
For what client? I forgot to mention I prefer to work with 7.4-7.72 only, even though I'm willing to consider 9.86 or less, but probably will reject all newer (i.e 10.9x, 11.x) works.
 
Well, I got a couple NPCs/Spells/Actions/etc I could showcase once I get home from work, even though it'd probably be better if you just request something first and I may post it as a sample here. Thanks for asking, primo.
 
Phenominas helped me with super weird idea to shot distance attacks with ammunition from player backpack. His code worked like a charm. I wasted entire day in it because I suck, @Summ tryed to help but messed with my mind, @Vulcan_ promised to help but disappeared, probably having something better to do than help a retard like me, but ok he has some credit, solved my lame issues before. It's for TFS 1.x, in player.cpp replace Item* Player::getWeapon(slots_t slot, bool ignoreAmmo) const function with this one:

Code:
Item* Player::getWeapon(slots_t slot, bool ignoreAmmo) const
{
  Item* item = inventory[slot];
  if (!item) {
   return nullptr;
  }

  WeaponType_t weaponType = item->getWeaponType();
  if (weaponType == WEAPON_NONE || weaponType == WEAPON_SHIELD || weaponType == WEAPON_AMMO) {
   return nullptr;
  }

  if (!ignoreAmmo && weaponType == WEAPON_DISTANCE) {
    // using ammo weapon && ammo?
    const ItemType& it = Item::items[item->getID()];
    if(it.ammoType != AMMO_NONE) {
      // weapon uses up ammo?
      item = nullptr;
      Item* ammo_item = inventory[CONST_SLOT_AMMO];
      if (ammo_item && ammo_item ->getAmmoType() == it.ammoType && ammo_item->getWeaponType() == WEAPON_AMMO) {
            return ammo_item;
      }

      Item* itemContainer = this->getInventoryItem(CONST_SLOT_BACKPACK);
      if (!itemContainer) { // slot backpack empty
        return nullptr;
      }

      Container* container = itemContainer->getContainer();
      if (!container) { // bp not found
        return nullptr;
      }

      // iterate bp slots
      for (Item* ammoItem : container->getItemList()) {
          if (ammoItem && ammoItem->getAmmoType() == it.ammoType && ammoItem->getWeaponType() == WEAPON_AMMO) { // ammo found
            return ammoItem;
          }
      }
    }
  }
  return item;
}
 
Last edited:
Back
Top